pvl.backup.mount/lvm: implement optional sudo invoke
authorTero Marttila <terom@paivola.fi>
Sat, 16 Feb 2013 21:41:42 +0200
changeset 69 468704db09c4
parent 68 adc190def3b1
child 70 3b1290aeed12
pvl.backup.mount/lvm: implement optional sudo invoke
pvl/backup/lvm.py
pvl/backup/mount.py
--- a/pvl/backup/lvm.py	Sat Feb 16 21:40:44 2013 +0200
+++ b/pvl/backup/lvm.py	Sat Feb 16 21:41:42 2013 +0200
@@ -35,8 +35,14 @@
     # VG name
     name = None
 
-    def __init__ (self, name) :
+    def __init__ (self, name, sudo=None) :
+        """
+            name    - VG name
+            sudo    - invoke sudo
+        """
+
         self.name = name
+        self.sudo = sudo
 
     def lv_name (self, lv) :
         """
@@ -60,7 +66,7 @@
         log.debug("{cmd} {opts} {args}".format(cmd=cmd, args=args, opts=opts))
 
         # invoke
-        invoke(self.LVM, [cmd] + optargs(*args, **opts))
+        invoke(self.LVM, [cmd] + optargs(*args, **opts), sudo=self.sudo)
 
     def volume (self, name) :
         """
--- a/pvl/backup/mount.py	Sat Feb 16 21:40:44 2013 +0200
+++ b/pvl/backup/mount.py	Sat Feb 16 21:41:42 2013 +0200
@@ -2,7 +2,7 @@
     Mount filesystems.
 """
 
-from pvl.backup.invoke import command
+from pvl.backup.invoke import invoke, optargs, command
 
 import contextlib
 import os, os.path
@@ -24,16 +24,18 @@
     UMOUNT  = '/bin/umount'
 
 
-    def __init__ (self, dev, mnt, readonly=False) :
+    def __init__ (self, dev, mnt, readonly=False, sudo=None) :
         """
             dev         - device path
             mnt         - mount path
             readonly    - mount readonly
+            sudo        - invoke sudo
         """
 
         self.dev = dev
         self.mnt = mnt
         self.readonly = readonly
+        self.sudo = sudo
 
     @property
     def path (self) :
@@ -66,7 +68,7 @@
             raise MountError("Device does not exist: {dev}".format(dev=self.dev))
 
         # mount
-        command(self.MOUNT, self.dev, self.mnt, options=self.options())
+        invoke(self.MOUNT, optargs(self.dev, self.mnt, options=self.options()), sudo=self.sudo)
 
     def close (self) :
         """
@@ -78,7 +80,7 @@
             raise MountError("Mountpoint is not mounted: {mnt}".format(mnt=self.mnt))
 
         # umount
-        command(self.UMOUNT, self.mnt)
+        invoke(self.UMOUNT, optargs(self.mnt), sudo=self.sudo)
 
     def __repr__ (self) :
         return "Mount(dev={dev}, mnt={mnt})".format(