Commit 5483ae17 authored by Jonathon Duerig's avatar Jonathon Duerig
Browse files

Allow owner_urn and target_urns in credentials (not just gids).

parent 221382a0
......@@ -76,8 +76,12 @@ credentials = element credential {
element serial { xsd:string },
## GID of the owner of this credential.
element owner_gid { xsd:string },
## URN of the owner. Not everyone can parse DER
element owner_urn { xsd:string }?,
## GID of the target of this credential.
element target_gid { xsd:string },
## URN of the target.
element target_urn { xsd:string }?,
## UUID of this credential
element uuid { xsd:string },
## Expires on
......
<?xml version="1.0" encoding="UTF-8"?>
<!--
EMULAB-COPYRIGHT
Copyright (c) 2008 University of Utah and the Flux Group.
GENIPUBLIC-COPYRIGHT
Copyright (c) 2008-2009 University of Utah and the Flux Group.
All rights reserved.
-->
......@@ -120,7 +120,9 @@
<xs:element ref="type"/>
<xs:element ref="serial"/>
<xs:element ref="owner_gid"/>
<xs:element minOccurs="0" ref="owner_urn"/>
<xs:element ref="target_gid"/>
<xs:element minOccurs="0" ref="target_urn"/>
<xs:element ref="uuid"/>
<xs:element ref="expires"/>
<xs:choice>
......@@ -159,11 +161,21 @@
<xs:documentation>GID of the owner of this credential. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="owner_urn" type="xs:string">
<xs:annotation>
<xs:documentation>URN of the owner. Not everyone can parse DER</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="target_gid" type="xs:string">
<xs:annotation>
<xs:documentation>GID of the target of this credential. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="target_urn" type="xs:string">
<xs:annotation>
<xs:documentation>URN of the target.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="uuid" type="xs:string">
<xs:annotation>
<xs:documentation>UUID of this credential</xs:documentation>
......
......@@ -12,18 +12,16 @@
-->
<!--
Simple prototype of an RSpec, to be used by ProtoGENI
Common definitions for advertisements, requests, and tickets
-->
<!-- Add some more stuff to nodes -->
<xs:element name="node" type="NodeContents"/>
<xs:element name="link" type="LinkContents"/>
<xs:complexType name="NodeContents">
<xs:sequence>
<xs:group ref="NodeSpec.NodeType"/>
<xs:element minOccurs="0" ref="available"/>
<xs:element minOccurs="0" ref="component_manager_URL"/>
</xs:sequence>
<xs:attribute name="uuid" use="required"/>
<xs:attribute name="name"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="NodeTypeList"/>
<xs:element ref="interface"/>
</xs:choice>
<xs:attribute name="virtualization_type">
<xs:simpleType>
<xs:restriction base="xs:token">
......@@ -31,43 +29,90 @@
<xs:enumeration value="trellis-vserver"/>
<xs:enumeration value="planetlab-vserver"/>
<xs:enumeration value="emulab-vnode"/>
<xs:enumeration value="bgpmux"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:element name="available" type="xs:boolean"/>
<xs:element name="interface">
<xs:complexType/>
</xs:element>
<xs:complexType name="LinkContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="LinkType"/>
<xs:element ref="interface_ref"/>
</xs:choice>
<xs:attribute name="virtualization_type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="raw"/>
<xs:enumeration value="trellis-vserver"/>
<xs:enumeration value="planetlab-vserver"/>
<xs:enumeration value="emulab-vnode"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:element name="interface_ref">
<xs:complexType/>
</xs:element>
<xs:group name="NodeTypeList">
<xs:sequence>
<xs:group ref="LinkEndPoints"/>
<xs:group ref="LinkCharacteristics">
<xs:annotation>
<xs:documentation>The characteristics (bandwidth, latency, loss) which affect traffic.</xs:documentation>
</xs:annotation>
</xs:group>
<xs:group ref="LinkSpec.LinkType"/>
<xs:element maxOccurs="unbounded" ref="node_type"/>
</xs:sequence>
<xs:attribute name="uuid" use="required"/>
<xs:attribute name="name"/>
</xs:complexType>
<!-- TODO: Might add a URL for the CM for a link in the future -->
<xs:complexType name="InterfaceContents">
</xs:group>
<xs:group name="LinkType">
<xs:sequence>
<xs:element ref="node_uuid"/>
<xs:element minOccurs="0" ref="node_name"/>
<xs:element name="interface" type="xs:string"/>
<xs:element name="link_type">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
</xs:sequence>
<xs:attribute name="name"/>
<xs:attribute name="type_name"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="node_uuid" type="xs:string"/>
<xs:element name="node_name" type="xs:string"/>
<xs:element name="component_manager_URL" type="xs:anyURI"/>
<xs:element name="rspec">
</xs:group>
<xs:element name="field">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="node"/>
<xs:element ref="link"/>
</xs:choice>
<xs:attribute name="generated" use="required" type="xs:dateTime"/>
<xs:attribute name="valid_until" use="required" type="xs:dateTime"/>
<xs:attribute name="key" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="VirtualName">
<xs:attribute name="virtual_id" use="required"/>
</xs:attributeGroup>
<xs:attributeGroup name="ComponentName">
<xs:attribute name="component_manager_uuid"/>
<xs:attribute name="component_manager_urn"/>
<xs:attribute name="component_name"/>
<xs:attribute name="component_uuid"/>
<xs:attribute name="component_urn"/>
</xs:attributeGroup>
<xs:attributeGroup name="ComponentInterfaceDeclName">
<xs:attribute name="component_id" use="required"/>
</xs:attributeGroup>
<xs:attributeGroup name="ComponentInterfaceRefName">
<xs:attribute name="component_node_uuid"/>
<xs:attribute name="component_node_urn"/>
<xs:attribute name="component_interface_id" use="required"/>
</xs:attributeGroup>
<xs:element name="location">
<xs:complexType>
<xs:attribute name="country" use="required"/>
<xs:attribute name="longitude"/>
<xs:attribute name="latitude"/>
</xs:complexType>
</xs:element>
<xs:element name="rspec" type="RSpecContents"/>
<xs:complexType name="RSpecContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="node"/>
<xs:element ref="link"/>
</xs:choice>
<xs:attribute name="generated" type="xs:dateTime"/>
<xs:attribute name="generated_by"/>
<xs:attribute name="valid_until" type="xs:dateTime"/>
</xs:complexType>
</xs:schema>
......@@ -18,50 +18,54 @@
-->
<xs:element name="node_type">
<xs:complexType>
<xs:sequence>
<xs:element name="type_name" type="xs:string">
<xs:annotation>
<xs:documentation>Name of the type - will almost certainly not be unique</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice>
<xs:element ref="type_slots"/>
<xs:element ref="unlimited"/>
</xs:choice>
<xs:element minOccurs="0" ref="static"/>
</xs:sequence>
<xs:complexContent>
<xs:extension base="NodeTypeContents">
<xs:attribute name="type_name" use="required">
<xs:annotation>
<xs:documentation>Name of the type - will almost certainly not be unique</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type_slots" use="required">
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="unlimited"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="static">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="type_slots">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="unlimited">
<xs:complexType/>
</xs:element>
<xs:element name="static">
<xs:complexType/>
</xs:element>
<xs:element name="node" type="NodeContents"/>
<xs:group name="NodeSpec.NodeType">
<xs:annotation>
<xs:documentation>A node can (by default) have one or more types</xs:documentation>
</xs:annotation>
<xs:complexType name="NodeTypeContents">
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="node_type"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
</xs:sequence>
</xs:complexType>
<xs:group name="LinkTypeSpec">
<xs:sequence>
<xs:element name="link_type">
<xs:complexType>
<xs:attribute name="type_name" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="link_type">
<xs:complexType>
<xs:sequence>
<xs:element name="type_name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="link" type="LinkContents"/>
<xs:group name="LinkEndPoints">
<xs:sequence>
<xs:element ref="source_interface"/>
......@@ -112,110 +116,106 @@
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:group name="LinkSpec.LinkType">
<xs:annotation>
<xs:documentation>A link can (by default) have zero or more types</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="link_type"/>
</xs:sequence>
</xs:group>
<xs:element name="fd">
<xs:complexType>
<xs:sequence>
<xs:element ref="fd_name"/>
<xs:element ref="fd_weight"/>
<xs:element minOccurs="0" name="violatable">
<xs:complexType/>
</xs:element>
<xs:choice minOccurs="0">
<xs:annotation>
<xs:documentation>Type information expressed in features and desires</xs:documentation>
</xs:annotation>
<xs:element ref="global"/>
<xs:element ref="local"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="fd_name" use="required"/>
<xs:attribute name="fd_weight" use="required"/>
<xs:attribute name="violatable">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="global_operator">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="OnceOnly"/>
<xs:enumeration value="FirstFree"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="local_operator">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="+"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="fd_name" type="xs:string">
<xs:annotation>
<xs:documentation>Name of this feature or desire</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="fd_weight" type="xs:float">
<xs:annotation>
<xs:documentation>Weight assocated with the feature or desire</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="global">
<xs:complexType>
<xs:sequence>
<xs:element name="operator">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="OnceOnly"/>
<xs:enumeration value="FirstFree"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="local">
<xs:complexType>
<xs:sequence>
<xs:element name="operator">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:group name="NodeFlagSpec">
<xs:attributeGroup name="GlobalSpec">
<xs:attribute name="global_operator" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="OnceOnly"/>
<xs:enumeration value="FirstFree"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="LocalSpec">
<xs:attribute name="local_operator" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="+"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="InterfaceSpec">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
</xs:sequence>
<xs:attribute name="node_name" use="required"/>
<xs:attribute name="interface_name" use="required"/>
<xs:attribute name="physical_node_name"/>
<xs:attribute name="physical_interface_name"/>
</xs:complexType>
<xs:group name="InterfaceContents">
<xs:sequence>
<xs:element minOccurs="0" ref="trivial_bandwidth"/>
<xs:element minOccurs="0" ref="subnode_of"/>
<xs:element minOccurs="0" ref="unique"/>
<xs:element minOccurs="0" ref="disallow_trivial_mix"/>
<xs:element ref="node_name"/>
<xs:element ref="interface_name"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="property">
<xs:annotation>
<xs:documentation>Properties of the interface</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="trivial_bandwidth" type="xs:integer"/>
<xs:element name="subnode_of" type="xs:string"/>
<xs:element name="unique">
<xs:complexType/>
</xs:element>
<xs:element name="disallow_trivial_mix">
<xs:complexType/>
<xs:element name="node_name" type="xs:string">
<xs:annotation>
<xs:documentation>Name of the node, which must match one of the nodes in this topology</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="InterfaceSpec">
<xs:element name="interface_name" type="xs:string">
<xs:annotation>
<xs:documentation>Interfaces</xs:documentation>
<xs:documentation>Name of the interface itself</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="interface" type="InterfaceContents"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="property">
<xs:complexType>
<xs:sequence>
<xs:element ref="property_name"/>
<xs:element ref="property_value"/>
<xs:element ref="property_penalty"/>
<xs:element minOccurs="0" name="violatable">
<xs:annotation>
<xs:documentation>If this flag is present, not having the property is considered a violation</xs:documentation>
</xs:annotation>
<xs:complexType/>
</xs:element>
<xs:choice minOccurs="0">
<xs:element ref="global"/>
<xs:element ref="local"/>
</xs:choice>
<xs:element minOccurs="0" ref="violatable"/>
</xs:sequence>
<xs:attribute name="global_operator">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="OnceOnly"/>
<xs:enumeration value="FirstFree"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="local_operator">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="+"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="property_name" type="xs:string">
......@@ -234,4 +234,10 @@
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="violatable">
<xs:annotation>
<xs:documentation>If this flag is present, not having the property is considered a violation</xs:documentation>
</xs:annotation>
<xs:complexType/>
</xs:element>
</xs:schema>
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