profitbricks 0.9.9 → 1.0.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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -2
  3. data/Gemfile.lock +19 -22
  4. data/Guardfile +9 -0
  5. data/Manifest.txt +15 -0
  6. data/README.md +1 -1
  7. data/Rakefile +13 -5
  8. data/lib/profitbricks.rb +7 -5
  9. data/lib/profitbricks/data_center.rb +19 -20
  10. data/lib/profitbricks/extensions.rb +0 -3
  11. data/lib/profitbricks/firewall.rb +14 -20
  12. data/lib/profitbricks/image.rb +4 -6
  13. data/lib/profitbricks/ip_block.rb +5 -6
  14. data/lib/profitbricks/load_balancer.rb +23 -48
  15. data/lib/profitbricks/model.rb +8 -35
  16. data/lib/profitbricks/nic.rb +17 -22
  17. data/lib/profitbricks/profitbricks.rb +35 -27
  18. data/lib/profitbricks/rule.rb +2 -2
  19. data/lib/profitbricks/server.rb +96 -18
  20. data/lib/profitbricks/storage.rb +17 -22
  21. data/profitbricks.gemspec +6 -6
  22. data/spec/fixtures/get_server/two_nics.json +1 -0
  23. data/spec/fixtures/get_server/two_nics.xml +1 -0
  24. data/spec/fixtures/get_storage/mount_image.json +21 -0
  25. data/spec/fixtures/get_storage/mount_image.xml +1 -0
  26. data/spec/fixtures/power_off_server/success.json +1 -0
  27. data/spec/fixtures/power_off_server/success.xml +1 -0
  28. data/spec/fixtures/reset_server/success.json +1 -0
  29. data/spec/fixtures/reset_server/success.xml +1 -0
  30. data/spec/fixtures/shutdown_server/success.json +1 -0
  31. data/spec/fixtures/shutdown_server/success.xml +1 -0
  32. data/spec/fixtures/start_server/success.json +1 -0
  33. data/spec/fixtures/start_server/success.xml +1 -0
  34. data/spec/live/data_center_spec.rb +47 -0
  35. data/spec/live/server_spec.rb +58 -0
  36. data/spec/profitbricks/cli_spec.rb +13 -6
  37. data/spec/profitbricks/data_center_spec.rb +54 -29
  38. data/spec/profitbricks/firewall_spec.rb +17 -11
  39. data/spec/profitbricks/image_spec.rb +8 -5
  40. data/spec/profitbricks/ip_block_spec.rb +8 -5
  41. data/spec/profitbricks/load_balancer_spec.rb +23 -16
  42. data/spec/profitbricks/model_spec.rb +10 -13
  43. data/spec/profitbricks/nic_spec.rb +16 -13
  44. data/spec/profitbricks/server_spec.rb +117 -11
  45. data/spec/profitbricks/storage_spec.rb +22 -13
  46. data/spec/spec_helper.rb +10 -23
  47. metadata +19 -5
  48. data/.gemtest +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8035c805cdebb8207c5a999ed7db0decdf92782d
4
- data.tar.gz: b10e164d47f8e695897f101382f9088a850a0fc2
3
+ metadata.gz: 7eff0a7923f9a91e6b21df7f6a0ed25dd958099a
4
+ data.tar.gz: 535952263dae50c778ff480e9a6b36304056aece
5
5
  SHA512:
6
- metadata.gz: 0fdbc90fa42b874606f404551d99a1f880dcb23aaa19c8cf6588ee0056dfc3bb07857c5a32ce507b5ddacf5f5c678362d5bb6a687a993ad97ebdd7fe6318a25e
7
- data.tar.gz: f66481fb1dcb2d9ee130936667ce25679ab94bb38785c659f0fc07a160fc05b1131945becb231e0058bf67494f8e8f01c0aeb6989f321f2ab257d16abdbc5ad5
6
+ metadata.gz: b4756b5b0e0685ea5fabf087b54222d7081da44270effa01a95db5a288651d26284020a9e4bd58af0889a5040fbb24ce8d1604d9993e079660271032927569d9
7
+ data.tar.gz: 26e43a768c5d4a9d783a7a45be46836e2c641ff0a56f6c1789962fdcb3e387ca0949c621c95614788d8c9792ac4c42c6112f6df27b27db3dc5c049f3396ab666
data/Gemfile CHANGED
@@ -1,14 +1,15 @@
1
1
  source 'https://rubygems.org'
2
- gem 'savon'
2
+ gem 'savon', '~> 2.2.0'
3
3
 
4
4
  group :test, :development do
5
5
  gem 'json'
6
6
  gem 'rspec'
7
- gem 'savon_spec'
7
+ gem 'rspec-mocks'
8
8
  gem 'simplecov', require: false
9
9
  gem 'rake'
10
10
  gem 'guard'
11
11
  gem 'guard-rspec'
12
+ gem 'rb-inotify'
12
13
  gem 'coveralls', require: false
13
14
  platforms :mri do
14
15
  # Temporary fix till hoe works with rbx in 1.9 mode
@@ -4,7 +4,7 @@ GEM
4
4
  akami (1.2.0)
5
5
  gyoku (>= 0.4.0)
6
6
  nokogiri (>= 1.4.0)
7
- builder (3.1.4)
7
+ builder (3.2.0)
8
8
  coderay (1.0.9)
9
9
  colorize (0.5.8)
10
10
  coveralls (0.6.7)
@@ -14,6 +14,7 @@ GEM
14
14
  simplecov (>= 0.7)
15
15
  thor
16
16
  diff-lcs (1.1.3)
17
+ ffi (1.6.0)
17
18
  formatador (0.2.4)
18
19
  guard (1.7.0)
19
20
  formatador (>= 0.2.4)
@@ -23,7 +24,7 @@ GEM
23
24
  thor (>= 0.14.6)
24
25
  guard-rspec (1.2.1)
25
26
  guard (>= 1.1)
26
- gyoku (0.4.6)
27
+ gyoku (1.0.0)
27
28
  builder (>= 2.1.2)
28
29
  hoe (3.0.3)
29
30
  rake (~> 0.8)
@@ -33,25 +34,24 @@ GEM
33
34
  hoe (>= 2.2.0)
34
35
  hoe-git (1.5.0)
35
36
  hoe (>= 2.2.0)
36
- httpi (1.1.1)
37
+ httpi (2.0.2)
37
38
  rack
38
39
  json (1.7.7)
39
40
  listen (0.7.3)
40
41
  lumberjack (1.0.3)
41
- metaclass (0.0.1)
42
42
  method_source (0.8.1)
43
43
  mime-types (1.23)
44
- mocha (0.10.5)
45
- metaclass (~> 0.0.1)
46
44
  multi_json (1.7.2)
47
- nokogiri (1.5.6)
48
- nori (1.1.4)
45
+ nokogiri (1.5.9)
46
+ nori (2.1.0)
49
47
  pry (0.9.12)
50
48
  coderay (~> 1.0.5)
51
49
  method_source (~> 0.8)
52
50
  slop (~> 3.4)
53
- rack (1.4.4)
51
+ rack (1.5.2)
54
52
  rake (0.9.2.2)
53
+ rb-inotify (0.9.0)
54
+ ffi (>= 0.5.0)
55
55
  rest-client (1.6.7)
56
56
  mime-types (>= 1.16)
57
57
  rspec (2.9.0)
@@ -62,26 +62,22 @@ GEM
62
62
  rspec-expectations (2.9.1)
63
63
  diff-lcs (~> 1.1.3)
64
64
  rspec-mocks (2.9.0)
65
- savon (1.2.0)
65
+ savon (2.2.0)
66
66
  akami (~> 1.2.0)
67
67
  builder (>= 2.1.2)
68
- gyoku (~> 0.4.5)
69
- httpi (~> 1.1.0)
68
+ gyoku (~> 1.0.0)
69
+ httpi (~> 2.0.2)
70
70
  nokogiri (>= 1.4.0)
