occi 1.1.0 → 1.2.0

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 (35) hide show
  1. data/.autotest +21 -0
  2. data/Gemfile +2 -1
  3. data/Gemfile.lock +4 -2
  4. data/README.md +1 -5
  5. data/VERSION +1 -1
  6. data/lib/occi/client.rb +13 -12
  7. data/lib/occi/compute.rb +4 -0
  8. data/lib/occi/network.rb +4 -0
  9. data/lib/occi/resource.rb +59 -0
  10. data/lib/occi/storage.rb +7 -0
  11. data/occi.gemspec +25 -18
  12. data/test/fixtures/cassettes/{computes_post.yml → compute_create.yml} +2 -2
  13. data/test/fixtures/cassettes/compute_delete.yml +1 -22
  14. data/test/fixtures/cassettes/compute_find.yml +28 -0
  15. data/test/fixtures/cassettes/{compute_put.yml → compute_update.yml} +3 -3
  16. data/test/fixtures/cassettes/{networks_get.yml → network_all.yml} +2 -2
  17. data/test/fixtures/cassettes/{networks_post.yml → network_create.yml} +1 -1
  18. data/test/fixtures/cassettes/network_delete.yml +1 -1
  19. data/test/fixtures/cassettes/{computes_get.yml → network_find.yml} +3 -3
  20. data/test/fixtures/cassettes/{storages_get.yml → storage_all.yml} +3 -3
  21. data/test/fixtures/cassettes/{storages_post.yml → storage_create.yml} +1 -1
  22. data/test/fixtures/cassettes/storage_delete.yml +1 -22
  23. data/test/fixtures/cassettes/storage_find.yml +28 -0
  24. data/test/lib/occi/compute_test.rb +91 -0
  25. data/test/lib/occi/network_test.rb +57 -0
  26. data/test/lib/occi/storage_test.rb +67 -0
  27. data/test/test_helper.rb +3 -2
  28. metadata +38 -19
  29. data/lib/occi/entity.rb +0 -63
  30. data/lib/occi/pool.rb +0 -52
  31. data/test/fixtures/cassettes/compute_get.yml +0 -55
  32. data/test/fixtures/cassettes/network_get.yml +0 -55
  33. data/test/fixtures/cassettes/storage_get.yml +0 -55
  34. data/test/lib/occi/entity_test.rb +0 -54
  35. data/test/lib/occi/pool_test.rb +0 -99
@@ -2,7 +2,7 @@
2
2
  - !ruby/struct:VCR::HTTPInteraction
3
3
  request: !ruby/struct:VCR::Request
4
4
  method: :get
5
- uri: http://oneadmin:a9464e3228ae563be6207bbf50437a219550f48b@one.example.com:4567/storage
5
+ uri: http://oneadmin:a9464e3228ae563be6207bbf50437a219550f48b@one.example.com:4567/network
6
6
  body:
7
7
  headers:
8
8
  accept:
@@ -19,10 +19,10 @@
19
19
  content-type:
20
20
  - text/html;charset=utf-8
21
21
  content-length:
22
- - "425"
22
+ - "313"
23
23
  connection:
24
24
  - keep-alive
25
25
  server:
26
26
  - thin 1.2.7 codename No Hup
27
- body: "<STORAGE_COLLECTION><STORAGE href=\"http://cm-01.cloud.int.ev1.atti.com:4567/storage/1\" name=\"Ubuntu 10.10 x86_64\"/><STORAGE href=\"http://cm-01.cloud.int.ev1.atti.com:4567/storage/2\" name=\"Ubuntu 10.04.1 x86_64\"/><STORAGE href=\"http://cm-01.cloud.int.ev1.atti.com:4567/storage/7\" name=\"Centos 5.4 i686\"/><STORAGE href=\"http://cm-01.cloud.int.ev1.atti.com:4567/storage/11\" name=\"Centos 5.4 x86_64\"/></STORAGE_COLLECTION> "
27
+ body: "<NETWORK_COLLECTION><NETWORK href=\"http://cm-01.cloud.int.ev1.atti.com:4567/network/23\" name=\"10.3.174.0\"/><NETWORK href=\"http://cm-01.cloud.int.ev1.atti.com:4567/network/25\" name=\"10.3.172.0\"/><NETWORK href=\"http://cm-01.cloud.int.ev1.atti.com:4567/network/26\" name=\"Test Framework\"/></NETWORK_COLLECTION> "
28
28
  http_version: "1.1"
