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/overlord/cmd_modules/ping.py | |
parent | f260d08b05f263c0bb92937e18996c4b3caba1c4 (diff) | |
download | func-1b4fbf4c013f9e08cef511f8b88b516d11fb275c.tar.gz func-1b4fbf4c013f9e08cef511f8b88b516d11fb275c.tar.xz 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/overlord/cmd_modules/ping.py')
-rw-r--r-- | func/overlord/cmd_modules/ping.py | 70 |
1 files changed, 70 insertions, 0 deletions
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 + |