X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Fversions%2Fiotlabv1.py;h=ceb67ee418c7e66afd2e70d5655736463431ac47;hb=4a9e6751f9f396f463932133b9d62fc925a99ef6;hp=ad491571a017be70b4d6d5d9bb5061de3072b2e1;hpb=4a2337e7f70cef81a8de37829aa63fc941c4b96e;p=sfa.git diff --git a/sfa/rspecs/versions/iotlabv1.py b/sfa/rspecs/versions/iotlabv1.py index ad491571..ceb67ee4 100644 --- a/sfa/rspecs/versions/iotlabv1.py +++ b/sfa/rspecs/versions/iotlabv1.py @@ -1,3 +1,5 @@ + + from copy import deepcopy @@ -30,16 +32,16 @@ class Iotlabv1(RSpecVersion): 'flack': "http://www.protogeni.net/resources/rspec/ext/flack/1", 'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1", } - namespaces = dict(extensions.items() + [('default', namespace)]) + namespaces = dict(list(extensions.items()) + [('default', namespace)]) elements = [] # Network def get_networks(self): - #WARNING Added //default:network to the xpath - #otherwise network element not detected 16/07/12 SA + # WARNING Added //default:network to the xpath + # otherwise network element not detected 16/07/12 SA network_elems = self.xml.xpath('//network | //default:network') - networks = [network_elem.get_instance(fields=['name', 'slice']) for \ + networks = [network_elem.get_instance(fields=['name', 'slice']) for network_elem in network_elems] return networks @@ -58,33 +60,35 @@ class Iotlabv1(RSpecVersion): def get_nodes_with_slivers(self): return Iotlabv1Node.get_nodes_with_slivers(self.xml) - def get_slice_timeslot(self ): + def get_slice_timeslot(self): return Iotlabv1Timeslot.get_slice_timeslot(self.xml) def add_connection_information(self, ldap_username, sites_set): - return Iotlabv1Node.add_connection_information(self.xml,ldap_username, sites_set) + return Iotlabv1Node.add_connection_information(self.xml, ldap_username, sites_set) def add_nodes(self, nodes, check_for_dupes=False, rspec_content_type=None): - return Iotlabv1Node.add_nodes(self.xml,nodes, rspec_content_type) + return Iotlabv1Node.add_nodes(self.xml, nodes, rspec_content_type) - def merge_node(self, source_node_tag, network, no_dupes = False): + def merge_node(self, source_node_tag, network, no_dupes=False): logger.debug("SLABV1 merge_node") - #if no_dupes and self.get_node_element(node['hostname']): - ## node already exists - #return + # if no_dupes and self.get_node_element(node['hostname']): + # node already exists + # return network_tag = self.add_network(network) network_tag.append(deepcopy(source_node_tag)) # Slivers def get_sliver_attributes(self, hostname, node, network=None): - print>>sys.stderr, "\r\n \r\n \r\n \t\t SLABV1.PY get_sliver_attributes hostname %s " %(hostname) - nodes = self.get_nodes({'component_id': '*%s*' %hostname}) + print("\r\n \r\n \r\n \t\t SLABV1.PY get_sliver_attributes hostname %s " % ( + hostname), file=sys.stderr) + nodes = self.get_nodes({'component_id': '*%s*' % hostname}) attribs = [] - print>>sys.stderr, "\r\n \r\n \r\n \t\t SLABV1.PY get_sliver_attributes-----------------nodes %s " %(nodes) + print("\r\n \r\n \r\n \t\t SLABV1.PY get_sliver_attributes-----------------nodes %s " % + (nodes), file=sys.stderr) if nodes is not None and isinstance(nodes, list) and len(nodes) > 0: node = nodes[0] - #if node : + # if node : #sliver = node.xpath('./default:sliver | ./sliver') #sliver = node.xpath('./default:sliver', namespaces=self.namespaces) sliver = node['slivers'] @@ -93,7 +97,8 @@ class Iotlabv1(RSpecVersion): sliver = sliver[0] attribs = sliver #attribs = self.attributes_list(sliver) - print>>sys.stderr, "\r\n \r\n \r\n \t\t SLABV1.PY get_sliver_attributes----------NN------- sliver %s self.namespaces %s attribs %s " %(sliver, self.namespaces,attribs) + print("\r\n \r\n \r\n \t\t SLABV1.PY get_sliver_attributes----------NN------- sliver %s self.namespaces %s attribs %s " % + (sliver, self.namespaces, attribs), file=sys.stderr) return attribs def get_slice_attributes(self, network=None): @@ -105,25 +110,26 @@ class Iotlabv1(RSpecVersion): # TODO: default sliver attributes in the PG rspec? default_ns_prefix = self.namespaces['default'] for node in nodes_with_slivers: - sliver_attributes = self.get_sliver_attributes(node['component_id'],node, network) + sliver_attributes = self.get_sliver_attributes( + node['component_id'], node, network) for sliver_attribute in sliver_attributes: name = str(sliver_attribute[0]) text = str(sliver_attribute[1]) attribs = sliver_attribute[2] # we currently only suppor the and attributes - #if 'info' in name: - #attribute = {'name': 'flack_info', 'value': str(attribs), 'node_id': node} - #slice_attributes.append(attribute) - #elif 'initscript' in name: + # if 'info' in name: + #attribute = {'name': 'flack_info', 'value': str(attribs), 'node_id': node} + # slice_attributes.append(attribute) + # elif 'initscript' in name: if 'initscript' in name: if attribs is not None and 'name' in attribs: value = attribs['name'] else: value = text - attribute = {'name': 'initscript', 'value': value, 'node_id': node} + attribute = {'name': 'initscript', + 'value': value, 'node_id': node} slice_attributes.append(attribute) - return slice_attributes def attributes_list(self, elem): @@ -140,10 +146,11 @@ class Iotlabv1(RSpecVersion): pass def add_slivers(self, hostnames, attributes=None, sliver_urn=None, append=False): - if attributes is None: attributes=[] + if attributes is None: + attributes = [] # all nodes hould already be present in the rspec. Remove all # nodes that done have slivers - print>>sys.stderr, "\r\n \r\n \r\n \t\t\t Iotlabv1.PY add_slivers ----->get_node " + print("\r\n \r\n \r\n \t\t\t Iotlabv1.PY add_slivers ----->get_node ", file=sys.stderr) for hostname in hostnames: node_elems = self.get_nodes({'component_id': '*%s*' % hostname}) if not node_elems: @@ -151,8 +158,10 @@ class Iotlabv1(RSpecVersion): node_elem = node_elems[0] # determine sliver types for this node - #TODO : add_slivers valid type of sliver needs to be changed 13/07/12 SA - valid_sliver_types = ['iotlab-node', 'emulab-openvz', 'raw-pc', 'plab-vserver', 'plab-vnode'] + # TODO : add_slivers valid type of sliver needs to be changed + # 13/07/12 SA + valid_sliver_types = [ + 'iotlab-node', 'emulab-openvz', 'raw-pc', 'plab-vserver', 'plab-vnode'] #valid_sliver_types = ['emulab-openvz', 'raw-pc', 'plab-vserver', 'plab-vnode'] requested_sliver_type = None for sliver_type in node_elem.get('slivers', []): @@ -162,8 +171,9 @@ class Iotlabv1(RSpecVersion): if not requested_sliver_type: continue sliver = {'type': requested_sliver_type, - 'pl_tags': attributes} - print>>sys.stderr, "\r\n \r\n \r\n \t\t\t Iotlabv1.PY add_slivers node_elem %s sliver_type %s \r\n \r\n " %(node_elem, sliver_type) + 'pl_tags': attributes} + print("\r\n \r\n \r\n \t\t\t Iotlabv1.PY add_slivers node_elem %s sliver_type %s \r\n \r\n " % ( + node_elem, sliver_type), file=sys.stderr) # remove available element for available_elem in node_elem.xpath('./default:available | ./available'): node_elem.remove(available_elem) @@ -201,7 +211,6 @@ class Iotlabv1(RSpecVersion): def remove_slivers(self, slivers, network=None, no_dupes=False): Iotlabv1Node.remove_slivers(self.xml, slivers) - # Utility def merge(self, in_rspec): @@ -223,7 +232,7 @@ class Iotlabv1(RSpecVersion): in_rspec = RSpecConverter.to_sfa_rspec(rspec.toxml()) rspec = RSpec(in_rspec) # just copy over all networks - #Attention special get_networks using //default:network xpath + # Attention special get_networks using //default:network xpath current_networks = self.get_networks() networks = rspec.version.get_networks() for network in networks: @@ -232,17 +241,13 @@ class Iotlabv1(RSpecVersion): self.xml.append(network.element) current_networks.append(current_network) - - - - # Leases def get_leases(self, lease_filter=None): return SFAv1Lease.get_leases(self.xml, lease_filter) - #return Iotlabv1Lease.get_leases(self.xml, lease_filter) + # return Iotlabv1Lease.get_leases(self.xml, lease_filter) - def add_leases(self, leases, network = None, no_dupes=False): + def add_leases(self, leases, network=None, no_dupes=False): SFAv1Lease.add_leases(self.xml, leases) #Iotlabv1Lease.add_leases(self.xml, leases) @@ -251,7 +256,7 @@ class Iotlabv1(RSpecVersion): def get_channels(self, filter=None): return [] - def add_channels(self, channels, network = None, no_dupes=False): + def add_channels(self, channels, network=None, no_dupes=False): pass # Links @@ -264,10 +269,10 @@ class Iotlabv1(RSpecVersion): def add_links(self, links): pass + def add_link_requests(self, links): pass - def cleanup(self): # remove unncecessary elements, attributes if self.type in ['request', 'manifest']: @@ -279,21 +284,23 @@ class Iotlabv1Ad(Iotlabv1): enabled = True content_type = 'ad' schema = 'http://senslab.info/resources/rspec/1/ad.xsd' - #http://www.geni.net/resources/rspec/3/ad.xsd' + # http://www.geni.net/resources/rspec/3/ad.xsd' template = '' + class Iotlabv1Request(Iotlabv1): enabled = True content_type = 'request' schema = 'http://senslab.info/resources/rspec/1/request.xsd' - #http://www.geni.net/resources/rspec/3/request.xsd + # http://www.geni.net/resources/rspec/3/request.xsd template = '' + class Iotlabv1Manifest(Iotlabv1): enabled = True content_type = 'manifest' schema = 'http://senslab.info/resources/rspec/1/manifest.xsd' - #http://www.geni.net/resources/rspec/3/manifest.xsd + # http://www.geni.net/resources/rspec/3/manifest.xsd template = '' @@ -303,4 +310,4 @@ if __name__ == '__main__': r = RSpec('/tmp/iotlab.rspec') r.load_rspec_elements(Iotlabv1.elements) r.namespaces = Iotlabv1.namespaces - print r.get(RSpecElements.NODE) + print(r.get(RSpecElements.NODE))