from sfa.util.plxrn import hostname_to_urn
from sfa.util.config import Config
-
class PGRSpec(RSpec):
header = '<?xml version="1.0"?>\n'
template = """<rspec xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.protogeni.net/resources/rspec/0.2" xsi:schemaLocation="http://www.protogeni.net/resources/rspec/0.2 http://www.protogeni.net/resources/rspec/0.2/ad.xsd"></rspec>"""
return network
def get_networks(self):
- networks = self.xml.xpath('//rspecv2:node[@component_manager_uuid]/@component_manager_uuid')
+ networks = self.xml.xpath('//rspecv2:node[@component_manager_uuid]/@component_manager_uuid', namespaces=self.namespaces)
return set(networks)
def get_node_elements(self):
return nodes
def get_nodes(self, network=None):
- return self.xml.xpath('//rspecv2:node[@component_uuid]/@component_uuid', namespaces=self.namespaces)
+ return self.xml.xpath('//rspecv2:node[@component_name]/@component_name', namespaces=self.namespaces)
def get_nodes_with_slivers(self, network=None):
if network:
- return self.xml.xpath('//node[@component_manager_uuid="%s"][sliver_type]/@component_name' % network, namespaces=self.namespaces)
+ return self.xml.xpath('//rspecv2:node[@component_manager_id="%s"][sliver_type]/@component_name' % network, namespaces=self.namespaces)
else:
- return self.xml.xpath('//node[sliver_type]/@component_name', namespaces=self.namespaces)
+ return self.xml.xpath('//rspecv2:node[rspecv2:sliver_type]/@component_name', namespaces=self.namespaces)
def get_nodes_without_slivers(self, network=None):
pass
#if 'interfaces' in node:
- def add_slivers(self, hostnames, check_for_dupes=False):
- if not isinstance(hostnames, list):
- hostnames = [hostnames]
+ def add_slivers(self, slivers, check_for_dupes=False):
+ if not isinstance(slivers, list):
+ slivers = [slivers]
nodes_with_slivers = self.get_nodes_with_slivers()
- for hostname in hostnames:
+ for sliver in slivers:
+ hostname = sliver['hostname']
if hostname in nodes_with_slivers:
continue
- nodes = self.xml.xpath('//node[@component_name="%s"]' % hostname, namespaces=self.namespaces)
+ nodes = self.xml.xpath('//rspecv2:node[@component_name="%s"] | //node[@component_name="%s"]' % (hostname, hostname), namespaces=self.namespaces)
if nodes:
node = nodes[0]
node.set('client_id', hostname)