Commit dcff3b70 authored by Tarun Prabhu's avatar Tarun Prabhu

Added support for desire policies and modified the fixed interface spec

parent be04644b
......@@ -14,6 +14,17 @@ NodeFlagSpec =
## Valid only for physical nodes
element emulab:unique { empty }?
## Specifies various policies.
## For now, the only ones supported are for desires,
## where they are either disallowed or have some limit associated with them
PolicySpec =
element emulab:policy { PolicySpecContents }
PolicySpecContents =
attribute type { "desire" } &
attribute limit { "disallow" | xsd:float { minInclusive = "0.0" } }
## The maximum number of a given type that can be requested by a user
TypeLimitSpec =
element emulab:set_type_limit { TypeLimitContents }
......@@ -21,4 +32,10 @@ TypeLimitContents =
attribute typeclass { text } &
attribute count { xsd:integer }
start = NodeFlagSpec | FeatureDesireSpec | TypeLimitSpec
\ No newline at end of file
## This only specifies the interface name as assign understands it.
## The same information is present in the link name, but it is included here
## for robustness. We need it to handle fixed interfaces
InterfaceSpec = element emulab:interface { attribute name { text } }
start = NodeFlagSpec | FeatureDesireSpec | TypeLimitSpec | PolicySpec
| InterfaceSpec
\ No newline at end of file
......@@ -14,15 +14,13 @@ namespace emulab = "http://www.protogeni.net/resources/rspec/ext/emulab/1"
#
include "top_extension.rnc"
## Provides hints to assign regarding the physical node to which this
## virtual node should be mapped
HintToSpec = element emulab:hint_to { attribute value { text } }?
## "Legacy" assign node flags - will be replaced with properties, and in some
## cases, explicit links
NodeFlagSpec =
## Specify that this node is a subnode of another node. We MIGHT
## try to do this with properties in the future
## Valid for both virtual and physical nodes
element emulab:subnode_of { text }? &
## Indicates that virtual links must either all be trivial (loopback), or
## none of them must be. Possibly expressible with properties?
element emulab:disallow_trivial_mix { empty }?
......@@ -32,19 +30,21 @@ LinkFlagSpec =
## Indicates that it is not okay to use a delay node to artificially
## shape/delay traffic for this link. Replace by using type system.
element emulab:nodelay { empty }? &
## Indicates whether it is okay to multiplex this link with other virtual
## links onto the same physical link (old name: emulated) Probably replace
## by using the type system (ie. have an 'Ethernet' type that can only
## hold one slot, and an 'Ethernet-tagged' type that can hold more).
element emulab:multiplex_ok { empty }? &
## Indicates whether it is okay to satisfy this link with a trivial
## (loopback) link. Replace using type system.
element emulab:trivial_ok { empty }? &
## Gives the name of the interface that must be used to satisfy the source
## of this link - note that the interface name is given, not the node name
element emulab:fixsrciface { string }? &
## Same as fixsrciface, for destination of the link
element emulab:fixdstiface { string }?
## Gives the name of the interface that must be used to satisfy the source
## of this link - note that the interface name is given, not the node name
FixedInterfaceSpec =
element emulab:fixedinterface { attribute name { text } }
## Specify a virtual class - assign allows you to define classes for virtual
## nodes, and specify that all nodes using that class should, or must, be
......@@ -59,5 +59,6 @@ VclassSpec = element emulab:vclass {
element emulab:physical_type { attribute name { text } }+
}
start = HintToSpec | NodeFlagSpec | LinkFlagSpec | VclassSpec
start = HintToSpec | NodeFlagSpec | LinkFlagSpec | VclassSpec
| FixedInterfaceSpec
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment