GENIMetaOps: gmocv3.rng

File gmocv3.rng, 13.2 KB (added by luke@grnoc.iu.edu, 7 years ago)
Line 
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    <element name="gmoc_topology">
5      <ref name="gmoc-topo-content"/>
6    </element>
7  </start>
8
9  <define name="gmoc-topo-content">
10    <attribute name="version">
11      <data type="integer"/>
12    </attribute>
13    <attribute name="time">
14      <data type="integer"/>
15    </attribute>
16    <zeroOrMore>
17      <element name="location">
18        <ref name="location-content"/>
19      </element>
20    </zeroOrMore>
21    <zeroOrMore>
22      <element name="contact">
23        <ref name="contact-content"/>
24      </element>
25    </zeroOrMore>
26    <zeroOrMore>
27      <element name="organization">
28        <ref name="organization-content"/>
29      </element>
30    </zeroOrMore>
31    <zeroOrMore>
32      <choice>
33        <element name="point_of_presence">
34          <ref name="pop-content-old"/>
35        </element>
36        <element name="pop">
37          <ref name="pop-content"/>
38        </element>
39      </choice>
40    </zeroOrMore>
41    <zeroOrMore>
42      <element name="sa">
43        <ref name="sa-content"/>
44      </element>
45    </zeroOrMore>
46    <zeroOrMore>
47      <element name="aggregate">
48        <ref name="aggregate-content"/>
49      </element>
50    </zeroOrMore>
51    <zeroOrMore>
52      <element name="slice">
53        <ref name="slice-content-old"/>
54      </element>
55    </zeroOrMore>
56    <zeroOrMore>
57      <choice>
58        <element name="device">
59          <ref name="device-content"/>
60        </element>
61        <element name="resource">
62          <ref name="resource-content"/>
63        </element>
64      </choice>
65    </zeroOrMore>
66    <zeroOrMore>
67      <element name="net_topology">
68        <ref name="net_topology-content"/>
69      </element>
70    </zeroOrMore>
71  </define>
72
73  <define name="location-content">
74    <attribute name="name"/>
75    <choice>
76      <element name="address">
77        <ref name="address-content"/>
78      </element>
79      <element name="geo_location">
80        <ref name="geo_location-content"/>
81      </element>
82      <group>
83        <element name="address">
84          <ref name="address-content"/>
85        </element>
86        <element name="geo_location">
87          <ref name="geo_location-content"/>
88        </element>
89      </group>
90    </choice>
91  </define>
92
93  <define name="address-content">
94    <optional>
95      <choice>
96        <attribute name="address"/>
97        <attribute name="street1"/>
98      </choice>
99    </optional>
100    <optional>
101      <attribute name="street2"/>
102    </optional>
103    <attribute name="city"/>
104    <choice>
105      <attribute name="province"/>
106      <attribute name="state"/>
107    </choice>
108    <attribute name="country"/>
109    <optional>
110      <attribute name="postal_code"/>
111    </optional>
112  </define>
113
114  <define name="geo_location-content">
115    <attribute name="latitude">
116      <data type="double"/>
117    </attribute>
118    <attribute name="longitude">
119      <data type="double"/>
120    </attribute>
121  </define>
122
123  <define name="contact-content">
124    <optional>
125      <attribute name="urn"/>
126    </optional>
127    <choice>
128      <attribute name="email_address"/>
129      <attribute name="email"/>
130    </choice>
131    <attribute name="last_name"/>
132    <choice>
133      <attribute name="given_names"/>
134      <attribute name="given_name"/>
135    </choice>
136    <optional>
137      <attribute name="phone"/>
138    </optional>
139    <optional>
140      <choice>
141        <attribute name="organization_name"/>
142        <attribute name="organization"/>
143      </choice>
144    </optional>
145  </define>
146
147  <define name="organization-content">
148    <optional>
149      <attribute name="urn"/>
150    </optional>
151    <optional>
152      <attribute name="type"/>
153    </optional>
154    <attribute name="name"/>
155    <attribute name="primary_contact"/>
156    <optional>
157      <attribute name="secondary_contact"/>
158    </optional>
159    <choice>
160      <attribute name="location_name"/>
161      <attribute name="location"/>
162    </choice>
163  </define>
164
165  <define name="sa-content">
166    <attribute name="name"/>
167    <attribute name="urn"/>
168    <attribute name="type"/>
169    <attribute name="version"/>
170    <attribute name="pop"/>
171    <attribute name="organization"/>
172    <zeroOrMore>
173      <element name="slice">
174        <ref name="slice-content"/>
175      </element>
176    </zeroOrMore>
177    <zeroOrMore>
178      <element name="user">
179        <ref name="user-content"/>
180      </element>
181    </zeroOrMore>
182  </define>
183
184  <define name="aggregate-content">
185    <attribute name="type"/>
186    <attribute name="name"/>
187    <attribute name="version"/>
188    <attribute name="pop"/>
189    <attribute name="organization"/>
190    <zeroOrMore>
191      <element name="sliver">
192        <ref name="sliver-content"/>
193      </element>
194    </zeroOrMore>
195  </define>
196
197  <define name="sliver-content">
198    <attribute name="local_name"/>
199    <attribute name="uuid"/>
200    <attribute name="created">
201      <data type="integer"/>
202    </attribute>
203    <attribute name="expires">
204      <data type="integer"/>
205    </attribute>
206    <attribute name="creator"/>
207    <attribute name="slice_urn"/>
208    <attribute name="slice_uuid"/>
209    <attribute name="state">
210      <choice>
211        <value>Up</value>
212        <value>Down</value>
213        <value>Degraded</value>
214        <value>Unknown</value>
215      </choice>
216    </attribute>
217    <optional>
218      <attribute name="approved"/>
219    </optional>
220    <zeroOrMore>
221      <element name="resource_mapping">
222        <ref name="resource-mapping-content"/>
223      </element>
224    </zeroOrMore>
225  </define>
226
227  <define name="resource-mapping-content">
228    <attribute name="resource"/>
229    <attribute name="type"/>
230    <attribute name="local_name"/>
231  </define>
232
233  <define name="resource-content">
234    <attribute name="type"/>
235    <attribute name="name"/>
236    <optional>
237      <attribute name="aggregate"/>
238    </optional>
239    <attribute name="pop"/>
240    <attribute name="organization"/>
241    <attribute name="description"/>
242    <zeroOrMore>
243      <element name="interface">
244        <ref name="interface-content"/>
245      </element>
246    </zeroOrMore>
247  </define>
248
249  <define name="interface-content">
250    <attribute name="name"/>
251    <optional>
252      <attribute name="parent"/>
253    </optional>
254    <optional>
255      <attribute name="contracted_bw">
256        <data type="double"/>
257      </attribute>
258    </optional>
259    <optional>
260      <attribute name="max_bps">
261        <data type="integer"/>
262      </attribute>
263    </optional>
264    <optional>
265      <attribute name="state">
266        <choice>
267          <value>Up</value>
268          <value>Down</value>
269          <value>Degraded</value>
270          <value>Unknown</value>
271        </choice>
272      </attribute>
273    </optional>
274    <optional>
275      <attribute name="admin_state">
276        <choice>
277          <value>Planning</value>
278          <value>Provisioning</value>
279          <value>Available</value>
280          <value>NormalOperation</value>
281          <value>Maintenance</value>
282          <value>Unknown</value>
283          <value>Decomissioned</value>
284        </choice>
285      </attribute>
286    </optional>
287    <zeroOrMore>
288      <element name="address">
289        <ref name="interface-address-content"/>
290      </element>
291    </zeroOrMore>
292    <zeroOrMore>
293      <element name="vlan">
294        <data type="integer"/>
295      </element>
296    </zeroOrMore>
297  </define>
298
299  <define name="interface-address-content">
300    <attribute name="type">
301      <choice>
302        <value>MAC</value>
303        <value>IPv4</value>
304        <value>IPv6</value>
305      </choice>
306    </attribute>
307    <optional>
308      <attribute name="netmask_len"/>
309    </optional>
310    <data type="string"/>
311  </define>
312
313  <define name="slice-content">
314    <attribute name="urn"/>
315    <optional>
316      <attribute name="uuid"/>
317    </optional>
318    <optional>
319      <attribute name="created">
320        <data type="integer"/>
321      </attribute>
322    </optional>
323    <optional>
324      <attribute name="expires">
325        <data type="integer"/>
326      </attribute>
327    </optional>
328    <optional>
329      <attribute name="creator"/>
330    </optional>
331    <attribute name="operator"/>
332    <attribute name="primary_contact"/>
333  </define>
334
335  <define name="user-content">
336    <attribute name="urn"/>
337  </define>
338
339  <define name="slice-content-old">
340    <attribute name="name"/>
341    <attribute name="operator_org_name"/>
342    <attribute name="primary_contact_email"/>
343  </define>
344
345  <define name="pop-content-old">
346    <attribute name="name"/>
347    <attribute name="location_name"/>
348    <attribute name="operator_org_name"/>
349    <optional>
350      <attribute name="admin_org_name"/>
351    </optional>
352  </define>
353
354  <define name="pop-content">
355    <attribute name="name"/>
356    <attribute name="location"/>
357    <attribute name="operator"/>
358    <optional>
359      <attribute name="admin"/>
360    </optional>
361  </define>
362
363  <define name="device-content">
364    <attribute name="name"/>
365    <element name="device_location">
366      <ref name="device_location-content"/>
367    </element>
368    <attribute name="operator_org_name"/>
369    <optional>
370      <attribute name="admin_org_name"/>
371    </optional>
372    <attribute name="device_type"/>
373    <optional>
374      <attribute name="sw_version"/>
375    </optional>
376    <optional>
377      <attribute name="hw_version"/>
378    </optional>
379    <optional>
380      <attribute name="dns_name"/>
381    </optional>
382    <optional>
383      <attribute name="operational_state">
384        <ref name="operational_state-type"/>
385      </attribute>
386    </optional>
387    <optional>
388      <attribute name="administrative_state">
389        <ref name="administrative_state-type"/>
390      </attribute>
391    </optional>
392    <zeroOrMore>
393      <element name="interface">
394        <ref name="interface-content-old"/>
395      </element>
396    </zeroOrMore>
397  </define>
398
399  <define name="device_location-content">
400    <choice>
401      <attribute name="pop_name"/>
402      <attribute name="parent_device_name"/>
403    </choice>
404  </define>
405
406  <define name="interface-content-old">
407    <attribute name="name"/>
408    <optional>
409      <attribute name="contracted_bw">
410        <data type="double"/>
411      </attribute>
412    </optional>
413    <optional>
414      <attribute name="max_bps">
415        <data type="double"/>
416      </attribute>
417    </optional>
418    <optional>
419      <attribute name="administrative_state">
420        <ref name="administrative_state-type"/>
421      </attribute>
422    </optional>
423    <optional>
424      <attribute name="operational_state">
425        <ref name="operational_state-type"/>
426      </attribute>
427    </optional>
428    <zeroOrMore>
429      <element name="net_addr">
430        <ref name="net_addr-content"/>
431      </element>
432    </zeroOrMore>
433    <zeroOrMore>
434      <element name="slice_name">
435        <text/>
436      </element>
437    </zeroOrMore>
438  </define>
439
440  <define name="net_addr-content">
441    <attribute name="net_addr_type">
442      <choice>
443        <value>IPv4</value>
444        <value>IPv6</value>
445        <value>MAC</value>
446      </choice>
447    </attribute>
448    <attribute name="addr"/>
449    <optional>
450      <attribute name="netmask_len">
451        <data type="integer"/>
452      </attribute>
453    </optional>
454  </define>
455
456  <define name="administrative_state-type">
457    <data type="string">
458      <param name="pattern">Planning|Provisioning|Available|Assigned|Maintenance|Unknown|Decomissioned</param>
459    </data>
460  </define>
461
462  <define name="operational_state-type">
463    <data type="string">
464      <param name="pattern">Up|Degraded|Down|Unknown</param>
465    </data>
466  </define>
467
468  <define name="net_topology-content">
469    <oneOrMore>
470      <element name="network">
471        <ref name="network-content"/>
472      </element>
473    </oneOrMore>
474    <zeroOrMore>
475      <element name="circuit_hierarchy">
476        <ref name="circuit_hierarchy-content"/>
477      </element>
478    </zeroOrMore>
479  </define>
480
481  <define name="network-content">
482    <attribute name="name"/>
483    <attribute name="operator_org_name"/>
484    <optional>
485      <attribute name="admin_org_name"/>
486    </optional>
487    <zeroOrMore>
488      <element name="circuit">
489        <ref name="circuit-content"/>
490      </element>
491    </zeroOrMore>
492  </define>
493
494  <define name="circuit-content">
495    <attribute name="name"/>
496    <optional>
497      <attribute name="type">
498        <choice>
499          <value>unspecified</value>
500          <value>100ME</value>
501          <value>1GE</value>
502          <value>10GE</value>
503          <value>ETHCHAN</value>
504          <value>OC12</value>
505          <value>OC48</value>
506          <value>OC192</value>
507          <value>CHAN</value>
508          <value>VLAN</value>
509          <value>802.11</value>
510        </choice>
511      </attribute>
512    </optional>
513    <optional>
514      <attribute name="administrative_state">
515        <ref name="administrative_state-type"/>
516      </attribute>
517    </optional>
518    <optional>
519      <attribute name="channel">
520        <data type="integer"/>
521      </attribute>
522    </optional>
523    <optional>
524      <attribute name="reserved_bw">
525        <data type="integer"/>
526      </attribute>
527    </optional>
528    <optional>
529      <attribute name="vlan">
530        <data type="integer"/>
531      </attribute>
532    </optional>
533    <zeroOrMore>
534      <element name="endpoint">
535        <ref name="circuit_endpoint-content"/>
536      </element>
537    </zeroOrMore>
538  </define>
539
540  <define name="circuit_endpoint-content">
541    <attribute name="device_name"/>
542    <attribute name="interface_name"/>
543  </define>
544
545  <define name="circuit_hierarchy-content">
546    <element name="upper_circuit_name">
547      <text/>
548    </element>
549    <element name="lower_circuit_name">
550      <text/>
551    </element>
552  </define>
553</grammar>