bugfixes
[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, slivers):
8         if not slivers:
9             return 
10         if not isinstance(slivers, list):
11             slivers = [slivers]
12         for sliver in slivers: 
13             sliver_elem = Element.add_elements(xml, 'sliver_type', sliver, ['type', 'client_id'])
14             PGv2SliverType.add_sliver_attributes(sliver_elem, sliver.get('pl_tags', []))
15     
16     @staticmethod
17     def add_sliver_attributes(xml, attributes):
18         for attribute in attributes:
19             if attribute['name'] == 'initscript':
20                 xml.add_element('{%s}initscript' % xml.namespaces['planetlab'], name=attribute['value'])
21             elif tag['tagname'] == 'flack_info':
22                 attrib_elem = xml.add_element('{%s}info' % self.namespaces['flack'])
23                 attrib_dict = eval(tag['value'])
24                 for (key, value) in attrib_dict.items():
25                     attrib_elem.set(key, value)                
26     @staticmethod
27     def get_slivers(xml, filter={}):
28         xpath = './default:sliver_type | ./sliver_type'
29         sliver_elems = xml.xpath(xpath)
30         slivers = []
31         for sliver_elem in sliver_elems:
32             sliver = Sliver(sliver_elem.attrib,sliver_elem)
33             if 'component_id' in xml.attrib:     
34                 sliver['component_id'] = xml.attrib['component_id']
35             slivers.append(sliver)
36         return slivers
37
38     @staticmethod
39     def get_sliver_attributes(xml, filter={}):
40         return []