fog-digitalocean 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.document +3 -0
- data/.gitignore +30 -0
- data/.irbrc +82 -0
- data/.rubocop.yml +20 -0
- data/.rubocop_todo.yml +606 -0
- data/.travis.yml +35 -0
- data/CHANGELOG.md +3 -0
- data/CONTRIBUTING.md +276 -0
- data/CONTRIBUTORS.md +898 -0
- data/Gemfile +5 -0
- data/LICENSE.md +20 -0
- data/README.md +130 -0
- data/RELEASE.md +40 -0
- data/Rakefile +12 -0
- data/benchs/each_provider.sh +6 -0
- data/benchs/each_service.sh +6 -0
- data/benchs/fog_vs.rb +106 -0
- data/benchs/load_times.rb +37 -0
- data/benchs/params.rb +43 -0
- data/benchs/parse_vs_push.rb +67 -0
- data/bin/fog +78 -0
- data/fog-digitalocean.gemspec +61 -0
- data/gemfiles/Gemfile-edge +14 -0
- data/lib/fog/digitalocean.rb +1 -0
- data/lib/fog/digitalocean/CHANGELOG.md +6 -0
- data/lib/fog/digitalocean/compute.rb +109 -0
- data/lib/fog/digitalocean/core.rb +9 -0
- data/lib/fog/digitalocean/examples/getting_started.md +123 -0
- data/lib/fog/digitalocean/models/compute/flavor.rb +17 -0
- data/lib/fog/digitalocean/models/compute/flavors.rb +21 -0
- data/lib/fog/digitalocean/models/compute/image.rb +25 -0
- data/lib/fog/digitalocean/models/compute/images.rb +42 -0
- data/lib/fog/digitalocean/models/compute/region.rb +13 -0
- data/lib/fog/digitalocean/models/compute/regions.rb +21 -0
- data/lib/fog/digitalocean/models/compute/server.rb +170 -0
- data/lib/fog/digitalocean/models/compute/servers.rb +43 -0
- data/lib/fog/digitalocean/models/compute/ssh_key.rb +31 -0
- data/lib/fog/digitalocean/models/compute/ssh_keys.rb +40 -0
- data/lib/fog/digitalocean/models/paging_collection.rb +42 -0
- data/lib/fog/digitalocean/requests/compute/change_kernel.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/convert_to_snapshot.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/create_server.rb +93 -0
- data/lib/fog/digitalocean/requests/compute/create_ssh_key.rb +49 -0
- data/lib/fog/digitalocean/requests/compute/delete_ssh_key.rb +32 -0
- data/lib/fog/digitalocean/requests/compute/destroy_server.rb +35 -0
- data/lib/fog/digitalocean/requests/compute/disable_backups.rb +45 -0
- data/lib/fog/digitalocean/requests/compute/enable_ipv6.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/enable_private_networking.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/get_droplet_action.rb +36 -0
- data/lib/fog/digitalocean/requests/compute/get_image_details.rb +42 -0
- data/lib/fog/digitalocean/requests/compute/get_server_details.rb +84 -0
- data/lib/fog/digitalocean/requests/compute/get_ssh_key.rb +34 -0
- data/lib/fog/digitalocean/requests/compute/list_droplet_actions.rb +38 -0
- data/lib/fog/digitalocean/requests/compute/list_flavors.rb +132 -0
- data/lib/fog/digitalocean/requests/compute/list_images.rb +51 -0
- data/lib/fog/digitalocean/requests/compute/list_regions.rb +95 -0
- data/lib/fog/digitalocean/requests/compute/list_servers.rb +33 -0
- data/lib/fog/digitalocean/requests/compute/list_ssh_keys.rb +41 -0
- data/lib/fog/digitalocean/requests/compute/password_reset.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/power_cycle.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/power_off.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/power_on.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/reboot_server.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/rebuild.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/rename.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/resize.rb +48 -0
- data/lib/fog/digitalocean/requests/compute/restore.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/shutdown.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/snapshot.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/transfer_image.rb +44 -0
- data/lib/fog/digitalocean/requests/compute/update_ssh_key.rb +46 -0
- data/lib/fog/digitalocean/requests/compute/upgrade.rb +44 -0
- data/lib/fog/digitalocean/service.rb +51 -0
- data/lib/fog/digitalocean/version.rb +5 -0
- data/spec/fog/account_spec.rb +14 -0
- data/spec/fog/billing_spec.rb +14 -0
- data/spec/fog/bin/atmos_spec.rb +33 -0
- data/spec/fog/bin/aws_spec.rb +98 -0
- data/spec/fog/bin/baremetalcloud_spec.rb +33 -0
- data/spec/fog/bin/bluebox_spec.rb +55 -0
- data/spec/fog/bin/brightbox_spec.rb +30 -0
- data/spec/fog/bin/clodo_spec.rb +9 -0
- data/spec/fog/bin/cloudsigma_spec.rb +9 -0
- data/spec/fog/bin/cloudstack_spec.rb +9 -0
- data/spec/fog/bin/digitalocean_spec.rb +9 -0
- data/spec/fog/bin/dnsimple_spec.rb +9 -0
- data/spec/fog/bin/dnsmadeeasy_spec.rb +9 -0
- data/spec/fog/bin/dreamhost_spec.rb +9 -0
- data/spec/fog/bin/dynect_spec.rb +9 -0
- data/spec/fog/bin/ecloud_spec.rb +10 -0
- data/spec/fog/bin/fogdocker_spec.rb +10 -0
- data/spec/fog/bin/glesys_spec.rb +10 -0
- data/spec/fog/bin/gogrid_spec.rb +10 -0
- data/spec/fog/bin/google_spec.rb +10 -0
- data/spec/fog/bin/ibm_spec.rb +10 -0
- data/spec/fog/bin/internetarchive_spec.rb +10 -0
- data/spec/fog/bin/joyent_spec.rb +10 -0
- data/spec/fog/bin/linode_spec.rb +10 -0
- data/spec/fog/bin/local_spec.rb +10 -0
- data/spec/fog/bin/ninefold_spec.rb +10 -0
- data/spec/fog/bin/opennebula_spec.rb +10 -0
- data/spec/fog/bin/openstack_spec.rb +10 -0
- data/spec/fog/bin/openvz_spec.rb +10 -0
- data/spec/fog/bin/ovirt_spec.rb +10 -0
- data/spec/fog/bin/powerdns_spec.rb +9 -0
- data/spec/fog/bin/profitbricks_spec.rb +10 -0
- data/spec/fog/bin/rackspace_spec.rb +10 -0
- data/spec/fog/bin/rage4_spec.rb +10 -0
- data/spec/fog/bin/riakcs_spec.rb +10 -0
- data/spec/fog/bin/sakuracloud_spec.rb +10 -0
- data/spec/fog/bin/serverlove_spec.rb +10 -0
- data/spec/fog/bin/softlayer_spec.rb +10 -0
- data/spec/fog/bin/stormondemand_spec.rb +10 -0
- data/spec/fog/bin/vcloud_spec.rb +10 -0
- data/spec/fog/bin/vclouddirector_spec.rb +10 -0
- data/spec/fog/bin/vmfusion_spec.rb +10 -0
- data/spec/fog/bin/voxel_spec.rb +10 -0
- data/spec/fog/bin/vsphere_spec.rb +10 -0
- data/spec/fog/bin/xenserver_spec.rb +10 -0
- data/spec/fog/bin/zerigo_spec.rb +10 -0
- data/spec/fog/bin_spec.rb +161 -0
- data/spec/fog/cdn_spec.rb +14 -0
- data/spec/fog/compute_spec.rb +19 -0
- data/spec/fog/dns_spec.rb +19 -0
- data/spec/fog/identity_spec.rb +14 -0
- data/spec/fog/image_spec.rb +14 -0
- data/spec/fog/metering_spec.rb +14 -0
- data/spec/fog/monitoring_spec.rb +14 -0
- data/spec/fog/network_spec.rb +14 -0
- data/spec/fog/orchestration_spec.rb +14 -0
- data/spec/fog/storage_spec.rb +14 -0
- data/spec/fog/support_spec.rb +14 -0
- data/spec/fog/volume_spec.rb +14 -0
- data/spec/fog/vpn_spec.rb +14 -0
- data/spec/fog/xml/connection_spec.rb +33 -0
- data/spec/helpers/bin.rb +34 -0
- data/spec/spec_helper.rb +18 -0
- data/tests/digitalocean/helper.rb +56 -0
- data/tests/digitalocean/requests/compute/list_flavors_tests.rb +25 -0
- data/tests/digitalocean/requests/compute/list_images_tests.rb +25 -0
- data/tests/digitalocean/requests/compute/list_regions_tests.rb +21 -0
- data/tests/digitalocean/requests/compute/server_tests.rb +77 -0
- data/tests/digitalocean/requests/compute_v2/list_ssh_keys_tests.rb +20 -0
- data/tests/helper.rb +25 -0
- data/tests/helpers/format_helper.rb +100 -0
- data/tests/helpers/mock_helper.rb +14 -0
- data/tests/helpers/succeeds_helper.rb +10 -0
- data/tests/lorem.txt +1 -0
- data/tests/watchr.rb +22 -0
- metadata +428 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def convert_to_snapshot(id)
|
6
|
+
body = { :type => 'convert',}
|
7
|
+
|
8
|
+
encoded_body = Fog::JSON.encode(body)
|
9
|
+
|
10
|
+
request(
|
11
|
+
:expects => [201],
|
12
|
+
:headers => {
|
13
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
14
|
+
},
|
15
|
+
:method => 'POST',
|
16
|
+
:path => "v2/images/#{id}/actions",
|
17
|
+
:body => encoded_body,
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Mock
|
23
|
+
def convert_to_snapshot(id, name)
|
24
|
+
response = Excon::Response.new
|
25
|
+
response.status = 201
|
26
|
+
response.body = {
|
27
|
+
'action' => {
|
28
|
+
'id' => 46592838,
|
29
|
+
'status' => 'completed',
|
30
|
+
'type' => 'convert_to_snapshot',
|
31
|
+
'started_at' => '2015-03-24T19:02:47Z',
|
32
|
+
'completed_at' => '2015-03-24T19:02:47Z',
|
33
|
+
'resource_id' => 11060029,
|
34
|
+
'resource_type' => 'image',
|
35
|
+
'region' => null,
|
36
|
+
'region_slug' => null
|
37
|
+
}
|
38
|
+
}
|
39
|
+
response
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
# noinspection RubyStringKeysInHashInspection
|
5
|
+
class Real
|
6
|
+
|
7
|
+
def create_server(name,
|
8
|
+
size,
|
9
|
+
image,
|
10
|
+
region,
|
11
|
+
options = {})
|
12
|
+
|
13
|
+
create_options = {
|
14
|
+
:name => name,
|
15
|
+
:region => region,
|
16
|
+
:size => size,
|
17
|
+
:image => image,
|
18
|
+
}
|
19
|
+
|
20
|
+
[:backups, :ipv6, :private_networking].each do |opt|
|
21
|
+
create_options[opt] = !!options[opt] if options[opt]
|
22
|
+
end
|
23
|
+
|
24
|
+
[:user_data, :ssh_keys].each do |opt|
|
25
|
+
create_options[opt] = options[opt] if options[opt]
|
26
|
+
end
|
27
|
+
|
28
|
+
encoded_body = Fog::JSON.encode(create_options)
|
29
|
+
|
30
|
+
request(
|
31
|
+
:expects => [202],
|
32
|
+
:headers => {
|
33
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
34
|
+
},
|
35
|
+
:method => 'POST',
|
36
|
+
:path => '/v2/droplets',
|
37
|
+
:body => encoded_body,
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# noinspection RubyStringKeysInHashInspection
|
43
|
+
class Mock
|
44
|
+
def create_server(name,
|
45
|
+
size,
|
46
|
+
image,
|
47
|
+
region,
|
48
|
+
options = {})
|
49
|
+
|
50
|
+
response = Excon::Response.new
|
51
|
+
response.status = 202
|
52
|
+
|
53
|
+
response.body = {
|
54
|
+
'droplet' => {
|
55
|
+
'id' => 3164494,
|
56
|
+
'name' => name,
|
57
|
+
'memory' => 512,
|
58
|
+
'vcpus' => 1,
|
59
|
+
'disk' => 20,
|
60
|
+
'locked' => true,
|
61
|
+
'status' => 'new',
|
62
|
+
'kernel' => {
|
63
|
+
'id' => 2233,
|
64
|
+
'name' => 'Ubuntu 14.04 x64 vmlinuz-3.13.0-37-generic',
|
65
|
+
'version' => '3.13.0-37-generic'
|
66
|
+
},
|
67
|
+
'created_at' => '2014-11-14T16:36:31Z',
|
68
|
+
'features' => %w(virtio),
|
69
|
+
'backup_ids' => [],
|
70
|
+
'snapshot_ids' => [],
|
71
|
+
'image' => {},
|
72
|
+
'size' => {},
|
73
|
+
'size_slug' => '512mb',
|
74
|
+
'networks' => {},
|
75
|
+
'region' => {}
|
76
|
+
},
|
77
|
+
'links' => {
|
78
|
+
'actions' => [
|
79
|
+
{
|
80
|
+
'id' => 36805096,
|
81
|
+
'rel' => "create",
|
82
|
+
'href' => "https://api.digitalocean.com/v2/actions/36805096"
|
83
|
+
}
|
84
|
+
]
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
response
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
# noinspection RubyStringKeysInHashInspection
|
5
|
+
class Real
|
6
|
+
|
7
|
+
def create_ssh_key(name, public_key)
|
8
|
+
create_options = {
|
9
|
+
:name => name,
|
10
|
+
:public_key => public_key,
|
11
|
+
}
|
12
|
+
|
13
|
+
encoded_body = Fog::JSON.encode(create_options)
|
14
|
+
|
15
|
+
request(
|
16
|
+
:expects => [201],
|
17
|
+
:headers => {
|
18
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
19
|
+
},
|
20
|
+
:method => 'POST',
|
21
|
+
:path => '/v2/account/keys',
|
22
|
+
:body => encoded_body,
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# noinspection RubyStringKeysInHashInspection
|
28
|
+
class Mock
|
29
|
+
def create_ssh_key(name, public_key)
|
30
|
+
response = Excon::Response.new
|
31
|
+
response.status = 201
|
32
|
+
|
33
|
+
data[:ssh_keys] << {
|
34
|
+
"id" => Fog::Mock.random_numbers(6).to_i,
|
35
|
+
"fingerprint" => (["00"] * 16).join(':'),
|
36
|
+
"public_key" => public_key,
|
37
|
+
"name" => name
|
38
|
+
}
|
39
|
+
|
40
|
+
response.body ={
|
41
|
+
'ssh_key' => data[:ssh_keys].last
|
42
|
+
}
|
43
|
+
|
44
|
+
response
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
# noinspection RubyStringKeysInHashInspection
|
5
|
+
class Real
|
6
|
+
def delete_ssh_key(id)
|
7
|
+
request(
|
8
|
+
:expects => [204],
|
9
|
+
:headers => {
|
10
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
11
|
+
},
|
12
|
+
:method => 'DELETE',
|
13
|
+
:path => "/v2/account/keys/#{id}",
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# noinspection RubyStringKeysInHashInspection
|
19
|
+
class Mock
|
20
|
+
def delete_ssh_key(id)
|
21
|
+
self.data[:ssh_keys].select! do |key|
|
22
|
+
key["id"] != id
|
23
|
+
end
|
24
|
+
|
25
|
+
response = Excon::Response.new
|
26
|
+
response.status = 204
|
27
|
+
response
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
# noinspection RubyStringKeysInHashInspection
|
5
|
+
class Real
|
6
|
+
def delete_server(server_id)
|
7
|
+
Fog::Logger.warning("delete_server method has been deprecated, use destroy_server instead")
|
8
|
+
destroy_server(server_id)
|
9
|
+
end
|
10
|
+
def destroy_server(server_id)
|
11
|
+
request(
|
12
|
+
:expects => [204],
|
13
|
+
:headers => {
|
14
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
15
|
+
},
|
16
|
+
:method => 'DELETE',
|
17
|
+
:path => "/v2/droplets/#{server_id}",
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# noinspection RubyStringKeysInHashInspection
|
23
|
+
class Mock
|
24
|
+
def delete_server(server_id)
|
25
|
+
destroy_server(server_id)
|
26
|
+
end
|
27
|
+
def destroy_server(_)
|
28
|
+
response = Excon::Response.new
|
29
|
+
response.status = 204
|
30
|
+
response
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def disable_backups(id)
|
6
|
+
body = { :type => "disable_backups" }
|
7
|
+
|
8
|
+
encoded_body = Fog::JSON.encode(body)
|
9
|
+
|
10
|
+
request(
|
11
|
+
:expects => [201],
|
12
|
+
:headers => {
|
13
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
14
|
+
},
|
15
|
+
:method => 'POST',
|
16
|
+
:path => "v2/droplets/#{id}/actions",
|
17
|
+
:body => encoded_body,
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Mock
|
23
|
+
def disable_backups(id)
|
24
|
+
response = Excon::Response.new
|
25
|
+
response.status = 201
|
26
|
+
response.body = {
|
27
|
+
'action' => {
|
28
|
+
'id' => Fog::Mock.random_numbers(1).to_i,
|
29
|
+
'status' => "in-progress",
|
30
|
+
'type' => "disable_backups",
|
31
|
+
'started_at' => "2014-11-14T16:31:00Z",
|
32
|
+
'completed_at' => null,
|
33
|
+
'resource_id' => id,
|
34
|
+
'resource_type' => "droplet",
|
35
|
+
'region' => "nyc3",
|
36
|
+
'region_slug' => "nyc3"
|
37
|
+
}
|
38
|
+
}
|
39
|
+
response
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def enable_ipv6(id)
|
6
|
+
body = { :type => "enable_ipv6" }
|
7
|
+
|
8
|
+
encoded_body = Fog::JSON.encode(body)
|
9
|
+
|
10
|
+
request(
|
11
|
+
:expects => [201],
|
12
|
+
:headers => {
|
13
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
14
|
+
},
|
15
|
+
:method => 'POST',
|
16
|
+
:path => "v2/droplets/#{id}/actions",
|
17
|
+
:body => encoded_body,
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Mock
|
23
|
+
def enable_ipv6(id)
|
24
|
+
response = Excon::Response.new
|
25
|
+
response.status = 201
|
26
|
+
response.body = {
|
27
|
+
'action' => {
|
28
|
+
'id' => Fog::Mock.random_numbers(1).to_i,
|
29
|
+
'status' => "in-progress",
|
30
|
+
'type' => "enable_ipv6",
|
31
|
+
'started_at' => "2014-11-14T16:31:00Z",
|
32
|
+
'completed_at' => null,
|
33
|
+
'resource_id' => id,
|
34
|
+
'resource_type' => "droplet",
|
35
|
+
'region' => "nyc3",
|
36
|
+
'region_slug' => "nyc3"
|
37
|
+
}
|
38
|
+
}
|
39
|
+
response
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def enable_private_networking(id)
|
6
|
+
body = { :type => "enable_private_networking" }
|
7
|
+
|
8
|
+
encoded_body = Fog::JSON.encode(body)
|
9
|
+
|
10
|
+
request(
|
11
|
+
:expects => [201],
|
12
|
+
:headers => {
|
13
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
14
|
+
},
|
15
|
+
:method => 'POST',
|
16
|
+
:path => "v2/droplets/#{id}/actions",
|
17
|
+
:body => encoded_body,
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Mock
|
23
|
+
def enable_private_networking(id)
|
24
|
+
response = Excon::Response.new
|
25
|
+
response.status = 201
|
26
|
+
response.body = {
|
27
|
+
'action' => {
|
28
|
+
'id' => Fog::Mock.random_numbers(1).to_i,
|
29
|
+
'status' => "in-progress",
|
30
|
+
'type' => "enable_private_networking",
|
31
|
+
'started_at' => "2014-11-14T16:31:00Z",
|
32
|
+
'completed_at' => null,
|
33
|
+
'resource_id' => id,
|
34
|
+
'resource_type' => "droplet",
|
35
|
+
'region' => "nyc3",
|
36
|
+
'region_slug' => "nyc3"
|
37
|
+
}
|
38
|
+
}
|
39
|
+
response
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def get_droplet_action(droplet_id, action_id)
|
6
|
+
request(
|
7
|
+
:expects => [200],
|
8
|
+
:method => 'GET',
|
9
|
+
:path => "v2/droplets/#{droplet_id}/actions/#{action_id}",
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def get_droplet_action(droplet_id, action)
|
16
|
+
response = Excon::Response.new
|
17
|
+
response.status = 201
|
18
|
+
response.body = {
|
19
|
+
'action' => {
|
20
|
+
'id' => Fog::Mock.random_numbers(1).to_i,
|
21
|
+
'status' => "in-progress",
|
22
|
+
'type' => "change_kernel",
|
23
|
+
'started_at' => "2014-11-14T16:31:00Z",
|
24
|
+
'completed_at' => null,
|
25
|
+
'resource_id' => id,
|
26
|
+
'resource_type' => "droplet",
|
27
|
+
'region' => "nyc3",
|
28
|
+
'region_slug' => "nyc3"
|
29
|
+
}
|
30
|
+
}
|
31
|
+
response
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def get_image_details(image_id)
|
6
|
+
request(
|
7
|
+
:expects => [200],
|
8
|
+
:method => 'GET',
|
9
|
+
:path => "/v2/images/#{image_id}"
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# noinspection RubyStringKeysInHashInspection
|
15
|
+
class Mock
|
16
|
+
def get_server_details(_)
|
17
|
+
response = Excon::Response.new
|
18
|
+
response.status = 200
|
19
|
+
|
20
|
+
response.body = {
|
21
|
+
'image' =>
|
22
|
+
{
|
23
|
+
'id' => 7555620,
|
24
|
+
'name' => 'Nifty New Snapshot',
|
25
|
+
'distribution' => 'Ubuntu',
|
26
|
+
'slug' => null,
|
27
|
+
'public' => false,
|
28
|
+
'regions' => [
|
29
|
+
'nyc2',
|
30
|
+
'nyc2'
|
31
|
+
],
|
32
|
+
'created_at' => '2014-11-04T22:23:02Z',
|
33
|
+
'min_disk_size' => 20
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
response
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|