occi-api 4.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. data/.gitignore +15 -0
  2. data/.rspec +1 -0
  3. data/.travis.yml +43 -0
  4. data/.yardopts +1 -0
  5. data/AUTHORS +9 -0
  6. data/Gemfile +16 -0
  7. data/LICENSE +13 -0
  8. data/README.md +344 -0
  9. data/Rakefile +37 -0
  10. data/examples/dsl_example.rb +167 -0
  11. data/examples/x509auth_example.rb +161 -0
  12. data/ext/mkrf_conf.rb +34 -0
  13. data/features/cassettes/Create_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  14. data/features/cassettes/Delete_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  15. data/features/cassettes/Discovery_Interface/Retrieving_all_OCCI_Categories_supported_by_the_OCCI_Server/_http_http___141_5_99_69__application_json_200_.yml +333 -0
  16. data/features/cassettes/Discovery_Interface/Retrieving_all_OCCI_Categories_supported_by_the_OCCI_Server/_http_http___141_5_99_69__text_plain_200_.yml +529 -0
  17. 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 +288 -0
  18. data/features/cassettes/Miscellaneous_operation_on_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  19. data/features/cassettes/Read_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  20. data/features/cassettes/Update_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  21. data/features/common/step_definitions/common_steps.rb +32 -0
  22. data/features/occi/core/create/create.feature +18 -0
  23. data/features/occi/core/create/step_definitions/create_steps.rb +0 -0
  24. data/features/occi/core/delete/delete.feature +18 -0
  25. data/features/occi/core/delete/step_definitions/delete_steps.rb +0 -0
  26. data/features/occi/core/discovery_interface/discovery_interface.feature +37 -0
  27. data/features/occi/core/discovery_interface/step_definitions/discovery_interface_steps.rb +19 -0
  28. data/features/occi/core/miscellaneous/miscellaneous.feature +18 -0
  29. data/features/occi/core/miscellaneous/step_definitions/miscellaneous_steps.rb +0 -0
  30. data/features/occi/core/read/read.feature +18 -0
  31. data/features/occi/core/read/step_definitions/read_steps.rb +0 -0
  32. data/features/occi/core/update/step_definitions/update_steps.rb +0 -0
  33. data/features/occi/core/update/update.feature +18 -0
  34. data/features/occi/infrastructure/create/create.feature +18 -0
  35. data/features/occi/infrastructure/create/step_definitions/create_steps.rb +0 -0
  36. data/features/support/env.rb +16 -0
  37. data/lib/occi/api/client/client_amqp.rb +766 -0
  38. data/lib/occi/api/client/client_base.rb +689 -0
  39. data/lib/occi/api/client/client_http.rb +541 -0
  40. data/lib/occi/api/client/errors/authn_error.rb +7 -0
  41. data/lib/occi/api/client/errors.rb +1 -0
  42. data/lib/occi/api/client/http/authn_plugins/base.rb +27 -0
  43. data/lib/occi/api/client/http/authn_plugins/basic.rb +22 -0
  44. data/lib/occi/api/client/http/authn_plugins/digest.rb +22 -0
  45. data/lib/occi/api/client/http/authn_plugins/dummy.rb +13 -0
  46. data/lib/occi/api/client/http/authn_plugins/keystone.rb +61 -0
  47. data/lib/occi/api/client/http/authn_plugins/x509.rb +46 -0
  48. data/lib/occi/api/client/http/authn_plugins.rb +6 -0
  49. data/lib/occi/api/client/http/authn_utils.rb +87 -0
  50. data/lib/occi/api/client/http/httparty_fix.rb +53 -0
  51. data/lib/occi/api/client/http/net_http_fix.rb +21 -0
  52. data/lib/occi/api/dsl.rb +146 -0
  53. data/lib/occi/api/version.rb +5 -0
  54. data/lib/occi-api.rb +14 -0
  55. data/occi-api.gemspec +38 -0
  56. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/creates_a_new_compute_resource.yml +266 -0
  57. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/creates_a_new_network_resource.yml +266 -0
  58. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/creates_a_new_storage_resource.yml +266 -0
  59. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/deletes_a_compute_resource.yml +266 -0
  60. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/deletes_a_network_resource.yml +266 -0
  61. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/deletes_a_storage_resource.yml +266 -0
  62. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/deploys_an_instance_based_on_OVF_OVA_file.yml +266 -0
  63. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/describes_compute_resources.yml +368 -0
  64. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/describes_network_resources.yml +370 -0
  65. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/describes_storage_resources.yml +430 -0
  66. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/establishes_connection.yml +266 -0
  67. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/finds_and_describes_scoped_os_tpl_mixin.yml +266 -0
  68. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/finds_and_describes_scoped_resource_tpl_mixin.yml +266 -0
  69. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/finds_and_describes_unscoped_mixin.yml +266 -0
  70. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_compute_resource_using_type_identifier.yml +266 -0
  71. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_compute_resource_using_type_name.yml +266 -0
  72. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_network_resource_using_type_identifier.yml +266 -0
  73. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_network_resource_using_type_name.yml +266 -0
  74. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_storage_resource_using_type_identifier.yml +266 -0
  75. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_storage_resource_using_type_name.yml +266 -0
  76. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_entity_type_identifiers.yml +266 -0
  77. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_entity_types.yml +266 -0
  78. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_link_type_identifiers.yml +266 -0
  79. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_link_types.yml +266 -0
  80. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_mixin_type_identifiers.yml +266 -0
  81. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_mixin_types.yml +266 -0
  82. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_mixins.yml +266 -0
  83. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_resource_type_identifiers.yml +266 -0
  84. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_resource_types.yml +266 -0
  85. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_compute_resources.yml +308 -0
  86. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_network_resources.yml +308 -0
  87. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_os_tpl_mixins.yml +266 -0
  88. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_resource_tpl_mixins.yml +266 -0
  89. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_storage_resources.yml +310 -0
  90. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/refreshes_its_model.yml +485 -0
  91. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/triggers_an_action_on_a_compute_resource.yml +266 -0
  92. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/triggers_an_action_on_a_network_resource.yml +266 -0
  93. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/triggers_an_action_on_a_storage_resource.yml +266 -0
  94. data/spec/occi/api/client/client_amqp_spec.rb +158 -0
  95. data/spec/occi/api/client/client_http_spec.rb +292 -0
  96. data/spec/occi/api/client/http/authn_utils_spec.rb +55 -0
  97. data/spec/occi/api/client/http/httparty_fix_spec.rb +0 -0
  98. data/spec/occi/api/client/http/net_http_fix_spec.rb +0 -0
  99. data/spec/occi/api/client/http/rocci-cred-cert.pem +3 -0
  100. data/spec/occi/api/client/http/rocci-cred-key-jruby.pem +3 -0
  101. data/spec/occi/api/client/http/rocci-cred-key.pem +3 -0
  102. data/spec/occi/api/client/http/rocci-cred.p12 +0 -0
  103. data/spec/occi/api/dsl_spec.rb +21 -0
  104. data/spec/spec_helper.rb +38 -0
  105. metadata +379 -0
