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.
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