fog-digitalocean 0.1.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.
- 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,84 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class DigitalOcean
|
|
4
|
+
class Real
|
|
5
|
+
def get_server_details(server_id)
|
|
6
|
+
request(
|
|
7
|
+
:expects => [200],
|
|
8
|
+
:method => 'GET',
|
|
9
|
+
:path => "/v2/droplets/#{server_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
|
+
'droplet' => {
|
|
22
|
+
'id' => 3164494,
|
|
23
|
+
'name' => 'example.com',
|
|
24
|
+
'memory' => 512,
|
|
25
|
+
'vcpus' => 1,
|
|
26
|
+
'disk' => 20,
|
|
27
|
+
'locked' => false,
|
|
28
|
+
'status' => 'active',
|
|
29
|
+
'kernel' => {
|
|
30
|
+
'id' => 2233,
|
|
31
|
+
'name' => 'Ubuntu 14.04 x64 vmlinuz-3.13.0-37-generic',
|
|
32
|
+
'version' => '3.13.0-37-generic'
|
|
33
|
+
},
|
|
34
|
+
'created_at' => '2014-11-14T16:36:31Z',
|
|
35
|
+
'features' => %w(ipv6 virtio),
|
|
36
|
+
'backup_ids' => [],
|
|
37
|
+
'snapshot_ids' => [7938206],
|
|
38
|
+
'image' => {
|
|
39
|
+
'id' => 6918990,
|
|
40
|
+
'name' => '14.04 x64',
|
|
41
|
+
'distribution' => 'Ubuntu',
|
|
42
|
+
'slug' => 'ubuntu-14-04-x64',
|
|
43
|
+
'public' => true,
|
|
44
|
+
'regions' => %w(nyc1 ams1 sfo1 nyc2 ams2 sgp1 lon1 nyc3 ams3 nyc3),
|
|
45
|
+
'created_at' => '2014-10-17T20:24:33Z',
|
|
46
|
+
'type' => 'snapshot',
|
|
47
|
+
'min_disk_size' => 20
|
|
48
|
+
},
|
|
49
|
+
'size' => {},
|
|
50
|
+
'size_slug' => '512mb',
|
|
51
|
+
'networks' => {
|
|
52
|
+
'v4' => [
|
|
53
|
+
{
|
|
54
|
+
'ip_address' => '104.131.186.241',
|
|
55
|
+
'netmask' => '255.255.240.0',
|
|
56
|
+
'gateway' => '104.131.176.1',
|
|
57
|
+
'type' => 'public'
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
'v6' => [
|
|
61
|
+
{
|
|
62
|
+
'ip_address' => '2604:A880:0800:0010:0000:0000:031D:2001',
|
|
63
|
+
'netmask' => 64,
|
|
64
|
+
'gateway' => '2604:A880:0800:0010:0000:0000:0000:0001',
|
|
65
|
+
'type' => 'public'
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
'region' => {
|
|
70
|
+
'name' => 'New York 3',
|
|
71
|
+
'slug' => 'nyc3',
|
|
72
|
+
'sizes' => %w(32gb 16gb 2gb 1gb 4gb 8gb 512mb 64gb 48gb),
|
|
73
|
+
'features' => %w(virtio private_networking backups ipv6 metadata),
|
|
74
|
+
'available' => true
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
response
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class DigitalOcean
|
|
4
|
+
class Real
|
|
5
|
+
def get_ssh_key(key_id)
|
|
6
|
+
request(
|
|
7
|
+
:expects => [200],
|
|
8
|
+
:method => 'GET',
|
|
9
|
+
:path => "/v2/account/keys/#{key_id}"
|
|
10
|
+
)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# noinspection RubyStringKeysInHashInspection
|
|
15
|
+
class Mock
|
|
16
|
+
def get_ssh_key(_)
|
|
17
|
+
response = Excon::Response.new
|
|
18
|
+
response.status = 200
|
|
19
|
+
|
|
20
|
+
response.body = {
|
|
21
|
+
'ssh_key' => {
|
|
22
|
+
'id' => 512190,
|
|
23
|
+
'fingerprint' => '3b:16:bf:e4:8b:00:8b:b8:59:8c:a9:d3:f0:19:45:fa',
|
|
24
|
+
'public_key' => 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example',
|
|
25
|
+
'name' => 'My SSH Public Key'
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
response
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class DigitalOcean
|
|
4
|
+
class Real
|
|
5
|
+
def list_droplet_actions(id)
|
|
6
|
+
request(
|
|
7
|
+
:expects => [200],
|
|
8
|
+
:method => 'GET',
|
|
9
|
+
:path => "v2/droplets/#{id}/actions",
|
|
10
|
+
)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class Mock
|
|
15
|
+
def list_droplet_actions(id)
|
|
16
|
+
response = Excon::Response.new
|
|
17
|
+
response.status = 201
|
|
18
|
+
response.body = {
|
|
19
|
+
'actions' => [
|
|
20
|
+
'action' => {
|
|
21
|
+
'id' => Fog::Mock.random_numbers(1).to_i,
|
|
22
|
+
'status' => "in-progress",
|
|
23
|
+
'type' => "change_kernel",
|
|
24
|
+
'started_at' => "2014-11-14T16:31:00Z",
|
|
25
|
+
'completed_at' => null,
|
|
26
|
+
'resource_id' => id,
|
|
27
|
+
'resource_type' => "droplet",
|
|
28
|
+
'region' => "nyc3",
|
|
29
|
+
'region_slug' => "nyc3"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
response
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class DigitalOcean
|
|
4
|
+
class Real
|
|
5
|
+
def list_flavors(filters = {})
|
|
6
|
+
request(
|
|
7
|
+
:expects => [200],
|
|
8
|
+
:method => 'GET',
|
|
9
|
+
:path => "/v2/sizes",
|
|
10
|
+
:query => filters
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# noinspection RubyStringKeysInHashInspection
|
|
16
|
+
class Mock
|
|
17
|
+
def list_flavors(filters = {})
|
|
18
|
+
response = Excon::Response.new
|
|
19
|
+
response.status = 200
|
|
20
|
+
response.body = {
|
|
21
|
+
|
|
22
|
+
'sizes' => [
|
|
23
|
+
{
|
|
24
|
+
'slug' => '512mb',
|
|
25
|
+
'memory' => 512,
|
|
26
|
+
'vcpus' => 1,
|
|
27
|
+
'disk' => 20,
|
|
28
|
+
'transfer' => 1.0,
|
|
29
|
+
'price_monthly' => 5.0,
|
|
30
|
+
'price_hourly' => 0.00744,
|
|
31
|
+
'regions' => %w(nyc1 sgp1 ams1 ams2 sfo1 nyc2 lon1 nyc3 ams3),
|
|
32
|
+
'available' => true
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
'slug' => '1gb',
|
|
36
|
+
'memory' => 1024,
|
|
37
|
+
'vcpus' => 1,
|
|
38
|
+
'disk' => 30,
|
|
39
|
+
'transfer' => 2.0,
|
|
40
|
+
'price_monthly' => 10.0,
|
|
41
|
+
'price_hourly' => 0.01488,
|
|
42
|
+
'regions' => %w(nyc2 sgp1 ams1 sfo1 lon1 nyc3 ams3 ams2 nyc1),
|
|
43
|
+
'available' => true
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
'slug' => '2gb',
|
|
47
|
+
'memory' => 2048,
|
|
48
|
+
'vcpus' => 2,
|
|
49
|
+
'disk' => 40,
|
|
50
|
+
'transfer' => 3.0,
|
|
51
|
+
'price_monthly' => 20.0,
|
|
52
|
+
'price_hourly' => 0.02976,
|
|
53
|
+
'regions' => %w(nyc2 sfo1 ams1 sgp1 ams2 lon1 nyc3 ams3 nyc1),
|
|
54
|
+
'available' => true
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
'slug' => '4gb',
|
|
58
|
+
'memory' => 4096,
|
|
59
|
+
'vcpus' => 2,
|
|
60
|
+
'disk' => 60,
|
|
61
|
+
'transfer' => 4.0,
|
|
62
|
+
'price_monthly' => 40.0,
|
|
63
|
+
'price_hourly' => 0.05952,
|
|
64
|
+
'regions' => %w(nyc2 sfo1 ams1 sgp1 ams2 lon1 nyc3 ams3 nyc1),
|
|
65
|
+
'available' => true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
'slug' => '8gb',
|
|
69
|
+
'memory' => 8192,
|
|
70
|
+
'vcpus' => 4,
|
|
71
|
+
'disk' => 80,
|
|
72
|
+
'transfer' => 5.0,
|
|
73
|
+
'price_monthly' => 80.0,
|
|
74
|
+
'price_hourly' => 0.11905,
|
|
75
|
+
'regions' => %w(nyc2 sfo1 sgp1 ams1 ams2 nyc1 lon1 nyc3 ams3),
|
|
76
|
+
'available' => true
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
'slug' => '16gb',
|
|
80
|
+
'memory' => 16384,
|
|
81
|
+
'vcpus' => 8,
|
|
82
|
+
'disk' => 160,
|
|
83
|
+
'transfer' => 6.0,
|
|
84
|
+
'price_monthly' => 160.0,
|
|
85
|
+
'price_hourly' => 0.2381,
|
|
86
|
+
'regions' => %w(sgp1 nyc1 sfo1 ams2 nyc3 lon1 nyc2 ams1 ams3),
|
|
87
|
+
'available' => true
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
'slug' => '32gb',
|
|
91
|
+
'memory' => 32768,
|
|
92
|
+
'vcpus' => 12,
|
|
93
|
+
'disk' => 320,
|
|
94
|
+
'transfer' => 7.0,
|
|
95
|
+
'price_monthly' => 320.0,
|
|
96
|
+
'price_hourly' => 0.47619,
|
|
97
|
+
'regions' => %w(nyc2 sgp1 ams2 nyc1 sfo1 lon1 ams3 nyc3),
|
|
98
|
+
'available' => true
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
'slug' => '48gb',
|
|
102
|
+
'memory' => 49152,
|
|
103
|
+
'vcpus' => 16,
|
|
104
|
+
'disk' => 480,
|
|
105
|
+
'transfer' => 8.0,
|
|
106
|
+
'price_monthly' => 480.0,
|
|
107
|
+
'price_hourly' => 0.71429,
|
|
108
|
+
'regions' => %w(sgp1 ams2 sfo1 nyc1 lon1 nyc2 ams3 nyc3),
|
|
109
|
+
'available' => true
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
'slug' => '64gb',
|
|
113
|
+
'memory' => 65536,
|
|
114
|
+
'vcpus' => 20,
|
|
115
|
+
'disk' => 640,
|
|
116
|
+
'transfer' => 9.0,
|
|
117
|
+
'price_monthly' => 640.0,
|
|
118
|
+
'price_hourly' => 0.95238,
|
|
119
|
+
'regions' => %w(sgp1 nyc1 nyc2 sfo1 lon1 ams3 ams2 nyc3),
|
|
120
|
+
'available' => true
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
'links' => {},
|
|
124
|
+
'meta' => {'total' => 9}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
response
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class DigitalOcean
|
|
4
|
+
class Real
|
|
5
|
+
def list_images(filters = {})
|
|
6
|
+
request(
|
|
7
|
+
:expects => [200],
|
|
8
|
+
:method => 'GET',
|
|
9
|
+
:path => "/v2/images",
|
|
10
|
+
:query => filters
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# noinspection RubyStringKeysInHashInspection
|
|
16
|
+
class Mock
|
|
17
|
+
def list_images(filters = {})
|
|
18
|
+
response = Excon::Response.new
|
|
19
|
+
response.status = 200
|
|
20
|
+
response.body = {
|
|
21
|
+
|
|
22
|
+
'images' => [
|
|
23
|
+
{
|
|
24
|
+
'id' => 7555620,
|
|
25
|
+
'name' => 'Nifty New Snapshot',
|
|
26
|
+
'distribution' => 'Ubuntu',
|
|
27
|
+
'slug' => nil,
|
|
28
|
+
'public' => false,
|
|
29
|
+
'regions' => %w(nyc2 nyc3),
|
|
30
|
+
'created_at' => '2014-11-04T22:23:02Z',
|
|
31
|
+
'type' => 'snapshot',
|
|
32
|
+
'min_disk_size' => 20,
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
'links' => {
|
|
36
|
+
'pages' => {
|
|
37
|
+
'last' => 'https://api.digitalocean.com/v2/images?page=56&per_page=1',
|
|
38
|
+
'next' => 'https://api.digitalocean.com/v2/images?page=2&per_page=1'
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
'meta' => {
|
|
42
|
+
'total' => 56
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
response
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class DigitalOcean
|
|
4
|
+
class Real
|
|
5
|
+
def list_regions(filters = {})
|
|
6
|
+
request(
|
|
7
|
+
:expects => [200],
|
|
8
|
+
:method => 'GET',
|
|
9
|
+
:path => "/v2/regions",
|
|
10
|
+
:query => filters
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# noinspection RubyStringKeysInHashInspection
|
|
16
|
+
class Mock
|
|
17
|
+
def list_regions(filters = {})
|
|
18
|
+
response = Excon::Response.new
|
|
19
|
+
response.status = 200
|
|
20
|
+
response.body = {
|
|
21
|
+
'regions' => [
|
|
22
|
+
{
|
|
23
|
+
'name' => 'New York 1',
|
|
24
|
+
'slug' => 'nyc1',
|
|
25
|
+
'sizes' => [],
|
|
26
|
+
'features' => %w(virtio backups),
|
|
27
|
+
'available' => false
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
'name' => 'Amsterdam 1',
|
|
31
|
+
'slug' => 'ams1',
|
|
32
|
+
'sizes' => [],
|
|
33
|
+
'features' => %w(virtio backups),
|
|
34
|
+
'available' => false
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
'name' => 'San Francisco 1',
|
|
38
|
+
'slug' => 'sfo1',
|
|
39
|
+
'sizes' => %w(32gb 16gb 2gb 1gb 4gb 8gb 512mb 64gb 48gb),
|
|
40
|
+
'features' => %w(virtio backups metadata),
|
|
41
|
+
'available' => true
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
'name' => 'New York 2',
|
|
45
|
+
'slug' => 'nyc2',
|
|
46
|
+
'sizes' => %w(32gb 16gb 2gb 1gb 4gb 8gb 512mb 64gb 48gb),
|
|
47
|
+
'features' => %w(virtio private_networking backups),
|
|
48
|
+
'available' => true
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
'name' => 'Amsterdam 2',
|
|
52
|
+
'slug' => 'ams2',
|
|
53
|
+
'sizes' => %w(32gb 16gb 2gb 1gb 4gb 8gb 512mb 64gb 48gb),
|
|
54
|
+
'features' => %w(virtio private_networking backups metadata),
|
|
55
|
+
'available' => true
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
'name' => 'Singapore 1',
|
|
59
|
+
'slug' => 'sgp1',
|
|
60
|
+
'sizes' => %w(32gb 16gb 2gb 1gb 4gb 8gb 512mb 64gb 48gb),
|
|
61
|
+
'features' => %w(virtio private_networking backups ipv6 metadata),
|
|
62
|
+
'available' => true
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
'name' => 'London 1',
|
|
66
|
+
'slug' => 'lon1',
|
|
67
|
+
'sizes' => %w(32gb 16gb 2gb 1gb 4gb 8gb 512mb 64gb 48gb),
|
|
68
|
+
'features' => %w(virtio private_networking backups ipv6 metadata),
|
|
69
|
+
'available' => true
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
'name' => 'New York 3',
|
|
73
|
+
'slug' => 'nyc3',
|
|
74
|
+
'sizes' => %w(32gb 16gb 2gb 1gb 4gb 8gb 512mb 64gb 48gb),
|
|
75
|
+
'features' => %w(virtio private_networking backups ipv6 metadata),
|
|
76
|
+
'available' => true
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
'name' => 'Amsterdam 3',
|
|
80
|
+
'slug' => 'ams3',
|
|
81
|
+
'sizes' => %w(32gb 16gb 2gb 1gb 4gb 8gb 512mb 64gb 48gb),
|
|
82
|
+
'features' => %w(virtio private_networking backups ipv6 metadata),
|
|
83
|
+
'available' => true
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
'links' => {},
|
|
87
|
+
'meta' => {'total' => 9}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
response
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class DigitalOcean
|
|
4
|
+
class Real
|
|
5
|
+
def list_servers(filters = {})
|
|
6
|
+
request(
|
|
7
|
+
:expects => [200],
|
|
8
|
+
:method => 'GET',
|
|
9
|
+
:path => "/v2/droplets",
|
|
10
|
+
:query => filters
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# noinspection RubyStringKeysInHashInspection
|
|
16
|
+
class Mock
|
|
17
|
+
def list_servers(filters = {})
|
|
18
|
+
response = Excon::Response.new
|
|
19
|
+
response.status = 200
|
|
20
|
+
response.body = {
|
|
21
|
+
"status" => "OK",
|
|
22
|
+
"droplets" => self.data[:servers],
|
|
23
|
+
"links" => {},
|
|
24
|
+
"meta" => {
|
|
25
|
+
"total" => data[:servers].count
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
response
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|