summaryrefslogtreecommitdiffstats
path: root/certmaster/overlord/cmd_modules/ping.py
blob: f756fd92e46726159fb05dbcb91284f48c3cfb12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
"""
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"
    usage = "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

        # because this is mainly an interactive command, expand the server list and make seperate connections.
        # to make things look more speedy.

        servers = client.expand_servers(self.server_spec, port=self.options.port, noglobs=None, 
                                        verbose=self.options.verbose, just_fqdns=True)

        for server in servers:

            client_obj = client.Client(server,port=self.options.port,interactive=False,
                                       verbose=self.options.verbose,config=self.config, noglobs=True)

            results = client_obj.run("test", "ping", [])
            if results == 1:
                print "[ ok ... ] %s" % server
            else:
                print "[ FAILED ] %s" % server

        return 1