+def session_clear_all():
+ session.flush()
+ try:
+ session.expunge_all()
+ except AttributeError: # SQLAlchemy < 0.5.1
+ session.clear()
+
+class ObjectQueryFields(widgets.WidgetsList):
+ """The WidgetsList defines the fields of the form."""
+ pass
+
+
+
+class NodeQueryFields(widgets.WidgetsList):
+ """The WidgetsList defines the fields of the form."""
+
+ object = widgets.RadioButtonList(label="Query Type", options=[('nodes', 'All Nodes'),
+ ('nodehistory', 'Single Node History'),
+ #('sites', 'All Sites'),
+ #('sitehistory', 'Single Site History'),
+ ], default="nodes")
+ nodehistory_hostname = widgets.TextField(label="Hostname Node History", attrs={'size':30})
+
+ hostname = widgets.CheckBox(label="Hostname")
+ firewall = widgets.CheckBox(label="Firewall?")
+ fs_status = widgets.CheckBox(label="Filesystem Status")
+ ssh_status = widgets.CheckBox(label="SSH Status")
+ ssh_error = widgets.CheckBox(label="SSH Errors")
+ dns_status = widgets.CheckBox(label="DNS Status")
+ iptables_status = widgets.CheckBox(label="IP Tables Status")
+ nm_status = widgets.CheckBox(label="NM Status")
+ princeton_comon_dir = widgets.CheckBox(label="CoMon Dir")
+ princeton_comon_running = widgets.CheckBox(label="CoMon Running")
+ princeton_comon_procs = widgets.CheckBox(label="CoMon Processes")
+ external_dns_status = widgets.CheckBox(label="Hostname Resolves?")
+ kernel_version = widgets.CheckBox(label="Kernel")
+ bootcd_version = widgets.CheckBox(label="BootCD")
+ boot_server = widgets.CheckBox(label="Boot Server")
+ install_date = widgets.CheckBox(label="Installation Date")
+ observed_status = widgets.CheckBox(label="Observed Status")
+ uptime = widgets.CheckBox(label="Uptime")
+ traceroute = widgets.CheckBox(label="Traceroute")
+ port_status = widgets.CheckBox(label="Port Status")
+ plc_pcuid = widgets.CheckBox(label="PCU ID")
+ rpms = widgets.CheckBox(label="RPM")
+ rpmvalue = widgets.TextField(label="RPM Pattern")
+
+class QueryForm(widgets.TableForm):
+ template = """
+ <form xmlns:py="http://purl.org/kid/ns#"
+ id="queryform"
+ name="${name}"
+ action="${action}"
+ method="${method}"
+ class="tableform"
+ py:attrs="form_attrs"
+ >
+ <div py:for="field in hidden_fields"
+ py:replace="field.display(value_for(field), **params_for(field))"
+ />
+ <table border="0" cellspacing="0" cellpadding="2" py:attrs="table_attrs">
+ <tr py:for="i, field in enumerate(fields)"
+ class="${i%2 and 'odd' or 'even'}"
+ >
+ <th>
+ <label class="fieldlabel" for="${field.field_id}" py:content="field.label" />
+ </th>
+ <td>
+ <span py:replace="field.display(value_for(field), **params_for(field))" />
+ <span py:if="error_for(field)" class="fielderror" py:content="error_for(field)" />
+ <span py:if="field.help_text" class="fieldhelp" py:content="field.help_text" />
+ </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td py:content="submit.display(submit_text)" />
+ </tr>
+ </table>
+ </form>
+ """
+
+def getNodeQueryForm():
+ return QueryForm(fields=NodeQueryFields(), action="query")
+
+# make it easier group objects without invoking the elixir auto-write feature.
+class aggregate: pass