@@ -46,5 +46,5 @@
46
46
  - keep-alive
47
47
  server:
48
48
  - thin 1.2.7 codename No Hup
49
- body: <STORAGE href="http://cm-01.cloud.int.ev1.atti.com:4567/storage/30"><ID>30</ID><NAME>Test Framework</NAME><TYPE>OS</TYPE><DESCRIPTION>Test Framework Image.</DESCRIPTION><SIZE>0</SIZE></STORAGE>
49
+ body: <STORAGE href="http://cm-01.cloud.int.ev1.atti.com:4567/storage/39"><ID>39</ID><NAME>Test Framework</NAME><TYPE>OS</TYPE><DESCRIPTION>Test Framework Image.</DESCRIPTION><SIZE>0</SIZE></STORAGE>
50
50
  http_version: "1.1"
@@ -2,28 +2,7 @@
2
2
  - !ruby/struct:VCR::HTTPInteraction
3
3
  request: !ruby/struct:VCR::Request
4
4
  method: :delete
5
- uri: http://oneadmin:a9464e3228ae563be6207bbf50437a219550f48b@one.example.com:4567/storage/23
6
- body:
7
- headers:
8
- accept:
9
- - application/xml
10
- connection:
11
- - keep-alive
12
- keep-alive:
13
- - 30
14
- response: !ruby/struct:VCR::Response
15
- status: !ruby/struct:VCR::ResponseStatus
16
- code: 204
17
- message: No Content
18
- headers:
19
- server:
20
- - thin 1.2.7 codename No Hup
21
- body:
22
- http_version: "1.1"
23
- - !ruby/struct:VCR::HTTPInteraction
24
- request: !ruby/struct:VCR::Request
25
- method: :delete
26
- uri: http://oneadmin:a9464e3228ae563be6207bbf50437a219550f48b@one.example.com:4567/storage/30
5
+ uri: http://oneadmin:a9464e3228ae563be6207bbf50437a219550f48b@one.example.com:4567/storage/39
27
6
  body:
28
7
  headers:
29
8
  accept:
