22989f9a23febd8f8718505769cae937425f93f1
[sfa.git] / sfa / rspecs / elements / versions / sfav1Sliver.py
1 from sfa.util.xrn import Xrn
2 from sfa.rspecs.elements.element import Element
3 from sfa.rspecs.elements.sliver import Sliver
4 from sfa.rspecs.elements.versions.sfav1PLTag import SFAv1PLTag
5
6 class SFAv1Sliver:
7
8     @staticmethod
9     def add_slivers(xml, slivers):
10         if not slivers:
11             return
12         if not isinstance(slivers, list):
13             slivers = [slivers]
14         for sliver in slivers:
15             sliver_elem = Element.add_elements(xml, 'sliver', sliver, ['name'])[0]
16             if sliver.get('sliver_id'):
17                 sliver_id_leaf = Xrn(sliver.get('sliver_id')).get_leaf()
18                 sliver_id_parts = sliver_id_leaf.split(':')
19                 name = sliver_id_parts[0]
20                 sliver_elem.set('name', name)
21             SFAv1PLTag.add_pl_tags(sliver_elem, sliver.get('tags', []))
22                     
23     @staticmethod
24     def get_slivers(xml, filter={}):
25         xpath = './default:sliver | ./sliver'
26         sliver_elems = xml.xpath(xpath)
27         slivers = []
28         for sliver_elem in sliver_elems:
29             sliver = Sliver(sliver_elem.attrib,sliver_elem)
30             if 'component_id' in xml.attrib:     
31                 sliver['component_id'] = xml.attrib['component_id']
32             sliver['tags'] = SFAv1PLTag.get_pl_tags(sliver_elem, ignore=Sliver.fields.keys())
33             slivers.append(sliver)
34         return slivers