Merge Master in geni-v3 conflict resolution
[sfa.git] / sfa / rspecs / versions / pgv3.py
1 from sfa.rspecs.versions.pgv2 import PGv2
2 from sfa.rspecs.elements.v3.node import Node 
3
4 class GENIv3(PGv2):
5     type = 'GENI'
6     content_type = 'ad'
7     version = '3'
8     schema = 'http://www.geni.net/resources/rspec/3/ad.xsd'
9     namespace = 'http://www.geni.net/resources/rspec/3'
10     extensions = {
11         'flack': "http://www.protogeni.net/resources/rspec/ext/flack/1",
12         'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1",
13         'plos': "http://www.planet-lab.org/resources/sfa/ext/plos/1",
14     }
15     namespaces = dict(extensions.items() + [('default', namespace)])
16     elements = []
17
18
19 class GENIv3Ad(GENIv3):
20     enabled = True
21     content_type = 'ad'
22     schema = 'http://www.geni.net/resources/rspec/3/ad.xsd'
23     template = """<rspec type="advertisement" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.geni.net/resources/rspec/3" xmlns:plos="http://www.planet-lab.org/resources/sfa/ext/plos/1" xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xmlns:opstate="http://www.geni.net/resources/rspec/ext/opstate/1" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/ad.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab.xsd http://www.planet-lab.org/resources/sfa/ext/plos/1 http://www.planet-lab.org/resources/sfa/ext/plos/1/plos.xsd http://www.geni.net/resources/rspec/ext/opstate/1 http://www.geni.net/resources/rspec/ext/opstate/1/ad.xsd">
24     <opstate:rspec_opstate aggregate_manager_id="urn:publicid:IDN+plc+authority+cm" start="geni_notready">
25       <opstate:sliver_type name="plab-vserver" />
26       <opstate:sliver_type name="plos-pc" />
27       <opstate:state name="geni_notready">
28         <opstate:action name="geni_start" next="geni_ready">
29           <opstate:description>Boot the node</opstate:description>
30         </opstate:action>
31         <opstate:description>VMs begin powered down or inactive. They
32         must be explicitly booted before use.</opstate:description>
33       </opstate:state>
34       <opstate:state name="geni_ready">
35         <opstate:description>The node is up and ready to use.</opstate:description>
36       </opstate:state>
37       <opstate:state name="geni_failed">
38         <opstate:description>The node has failed and requires administrator
39         intervention before it can be used. Please contact support
40         for assistance.</opstate:description>
41       </opstate:state>
42     </opstate:rspec_opstate>
43 </rspec>"""
44
45 class GENIv3Request(GENIv3):
46     enabled = True
47     content_type = 'request'
48     schema = 'http://www.geni.net/resources/rspec/3/request.xsd'
49     template = '<rspec type="request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.geni.net/resources/rspec/3" xmlns:plos="http://www.planet-lab.org/resources/sfa/ext/plos/1" xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab.xsd http://www.planet-lab.org/resources/sfa/ext/plos/1 http://www.planet-lab.org/resources/sfa/ext/plos/1/plos.xsd"/>'
50
51 class GENIv2Manifest(GENIv3):
52     enabled = True
53     content_type = 'manifest'
54     schema = 'http://www.geni.net/resources/rspec/3/manifest.xsd'
55     template = '<rspec type="manifest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.geni.net/resources/rspec/3" xmlns:plos="http://www.planet-lab.org/resources/sfa/ext/plos/1" xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xmlns:ssh-user="http://www.geni.net/resources/rspec/ext/user/1" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/manifest.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab.xsd http://www.planet-lab.org/resources/sfa/ext/plos/1 http://www.planet-lab.org/resources/sfa/ext/plos/1/plos.xsd http://www.geni.net/resources/rspec/ext/user/1 http://www.geni.net/resources/rspec/ext/user/1/manifest.xsd"/>'
56
57
58     def add_nodes(self, nodes, check_for_dupes=False):
59         return Node.add_nodes(self.xml, nodes)
60     
61     def get_nodes(self, filter=None):
62         return Node.get_nodes(self.xml, filter)