@@ -0,0 +1,28 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://oneadmin:a9464e3228ae563be6207bbf50437a219550f48b@one.example.com:4567/storage/39
6
+ body:
7
+ headers:
8
+ accept:
9
+ - application/xml
10
+ connection:
11
+ - keep-alive
12
+ keep-alive:
13
+ - 30
14
+ response: !ruby/struct:VCR::Response
15
+ status: !ruby/struct:VCR::ResponseStatus
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ content-type:
20
+ - text/html;charset=utf-8
21
+ content-length:
22
+ - "193"
23
+ connection:
24
+ - keep-alive
25
+ server:
26
+ - thin 1.2.7 codename No Hup
27
+ body: <STORAGE href="http://cm-01.cloud.int.ev1.atti.com:4567/storage/39"><ID>39</ID><NAME>Test Framework</NAME><TYPE>OS</TYPE><DESCRIPTION>Test Framework Image.</DESCRIPTION><SIZE>0</SIZE></STORAGE>
28
+ http_version: "1.1"
@@ -0,0 +1,91 @@
1
+ require "test_helper"
2
+
3
+ describe Occi::Compute do
4
+ describe "#all" do
5
+ #it "returns a parsed XML document" do
6
+ # VCR.use_cassette "compute_all" do
7
+ # response = Connection.compute.all
8
+
9
+ # is_okay response
10
+ # end
11
+ #end
12
+ end
13
+
14
+ describe "#create" do
15
+ before do
16
+ ##
17
+ # Adding NETWORK_NAME to the CONTEXT should be reworked.
18
+ # We want the vm to divine it's IP from its MAC Address on
19
+ # boot. Then we no longer need the coupling in the XML.
20
+ # CLOUD-35 open to address this.
21
+
22
+ @builder = Nokogiri::XML::Builder.new do
23
+ COMPUTE {
24
+ NAME "Test Framework"
25
+ INSTANCE_TYPE "small"
26
+ DISK {
27
+ STORAGE(:href => "http://www.opennebula.org/storage/11")
28
+ }
29
+ NIC {
30
+ NETWORK(:href => "http://www.opennebula.org/network/25")
31
+ }
32
+ CONTEXT {
33
+ NETWORK_NAME "10.3.172.0"
34
+ }
35
+ }
36
+ end.to_xml
37
+ end
38
+
39
+ it "returns a parsed XML document" do
40
+ VCR.use_cassette "compute_create" do
41
+ response = Connection.compute.create @builder
42
+
43
+ is_created response
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "#find" do
49
+ it "returns a parsed XML document" do
50
+ id = cassette_for("compute_create").xpath('//ID').text
51
+
52
+ VCR.use_cassette "compute_find" do
53
+ response = Connection.compute.find id
54
+
55
+ is_okay response
56
+ end
57
+ end
58
+ end
59
+
60
+ describe "#delete" do
61
+ it "returns a parsed XML document" do
62
+ id = cassette_for("compute_create").xpath('//ID').text
63
+
64
+ VCR.use_cassette "compute_delete" do
65
+ response = Connection.compute.delete id
66
+
67
+ is_no_content response
68
+ end
69
+ end
70
+ end
71
+
72
+ describe "#update" do
73
+ before do
74
+ @builder = Nokogiri::XML::Builder.new do
75
+ COMPUTE {
76
+ STATE "shutdown"
77
+ }
78
+ end.to_xml
79
+ end
80
+
81
+ it "returns a parsed XML document" do
82
+ id = cassette_for("compute_create").xpath('//ID').text
83
+
84
+ VCR.use_cassette "compute_update" do
85
+ response = Connection.compute.update id, @builder
86
+
87
+ is_accepted response
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,57 @@
1
+ require "test_helper"
2
+
3
+ describe Occi::Network do
4
+ describe "#all" do
5
+ it "returns a parsed XML document" do
6
+ VCR.use_cassette "network_all" do
7
+ response = Connection.network.all
8
+
9
+ is_okay response
10
+ end
11
+ end
12
+ end
13
+
14
+ describe "#create" do
15
+ before do
16
+ @builder = Nokogiri::XML::Builder.new do
17
+ NETWORK {
18
+ NAME "Test Framework"
19
+ ADDRESS "192.168.1.1"
20
+ SIZE "200"
21
+ }
22
+ end.to_xml
23
+ end
24
+
25
+ it "returns a parsed XML document" do
26
+ VCR.use_cassette "network_create" do
27
+ response = Connection.network.create @builder
28
+
29
+ is_created response
30
+ end
31
+ end
32
+ end
33
+
34
+ describe "#find" do
35
+ it "returns a parsed XML document" do
36
+ id = cassette_for("network_create").xpath('//ID').text
37
+
38
+ VCR.use_cassette "network_find" do
39
+ response = Connection.network.find id
40
+
41
+ is_okay response
42
+ end
43
+ end
44
+ end
45
+
46
+ describe "#delete" do
47
+ it "returns a parsed XML document" do
48
+ id = cassette_for("network_create").xpath('//ID').text
49
+
50
+ VCR.use_cassette "network_delete" do
51
+ response = Connection.network.delete id
52
+
53
+ is_no_content response
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,67 @@
1
+ require "test_helper"
2
+
3
+ describe Occi::Storage do
4
+ describe "#all" do
5
+ it "returns a parsed XML document" do
6
+ VCR.use_cassette "storage_all" do
7
+ response = Connection.network.all
8
+
9
+ is_okay response
10
+ end
11
+ end
12
+ end
13
+
14
+ describe "#create" do
15
+ before do
16
+ @builder = Nokogiri::XML::Builder.new do
17
+ STORAGE {
18
+ NAME "Test Framework"
19
+ DESCRIPTION "Test Framework Image."
20
+ TYPE "OS"
21
+ ### Not exactly sure what URL does.
22
+ URL "file:///dev/null"
23
+ }
24
+ end.to_xml
25
+
26
+ @upload = {
27
+ :parts => {
28
+ :file => "/dev/null",
29
+ :occixml => @builder,
30
+ },
31
+ :content_type => "application/octet-stream"
32
+ }
33
+ end
34
+
35
+ it "returns a parsed XML document" do
36
+ VCR.use_cassette "storage_create" do
37
+ response = Connection.storage.create @upload
38
+
39
+ is_created response
40
+ end
41
+ end
42
+ end
43
+
44
+ describe "#find" do
45
+ it "returns a parsed XML document" do
46
+ id = cassette_for("storage_create").xpath('//ID').text
47
+
48
+ VCR.use_cassette "storage_find" do
49
+ response = Connection.storage.find id
50
+
51
+ is_okay response
52
+ end
53
+ end
54
+ end
55
+
56
+ describe "#delete" do
57
+ it "returns a parsed XML document" do
58
+ id = cassette_for("storage_create").xpath('//ID').text
59
+
60
+ VCR.use_cassette "storage_delete" do
61
+ response = Connection.storage.delete id
62
+
63
+ is_no_content response
64
+ end
65
+ end
66
+ end
67
+ end
@@ -1,6 +1,7 @@
1
+ require "bundler"
1
2
  Bundler.setup :default, :test
