patch - mount module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

First post for me!

You'll probably be hearing more from me as I'm starting to use func to
automate a lot of my daily tasks.  Only more code can come of that :)

- --
John Eckersberg
Production Operations
Red Hat, Inc.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFHZpvKO5VSO/Qqm+gRAjnYAKCHau1pP6VYB72tiVDloEhKMyJjSgCguJ7W
IaXC3dlNS2HV5fk3vOnaGzY=
=cDdw
-----END PGP SIGNATURE-----
diff --git a/func/minion/modules/mount.py b/func/minion/modules/mount.py
new file mode 100644
index 0000000..bbaf7c7
--- /dev/null
+++ b/func/minion/modules/mount.py
@@ -0,0 +1,84 @@
+#!/usr/bin/python
+
+##
+## Mount manager
+##
+## Copyright 2007, Red Hat, Inc
+## John Eckersberg <jeckersb@xxxxxxxxxx>
+##
+## This software may be freely redistributed under the terms of the GNU
+## general public license.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+
+import sub_process, os.path
+from modules import func_module
+
+
+class MountModule(func_module.FuncModule):
+    def __init__(self):
+        self.methods = {
+            "list": self.list,
+            "mount": self.mount,
+            "umount": self.umount
+        }
+        func_module.FuncModule.__init__(self)
+
+    def list(self):
+        cmd = sub_process.Popen(["/bin/cat", "/proc/mounts"], executable="/bin/cat", stdout=sub_process.PIPE, shell=False)
+        data = cmd.communicate()[0]
+        
+        mounts = []
+        lines = [l for l in data.split("\n") if l] #why must you append blank crap?
+
+        for line in lines:
+            curmount = {}
+            tokens = line.split()
+            curmount['device'] = tokens[0]
+            curmount['dir'] = tokens[1]
+            curmount['type'] = tokens[2]
+            curmount['options'] = tokens[3]
+            mounts.append(curmount)
+
+        return mounts
+
+    def mount(self, device, dir, type="auto", options=None, createdir=False):
+        cmdline = ["/bin/mount", "-t", type]
+        if options: 
+            cmdline.append("-o")
+            cmdline.append(options)
+        cmdline.append(device)
+        cmdline.append(dir)
+        cmd = sub_process.Popen(cmdline, executable="/bin/mount", stdout=sub_process.PIPE, shell=False)
+        if cmd.wait() == 0:
+            return True
+        else:
+            return False
+        
+    def umount(self, dir, killall=False, force=False, lazy=False):
+        # succeed if its not mounted
+        if not os.path.ismount(dir):
+            return True
+
+        if killall:
+            cmd = sub_process.Popen(["/sbin/fuser", "-mk", dir], executable="/sbin/fuser", stdout=sub_process.PIPE, shell=False)
+            cmd.wait()
+
+        cmdline = ["/bin/umount"]
+        if force:
+            cmdline.append("-f")
+        if lazy:
+            cmdline.append("-l")
+        cmdline.append(dir)
+
+        cmd = sub_process.Popen(cmdline, executable="/bin/umount", stdout=sub_process.PIPE, shell=False)
+        if cmd.wait() == 0:
+            return True
+        else:
+            return False
+
+methods = MountModule()
+register_rpc = methods.register_rpc

[Index of Archives]     [Fedora Users]     [Linux Networking]     [Fedora Legacy List]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux