-
- def get_sites(self, filter={}):
- sites = {}
- for site in self.driver.shell.GetSites(filter):
- sites[site['site_id']] = site
- return sites
-
- def get_interfaces(self, filter={}):
- interfaces = {}
- for interface in self.driver.shell.GetInterfaces(filter):
- iface = Interface()
- if interface['bwlimit']:
- interface['bwlimit'] = str(int(interface['bwlimit'])/1000)
- interfaces[interface['interface_id']] = interface
- return interfaces
-
- def get_links(self, sites, nodes, interfaces):
-
- topology = Topology()
- links = []
- for (site_id1, site_id2) in topology:
- site_id1 = int(site_id1)
- site_id2 = int(site_id2)
- link = Link()
- if not site_id1 in sites or site_id2 not in sites:
- continue
- site1 = sites[site_id1]
- site2 = sites[site_id2]
- # get hrns
- site1_hrn = self.driver.hrn + '.' + site1['login_base']
- site2_hrn = self.driver.hrn + '.' + site2['login_base']
-
- for s1_node_id in site1['node_ids']:
- for s2_node_id in site2['node_ids']:
- if s1_node_id not in nodes or s2_node_id not in nodes:
- continue
- node1 = nodes[s1_node_id]
- node2 = nodes[s2_node_id]
- # set interfaces
- # just get first interface of the first node
- if1_xrn = PlXrn(auth=self.driver.hrn, interface='node%s:eth0' % (node1['node_id']))
- if1_ipv4 = interfaces[node1['interface_ids'][0]]['ip']
- if2_xrn = PlXrn(auth=self.driver.hrn, interface='node%s:eth0' % (node2['node_id']))
- if2_ipv4 = interfaces[node2['interface_ids'][0]]['ip']
-
- if1 = Interface({'component_id': if1_xrn.urn, 'ipv4': if1_ipv4} )
- if2 = Interface({'component_id': if2_xrn.urn, 'ipv4': if2_ipv4} )
-
- # set link
- link = Link({'capacity': '1000000', 'latency': '0', 'packet_loss': '0', 'type': 'ipv4'})
- link['interface1'] = if1
- link['interface2'] = if2
- link['component_name'] = "%s:%s" % (site1['login_base'], site2['login_base'])
- link['component_id'] = PlXrn(auth=self.driver.hrn, interface=link['component_name']).get_urn()
- link['component_manager_id'] = hrn_to_urn(self.driver.hrn, 'authority+am')
- links.append(link)
-
- return links
-
- def get_node_tags(self, filter={}):
- node_tags = {}
- for node_tag in self.driver.shell.GetNodeTags(filter):
- node_tags[node_tag['node_tag_id']] = node_tag
- return node_tags
-
- def get_pl_initscripts(self, filter={}):
- pl_initscripts = {}
- filter.update({'enabled': True})
- for initscript in self.driver.shell.GetInitScripts(filter):
- pl_initscripts[initscript['initscript_id']] = initscript
- return pl_initscripts
-