@@ -0,0 +1,292 @@
1
+ require 'rspec'
2
+
3
+ module Occi
4
+ module Api
5
+ module Client
6
+
7
+ vcr_options = { :record => :new_episodes }
8
+ describe ClientHttp, :vcr => vcr_options do
9
+
10
+ context "using media type text/plain" do
11
+
12
+ before(:each) do
13
+ @client = Occi::Api::Client::ClientHttp.new({
14
+ :endpoint => 'https://localhost:3300',
15
+ :auth => { :type => "none" },
16
+ :log => { :out => "/dev/null",
17
+ :level => Occi::Log::DEBUG },
18
+ :auto_connect => true,
19
+ :media_type => "text/plain,text/occi"
20
+ })
21
+ end
22
+
23
+ after(:each) do
24
+ @client.logger.close if @client && @client.logger
25
+ end
26
+
27
+ it "establishes connection" do
28
+ @client.connected.should be_true
29
+ end
30
+
31
+ it "instantiates a compute resource using type name" do
32
+ compute = @client.get_resource "compute"
33
+
34
+ compute.should be_a_kind_of Occi::Core::Resource
35
+ compute.kind.type_identifier.should eq "http://schemas.ogf.org/occi/infrastructure#compute"
36
+ end
37
+
38
+ it "instantiates a compute resource using type identifier" do
39
+ compute = @client.get_resource "http://schemas.ogf.org/occi/infrastructure#compute"
40
+
41
+ compute.should be_a_kind_of Occi::Core::Resource
42
+ compute.kind.type_identifier.should eq "http://schemas.ogf.org/occi/infrastructure#compute"
43
+ end
44
+
45
+ it "instantiates a network resource using type name" do
46
+ network = @client.get_resource "network"
47
+
48
+ network.should be_a_kind_of Occi::Core::Resource
49
+ network.kind.type_identifier.should eq "http://schemas.ogf.org/occi/infrastructure#network"
50
+ end
51
+
52
+ it "instantiates a network resource using type identifier" do
53
+ network = @client.get_resource "http://schemas.ogf.org/occi/infrastructure#network"
54
+
55
+ network.should be_a_kind_of Occi::Core::Resource
56
+ network.kind.type_identifier.should eq "http://schemas.ogf.org/occi/infrastructure#network"
57
+ end
58
+
59
+ it "instantiates a storage resource using type name" do
60
+ storage = @client.get_resource "storage"
61
+
62
+ storage.should be_a_kind_of Occi::Core::Resource
63
+ storage.kind.type_identifier.should eq "http://schemas.ogf.org/occi/infrastructure#storage"
64
+ end
65
+
66
+ it "instantiates a storage resource using type identifier" do
67
+ storage = @client.get_resource "http://schemas.ogf.org/occi/infrastructure#storage"
68
+
69
+ storage.should be_a_kind_of Occi::Core::Resource
70
+ storage.kind.type_identifier.should eq "http://schemas.ogf.org/occi/infrastructure#storage"
71
+ end
72
+
73
+ it "lists all available resource types" do
74
+ @client.get_resource_types.should include("compute", "storage", "network")
75
+ end
76
+
77
+ it "lists all available resource type identifiers" do
78
+ @client.get_resource_type_identifiers.should include(
79
+ "http://schemas.ogf.org/occi/infrastructure#compute",
80
+ "http://schemas.ogf.org/occi/infrastructure#network",
81
+ "http://schemas.ogf.org/occi/infrastructure#storage"
82
+ )
83
+ end
84
+
85
+ it "lists all available entity types" do
86
+ @client.get_entity_types.should include("entity", "resource", "link")
87
+ end
88
+
89
+ it "lists all available entity type identifiers" do
90
+ @client.get_entity_type_identifiers.should include(
91
+ "http://schemas.ogf.org/occi/core#entity",
92
+ "http://schemas.ogf.org/occi/core#resource",
93
+ "http://schemas.ogf.org/occi/core#link"
94
+ )
95
+ end
96
+
97
+ it "lists all available link types" do
98
+ @client.get_link_types.should include("storagelink", "networkinterface")
99
+ end
100
+
101
+ it "lists all available link type identifiers" do
102
+ @client.get_link_type_identifiers.should include(
103
+ "http://schemas.ogf.org/occi/infrastructure#storagelink",
104
+ "http://schemas.ogf.org/occi/infrastructure#networkinterface"
105
+ )
106
+ end
107
+
108
+ it "lists all available mixin types" do
109
+ @client.get_mixin_types.should include("os_tpl", "resource_tpl")
110
+ end
111
+
112
+ it "lists all available mixin type identifiers" do
113
+ @client.get_mixin_type_identifiers.should include(
114
+ "http://schemas.ogf.org/occi/infrastructure#os_tpl",
115
+ "http://schemas.ogf.org/occi/infrastructure#resource_tpl"
116
+ )
117
+ end
118
+
119
+ it "lists compute resources" do
120
+ @client.list("compute").should eq ["https://localhost:3300/compute/c62fce01-0d8e-510c-ba07-973b0d6d5034"]
121
+ end
122
+
123
+ it "lists network resources" do
124
+ @client.list("network").should eq ["https://localhost:3300/network/1e8e0d63-e3c8-5be7-8a46-f4df226bca01"]
125
+ end
126
+
127
+ it "lists storage resources" do
128
+ @client.list("storage").should include(
129
+ "https://localhost:3300/storage/32fc6c92-88aa-54dc-b814-be0df741278e",
130
+ "https://localhost:3300/storage/5c1a7099-859e-5c3d-9386-740edbb610b8"
131
+ )
132
+ end
133
+
134
+ it "lists all available mixins" do
135
+ @client.get_mixins.should include(
136
+ "http://occi.localhost:3300/occi/infrastructure/resource_tpl#large",
137
+ "http://occi.localhost:3300/occi/infrastructure/resource_tpl#extra_large",
138
+ "http://occi.localhost:3300/occi/infrastructure/resource_tpl#medium",
139
+ "http://occi.localhost:3300/occi/infrastructure/resource_tpl#small",
140
+ "http://occi.localhost:3300/occi/infrastructure/os_tpl#mytesttemplate"
141
+ )
142
+ end
143
+
144
+ it "lists os_tpl mixins" do
145
+ @client.get_mixins("os_tpl").should eq ["http://occi.localhost:3300/occi/infrastructure/os_tpl#mytesttemplate"]
146
+ end
147
+
148
+ it "lists resource_tpl mixins" do
149
+ @client.get_mixins("resource_tpl").should include(
150
+ "http://occi.localhost:3300/occi/infrastructure/resource_tpl#large",
151
+ "http://occi.localhost:3300/occi/infrastructure/resource_tpl#extra_large",
152
+ "http://occi.localhost:3300/occi/infrastructure/resource_tpl#medium",
153
+ "http://occi.localhost:3300/occi/infrastructure/resource_tpl#small"
154
+ )
155
+ end
156
+
157
+ it "describes compute resources" do
158
+ cmpts = @client.describe("compute")
159
+
160
+ cmpts.length.should eq 1
161
+ cmpts.first.resources.first.attributes['occi.core.id'].should eq('c62fce01-0d8e-510c-ba07-973b0d6d5034')
162
+ cmpts.first.resources.first.attributes['occi.core.title'].should eq('one-3')
163
+ cmpts.first.resources.first.attributes['occi.compute.cores'].should eq(2)
164
+ cmpts.first.resources.first.attributes['org.opennebula.compute.cpu'].should eq(2.0)
165
+ cmpts.first.resources.first.attributes['occi.compute.memory'].should eq(1.564)
166
+ end
167
+
168
+ it "describes network resources" do
169
+ nets = @client.describe "network"
170
+
171
+ nets.length.should eq 1
172
+ nets.first.resources.first.attributes['occi.core.id'].should eq('1e8e0d63-e3c8-5be7-8a46-f4df226bca01')
173
+ nets.first.resources.first.attributes['occi.core.title'].should eq('private')
174
+ nets.first.resources.first.attributes['occi.network.allocation'].should eq('dynamic')
175
+ nets.first.resources.first.attributes['org.opennebula.network.id'].should eq("1")
176
+ end
177
+
178
+ it "describes storage resources" do
179
+ stors = @client.describe "storage"
180
+
181
+ stors.length.should eq 2
182
+ stors.last.resources.first.attributes['occi.core.id'].should eq('5c1a7099-859e-5c3d-9386-740edbb610b8')
183
+ stors.last.resources.first.attributes['occi.core.title'].should eq('ttylinux - VMware ')
184
+ stors.last.resources.first.attributes['occi.storage.state'].should eq('online')
185
+ stors.last.resources.first.attributes['org.opennebula.storage.id'].should eq("4")
186
+
187
+ stors.first.resources.first.attributes['occi.core.id'].should eq('32fc6c92-88aa-54dc-b814-be0df741278e')
188
+ end
189
+
190
+ it "finds and describes unscoped mixin" do
191
+ @client.find_mixin('mytesttemplate', nil, true)
192
+ end
193
+
194
+ it "finds and describes scoped os_tpl mixin" do
195
+ @client.find_mixin('mytesttemplate', "os_tpl", true)
196
+ end
197
+
198
+ it "finds and describes scoped resource_tpl mixin" do
199
+ @client.find_mixin('large', "resource_tpl", true)
200
+ end
201
+
202
+ it "creates a new compute resource"
203
+
204
+ it "creates a new storage resource"
205
+
206
+ it "creates a new network resource"
207
+
208
+ it "deploys an instance based on OVF/OVA file"
209
+
210
+ it "deletes a compute resource"
211
+
212
+ it "deletes a network resource"
213
+
214
+ it "deletes a storage resource"
215
+
216
+ it "triggers an action on a compute resource"
217
+
218
+ it "triggers an action on a storage resource"
219
+
220
+ it "triggers an action on a network resource"
221
+
222
+ it "refreshes its model" do
223
+ @client.refresh
224
+ end
225
+
226
+ end
227
+
228
+ context "using media type application/occi+json" do
229
+
230
+ before(:each) do
231
+ #@client = Occi::Api::ClientHttp.new({
232
+ # :endpoint => 'https://localhost:3300',
233
+ # :auth => { :type => "none" },
234
+ # :log => { :out => "/dev/null",
235
+ # :level => Occi::Log::DEBUG },
236
+ # :auto_connect => true,
237
+ # :media_type => "application/occi+json"
238
+ #})
239
+ end
240
+
241
+ it "establishes connection"
242
+
243
+ it "lists compute resources"
244
+
245
+ it "lists network resources"
246
+
247
+ it "lists storage resources"
248
+
249
+ it "lists all available mixins"
250
+
251
+ it "lists os_tpl mixins"
252
+
253
+ it "lists resource_tpl mixins"
254
+
255
+ it "describes compute resources"
256
+
257
+ it "describes network resources"
258
+
259
+ it "describes storage resources"
260
+
261
+ it "describes all available mixins"
262
+
263
+ it "describes os_tpl mixins"
264
+
265
+ it "describes resource_tpl mixins"
266
+
267
+ it "creates a new compute resource"
268
+
269
+ it "creates a new storage resource"
270
+
271
+ it "creates a new network resource"
272
+
273
+ it "deletes a compute resource"
274
+
275
+ it "deletes a network resource"
276
+
277
+ it "deletes a storage resource"
278
+
279
+ it "triggers an action on a compute resource"
280
+
281
+ it "triggers an action on a storage resource"
282
+
283
+ it "triggers an action on a network resource"
284
+
285
+ it "refreshes its model"
286
+
287
+ end
288
+ end
289
+
290
+ end
291
+ end
292
+ end
@@ -0,0 +1,55 @@
1
+ require 'rspec'
2
+ require 'occi/api/client/http/authn_utils'
3
+
4
+ module Occi
5
+ module Api
6
+ module Client
7
+
8
+ describe AuthnUtils do
9
+
10
+ it "can handle PKCS#12 user credentials" do
11
+ path = File.expand_path("..", __FILE__)
12
+
13
+ pem_cert_pk = AuthnUtils.extract_pem_from_pkcs12(
14
+ path + "/rocci-cred.p12",
15
+ "passworD123"
16
+ )
17
+
18
+ pem_cert_ok = File.open(path + "/rocci-cred-cert.pem", "rb").read
19
+
20
+ if defined? JRUBY_VERSION
21
+ # PK is in PKCS#8 when running jRuby
22
+ pem_pk_ok = File.open(path + "/rocci-cred-key-jruby.pem", "rb").read
23
+ else
24
+ # PK is raw RSA key when running cRuby
25
+ pem_pk_ok = File.open(path + "/rocci-cred-key.pem", "rb").read
26
+ end
27
+
28
+ pem_cert_pk_ok = ""
29
+ pem_cert_pk_ok << pem_cert_ok << pem_pk_ok
30
+
31
+
32
+ # remove line wrapping
33
+ pem_cert_pk.delete! "\n"
34
+ pem_cert_pk_ok.delete! "\n"
35
+
36
+ # remove trailing new lines
37
+ pem_cert_pk.chomp!
38
+ pem_cert_pk_ok.chomp!
39
+
40
+ pem_cert_pk.should eq pem_cert_pk_ok
41
+ end
42
+
43
+ it "can read CA certificates from a file" do
44
+ path = File.expand_path("..", __FILE__)
45
+
46
+ ca_certs = AuthnUtils.certs_to_file_ary(path + "/rocci-cred-cert.pem")
47
+
48
+ ca_certs.should =~ [File.open(path + "/rocci-cred-cert.pem", "rb").read.chomp("\n")]
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+ end
55
+ end
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEFzCCAv+gAwIBAgIDEAABMA0GCSqGSIb3DQEBBQUAMIGWMQswCQYDVQQGEwJDWjEXMBUGA1UECAwOQ3plY2ggUmVwdWJsaWMxDTALBgNVBAcMBEJybm8xFTATBgNVBAoMDEZha2UgQ0EgaW5jLjERMA8GA1UECwwIck9DQ0kgQ0ExFTATBgNVBAMMDHJPQ0NJIHRlc3RlcjEeMBwGCSqGSIb3DQEJARYPc2VleWFAbG9jYWxob3N0MB4XDTEzMDIwODAxNTkzNloXDTIzMDIwNjAxNTkzNlowgYcxCzAJBgNVBAYTAkNaMRcwFQYDVQQIDA5DemVjaCBSZXB1YmxpYzEVMBMGA1UECgwMRmFrZSBDQSBpbmMuMREwDwYDVQQLDAhyT0NDSSBDQTEVMBMGA1UEAwwMck9DQ0kgdGVzdGVyMR4wHAYJKoZIhvcNAQkBFg9zZWV5YUBsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcjeRWvUe+p+bOTgl0JtUWpHCDrSoV5DQD59Rinol+1+471JDF6wloBrmo7nCyLtOpDUDUcRZIp9UKCZZLqx0FhmUySFCjU7wBtU1+IOhbEVH97+pff/2x9920C9uyV/06Vr7Ch8G8fYOZCplrmmWs5wj88mUSQBtSYMOZNQxkX18tj3oKgvLhAlRYoIAYJgkhFUsXegMUc7NRa9Kpt2ag2C7eKs9VMZuI9XF+e6xPK6lUPFV8lWzfKtrhiUkmEMbzb0A3CQLZNw8IPXYjNm4daoeZSZkLY9P6KlIXJnBZX1DfJ1WdpS19GUVlU7EmRqwccOeT7FkS3MAR8nK35nOVAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBTcmlZ0FPwCBm+9huhalzJjpeqnHTAfBgNVHSMEGDAWgBSpNuMNySOjsarUO20BwqS+56i5gjANBgkqhkiG9w0BAQUFAAOCAQEAtd3IEWcifc9jz594PMz44AiilgHWFAizjB58PWAXXpbRylhAxFBbhXxmSLmxBEsJNmf+l5S5EV5LjFVbuFzF05CzWZpkvS6Md+zgp6y0K6ZRfZpB9FESiPYPVrh+AgGQGaJCnY9WQPG9ySMBTt6FfqggiuK3I2d6b6CyNjt0GFEzFzaP40Y7zIjUT+gEbJJrp/OFmbYYTdRv1dXMT8TzImhew7C2LcOYN4+L5s0+Yl2m4LDNDHsCbvGhixj2hxTdLm+ervsc7gsb3s9j9LXL7wZlO4cqmd9xZ/hYl+zYSgMAQaZc9QAteL/o7M4a2INxgsAu5vWZKaV5geqRSu3tdg==
3
+ -----END CERTIFICATE-----
@@ -0,0 +1,3 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDcjeRWvUe+p+bOTgl0JtUWpHCDrSoV5DQD59Rinol+1+471JDF6wloBrmo7nCyLtOpDUDUcRZIp9UKCZZLqx0FhmUySFCjU7wBtU1+IOhbEVH97+pff/2x9920C9uyV/06Vr7Ch8G8fYOZCplrmmWs5wj88mUSQBtSYMOZNQxkX18tj3oKgvLhAlRYoIAYJgkhFUsXegMUc7NRa9Kpt2ag2C7eKs9VMZuI9XF+e6xPK6lUPFV8lWzfKtrhiUkmEMbzb0A3CQLZNw8IPXYjNm4daoeZSZkLY9P6KlIXJnBZX1DfJ1WdpS19GUVlU7EmRqwccOeT7FkS3MAR8nK35nOVAgMBAAECggEAS3pTlkuYberP1fJm0dUoP2NvDeEI8gzysBN6X3WZ4ErNQLRyBwl0YqFKkEFpV9Empkfe09UPpzWodpLpWGPqvqVLpHWTAxH42SzOpEdmvSOkR57/Okd27pzAxoj4WoQ6KOjex3vmFTdu/cTe1DA2c4FtVgMuC5zcvMhYp+m7n+1Q5Y/MFWgatMh5Oo20q34CzLNkJ1w0sZfKd8+yhFZc6PJRqp4obJTWALL5EJNxLxw8vzXfnn8y69VZWIqMHHE6QqgZGj6T9aXhDKpjgao6n0zXQu7GrGSz+KxefqEAEV8YyZMeCkFEBMmOS/huWotlzhj8ALtq7vm7JMgIkTDz0QKBgQDu7ezX3UC3JskQOoXKPuwUAdkoL1C7O6k/A8meHzrSvPTnPzdmO7Zj8nZOG58O5cFAh6jT+2k0xa/TrvWUgdD7Xiaw7pWk/MBAEqdReYaAHl6Q440fkvWS4Qn/VP0ZAXwHmqO3zdHRlHE8HsKzqPIjOaU2stNwvgqS2QZs5MOybwKBgQDsT+GfJlESE/MRZ04VZTn6HQSy4NocRPJ+t7ddFYxoETBGDtAg4lvSNhpl9aTY625iGASFVec3A8pSPIgOO4q7yX0FyEtkNHhgKnbGVZzLyBTiHv+eMDVFGauWV7HTUjxiasalSLAtUKVC+AzsSdrDT2HhEt7KK5W/erkw3ZLsOwKBgBJqHfXpJIK5J4frqsISpWlJVy5Er0ku6PVlWlWofIUfcRSdh6yGb6E2X63XbSPdy04o5ncoCky567o54s2GT8//yqWaTchAfqSxi1m5LweSz6EFGKxVTD38wCOArl0OAzwmy/VvlHs9oJiMml70Z20VlUko8SjgTLpSpa8g1oBbAoGBAOP33+m/diAhfLDCXvKG99pQWjMSdXcmEGWsZ8j1u8C9LDu5mJDQrdHp/ad0xPW6kX8yOlJC384T6v9Qg9RvHlQweVq1sf1WHPZwoKqO9rckKvlE/EWnrgweSoi7ysHZKIWtCjtzFvpwPS2QzC66xL77+qm9oY2ZZFoXU0ZPyqf3AoGATw1FWCPsdyC8iA4D9UlWvK5JskLxlNr0OZGgjo1rc+n+oopgn/GxxyMHhwaUZpftA1ab1G58xGnlcjCkhr2ZK/7XNhb7SfLKxTjB2BAehaq2YyzwCpsKUI7oLi0wTt7mD51qh3B1fMSTkfBZg/prwq6nIaDBwXL1xsd/BPfMCYw=
3
+ -----END PRIVATE KEY-----
@@ -0,0 +1,3 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEA3I3kVr1Hvqfmzk4JdCbVFqRwg60qFeQ0A+fUYp6JftfuO9SQxesJaAa5qO5wsi7TqQ1A1HEWSKfVCgmWS6sdBYZlMkhQo1O8AbVNfiDoWxFR/e/qX3/9sffdtAvbslf9Ola+wofBvH2DmQqZa5plrOcI/PJlEkAbUmDDmTUMZF9fLY96CoLy4QJUWKCAGCYJIRVLF3oDFHOzUWvSqbdmoNgu3irPVTGbiPVxfnusTyupVDxVfJVs3yra4YlJJhDG829ANwkC2TcPCD12IzZuHWqHmUmZC2PT+ipSFyZwWV9Q3ydVnaUtfRlFZVOxJkasHHDnk+xZEtzAEfJyt+ZzlQIDAQABAoIBAEt6U5ZLmG3qz9XyZtHVKD9jbw3hCPIM8rATel91meBKzUC0cgcJdGKhSpBBaVfRJqZH3tPVD6c1qHaS6Vhj6r6lS6R1kwMR+NkszqRHZr0jpEee/zpHdu6cwMaI+FqEOijo3sd75hU3bv3E3tQwNnOBbVYDLguc3LzIWKfpu5/tUOWPzBVoGrTIeTqNtKt+AsyzZCdcNLGXynfPsoRWXOjyUaqeKGyU1gCy+RCTcS8cPL81355/MuvVWViKjBxxOkKoGRo+k/Wl4QyqY4GqOp9M10Luxqxks/isXn6hABFfGMmTHgpBRATJjkv4blqLZc4Y/AC7au75uyTICJEw89ECgYEA7u3s191AtybJEDqFyj7sFAHZKC9QuzupPwPJnh860rz05z83Zju2Y/J2ThufDuXBQIeo0/tpNMWv0671lIHQ+14msO6VpPzAQBKnUXmGgB5ekOONH5L1kuEJ/1T9GQF8B5qjt83R0ZRxPB7Cs6jyIzmlNrLTcL4KktkGbOTDsm8CgYEA7E/hnyZREhPzEWdOFWU5+h0EsuDaHETyfre3XRWMaBEwRg7QIOJb0jYaZfWk2OtuYhgEhVXnNwPKUjyIDjuKu8l9BchLZDR4YCp2xlWcy8gU4h7/njA1RRmrllex01I8YmrGpUiwLVClQvgM7Enaw09h4RLeyiuVv3q5MN2S7DsCgYASah316SSCuSeH66rCEqVpSVcuRK9JLuj1ZVpVqHyFH3EUnYeshm+hNl+t120j3ctOKOZ3KApMueu6OeLNhk/P/8qlmk3IQH6ksYtZuS8Hks+hBRisVUw9/MAjgK5dDgM8Jsv1b5R7PaCYjJpe9GdtFZVJKPEo4Ey6UqWvINaAWwKBgQDj99/pv3YgIXywwl7yhvfaUFozEnV3JhBlrGfI9bvAvSw7uZiQ0K3R6f2ndMT1upF/MjpSQt/OE+r/UIPUbx5UMHlatbH9Vhz2cKCqjva3JCr5RPxFp64MHkqIu8rB2SiFrQo7cxb6cD0tkMwuusS++/qpvaGNmWRaF1NGT8qn9wKBgE8NRVgj7HcgvIgOA/VJVryuSbJC8ZTa9DmRoI6Na3Pp/qKKYJ/xsccjB4cGlGaX7QNWm9RufMRp5XIwpIa9mSv+1zYW+0nyysU4wdgQHoWqtmMs8AqbClCO6C4tME7e5g+daodwdXzEk5HwWYP6a8KupyGgwcFy9cbHfwT3zAmM
3
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,21 @@
1
+ require 'rspec'
2
+
3
+ module Occi
4
+ module Api
5
+ describe Dsl do
6
+
7
+ context "using ClientHttp" do
8
+
9
+ it "does something"
10
+
11
+ end
12
+
13
+ context "using ClientAmqp" do
14
+
15
+ it "does something"
16
+
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,38 @@
1
+ require 'rubygems'
2
+ require 'occi-api'
3
+ require 'vcr'
4
+
5
+ # enable coverage reports
6
+ if ENV['COVERAGE']
7
+ require 'simplecov'
8
+ SimpleCov.start
9
+ end
10
+
11
+ # enable VCR for HTTP/HTTPS connections
12
+ # using RSPEC metadata integration;
13
+ # this will automatically generate a named
14
+ # cassette for each unit test
15
+ VCR.configure do |c|
16
+ c.hook_into :webmock
17
+
18
+ gem_root = File.expand_path '..', __FILE__
19
+ c.cassette_library_dir = "#{gem_root}/cassettes"
20
+
21
+ c.configure_rspec_metadata!
22
+ end
23
+
24
+ # simplify the usage of VCR; this will allow us to use
25
+ #
26
+ # it "does something", :vcr do
27
+ # ...
28
+ # end
29
+ #
30
+ # instead of
31
+ #
32
+ # it "does something else", :vcr => true do
33
+ # ...
34
+ # end
35
+ RSpec.configure do |c|
36
+ # in RSpec 3 this will no longer be necessary.
37
+ c.treat_symbols_as_metadata_keys_with_true_values = true
38
+ end