2
3
 
3
- %w(minitest/spec nokogiri vcr webmock occi).each { |r| require r }
4
+ %w(minitest/autorun minitest/spec nokogiri vcr webmock occi).each { |r| require r }
4
5
 
5
6
  class MiniTest::Unit::TestCase
6
7
  Connection = Occi::Client.new(
@@ -41,7 +42,7 @@ WebMock.disable_net_connect! :allow => "one.example.com"
41
42
  VCR.config do |c|
42
43
  c.stub_with :webmock
43
44
  c.cassette_library_dir = "test/fixtures/cassettes"
44
- c.default_cassette_options = { :record => :new_episodes }
45
+ c.default_cassette_options = { :record => :none }
45
46
  end
46
47
 
47
48
  MiniTest::Unit.autorun
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 1
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 1.1.0
9
+ version: 1.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - retr0h
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-04 00:00:00 -08:00
17
+ date: 2011-01-06 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -135,6 +135,21 @@ dependencies:
135
135
  type: :development
136
136
  prerelease: false
137
137
  version_requirements: *id008
138
+ - !ruby/object:Gem::Dependency
139
+ name: ZenTest
140
+ requirement: &id009 !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ segments:
146
+ - 4
147
+ - 4
148
+ - 2
149
+ version: 4.4.2
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: *id009
138
153
  description:
139
154
  email: john@dewey.ws
140
155
  executables: []
@@ -145,6 +160,7 @@ extra_rdoc_files:
145
160
  - LICENSE
146
161
  - README.md
147
162
  files:
163
+ - .autotest
148
164
  - .rvmrc
149
165
  - Gemfile
150
166
  - Gemfile.lock
@@ -154,24 +170,26 @@ files:
154
170
  - VERSION
155
171
  - lib/occi.rb
156
172
  - lib/occi/client.rb
157
- - lib/occi/entity.rb
158
- - lib/occi/pool.rb
173
+ - lib/occi/compute.rb
174
+ - lib/occi/network.rb
175
+ - lib/occi/resource.rb
176
+ - lib/occi/storage.rb
159
177
  - occi.gemspec
178
+ - test/fixtures/cassettes/compute_create.yml
160
179
  - test/fixtures/cassettes/compute_delete.yml
161
- - test/fixtures/cassettes/compute_get.yml
162
- - test/fixtures/cassettes/compute_put.yml
163
- - test/fixtures/cassettes/computes_get.yml
164
- - test/fixtures/cassettes/computes_post.yml
180
+ - test/fixtures/cassettes/compute_find.yml
181
+ - test/fixtures/cassettes/compute_update.yml
182
+ - test/fixtures/cassettes/network_all.yml
183
+ - test/fixtures/cassettes/network_create.yml
165
184
  - test/fixtures/cassettes/network_delete.yml
166
- - test/fixtures/cassettes/network_get.yml
167
- - test/fixtures/cassettes/networks_get.yml
168
- - test/fixtures/cassettes/networks_post.yml
185
+ - test/fixtures/cassettes/network_find.yml
186
+ - test/fixtures/cassettes/storage_all.yml
187
+ - test/fixtures/cassettes/storage_create.yml
169
188
  - test/fixtures/cassettes/storage_delete.yml
170
- - test/fixtures/cassettes/storage_get.yml
171
- - test/fixtures/cassettes/storages_get.yml
172
- - test/fixtures/cassettes/storages_post.yml
173
- - test/lib/occi/entity_test.rb
174
- - test/lib/occi/pool_test.rb
189
+ - test/fixtures/cassettes/storage_find.yml
190
+ - test/lib/occi/compute_test.rb
191
+ - test/lib/occi/network_test.rb
192
+ - test/lib/occi/storage_test.rb
175
193
  - test/test_helper.rb
176
194
  has_rdoc: true
177
195
  homepage: http://github.com/retr0h/occi
@@ -206,6 +224,7 @@ signing_key:
206
224
  specification_version: 3
207
225
  summary: Ruby bindings to Open Cloud Computing Interface (OCCI).
208
226
  test_files:
209
- - test/lib/occi/entity_test.rb
210
- - test/lib/occi/pool_test.rb
227
+ - test/lib/occi/compute_test.rb
228
+ - test/lib/occi/network_test.rb
229
+ - test/lib/occi/storage_test.rb
211
230
  - test/test_helper.rb
@@ -1,63 +0,0 @@
1
- module Occi
2
- module Entity
3
- Gets = %w(
4
- compute
5
- network
6
- storage
7
- ).map { |v| "#{v}_get" }.freeze
8
-
9
- Deletes = %w(
10
- compute
11
- network
12
- storage
13
- ).map { |v| "#{v}_delete" }.freeze
14
-
15
- Puts = %w(
16
- compute
17
- ).map { |v| "#{v}_put" }.freeze
18
-
19
- ##
20
- # The _get methods:
21
- # Returns the representation of the Compute resource identified by +compute_id+.
22
- # 200 OK: An XML representation of the pool in the http body.
23
- #
24
- # The _delete methods:
25
- # Deletes the Compute resource identified by +compute_id+.
26
- # 204 No Content : The Compute has been successfully deleted.
27
- #
28
- # The _put methods:
29
- # Update request for a Compute identified by +compute_id+.
30
- # 202 Accepted : The update request is being process, polling required to confirm update.
31
-
32
- (Gets + Deletes + Puts).each do |method|
33
- define_method method do |*args|
34
- id = args[0]
35
- params = args[1] || {}
36
- path, verb = method.split("_")
37
-
38
- request.send verb, "/#{path}/#{id}", params
39
- end
40
- end
41
-
42
- ##
43
- # :method: compute_get
44
-
45
- ##
46
- # :method: compute_delete
47
-
48
- ##
49
- # :method: compute_put
50
-
51
- ##
52
- # :method: network_get
53
-
54
- ##
55
- # :method: network_delete
56
-
57
- ##
58
- # :method: storage_get
59
-
60
- ##
61
- # :method: storage_delete
62
- end
63
- end