1 from sfa.util.sfalogging import logger
2 from sfa.util.xml import XpathFilter
3 from sfa.util.xrn import Xrn
5 from sfa.rspecs.elements.lease import Lease
12 def add_leases(xml, leases):
14 network_elems = xml.xpath('//network')
15 if len(network_elems) > 0:
16 network_elem = network_elems[0]
18 network_urn = Xrn(leases[0]['component_id']).get_authority_urn().split(':')[0]
19 network_elem = xml.add_element('network', name = network_urn)
26 lease_fields = ['lease_id', 'component_id', 'slice_id', 'start_time', 'duration']
27 lease_elem = network_elem.add_instance('lease', lease, lease_fields)
28 lease_elems.append(lease_elem)
32 def get_leases(xml, filter={}):
33 xpath = '//lease%s | //default:lease%s' % (XpathFilter.xpath(filter), XpathFilter.xpath(filter))
34 lease_elems = xml.xpath(xpath)
35 return Iotlabv1Lease.get_lease_objs(lease_elems)
38 def get_lease_objs(lease_elems):
40 for lease_elem in lease_elems:
42 node_elems = lease_elem.xpath('./default:node | ./node')
43 for node_elem in node_elems:
44 lease = Lease(lease_elem.attrib, lease_elem)
45 lease['slice_id'] = lease_elem.attrib['slice_id']
46 lease['start_time'] = lease_elem.attrib['start_time']
47 lease['duration'] = lease_elem.attrib['duration']
48 lease['component_id'] = node_elem.attrib['component_id']