71
- nori (~> 1.1.0)
72
- wasabi (~> 2.5.0)
73
- savon_spec (0.1.6)
74
- mocha (>= 0.9.8)
75
- rspec (>= 2.0.0)
76
- savon (>= 0.8.0)
71
+ nori (~> 2.1.0)
72
+ wasabi (~> 3.1.0)
77
73
  simplecov (0.7.1)
78
74
  multi_json (~> 1.0)
79
75
  simplecov-html (~> 0.7.1)
80
76
  simplecov-html (0.7.1)
81
77
  slop (3.4.4)
82
78
  thor (0.18.1)
83
- wasabi (2.5.1)
84
- httpi (~> 1.0)
79
+ wasabi (3.1.0)
80
+ httpi (~> 2.0)
85
81
  nokogiri (>= 1.4.0)
86
82
 
87
83
  PLATFORMS
@@ -98,7 +94,8 @@ DEPENDENCIES
98
94
  jruby-openssl
99
95
  json
100
96
  rake
97
+ rb-inotify
101
98
  rspec
102
- savon
103
- savon_spec
99
+ rspec-mocks
100
+ savon (~> 2.2.0)
104
101
  simplecov
@@ -0,0 +1,9 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :spec_paths => ["spec/profitbricks"], :exclude => "./spec/live/*" do
5
+ watch(%r{^spec/profitbricks/.+_spec\.rb$})
6
+ watch(%r{^lib/profitbricks/(.+)\.rb$}) { |m| "spec/profitbricks/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ watch('lib/profitbricks.rb')
9
+ end
@@ -4,6 +4,7 @@
4
4
  CHANGELOG.md
5
5
  Gemfile
6
6
  Gemfile.lock
7
+ Guardfile
7
8
  Manifest.txt
8
9
  README.md
9
10
  Rakefile
@@ -105,8 +106,14 @@ spec/fixtures/get_server/after_create.json
105
106
  spec/fixtures/get_server/after_create.xml
106
107
  spec/fixtures/get_server/connected_storage.json
107
108
  spec/fixtures/get_server/connected_storage.xml
109
+ spec/fixtures/get_server/two_nics.json
110
+ spec/fixtures/get_server/two_nics.xml
111
+ spec/fixtures/get_storage/mount_image.json
112
+ spec/fixtures/get_storage/mount_image.xml
108
113
  spec/fixtures/get_storage/success.json
109
114
  spec/fixtures/get_storage/success.xml
115
+ spec/fixtures/power_off_server/success.json
116
+ spec/fixtures/power_off_server/success.xml
110
117
  spec/fixtures/reboot_server/success.json
111
118
  spec/fixtures/reboot_server/success.xml
112
119
  spec/fixtures/register_servers_on_load_balancer/success.json
@@ -119,10 +126,16 @@ spec/fixtures/remove_public_ip_from_nic/success.json
119
126
  spec/fixtures/remove_public_ip_from_nic/success.xml
120
127
  spec/fixtures/reserve_public_ip_block/success.json
121
128
  spec/fixtures/reserve_public_ip_block/success.xml
129
+ spec/fixtures/reset_server/success.json
130
+ spec/fixtures/reset_server/success.xml
122
131
  spec/fixtures/set_image_os_type/success.json
123
132
  spec/fixtures/set_image_os_type/success.xml
124
133
  spec/fixtures/set_internet_access/success.json
125
134
  spec/fixtures/set_internet_access/success.xml
135
+ spec/fixtures/shutdown_server/success.json
136
+ spec/fixtures/shutdown_server/success.xml
137
+ spec/fixtures/start_server/success.json
138
+ spec/fixtures/start_server/success.xml
126
139
  spec/fixtures/update_data_center/success.json
127
140
  spec/fixtures/update_data_center/success.xml
128
141
  spec/fixtures/update_load_balancer/success.json
@@ -133,6 +146,8 @@ spec/fixtures/update_server/basic.json
133
146
  spec/fixtures/update_server/basic.xml
134
147
  spec/fixtures/update_storage/success.json
135
148
  spec/fixtures/update_storage/success.xml
149
+ spec/live/data_center_spec.rb
150
+ spec/live/server_spec.rb
136
151
  spec/profitbricks/cli_spec.rb
137
152
  spec/profitbricks/data_center_spec.rb
138
153
  spec/profitbricks/firewall_spec.rb
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Profitbricks [![Build Status](https://secure.travis-ci.org/dsander/profitbricks.png?branch=master)](http://travis-ci.org/dsander/profitbricks) [![Coverage Status](https://coveralls.io/repos/dsander/profitbricks/badge.png?branch=master)](https://coveralls.io/r/dsander/profitbricks)
1
+ # Profitbricks [![Build Status](https://secure.travis-ci.org/dsander/profitbricks.png?branch=master)](http://travis-ci.org/dsander/profitbricks) [![Coverage Status](https://coveralls.io/repos/dsander/profitbricks/badge.png?branch=master)](https://coveralls.io/r/dsander/profitbricks) [![Code Climate](https://codeclimate.com/github/dsander/profitbricks.png)](https://codeclimate.com/github/dsander/profitbricks)
2
2
 
3
3
  * http://github.com/dsander/profitbricks
4
4
  * http://rubydoc.info/github/dsander/profitbricks/master/frames
data/Rakefile CHANGED
@@ -16,22 +16,30 @@ if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ruby'
16
16
  Hoe.plugin :bundler
17
17
  Hoe.plugin :gemcutter
18
18
  Hoe.plugins.delete :rubyforge
19
+ Hoe.plugins.delete :test
19
20
 
20
21
  Hoe.spec 'profitbricks' do
21
22
  developer('Dominik Sander', 'git@dsander.de')
22
23
 
23
24
  self.readme_file = 'README.md'
24
25
  self.history_file = 'CHANGELOG.md'
25
- self.extra_deps << ["savon", "1.2.0"]
26
+ self.extra_deps << ["savon", "2.2.0"]
26
27
  end
27
28
 
28
29
  task :prerelease => [:clobber, :check_manifest, :test]
29
- else
30
- RSpec::Core::RakeTask.new(:spec) do |spec|
31
- spec.pattern = 'spec/**/*_spec.rb'
30
+ end
31
+
32
+ RSpec::Core::RakeTask.new(:spec) do |spec|
33
+ spec.pattern = 'spec/profitbricks/*_spec.rb'
34
+ spec.rspec_opts = ['--backtrace']
35
+ end
36
+ namespace :spec do
37
+ RSpec::Core::RakeTask.new(:live) do |spec|
38
+ spec.pattern = 'spec/live/*_spec.rb'
32
39
  spec.rspec_opts = ['--backtrace']
33
40
  end
34
41
  end
35
42
 
43
+
36
44
  task :default => :spec
37
- task :test => :spec
45
+ task :test => :spec
@@ -3,17 +3,19 @@ require 'profitbricks/profitbricks'
3
3
  require 'profitbricks/extensions'
4
4
  require 'profitbricks/config'
5
5
  require 'profitbricks/model'
6
- require 'profitbricks/data_center'
6
+ require 'profitbricks/rule'
7
+ require 'profitbricks/firewall'
8
+ require 'profitbricks/nic'
9
+ require 'profitbricks/load_balancer'
7
10
  require 'profitbricks/server'
11
+ require 'profitbricks/data_center'
8
12
  require 'profitbricks/image'
9
13
  require 'profitbricks/storage'
10
14
  require 'profitbricks/ip_block'
11
- require 'profitbricks/load_balancer'
12
- require 'profitbricks/firewall'
13
15
  require 'profitbricks/rule'
14
16
 
15
17
  module Profitbricks
16
- VERSION = '0.9.9'
18
+ VERSION = '1.0.0'
17
19
  end
18
20
 
19
- PB = Profitbricks
21
+ PB = Profitbricks
@@ -7,18 +7,18 @@ module Profitbricks
7
7
  # Deletes an empty Virtual Data Center. All components must be removed first.
8
8
  # @return [Boolean] true on success, false otherwise
9
9
  def delete
10
- response = Profitbricks.request :delete_data_center, "<dataCenterId>#{self.id}</dataCenterId>"
11
- response.to_hash[:delete_data_center_response][:return] ? true : false
10
+ response = Profitbricks.request :delete_data_center, data_center_id: self.id
11
+ response ? true : false
12
12
  end
13
13
 
14
14
  # Removes all components from the current Virtual Data Center.
15
15
  # @return The current Virtual Data Center
16
16
  def clear
17
- response = Profitbricks.request :clear_data_center, "<dataCenterId>#{self.id}</dataCenterId>"
17
+ response = Profitbricks.request :clear_data_center, data_center_id: self.id
18
18
  @provisioning_state = nil
19
19
  @servers = []
20
20
  @storages = []
21
- return self if response.to_hash[:clear_data_center_response][:return]
21
+ return self if response
22
22
  end
23
23
 
24
24
  # Renames the Virtual Data Center.
@@ -26,9 +26,8 @@ module Profitbricks
26
26
  # @param [String] Name
27
27
  # @return [DataCenter] The renamed DataCenter
28
28
  def rename(name)
29
- response = Profitbricks.request :update_data_center,
30
- "<arg0><dataCenterId>#{self.id}</dataCenterId><dataCenterName>#{name}</dataCenterName></arg0>"
31
- if response.to_hash[:update_data_center_response][:return]
29
+ response = Profitbricks.request :update_data_center, data_center_id: self.id, data_center_name: name
30
+ if response
32
31
  @name = name
33
32
  end
34
33
  self
@@ -41,27 +40,27 @@ module Profitbricks
41
40
  #
42
41
  # @return [String] Provisioning State of the target Virtual Data Center (INACTIVE, INPROCESS, AVAILABLE, DELETED)
43
42
  def update_state
44
- response = Profitbricks.request :get_data_center_state, "<dataCenterId>#{self.id}</dataCenterId>"
45
- @provisioning_state = response.to_hash[:get_data_center_state_response][:return]
43
+ response = Profitbricks.request :get_data_center_state, data_center_id: self.id
44
+ @provisioning_state = response
46
45
  self.provisioning_state
47
46
  end
48
47
 
49
48
  # Creates a Server in the current Virtual Data Center, automatically sets the :data_center_id
50
49
  # @see Profitbricks::Server#create
51
50
  def create_server(options)
52
- Server.create(options.merge(:data_center_id => self.id))
51
+ Server.create(options.merge(data_center_id: self.id))
53
52
  end
54
53
 
55
54
  # Creates a Storage in the current Virtual Data Center, automatically sets the :data_center_id
56
55
  # @see Profitbricks::Storage#create
57
56
  def create_storage(options)
58
- Storage.create(options.merge(:data_center_id => self.id))
57
+ Storage.create(options.merge(data_center_id: self.id))
59
58
  end
60
59
 
61
60
  # Creates a Load Balancer in the current Virtual Data Center, automatically sets the :data_center_id
62
61
  # @see Profitbricks::LoadBalancer#create
63
62
  def create_load_balancer(options)
64
- LoadBalancer.create(options.merge(:data_center_id => self.id))
63
+ LoadBalancer.create(options.merge(data_center_id: self.id))
65
64
  end
66
65
 
67
66
  # Checks if the Data Center was successfully provisioned
@@ -90,8 +89,7 @@ module Profitbricks
90
89
  # @return [Array <DataCenter>] Array of all available DataCenter
91
90
  def all
92
91
  resp = Profitbricks.request :get_all_data_centers
93
- datacenters = resp.to_hash[:get_all_data_centers_response][:return]
94
- [datacenters].flatten.compact.collect do |dc|
92
+ [resp].flatten.compact.collect do |dc|
95
93
  PB::DataCenter.find(:id => PB::DataCenter.new(dc).id)
96
94
  end
97
95
  end
@@ -104,10 +102,9 @@ module Profitbricks
104
102
  # @return [DataCenter] The newly created Virtual Data Center
105
103
  def create(options)
106
104
  raise ArgumentError.new(":region has to be one of 'DEFAULT', 'NORTH_AMERICA', or 'EUROPE'") if options[:region] and !['DEFAULT', 'EUROPE', 'NORTH_AMERICA'].include? options[:region]
107
- xml = "<dataCenterName>#{options[:name]}</dataCenterName>"
108
- xml += get_xml_and_update_attributes options, [:region]
109
- response = Profitbricks.request :create_data_center, xml
110
- self.find(:id => response.to_hash[:create_data_center_response][:return][:data_center_id] )
105
+ options[:data_center_name] = options.delete :name
106
+ response = Profitbricks.request :create_data_center, options
107
+ self.find(:id => response[:data_center_id] )
111
108
  end
112
109
 
113
110
  # Finds a Virtual Data Center
@@ -120,8 +117,10 @@ module Profitbricks
120
117
  options[:id] = dc.id if dc
121
118
  end
122
119
  raise "Unable to locate the datacenter named '#{options[:name]}'" unless options[:id]
123
- response = Profitbricks.request :get_data_center, "<dataCenterId>#{options[:id]}</dataCenterId>"
124
- PB::DataCenter.new(response.to_hash[:get_data_center_response][:return])
120
+ options[:data_center_id] = options.delete :id
121
+ options.delete :name
122
+ response = Profitbricks.request :get_data_center, options
123
+ PB::DataCenter.new(response)
125
124
  end
126
125
  end
127
126
 
@@ -11,7 +11,4 @@ class String
11
11
  return self if self !~ /_/ && self =~ /[A-Z]+.*/
12
12
  split('_').map{|e| e.capitalize}.join
13
13
  end
14
- def lower_camelcase
15
- self.split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
16
- end
17
14
  end
@@ -15,23 +15,17 @@ module Profitbricks
15
15
  # @param [Array<FirewallRule>] Array of FirewallRules to add
16
16
  # @return [Boolean] true on success, false otherwise
17
17
  def add_rules(rules)
18
- xml = ""
18
+ options = {request: []}
19
19
  rules.each do |rule|
20
- xml += "<request>"
21
- xml += rule.get_xml_and_update_attributes rule.attributes, rule.attributes.keys
22
- xml += "</request>"
20
+ options[:request] << rule.attributes
23
21
  end
24
22
  response = nil
25
23
  if @parent.class == Profitbricks::LoadBalancer
26
- xml += "<loadBalancerId>#{@parent.id}</loadBalancerId>"
27
- response = Profitbricks.request :add_firewall_rules_to_load_balancer, xml
28
- update_attributes(response.to_hash[:add_firewall_rules_to_load_balancer_response][:return])
29
- return true if response.to_hash[:add_firewall_rules_to_load_balancer_response][:return]
24
+ response = Profitbricks.request :add_firewall_rules_to_load_balancer, options.merge(load_balancer_id: @parent.id)
25
+ self.reload
30
26
  else
31
- xml += "<nicId>#{self.nic_id}</nicId>"
32
- response = Profitbricks.request :add_firewall_rules_to_nic, xml
33
- update_attributes(response.to_hash[:add_firewall_rules_to_nic_response][:return])
34
- return true if response.to_hash[:add_firewall_rules_to_nic_response][:return]
27
+ response = Profitbricks.request :add_firewall_rules_to_nic, options.merge(nic_id: self.nic_id)
28
+ self.reload
35
29
  end
36
30
 
37
31
  end
@@ -40,24 +34,24 @@ module Profitbricks
40
34
  #
41
35
  # @return [Boolean] true on success, false otherwise
42
36
  def activate
43
- response = Profitbricks.request :activate_firewalls, "<firewallIds>#{self.id}</firewallIds>"
44
- return true if response[:activate_firewalls_response][:return]
37
+ response = Profitbricks.request :activate_firewalls, firewall_ids: self.id
38
+ return true
45
39
  end
46
40
 
47
41
  # Deactivates the Firewall
48
42
  #
49
43
  # @return [Boolean] true on success, false otherwise
50
44
  def deactivate
51
- response = Profitbricks.request :deactivate_firewalls, "<firewallIds>#{self.id}</firewallIds>"
52
- return true if response[:deactivate_firewalls_response][:return]
45
+ response = Profitbricks.request :deactivate_firewalls, firewall_ids: self.id
46
+ return true
53
47
  end
54
48
 
55
49
  # Deletes the Firewall
56
50
  #
57
51
  # @return [Boolean] true on success, false otherwise
58
52
  def delete
59
- response = Profitbricks.request :delete_firewalls, "<firewallIds>#{self.id}</firewallIds>"
60
- return true if response[:delete_firewalls_response][:return]
53
+ response = Profitbricks.request :delete_firewalls, firewall_ids: self.id
54
+ return true
61
55
  end
62
56
  class << self
63
57
  # Returns information about the respective firewall.
@@ -67,9 +61,9 @@ module Profitbricks
67
61
  # @option options [String] :id The id of the firewall to locate (required)
68
62
  # @return [Firewall] The located Firewall
69
63
  def find(options = {})
70
- response = Profitbricks.request :get_firewall, "<firewallId>#{options[:id]}</firewallId>"
64
+ response = Profitbricks.request :get_firewall, firewall_id: options[:id]
71
65
  # FIXME we cannot load the Firewall without knowing if it is belonging to a NIC or a LoadBalancer
72
- PB::Firewall.new(response.to_hash[:get_firewall_response][:return], nil)
66
+ PB::Firewall.new(response, nil)
73
67
  end
74
68
  end
75
69
  end
@@ -1,5 +1,6 @@
1
1
  module Profitbricks
2
2
  class Image < Profitbricks::Model
3
+ belongs_to :mount_image, :class_name => :image
3
4
 
4
5
  # Sets the OS Type of an individual HDD and/or CD-ROM/DVD image that has been uploaded on the ProfitBricks FTP server.
5
6
  #
@@ -7,7 +8,7 @@ module Profitbricks
7
8
  # @return [Image] Updated Image Object
8
9
  def set_os_type(type)
9
10
  raise ArgumentError.new(":os_type has to be either 'WINDOWS' or 'OTHER'") if !['WINDOWS', 'OTHER'].include? type
10
- response = Profitbricks.request :set_image_os_type, "<imageId>#{self.id}</imageId><osType>#{type}</osType>"
11
+ response = Profitbricks.request :set_image_os_type, image_id: self.id, os_type: type
11
12
  @os_type = type
12
13
  self
13
14
  end
@@ -23,14 +24,11 @@ module Profitbricks
23
24
  def find(options = {})
24
25
  image = nil
25
26
  if options[:name]
26
- image = PB::Image.all().select { |d| d.name == options[:name] }.first
27
+ image = PB::Image.all().select { |d| d.name == options[:name] && (options[:region] ? d.region == options[:region] : true) }.first
27
28
  options[:id] = image.id if image
28
29
  end
29
30
  raise "Unable to locate the image named '#{options[:name]}'" unless options[:id]
30
31
  image
31
- # This does not work for public images
32
- #response = Profitbricks.request :get_image, "<imageId>#{options[:id]}</imageId>"
33
- #PB::Image.new(response.to_hash[:get_image_response][:return])
34
32
  end
35
33
 
36
34
  # Outputs a list of all HDD and/or CD-ROM/DVD images existing on or uploaded to the Profit-Bricks FTP server.
@@ -38,7 +36,7 @@ module Profitbricks
38
36
  # @return [Array<Image>] List of all available Images
39
37
  def all
40
38
  resp = Profitbricks.request :get_all_images
41
- resp.to_hash[:get_all_images_response][:return].collect do |dc|
39
+ resp.collect do |dc|
42
40
  PB::Image.new(dc)
43
41
  end
44
42
  end