--- /dev/null
+import socket
+
+from PLC.Faults import *
+from PLC.Method import Method
+from PLC.Parameter import Parameter, Mixed
+from PLC.Sites import Site, Sites
+from PLC.Nodes import Node, Nodes
+from PLC.NodeNetworks import NodeNetwork, NodeNetworks, valid_ip
+from PLC.Auth import Auth
+
+class AdmQuerySite(Method):
+ """
+ Deprecated. Functionality can be implemented with GetSites and
+ GetNodes.
+ """
+
+ status = "deprecated"
+
+ roles = ['admin', 'pi', 'user', 'tech']
+
+ accepts = [
+ Auth(),
+ {'site_name': Site.fields['name'],
+ 'site_abbreviatedname': Site.fields['abbreviated_name'],
+ 'site_loginbase': Site.fields['login_base'],
+ 'node_hostname': Node.fields['hostname'],
+ 'node_id': Node.fields['node_id'],
+ 'nodenetwork_ip': NodeNetwork.fields['ip'],
+ 'nodenetwork_mac': NodeNetwork.fields['mac']}
+ ]
+
+ returns = [Site.fields['site_id']]
+
+ def call(self, auth, search_vals):
+ if 'site_loginbase' in search_vals:
+ sites = Sites(self.api, [search_vals['site_loginbase']])
+ else:
+ sites = Sites(self.api)
+
+ if 'site_name' in search_vals:
+ sites = filter(lambda site: \
+ site['name'] == search_vals['site_name'],
+ sites)
+
+ if 'site_abbreviatedname' in search_vals:
+ sites = filter(lambda site: \
+ site['abbreviatedname'] == search_vals['site_abbreviatedname'],
+ sites)
+
+ if 'node_id' in search_vals:
+ sites = filter(lambda site: \
+ search_vals['node_id'] in site['node_ids'],
+ sites)
+
+ if 'node_hostname' in search_vals or \
+ 'nodenetwork_ip' in search_vals or \
+ 'nodenetwork_mac' in search_vals:
+ for site in sites:
+ site['hostnames'] = []
+ site['ips'] = []
+ site['macs'] = []
+ if site['node_ids']:
+ nodes = Nodes(self.api, site['node_ids'])
+ for node in nodes:
+ site['hostnames'].append(node['hostname'])
+ if 'nodenetwork_ip' in search_vals or \
+ 'nodenetwork_mac' in search_vals:
+ nodenetworks = NodeNetworks(self.api, node['nodenetwork_ids'])
+ site['ips'] += [nodenetwork['ip'] for nodenetwork in nodenetworks]
+ site['macs'] += [nodenetwork['mac'] for nodenetwork in nodenetworks]
+
+ if 'node_hostname' in search_vals:
+ sites = filter(lambda site: \
+ search_vals['node_hostname'] in site['hostnames'],
+ sites)
+
+ if 'nodenetwork_ip' in search_vals:
+ sites = filter(lambda site: \
+ search_vals['nodenetwork_ip'] in site['ips'],
+ sites)
+
+ if 'nodenetwork_mac' in search_vals:
+ sites = filter(lambda site: \
+ search_vals['nodenetwork_mac'] in site['macs'],
+ sites)
+
+ return [site['site_id'] for site in sites]