fog-brightbox 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/lib/fog/brightbox/compute.rb +10 -0
- data/lib/fog/brightbox/compute/resource_locking.rb +27 -0
- data/lib/fog/brightbox/models/compute/database_server.rb +3 -0
- data/lib/fog/brightbox/models/compute/database_snapshot.rb +3 -0
- data/lib/fog/brightbox/models/compute/image.rb +3 -0
- data/lib/fog/brightbox/models/compute/load_balancer.rb +2 -0
- data/lib/fog/brightbox/models/compute/server.rb +2 -2
- data/lib/fog/brightbox/requests/compute/lock_resource_database_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/lock_resource_database_snapshot.rb +19 -0
- data/lib/fog/brightbox/requests/compute/lock_resource_image.rb +19 -0
- data/lib/fog/brightbox/requests/compute/lock_resource_load_balancer.rb +19 -0
- data/lib/fog/brightbox/requests/compute/lock_resource_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/unlock_resource_database_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/unlock_resource_database_snapshot.rb +19 -0
- data/lib/fog/brightbox/requests/compute/unlock_resource_image.rb +19 -0
- data/lib/fog/brightbox/requests/compute/unlock_resource_load_balancer.rb +19 -0
- data/lib/fog/brightbox/requests/compute/unlock_resource_server.rb +19 -0
- data/lib/fog/brightbox/version.rb +1 -1
- data/spec/fog/compute/brightbox/database_server_spec.rb +1 -0
- data/spec/fog/compute/brightbox/database_snapshot_spec.rb +1 -0
- data/spec/fog/compute/brightbox/image_spec.rb +1 -0
- data/spec/fog/compute/brightbox/load_balancer_spec.rb +1 -0
- data/spec/fog/compute/brightbox/server_spec.rb +1 -0
- data/spec/model_setup.rb +22 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/supports_resource_locking.rb +41 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ba0fd5a2af49de6bfd1c985302496ca96f0368c
|
4
|
+
data.tar.gz: 59f4dec412be2a7f9bd2f77585e4c045f62741a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6df22c1e489650cbf363a0c12f1a382235293108dc145ca089fb996d1720fed5a0e0de11e0120374102d75c4980541db203f681169f8af40ec0aa0729250017a
|
7
|
+
data.tar.gz: 8c186b06909f62c6d395a4ce85bfaa190ece428d761859dee413bc1b883ae4145282e15bb114d330bdadbad57ef495d30dde860d68c98b520b0915af371c929b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
### 0.2.0 / 2014-08-07
|
2
|
+
|
3
|
+
Enhancements:
|
4
|
+
|
5
|
+
* Add resource locks to prevent accidental deleting of the following resources:
|
6
|
+
* Database servers
|
7
|
+
* Database snapshots
|
8
|
+
* Images
|
9
|
+
* Load balancers
|
10
|
+
* Servers
|
11
|
+
|
1
12
|
### 0.1.1 / 2014-06-26
|
2
13
|
|
3
14
|
Bug fixes:
|
@@ -137,6 +137,11 @@ module Fog
|
|
137
137
|
request :list_users
|
138
138
|
request :list_user_collaborations
|
139
139
|
request :list_zones
|
140
|
+
request :lock_resource_database_server
|
141
|
+
request :lock_resource_database_snapshot
|
142
|
+
request :lock_resource_image
|
143
|
+
request :lock_resource_load_balancer
|
144
|
+
request :lock_resource_server
|
140
145
|
request :map_cloud_ip
|
141
146
|
request :move_servers_server_group
|
142
147
|
request :reject_user_collaboration
|
@@ -156,6 +161,11 @@ module Fog
|
|
156
161
|
request :snapshot_server
|
157
162
|
request :start_server
|
158
163
|
request :stop_server
|
164
|
+
request :unlock_resource_database_server
|
165
|
+
request :unlock_resource_database_snapshot
|
166
|
+
request :unlock_resource_image
|
167
|
+
request :unlock_resource_load_balancer
|
168
|
+
request :unlock_resource_server
|
159
169
|
request :unmap_cloud_ip
|
160
170
|
request :update_account
|
161
171
|
request :update_api_client
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module ResourceLocking
|
2
|
+
def locked?
|
3
|
+
if attributes.key?("locked") || attributes.key?(:locked)
|
4
|
+
attributes["locked"] || attributes[:locked] || false
|
5
|
+
else
|
6
|
+
false
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def lock!
|
11
|
+
locking_request(:lock)
|
12
|
+
end
|
13
|
+
|
14
|
+
def unlock!
|
15
|
+
locking_request(:unlock)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def locking_request(lock_setting)
|
21
|
+
requires :identity
|
22
|
+
|
23
|
+
data = service.send(:"#{lock_setting}_resource_#{resource_name}", identity)
|
24
|
+
merge_attributes(data)
|
25
|
+
true
|
26
|
+
end
|
27
|
+
end
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require "fog/brightbox/model"
|
2
|
+
require "fog/brightbox/compute/resource_locking"
|
2
3
|
|
3
4
|
module Fog
|
4
5
|
module Compute
|
5
6
|
class Brightbox
|
6
7
|
class DatabaseServer < Fog::Brightbox::Model
|
8
|
+
include ResourceLocking
|
9
|
+
|
7
10
|
identity :id
|
8
11
|
attribute :url
|
9
12
|
attribute :resource_type
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require "fog/brightbox/model"
|
2
|
+
require "fog/brightbox/compute/resource_locking"
|
2
3
|
|
3
4
|
module Fog
|
4
5
|
module Compute
|
5
6
|
class Brightbox
|
6
7
|
class DatabaseSnapshot < Fog::Brightbox::Model
|
8
|
+
include ResourceLocking
|
9
|
+
|
7
10
|
identity :id
|
8
11
|
attribute :url
|
9
12
|
attribute :resource_type
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require "fog/brightbox/model"
|
2
|
+
require "fog/brightbox/compute/resource_locking"
|
2
3
|
|
3
4
|
module Fog
|
4
5
|
module Compute
|
5
6
|
class Brightbox
|
6
7
|
class Image < Fog::Brightbox::Model
|
8
|
+
include ResourceLocking
|
9
|
+
|
7
10
|
identity :id
|
8
11
|
attribute :url
|
9
12
|
attribute :resource_type
|
@@ -1,11 +1,12 @@
|
|
1
1
|
require "fog/compute/models/server"
|
2
|
-
require "fog/brightbox/
|
2
|
+
require "fog/brightbox/compute/resource_locking"
|
3
3
|
|
4
4
|
module Fog
|
5
5
|
module Compute
|
6
6
|
class Brightbox
|
7
7
|
class Server < Fog::Compute::Server
|
8
8
|
include Fog::Brightbox::ModelHelper
|
9
|
+
include ResourceLocking
|
9
10
|
|
10
11
|
identity :id
|
11
12
|
attribute :resource_type
|
@@ -212,7 +213,6 @@ module Fog
|
|
212
213
|
end
|
213
214
|
end
|
214
215
|
end
|
215
|
-
|
216
216
|
end
|
217
217
|
end
|
218
218
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#database_server_lock_resource_database_server
|
10
|
+
#
|
11
|
+
def lock_resource_database_server(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/database_servers/#{identifier}/lock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#database_snapshot_lock_resource_database_snapshot
|
10
|
+
#
|
11
|
+
def lock_resource_database_snapshot(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/database_snapshots/#{identifier}/lock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#image_lock_resource_image
|
10
|
+
#
|
11
|
+
def lock_resource_image(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/images/#{identifier}/lock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#load_balancer_lock_resource_load_balancer
|
10
|
+
#
|
11
|
+
def lock_resource_load_balancer(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/load_balancers/#{identifier}/lock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#server_lock_resource_server
|
10
|
+
#
|
11
|
+
def lock_resource_server(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/servers/#{identifier}/lock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#database_server_unlock_resource_database_server
|
10
|
+
#
|
11
|
+
def unlock_resource_database_server(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/database_servers/#{identifier}/unlock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#database_snapshot_unlock_resource_database_snapshot
|
10
|
+
#
|
11
|
+
def unlock_resource_database_snapshot(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/database_snapshots/#{identifier}/unlock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#image_unlock_resource_image
|
10
|
+
#
|
11
|
+
def unlock_resource_image(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/images/#{identifier}/unlock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#load_balancer_unlock_resource_load_balancer
|
10
|
+
#
|
11
|
+
def unlock_resource_load_balancer(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/load_balancers/#{identifier}/unlock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class Real
|
5
|
+
# @param [String] identifier Unique reference to identify the resource
|
6
|
+
#
|
7
|
+
# @return [Hash] if successful Hash version of JSON object
|
8
|
+
#
|
9
|
+
# @see https://api.gb1.brightbox.com/1.0/#server_unlock_resource_server
|
10
|
+
#
|
11
|
+
def unlock_resource_server(identifier)
|
12
|
+
return nil if identifier.nil? || identifier == ""
|
13
|
+
wrapped_request("put", "/1.0/servers/#{identifier}/unlock_resource", [200])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/spec/model_setup.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
module ModelSetup
|
2
|
+
def self.included(base)
|
3
|
+
base.class_eval do
|
4
|
+
let(:configuration) do
|
5
|
+
{
|
6
|
+
:brightbox_auth_url => "http://localhost",
|
7
|
+
:brightbox_api_url => "http://localhost",
|
8
|
+
:brightbox_client_id => "",
|
9
|
+
:brightbox_secret => "",
|
10
|
+
:brightbox_username => "",
|
11
|
+
:brightbox_password => "",
|
12
|
+
:brightbox_account => "",
|
13
|
+
:brightbox_default_image => "img-test",
|
14
|
+
:brightbox_access_token => "FAKECACHEDTOKEN"
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:config) { Fog::Brightbox::Config.new(configuration) }
|
19
|
+
let(:service) { Fog::Compute::Brightbox.new(config) }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
require "webmock/minitest"
|
2
|
+
|
3
|
+
module SupportsResourceLocking
|
4
|
+
def self.included(base)
|
5
|
+
base.class_eval do
|
6
|
+
let(:collection_name) { subject.collection_name }
|
7
|
+
|
8
|
+
def test_responds_to_locked
|
9
|
+
assert_respond_to subject, :locked?
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_responds_to_lock
|
13
|
+
assert_respond_to subject, :lock!
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_lock_makes_request
|
17
|
+
skip if RUBY_VERSION < "1.9"
|
18
|
+
|
19
|
+
subject.id = "tst-12345"
|
20
|
+
|
21
|
+
stub_request(:put, "http://localhost/1.0/#{collection_name}/tst-12345/lock_resource?account_id=").to_return(:status => 200, :body => "{}", :headers => {})
|
22
|
+
|
23
|
+
subject.lock!
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_responds_to_unlock
|
27
|
+
assert_respond_to subject, :unlock!
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_unlock_makes_request
|
31
|
+
skip if RUBY_VERSION < "1.9"
|
32
|
+
|
33
|
+
subject.id = "tst-12345"
|
34
|
+
|
35
|
+
stub_request(:put, "http://localhost/1.0/#{collection_name}/tst-12345/unlock_resource?account_id=").to_return(:status => 200, :body => "{}", :headers => {})
|
36
|
+
|
37
|
+
subject.unlock!
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-brightbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Thornthwaite
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog-core
|
@@ -142,6 +142,7 @@ files:
|
|
142
142
|
- lib/fog/brightbox/compute.rb
|
143
143
|
- lib/fog/brightbox/compute/config.rb
|
144
144
|
- lib/fog/brightbox/compute/image_selector.rb
|
145
|
+
- lib/fog/brightbox/compute/resource_locking.rb
|
145
146
|
- lib/fog/brightbox/compute/shared.rb
|
146
147
|
- lib/fog/brightbox/config.rb
|
147
148
|
- lib/fog/brightbox/core.rb
|
@@ -255,6 +256,11 @@ files:
|
|
255
256
|
- lib/fog/brightbox/requests/compute/list_user_collaborations.rb
|
256
257
|
- lib/fog/brightbox/requests/compute/list_users.rb
|
257
258
|
- lib/fog/brightbox/requests/compute/list_zones.rb
|
259
|
+
- lib/fog/brightbox/requests/compute/lock_resource_database_server.rb
|
260
|
+
- lib/fog/brightbox/requests/compute/lock_resource_database_snapshot.rb
|
261
|
+
- lib/fog/brightbox/requests/compute/lock_resource_image.rb
|
262
|
+
- lib/fog/brightbox/requests/compute/lock_resource_load_balancer.rb
|
263
|
+
- lib/fog/brightbox/requests/compute/lock_resource_server.rb
|
258
264
|
- lib/fog/brightbox/requests/compute/map_cloud_ip.rb
|
259
265
|
- lib/fog/brightbox/requests/compute/move_servers_server_group.rb
|
260
266
|
- lib/fog/brightbox/requests/compute/reject_user_collaboration.rb
|
@@ -273,6 +279,11 @@ files:
|
|
273
279
|
- lib/fog/brightbox/requests/compute/snapshot_server.rb
|
274
280
|
- lib/fog/brightbox/requests/compute/start_server.rb
|
275
281
|
- lib/fog/brightbox/requests/compute/stop_server.rb
|
282
|
+
- lib/fog/brightbox/requests/compute/unlock_resource_database_server.rb
|
283
|
+
- lib/fog/brightbox/requests/compute/unlock_resource_database_snapshot.rb
|
284
|
+
- lib/fog/brightbox/requests/compute/unlock_resource_image.rb
|
285
|
+
- lib/fog/brightbox/requests/compute/unlock_resource_load_balancer.rb
|
286
|
+
- lib/fog/brightbox/requests/compute/unlock_resource_server.rb
|
276
287
|
- lib/fog/brightbox/requests/compute/unmap_cloud_ip.rb
|
277
288
|
- lib/fog/brightbox/requests/compute/update_account.rb
|
278
289
|
- lib/fog/brightbox/requests/compute/update_api_client.rb
|
@@ -311,7 +322,9 @@ files:
|
|
311
322
|
- spec/fog/compute/brightbox/zone_spec.rb
|
312
323
|
- spec/fog/compute/brightbox_spec.rb
|
313
324
|
- spec/model_helper.rb
|
325
|
+
- spec/model_setup.rb
|
314
326
|
- spec/spec_helper.rb
|
327
|
+
- spec/supports_resource_locking.rb
|
315
328
|
homepage: ''
|
316
329
|
licenses:
|
317
330
|
- MIT
|
@@ -360,4 +373,7 @@ test_files:
|
|
360
373
|
- spec/fog/compute/brightbox/zone_spec.rb
|
361
374
|
- spec/fog/compute/brightbox_spec.rb
|
362
375
|
- spec/model_helper.rb
|
376
|
+
- spec/model_setup.rb
|
363
377
|
- spec/spec_helper.rb
|
378
|
+
- spec/supports_resource_locking.rb
|
379
|
+
has_rdoc:
|