summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS8
-rw-r--r--func/minion/modules/mount.py84
2 files changed, 88 insertions, 4 deletions
diff --git a/AUTHORS b/AUTHORS
index cc86bb6..75d00a3 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,19 +1,19 @@
-func is written by (alphabetically) ...
+func is written and maintained by (alphabetically) ...
- James Bowes <jbowes@redhat.com>
Michael DeHaan <mdehaan@redhat.com>
Adrian Likins <alikins@redhat.com>
- Robin Norwood <rnorwood@redhat.com>
Seth Vidal <skvidal@redhat.com>
...
- (committers: please add yourself)
Additional patches and contributions by ...
James Anthill <james@mail.and.org>
+ James Bowes <jbowes@redhat.com>
Eli Criffield <elicriffield@gmail.com>
+ John Eckersberg <jeckersb@redhat.com>
Stephen Nelson-Smith <atalanta.systems@googlemail.com>
+ Robin Norwood <rnorwood@redhat.com>
Vito Laurenza <vitolaurenza@gmail.com>
...
[ send in patches (or modules!) to get your name here ]
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@redhat.com>
+##
+## 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