fog-oneandone 1.0 → 1.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.
- checksums.yaml +5 -5
- data/README.md +3 -1
- data/Rakefile +24 -0
- data/examples/example_app.rb +39 -12
- data/fog-oneandone.gemspec +2 -1
- data/lib/oneandone/compute.rb +103 -16
- data/lib/oneandone/models/compute/baremetal_model.rb +15 -0
- data/lib/oneandone/models/compute/baremetal_models.rb +24 -0
- data/lib/oneandone/models/compute/block_storage.rb +100 -0
- data/lib/oneandone/models/compute/block_storages.rb +24 -0
- data/lib/oneandone/models/compute/firewall.rb +0 -15
- data/lib/oneandone/models/compute/image.rb +6 -1
- data/lib/oneandone/models/compute/public_ip.rb +2 -1
- data/lib/oneandone/models/compute/recovery_appliance.rb +18 -0
- data/lib/oneandone/models/compute/recovery_appliances.rb +24 -0
- data/lib/oneandone/models/compute/server.rb +44 -105
- data/lib/oneandone/models/compute/server_appliance.rb +25 -0
- data/lib/oneandone/models/compute/server_appliances.rb +24 -0
- data/lib/oneandone/models/compute/ssh_key.rb +67 -0
- data/lib/oneandone/models/compute/ssh_keys.rb +24 -0
- data/lib/oneandone/requests/compute/add_block_storage_server.rb +61 -0
- data/lib/oneandone/requests/compute/add_ports.rb +1 -1
- data/lib/oneandone/requests/compute/create_block_storage.rb +80 -0
- data/lib/oneandone/requests/compute/create_image.rb +9 -3
- data/lib/oneandone/requests/compute/create_server.rb +11 -5
- data/lib/oneandone/requests/compute/create_ssh_key.rb +74 -0
- data/lib/oneandone/requests/compute/delete_block_storage.rb +51 -0
- data/lib/oneandone/requests/compute/delete_ssh_key.rb +51 -0
- data/lib/oneandone/requests/compute/get_baremetal_model.rb +42 -0
- data/lib/oneandone/requests/compute/get_block_storage.rb +50 -0
- data/lib/oneandone/requests/compute/get_block_storage_server.rb +50 -0
- data/lib/oneandone/requests/compute/get_recovery_appliance.rb +41 -0
- data/lib/oneandone/requests/compute/get_ssh_key.rb +50 -0
- data/lib/oneandone/requests/compute/list_baremetal_models.rb +49 -0
- data/lib/oneandone/requests/compute/list_block_storages.rb +56 -0
- data/lib/oneandone/requests/compute/list_recovery_appliances.rb +47 -0
- data/lib/oneandone/requests/compute/list_ssh_keys.rb +56 -0
- data/lib/oneandone/requests/compute/remove_block_storage_server.rb +50 -0
- data/lib/oneandone/requests/compute/update_block_storage.rb +80 -0
- data/lib/oneandone/requests/compute/update_ssh_key.rb +78 -0
- data/tests/oneandone/test_block_storages.rb +82 -0
- data/tests/oneandone/test_firewalls.rb +5 -16
- data/tests/oneandone/test_recovery_appliances.rb +34 -0
- data/tests/oneandone/test_server_appliances.rb +34 -0
- data/tests/oneandone/test_ssh_keys.rb +82 -0
- metadata +58 -13
- data/lib/oneandone/requests/compute/remove_firewall_ip.rb +0 -60
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f373bf00aa4accd5cfc0f5cb70ba5c64e7a4d7b21a2ba1ec69abafcf74fe4d81
|
4
|
+
data.tar.gz: b5d9f9dd6516e9a97ded3f3d57d000c0de120c8ee73e28df15500851d45f6d8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff99d22c4ec2285d479c73027f18d443200b3675c3033e9c18e5d0901f87dc4fbe5f03124303aa8cd56fbdfc4a37c2df1520e495c17764d2c6aa8d863c9b7317
|
7
|
+
data.tar.gz: 36bef36cf89ddf299c767dd1d2c93ecbd225fb7fde5fbd5448f9821aa6f2c2486d89291006362f987f008590cc862988a18c405ec7aa07954b0ec074200541b3
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/tjb1019/fog)
|
4
4
|
|
5
|
-
Fog is an open-source, community Ruby library used for interacting with popular cloud infrastructure providers through a single, unified API.
|
5
|
+
Fog is an open-source, community Ruby library used for interacting with popular cloud infrastructure providers through a single, unified API. For more information on the Fog plug-in see the [1&1 Community Portal](https://www.1and1.com/cloud-community/).
|
6
6
|
|
7
7
|
This guide will show you how to programmatically use the 1&1 provider in Fog to perform common management tasks available in the 1&1 Cloud Panel.
|
8
8
|
|
@@ -187,6 +187,8 @@ public_ips
|
|
187
187
|
private_networks
|
188
188
|
monitoring_policies
|
189
189
|
vpns
|
190
|
+
block_storages
|
191
|
+
ssh_keys
|
190
192
|
```
|
191
193
|
|
192
194
|
Each collection comes equipped with the `create`, `all`, and `get` methods. You've seen how the `create` method works in our server example above. `all` will fetch every object of that type from the provider, and generate a model for each of those objects. Here's an example:
|
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rake/testtask"
|
3
|
+
|
4
|
+
task :default => :travis
|
5
|
+
task :travis => ["test", "test:travis"]
|
6
|
+
task :console do
|
7
|
+
exec "pry -r fog/oneandone -I ./lib"
|
8
|
+
end
|
9
|
+
|
10
|
+
Rake::TestTask.new do |t|
|
11
|
+
t.libs.push %w(spec)
|
12
|
+
t.test_files = FileList["tests/**/**.rb"]
|
13
|
+
t.verbose = true
|
14
|
+
end
|
15
|
+
|
16
|
+
namespace :test do
|
17
|
+
mock = ENV["FOG_MOCK"] || "true"
|
18
|
+
task :travis do
|
19
|
+
sh("export FOG_MOCK=#{mock} && bundle exec shindont")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Default Task"
|
24
|
+
task :default => [:test]
|
data/examples/example_app.rb
CHANGED
@@ -4,11 +4,18 @@ compute = Fog::Compute::OneAndOne.new({
|
|
4
4
|
:oneandone_api_key => '<API-TOKEN>'
|
5
5
|
})
|
6
6
|
|
7
|
+
# Create SSH Key
|
8
|
+
my_ssh_key = compute.ssh_keys.create(name: 'Fog Example App Ssh Key',
|
9
|
+
description: 'My Fog SSH Key Description',
|
10
|
+
public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCezYMOgAan+JmatgFJ+Q1FUNjrqNVgAvcTkjYJwHVcQaolq9f9qB7tEeUPDNj2oNN49joAmTcllDcPIxryT5PnQUaaUhu4ZJ9+bRtXCyhnf2LJQdVfzBFEBJX9fW4RiV1XtSAtLRBrbrCb4JjHmhIYpvhBHC29Ve+g64nhdvBhqyLZ3SLI2U/opEmt5u2xftWGl0TBSQYveqc4ntz3fe+f9XlBHvK3Nw12bCLmLle7jQuZ4lXyAYqNAfdOMTs2zMTk422Dl/h4+zRh1h4rM9zaCk4+g3kdugJm7Vul03wm43cHmHsJv51R3XKSHzgb7q/eNj+YdMi5Ndt0Bm+bLjw4")
|
11
|
+
puts 'Creating ssh key...'
|
12
|
+
|
7
13
|
# Create Server
|
8
|
-
my_server = compute.servers.create(name: 'Example App Server',
|
9
|
-
fixed_instance_id: '
|
10
|
-
appliance_id: '
|
11
|
-
datacenter_id: '
|
14
|
+
my_server = compute.servers.create(name: 'Fog Example App Server',
|
15
|
+
fixed_instance_id: 'CCC1C54896223068E05EFC17614EE690',
|
16
|
+
appliance_id: 'C572494C271ED64142E5FD93E084BBFC',
|
17
|
+
datacenter_id: '4EFAD5836CE43ACA502FD5B99BEE44EF',
|
18
|
+
public_key: [my_ssh_key.id])
|
12
19
|
|
13
20
|
puts 'Creating server...'
|
14
21
|
puts my_server.wait_for { ready? }
|
@@ -17,15 +24,21 @@ puts my_server.wait_for { ready? }
|
|
17
24
|
# Create Firewall
|
18
25
|
puts "----------"
|
19
26
|
rule1 = {
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
27
|
+
'description' => 'Testing firewall improvements fog',
|
28
|
+
'protocol' => 'TCP',
|
29
|
+
'port' => '90',
|
30
|
+
'source' => '0.0.0.0'
|
31
|
+
}
|
32
|
+
rule2 = {
|
33
|
+
'protocol' => 'TCP',
|
34
|
+
'port_from' => 80,
|
35
|
+
'port_to' => 80,
|
36
|
+
'source' => '0.0.0.0'
|
24
37
|
}
|
25
38
|
|
26
|
-
rules = [rule1]
|
39
|
+
rules = [rule1, rule2]
|
27
40
|
|
28
|
-
my_firewall = compute.firewalls.create(name: 'Example App Firewall',
|
41
|
+
my_firewall = compute.firewalls.create(name: 'Fog Example App Firewall',
|
29
42
|
rules: rules)
|
30
43
|
puts 'Creating Firewall...'
|
31
44
|
puts my_firewall.wait_for { ready? }
|
@@ -42,10 +55,10 @@ rule1 = {
|
|
42
55
|
|
43
56
|
rules = [rule1]
|
44
57
|
|
45
|
-
my_load_balancer = compute.load_balancers.create(name: 'Example App LB',
|
58
|
+
my_load_balancer = compute.load_balancers.create(name: 'Fog Example App LB',
|
46
59
|
rules: rules, health_check_test: 'TCP', health_check_interval: 40,
|
47
60
|
persistence: true, persistence_time: 1200, method: 'ROUND_ROBIN',
|
48
|
-
datacenter_id: '
|
61
|
+
datacenter_id: '4EFAD5836CE43ACA502FD5B99BEE44EF')
|
49
62
|
puts 'Creating Load Balancer...'
|
50
63
|
puts my_load_balancer.wait_for { ready? }
|
51
64
|
|
@@ -65,6 +78,15 @@ my_server.add_load_balancer(ip_id: my_server.ips[0]['id'],
|
|
65
78
|
load_balancer_id: my_load_balancer.id)
|
66
79
|
puts my_server.wait_for { ready? }
|
67
80
|
|
81
|
+
# Create Block Storage
|
82
|
+
my_block_storage = compute.block_storages.create(
|
83
|
+
name: 'My Fog Block Storage', size: 20,
|
84
|
+
description: 'Testing fog block storage',
|
85
|
+
datacenter_id: '4EFAD5836CE43ACA502FD5B99BEE44EF',
|
86
|
+
server_id: my_server.id
|
87
|
+
)
|
88
|
+
puts 'Creating Block Storage...'
|
89
|
+
puts my_block_storage.wait_for { ready? }
|
68
90
|
|
69
91
|
# Cleanup
|
70
92
|
puts "----------"
|
@@ -76,5 +98,10 @@ puts 'Destroying load balancer...'
|
|
76
98
|
puts my_load_balancer.destroy
|
77
99
|
|
78
100
|
puts "----------"
|
101
|
+
puts my_firewall.wait_for { ready? }
|
79
102
|
puts 'Destroying firewall...'
|
80
103
|
puts my_firewall.destroy
|
104
|
+
|
105
|
+
puts "----------"
|
106
|
+
puts 'Destroying SSH key...'
|
107
|
+
puts my_ssh_key.destroy
|
data/fog-oneandone.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "fog-oneandone"
|
7
|
-
spec.version = "1.
|
7
|
+
spec.version = "1.2"
|
8
8
|
spec.authors = ["Tyler Burkhardt (stackpointcloud.com)"]
|
9
9
|
spec.email = "tyler@stackpointcloud.com"
|
10
10
|
spec.summary = "Module for the 'fog' gem to support 1and1."
|
@@ -19,4 +19,5 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.add_runtime_dependency "fog-core"
|
20
20
|
spec.add_runtime_dependency "fog-json"
|
21
21
|
spec.add_development_dependency "minitest"
|
22
|
+
spec.add_development_dependency "pry", "~> 0.10"
|
22
23
|
end
|
data/lib/oneandone/compute.rb
CHANGED
@@ -38,6 +38,21 @@ module Fog
|
|
38
38
|
model :vpn
|
39
39
|
collection :vpns
|
40
40
|
|
41
|
+
model :block_storage
|
42
|
+
collection :block_storages
|
43
|
+
|
44
|
+
model :ssh_key
|
45
|
+
collection :ssh_keys
|
46
|
+
|
47
|
+
model :baremetal_model
|
48
|
+
collection :baremetal_models
|
49
|
+
|
50
|
+
model :server_appliance
|
51
|
+
collection :server_appliances
|
52
|
+
|
53
|
+
model :recovery_appliance
|
54
|
+
collection :recovery_appliances
|
55
|
+
|
41
56
|
# Requests
|
42
57
|
request_path 'oneandone/requests/compute'
|
43
58
|
|
@@ -94,14 +109,12 @@ module Fog
|
|
94
109
|
|
95
110
|
request :clone_server
|
96
111
|
|
97
|
-
|
98
112
|
request :list_images
|
99
113
|
request :create_image
|
100
114
|
request :get_image
|
101
115
|
request :update_image
|
102
116
|
request :delete_image
|
103
117
|
|
104
|
-
|
105
118
|
request :list_shared_storages
|
106
119
|
request :create_shared_storage
|
107
120
|
request :get_shared_storage
|
@@ -116,7 +129,6 @@ module Fog
|
|
116
129
|
request :access
|
117
130
|
request :change_password
|
118
131
|
|
119
|
-
|
120
132
|
request :list_firewalls
|
121
133
|
request :get_firewall
|
122
134
|
request :create_firewall
|
@@ -125,7 +137,6 @@ module Fog
|
|
125
137
|
|
126
138
|
request :list_firewall_ips
|
127
139
|
request :get_firewall_ip
|
128
|
-
request :remove_firewall_ip
|
129
140
|
request :add_firewall_ips
|
130
141
|
|
131
142
|
request :list_firewall_rules
|
@@ -133,7 +144,6 @@ module Fog
|
|
133
144
|
request :add_firewall_rules
|
134
145
|
request :delete_firewall_rule
|
135
146
|
|
136
|
-
|
137
147
|
request :list_load_balancers
|
138
148
|
request :create_load_balancer
|
139
149
|
request :get_load_balancer
|
@@ -150,14 +160,12 @@ module Fog
|
|
150
160
|
request :get_load_balancer_rule
|
151
161
|
request :delete_load_balancer_rule
|
152
162
|
|
153
|
-
|
154
163
|
request :list_public_ips
|
155
164
|
request :create_public_ip
|
156
165
|
request :get_public_ip
|
157
166
|
request :update_public_ip
|
158
167
|
request :delete_public_ip
|
159
168
|
|
160
|
-
|
161
169
|
request :list_private_networks
|
162
170
|
request :create_private_network
|
163
171
|
request :get_private_network
|
@@ -169,11 +177,9 @@ module Fog
|
|
169
177
|
request :remove_private_network_server
|
170
178
|
request :add_private_network_servers
|
171
179
|
|
172
|
-
|
173
180
|
request :list_monitored_servers
|
174
181
|
request :get_monitored_server
|
175
182
|
|
176
|
-
|
177
183
|
request :list_monitoring_policies
|
178
184
|
request :get_monitoring_policy
|
179
185
|
request :create_monitoring_policy
|
@@ -197,36 +203,51 @@ module Fog
|
|
197
203
|
request :remove_mp_server
|
198
204
|
request :add_mp_servers
|
199
205
|
|
200
|
-
|
201
206
|
request :list_logs
|
202
207
|
request :get_log
|
203
208
|
|
204
|
-
|
205
209
|
request :list_usages
|
206
210
|
|
207
|
-
|
208
211
|
request :list_server_appliances
|
209
212
|
request :get_server_appliance
|
210
213
|
|
211
|
-
|
212
214
|
request :list_dvds
|
213
215
|
request :get_dvd_iso
|
214
216
|
|
215
|
-
|
216
217
|
request :list_vpns
|
217
218
|
request :create_vpn
|
218
219
|
request :get_vpn
|
219
220
|
request :update_vpn
|
220
221
|
request :delete_vpn
|
221
222
|
|
222
|
-
|
223
223
|
request :ping
|
224
224
|
request :ping_auth
|
225
225
|
|
226
|
-
|
227
226
|
request :list_datacenters
|
228
227
|
request :get_datacenter
|
229
228
|
|
229
|
+
request :list_block_storages
|
230
|
+
request :create_block_storage
|
231
|
+
request :get_block_storage
|
232
|
+
request :update_block_storage
|
233
|
+
request :delete_block_storage
|
234
|
+
|
235
|
+
request :get_block_storage_server
|
236
|
+
request :add_block_storage_server
|
237
|
+
request :remove_block_storage_server
|
238
|
+
|
239
|
+
request :list_ssh_keys
|
240
|
+
request :create_ssh_key
|
241
|
+
request :get_ssh_key
|
242
|
+
request :update_ssh_key
|
243
|
+
request :delete_ssh_key
|
244
|
+
|
245
|
+
request :list_baremetal_models
|
246
|
+
request :get_baremetal_model
|
247
|
+
|
248
|
+
request :list_recovery_appliances
|
249
|
+
request :get_recovery_appliance
|
250
|
+
|
230
251
|
class Real
|
231
252
|
|
232
253
|
def initialize(options = {})
|
@@ -296,6 +317,44 @@ module Fog
|
|
296
317
|
:private_networks => [],
|
297
318
|
:monitoring_policies => [],
|
298
319
|
:vpns => [],
|
320
|
+
:ssh_keys => [],
|
321
|
+
:block_storages => [],
|
322
|
+
:baremetal_models => [
|
323
|
+
{
|
324
|
+
"name" => "baremetal_1_name",
|
325
|
+
"id" => "8C626C1A7005D0D1F527143C413D461E",
|
326
|
+
"hardware" => {
|
327
|
+
"cores" => 1,
|
328
|
+
"cores_per_processor" => 4,
|
329
|
+
"ram" => 16,
|
330
|
+
"unit" => "GB",
|
331
|
+
"hdds" => [
|
332
|
+
{
|
333
|
+
"size" => 480,
|
334
|
+
"unit" => "GB",
|
335
|
+
"is_main" => true
|
336
|
+
}
|
337
|
+
]
|
338
|
+
}
|
339
|
+
},
|
340
|
+
{
|
341
|
+
"name" => "baremetal_2_name",
|
342
|
+
"id" => "8C626C1A7005D0D1F5271434563D461A",
|
343
|
+
"hardware" => {
|
344
|
+
"cores" => 1,
|
345
|
+
"cores_per_processor" => 4,
|
346
|
+
"ram" => 64,
|
347
|
+
"unit" => "GB",
|
348
|
+
"hdds" => [
|
349
|
+
{
|
350
|
+
"size" => 800,
|
351
|
+
"unit" => "GB",
|
352
|
+
"is_main" => true
|
353
|
+
}
|
354
|
+
]
|
355
|
+
}
|
356
|
+
}
|
357
|
+
],
|
299
358
|
:datacenters => [
|
300
359
|
{
|
301
360
|
"id" => "81DEF28500FBC2A973FC0C620DF5B721",
|
@@ -679,6 +738,34 @@ module Fog
|
|
679
738
|
"os_architecture" => 64,
|
680
739
|
"type" => "OS"
|
681
740
|
}
|
741
|
+
],
|
742
|
+
:recovery_appliances => [
|
743
|
+
{
|
744
|
+
"id" => "81504C620D98BCEBAA5202D145203B4B",
|
745
|
+
"name" => "Recovery image name",
|
746
|
+
"available_datacenters" => [
|
747
|
+
"DA41201B4A006EDE6DA62A5A62A658E7",
|
748
|
+
"47FA5A2D251AE57935E30F9D5AB4F817",
|
749
|
+
"7C5FA1D21B98DE39D7516333AAB7DA54"
|
750
|
+
],
|
751
|
+
"os_family" => "Linux",
|
752
|
+
"os" => "CentOS",
|
753
|
+
"os_version" => "CentOS 7",
|
754
|
+
"architecture" => 64
|
755
|
+
},
|
756
|
+
{
|
757
|
+
"id" => "81504C620D98BCEB5646987545203B42",
|
758
|
+
"name" => "Recovery image name",
|
759
|
+
"available_datacenters" => [
|
760
|
+
"DA41201B4A006EDE6DA62A5A62A658E7",
|
761
|
+
"47FA5A2D251AE57935E30F9D5AB4F817",
|
762
|
+
"7C5FA1D21B98DE39D7516333AAB7DA54"
|
763
|
+
],
|
764
|
+
"os_family" => "Windows",
|
765
|
+
"os" => "Windows",
|
766
|
+
"os_version" => "Windows 2012",
|
767
|
+
"architecture" => 64
|
768
|
+
}
|
682
769
|
]
|
683
770
|
}
|
684
771
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative 'baremetal_model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class OneAndOne
|
6
|
+
class BaremetalModels < Fog::Collection
|
7
|
+
model Fog::Compute::OneAndOne::BaremetalModel
|
8
|
+
|
9
|
+
def all
|
10
|
+
response = service.list_baremetal_models
|
11
|
+
load(response.body)
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(id)
|
15
|
+
response = service.get_server(id)
|
16
|
+
new(response.body)
|
17
|
+
rescue Excon::Errors::NotFound
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
|
21
|
+
end # BaremetalModels
|
22
|
+
end # OneAndOne
|
23
|
+
end # Compute
|
24
|
+
end # Fog
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class OneAndOne
|
4
|
+
class BlockStorage < Fog::Model
|
5
|
+
|
6
|
+
# Declare Model Attributes
|
7
|
+
identity :id
|
8
|
+
|
9
|
+
attribute :size
|
10
|
+
attribute :state
|
11
|
+
attribute :description
|
12
|
+
attribute :name
|
13
|
+
attribute :datacenter_id
|
14
|
+
attribute :datacenter
|
15
|
+
attribute :creation_date
|
16
|
+
attribute :server
|
17
|
+
attribute :server_id
|
18
|
+
|
19
|
+
|
20
|
+
def save
|
21
|
+
|
22
|
+
# Perform Request
|
23
|
+
response = service.create_block_storage(name: name, size: size,
|
24
|
+
description: description, datacenter_id: datacenter_id,
|
25
|
+
server_id: server_id)
|
26
|
+
|
27
|
+
# Merge Attributes
|
28
|
+
merge_attributes(response.body)
|
29
|
+
|
30
|
+
true
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def update(options = {})
|
36
|
+
|
37
|
+
requires :id
|
38
|
+
|
39
|
+
response = service.update_block_storage(block_storage_id: id,
|
40
|
+
name: options[:name], description: options[:description],
|
41
|
+
size: options[:size])
|
42
|
+
|
43
|
+
# Merge Attributes
|
44
|
+
merge_attributes(response.body)
|
45
|
+
|
46
|
+
true
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def add_server(options = {})
|
52
|
+
|
53
|
+
requires :id
|
54
|
+
|
55
|
+
response = service.add_block_storage_server(block_storage_id: id,
|
56
|
+
server_id: options[:server_id])
|
57
|
+
|
58
|
+
# Merge Attributes
|
59
|
+
merge_attributes(response.body)
|
60
|
+
|
61
|
+
true
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
def remove_server()
|
67
|
+
|
68
|
+
requires :id
|
69
|
+
|
70
|
+
response = service.remove_block_storage_server(block_storage_id: id)
|
71
|
+
|
72
|
+
# Merge Attributes
|
73
|
+
merge_attributes(response.body)
|
74
|
+
|
75
|
+
true
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
def destroy
|
81
|
+
|
82
|
+
requires :id
|
83
|
+
|
84
|
+
service.delete_block_storage(id)
|
85
|
+
|
86
|
+
true
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
def ready?
|
92
|
+
|
93
|
+
state == 'POWERED_ON'
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
end # BlockStorage
|
98
|
+
end # OneAndOne
|
99
|
+
end # Compute
|
100
|
+
end # Fog
|