Commit d2db71e4 authored by Jonathon Duerig's avatar Jonathon Duerig

Changed naming of a few things as per Rob. Moved path interface data from...

Changed naming of a few things as per Rob. Moved path interface data from intermediate nodes to intermediate links.
parent 2f7c661a
......@@ -9,7 +9,6 @@
#
include "../../assign/top.rnc" {
# Add some more stuff to nodes
NodeContents =
# Semantic change - the 'name' of a node is now
# solely for human-readability.
......@@ -18,10 +17,10 @@ include "../../assign/top.rnc" {
# In a request, the virtual_uuid is the primary key.
# The primary key must be globally unique.
# The primary key is used when identifying link inputs, for example.
attribute name { text }?,
attribute virtual_name { text }?,
attribute virtual_uuid { text }?,
# The mapping to components/slivers. Required for advertisements.
Mapping?,
ComponentSpec?,
# Each node has exactly one virtualization technology, which we simply
# enumerate here
......@@ -36,15 +35,13 @@ include "../../assign/top.rnc" {
# as a number of "free slots", later
element available { xsd:boolean }?,
InterfaceDecl*
# Optionally, include the URL for this component's CM
#CMURLSpec?
LinkContents =
# Semantic change - the 'name' of a link is now
# solely for human-readability.
attribute name { text }?,
attribute virtual_name { text }?,
attribute virtual_uuid { text }?,
(LinkMapping | PathMapping)?,
(LinkComponentSpec | PathComponentSpec)?,
LinkEndPoints,
## The characteristics (bandwidth, latency, loss) which affect traffic.
LinkCharacteristics,
......@@ -52,7 +49,6 @@ include "../../assign/top.rnc" {
## that it can be overriden in the virtual topology schema, where you are
## only allowed to have one
LinkSpec.LinkType
# TODO: Might add a URL for the CM for a link in the future
InterfaceContents =
# In an advertisement, the component_uuid is mandatory.
......@@ -63,15 +59,16 @@ include "../../assign/top.rnc" {
element component_interface_name { text }?
}
# InterfaceDecl is for declaration of interfaces inside of a node.
InterfaceDecl = element interface {
attribute name { text }
attribute name { text }
}
Mapping =
ComponentSpec =
# This is the uuid of the aggregate that this node or link belongs
# to. It is required in an advertisement.
attribute aggregate_uuid { text },
# User-readable name for the component
attribute component_name { text }?,
# The uuid of the physical component.
attribute component_uuid { text },
# The sliver_uuid is an annotation added when a ticket is
......@@ -79,27 +76,20 @@ Mapping =
# virtual_uuid requests and the actual slivers instantiated.
attribute sliver_uuid { text }?
LinkMapping = element component_link { Mapping }
LinkComponentSpec = element component_link { ComponentSpec }
PathMapping = element component_path {
(element link { Mapping },
PathComponentSpec = element component_path {
(element link { ComponentSpec, LinkEndPoints},
element node
{
Mapping,
element in_interface { InterfaceContents },
element out_interface { InterfaceContents }
ComponentSpec
}
)*,
element link { Mapping }
element link { ComponentSpec, LinkEndPoints }
}
## How to contact a component manager. In the future, could include information
## about the version of the interface it supports, or something like that...
#CMURLSpec = element component_manager_URL { xsd:anyURI }
RSpec = element rspec {
attribute type { "advertisement" | "request" },
# TODO: Include something about who generated this rspec?
# When this RSpec was generated - optional, can be used for determining
# staleness
attribute generated { xsd:dateTime },
......
......@@ -13,16 +13,16 @@
Simple prototype of an RSpec, to be used by ProtoGENI
-->
<!-- Add some more stuff to nodes -->
<xs:complexType name="NodeContents">
<xs:sequence>
<xs:group ref="rspec:NodeSpec.NodeType"/>
<xs:element minOccurs="0" ref="rspec:available"/>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="rspec:InterfaceDecl"/>
</xs:sequence>
<xs:attribute name="name"/>
<xs:attribute name="virtual_name"/>
<xs:attribute name="virtual_uuid"/>
<xs:attribute name="aggregate_uuid"/>
<xs:attribute name="component_name"/>
<xs:attribute name="component_uuid"/>
<xs:attribute name="sliver_uuid"/>
<xs:attribute name="virtualization_type">
......@@ -37,10 +37,6 @@
</xs:attribute>
</xs:complexType>
<xs:element name="available" type="xs:boolean"/>
<!--
Optionally, include the URL for this component's CM
CMURLSpec?
-->
<xs:complexType name="LinkContents">
<xs:sequence>
<xs:choice minOccurs="0">
......@@ -53,12 +49,11 @@
<xs:documentation>The characteristics (bandwidth, latency, loss) which affect traffic.</xs:documentation>
</xs:annotation>
</xs:group>
<xs:group ref="rspec:LinkSpec.LinkType"/>
<xs:element ref="rspec:LinkSpec.LinkType"/>
</xs:sequence>
<xs:attribute name="name"/>
<xs:attribute name="virtual_name"/>
<xs:attribute name="virtual_uuid"/>
</xs:complexType>
<!-- TODO: Might add a URL for the CM for a link in the future -->
<xs:complexType name="InterfaceContents">
<xs:sequence>
<xs:element minOccurs="0" ref="rspec:virtual_uuid"/>
......@@ -71,7 +66,6 @@
<xs:element name="virtual_interface_name" type="xs:string"/>
<xs:element name="component_uuid" type="xs:string"/>
<xs:element name="component_interface_name" type="xs:string"/>
<!-- InterfaceDecl is for declaration of interfaces inside of a node. -->
<xs:group name="InterfaceDecl">
<xs:sequence>
<xs:element name="interface">
......@@ -81,14 +75,15 @@
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="Mapping">
<xs:attributeGroup name="ComponentSpec">
<xs:attribute name="aggregate_uuid" use="required"/>
<xs:attribute name="component_name"/>
<xs:attribute name="component_uuid" use="required"/>
<xs:attribute name="sliver_uuid"/>
</xs:attributeGroup>
<xs:element name="component_link">
<xs:complexType>
<xs:attributeGroup ref="rspec:Mapping"/>
<xs:attributeGroup ref="rspec:ComponentSpec"/>
</xs:complexType>
</xs:element>
<xs:element name="component_path">
......@@ -97,30 +92,25 @@
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="link">
<xs:complexType>
<xs:attributeGroup ref="rspec:Mapping"/>
<xs:group ref="rspec:LinkEndPoints"/>
<xs:attributeGroup ref="rspec:ComponentSpec"/>
</xs:complexType>
</xs:element>
<xs:element name="node">
<xs:complexType>
<xs:sequence>
<xs:element ref="rspec:in_interface"/>
<xs:element ref="rspec:out_interface"/>
</xs:sequence>
<xs:attributeGroup ref="rspec:Mapping"/>
<xs:attributeGroup ref="rspec:ComponentSpec"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:element name="link">
<xs:complexType>
<xs:attributeGroup ref="rspec:Mapping"/>
<xs:group ref="rspec:LinkEndPoints"/>
<xs:attributeGroup ref="rspec:ComponentSpec"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="in_interface" type="rspec:InterfaceContents"/>
<xs:element name="out_interface" type="rspec:InterfaceContents"/>
<!-- CMURLSpec = element component_manager_URL { xsd:anyURI } -->
<xs:element name="rspec">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
......
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