#!/usr/bin/python # FIXME add -C support import lxml.etree, sys, ConfigParser from Bcfg2.Settings import settings if len(sys.argv) < 2: print "Usage bcfg2-query -d|u|p " 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 \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)