omf_sfa 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. data/.gitignore +24 -0
  2. data/Gemfile +6 -0
  3. data/README.md +211 -0
  4. data/Rakefile +23 -0
  5. data/bin/parse_rspec.rb +167 -0
  6. data/etc/omf-sfa/omf-sfa-am.yaml +12 -0
  7. data/examples/exogeni5nodemanifest.rspec +105 -0
  8. data/examples/instageni5nodemanifest.rspec +150 -0
  9. data/lib/omf-sfa/am/am-rest/REST_API.md +301 -0
  10. data/lib/omf-sfa/am/am-rest/account_handler.rb +145 -0
  11. data/lib/omf-sfa/am/am-rest/am_rest_server.rb +255 -0
  12. data/lib/omf-sfa/am/am-rest/api_template.html +48 -0
  13. data/lib/omf-sfa/am/am-rest/config.ru +110 -0
  14. data/lib/omf-sfa/am/am-rest/resource_handler.rb +178 -0
  15. data/lib/omf-sfa/am/am-rest/rest_handler.rb +573 -0
  16. data/lib/omf-sfa/am/am-rest/session_authenticator.rb +130 -0
  17. data/lib/omf-sfa/am/am-rpc/abstract_rpc_service.rb +60 -0
  18. data/lib/omf-sfa/am/am-rpc/am_authorizer.rb +161 -0
  19. data/lib/omf-sfa/am/am-rpc/am_rpc_api.rb +450 -0
  20. data/lib/omf-sfa/am/am-rpc/am_rpc_service.rb +402 -0
  21. data/lib/omf-sfa/am/am_liaison.rb +93 -0
  22. data/lib/omf-sfa/am/am_manager.rb +859 -0
  23. data/lib/omf-sfa/am/am_runner.rb +108 -0
  24. data/lib/omf-sfa/am/am_scheduler.rb +146 -0
  25. data/lib/omf-sfa/am/am_server.rb +194 -0
  26. data/lib/omf-sfa/am/config.ru +122 -0
  27. data/lib/omf-sfa/am/credential.rb +145 -0
  28. data/lib/omf-sfa/am/default_authorizer.rb +44 -0
  29. data/lib/omf-sfa/am/privilege_credential.rb +76 -0
  30. data/lib/omf-sfa/am/signature.rb +37 -0
  31. data/lib/omf-sfa/am/user_credential.rb +56 -0
  32. data/lib/omf-sfa/am.rb +7 -0
  33. data/lib/omf-sfa/model/abstract_prop_description.rb +87 -0
  34. data/lib/omf-sfa/model/model_class_description.rb +145 -0
  35. data/lib/omf-sfa/model/model_data_prop_description.rb +28 -0
  36. data/lib/omf-sfa/model/model_obj_prop_description.rb +49 -0
  37. data/lib/omf-sfa/model/ontology.rb +169 -0
  38. data/lib/omf-sfa/resource/README.md +24 -0
  39. data/lib/omf-sfa/resource/channel.rb +49 -0
  40. data/lib/omf-sfa/resource/comp_group.rb +41 -0
  41. data/lib/omf-sfa/resource/component_lease.rb +10 -0
  42. data/lib/omf-sfa/resource/constants.rb +24 -0
  43. data/lib/omf-sfa/resource/group_component.rb +35 -0
  44. data/lib/omf-sfa/resource/group_membership.rb +17 -0
  45. data/lib/omf-sfa/resource/gurn.rb +187 -0
  46. data/lib/omf-sfa/resource/interface.rb +78 -0
  47. data/lib/omf-sfa/resource/ip.rb +48 -0
  48. data/lib/omf-sfa/resource/link.rb +29 -0
  49. data/lib/omf-sfa/resource/node.rb +75 -0
  50. data/lib/omf-sfa/resource/oaccount.rb +94 -0
  51. data/lib/omf-sfa/resource/ocomponent.rb +134 -0
  52. data/lib/omf-sfa/resource/ogroup.rb +106 -0
  53. data/lib/omf-sfa/resource/olease.rb +61 -0
  54. data/lib/omf-sfa/resource/oproperty.rb +178 -0
  55. data/lib/omf-sfa/resource/oreference.rb +15 -0
  56. data/lib/omf-sfa/resource/oresource.rb +491 -0
  57. data/lib/omf-sfa/resource/project.rb +28 -0
  58. data/lib/omf-sfa/resource/project_membership.rb +13 -0
  59. data/lib/omf-sfa/resource/sfa_base.rb +544 -0
  60. data/lib/omf-sfa/resource/user.rb +25 -0
  61. data/lib/omf-sfa/resource.rb +20 -0
  62. data/lib/omf-sfa/util/create_sample_testbed.rb +68 -0
  63. data/lib/omf-sfa/util/load_from_sfa_xml.rb +65 -0
  64. data/lib/omf-sfa/version.rb +4 -0
  65. data/lib/omf_sfa.rb +5 -0
  66. data/omf_sfa.gemspec +46 -0
  67. data/owl/README +3 -0
  68. data/owl/ben-6509.rdf +1377 -0
  69. data/owl/ben-dell.rdf +586 -0
  70. data/owl/ben-dtn.rdf +1698 -0
  71. data/owl/ben.rdf +1335 -0
  72. data/owl/collections.owl +309 -0
  73. data/owl/compute.owl +1486 -0
  74. data/owl/domain.owl +444 -0
  75. data/owl/dtn.owl +1165 -0
  76. data/owl/ec2.owl +385 -0
  77. data/owl/ethernet.owl +466 -0
  78. data/owl/eucalyptus.owl +431 -0
  79. data/owl/id-mp-Request1.rdf +247 -0
  80. data/owl/itu-grid.owl +147 -0
  81. data/owl/kansei.owl +511 -0
  82. data/owl/layer.owl +645 -0
  83. data/owl/location.owl +117 -0
  84. data/owl/mass.rdf +608 -0
  85. data/owl/nlr.rdf +901 -0
  86. data/owl/orca.owl +181 -0
  87. data/owl/planetlab.owl +124 -0
  88. data/owl/protogeni.owl +467 -0
  89. data/owl/request-6509-2.rdf +150 -0
  90. data/owl/request-6509-3.rdf +158 -0
  91. data/owl/request-6509.rdf +199 -0
  92. data/owl/request.owl +222 -0
  93. data/owl/storage.owl +511 -0
  94. data/owl/topology.owl +608 -0
  95. data/schema/rspec-v3/ad-common.xsd +269 -0
  96. data/schema/rspec-v3/ad-reservation.rnc +12 -0
  97. data/schema/rspec-v3/ad-reservation.rng +28 -0
  98. data/schema/rspec-v3/ad-reservation.xsd +13 -0
  99. data/schema/rspec-v3/ad.rnc +151 -0
  100. data/schema/rspec-v3/ad.xsd +77 -0
  101. data/schema/rspec-v3/any-extension-schema.xsd +38 -0
  102. data/schema/rspec-v3/any-extension.rnc +30 -0
  103. data/schema/rspec-v3/common.rnc +185 -0
  104. data/schema/rspec-v3/manifest-common.xsd +244 -0
  105. data/schema/rspec-v3/manifest-request.xsd +95 -0
  106. data/schema/rspec-v3/manifest.rnc +62 -0
  107. data/schema/rspec-v3/manifest.xsd +34 -0
  108. data/schema/rspec-v3/request-common.xsd +219 -0
  109. data/schema/rspec-v3/request-reservation.rnc +12 -0
  110. data/schema/rspec-v3/request-reservation.xsd +13 -0
  111. data/schema/rspec-v3/request.rnc +118 -0
  112. data/schema/rspec-v3/request.xsd +94 -0
  113. data/share/assets/css/default.css +147 -0
  114. data/share/assets/css/rest_api.css +0 -0
  115. data/share/assets/network.html +28 -0
  116. data/share/assets/network.js +82 -0
  117. data/spec/am/am-rest/common.rb +29 -0
  118. data/spec/am/am-rest/resource_group_handler_XspecX.rb +97 -0
  119. data/spec/am/am-rest/resource_handler_spec.rb +204 -0
  120. data/spec/am/am-rpc/sfa_methods_spec.rb +150 -0
  121. data/spec/am/am_manager_spec.rb +307 -0
  122. data/spec/am/am_scheduler_spec.rb +57 -0
  123. data/spec/am/common.rb +24 -0
  124. data/spec/resource/common.rb +31 -0
  125. data/spec/resource/node_spec.rb +171 -0
  126. data/spec/resource/oaccount_spec.rb +92 -0
  127. data/spec/resource/ocomponent_spec.rb +225 -0
  128. data/spec/resource/ogroup_spec.rb +93 -0
  129. data/spec/resource/oresource_spec.rb +208 -0
  130. data/spec/resource_and_leases_spec.rb +377 -0
  131. data/test/OLD_FILES/assertion1.xml +117 -0
  132. data/test/OLD_FILES/greeter_spec.rb +15 -0
  133. data/test/OLD_FILES/mongo_test.rb +45 -0
  134. data/test/OLD_FILES/req-sfa-2.xml +6 -0
  135. data/test/OLD_FILES/req-sfa-g.xml +8 -0
  136. data/test/OLD_FILES/req-sfa-g2.xml +10 -0
  137. data/test/OLD_FILES/req-sfa-g3.xml +14 -0
  138. data/test/OLD_FILES/req-sfa.xml +6 -0
  139. data/test/OLD_FILES/req1.xml +22 -0
  140. data/test/OLD_FILES/req1b.xml +15 -0
  141. data/test/OLD_FILES/rspec-test.xml +1867 -0
  142. data/test/OLD_FILES/test.rb +67 -0
  143. data/test/OLD_FILES/test2.rb +32 -0
  144. data/test/am/am_manager_rspec_tests.rb +378 -0
  145. data/test/am/am_manager_tests.rb +518 -0
  146. data/test/am/am_scheduler_tests.rb +173 -0
  147. data/test/resource/olease_test.rb +74 -0
  148. data/test/sfa_requests/request.xml +5 -0
  149. data/test/sfa_requests/request1.xml +5 -0
  150. data/test/sfa_requests/request2.xml +5 -0
  151. data/test/sfa_requests/request3.xml +5 -0
  152. metadata +601 -0
