a little nicer wrt pep8
[sfa.git] / sfa / trust / protogeni-rspec-common.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:sig="http://www.w3.org/2000/09/xmldsig#">
3   <xs:include schemaLocation="top.xsd"/>
4   <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="sig.xsd"/>
5   <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
6   <!--
7     
8     EMULAB-COPYRIGHT
9     Copyright (c) 2008 University of Utah and the Flux Group.
10     All rights reserved.
11     
12   -->
13   <!--
14     
15     Common definitions for advertisements, requests, and tickets
16     
17   -->
18   <xs:element name="node" type="NodeContents"/>
19   <xs:element name="link" type="LinkContents"/>
20   <xs:complexType name="NodeContents">
21     <xs:choice minOccurs="0" maxOccurs="unbounded">
22       <xs:element ref="subnode_of"/>
23       <xs:group ref="NodeTypeList"/>
24       <xs:element ref="interface"/>
25     </xs:choice>
26     <xs:attribute name="virtualization_type">
27       <xs:simpleType>
28         <xs:restriction base="xs:token">
29           <xs:enumeration value="raw"/>
30           <xs:enumeration value="trellis-vserver"/>
31           <xs:enumeration value="planetlab-vserver"/>
32           <xs:enumeration value="emulab-vnode"/>
33           <xs:enumeration value="bgpmux"/>
34         </xs:restriction>
35       </xs:simpleType>
36     </xs:attribute>
37   </xs:complexType>
38   <xs:element name="subnode_of" type="xs:string"/>
39   <xs:element name="interface">
40     <xs:complexType/>
41   </xs:element>
42   <xs:complexType name="LinkContents">
43     <xs:choice minOccurs="0" maxOccurs="unbounded">
44       <xs:group ref="LinkType"/>
45       <xs:element ref="interface_ref"/>
46     </xs:choice>
47     <xs:attribute name="virtualization_type">
48       <xs:simpleType>
49         <xs:restriction base="xs:token">
50           <xs:enumeration value="raw"/>
51           <xs:enumeration value="trellis-vserver"/>
52           <xs:enumeration value="planetlab-vserver"/>
53           <xs:enumeration value="emulab-vnode"/>
54         </xs:restriction>
55       </xs:simpleType>
56     </xs:attribute>
57   </xs:complexType>
58   <xs:element name="interface_ref">
59     <xs:complexType/>
60   </xs:element>
61   <xs:group name="NodeTypeList">
62     <xs:sequence>
63       <xs:element maxOccurs="unbounded" ref="node_type"/>
64     </xs:sequence>
65   </xs:group>
66   <xs:group name="LinkType">
67     <xs:sequence>
68       <xs:element name="link_type">
69         <xs:complexType>
70           <xs:sequence>
71             <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
72           </xs:sequence>
73           <xs:attribute name="name"/>
74           <xs:attribute name="type_name"/>
75         </xs:complexType>
76       </xs:element>
77     </xs:sequence>
78   </xs:group>
79   <xs:element name="field">
80     <xs:complexType>
81       <xs:attribute name="key" use="required"/>
82       <xs:attribute name="value" use="required"/>
83     </xs:complexType>
84   </xs:element>
85   <xs:attributeGroup name="VirtualName">
86     <xs:attribute name="virtual_id" use="required"/>
87   </xs:attributeGroup>
88   <xs:attributeGroup name="ComponentName">
89     <xs:attribute name="component_manager_uuid"/>
90     <xs:attribute name="component_manager_urn"/>
91     <xs:attribute name="component_name"/>
92     <xs:attribute name="component_uuid"/>
93     <xs:attribute name="component_urn"/>
94   </xs:attributeGroup>
95   <xs:attributeGroup name="ComponentInterfaceDeclName">
96     <xs:attribute name="component_id" use="required"/>
97   </xs:attributeGroup>
98   <xs:attributeGroup name="ComponentInterfaceRefName">
99     <xs:attribute name="component_node_uuid"/>
100     <xs:attribute name="component_node_urn"/>
101     <xs:attribute name="component_interface_id" use="required"/>
102   </xs:attributeGroup>
103   <xs:element name="location">
104     <xs:complexType>
105       <xs:attribute name="country" use="required"/>
106       <xs:attribute name="longitude"/>
107       <xs:attribute name="latitude"/>
108     </xs:complexType>
109   </xs:element>
110   <xs:element name="rspec" type="RSpecContents"/>
111   <xs:complexType name="RSpecContents">
112     <xs:choice minOccurs="0" maxOccurs="unbounded">
113       <xs:element ref="node"/>
114       <xs:element ref="link"/>
115     </xs:choice>
116     <xs:attribute name="generated" type="xs:dateTime"/>
117     <xs:attribute name="generated_by"/>
118     <xs:attribute name="valid_until" type="xs:dateTime"/>
119   </xs:complexType>
120 </xs:schema>