include opstates in ad rspec. include ssh-user in manifest rspec
[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.protogeni.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_configuring">
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_configuring">
35         <opstate:wait type="geni_success" next="geni_ready" />
36         <opstate:wait type="geni_failure" next="geni_failed" />
37         <opstate:description>Booting takes a significant amount of time, so it
38         happens asynchronously while the node is in this
39         state.</opstate:description>
40       </opstate:state>
41       <opstate:state name="geni_ready">
42         <opstate:description>The node is up and ready to use.</opstate:description>
43       </opstate:state>
44       <opstate:state name="geni_failed">
45         <opstate:description>The node has failed and requires administrator
46         intervention before it can be used. Please contact support
47         for assistance.</opstate:description>
48       </opstate:state>
49     </opstate:rspec_opstate>
50 </rspec>"""
51
52 class GENIv3Request(GENIv3):
53     enabled = True
54     content_type = 'request'
55     schema = 'http://www.geni.net/resources/rspec/3/request.xsd'
56     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"/>'
57
58 class GENIv2Manifest(GENIv3):
59     enabled = True
60     content_type = 'manifest'
61     schema = 'http://www.geni.net/resources/rspec/3/manifest.xsd'
62     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"/>'
63
64
65     def add_nodes(self, nodes, check_for_dupes=False):
66         return Node.add_nodes(self.xml, nodes)
67     
68     def get_nodes(self, filter=None):
69         return Node.get_nodes(self.xml, filter)