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.
- data/.gitignore +24 -0
- data/Gemfile +6 -0
- data/README.md +211 -0
- data/Rakefile +23 -0
- data/bin/parse_rspec.rb +167 -0
- data/etc/omf-sfa/omf-sfa-am.yaml +12 -0
- data/examples/exogeni5nodemanifest.rspec +105 -0
- data/examples/instageni5nodemanifest.rspec +150 -0
- data/lib/omf-sfa/am/am-rest/REST_API.md +301 -0
- data/lib/omf-sfa/am/am-rest/account_handler.rb +145 -0
- data/lib/omf-sfa/am/am-rest/am_rest_server.rb +255 -0
- data/lib/omf-sfa/am/am-rest/api_template.html +48 -0
- data/lib/omf-sfa/am/am-rest/config.ru +110 -0
- data/lib/omf-sfa/am/am-rest/resource_handler.rb +178 -0
- data/lib/omf-sfa/am/am-rest/rest_handler.rb +573 -0
- data/lib/omf-sfa/am/am-rest/session_authenticator.rb +130 -0
- data/lib/omf-sfa/am/am-rpc/abstract_rpc_service.rb +60 -0
- data/lib/omf-sfa/am/am-rpc/am_authorizer.rb +161 -0
- data/lib/omf-sfa/am/am-rpc/am_rpc_api.rb +450 -0
- data/lib/omf-sfa/am/am-rpc/am_rpc_service.rb +402 -0
- data/lib/omf-sfa/am/am_liaison.rb +93 -0
- data/lib/omf-sfa/am/am_manager.rb +859 -0
- data/lib/omf-sfa/am/am_runner.rb +108 -0
- data/lib/omf-sfa/am/am_scheduler.rb +146 -0
- data/lib/omf-sfa/am/am_server.rb +194 -0
- data/lib/omf-sfa/am/config.ru +122 -0
- data/lib/omf-sfa/am/credential.rb +145 -0
- data/lib/omf-sfa/am/default_authorizer.rb +44 -0
- data/lib/omf-sfa/am/privilege_credential.rb +76 -0
- data/lib/omf-sfa/am/signature.rb +37 -0
- data/lib/omf-sfa/am/user_credential.rb +56 -0
- data/lib/omf-sfa/am.rb +7 -0
- data/lib/omf-sfa/model/abstract_prop_description.rb +87 -0
- data/lib/omf-sfa/model/model_class_description.rb +145 -0
- data/lib/omf-sfa/model/model_data_prop_description.rb +28 -0
- data/lib/omf-sfa/model/model_obj_prop_description.rb +49 -0
- data/lib/omf-sfa/model/ontology.rb +169 -0
- data/lib/omf-sfa/resource/README.md +24 -0
- data/lib/omf-sfa/resource/channel.rb +49 -0
- data/lib/omf-sfa/resource/comp_group.rb +41 -0
- data/lib/omf-sfa/resource/component_lease.rb +10 -0
- data/lib/omf-sfa/resource/constants.rb +24 -0
- data/lib/omf-sfa/resource/group_component.rb +35 -0
- data/lib/omf-sfa/resource/group_membership.rb +17 -0
- data/lib/omf-sfa/resource/gurn.rb +187 -0
- data/lib/omf-sfa/resource/interface.rb +78 -0
- data/lib/omf-sfa/resource/ip.rb +48 -0
- data/lib/omf-sfa/resource/link.rb +29 -0
- data/lib/omf-sfa/resource/node.rb +75 -0
- data/lib/omf-sfa/resource/oaccount.rb +94 -0
- data/lib/omf-sfa/resource/ocomponent.rb +134 -0
- data/lib/omf-sfa/resource/ogroup.rb +106 -0
- data/lib/omf-sfa/resource/olease.rb +61 -0
- data/lib/omf-sfa/resource/oproperty.rb +178 -0
- data/lib/omf-sfa/resource/oreference.rb +15 -0
- data/lib/omf-sfa/resource/oresource.rb +491 -0
- data/lib/omf-sfa/resource/project.rb +28 -0
- data/lib/omf-sfa/resource/project_membership.rb +13 -0
- data/lib/omf-sfa/resource/sfa_base.rb +544 -0
- data/lib/omf-sfa/resource/user.rb +25 -0
- data/lib/omf-sfa/resource.rb +20 -0
- data/lib/omf-sfa/util/create_sample_testbed.rb +68 -0
- data/lib/omf-sfa/util/load_from_sfa_xml.rb +65 -0
- data/lib/omf-sfa/version.rb +4 -0
- data/lib/omf_sfa.rb +5 -0
- data/omf_sfa.gemspec +46 -0
- data/owl/README +3 -0
- data/owl/ben-6509.rdf +1377 -0
- data/owl/ben-dell.rdf +586 -0
- data/owl/ben-dtn.rdf +1698 -0
- data/owl/ben.rdf +1335 -0
- data/owl/collections.owl +309 -0
- data/owl/compute.owl +1486 -0
- data/owl/domain.owl +444 -0
- data/owl/dtn.owl +1165 -0
- data/owl/ec2.owl +385 -0
- data/owl/ethernet.owl +466 -0
- data/owl/eucalyptus.owl +431 -0
- data/owl/id-mp-Request1.rdf +247 -0
- data/owl/itu-grid.owl +147 -0
- data/owl/kansei.owl +511 -0
- data/owl/layer.owl +645 -0
- data/owl/location.owl +117 -0
- data/owl/mass.rdf +608 -0
- data/owl/nlr.rdf +901 -0
- data/owl/orca.owl +181 -0
- data/owl/planetlab.owl +124 -0
- data/owl/protogeni.owl +467 -0
- data/owl/request-6509-2.rdf +150 -0
- data/owl/request-6509-3.rdf +158 -0
- data/owl/request-6509.rdf +199 -0
- data/owl/request.owl +222 -0
- data/owl/storage.owl +511 -0
- data/owl/topology.owl +608 -0
- data/schema/rspec-v3/ad-common.xsd +269 -0
- data/schema/rspec-v3/ad-reservation.rnc +12 -0
- data/schema/rspec-v3/ad-reservation.rng +28 -0
- data/schema/rspec-v3/ad-reservation.xsd +13 -0
- data/schema/rspec-v3/ad.rnc +151 -0
- data/schema/rspec-v3/ad.xsd +77 -0
- data/schema/rspec-v3/any-extension-schema.xsd +38 -0
- data/schema/rspec-v3/any-extension.rnc +30 -0
- data/schema/rspec-v3/common.rnc +185 -0
- data/schema/rspec-v3/manifest-common.xsd +244 -0
- data/schema/rspec-v3/manifest-request.xsd +95 -0
- data/schema/rspec-v3/manifest.rnc +62 -0
- data/schema/rspec-v3/manifest.xsd +34 -0
- data/schema/rspec-v3/request-common.xsd +219 -0
- data/schema/rspec-v3/request-reservation.rnc +12 -0
- data/schema/rspec-v3/request-reservation.xsd +13 -0
- data/schema/rspec-v3/request.rnc +118 -0
- data/schema/rspec-v3/request.xsd +94 -0
- data/share/assets/css/default.css +147 -0
- data/share/assets/css/rest_api.css +0 -0
- data/share/assets/network.html +28 -0
- data/share/assets/network.js +82 -0
- data/spec/am/am-rest/common.rb +29 -0
- data/spec/am/am-rest/resource_group_handler_XspecX.rb +97 -0
- data/spec/am/am-rest/resource_handler_spec.rb +204 -0
- data/spec/am/am-rpc/sfa_methods_spec.rb +150 -0
- data/spec/am/am_manager_spec.rb +307 -0
- data/spec/am/am_scheduler_spec.rb +57 -0
- data/spec/am/common.rb +24 -0
- data/spec/resource/common.rb +31 -0
- data/spec/resource/node_spec.rb +171 -0
- data/spec/resource/oaccount_spec.rb +92 -0
- data/spec/resource/ocomponent_spec.rb +225 -0
- data/spec/resource/ogroup_spec.rb +93 -0
- data/spec/resource/oresource_spec.rb +208 -0
- data/spec/resource_and_leases_spec.rb +377 -0
- data/test/OLD_FILES/assertion1.xml +117 -0
- data/test/OLD_FILES/greeter_spec.rb +15 -0
- data/test/OLD_FILES/mongo_test.rb +45 -0
- data/test/OLD_FILES/req-sfa-2.xml +6 -0
- data/test/OLD_FILES/req-sfa-g.xml +8 -0
- data/test/OLD_FILES/req-sfa-g2.xml +10 -0
- data/test/OLD_FILES/req-sfa-g3.xml +14 -0
- data/test/OLD_FILES/req-sfa.xml +6 -0
- data/test/OLD_FILES/req1.xml +22 -0
- data/test/OLD_FILES/req1b.xml +15 -0
- data/test/OLD_FILES/rspec-test.xml +1867 -0
- data/test/OLD_FILES/test.rb +67 -0
- data/test/OLD_FILES/test2.rb +32 -0
- data/test/am/am_manager_rspec_tests.rb +378 -0
- data/test/am/am_manager_tests.rb +518 -0
- data/test/am/am_scheduler_tests.rb +173 -0
- data/test/resource/olease_test.rb +74 -0
- data/test/sfa_requests/request.xml +5 -0
- data/test/sfa_requests/request1.xml +5 -0
- data/test/sfa_requests/request2.xml +5 -0
- data/test/sfa_requests/request3.xml +5 -0
- 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>
|