occi-api 4.1.1 → 4.2.0.beta.2
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/Gemfile +9 -0
- data/README.md +37 -11
- data/Rakefile +2 -9
- data/examples/dsl_example.rb +2 -2
- data/examples/x509auth_example.rb +9 -9
- data/lib/occi-api.rb +0 -1
- data/lib/occi/api/client/client_base.rb +102 -92
- data/lib/occi/api/client/client_http.rb +6 -6
- data/lib/occi/api/client/http/authn_plugins/keystone.rb +27 -11
- data/lib/occi/api/dsl.rb +7 -3
- data/lib/occi/api/version.rb +1 -1
- data/occi-api.gemspec +2 -14
- data/{features/cassettes/Create_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml → spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/describes_all_available_mixins.yml} +125 -147
- data/{features/cassettes/Miscellaneous_operation_on_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml → spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/looks_up_a_mixin_type_identifier_for_os_tpl.yml} +126 -148
- data/{features/cassettes/Delete_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml → spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/looks_up_a_mixin_type_identifier_for_resource_tpl.yml} +126 -148
- data/spec/occi/api/client/client_http_spec.rb +52 -28
- data/spec/occi/api/dsl_spec.rb +0 -6
- data/spec/spec_helper.rb +4 -1
- metadata +31 -200
- checksums.yaml +0 -7
- data/features/cassettes/Discovery_Interface/Retrieving_all_OCCI_Categories_supported_by_the_OCCI_Server/_http_http___141_5_99_69__application_json_200_.yml +0 -333
- data/features/cassettes/Discovery_Interface/Retrieving_all_OCCI_Categories_supported_by_the_OCCI_Server/_http_http___141_5_99_69__text_plain_200_.yml +0 -529
- data/features/cassettes/Discovery_Interface/Retrieving_all_OCCI_Categories_supported_by_the_OCCI_Server/_http_http___141_5_99_69__text_plain_200_action_.yml +0 -288
- data/features/cassettes/Read_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +0 -288
- data/features/cassettes/Update_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +0 -288
- data/features/common/step_definitions/common_steps.rb +0 -32
- data/features/occi/core/create/create.feature +0 -18
- data/features/occi/core/create/step_definitions/create_steps.rb +0 -0
- data/features/occi/core/delete/delete.feature +0 -18
- data/features/occi/core/delete/step_definitions/delete_steps.rb +0 -0
- data/features/occi/core/discovery_interface/discovery_interface.feature +0 -37
- data/features/occi/core/discovery_interface/step_definitions/discovery_interface_steps.rb +0 -19
- data/features/occi/core/miscellaneous/miscellaneous.feature +0 -18
- data/features/occi/core/miscellaneous/step_definitions/miscellaneous_steps.rb +0 -0
- data/features/occi/core/read/read.feature +0 -18
- data/features/occi/core/read/step_definitions/read_steps.rb +0 -0
- data/features/occi/core/update/step_definitions/update_steps.rb +0 -0
- data/features/occi/core/update/update.feature +0 -18
- data/features/occi/infrastructure/create/create.feature +0 -18
- data/features/occi/infrastructure/create/step_definitions/create_steps.rb +0 -0
- data/features/support/env.rb +0 -16
- data/lib/occi/api/client/client_amqp.rb +0 -766
- data/spec/occi/api/client/client_amqp_spec.rb +0 -158
@@ -145,11 +145,11 @@ module Occi
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
-
descriptions =
|
148
|
+
descriptions = Occi::Collection.new
|
149
149
|
|
150
150
|
if resource_type_identifier.nil?
|
151
151
|
# no filters, describe all available resources
|
152
|
-
descriptions
|
152
|
+
descriptions.merge! get('/')
|
153
153
|
elsif @model.get_by_id(resource_type_identifier)
|
154
154
|
# we got type identifier
|
155
155
|
# get all available resources of this type
|
@@ -157,16 +157,16 @@ module Occi
|
|
157
157
|
|
158
158
|
# make the requests
|
159
159
|
locations.each do |location|
|
160
|
-
descriptions
|
160
|
+
descriptions.merge! get(sanitize_resource_link(location))
|
161
161
|
end
|
162
162
|
elsif resource_type_identifier.start_with?(@endpoint) || resource_type_identifier.start_with?('/')
|
163
163
|
# this is a link of a specific resource (obsolute or relative)
|
164
|
-
descriptions
|
164
|
+
descriptions.merge! get(sanitize_resource_link(resource_type_identifier))
|
165
165
|
else
|
166
166
|
raise "Unkown resource type identifier! [#{resource_type_identifier}]"
|
167
167
|
end
|
168
168
|
|
169
|
-
descriptions
|
169
|
+
descriptions.resources
|
170
170
|
end
|
171
171
|
|
172
172
|
# @see Occi::Api::Client::ClientBase
|
@@ -267,7 +267,7 @@ module Occi
|
|
267
267
|
|
268
268
|
# encapsulate the acion in a collection
|
269
269
|
collection = Occi::Collection.new
|
270
|
-
scheme, term = action.split('
|
270
|
+
scheme, term = action.split('#')
|
271
271
|
collection.actions << Occi::Core::Action.new(scheme + '#', term)
|
272
272
|
|
273
273
|
# make the request
|
@@ -4,6 +4,8 @@ module Occi::Api::Client
|
|
4
4
|
|
5
5
|
class Keystone < Base
|
6
6
|
|
7
|
+
KEYSTONE_URI_REGEXP = /^(Keystone|snf-auth) uri='(.+)'$/
|
8
|
+
|
7
9
|
def setup(options = {})
|
8
10
|
# get Keystone URL if possible, get unscoped token
|
9
11
|
set_keystone_base_url
|
@@ -17,7 +19,8 @@ module Occi::Api::Client
|
|
17
19
|
def authenticate(options = {})
|
18
20
|
# OCCI-OS doesn't support HEAD method!
|
19
21
|
response = @env_ref.class.get "#{@env_ref.endpoint}-/"
|
20
|
-
raise ::Occi::Api::Client::Errors::AuthnError,
|
22
|
+
raise ::Occi::Api::Client::Errors::AuthnError,
|
23
|
+
"Authentication failed with code #{response.code.to_s}!" unless response.success?
|
21
24
|
end
|
22
25
|
|
23
26
|
private
|
@@ -27,16 +30,25 @@ module Occi::Api::Client
|
|
27
30
|
Occi::Log.debug response.inspect
|
28
31
|
|
29
32
|
return if response.success?
|
30
|
-
raise ::Occi::Api::Client::Errors::AuthnError,
|
33
|
+
raise ::Occi::Api::Client::Errors::AuthnError,
|
34
|
+
"Keystone AuthN failed with #{response.code.to_s}!" unless response.code == 401
|
35
|
+
|
36
|
+
process_headers(response)
|
37
|
+
end
|
38
|
+
|
39
|
+
def process_headers(response)
|
40
|
+
authN_header = response.headers['www-authenticate']
|
31
41
|
|
32
|
-
|
33
|
-
raise ::Occi::Api::Client::Errors::AuthnError,
|
42
|
+
if authN_header.blank?
|
43
|
+
raise ::Occi::Api::Client::Errors::AuthnError,
|
44
|
+
"Response does not contain the www-authenticate header, fallback failed!"
|
34
45
|
end
|
35
46
|
|
36
|
-
|
37
|
-
raise ::Occi::Api::Client::Errors::AuthnError,
|
47
|
+
match = KEYSTONE_URI_REGEXP.match(authN_header)
|
48
|
+
raise ::Occi::Api::Client::Errors::AuthnError,
|
49
|
+
"Unable to get Keystone's URL from the response!" unless match && match[2]
|
38
50
|
|
39
|
-
@keystone_url =
|
51
|
+
@keystone_url = match[2].chomp('/')
|
40
52
|
end
|
41
53
|
|
42
54
|
def set_auth_token(tenant = nil)
|
@@ -54,7 +66,8 @@ module Occi::Api::Client
|
|
54
66
|
if response.success?
|
55
67
|
@env_ref.class.headers['X-Auth-Token'] = response['access']['token']['id']
|
56
68
|
else
|
57
|
-
raise ::Occi::Api::Client::Errors::AuthnError,
|
69
|
+
raise ::Occi::Api::Client::Errors::AuthnError,
|
70
|
+
"Unable to get a token from Keystone!"
|
58
71
|
end
|
59
72
|
end
|
60
73
|
|
@@ -71,7 +84,8 @@ module Occi::Api::Client
|
|
71
84
|
}
|
72
85
|
}
|
73
86
|
else
|
74
|
-
raise ::Occi::Api::Client::Errors::AuthnError,
|
87
|
+
raise ::Occi::Api::Client::Errors::AuthnError,
|
88
|
+
"Unable to request a token from Keystone! Chosen AuthN not supported."
|
75
89
|
end
|
76
90
|
|
77
91
|
body['auth']['tenantName'] = tenant if tenant && !tenant.empty?
|
@@ -90,9 +104,11 @@ module Occi::Api::Client
|
|
90
104
|
Occi::Log.debug response.inspect
|
91
105
|
|
92
106
|
# TODO: impl match with regexp in case of multiple tenants?
|
93
|
-
raise ::Occi::Api::Client::Errors::AuthnError,
|
107
|
+
raise ::Occi::Api::Client::Errors::AuthnError,
|
108
|
+
"Keystone didn't return any tenants!" unless response['tenants'] && response['tenants'].first
|
94
109
|
tenant = response['tenants'].first['name'] if response.success?
|
95
|
-
raise ::Occi::Api::Client::Errors::AuthnError,
|
110
|
+
raise ::Occi::Api::Client::Errors::AuthnError,
|
111
|
+
"Unable to get a tenant from Keystone!" unless tenant
|
96
112
|
|
97
113
|
tenant
|
98
114
|
end
|
data/lib/occi/api/dsl.rb
CHANGED
@@ -7,8 +7,6 @@ module Occi
|
|
7
7
|
case protocol
|
8
8
|
when :http
|
9
9
|
@client = Occi::Api::Client::ClientHttp.new(*args)
|
10
|
-
when :amqp
|
11
|
-
@client = Occi::Api::Client::ClientAmqp.new(*args)
|
12
10
|
else
|
13
11
|
raise "Protocol #{protocol.to_s} is not supported!"
|
14
12
|
end
|
@@ -122,6 +120,12 @@ module Occi
|
|
122
120
|
@client.get_mixins(*args)
|
123
121
|
end
|
124
122
|
|
123
|
+
def mixin_list(*args)
|
124
|
+
check
|
125
|
+
|
126
|
+
@client.list_mixins(*args)
|
127
|
+
end
|
128
|
+
|
125
129
|
def resource(*args)
|
126
130
|
check
|
127
131
|
|
@@ -131,7 +135,7 @@ module Occi
|
|
131
135
|
def mixin(*args)
|
132
136
|
check
|
133
137
|
|
134
|
-
@client.
|
138
|
+
@client.get_mixin(*args)
|
135
139
|
end
|
136
140
|
|
137
141
|
private
|
data/lib/occi/api/version.rb
CHANGED
data/occi-api.gemspec
CHANGED
@@ -15,24 +15,12 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.license = 'Apache License, Version 2.0'
|
16
16
|
|
17
17
|
gem.files = `git ls-files`.split("\n")
|
18
|
-
gem.test_files = `git ls-files -- {test,spec
|
18
|
+
gem.test_files = `git ls-files -- {test,spec}/*`.split("\n")
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.add_dependency 'occi-core', '~> 4.
|
21
|
+
gem.add_dependency 'occi-core', '~> 4.2.0'
|
22
22
|
gem.add_dependency 'httparty'
|
23
|
-
gem.add_dependency 'amqp'
|
24
23
|
gem.add_dependency 'json'
|
25
24
|
|
26
|
-
gem.add_development_dependency "rspec"
|
27
|
-
gem.add_development_dependency "rake"
|
28
|
-
gem.add_development_dependency "builder"
|
29
|
-
gem.add_development_dependency "simplecov"
|
30
|
-
gem.add_development_dependency "yard"
|
31
|
-
gem.add_development_dependency "yard-sinatra"
|
32
|
-
gem.add_development_dependency "yard-rspec"
|
33
|
-
gem.add_development_dependency "yard-cucumber"
|
34
|
-
gem.add_development_dependency "rspec-http"
|
35
|
-
gem.add_development_dependency "webmock", "~> 1.9.3"
|
36
|
-
|
37
25
|
gem.required_ruby_version = ">= 1.9.3"
|
38
26
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: head
|
5
|
-
uri:
|
5
|
+
uri: https://localhost:3300/
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
@@ -15,11 +15,11 @@ http_interactions:
|
|
15
15
|
message: OK
|
16
16
|
headers:
|
17
17
|
Date:
|
18
|
-
- Thu, 10 Jan 2013
|
18
|
+
- Thu, 10 Jan 2013 17:44:39 GMT
|
19
19
|
Server:
|
20
|
-
- Apache/2.2.
|
20
|
+
- Apache/2.2.20 (Ubuntu)
|
21
21
|
X-Powered-By:
|
22
|
-
- Phusion Passenger (mod_rails/mod_rack) 3.0.
|
22
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.12
|
23
23
|
X-Frame-Options:
|
24
24
|
- sameorigin
|
25
25
|
X-Xss-Protection:
|
@@ -27,10 +27,12 @@ http_interactions:
|
|
27
27
|
Accept:
|
28
28
|
- application/occi+json,application/json,text/plain,text/uri-list,application/xml,text/xml,application/occi+xml,text/occi
|
29
29
|
Set-Cookie:
|
30
|
-
-
|
30
|
+
- GRIDHTTP_PASSCODE=ec9b4b21351052e5aPTUJs; domain=localhost; path=/;
|
31
|
+
secure
|
32
|
+
- rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFZTIyZmM5ZmI2OTliY2JiZWQyMjYz%0AN2IyNTQ3NjMyMDkxYTFkNWVhOGIwYjVkYTNhYTllMTYyYjdkZTZiMzhkY0ki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--24c9906d0e0c02c6976b065151f161a7e299022a;
|
31
33
|
path=/; HttpOnly
|
32
34
|
Content-Length:
|
33
|
-
- '
|
35
|
+
- '294'
|
34
36
|
Status:
|
35
37
|
- '200'
|
36
38
|
Vary:
|
@@ -41,27 +43,71 @@ http_interactions:
|
|
41
43
|
encoding: US-ASCII
|
42
44
|
string: ''
|
43
45
|
http_version:
|
44
|
-
recorded_at: Thu, 10 Jan 2013
|
46
|
+
recorded_at: Thu, 10 Jan 2013 17:44:39 GMT
|
47
|
+
- request:
|
48
|
+
method: head
|
49
|
+
uri: https://localhost:3300/
|
50
|
+
body:
|
51
|
+
encoding: US-ASCII
|
52
|
+
string: ''
|
53
|
+
headers:
|
54
|
+
Accept:
|
55
|
+
- text/plain,text/occi
|
56
|
+
response:
|
57
|
+
status:
|
58
|
+
code: 200
|
59
|
+
message: OK
|
60
|
+
headers:
|
61
|
+
Date:
|
62
|
+
- Thu, 10 Jan 2013 17:45:00 GMT
|
63
|
+
Server:
|
64
|
+
- Apache/2.2.20 (Ubuntu)
|
65
|
+
X-Powered-By:
|
66
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.12
|
67
|
+
X-Frame-Options:
|
68
|
+
- sameorigin
|
69
|
+
X-Xss-Protection:
|
70
|
+
- 1; mode=block
|
71
|
+
Accept:
|
72
|
+
- application/occi+json,application/json,text/plain,text/uri-list,application/xml,text/xml,application/occi+xml,text/occi
|
73
|
+
Set-Cookie:
|
74
|
+
- GRIDHTTP_PASSCODE=e7c80271a9756b023j3EUq; domain=localhost; path=/;
|
75
|
+
secure
|
76
|
+
- rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFZTI4MTVhNjc3ZTZlMmU4NWMzMzc0%0AOTljMDBjY2NhYzI0OWI1NzNmNGU0YzUwMzJjMzg2OTMyMzA5MDY1NmMwZEki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--e366b080a1da7ae2f2d90e5b9dc777b7e656c47f;
|
77
|
+
path=/; HttpOnly
|
78
|
+
Content-Length:
|
79
|
+
- '294'
|
80
|
+
Status:
|
81
|
+
- '200'
|
82
|
+
Vary:
|
83
|
+
- Accept-Encoding
|
84
|
+
Content-Type:
|
85
|
+
- text/plain;charset=utf-8
|
86
|
+
body:
|
87
|
+
encoding: US-ASCII
|
88
|
+
string: ''
|
89
|
+
http_version:
|
90
|
+
recorded_at: Thu, 10 Jan 2013 17:45:00 GMT
|
45
91
|
- request:
|
46
92
|
method: get
|
47
|
-
uri:
|
93
|
+
uri: https://localhost:3300/-/
|
48
94
|
body:
|
49
95
|
encoding: US-ASCII
|
50
96
|
string: ''
|
51
97
|
headers:
|
52
98
|
Accept:
|
53
|
-
- text/plain
|
99
|
+
- text/plain,text/occi
|
54
100
|
response:
|
55
101
|
status:
|
56
102
|
code: 200
|
57
103
|
message: OK
|
58
104
|
headers:
|
59
105
|
Date:
|
60
|
-
- Thu, 10 Jan 2013
|
106
|
+
- Thu, 10 Jan 2013 17:45:00 GMT
|
61
107
|
Server:
|
62
|
-
- Apache/2.2.
|
108
|
+
- Apache/2.2.20 (Ubuntu)
|
63
109
|
X-Powered-By:
|
64
|
-
- Phusion Passenger (mod_rails/mod_rack) 3.0.
|
110
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.12
|
65
111
|
X-Frame-Options:
|
66
112
|
- sameorigin
|
67
113
|
X-Xss-Protection:
|
@@ -69,10 +115,12 @@ http_interactions:
|
|
69
115
|
Accept:
|
70
116
|
- application/occi+json,application/json,text/plain,text/uri-list,application/xml,text/xml,application/occi+xml,text/occi
|
71
117
|
Set-Cookie:
|
72
|
-
-
|
118
|
+
- GRIDHTTP_PASSCODE=2fbf4bc478532395flYvJS; domain=localhost; path=/;
|
119
|
+
secure
|
120
|
+
- rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFZjY0YTEwZGYyZmRjZGFhMjkyNzUz%0AYTBjYzU4MTQzZTk0NWIxYzZhOWE4ZGU5ZjAzNjUwNjJlMjljNzg0YzM3Mkki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--f36990ae38f52eee308f6a26714253f76c147e5b;
|
73
121
|
path=/; HttpOnly
|
74
122
|
Content-Length:
|
75
|
-
- '
|
123
|
+
- '8975'
|
76
124
|
Status:
|
77
125
|
- '200'
|
78
126
|
Vary:
|
@@ -96,57 +144,89 @@ http_interactions:
|
|
96
144
|
http://schemas.ogf.org/occi/infrastructure/compute/action#stop http://schemas.ogf.org/occi/infrastructure/compute/action#restart
|
97
145
|
http://schemas.ogf.org/occi/infrastructure/compute/action#suspend"
|
98
146
|
|
99
|
-
Category:
|
100
|
-
|
147
|
+
Category: storagelink;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Storage
|
148
|
+
Link";rel="http://schemas.ogf.org/occi/core#link";location="/storagelink/";attributes="occi.storagelink.deviceid
|
149
|
+
occi.storagelink.mountpoint occi.storagelink.state"
|
150
|
+
|
151
|
+
Category: network;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Network
|
152
|
+
Resource";rel="http://schemas.ogf.org/occi/core#resource";location="/network/";attributes="occi.network.vlan
|
153
|
+
occi.network.label occi.network.state org.opennebula.network.id org.opennebula.network.bridge
|
154
|
+
org.opennebula.network.vlan org.opennebula.network.phydev org.opennebula.network.ip_start
|
155
|
+
org.opennebula.network.ip_end";actions="http://schemas.ogf.org/occi/infrastructure/network/action#up
|
156
|
+
http://schemas.ogf.org/occi/infrastructure/network/action#down"
|
101
157
|
|
102
158
|
Category: storage;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Storage
|
103
159
|
Resource";rel="http://schemas.ogf.org/occi/core#resource";location="/storage/";attributes="occi.storage.size
|
104
|
-
occi.storage.state
|
160
|
+
occi.storage.state org.opennebula.storage.id org.opennebula.storage.type org.opennebula.storage.persistent
|
161
|
+
org.opennebula.storage.dev_prefix org.opennebula.storage.bus org.opennebula.storage.driver
|
162
|
+
org.opennebula.storage.fstype";actions="http://schemas.ogf.org/occi/infrastructure/storage/action#online
|
105
163
|
http://schemas.ogf.org/occi/infrastructure/storage/action#offline http://schemas.ogf.org/occi/infrastructure/storage/action#backup
|
106
164
|
http://schemas.ogf.org/occi/infrastructure/storage/action#snapshot http://schemas.ogf.org/occi/infrastructure/storage/action#resize"
|
107
165
|
|
108
|
-
Category:
|
109
|
-
|
110
|
-
occi.network.label occi.network.state";actions="http://schemas.ogf.org/occi/infrastructure/network/action#up
|
111
|
-
http://schemas.ogf.org/occi/infrastructure/network/action#down"
|
166
|
+
Category: networkinterface;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Networkinterface";rel="http://schemas.ogf.org/occi/core#link";location="/networkinterface/";attributes="occi.networkinterface.interface
|
167
|
+
occi.networkinterface.mac occi.networkinterface.state"
|
112
168
|
|
113
|
-
Category:
|
114
|
-
|
115
|
-
|
169
|
+
Category: console;scheme="http://schemas.ogf.org/occi/infrastructure/compute#";class="kind";title="Link
|
170
|
+
to the VM''s console";rel="http://schemas.ogf.org/occi/core#link";location="/console/"
|
171
|
+
|
172
|
+
Category: os_tpl;scheme="http://schemas.ogf.org/occi/infrastructure#";class="mixin";title="Operating
|
173
|
+
System Template";location="/mixins/os_tpl/"
|
116
174
|
|
117
175
|
Category: ipnetwork;scheme="http://schemas.ogf.org/occi/infrastructure/network#";class="mixin";title="IP
|
118
176
|
Network Mixin";location="/mixins/ipnetwork/";attributes="occi.network.address
|
119
177
|
occi.network.gateway occi.network.allocation occi.network.state"
|
120
178
|
|
121
|
-
Category: resource_tpl;scheme="http://schemas.ogf.org/occi/infrastructure#";class="mixin";title="Resource
|
122
|
-
Template";location="/mixins/resource_tpl/"
|
123
|
-
|
124
|
-
Category: os_tpl;scheme="http://schemas.ogf.org/occi/infrastructure#";class="mixin";title="Operating
|
125
|
-
System Template";location="/mixins/os_tpl/"
|
126
|
-
|
127
179
|
Category: ipnetworkinterface;scheme="http://schemas.ogf.org/occi/infrastructure/networkinterface#";class="mixin";title="IP
|
128
180
|
Networkinterface Mixin";location="/mixins/ipnetworkinterface/";attributes="occi.networkinterface.address
|
129
181
|
occi.networkinterface.gateway occi.networkinterface.allocation occi.networkinterface.state"
|
130
182
|
|
131
|
-
Category:
|
132
|
-
|
183
|
+
Category: resource_tpl;scheme="http://schemas.ogf.org/occi/infrastructure#";class="mixin";title="Resource
|
184
|
+
Template";location="/mixins/resource_tpl/"
|
133
185
|
|
134
|
-
Category:
|
186
|
+
Category: compute;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
|
187
|
+
specific Compute attributes";location="/mixins/compute/";attributes="org.opennebula.compute.cpu
|
188
|
+
org.opennebula.compute.kernel org.opennebula.compute.initrd org.opennebula.compute.root
|
189
|
+
org.opennebula.compute.kernel_cmd org.opennebula.compute.bootloader org.opennebula.compute.boot"
|
190
|
+
|
191
|
+
Category: storagelink;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
|
192
|
+
specific Storagelink attributes";location="/mixins/storagelink/";attributes="org.opennebula.storagelink.bus
|
193
|
+
org.opennebula.storagelink.driver"
|
194
|
+
|
195
|
+
Category: network;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
|
196
|
+
specific Network attributes";location="/mixins/network/";attributes="org.opennebula.network.id
|
197
|
+
org.opennebula.network.bridge org.opennebula.network.vlan org.opennebula.network.phydev
|
198
|
+
org.opennebula.network.ip_start org.opennebula.network.ip_end"
|
199
|
+
|
200
|
+
Category: storage;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
|
201
|
+
specific Storage attributes";location="/mixins/storage/";attributes="org.opennebula.storage.id
|
202
|
+
org.opennebula.storage.type org.opennebula.storage.persistent org.opennebula.storage.dev_prefix
|
203
|
+
org.opennebula.storage.bus org.opennebula.storage.driver org.opennebula.storage.fstype"
|
204
|
+
|
205
|
+
Category: networkinterface;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
|
206
|
+
specific Networkinterface attributes";location="/mixins/networkinterface/";attributes="org.opennebula.networkinterface.bridge
|
207
|
+
org.opennebula.networkinterface.script org.opennebula.networkinterface.model
|
208
|
+
org.opennebula.networkinterface.white_ports_tcp org.opennebula.networkinterface.black_ports_tcp
|
209
|
+
org.opennebula.networkinterface.white_ports_udp org.opennebula.networkinterface.black_ports_udp
|
210
|
+
org.opennebula.networkinterface.icmp"
|
211
|
+
|
212
|
+
Category: large;scheme="http://occi.localhost:3300/occi/infrastructure/resource_tpl#";class="mixin";title="Large
|
135
213
|
Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/large/";attributes="occi.compute.architecture
|
136
214
|
occi.compute.cores occi.compute.speed occi.compute.memory"
|
137
215
|
|
138
|
-
Category:
|
139
|
-
Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/
|
216
|
+
Category: extra_large;scheme="http://occi.localhost:3300/occi/infrastructure/resource_tpl#";class="mixin";title="Extra
|
217
|
+
Large Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/extra_large/";attributes="occi.compute.architecture
|
140
218
|
occi.compute.cores occi.compute.speed occi.compute.memory"
|
141
219
|
|
142
|
-
Category: medium;scheme="http://
|
220
|
+
Category: medium;scheme="http://occi.localhost:3300/occi/infrastructure/resource_tpl#";class="mixin";title="Medium
|
143
221
|
Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/medium/";attributes="occi.compute.architecture
|
144
222
|
occi.compute.cores occi.compute.speed occi.compute.memory"
|
145
223
|
|
146
|
-
Category:
|
147
|
-
|
224
|
+
Category: small;scheme="http://occi.localhost:3300/occi/infrastructure/resource_tpl#";class="mixin";title="Small
|
225
|
+
Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/small/";attributes="occi.compute.architecture
|
148
226
|
occi.compute.cores occi.compute.speed occi.compute.memory"
|
149
227
|
|
228
|
+
Category: mytesttemplate;scheme="http://occi.localhost:3300/occi/infrastructure/os_tpl#";class="mixin";title="MyTestTemplate";rel="http://schemas.ogf.org/occi/infrastructure#os_tpl";location="/mixins/mytesttemplate/"
|
229
|
+
|
150
230
|
Category: start;scheme="http://schemas.ogf.org/occi/infrastructure/compute/action#";class="action";title="Start
|
151
231
|
Compute instance"
|
152
232
|
|
@@ -159,6 +239,12 @@ http_interactions:
|
|
159
239
|
Category: suspend;scheme="http://schemas.ogf.org/occi/infrastructure/compute/action#";class="action";title="Suspend
|
160
240
|
Compute instance";attributes="method"
|
161
241
|
|
242
|
+
Category: up;scheme="http://schemas.ogf.org/occi/infrastructure/network/action#";class="action";title="Activate
|
243
|
+
network"
|
244
|
+
|
245
|
+
Category: down;scheme="http://schemas.ogf.org/occi/infrastructure/network/action#";class="action";title="Activate
|
246
|
+
network"
|
247
|
+
|
162
248
|
Category: online;scheme="http://schemas.ogf.org/occi/infrastructure/storage/action#";class="action";title="Activate
|
163
249
|
Storage"
|
164
250
|
|
@@ -174,115 +260,7 @@ http_interactions:
|
|
174
260
|
Category: resize;scheme="http://schemas.ogf.org/occi/infrastructure/storage/action#";class="action";title="Resize
|
175
261
|
Storage";attributes="size"
|
176
262
|
|
177
|
-
Category: up;scheme="http://schemas.ogf.org/occi/infrastructure/network/action#";class="action";title="Activate
|
178
|
-
network"
|
179
|
-
|
180
|
-
Category: down;scheme="http://schemas.ogf.org/occi/infrastructure/network/action#";class="action";title="Activate
|
181
|
-
network"
|
182
|
-
|
183
|
-
'
|
184
|
-
http_version:
|
185
|
-
recorded_at: Thu, 10 Jan 2013 13:52:41 GMT
|
186
|
-
- request:
|
187
|
-
method: get
|
188
|
-
uri: http://141.5.99.69/
|
189
|
-
body:
|
190
|
-
encoding: US-ASCII
|
191
|
-
string: ''
|
192
|
-
headers:
|
193
|
-
Accept:
|
194
|
-
- text/plain
|
195
|
-
response:
|
196
|
-
status:
|
197
|
-
code: 200
|
198
|
-
message: OK
|
199
|
-
headers:
|
200
|
-
Date:
|
201
|
-
- Tue, 12 Mar 2013 13:29:42 GMT
|
202
|
-
Server:
|
203
|
-
- Apache/2.2.22 (Ubuntu)
|
204
|
-
X-Powered-By:
|
205
|
-
- Phusion Passenger (mod_rails/mod_rack) 3.0.18
|
206
|
-
X-Frame-Options:
|
207
|
-
- sameorigin
|
208
|
-
X-Xss-Protection:
|
209
|
-
- 1; mode=block
|
210
|
-
Accept:
|
211
|
-
- application/occi+json,application/json,text/plain,text/uri-list,application/xml,text/xml,application/occi+xml,text/occi
|
212
|
-
Set-Cookie:
|
213
|
-
- rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFNjFhMGNmNzdmMDUyOWRmMTBlNWRj%0AOGM2NjE0YWZmMGJjZTYxNDliYjY1OTVhM2E0MjcwNmJiMzJiM2Y2MjY1N0ki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--c0f98b65169ac2a7e9b2849d1315a7649a2c4e32;
|
214
|
-
path=/; HttpOnly
|
215
|
-
Content-Length:
|
216
|
-
- '738'
|
217
|
-
Status:
|
218
|
-
- '200'
|
219
|
-
Vary:
|
220
|
-
- Accept-Encoding
|
221
|
-
Content-Type:
|
222
|
-
- text/plain;charset=utf-8
|
223
|
-
body:
|
224
|
-
encoding: US-ASCII
|
225
|
-
string: ! 'X-OCCI-Location: http://141.5.99.69/compute/48e7c51c-5a7d-11e2-a300-fa163e16d22f
|
226
|
-
|
227
|
-
X-OCCI-Location: http://141.5.99.69/compute/6c706278-5a7d-11e2-a300-fa163e16d22f
|
228
|
-
|
229
|
-
X-OCCI-Location: http://141.5.99.69/compute/7582ffc4-5a7d-11e2-a300-fa163e16d22f
|
230
|
-
|
231
|
-
X-OCCI-Location: http://141.5.99.69/compute/8eb0deb2-5a7d-11e2-a300-fa163e16d22f
|
232
|
-
|
233
|
-
X-OCCI-Location: http://141.5.99.69/compute/8efa93e0-5a7d-11e2-a300-fa163e16d22f
|
234
|
-
|
235
|
-
X-OCCI-Location: http://141.5.99.69/compute/49cbeaee-5b1d-11e2-a300-fa163e16d22f
|
236
|
-
|
237
|
-
X-OCCI-Location: http://141.5.99.69/compute/c87fa76c-5b1e-11e2-a300-fa163e16d22f
|
238
|
-
|
239
|
-
X-OCCI-Location: http://141.5.99.69/compute/1cc544b2-5b1f-11e2-a300-fa163e16d22f
|
240
|
-
|
241
|
-
X-OCCI-Location: http://141.5.99.69/compute/38e2a6b2-5b1f-11e2-a300-fa163e16d22f
|
242
|
-
|
243
263
|
'
|
244
264
|
http_version:
|
245
|
-
recorded_at:
|
246
|
-
- request:
|
247
|
-
method: head
|
248
|
-
uri: http://141.5.99.69/
|
249
|
-
body:
|
250
|
-
encoding: US-ASCII
|
251
|
-
string: ''
|
252
|
-
headers:
|
253
|
-
Accept:
|
254
|
-
- text/plain
|
255
|
-
response:
|
256
|
-
status:
|
257
|
-
code: 200
|
258
|
-
message: OK
|
259
|
-
headers:
|
260
|
-
Date:
|
261
|
-
- Tue, 12 Mar 2013 15:27:53 GMT
|
262
|
-
Server:
|
263
|
-
- Apache/2.2.22 (Ubuntu)
|
264
|
-
X-Powered-By:
|
265
|
-
- Phusion Passenger (mod_rails/mod_rack) 3.0.18
|
266
|
-
X-Frame-Options:
|
267
|
-
- sameorigin
|
268
|
-
X-Xss-Protection:
|
269
|
-
- 1; mode=block
|
270
|
-
Accept:
|
271
|
-
- application/occi+json,application/json,text/plain,text/uri-list,application/xml,text/xml,application/occi+xml,text/occi
|
272
|
-
Set-Cookie:
|
273
|
-
- rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFOTdkZDQ1N2ZiYjdmMjE4NDgzNjMy%0AMzE0ZGI3YjRjOGIwZjMyNTY4ODRkZGVhNjE3NWM4OWI2MDRkNzJiMmFjOUki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--222744ef8a6fa387cf796b175ba56ec13ea1fa93;
|
274
|
-
path=/; HttpOnly
|
275
|
-
Content-Length:
|
276
|
-
- '738'
|
277
|
-
Status:
|
278
|
-
- '200'
|
279
|
-
Vary:
|
280
|
-
- Accept-Encoding
|
281
|
-
Content-Type:
|
282
|
-
- text/plain;charset=utf-8
|
283
|
-
body:
|
284
|
-
encoding: US-ASCII
|
285
|
-
string: ''
|
286
|
-
http_version:
|
287
|
-
recorded_at: Tue, 12 Mar 2013 15:27:46 GMT
|
265
|
+
recorded_at: Thu, 10 Jan 2013 17:45:00 GMT
|
288
266
|
recorded_with: VCR 2.4.0
|