X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Fversions%2Fsfav1.py;h=fa5f9d4b914141d46fb7fa6089b7dc8f8f19ab45;hb=ed21507f990ecf9c49887283fb44e9c92a8624f9;hp=7ec164d95f87df7de4b44a26925386bde7cf9b3c;hpb=a998bf400c1ef152daa4979fec49ee5dfa0d7ff3;p=sfa.git diff --git a/sfa/rspecs/versions/sfav1.py b/sfa/rspecs/versions/sfav1.py index 7ec164d9..fa5f9d4b 100644 --- a/sfa/rspecs/versions/sfav1.py +++ b/sfa/rspecs/versions/sfav1.py @@ -3,20 +3,20 @@ from lxml import etree from sfa.util.sfalogging import logger from sfa.util.xrn import hrn_to_urn, urn_to_hrn -from sfa.util.plxrn import PlXrn -from sfa.rspecs.baseversion import BaseVersion +from sfa.rspecs.version import RSpecVersion from sfa.rspecs.elements.element import Element from sfa.rspecs.elements.versions.pgv2Link import PGv2Link from sfa.rspecs.elements.versions.sfav1Node import SFAv1Node from sfa.rspecs.elements.versions.sfav1Sliver import SFAv1Sliver +from sfa.rspecs.elements.versions.sfav1Lease import SFAv1Lease -class SFAv1(BaseVersion): +class SFAv1(RSpecVersion): enabled = True type = 'SFA' content_type = '*' version = '1' - schema = None - namespace = None + schema = '' + namespace = '' extensions = {} namespaces = None template = '' % type @@ -46,8 +46,8 @@ class SFAv1(BaseVersion): def get_nodes_with_slivers(self): return SFAv1Node.get_nodes_with_slivers(self.xml) - def add_nodes(self, nodes, network = None, no_dupes=False): - SFAv1Node.add_nodes(self.xml, nodes) + def add_nodes(self, nodes, network = None, no_dupes=False, rspec_content_type=None): + SFAv1Node.add_nodes(self.xml, nodes, rspec_content_type) def merge_node(self, source_node_tag, network, no_dupes=False): if no_dupes and self.get_node_element(node['hostname']): @@ -93,6 +93,7 @@ class SFAv1(BaseVersion): attributes = [] nodes_with_slivers = self.get_nodes_with_slivers() for default_attribute in self.get_default_sliver_attributes(network): + attribute = default_attribute.copy() attribute['node_id'] = None attributes.append(attribute) for node in nodes_with_slivers: @@ -100,7 +101,7 @@ class SFAv1(BaseVersion): sliver_attributes = self.get_sliver_attributes(nodename, network) for sliver_attribute in sliver_attributes: sliver_attribute['node_id'] = nodename - attributes.append(attribute) + attributes.append(sliver_attribute) return attributes @@ -114,7 +115,7 @@ class SFAv1(BaseVersion): SFAv1Sliver.add_sliver_attribute(sliver, name, value) else: # should this be an assert / raise an exception? - print "WARNING: failed to find component_id", component_id + logger.error("WARNING: failed to find component_id %s" % component_id) def get_sliver_attributes(self, component_id, network=None): nodes = self.get_nodes({'component_id': '*%s*' % component_id}) @@ -194,6 +195,9 @@ class SFAv1(BaseVersion): Merge contents for specified rspec with current rspec """ + if not in_rspec: + return + from sfa.rspecs.rspec import RSpec if isinstance(in_rspec, RSpec): rspec = in_rspec @@ -213,6 +217,14 @@ class SFAv1(BaseVersion): self.xml.append(network.element) current_networks.append(current_network) + # Leases + + def get_leases(self, filter=None): + return SFAv1Lease.get_leases(self.xml, filter) + + def add_leases(self, leases, network = None, no_dupes=False): + SFAv1Lease.add_leases(self.xml, leases) + if __name__ == '__main__': from sfa.rspecs.rspec import RSpec from sfa.rspecs.rspec_elements import *