From 1b4fbf4c013f9e08cef511f8b88b516d11fb275c Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Thu, 25 Oct 2007 17:55:57 -0400 Subject: 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. --- func/overlord/cmd_modules/ping.py | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 func/overlord/cmd_modules/ping.py (limited to 'func/overlord/cmd_modules/ping.py') 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 +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 + -- cgit