summaryrefslogtreecommitdiffstats
path: root/src/sbin/bcfg2-query
blob: 46d4fab3c6ddb01aded6a3ce66fab8537d672547 (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
#!/usr/bin/python

# FIXME add -C <configfile> support

import lxml.etree, sys, ConfigParser

from Bcfg2.Settings import settings

if len(sys.argv) < 2:
    print "Usage bcfg2-query -d|u|p <profile name>"
    print "\t -d\t\t shows the clients that are currently down"
    print "\t -u\t\t shows the clients that are currently up"
    print "\t -c\t\t prints node names in a comma delimited list"
    print "\t -s\t\t prints node names in a space delimited list"
    print "\t -n\t\t prints node names in a newline delimited list (default)"
    print "\t -p <profile name>\t shows all the clients of that profile"
    print "\t -a\t shows all clients"
    sys.exit(1)

prefix = settings.SERVER_REPOSITORY


xml = lxml.etree.parse('%s/Metadata/clients.xml'%prefix)
if '-p' in sys.argv:
    profile = sys.argv[sys.argv.index('-p') + 1]
    clients = xml.xpath(".//Client[@profile='%s']" % (profile))
elif '-d' in sys.argv:
    clients = xml.xpath(".//Client[@pingable='N']")
elif '-u' in sys.argv:
    clients = xml.xpath(".//Client[@pingable='Y']")
elif '-a' in sys.argv:
    clients = xml.xpath(".//Client")

cnames = [client.get('name') for client in clients]
if '-c' in sys.argv:
    print ",".join(cnames)
elif '-s' in sys.argv:
    print " ".join(cnames)
else:
    print "\n".join(cnames)