1 from sfa.util.xrn import Xrn
2 from sfa.util.xml import XmlElement
4 from sfa.rspecs.elements.element import Element
5 from sfa.rspecs.elements.sliver import Sliver
6 from sfa.rspecs.elements.versions.sfav1PLTag import SFAv1PLTag
12 def add_slivers(xml, slivers):
15 if not isinstance(slivers, list):
17 for sliver in slivers:
18 sliver_elem = xml.add_instance('sliver', sliver, ['name'])
19 tags = sliver.get('tags', [])
22 SFAv1Sliver.add_sliver_attribute(sliver_elem, tag['tagname'], tag['value'])
25 def add_sliver_attribute(xml, name, value):
26 elem = xml.add_element(name)
30 def get_sliver_attributes(xml):
32 for elem in xml.iterchildren():
33 if elem.tag not in Sliver.fields:
34 xml_element = XmlElement(elem, xml.namespaces)
35 instance = Element(fields=xml_element, element=elem)
36 instance['name'] = elem.tag
37 instance['value'] = elem.text
38 attribs.append(instance)
42 def get_slivers(xml, filter={}):
43 xpath = './default:sliver | ./sliver'
44 sliver_elems = xml.xpath(xpath)
46 for sliver_elem in sliver_elems:
47 sliver = Sliver(sliver_elem.attrib,sliver_elem)
48 if 'component_id' in xml.attrib:
49 sliver['component_id'] = xml.attrib['component_id']
50 sliver['tags'] = SFAv1Sliver.get_sliver_attributes(sliver_elem)
51 slivers.append(sliver)