5 from monitor.wrapper import plc
8 from monitor import config
10 def parse_fields(fields):
20 def parse_filter(filter):
26 raise Exception("filter format should be name=value")
30 def print_fields(obj, fields, format):
46 print "no objects returned to list fields"
51 from monitor import parser as parsermodule
52 parser = parsermodule.getParser()
54 parser.set_defaults(get=True,
65 parser.add_option("", "--get", dest="get", action="store_true",
66 help="just get values for object")
68 parser.add_option("", "--type", dest="type", metavar="[node|person|site]",
69 help="object type to query")
71 parser.add_option("", "--fields", dest="fields", metavar="key,list,...",
72 help="a list of keys to display for each object.")
74 parser.add_option("", "--filter", dest="filter", metavar="name=value",
75 help="Filter passed to Get* calls")
77 parser.add_option("", "--format", dest="format",
78 help="Format string to use to print")
80 parser.add_option("", "--byloginbase", dest="byloginbase",
82 parser.add_option("", "--byrole", dest="byrole",
84 parser.add_option("", "--withsitename", dest="withsitename",
85 action="store_true", help="")
87 parser.add_option("", "--nodelist", dest="nodelist", metavar="nodelist.txt",
88 help="A list of nodes to bring out of debug mode.")
89 parser.add_option("", "--listfields", dest="listfields", action="store_true",
90 help="A list of nodes to bring out of debug mode.")
92 #parser = parsermodule.getParser(['defaults'], parser)
93 config = parsermodule.parse_args(parser)
96 nodelist = utilfile.getListFromFile(config.nodelist)
99 f = parse_filter(config.filter)
100 fields = parse_fields(config.fields)
102 if config.type == 'node':
103 if config.fields is None:
104 fields='node_id,hostname,last_contact',
105 fields = parse_fields(config.fields)
107 n = api.GetNodes(f, fields)
108 if config.listfields: list_fields(n)
110 print_fields(i, fields, config.format)
112 if config.type == 'person':
114 if config.byloginbase:
115 s = api.GetSites({'login_base' : config.byloginbase}, ['person_ids'])
116 f = s[0]['person_ids']
118 p = api.GetPersons(None, ['person_id', 'roles'])
119 p = filter(lambda x: config.byrole in x['roles'], p)
120 f = [ x['person_id'] for x in p ]
122 if config.withsitename:
123 n = api.GetPersons(f, fields)
124 if config.listfields: list_fields(n)
126 sitelist = api.GetSites(i['site_ids'], ['person_ids', 'name'])
127 if len(sitelist) > 0:
129 if i['person_id'] in s['person_ids']:
130 i['name'] = s['name']
131 print_fields(i, fields, config.format)
133 n = api.GetPersons(f, fields)
134 if config.listfields: list_fields(n)
136 print_fields(i, fields, config.format)
138 if __name__ == "__main__":