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,41 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def list_ssh_keys(filters = {})
|
6
|
+
request(
|
7
|
+
:expects => [200],
|
8
|
+
:method => 'GET',
|
9
|
+
:path => "v2/account/keys",
|
10
|
+
:query => filters
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# noinspection RubyStringKeysInHashInspection
|
16
|
+
class Mock
|
17
|
+
def list_ssh_keys(filters = {})
|
18
|
+
response = Excon::Response.new
|
19
|
+
response.status = 200
|
20
|
+
response.body = {
|
21
|
+
"ssh_keys" => data[:ssh_keys] ||
|
22
|
+
[
|
23
|
+
{
|
24
|
+
"id" => 512189,
|
25
|
+
"fingerprint" => "3b:16:bf:e4:8b:00:8b:b8:59:8c:a9:d3:f0:19:45:fa",
|
26
|
+
"public_key" => "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example",
|
27
|
+
"name" => "My SSH Public Key"
|
28
|
+
}
|
29
|
+
],
|
30
|
+
"links" => {
|
31
|
+
},
|
32
|
+
"meta" => {
|
33
|
+
"total" => data[:ssh_keys].count || 1
|
34
|
+
}
|
35
|
+
}
|
36
|
+
response
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def password_reset(id)
|
6
|
+
body = { :type => "password_reset" }
|
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 password_reset(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' => "password_reset",
|
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 power_cycle(id)
|
6
|
+
body = { :type => "power_cycle" }
|
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 power_cycle(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' => "power_cycle",
|
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 power_off(id)
|
6
|
+
body = { :type => "power_off" }
|
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 power_off(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' => "power_off",
|
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 power_on(id)
|
6
|
+
body = { :type => "power_on" }
|
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 power_on(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' => "power_on",
|
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 reboot_server(id)
|
6
|
+
body = { :type => "reboot" }
|
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 reboot_server(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' => "reboot",
|
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 rebuild(id, image)
|
6
|
+
body = { :type => "rebuild", :image => image }
|
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 rebuild(id, image)
|
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' => "rebuild",
|
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 rename(id, name)
|
6
|
+
body = { :type => "rename", :name => name }
|
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 rename(id, name)
|
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' => "rename",
|
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,48 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def resize(id, resize_disk, size)
|
6
|
+
body = {
|
7
|
+
:type => "resize",
|
8
|
+
:disk => resize_disk,
|
9
|
+
:size => size
|
10
|
+
}
|
11
|
+
|
12
|
+
encoded_body = Fog::JSON.encode(body)
|
13
|
+
|
14
|
+
request(
|
15
|
+
:expects => [201],
|
16
|
+
:headers => {
|
17
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
18
|
+
},
|
19
|
+
:method => 'POST',
|
20
|
+
:path => "v2/droplets/#{id}/actions",
|
21
|
+
:body => encoded_body,
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Mock
|
27
|
+
def resize(id, resize_disk, size)
|
28
|
+
response = Excon::Response.new
|
29
|
+
response.status = 201
|
30
|
+
response.body = {
|
31
|
+
'action' => {
|
32
|
+
'id' => Fog::Mock.random_numbers(1).to_i,
|
33
|
+
'status' => "in-progress",
|
34
|
+
'type' => "resize",
|
35
|
+
'started_at' => "2014-11-14T16:31:00Z",
|
36
|
+
'completed_at' => null,
|
37
|
+
'resource_id' => id,
|
38
|
+
'resource_type' => "droplet",
|
39
|
+
'region' => "nyc3",
|
40
|
+
'region_slug' => "nyc3"
|
41
|
+
}
|
42
|
+
}
|
43
|
+
response
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOcean
|
4
|
+
class Real
|
5
|
+
def restore(id, image)
|
6
|
+
body = { :type => "restore", :image => image }
|
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 restore(id, image)
|
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' => "restore",
|
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
|