Unify with new PL RSpec format
authorAndy Bavier <acb@cs.princeton.edu>
Mon, 8 Feb 2010 21:37:10 +0000 (21:37 +0000)
committerAndy Bavier <acb@cs.princeton.edu>
Mon, 8 Feb 2010 21:37:10 +0000 (21:37 +0000)
sfa/managers/vini/vini.rnc
sfa/managers/vini/vini.rng

index bcd986d..b94bd6b 100644 (file)
@@ -6,36 +6,63 @@ RSpec = element RSpec {
 network = element network {
    attribute name { xsd:NMTOKEN },
    attribute slice { xsd:NMTOKEN }?,
-   ( site | link )+
+   sliver_defaults?,
+   site+,
+   link*
+}
+sliver_defaults = element sliver_defaults {
+   sliver_elements
 }
 site = element site { 
    attribute id { xsd:ID },
    element name { text },
-   node
+   node*
 }
 node = element node {
    attribute id { xsd:ID },
-   hostname,
-   kbps,
+   element hostname { text },
+   element bw_unallocated { attribute units { xsd:NMTOKEN }, text }?,
+   element bw_limit { attribute units { xsd:NMTOKEN }, text }?,
    sliver*
 }
 link = element link { 
    attribute endpoints { xsd:IDREFS },
    element description { text }?,
-   kbps?,
+   element bw_unallocated { attribute units { xsd:NMTOKEN }, text },
    vlink*
 }
 request = element request {
-   ( sliver | vlink )+
+   sliver+,
+   vlink*
 }
 sliver = element sliver { 
    attribute nodeid { xsd:ID }?,
-   empty
+   sliver_elements
 }
+sliver_elements = ( 
+   element capabilities { text }? 
+ & element codemux { text }* 
+ & element cpu_pct { text }?
+ & element cpu_share { text }?
+ & element delegations { text }?
+ & element disk_max { text }?
+ & element initscript { text }?
+ & element ip_addresses {text }*
+ & element net_i2_max_kbyte { text }?
+ & element net_i2_max_rate { text }?
+ & element net_i2_min_rate { text }?
+ & element net_i2_share { text }?
+ & element net_i2_thresh_kbyte { text }?
+ & element net_max_kbyte { text }?
+ & element net_max_rate { text }?
+ & element net_min_rate { text }?
+ & element net_share { text }?
+ & element net_thresh_kbyte { text }?
+ & element vsys {text}*
+ & element vsys_vnet { text }?
+)
 vlink = element vlink { 
    attribute endpoints { xsd:IDREFS }?,
    element description { text }?,
-   kbps
+   element bw { attribute units { xsd:NMTOKEN }, text }
 }
-hostname = element hostname { text }
-kbps = element kbps { text }
index f7585fa..b7f3cc9 100644 (file)
           <data type="NMTOKEN"/>
         </attribute>
       </optional>
+      <optional>
+        <ref name="sliver_defaults"/>
+      </optional>
       <oneOrMore>
-        <choice>
-          <ref name="site"/>
-          <ref name="link"/>
-        </choice>
+        <ref name="site"/>
       </oneOrMore>
+      <zeroOrMore>
+        <ref name="link"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <define name="sliver_defaults">
+    <element name="sliver_defaults">
+      <ref name="sliver_elements"/>
     </element>
   </define>
   <define name="site">
@@ -40,9 +48,9 @@
       <element name="name">
         <text/>
       </element>
-      <oneOrMore>
+      <zeroOrMore>
         <ref name="node"/>
-      </oneOrMore>
+      </zeroOrMore>
     </element>
   </define>
   <define name="node">
       <attribute name="id">
         <data type="ID"/>
       </attribute>
-      <ref name="hostname"/>
-      <ref name="kbps"/>
+      <element name="hostname">
+        <text/>
+      </element>
+      <optional>
+        <element name="bw_unallocated">
+          <attribute name="units">
+            <data type="NMTOKEN"/>
+          </attribute>
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="bw_limit">
+          <attribute name="units">
+            <data type="NMTOKEN"/>
+          </attribute>
+          <text/>
+        </element>
+      </optional>
       <zeroOrMore>
         <ref name="sliver"/>
       </zeroOrMore>
           <text/>
         </element>
       </optional>
-      <optional>
-        <ref name="kbps"/>
-      </optional>
+      <element name="bw_unallocated">
+        <attribute name="units">
+          <data type="NMTOKEN"/>
+        </attribute>
+        <text/>
+      </element>
       <zeroOrMore>
         <ref name="vlink"/>
       </zeroOrMore>
   <define name="request">
     <element name="request">
       <oneOrMore>
-        <choice>
-          <ref name="sliver"/>
-          <ref name="vlink"/>
-        </choice>
+        <ref name="sliver"/>
       </oneOrMore>
+      <zeroOrMore>
+        <ref name="vlink"/>
+      </zeroOrMore>
     </element>
   </define>
   <define name="sliver">
           <data type="ID"/>
         </attribute>
       </optional>
-      <empty/>
+      <ref name="sliver_elements"/>
     </element>
   </define>
+  <define name="sliver_elements">
+    <interleave>
+      <optional>
+        <element name="capabilities">
+          <text/>
+        </element>
+      </optional>
+      <zeroOrMore>
+        <element name="codemux">
+          <text/>
+        </element>
+      </zeroOrMore>
+      <optional>
+        <element name="cpu_pct">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="cpu_share">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="delegations">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="disk_max">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="initscript">
+          <text/>
+        </element>
+      </optional>
+      <zeroOrMore>
+        <element name="ip_addresses">
+          <text/>
+        </element>
+      </zeroOrMore>
+      <optional>
+        <element name="net_i2_max_kbyte">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_i2_max_rate">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_i2_min_rate">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_i2_share">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_i2_thresh_kbyte">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_max_kbyte">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_max_rate">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_min_rate">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_share">
+          <text/>
+        </element>
+      </optional>
+      <optional>
+        <element name="net_thresh_kbyte">
+          <text/>
+        </element>
+      </optional>
+      <zeroOrMore>
+        <element name="vsys">
+          <text/>
+        </element>
+      </zeroOrMore>
+      <optional>
+        <element name="vsys_vnet">
+          <text/>
+        </element>
+      </optional>
+    </interleave>
+  </define>
   <define name="vlink">
     <element name="vlink">
       <optional>
         </element>
       </optional>
       <optional>
-        <ref name="kbps"/>
+        <element name="bw">
+          <attribute name="units">
+            <data type="NMTOKEN"/>
+          </attribute>
+          <text/>
+        </element>
       </optional>
     </element>
   </define>
-  <define name="hostname">
-    <element name="hostname">
-      <text/>
-    </element>
-  </define>
-  <define name="kbps">
-    <element name="kbps">
-      <text/>
-    </element>
-  </define>
 </grammar>