diff options
author | Seth Vidal <skvidal@fedoraproject.org> | 2007-10-08 14:59:56 -0400 |
---|---|---|
committer | Seth Vidal <skvidal@fedoraproject.org> | 2007-10-08 14:59:56 -0400 |
commit | e434679f7272b38b4a76a01064e43499dce33b41 (patch) | |
tree | 628289cf066e5cb4a6a1302709b9c64329974c18 | |
parent | 9033fe7cc3c6a59bd90c4742a47536699dee612d (diff) | |
parent | 8670fb9a39ec5de0b4f9c3f838d155bb8403d4b4 (diff) | |
download | func-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.spec | 5 | ||||
-rw-r--r-- | func/overlord/cmd_modules/__init__.py | 0 | ||||
-rw-r--r-- | func/overlord/cmd_modules/call.py | 58 | ||||
-rw-r--r-- | func/overlord/func_command.py | 44 |
4 files changed, 107 insertions, 0 deletions
@@ -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 |