From 45c45cc6ae12eb7863612ab833b0facbfb2c37bb Mon Sep 17 00:00:00 2001 From: Stephen Soltesz Date: Mon, 22 Jun 2009 19:53:38 +0000 Subject: [PATCH] provide sitename to person query install updates. --- Monitor.spec | 4 +-- plcquery.py | 76 ++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 70 insertions(+), 10 deletions(-) diff --git a/Monitor.spec b/Monitor.spec index 90e9fa5..8f1ea0e 100644 --- a/Monitor.spec +++ b/Monitor.spec @@ -183,7 +183,7 @@ install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py touch $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php chmod 777 $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php -install -D -m 644 rt3/syncrtusers.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/syncrtusers.cron +install -D -m 644 rt3/rt.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/rt.cron #install -D -m 755 monitor-default.conf $RPM_BUILD_ROOT/etc/monitor.conf #cp $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig-default.py $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig.py @@ -226,7 +226,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root) /usr/share/%{name}/rt3 %{_sysconfdir}/plc.d/rt3 -%{_sysconfdir}/cron.d/syncrtusers.cron +%{_sysconfdir}/cron.d/rt.cron %files pcucontrol %{python_sitearch}/pcucontrol diff --git a/plcquery.py b/plcquery.py index 0540098..235662e 100755 --- a/plcquery.py +++ b/plcquery.py @@ -1,6 +1,7 @@ #!/usr/bin/python +import sys from monitor.wrapper import plc api = plc.api @@ -26,11 +27,24 @@ def parse_filter(filter): else: return None -def print_fields(obj, fields): - for f in fields: - if f in obj: - print obj[f], - print "" +def print_fields(obj, fields, format): + if format: + print format % obj + else: + for f in fields: + if f in obj: + print obj[f], + print "" + +def list_fields(l): + if len(l) > 0: + o = l[0] + for k in o.keys(): + print k + sys.exit(1) + else: + print "no objects returned to list fields" + sys.exit(1) def main(): @@ -40,7 +54,12 @@ def main(): parser.set_defaults(get=True, type='node', filter=None, - fields='node_id,hostname,last_contact' + fields=None, + format=None, + listfields=False, + withsitename=False, + byloginbase=None, + byrole=None, ) parser.add_option("", "--get", dest="get", action="store_true", @@ -55,9 +74,19 @@ def main(): parser.add_option("", "--filter", dest="filter", metavar="name=value", help="Filter passed to Get* calls") + parser.add_option("", "--format", dest="format", + help="Format string to use to print") + + parser.add_option("", "--byloginbase", dest="byloginbase", + help="") + parser.add_option("", "--byrole", dest="byrole", + help="") + parser.add_option("", "--withsitename", dest="withsitename", + action="store_true", help="") + parser.add_option("", "--nodelist", dest="nodelist", metavar="nodelist.txt", help="A list of nodes to bring out of debug mode.") - parser.add_option("", "--listkeys", dest="listkeys", action="store_true", + parser.add_option("", "--listfields", dest="listfields", action="store_true", help="A list of nodes to bring out of debug mode.") #parser = parsermodule.getParser(['defaults'], parser) @@ -71,9 +100,40 @@ def main(): fields = parse_fields(config.fields) if config.type == 'node': + if config.fields is None: + fields='node_id,hostname,last_contact', + fields = parse_fields(config.fields) + n = api.GetNodes(f, fields) + if config.listfields: list_fields(n) for i in n: - print_fields(i, fields) + print_fields(i, fields, config.format) + + if config.type == 'person': + + if config.byloginbase: + s = api.GetSites({'login_base' : config.byloginbase}, ['person_ids']) + f = s[0]['person_ids'] + if config.byrole: + p = api.GetPersons(None, ['person_id', 'roles']) + p = filter(lambda x: config.byrole in x['roles'], p) + f = [ x['person_id'] for x in p ] + + if config.withsitename: + n = api.GetPersons(f, fields) + if config.listfields: list_fields(n) + for i in n: + sitelist = api.GetSites(i['site_ids'], ['person_ids', 'name']) + if len(sitelist) > 0: + s = sitelist[0] + if i['person_id'] in s['person_ids']: + i['name'] = s['name'] + print_fields(i, fields, config.format) + else: + n = api.GetPersons(f, fields) + if config.listfields: list_fields(n) + for i in n: + print_fields(i, fields, config.format) if __name__ == "__main__": main() -- 2.43.0