diff options
author | Michael DeHaan <mdehaan@redhat.com> | 2007-10-25 17:55:57 -0400 |
---|---|---|
committer | Michael DeHaan <mdehaan@redhat.com> | 2007-10-25 17:55:57 -0400 |
commit | 1b4fbf4c013f9e08cef511f8b88b516d11fb275c (patch) | |
tree | d0caab329728a72375328680ffd02b469a086733 /func | |
parent | f260d08b05f263c0bb92937e18996c4b3caba1c4 (diff) | |
download | third_party-func-1b4fbf4c013f9e08cef511f8b88b516d11fb275c.tar.gz third_party-func-1b4fbf4c013f9e08cef511f8b88b516d11fb275c.tar.xz third_party-func-1b4fbf4c013f9e08cef511f8b88b516d11fb275c.zip |
Added a ping function to the test module and a new command "func '*' ping" which can be used to see
what servers are contactable from the command line for any given operation, without needing to run
an otherwise meaningful command on them. Note that it does try to contact each server before showing
results, so ideally we should provide a method in the client class to get the system list and create
the client objects seperately for each contact, so output can stream back one line at a time. TBA.
Diffstat (limited to 'func')
-rwxr-xr-x | func/minion/modules/test.py | 6 | ||||
-rw-r--r-- | func/overlord/cmd_modules/ping.py | 70 | ||||
-rw-r--r-- | func/overlord/func_command.py | 3 |
3 files changed, 77 insertions, 2 deletions
diff --git a/func/minion/modules/test.py b/func/minion/modules/test.py index 55265a3..f900326 100755 --- a/func/minion/modules/test.py +++ b/func/minion/modules/test.py @@ -8,12 +8,16 @@ class Test(func_module.FuncModule): description = "Just a very simple example module" def __init__(self): self.methods = { - "add": self.add + "add": self.add, + "ping": self.ping } func_module.FuncModule.__init__(self) def add(self, numb1, numb2): return numb1 + numb2 + def ping(self): + return 1 + methods = Test() register_rpc = methods.register_rpc diff --git a/func/overlord/cmd_modules/ping.py b/func/overlord/cmd_modules/ping.py new file mode 100644 index 0000000..d5f57cc --- /dev/null +++ b/func/overlord/cmd_modules/ping.py @@ -0,0 +1,70 @@ +#!/usr/bin/python + +""" +copyfile command line + +Copyright 2007, Red Hat, Inc +Michael DeHaan <mdehaan@redhat.com> +also see AUTHORS + +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 optparse +import os +import pprint +import stat +import xmlrpclib + +from func.overlord import command +from func.overlord import client + +# FIXME: this really should not be in each sub module. +DEFAULT_PORT = 51234 + +class Ping(client.command.Command): + name = "ping" + useage = "see what func minions are up/accessible" + + + def addOptions(self): + """ + Not too many options for you! (Seriously, it's a simple command ... func "*" ping) + """ + # FIXME: verbose and port should be added globally to all sub modules + 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): + """ + Nothing to do here... + """ + pass + + + def do(self, args): + self.server_spec = self.parentCommand.server_spec + + client_obj = client.Client(self.server_spec, + port=self.options.port, + interactive=False, + verbose=self.options.verbose, + config=self.config) + + results = client_obj.run("test", "ping", []) + for (host,result) in results.iteritems(): + if result == 1: + print "[ ok ... ] %s" % host + else: + print "[ FAILED ] %s" % host + return 1 + diff --git a/func/overlord/func_command.py b/func/overlord/func_command.py index b33565c..1a13233 100644 --- a/func/overlord/func_command.py +++ b/func/overlord/func_command.py @@ -11,6 +11,7 @@ from cmd_modules import call from cmd_modules import show from cmd_modules import copyfile from cmd_modules import listminions +from cmd_modules import ping from func.overlord import client @@ -19,7 +20,7 @@ class FuncCommandLine(command.Command): useage = "func is the commandline interface to a func minion" subCommandClasses = [call.Call, show.Show, - copyfile.CopyFile, listminions.ListMinions] + copyfile.CopyFile, listminions.ListMinions, ping.Ping] def __init__(self): |