Commit 06d35fbf authored by Jonathon Duerig's avatar Jonathon Duerig

Added external references and <cloud> annotation to advertisement schema.

parent 6082c74a
......@@ -25,6 +25,7 @@
<xs:element ref="rspec:location"/>
<xs:element ref="rspec:available"/>
<xs:element ref="rspec:exclusive"/>
<xs:element ref="rspec:cloud"/>
</xs:choice>
</xs:choice>
<xs:attribute name="virtualization_type">
......@@ -43,6 +44,9 @@
<xs:element name="interface" type="rspec:InterfaceDecl"/>
<xs:element name="available" type="xs:boolean"/>
<xs:element name="exclusive" type="xs:boolean"/>
<xs:element name="cloud">
<xs:complexType/>
</xs:element>
<xs:complexType name="LinkContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:choice>
......@@ -165,7 +169,10 @@
<xs:element ref="rspec:node"/>
<xs:element ref="rspec:link"/>
</xs:choice>
<xs:element ref="rspec:bgp_prefix"/>
<xs:choice>
<xs:element ref="rspec:external_ref"/>
<xs:element ref="rspec:bgp_prefix"/>
</xs:choice>
</xs:choice>
<xs:attribute name="generated" type="xs:dateTime"/>
<xs:attribute name="valid_until" type="xs:dateTime"/>
......
......@@ -27,7 +27,14 @@ NodeContents &=
# Indicates whether the node is in sharing mode: exclusive is true if
# the component manager will agree to promise not to share it.
element exclusive { xsd:boolean }
element exclusive { xsd:boolean } &
# Marks this node as a stand-in for a large network rather than a
# single machine. This means that other CMs can make external
# references to this node without a corresponding external reference
# in this advertisement. It also means that it makes sense for
# multiple physical links to connect to the same interface.
element cloud { empty }
LinkContents &=
# Component identifiers
......@@ -42,8 +49,17 @@ InterfaceDecl &=
InterfaceRef &=
ComponentInterfaceRefName
# Reference to components managed by other component managers.
# TODO: Merge ComponentInterfaceRefName into just component_id when
# length restrictions on URNs end.
ExternalReference = element external_ref {
ComponentInterfaceRefName &
attribute component_manager_uuid { text }
}
RSpecContents &=
attribute type { "advertisement" } &
ExternalReference* &
BgpPrefix*
BgpPrefix = element bgp_prefix {
......
......@@ -13,6 +13,12 @@
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.protogeni.net/resources/rspec/0.1" xmlns:rspec="http://www.protogeni.net/resources/rspec/0.1">
<xs:include schemaLocation="rspec-ad-common.xsd"/>
<xs:element name="external_ref">
<xs:complexType>
<xs:attributeGroup ref="rspec:ComponentInterfaceRefName"/>
<xs:attribute name="component_manager_uuid" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="bgp_prefix">
<xs:complexType>
<xs:attribute name="address" use="required"/>
......
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