Merge branch 'master' into senslab2
[sfa.git] / sfa / managers / senslab / sl.rng
1 <?xml version="1.0" encoding="UTF-8"?>
2 <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3   <start>
4     <ref name="RSpec"/>
5   </start>
6   <define name="RSpec">
7     <element name="RSpec">
8       <attribute name="type">
9         <data type="NMTOKEN"/>
10       </attribute>
11       <choice>
12         <ref name="network"/>
13         <ref name="request"/>
14       </choice>
15     </element>
16   </define>
17   <define name="network">
18     <element name="network">
19       <attribute name="name">
20         <data type="NMTOKEN"/>
21       </attribute>
22       <optional>
23         <attribute name="slice">
24           <data type="NMTOKEN"/>
25         </attribute>
26       </optional>
27       <optional>
28         <ref name="sliver_defaults"/>
29       </optional>
30       <oneOrMore>
31         <ref name="site"/>
32       </oneOrMore>
33     </element>
34   </define>
35   <define name="sliver_defaults">
36     <element name="sliver_defaults">
37       <ref name="sliver_elements"/>
38     </element>
39   </define>
40   <define name="site">
41     <element name="site">
42       <attribute name="id">
43         <data type="ID"/>
44       </attribute>
45       <element name="name">
46         <text/>
47       </element>
48       <zeroOrMore>
49         <ref name="node"/>
50       </zeroOrMore>
51     </element>
52   </define>
53   <define name="node">
54     <element name="node">
55       <attribute name="node_id">
56         <data type="ID"/>
57       </attribute>
58       <element name="hostname">
59         <text/>
60       </element> 
61       <attribute name="reservable">
62         <data type="boolean"/>
63       </attribute>
64       <element name="ip_address">
65         <text/>
66       </element>
67       <optional>
68         <element name="urn">
69             <text/>
70         </element>
71       </optional>
72       <optional>
73         <ref name="leases"/>
74        </optional>
75       <optional>
76         <ref name="sliver"/>
77        </optional>
78     </element>
79   </define>
80   <define name="request">
81     <element name="request">
82       <attribute name="name">
83         <data type="NMTOKEN"/>
84       </attribute>
85       <optional>
86         <ref name="sliver_defaults"/>
87       </optional>
88       <oneOrMore>
89         <ref name="sliver"/>
90       </oneOrMore>
91     </element>
92   </define>
93   <define name="sliver">
94     <element name="sliver">
95       <optional>
96         <attribute name="nodeid">
97           <data type="ID"/>
98         </attribute>
99       </optional>
100       <ref name="sliver_elements"/>
101     </element>
102   </define>
103   <define name="sliver_elements">
104     <interleave>
105       <optional>
106         <element name="capabilities">
107           <text/>
108         </element>
109       </optional>
110       <optional>
111         <element name="delegations">
112           <text/>
113         </element>
114       </optional>
115       <optional>
116         <element name="program">
117           <text/>
118         </element>
119       </optional>     
120       </interleave>
121   </define>
122  <define name="leases">
123     <element name="leases">
124       <zeroOrMore>
125        <group>
126         <attribute name="slot"/>
127           <data type="dateTime"/>
128         </attribute>
129         <attribute name="slice">
130           <data type="NMTOKEN"/>
131         </attribute>
132        </group>
133       </zeroOrMore>
134 </grammar>