summaryrefslogtreecommitdiffstats
path: root/func/overlord/cmd_modules/ping.py
blob: 3554e66368a07c7616b21bfbf4842821839a8097 (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
"""
ping minions to see whether they are up.

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 base_command
from func.overlord import client


class Ping(base_command.BaseCommand):
    name = "ping"
    usage = "see what func minions are up/accessible"
    summary = usage

    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")

    def handleOptions(self, options):
        """
        Nothing to do here...
        """
        self.verbose = self.options.verbose

    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.

        minion_set = client.Minions(self.server_spec, port=self.port)
        servers = minion_set.get_all_hosts()

        for server in servers:

            overlord_obj = client.Overlord(server,port=self.port,
                                           interactive=False,
                                           verbose=self.verbose,
                                           config=self.config,
                                           noglobs=True)

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

        return 1