summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeth Vidal <skvidal@fedoraproject.org>2007-10-08 14:59:56 -0400
committerSeth Vidal <skvidal@fedoraproject.org>2007-10-08 14:59:56 -0400
commite434679f7272b38b4a76a01064e43499dce33b41 (patch)
tree628289cf066e5cb4a6a1302709b9c64329974c18
parent9033fe7cc3c6a59bd90c4742a47536699dee612d (diff)
parent8670fb9a39ec5de0b4f9c3f838d155bb8403d4b4 (diff)
downloadfunc-e434679f7272b38b4a76a01064e43499dce33b41.tar.gz
func-e434679f7272b38b4a76a01064e43499dce33b41.tar.xz
func-e434679f7272b38b4a76a01064e43499dce33b41.zip
Merge branch 'master' of ssh://git.fedoraproject.org/git/hosted/func
* 'master' of ssh://git.fedoraproject.org/git/hosted/func: add cmd_modules contents to spec create a func/overkiad/cmd_modules sub dir
-rw-r--r--func.spec5
-rw-r--r--func/overlord/cmd_modules/__init__.py0
-rw-r--r--func/overlord/cmd_modules/call.py58
-rw-r--r--func/overlord/func_command.py44
4 files changed, 107 insertions, 0 deletions
diff --git a/func.spec b/func.spec
index 5586963..61cb2e4 100644
--- a/func.spec
+++ b/func.spec
@@ -48,8 +48,10 @@ rm -fr $RPM_BUILD_ROOT
%dir %{python_sitelib}/func
%dir %{python_sitelib}/func/minion
%dir %{python_sitelib}/func/overlord
+%dir %{python_sitelib}/func/overlord/cmd_modules
%{python_sitelib}/func/minion/*.py*
%{python_sitelib}/func/overlord/*.py*
+%{python_sitelib}/func/overlord/cmd_modules/*.py*
%{python_sitelib}/func/*.py*
%dir %{python_sitelib}/func/minion/modules
%{python_sitelib}/func/minion/modules/*.py*
@@ -73,6 +75,9 @@ fi
%changelog
+* Mon Oct 8 2007 Adrian Likins <alikins@redhat.com> - 0.0.12-1
+- add cmd_modules
+
* Fri Sep 28 2007 Adrian Likins <alikins@redhat.com> - 0.0.12-1
- remove rhpl deps
diff --git a/func/overlord/cmd_modules/__init__.py b/func/overlord/cmd_modules/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/func/overlord/cmd_modules/__init__.py
diff --git a/func/overlord/cmd_modules/call.py b/func/overlord/cmd_modules/call.py
new file mode 100644
index 0000000..644930f
--- /dev/null
+++ b/func/overlord/cmd_modules/call.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+
+import optparse
+
+from func.overlord import command
+from func.overlord import client
+
+DEFAULT_PORT = 51234
+
+class Call(client.command.Command):
+ name = "call"
+ useage = "call nodule method name arg1 arg2..."
+ def addOptions(self):
+ self.parser.add_option("-v", "--verbose", dest="verbose",
+ action="store_true")
+ self.parser.add_option("-p", "--port", dest="port",
+ default=DEFAULT_PORT)
+
+ def handleOptions(self, options):
+ print "self.parentCommand", self.parentCommand
+
+ self.options = options
+
+ self.verbose = options.verbose
+ self.port = options.port
+ # I'm not really a fan of the "module methodname" approach
+ # but we'll keep it for now -akl
+
+ def parse(self, argv):
+ self.argv = argv
+
+ print "self.argv,", self.argv
+
+ # FIXME? not sure this is good or bad, but it seems
+ # wronky... we try to grab the hostnamegoo from the
+ # args to the parentCommand
+ self.server_spec = self.argv[0]
+
+ return command.Command.parse(self, argv)
+
+ def do(self, args):
+
+ # I'm not really a fan of the "module methodname" approach
+ # but we'll keep it for now -akl
+
+ print "ARGS", args
+ self.module = args[1]
+ self.method = args[2]
+ self.method_args = args[3:]
+
+ client_obj = client.Client(self.server_spec,port=self.port,interactive=True,
+ verbose=self.verbose, config=self.config)
+ results = client_obj.run(self.module, self.method, self.method_args)
+
+ # TO DO: add multiplexer support
+ # probably as a higher level module.
+
+ return client_obj.cli_return(results)
diff --git a/func/overlord/func_command.py b/func/overlord/func_command.py
new file mode 100644
index 0000000..dceec18
--- /dev/null
+++ b/func/overlord/func_command.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+
+import glob
+import sys
+
+
+import command
+from cmd_modules import call
+
+class FuncCommandLine(command.Command):
+ name = "client"
+ useage = "func is the commandline interface to a func minion"
+
+ subCommandClasses = [call.Call]
+
+ def __init__(self):
+
+ command.Command.__init__(self)
+
+ def do(self, args):
+ pass
+
+ def addOptions(self):
+ self.parser.add_option('', '--version', action="store_true",
+ help="show version information")
+ self.parser.add_option("--list-minions", dest="list_minions",
+ action="store_true", help="list all available minions")
+
+ def handleOptions(self, options):
+ if options.version:
+ #FIXME
+ print "version is NOT IMPLEMENTED YET"
+ if options.list_minions:
+ self.list_minions()
+
+ sys.exit(0) # stop execution
+
+ def list_minions(self):
+ print "Minions:"
+ gloob = "%s/%s.cert" % (self.config.certroot, "*")
+ certs = glob.glob(gloob)
+ for cert in certs:
+ host = cert.replace(self.config.certroot, "")[1:-5]
+ print " %s" % host