Commit dc292211 authored by Tarun Prabhu's avatar Tarun Prabhu

Changed the interface elements in the link spec to attributes to make it...

Changed the interface elements in the link spec to attributes to make it consistent with the interface spec in the nodes.
parent 1e9ab6f4
...@@ -10,31 +10,36 @@ ...@@ -10,31 +10,36 @@
include "../../assign/top.rnc" { include "../../assign/top.rnc" {
NodeContents = NodeContents =
# The virtual id of an element may be human readable.
# The virtual id of an element may be human readable.
# In an advertisement, the component_uuid provides a primary # In an advertisement, the component_uuid provides a primary
# key which uniquely designates a node. # key which uniquely designates a node.
# In a request, the virtual_uuid is the primary key. # In a request, the virtual_id is the primary key.
# The primary key must be globally unique. # The primary key must be globally unique.
# The primary key is used when identifying link inputs, for example. # The primary key is used when identifying link inputs, for example.
attribute virtual_id { text }?, attribute virtual_id { text }?,
# Each node has exactly one virtualization technology, which we simply
# enumerate here
attribute virtualization_type { "raw" | "trellis-vserver" |
"planetlab-vserver" | "emulab-vnode" }?,
# The mapping to components/slivers. Required for advertisements. # The mapping to components/slivers. Required for advertisements.
ComponentSpec?, ComponentSpec?,
# Each node has exactly one virtualization technology, which we simply NodeSpec.NodeType,
# enumerate here
attribute virtualization_type { "raw" | "trellis-vserver" |
"planetlab-vserver" | "emulab-vnode" }?,
NodeSpec.NodeType,
# Information about the physical location of the node. # Information about the physical location of the node.
LocationSpec?, LocationSpec?,
# Indicate whether or not this node is available - the idea is that a # Indicate whether or not this node is available - the idea is that a
# full dump of the static physical topology will not include this, but # full dump of the static physical topology will not include this, but
# that we can later get updates that include only this attribute (and a # that we can later get updates that include only this attribute (and a
# UUID) Just binary for now - probably will include more things, such # UUID) Just binary for now - probably will include more things, such
# as a number of "free slots", later # as a number of "free slots", later
element available { xsd:boolean }?, element available { xsd:boolean }?,
InterfaceDecl* InterfaceDecl*
LinkContents = LinkContents =
...@@ -42,23 +47,24 @@ include "../../assign/top.rnc" { ...@@ -42,23 +47,24 @@ include "../../assign/top.rnc" {
attribute virtual_id { text }?, attribute virtual_id { text }?,
attribute virtualization_type { "raw" | "trellis-vserver" | attribute virtualization_type { "raw" | "trellis-vserver" |
"planetlab-vserver" | "emulab-vnode" }?, "planetlab-vserver" | "emulab-vnode" }?,
# These will only be present in annotated rspecs ComponentSpec?,
(SingleHopComponentSpec | MultiHopComponentSpec)?, LinkEndPoints,
LinkEndPoints,
## The characteristics (bandwidth, latency, loss) which affect traffic. ## The characteristics (bandwidth, latency, loss) which affect traffic.
LinkCharacteristics, LinkCharacteristics,
## Type of this link - we use a named pattern here (defined below), so ## Type of this link - we use a named pattern here (defined below), so
## that it can be overriden in the virtual topology schema, where you are ## that it can be overriden in the virtual topology schema, where you are
## only allowed to have one ## only allowed to have one
LinkSpec.LinkType+ LinkSpec.LinkType+,
# These will only be present in annotated rspecs
(SingleHopComponentSpec | MultiHopComponentSpec)?
InterfaceContents = InterfaceContents =
# In an advertisement, the component_uuid is mandatory. # In an advertisement, the component_uuid is mandatory.
# In a request, the virtual_id is mandatory. # In a request, the virtual_id is mandatory.
element virtual_node_id { text }?, attribute virtual_node_id { text }?,
element virtual_interface_name { text }?, attribute virtual_interface_name { text }?,
element component_node_uuid { text }?, attribute component_node_uuid { text }?,
element component_interface_name { text }? attribute component_interface_name { text }?
} }
LocationSpec = element location { LocationSpec = element location {
...@@ -89,12 +95,11 @@ ComponentSpec = ...@@ -89,12 +95,11 @@ ComponentSpec =
# virtual_id requests and the actual slivers instantiated. # virtual_id requests and the actual slivers instantiated.
attribute sliver_uuid { text }? attribute sliver_uuid { text }?
SingleHopComponentSpec = element single_hop_link { element link {ComponentSpec, LinkEndPoints } } SingleHopComponentSpec = element single_hop_link { element link { ComponentSpec, LinkEndPoints } }
MultiHopComponentSpec = element multi_hop_link { MultiHopComponentSpec = element multi_hop_link {
element link { ComponentSpec, LinkEndPoints}, (element link { ComponentSpec, LinkEndPoints}
(element node { ComponentSpec }, | element node { ComponentSpec })+
element link { ComponentSpec, LinkEndPoints})+
} }
RSpec = element rspec { RSpec = element rspec {
......
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