refactored
[sfa.git] / sfa / rspecs / elements / versions / pgv2SliverType.py
1 from sfa.rspecs.elements.element import Element
2 from sfa.rspecs.elements.sliver import Sliver
3
4 class PGv2SliverType:
5
6     @staticmethod
7     def add_slivers(xml, sliver):
8         if not isinstance(slivers, list):
9             slivers = [slivers]
10         for sliver in slivers: 
11             sliver_elem = Element.add(xml, 'sliver_type', sliver, ['type', 'client_id'])
12             for tag in sliver.get('tags', []):
13                 if tag['name'] == 'initscript':
14                     sliver_elem.add_element('{%s}initscript' % xml.namespaces['planetlab'], name=tag['value'])
15                     
16     @staticmethod
17     def get_slivers(xml, filter={}):
18         xpath = './default:sliver_type | ./sliver_type'
19         sliver_elems = xml.xpath(xpath)
20         slivers = []
21         for sliver_elem in sliver_elems:
22             sliver = Sliver(sliver_elem.attrib,sliver_elm)
23             if 'component_id' in xml.attrib:     
24                 sliver['component_id'] = xml.attrib['component_id']
25             slivers.append(sliver)
26         return slivers