@@ -0,0 +1,185 @@
1
+ #
2
+ # GENIPUBLIC-COPYRIGHT
3
+ # Copyright (c) 2011 University of Utah and the Flux Group.
4
+ # All rights reserved.
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining
7
+ # a copy of this software and/or hardware specification (the "Work") to
8
+ # deal in the Work without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense,
10
+ # and/or sell copies of the Work, and to permit persons to whom the Work
11
+ # is furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Work.
15
+ #
16
+ # THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
+ # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER DEALINGS
23
+ # IN THE WORK.
24
+
25
+ #
26
+ # Common definitions for advertisements, requests, etc
27
+ # Version 3
28
+ #
29
+
30
+ default namespace = "http://www.geni.net/resources/rspec/3"
31
+
32
+ include "any-extension.rnc"
33
+
34
+ RSpec = element rspec {
35
+ RSpecContents
36
+ }
37
+
38
+ RSpecContents =
39
+ AnyExtension &
40
+ # When this RSpec was generated - optional, can be used for determining
41
+ # staleness
42
+ attribute generated { xsd:dateTime }? &
43
+ # Who/what generated the rspec. This is purely informative and
44
+ # should not be used for any policy consideration. The format is
45
+ # not fixed.
46
+ attribute generated_by { text }? &
47
+ # How long this rspec is valid - in the case of a ticket, this indicates
48
+ # how long the holder may use the resources. For a resource request, it's
49
+ # how long we want the resources. For an advertisement, it might be a hint
50
+ # as to how long it's okay to cache this rspec.
51
+ attribute expires { xsd:dateTime }? &
52
+ # One or more nodes/links
53
+ Node* &
54
+ Link*
55
+
56
+ Node = element node { NodeContents }
57
+
58
+ Link = element link { LinkContents }
59
+
60
+ NodeContents =
61
+ AnyExtension &
62
+ # A relation indicates that this node has a relationship with
63
+ # another node. It may be hosted on that node, share important
64
+ # resources, etc.
65
+ element relation { RelationContents }* &
66
+
67
+ # Information about the nodes physical location
68
+ element location { LocationContents }? &
69
+
70
+ # Services set up by the CM provided on this node.
71
+ element services { ServiceContents }? &
72
+
73
+ # List of interfaces on this node. Interfaces are declared here. So
74
+ # all information about a particular interface including types
75
+ # belongs in the declaration. Other references to interfaces
76
+ # should just uniquely identify them and refer back here.
77
+ element interface {
78
+ InterfaceContents
79
+ }*
80
+
81
+ ServiceContents &=
82
+ AnyExtension &
83
+ # Login services include ssh-services, serial consoles, etc.
84
+ element login { LoginServiceContents }*
85
+
86
+ LoginServiceContents &=
87
+ AnyExtension &
88
+ # Authentication mechanism
89
+ # 'ssh-keys' is used to denote an ssh connection accessed via the
90
+ # ssh keys passed to CreateSliver or RedeemTicket.
91
+ attribute authentication { text } &
92
+ # Access mechanism
93
+ attribute hostname { text }? &
94
+ attribute port { text }?
95
+
96
+ RelationContents =
97
+ AnyExtension &
98
+ attribute type { text }
99
+
100
+ LocationContents =
101
+ AnyExtension &
102
+ # The two-letter ISO 3166 code for the country the node is in.
103
+ attribute country { text } &
104
+ # Longitude and Latitude coordinates of the node using the
105
+ # WGS 84 standard.
106
+ attribute longitude { text }? &
107
+ attribute latitude { text }?
108
+
109
+ InterfaceContents =
110
+ AnyExtension &
111
+ element ip { IpContents }*
112
+
113
+ IpContents =
114
+ AnyExtension &
115
+ attribute address { text } &
116
+ attribute netmask { text }? &
117
+ # type should usually be 'ipv4' or 'ipv6'. If absent, defaults to ipv4.
118
+ attribute type { text }?
119
+
120
+ LinkContents =
121
+ AnyExtension &
122
+
123
+ # Network properties of this link. These include capacity,
124
+ # latency, loss, etc.
125
+ element property {
126
+ LinkPropertyContents
127
+ }* &
128
+
129
+ # Link type which describes what transport mechanism this link
130
+ # will use or provides.
131
+ LinkType* &
132
+
133
+ # The interfaces which this link spans.
134
+ element interface_ref {
135
+ InterfaceRefContents
136
+ }*
137
+
138
+ InterfaceRefContents = AnyExtension
139
+
140
+ # The unidirectional network properties of a link.
141
+ LinkPropertyContents =
142
+ AnyExtension &
143
+ # URNs for the source and destination interface pair describing
144
+ # the direction. These are physical identifiers in an
145
+ # advertisement and virtual identifiers in other kinds of RSpecs.
146
+ attribute source_id { text } &
147
+ attribute dest_id { text } &
148
+
149
+ # Capacity of the link in kbps
150
+ attribute capacity { text }? &
151
+ # One-way latency of the link in ms
152
+ attribute latency { text }? &
153
+ # Static packet loss probability as a fraction (0.01 means 1% packet loss)
154
+ attribute packet_loss { text }?
155
+
156
+ LinkType = element link_type {
157
+ AnyExtension &
158
+ attribute name { text } &
159
+ attribute class { text }?
160
+ }
161
+
162
+ LinkClass = element link_class {
163
+ AnyExtension &
164
+ attribute name { text }
165
+ }
166
+
167
+ SliverType = element sliver_type { SliverTypeContents }
168
+
169
+ SliverTypeContents =
170
+ AnyExtension &
171
+ attribute name { text }
172
+
173
+ HardwareType = element hardware_type { HardwareTypeContents }
174
+
175
+ HardwareTypeContents =
176
+ AnyExtension &
177
+ attribute name { text }
178
+
179
+ DiskImageContents =
180
+ AnyExtension &
181
+ attribute name { text } &
182
+ attribute os { text }? &
183
+ attribute version { text }? &
184
+ attribute description { text }?
185
+
@@ -0,0 +1,244 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+
4
+ GENIPUBLIC-COPYRIGHT
5
+ Copyright (c) 2011 University of Utah and the Flux Group.
6
+ All rights reserved.
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining
9
+ a copy of this software and/or hardware specification (the "Work") to
10
+ deal in the Work without restriction, including without limitation the
11
+ rights to use, copy, modify, merge, publish, distribute, sublicense,
12
+ and/or sell copies of the Work, and to permit persons to whom the Work
13
+ is furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Work.
17
+
18
+ THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER DEALINGS
25
+ IN THE WORK.
26
+ -->
27
+ <!--
28
+
29
+ Common definitions for advertisements, requests, etc
30
+ Version 3
31
+
32
+ -->
33
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.geni.net/resources/rspec/3" xmlns:rspec="http://www.geni.net/resources/rspec/3">
34
+ <xs:include schemaLocation="any-extension-schema.xsd"/>
35
+ <xs:element name="rspec" type="rspec:RSpecContents"/>
36
+ <xs:complexType name="RSpecContents">
37
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
38
+ <xs:group ref="rspec:AnyExtension"/>
39
+ <xs:element ref="rspec:node"/>
40
+ <xs:element ref="rspec:link"/>
41
+ </xs:choice>
42
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
43
+ <xs:attribute name="generated" type="xs:dateTime"/>
44
+ <xs:attribute name="generated_by"/>
45
+ <xs:attribute name="expires" type="xs:dateTime"/>
46
+ <xs:attribute name="type" use="required" type="rspec:RspecTypeContents"/>
47
+ </xs:complexType>
48
+ <xs:element name="node" type="rspec:NodeContents"/>
49
+ <xs:element name="link" type="rspec:LinkContents"/>
50
+ <xs:complexType name="NodeContents">
51
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
52
+ <xs:choice>
53
+ <xs:group ref="rspec:AnyExtension"/>
54
+ <xs:element ref="rspec:relation"/>
55
+ <xs:element ref="rspec:location"/>
56
+ <xs:element ref="rspec:services"/>
57
+ <xs:element ref="rspec:interface"/>
58
+ </xs:choice>
59
+ <xs:choice>
60
+ <xs:element ref="rspec:hardware_type"/>
61
+ <xs:element name="sliver_type">
62
+ <xs:complexType>
63
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
64
+ <xs:group ref="rspec:SliverTypeContents"/>
65
+ <xs:element ref="rspec:disk_image"/>
66
+ </xs:choice>
67
+ <xs:attributeGroup ref="rspec:SliverTypeContents"/>
68
+ </xs:complexType>
69
+ </xs:element>
70
+ </xs:choice>
71
+ <xs:element ref="rspec:host"/>
72
+ </xs:choice>
73
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
74
+ <xs:attribute name="client_id" use="required"/>
75
+ <xs:attribute name="component_id"/>
76
+ <xs:attribute name="component_manager_id"/>
77
+ <xs:attribute name="component_name"/>
78
+ <xs:attribute name="exclusive" type="xs:boolean"/>
79
+ <xs:attribute name="colocate"/>
80
+ <xs:attribute name="sliver_id"/>
81
+ </xs:complexType>
82
+ <xs:element name="relation" type="rspec:RelationContents"/>
83
+ <xs:element name="location" type="rspec:LocationContents"/>
84
+ <xs:element name="services" type="rspec:ServiceContents"/>
85
+ <xs:element name="interface" type="rspec:InterfaceContents"/>
86
+ <xs:element name="disk_image" type="rspec:DiskImageContents"/>
87
+ <xs:element name="host">
88
+ <xs:complexType>
89
+ <xs:attribute name="name" use="required"/>
90
+ </xs:complexType>
91
+ </xs:element>
92
+ <xs:complexType name="ServiceContents">
93
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
94
+ <xs:choice>
95
+ <xs:group ref="rspec:AnyExtension"/>
96
+ <xs:element ref="rspec:login"/>
97
+ </xs:choice>
98
+ <xs:choice>
99
+ <xs:element ref="rspec:install"/>
100
+ <xs:element ref="rspec:execute"/>
101
+ </xs:choice>
102
+ </xs:choice>
103
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
104
+ </xs:complexType>
105
+ <xs:element name="login" type="rspec:LoginServiceContents"/>
106
+ <xs:element name="install" type="rspec:InstallServiceContents"/>
107
+ <xs:element name="execute" type="rspec:ExecuteServiceContents"/>
108
+ <xs:complexType name="LoginServiceContents">
109
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
110
+ <xs:group ref="rspec:AnyExtension"/>
111
+ <xs:element ref="rspec:user"/>
112
+ </xs:choice>
113
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
114
+ <xs:attribute name="authentication" use="required"/>
115
+ <xs:attribute name="hostname"/>
116
+ <xs:attribute name="port"/>
117
+ <xs:attribute name="username"/>
118
+ </xs:complexType>
119
+ <xs:element name="user">
120
+ <xs:complexType>
121
+ <xs:attribute name="name" use="required"/>
122
+ </xs:complexType>
123
+ </xs:element>
124
+ <xs:complexType name="RelationContents">
125
+ <xs:group ref="rspec:AnyExtension"/>
126
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
127
+ <xs:attribute name="type" use="required"/>
128
+ <xs:attribute name="client_id" use="required"/>
129
+ </xs:complexType>
130
+ <xs:complexType name="LocationContents">
131
+ <xs:group ref="rspec:AnyExtension"/>
132
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
133
+ <xs:attribute name="country" use="required"/>
134
+ <xs:attribute name="longitude"/>
135
+ <xs:attribute name="latitude"/>
136
+ </xs:complexType>
137
+ <xs:complexType name="InterfaceContents">
138
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
139
+ <xs:choice>
140
+ <xs:group ref="rspec:AnyExtension"/>
141
+ <xs:element ref="rspec:ip"/>
142
+ </xs:choice>
143
+ <xs:element ref="rspec:host"/>
144
+ </xs:choice>
145
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
146
+ <xs:attribute name="component_id"/>
147
+ <xs:attribute name="client_id" use="required"/>
148
+ <xs:attribute name="sliver_id"/>
149
+ <xs:attribute name="mac_address"/>
150
+ </xs:complexType>
151
+ <xs:element name="ip" type="rspec:IpContents"/>
152
+ <xs:complexType name="IpContents">
153
+ <xs:group ref="rspec:AnyExtension"/>
154
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
155
+ <xs:attribute name="address" use="required"/>
156
+ <xs:attribute name="netmask"/>
157
+ <xs:attribute name="type"/>
158
+ </xs:complexType>
159
+ <xs:complexType name="LinkContents">
160
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
161
+ <xs:choice>
162
+ <xs:group ref="rspec:AnyExtension"/>
163
+ <xs:element ref="rspec:property"/>
164
+ <xs:element ref="rspec:link_type"/>
165
+ <xs:element name="interface_ref" type="rspec:InterfaceRefContents"/>
166
+ </xs:choice>
167
+ <xs:choice>
168
+ <xs:element ref="rspec:component_manager"/>
169
+ <xs:element ref="rspec:component_hop"/>
170
+ </xs:choice>
171
+ </xs:choice>
172
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
173
+ <xs:attribute name="client_id" use="required"/>
174
+ <xs:attribute name="sliver_id"/>
175
+ <xs:attribute name="vlantag" use="required"/>
176
+ </xs:complexType>
177
+ <xs:element name="property" type="rspec:LinkPropertyContents"/>
178
+ <xs:element name="component_hop" type="rspec:ComponentHopContents"/>
179
+ <xs:complexType name="InterfaceRefContents">
180
+ <xs:group ref="rspec:AnyExtension"/>
181
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
182
+ <xs:attribute name="client_id" use="required"/>
183
+ <xs:attribute name="sliver_id"/>
184
+ <xs:attribute name="component_id"/>
185
+ </xs:complexType>
186
+ <!-- The unidirectional network properties of a link. -->
187
+ <xs:complexType name="LinkPropertyContents">
188
+ <xs:group ref="rspec:AnyExtension"/>
189
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
190
+ <xs:attribute name="source_id" use="required"/>
191
+ <xs:attribute name="dest_id" use="required"/>
192
+ <xs:attribute name="capacity"/>
193
+ <xs:attribute name="latency"/>
194
+ <xs:attribute name="packet_loss"/>
195
+ </xs:complexType>
196
+ <xs:element name="link_type">
197
+ <xs:complexType>
198
+ <xs:group ref="rspec:AnyExtension"/>
199
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
200
+ <xs:attribute name="name" use="required"/>
201
+ <xs:attribute name="class"/>
202
+ </xs:complexType>
203
+ </xs:element>
204
+ <xs:element name="link_class">
205
+ <xs:complexType>
206
+ <xs:group ref="rspec:AnyExtension"/>
207
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
208
+ <xs:attribute name="name" use="required"/>
209
+ </xs:complexType>
210
+ </xs:element>
211
+ <xs:group name="SliverType">
212
+ <xs:sequence>
213
+ <xs:element name="sliver_type">
214
+ <xs:complexType>
215
+ <xs:group ref="rspec:SliverTypeContents"/>
216
+ <xs:attributeGroup ref="rspec:SliverTypeContents"/>
217
+ </xs:complexType>
218
+ </xs:element>
219
+ </xs:sequence>
220
+ </xs:group>
221
+ <xs:group name="SliverTypeContents">
222
+ <xs:sequence>
223
+ <xs:group ref="rspec:AnyExtension"/>
224
+ </xs:sequence>
225
+ </xs:group>
226
+ <xs:attributeGroup name="SliverTypeContents">
227
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
228
+ <xs:attribute name="name" use="required"/>
229
+ </xs:attributeGroup>
230
+ <xs:element name="hardware_type" type="rspec:HardwareTypeContents"/>
231
+ <xs:complexType name="HardwareTypeContents">
232
+ <xs:group ref="rspec:AnyExtension"/>
233
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
234
+ <xs:attribute name="name" use="required"/>
235
+ </xs:complexType>
236
+ <xs:complexType name="DiskImageContents">
237
+ <xs:group ref="rspec:AnyExtension"/>
238
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
239
+ <xs:attribute name="name" use="required"/>
240
+ <xs:attribute name="os"/>
241
+ <xs:attribute name="version"/>
242
+ <xs:attribute name="description"/>
243
+ </xs:complexType>
244
+ </xs:schema>
@@ -0,0 +1,95 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+
4
+ GENIPUBLIC-COPYRIGHT
5
+ Copyright (c) 2011 University of Utah and the Flux Group.
6
+ All rights reserved.
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining
9
+ a copy of this software and/or hardware specification (the "Work") to
10
+ deal in the Work without restriction, including without limitation the
11
+ rights to use, copy, modify, merge, publish, distribute, sublicense,
12
+ and/or sell copies of the Work, and to permit persons to whom the Work
13
+ is furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Work.
17
+
18
+ THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER DEALINGS
25
+ IN THE WORK.
26
+ -->
27
+ <!--
28
+
29
+ Prototype of a request RSpec, to be used by GENI
30
+ Version 3
31
+
32
+ -->
33
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.geni.net/resources/rspec/3" xmlns:rspec="http://www.geni.net/resources/rspec/3">
34
+ <xs:include schemaLocation="manifest-common.xsd"/>
35
+ <!-- The ComponentName will only be available after an assignment -->
36
+ <xs:complexType name="InstallServiceContents">
37
+ <xs:group ref="rspec:AnyExtension"/>
38
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
39
+ <xs:attribute name="url" use="required"/>
40
+ <xs:attribute name="install_path" use="required"/>
41
+ </xs:complexType>
42
+ <xs:complexType name="ExecuteServiceContents">
43
+ <xs:group ref="rspec:AnyExtension"/>
44
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
45
+ <xs:attribute name="shell" use="required"/>
46
+ <xs:attribute name="command" use="required"/>
47
+ </xs:complexType>
48
+ <!-- The LinkMapping will only be available after an assignment -->
49
+ <!-- The ComponentInterfaceDeclName will only be available after an assignment -->
50
+ <!-- The ComponentInterfaceRefName will only be available after an assignment -->
51
+ <xs:simpleType name="RspecTypeContents">
52
+ <xs:restriction base="xs:token">
53
+ <xs:enumeration value="request"/>
54
+ <xs:enumeration value="manifest"/>
55
+ </xs:restriction>
56
+ </xs:simpleType>
57
+ <!--
58
+ A request link is mapped to an arbitrary topology which represents
59
+ the virtual LAN/link which embodies it. Note that nodes do not
60
+ provide any additional information and can be derived from the
61
+ interface mapping.
62
+ -->
63
+ <xs:complexType name="ComponentHopContents">
64
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
65
+ <xs:group ref="rspec:AnyExtension"/>
66
+ <xs:element ref="rspec:component_manager"/>
67
+ <xs:group ref="rspec:InterfaceMapping"/>
68
+ </xs:choice>
69
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
70
+ <xs:attribute name="component_id"/>
71
+ </xs:complexType>
72
+ <xs:element name="component_manager">
73
+ <xs:complexType>
74
+ <xs:attribute name="name" use="required"/>
75
+ </xs:complexType>
76
+ </xs:element>
77
+ <!--
78
+ Each interface represents a particular physical interface. If that
79
+ interface is one of the link end points, it is also mapped to that
80
+ virtual interface name.
81
+ -->
82
+ <xs:group name="InterfaceMapping">
83
+ <xs:sequence>
84
+ <xs:element name="interface_ref">
85
+ <xs:complexType>
86
+ <xs:group ref="rspec:AnyExtension"/>
87
+ <xs:attributeGroup ref="rspec:AnyExtension"/>
88
+ <xs:attribute name="component_id" use="required"/>
89
+ <xs:attribute name="component_manager_id" use="required"/>
90
+ <xs:attribute name="client_id"/>
91
+ </xs:complexType>
92
+ </xs:element>
93
+ </xs:sequence>
94
+ </xs:group>
95
+ </xs:schema>
@@ -0,0 +1,62 @@
1
+ #
2
+ # GENIPUBLIC-COPYRIGHT
3
+ # Copyright (c) 2011 University of Utah and the Flux Group.
4
+ # All rights reserved.
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining
7
+ # a copy of this software and/or hardware specification (the "Work") to
8
+ # deal in the Work without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense,
10
+ # and/or sell copies of the Work, and to permit persons to whom the Work
11
+ # is furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Work.
15
+ #
16
+ # THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
+ # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER DEALINGS
23
+ # IN THE WORK.
24
+
25
+ #
26
+ # Schema for a manifest RSpec, to be used by GENI
27
+ #
28
+
29
+ include "request.rnc"
30
+
31
+ NodeContents &=
32
+ attribute sliver_id { text }? &
33
+ # List of all hostnames that can be used to access the node on the
34
+ # control network. These may be accessible only by other nodes local
35
+ # to the same CM.
36
+ element host { attribute name { text } }*
37
+
38
+ LinkContents &=
39
+ attribute sliver_id { text }? &
40
+ # vlan tag number used for stitching
41
+ attribute vlantag { text }
42
+
43
+ InterfaceContents &=
44
+ attribute sliver_id { text }? &
45
+ attribute mac_address { text } ? &
46
+ # List of all hostnames associated with a particular
47
+ # interface. These may be names associated with an experimental
48
+ # interface that can be used to transit experimental traffic.
49
+ element host { attribute name { text } }*
50
+
51
+ InterfaceRefContents &=
52
+ attribute sliver_id { text }? &
53
+ attribute component_id { text }?
54
+
55
+ LoginServiceContents &=
56
+ # Default username. Used when there is only one username or one
57
+ # username should be used by default.
58
+ attribute username { text }? &
59
+ # List of all usernames that can be used to log into the node.
60
+ element user { attribute name { text } }*
61
+
62
+ RspecTypeContents |= "manifest"
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.geni.net/resources/rspec/3" xmlns:rspec="http://www.geni.net/resources/rspec/3">
3
+ <xs:include schemaLocation="manifest-request.xsd"/>
4
+ <!--
5
+
6
+ GENIPUBLIC-COPYRIGHT
7
+ Copyright (c) 2011 University of Utah and the Flux Group.
8
+ All rights reserved.
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining
11
+ a copy of this software and/or hardware specification (the "Work") to
12
+ deal in the Work without restriction, including without limitation the
13
+ rights to use, copy, modify, merge, publish, distribute, sublicense,
14
+ and/or sell copies of the Work, and to permit persons to whom the Work
15
+ is furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be
18
+ included in all copies or substantial portions of the Work.
19
+
20
+ THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER DEALINGS
27
+ IN THE WORK.
28
+ -->
29
+ <!--
30
+
31
+ Schema for a manifest RSpec, to be used by GENI
32
+
33
+ -->
34
+ </xs:schema>