occi-api 4.1.1 → 4.2.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/Gemfile +9 -0
  2. data/README.md +37 -11
  3. data/Rakefile +2 -9
  4. data/examples/dsl_example.rb +2 -2
  5. data/examples/x509auth_example.rb +9 -9
  6. data/lib/occi-api.rb +0 -1
  7. data/lib/occi/api/client/client_base.rb +102 -92
  8. data/lib/occi/api/client/client_http.rb +6 -6
  9. data/lib/occi/api/client/http/authn_plugins/keystone.rb +27 -11
  10. data/lib/occi/api/dsl.rb +7 -3
  11. data/lib/occi/api/version.rb +1 -1
  12. data/occi-api.gemspec +2 -14
  13. 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
  14. 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
  15. 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
  16. data/spec/occi/api/client/client_http_spec.rb +52 -28
  17. data/spec/occi/api/dsl_spec.rb +0 -6
  18. data/spec/spec_helper.rb +4 -1
  19. metadata +31 -200
  20. checksums.yaml +0 -7
  21. 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
  22. 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
  23. 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
  24. data/features/cassettes/Read_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +0 -288
  25. data/features/cassettes/Update_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +0 -288
  26. data/features/common/step_definitions/common_steps.rb +0 -32
  27. data/features/occi/core/create/create.feature +0 -18
  28. data/features/occi/core/create/step_definitions/create_steps.rb +0 -0
  29. data/features/occi/core/delete/delete.feature +0 -18
  30. data/features/occi/core/delete/step_definitions/delete_steps.rb +0 -0
  31. data/features/occi/core/discovery_interface/discovery_interface.feature +0 -37
  32. data/features/occi/core/discovery_interface/step_definitions/discovery_interface_steps.rb +0 -19
  33. data/features/occi/core/miscellaneous/miscellaneous.feature +0 -18
  34. data/features/occi/core/miscellaneous/step_definitions/miscellaneous_steps.rb +0 -0
  35. data/features/occi/core/read/read.feature +0 -18
  36. data/features/occi/core/read/step_definitions/read_steps.rb +0 -0
  37. data/features/occi/core/update/step_definitions/update_steps.rb +0 -0
  38. data/features/occi/core/update/update.feature +0 -18
  39. data/features/occi/infrastructure/create/create.feature +0 -18
  40. data/features/occi/infrastructure/create/step_definitions/create_steps.rb +0 -0
  41. data/features/support/env.rb +0 -16
  42. data/lib/occi/api/client/client_amqp.rb +0 -766
  43. 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 << get('/')
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 << get(sanitize_resource_link(location))
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 << get(sanitize_resource_link(resource_type_identifier))
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, "Authentication failed with code #{response.code.to_s}!" unless response.success?
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, "Keystone AuthN failed with #{response.code.to_s}!" unless response.code == 401
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
- unless response.headers['www-authenticate'] && response.headers['www-authenticate'].start_with?('Keystone')
33
- raise ::Occi::Api::Client::Errors::AuthnError, "Target endpoint is probably not OpenStack, fallback failed!"
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
- @keystone_url = /^Keystone uri='(.+)'$/.match(response.headers['www-authenticate'])[1]
37
- raise ::Occi::Api::Client::Errors::AuthnError, "Unable to get Keystone's URL from the response!" unless @keystone_url
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 = @keystone_url.chomp('/').chomp('/v2.0')
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, "Unable to get a token from Keystone!"
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, "Unable to request a token from Keystone! Chosen AuthN not supported."
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, "Keystone didn't return any tenants!" unless response['tenants'] && response['tenants'].first
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, "Unable to get a tenant from Keystone!" unless tenant
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
@@ -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.find_mixin(*args)
138
+ @client.get_mixin(*args)
135
139
  end
136
140
 
137
141
  private
@@ -1,5 +1,5 @@
1
1
  module Occi
2
2
  module Api
3
- VERSION = "4.1.1" unless defined?(::Occi::Api::VERSION)
3
+ VERSION = "4.2.0.beta.2" unless defined?(::Occi::Api::VERSION)
4
4
  end
5
5
  end
@@ -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,features}/*`.split("\n")
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.1.0'
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: http://141.5.99.69/
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 13:52:01 GMT
18
+ - Thu, 10 Jan 2013 17:44:39 GMT
19
19
  Server:
20
- - Apache/2.2.22 (Ubuntu)
20
+ - Apache/2.2.20 (Ubuntu)
21
21
  X-Powered-By:
22
- - Phusion Passenger (mod_rails/mod_rack) 3.0.18
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
- - rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFMDg3MzljYWY5NzIxY2VlOWE0NjI0%0AYTIxNWJlNjNmYzZmMTMxMzAxNDU2YzlkMGM1YjU0OWU1ZDFkNTZkYTE5Zkki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--ddb37075ac62fd3bda55c7fc4c29d508530b1d5d;
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
- - '738'
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 13:52:41 GMT
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: http://141.5.99.69/-/
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 13:52:01 GMT
106
+ - Thu, 10 Jan 2013 17:45:00 GMT
61
107
  Server:
62
- - Apache/2.2.22 (Ubuntu)
108
+ - Apache/2.2.20 (Ubuntu)
63
109
  X-Powered-By:
64
- - Phusion Passenger (mod_rails/mod_rack) 3.0.18
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
- - rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFNDQ2ZGUwN2IwNzRiNjM0ZTIxNGFh%0AMGRhMjUzZDRmY2ZjMDgwMTc1MjkzNjc2MGFhYTlkNmUzOWE4N2QyYjJmMEki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--af7a5b05f9640950c2dd6dcd66eb00a201915e4c;
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
- - '6397'
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: 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
100
- occi.networkinterface.mac occi.networkinterface.state"
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";actions="http://schemas.ogf.org/occi/infrastructure/storage/action#online
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: network;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Network
109
- Resource";rel="http://schemas.ogf.org/occi/core#resource";location="/network/";attributes="occi.network.vlan
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: storagelink;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Storage
114
- Link";rel="http://schemas.ogf.org/occi/core#link";location="/storagelink/";attributes="occi.storagelink.deviceid
115
- occi.storagelink.mountpoint occi.storagelink.state"
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: my_os;scheme="http://my.occi.service/occi/infrastructure/os_tpl#";class="mixin";title="My
132
- OS Template";rel="http://schemas.ogf.org/occi/infrastructure#os_tpl";location="/mixins/my_os/"
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: large;scheme="http://my.occi.service/occi/infrastructure/resource_tpl#";class="mixin";title="Large
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: small;scheme="http://my.occi.service/occi/infrastructure/resource_tpl#";class="mixin";title="Small
139
- Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/small/";attributes="occi.compute.architecture
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://my.occi.service/occi/infrastructure/resource_tpl#";class="mixin";title="Medium
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: extra_large;scheme="http://my.occi.service/occi/infrastructure/resource_tpl#";class="mixin";title="Extra
147
- Large Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/extra_large/";attributes="occi.compute.architecture
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: Tue, 12 Mar 2013 13:29:35 GMT
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