vultr 0.4.3 → 2.0.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 +4 -4
- data/.github/workflows/ci.yml +38 -0
- data/.standard.yml +1 -0
- data/Appraisals +8 -0
- data/CHANGELOG.md +9 -0
- data/Gemfile +6 -10
- data/README.md +307 -137
- data/Rakefile +10 -6
- data/bin/console +21 -0
- data/bin/setup +8 -0
- data/bin/test +6 -0
- data/gemfiles/faraday_1.gemfile +12 -0
- data/gemfiles/faraday_1.gemfile.lock +102 -0
- data/gemfiles/faraday_2.gemfile +11 -0
- data/gemfiles/faraday_2.gemfile.lock +82 -0
- data/lib/vultr/client.rb +111 -0
- data/lib/vultr/collection.rb +22 -0
- data/lib/vultr/error.rb +4 -0
- data/lib/vultr/middleware.rb +32 -0
- data/lib/vultr/object.rb +19 -0
- data/lib/vultr/objects/account.rb +4 -0
- data/lib/vultr/objects/application.rb +4 -0
- data/lib/vultr/objects/backup.rb +4 -0
- data/lib/vultr/objects/bare_metal.rb +4 -0
- data/lib/vultr/objects/block_storage.rb +4 -0
- data/lib/vultr/objects/domain.rb +4 -0
- data/lib/vultr/objects/firewall_group.rb +4 -0
- data/lib/vultr/objects/instance.rb +4 -0
- data/lib/vultr/objects/iso.rb +4 -0
- data/lib/vultr/objects/kubernetes_cluster.rb +4 -0
- data/lib/vultr/objects/load_balancer.rb +4 -0
- data/lib/vultr/objects/object_storage.rb +4 -0
- data/lib/vultr/objects/operating_system.rb +4 -0
- data/lib/vultr/objects/plan.rb +4 -0
- data/lib/vultr/objects/private_network.rb +4 -0
- data/lib/vultr/objects/region.rb +4 -0
- data/lib/vultr/objects/reserved_ip.rb +4 -0
- data/lib/vultr/objects/snapshot.rb +4 -0
- data/lib/vultr/objects/ssh_key.rb +4 -0
- data/lib/vultr/objects/startup_script.rb +4 -0
- data/lib/vultr/objects/user.rb +4 -0
- data/lib/vultr/resource.rb +52 -0
- data/lib/vultr/resources/account.rb +7 -0
- data/lib/vultr/resources/applications.rb +8 -0
- data/lib/vultr/resources/backups.rb +12 -0
- data/lib/vultr/resources/bare_metal.rb +79 -0
- data/lib/vultr/resources/block_storage.rb +32 -0
- data/lib/vultr/resources/dns.rb +58 -0
- data/lib/vultr/resources/firewall.rb +42 -0
- data/lib/vultr/resources/instances.rb +145 -0
- data/lib/vultr/resources/iso.rb +25 -0
- data/lib/vultr/resources/kubernetes.rb +61 -0
- data/lib/vultr/resources/load_balancers.rb +50 -0
- data/lib/vultr/resources/object_storage.rb +33 -0
- data/lib/vultr/resources/operating_systems.rb +8 -0
- data/lib/vultr/resources/plans.rb +13 -0
- data/lib/vultr/resources/private_networks.rb +24 -0
- data/lib/vultr/resources/regions.rb +12 -0
- data/lib/vultr/resources/reserved_ips.rb +32 -0
- data/lib/vultr/resources/snapshots.rb +28 -0
- data/lib/vultr/resources/ssh_keys.rb +24 -0
- data/lib/vultr/resources/startup_scripts.rb +24 -0
- data/lib/vultr/resources/users.rb +24 -0
- data/lib/vultr/version.rb +1 -8
- data/lib/vultr.rb +58 -887
- data/test/fixtures/account/info.json +11 -0
- data/test/fixtures/applications/list.json +29 -0
- data/test/fixtures/backups/list.json +18 -0
- data/test/fixtures/backups/retrieve.json +9 -0
- data/test/fixtures/bare_metals/bandwidth.json +12 -0
- data/test/fixtures/bare_metals/create.json +26 -0
- data/test/fixtures/bare_metals/list.json +36 -0
- data/test/fixtures/bare_metals/list_ipv4.json +18 -0
- data/test/fixtures/bare_metals/list_ipv6.json +17 -0
- data/test/fixtures/bare_metals/reinstall.json +25 -0
- data/test/fixtures/bare_metals/retrieve.json +26 -0
- data/test/fixtures/bare_metals/update.json +26 -0
- data/test/fixtures/bare_metals/upgrades.json +47 -0
- data/test/fixtures/bare_metals/user_data.json +5 -0
- data/test/fixtures/bare_metals/vnc.json +5 -0
- data/test/fixtures/block_storage/attach.json +4 -0
- data/test/fixtures/block_storage/create.json +13 -0
- data/test/fixtures/block_storage/detach.json +4 -0
- data/test/fixtures/block_storage/list.json +22 -0
- data/test/fixtures/block_storage/retrieve.json +13 -0
- data/test/fixtures/domains/create.json +6 -0
- data/test/fixtures/domains/dnssec.json +7 -0
- data/test/fixtures/domains/list.json +15 -0
- data/test/fixtures/domains/record.json +10 -0
- data/test/fixtures/domains/records.json +19 -0
- data/test/fixtures/domains/retrieve.json +6 -0
- data/test/fixtures/domains/soa.json +6 -0
- data/test/fixtures/firewall/create.json +11 -0
- data/test/fixtures/firewall/create_rule.json +9 -0
- data/test/fixtures/firewall/delete.json +1 -0
- data/test/fixtures/firewall/delete_rule.json +1 -0
- data/test/fixtures/firewall/list.json +20 -0
- data/test/fixtures/firewall/list_rules.json +22 -0
- data/test/fixtures/firewall/retrieve.json +11 -0
- data/test/fixtures/firewall/retrieve_rule.json +13 -0
- data/test/fixtures/firewall/update.json +1 -0
- data/test/fixtures/instances/attach_iso.json +6 -0
- data/test/fixtures/instances/attach_private_network.json +1 -0
- data/test/fixtures/instances/backup_schedule.json +10 -0
- data/test/fixtures/instances/bandwidth.json +12 -0
- data/test/fixtures/instances/create.json +36 -0
- data/test/fixtures/instances/create_ipv4_reverse.json +1 -0
- data/test/fixtures/instances/create_ipv6_reverse.json +1 -0
- data/test/fixtures/instances/delete.json +1 -0
- data/test/fixtures/instances/delete_ipv4.json +1 -0
- data/test/fixtures/instances/delete_ipv6.json +1 -0
- data/test/fixtures/instances/detach_iso.json +5 -0
- data/test/fixtures/instances/detach_private_network.json +1 -0
- data/test/fixtures/instances/halt.json +1 -0
- data/test/fixtures/instances/halt_instances.json +1 -0
- data/test/fixtures/instances/ipv4.json +9 -0
- data/test/fixtures/instances/ipv6_reverse.json +15 -0
- data/test/fixtures/instances/iso.json +6 -0
- data/test/fixtures/instances/list.json +44 -0
- data/test/fixtures/instances/list_ipv4.json +32 -0
- data/test/fixtures/instances/list_ipv6.json +17 -0
- data/test/fixtures/instances/list_private_networks.json +16 -0
- data/test/fixtures/instances/neighbors.json +6 -0
- data/test/fixtures/instances/reboot.json +1 -0
- data/test/fixtures/instances/reboot_instances.json +1 -0
- data/test/fixtures/instances/reinstall.json +35 -0
- data/test/fixtures/instances/restore.json +7 -0
- data/test/fixtures/instances/retrieve.json +35 -0
- data/test/fixtures/instances/set_backup_schedule.json +1 -0
- data/test/fixtures/instances/set_default_reverse_dns_entry.json +1 -0
- data/test/fixtures/instances/start.json +1 -0
- data/test/fixtures/instances/start_instances.json +1 -0
- data/test/fixtures/instances/update.json +1 -0
- data/test/fixtures/instances/upgrades.json +55 -0
- data/test/fixtures/instances/user_data.json +5 -0
- data/test/fixtures/isos/create.json +8 -0
- data/test/fixtures/isos/list.json +20 -0
- data/test/fixtures/isos/list_public.json +17 -0
- data/test/fixtures/isos/retrieve.json +11 -0
- data/test/fixtures/kubernetes/config.json +3 -0
- data/test/fixtures/kubernetes/create.json +39 -0
- data/test/fixtures/kubernetes/create_node_pool.json +25 -0
- data/test/fixtures/kubernetes/list.json +85 -0
- data/test/fixtures/kubernetes/list_node_pools.json +56 -0
- data/test/fixtures/kubernetes/list_resources.json +26 -0
- data/test/fixtures/kubernetes/retrieve.json +39 -0
- data/test/fixtures/kubernetes/retrieve_node_pool.json +25 -0
- data/test/fixtures/kubernetes/update_node_pool.json +19 -0
- data/test/fixtures/load_balancers/create.json +48 -0
- data/test/fixtures/load_balancers/create_forwarding_rule.json +1 -0
- data/test/fixtures/load_balancers/delete.json +1 -0
- data/test/fixtures/load_balancers/delete_forwarding_rule.json +1 -0
- data/test/fixtures/load_balancers/list.json +57 -0
- data/test/fixtures/load_balancers/list_firewall_rules.json +17 -0
- data/test/fixtures/load_balancers/list_forwarding_rules.json +18 -0
- data/test/fixtures/load_balancers/retrieve.json +48 -0
- data/test/fixtures/load_balancers/retrieve_firewall_rule.json +8 -0
- data/test/fixtures/load_balancers/retrieve_forwarding_rule.json +9 -0
- data/test/fixtures/load_balancers/update.json +1 -0
- data/test/fixtures/object_storage/create.json +14 -0
- data/test/fixtures/object_storage/delete.json +1 -0
- data/test/fixtures/object_storage/list.json +22 -0
- data/test/fixtures/object_storage/list_clusters.json +17 -0
- data/test/fixtures/object_storage/regenerate_keys.json +7 -0
- data/test/fixtures/object_storage/retrieve.json +13 -0
- data/test/fixtures/object_storage/update.json +1 -0
- data/test/fixtures/operating_systems/list.json +17 -0
- data/test/fixtures/plans/list.json +22 -0
- data/test/fixtures/plans/list_metal.json +24 -0
- data/test/fixtures/private_networks/create.json +10 -0
- data/test/fixtures/private_networks/delete.json +1 -0
- data/test/fixtures/private_networks/list.json +19 -0
- data/test/fixtures/private_networks/retrieve.json +10 -0
- data/test/fixtures/private_networks/update.json +1 -0
- data/test/fixtures/regions/list.json +20 -0
- data/test/fixtures/regions/list_availability.json +24 -0
- data/test/fixtures/reserved_ips/attach.json +1 -0
- data/test/fixtures/reserved_ips/convert.json +11 -0
- data/test/fixtures/reserved_ips/create.json +11 -0
- data/test/fixtures/reserved_ips/delete.json +1 -0
- data/test/fixtures/reserved_ips/detach.json +1 -0
- data/test/fixtures/reserved_ips/list.json +29 -0
- data/test/fixtures/reserved_ips/retrieve.json +11 -0
- data/test/fixtures/snapshots/create.json +11 -0
- data/test/fixtures/snapshots/create_from_url.json +11 -0
- data/test/fixtures/snapshots/delete.json +1 -0
- data/test/fixtures/snapshots/list.json +20 -0
- data/test/fixtures/snapshots/retrieve.json +11 -0
- data/test/fixtures/snapshots/update.json +1 -0
- data/test/fixtures/ssh_keys/create.json +8 -0
- data/test/fixtures/ssh_keys/delete.json +1 -0
- data/test/fixtures/ssh_keys/list.json +17 -0
- data/test/fixtures/ssh_keys/retrieve.json +8 -0
- data/test/fixtures/ssh_keys/update.json +1 -0
- data/test/fixtures/startup_scripts/create.json +10 -0
- data/test/fixtures/startup_scripts/delete.json +1 -0
- data/test/fixtures/startup_scripts/list.json +18 -0
- data/test/fixtures/startup_scripts/retrieve.json +10 -0
- data/test/fixtures/startup_scripts/update.json +1 -0
- data/test/fixtures/users/create.json +9 -0
- data/test/fixtures/users/delete.json +1 -0
- data/test/fixtures/users/list.json +29 -0
- data/test/fixtures/users/retrieve.json +20 -0
- data/test/fixtures/users/update.json +1 -0
- data/test/test_helper.rb +18 -5
- data/test/vultr/client_test.rb +8 -0
- data/test/vultr/object_test.rb +21 -0
- data/test/vultr/resources/account_test.rb +12 -0
- data/test/vultr/resources/applications_test.rb +15 -0
- data/test/vultr/resources/backups_test.rb +24 -0
- data/test/vultr/resources/bare_metal_test.rb +267 -0
- data/test/vultr/resources/block_storage_test.rb +85 -0
- data/test/vultr/resources/dns_test.rb +134 -0
- data/test/vultr/resources/firewall_test.rb +88 -0
- data/test/vultr/resources/instances_test.rb +325 -0
- data/test/vultr/resources/iso_test.rb +58 -0
- data/test/vultr/resources/kubernetes_test.rb +185 -0
- data/test/vultr/resources/load_balancers_test.rb +110 -0
- data/test/vultr/resources/object_storage_test.rb +71 -0
- data/test/vultr/resources/operating_systems_test.rb +15 -0
- data/test/vultr/resources/plans_test.rb +25 -0
- data/test/vultr/resources/private_networks_test.rb +50 -0
- data/test/vultr/resources/regions_test.rb +26 -0
- data/test/vultr/resources/reserved_ips_test.rb +67 -0
- data/test/vultr/resources/snapshots_test.rb +60 -0
- data/test/vultr/resources/ssh_keys_test.rb +50 -0
- data/test/vultr/resources/startup_scripts_test.rb +50 -0
- data/test/vultr/resources/users_test.rb +50 -0
- data/vultr.gemspec +15 -17
- metadata +237 -54
- data/.travis.yml +0 -26
- data/test/vultr/vultr_account_test.rb +0 -29
- data/test/vultr/vultr_app_test.rb +0 -26
- data/test/vultr/vultr_backup_test.rb +0 -22
- data/test/vultr/vultr_iso_test.rb +0 -27
- data/test/vultr/vultr_os_test.rb +0 -21
- data/test/vultr/vultr_plan_test.rb +0 -22
- data/test/vultr/vultr_region_test.rb +0 -33
- data/test/vultr/vultr_snapshot_test.rb +0 -30
- data/test/vultr/vultr_sshkey_test.rb +0 -50
- data/test/vultr/vultr_startupscript_test.rb +0 -53
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"snapshots": [
|
3
|
+
{
|
4
|
+
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
5
|
+
"date_created": "2020-10-10T01:56:20+00:00",
|
6
|
+
"description": "Example Snapshot",
|
7
|
+
"size": 42949672960,
|
8
|
+
"status": "complete",
|
9
|
+
"os_id": 215,
|
10
|
+
"app_id": 0
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"meta": {
|
14
|
+
"total": 1,
|
15
|
+
"links": {
|
16
|
+
"next": "",
|
17
|
+
"prev": ""
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"ssh_keys": [
|
3
|
+
{
|
4
|
+
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
5
|
+
"date_created": "2020-10-10T01:56:20+00:00",
|
6
|
+
"name": "Example SSH Key",
|
7
|
+
"ssh_key": "ssh-rsa AA... user@example.com"
|
8
|
+
}
|
9
|
+
],
|
10
|
+
"meta": {
|
11
|
+
"total": 1,
|
12
|
+
"links": {
|
13
|
+
"next": "",
|
14
|
+
"prev": ""
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
{
|
2
|
+
"startup_script": {
|
3
|
+
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
4
|
+
"date_created": "2020-10-10T01:56:20+00:00",
|
5
|
+
"date_modified": "2020-10-10T01:56:20+00:00",
|
6
|
+
"name": "Example Startup Script",
|
7
|
+
"type": "pxe",
|
8
|
+
"script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
|
9
|
+
}
|
10
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{
|
2
|
+
"startup_scripts": [
|
3
|
+
{
|
4
|
+
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
5
|
+
"date_created": "2020-10-10T01:56:20+00:00",
|
6
|
+
"date_modified": "2020-10-10T01:59:20+00:00",
|
7
|
+
"name": "Example Startup Script",
|
8
|
+
"type": "pxe"
|
9
|
+
}
|
10
|
+
],
|
11
|
+
"meta": {
|
12
|
+
"total": 1,
|
13
|
+
"links": {
|
14
|
+
"next": "",
|
15
|
+
"prev": ""
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
{
|
2
|
+
"startup_script": {
|
3
|
+
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
4
|
+
"date_created": "2020-10-10T01:56:20+00:00",
|
5
|
+
"date_modified": "2020-10-10T01:59:20+00:00",
|
6
|
+
"name": "Example Startup Script",
|
7
|
+
"type": "pxe",
|
8
|
+
"script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
|
9
|
+
}
|
10
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"users": [
|
3
|
+
{
|
4
|
+
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
5
|
+
"email": "user@example.com",
|
6
|
+
"api_enabled": true,
|
7
|
+
"acls": [
|
8
|
+
"manage_users",
|
9
|
+
"subscriptions_view",
|
10
|
+
"subscriptions",
|
11
|
+
"provisioning",
|
12
|
+
"billing",
|
13
|
+
"support",
|
14
|
+
"abuse",
|
15
|
+
"dns",
|
16
|
+
"upgrade",
|
17
|
+
"objstore",
|
18
|
+
"loadbalancer"
|
19
|
+
]
|
20
|
+
}
|
21
|
+
],
|
22
|
+
"meta": {
|
23
|
+
"total": 1,
|
24
|
+
"links": {
|
25
|
+
"next": "nextid",
|
26
|
+
"prev": "previd"
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"user": {
|
3
|
+
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
4
|
+
"email": "user@example.com",
|
5
|
+
"api_enabled": true,
|
6
|
+
"acls": [
|
7
|
+
"manage_users",
|
8
|
+
"subscriptions_view",
|
9
|
+
"subscriptions",
|
10
|
+
"provisioning",
|
11
|
+
"billing",
|
12
|
+
"support",
|
13
|
+
"abuse",
|
14
|
+
"dns",
|
15
|
+
"upgrade",
|
16
|
+
"objstore",
|
17
|
+
"loadbalancer"
|
18
|
+
]
|
19
|
+
}
|
20
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
data/test/test_helper.rb
CHANGED
@@ -1,6 +1,19 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
|
2
|
+
require "vultr"
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "faraday"
|
5
|
+
require "json"
|
3
6
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
+
class Minitest::Test
|
8
|
+
def stub_response(fixture:, status: 200, headers: {"Content-Type" => "application/json"})
|
9
|
+
[status, headers, File.read("test/fixtures/#{fixture}.json")]
|
10
|
+
end
|
11
|
+
|
12
|
+
def stub_request(path, response:, method: :get, body: {})
|
13
|
+
Faraday::Adapter::Test::Stubs.new do |stub|
|
14
|
+
arguments = [method, "/v2/#{path}"]
|
15
|
+
arguments << body.to_json if [:post, :put, :patch].include?(method)
|
16
|
+
stub.send(*arguments) { |env| response }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class ObjectTest < Minitest::Test
|
4
|
+
def test_creating_object_from_hash
|
5
|
+
assert_equal "bar", Vultr::Object.new(foo: "bar").foo
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_nested_hash
|
9
|
+
assert_equal "foobar", Vultr::Object.new(foo: {bar: {baz: "foobar"}}).foo.bar.baz
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_nested_number
|
13
|
+
assert_equal 1, Vultr::Object.new(foo: {bar: 1}).foo.bar
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_array
|
17
|
+
object = Vultr::Object.new(foo: [{bar: :baz}])
|
18
|
+
assert_equal OpenStruct, object.foo.first.class
|
19
|
+
assert_equal :baz, object.foo.first.bar
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class AccountResourceTest < Minitest::Test
|
4
|
+
def test_info
|
5
|
+
stub = stub_request("account", response: stub_response(fixture: "account/info"))
|
6
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
7
|
+
account = client.account.info
|
8
|
+
|
9
|
+
assert_equal Vultr::Account, account.class
|
10
|
+
assert_equal "admin@example.com", account.email
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class ApplicationsResourceTest < Minitest::Test
|
6
|
+
def test_list
|
7
|
+
stub = stub_request("applications", response: stub_response(fixture: "applications/list"))
|
8
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
9
|
+
applications = client.applications.list
|
10
|
+
|
11
|
+
assert_equal Vultr::Collection, applications.class
|
12
|
+
assert_equal Vultr::Application, applications.data.first.class
|
13
|
+
assert_equal 2, applications.total
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class BackupsResourceTest < Minitest::Test
|
6
|
+
def test_list
|
7
|
+
stub = stub_request("backups", response: stub_response(fixture: "backups/list"))
|
8
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
9
|
+
backups = client.backups.list
|
10
|
+
assert_equal Vultr::Collection, backups.class
|
11
|
+
assert_equal Vultr::Backup, backups.data.first.class
|
12
|
+
assert_equal 1, backups.total
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_retrieve
|
16
|
+
backup_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
17
|
+
stub = stub_request("backups/#{backup_id}", response: stub_response(fixture: "backups/retrieve"))
|
18
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
19
|
+
backup = client.backups.retrieve(backup_id: backup_id)
|
20
|
+
|
21
|
+
assert_equal Vultr::Backup, backup.class
|
22
|
+
assert_equal "complete", backup.status
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,267 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class BareMetalResourceTest < Minitest::Test
|
6
|
+
def test_list
|
7
|
+
stub = stub_request("bare-metals", response: stub_response(fixture: "bare_metals/list"))
|
8
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
9
|
+
bare_metal = client.bare_metal.list
|
10
|
+
|
11
|
+
assert_equal Vultr::Collection, bare_metal.class
|
12
|
+
assert_equal Vultr::BareMetal, bare_metal.data.first.class
|
13
|
+
assert_equal 1, bare_metal.total
|
14
|
+
assert_equal "next", bare_metal.next_cursor
|
15
|
+
assert_equal "prev", bare_metal.prev_cursor
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_create
|
19
|
+
body = {region: "ams", plan: "vbm-4c-32gb", label: "Example Bare Metal", app_id: 3, enable_ipv6: true}
|
20
|
+
stub = stub_request("bare-metals", method: :post, body: body, response: stub_response(fixture: "bare_metals/create", status: 201))
|
21
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
22
|
+
bare_metal = client.bare_metal.create(**body)
|
23
|
+
|
24
|
+
assert_equal bare_metal.region, "ams"
|
25
|
+
assert_equal bare_metal.date_created, Time.parse("2020-10-10T01:56:20+00:00")
|
26
|
+
assert_equal bare_metal.plan, "vbm-4c-32gb"
|
27
|
+
assert_equal bare_metal.label, "Example Bare Metal"
|
28
|
+
assert_equal bare_metal.features, ["ipv6"]
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_retrieve
|
32
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
33
|
+
stub = stub_request("bare-metals/#{baremetal_id}", response: stub_response(fixture: "bare_metals/retrieve"))
|
34
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
35
|
+
bare_metal = client.bare_metal.retrieve(baremetal_id: baremetal_id)
|
36
|
+
|
37
|
+
assert_equal bare_metal.id, baremetal_id
|
38
|
+
assert_equal bare_metal.os, "Application"
|
39
|
+
assert_equal bare_metal.ram, "32768 MB"
|
40
|
+
assert_equal bare_metal.disk, "2x 240GB SSD"
|
41
|
+
assert_equal bare_metal.main_ip, "192.0.2.123"
|
42
|
+
assert_equal bare_metal.cpu_count, 4
|
43
|
+
assert_equal bare_metal.region, "ams"
|
44
|
+
assert_equal bare_metal.date_created, Time.parse("2020-10-10T01:56:20+00:00")
|
45
|
+
assert_equal bare_metal.status, "pending"
|
46
|
+
assert_equal bare_metal.netmask_v4, "255.255.254.0"
|
47
|
+
assert_equal bare_metal.gateway_v4, "192.0.2.1"
|
48
|
+
assert_equal bare_metal.plan, "vbm-4c-32gb"
|
49
|
+
assert_equal bare_metal.v6_network, "2001:0db8:5001:3990::"
|
50
|
+
assert_equal bare_metal.v6_main_ip, "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a"
|
51
|
+
assert_equal bare_metal.v6_network_size, 64
|
52
|
+
assert_equal bare_metal.mac_address, 2199756823533
|
53
|
+
assert_equal bare_metal.label, "Example Bare Metal"
|
54
|
+
assert_equal bare_metal.tag, "Example Tag"
|
55
|
+
assert_equal bare_metal.os_id, 183
|
56
|
+
assert_equal bare_metal.app_id, 3
|
57
|
+
assert_equal bare_metal.image_id, ""
|
58
|
+
assert_equal bare_metal.features, ["ipv6"]
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_update
|
62
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
63
|
+
body = {label: "Updated Bare Metal Label", tag: "Updated Tag", user_data: "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="}
|
64
|
+
stub = stub_request("bare-metals/#{baremetal_id}", method: :patch, body: body, response: stub_response(fixture: "bare_metals/update", status: 202))
|
65
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
66
|
+
bare_metal = client.bare_metal.update(baremetal_id: baremetal_id, **body)
|
67
|
+
|
68
|
+
assert_equal bare_metal.id, baremetal_id
|
69
|
+
assert_equal bare_metal.os, "Application"
|
70
|
+
assert_equal bare_metal.ram, "32768 MB"
|
71
|
+
assert_equal bare_metal.disk, "2x 240GB SSD"
|
72
|
+
assert_equal bare_metal.main_ip, "192.0.2.123"
|
73
|
+
assert_equal bare_metal.cpu_count, 4
|
74
|
+
assert_equal bare_metal.region, "ams"
|
75
|
+
assert_equal bare_metal.date_created, Time.parse("2020-10-10T01:56:20+00:00")
|
76
|
+
assert_equal bare_metal.status, "pending"
|
77
|
+
assert_equal bare_metal.netmask_v4, "255.255.254.0"
|
78
|
+
assert_equal bare_metal.gateway_v4, "192.0.2.1"
|
79
|
+
assert_equal bare_metal.plan, "vbm-4c-32gb"
|
80
|
+
assert_equal bare_metal.v6_network, "2001:0db8:5001:3990::"
|
81
|
+
assert_equal bare_metal.v6_main_ip, "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a"
|
82
|
+
assert_equal bare_metal.v6_network_size, 64
|
83
|
+
assert_equal bare_metal.mac_address, 2199756823533
|
84
|
+
assert_equal bare_metal.label, "Updated Bare Metal Label"
|
85
|
+
assert_equal bare_metal.tag, "Updated Tag"
|
86
|
+
assert_equal bare_metal.os_id, 183
|
87
|
+
assert_equal bare_metal.app_id, 3
|
88
|
+
assert_equal bare_metal.image_id, ""
|
89
|
+
assert_equal bare_metal.features, ["ipv6"]
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_delete
|
93
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
94
|
+
stub = stub_request("bare-metals/#{baremetal_id}", method: :delete, response: {})
|
95
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
96
|
+
|
97
|
+
assert client.bare_metal.delete(baremetal_id: baremetal_id)
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_start
|
101
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
102
|
+
stub = stub_request("bare-metals/#{baremetal_id}/start", method: :post, body: {}, response: {})
|
103
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
104
|
+
|
105
|
+
assert client.bare_metal.start(baremetal_id: baremetal_id)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_reboot
|
109
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
110
|
+
stub = stub_request("bare-metals/#{baremetal_id}/reboot", method: :post, body: {}, response: {})
|
111
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
112
|
+
|
113
|
+
assert client.bare_metal.reboot(baremetal_id: baremetal_id)
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_reinstall
|
117
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
118
|
+
stub = stub_request("bare-metals/#{baremetal_id}/reinstall", method: :post, body: {}, response: stub_response(fixture: "bare_metals/reinstall", status: 202))
|
119
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
120
|
+
|
121
|
+
bare_metal = client.bare_metal.reinstall(baremetal_id: baremetal_id)
|
122
|
+
|
123
|
+
assert_equal bare_metal.id, baremetal_id
|
124
|
+
assert_equal bare_metal.os, "Application"
|
125
|
+
assert_equal bare_metal.ram, "32768 MB"
|
126
|
+
assert_equal bare_metal.disk, "2x 240GB SSD"
|
127
|
+
assert_equal bare_metal.main_ip, "192.0.2.123"
|
128
|
+
assert_equal bare_metal.cpu_count, 4
|
129
|
+
assert_equal bare_metal.region, "ams"
|
130
|
+
assert_equal bare_metal.date_created, Time.parse("2020-10-10T01:56:20+00:00")
|
131
|
+
assert_equal bare_metal.status, "pending"
|
132
|
+
assert_equal bare_metal.netmask_v4, "255.255.254.0"
|
133
|
+
assert_equal bare_metal.gateway_v4, "192.0.2.1"
|
134
|
+
assert_equal bare_metal.plan, "vbm-4c-32gb"
|
135
|
+
assert_equal bare_metal.v6_network, "2001:0db8:5001:3990::"
|
136
|
+
assert_equal bare_metal.v6_main_ip, "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a"
|
137
|
+
assert_equal bare_metal.v6_network_size, 64
|
138
|
+
assert_equal bare_metal.label, "Example Bare Metal"
|
139
|
+
assert_equal bare_metal.mac_address, 2199756823533
|
140
|
+
assert_equal bare_metal.tag, "Example Tag"
|
141
|
+
assert_equal bare_metal.os_id, 183
|
142
|
+
assert_equal bare_metal.app_id, 3
|
143
|
+
assert_equal bare_metal.image_id, ""
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_halt
|
147
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
148
|
+
stub = stub_request("bare-metals/#{baremetal_id}/halt", method: :post, body: {}, response: {})
|
149
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
150
|
+
|
151
|
+
assert client.bare_metal.halt(baremetal_id: baremetal_id)
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_bandwidth
|
155
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
156
|
+
stub = stub_request("bare-metals/#{baremetal_id}/bandwidth", method: :get, response: stub_response(fixture: "bare_metals/bandwidth"))
|
157
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
158
|
+
|
159
|
+
bandwidth = client.bare_metal.bandwidth(baremetal_id: baremetal_id)
|
160
|
+
|
161
|
+
assert_equal bandwidth["2020-07-25"].class, OpenStruct
|
162
|
+
assert_equal bandwidth["2020-07-25"].incoming_bytes, 15989787
|
163
|
+
assert_equal bandwidth["2020-07-25"].outgoing_bytes, 25327729
|
164
|
+
|
165
|
+
assert_equal bandwidth["2020-07-26"].class, OpenStruct
|
166
|
+
assert_equal bandwidth["2020-07-26"].incoming_bytes, 13964112
|
167
|
+
assert_equal bandwidth["2020-07-26"].outgoing_bytes, 22257069
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_user_data
|
171
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
172
|
+
stub = stub_request("bare-metals/#{baremetal_id}/user-data", method: :get, response: stub_response(fixture: "bare_metals/user_data"))
|
173
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
174
|
+
|
175
|
+
user_data = client.bare_metal.user_data(baremetal_id: baremetal_id)
|
176
|
+
|
177
|
+
assert_equal user_data.data, "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_upgrades
|
181
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
182
|
+
stub = stub_request("bare-metals/#{baremetal_id}/upgrades", method: :get, response: stub_response(fixture: "bare_metals/upgrades"))
|
183
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
184
|
+
|
185
|
+
upgrades = client.bare_metal.upgrades(baremetal_id: baremetal_id)
|
186
|
+
|
187
|
+
assert_equal upgrades.os.class, Array
|
188
|
+
assert_equal upgrades.applications.class, Array
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_vnc
|
192
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
193
|
+
stub = stub_request("bare-metals/#{baremetal_id}/vnc", method: :get, response: stub_response(fixture: "bare_metals/vnc"))
|
194
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
195
|
+
|
196
|
+
vnc = client.bare_metal.vnc(baremetal_id: baremetal_id)
|
197
|
+
|
198
|
+
assert_equal vnc.url, "https://my.vultr.com/subs/baremetal/novnc/api.php?data=00example11223344"
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_list_ipv4
|
202
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
203
|
+
stub = stub_request("bare-metals/#{baremetal_id}/ipv4", method: :get, response: stub_response(fixture: "bare_metals/list_ipv4"))
|
204
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
205
|
+
|
206
|
+
ipv4 = client.bare_metal.list_ipv4(baremetal_id: baremetal_id)
|
207
|
+
|
208
|
+
assert_equal Vultr::Collection, ipv4.class
|
209
|
+
assert_equal Vultr::Object, ipv4.data.first.class
|
210
|
+
assert_equal 1, ipv4.total
|
211
|
+
assert_equal "next", ipv4.next_cursor
|
212
|
+
assert_equal "prev", ipv4.prev_cursor
|
213
|
+
end
|
214
|
+
|
215
|
+
def test_list_ipv6
|
216
|
+
baremetal_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
|
217
|
+
stub = stub_request("bare-metals/#{baremetal_id}/ipv6", method: :get, response: stub_response(fixture: "bare_metals/list_ipv6"))
|
218
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
219
|
+
|
220
|
+
ipv6 = client.bare_metal.list_ipv6(baremetal_id: baremetal_id)
|
221
|
+
|
222
|
+
assert_equal Vultr::Collection, ipv6.class
|
223
|
+
assert_equal Vultr::Object, ipv6.data.first.class
|
224
|
+
assert_equal 1, ipv6.total
|
225
|
+
assert_equal "next", ipv6.next_cursor
|
226
|
+
assert_equal "prev", ipv6.prev_cursor
|
227
|
+
end
|
228
|
+
|
229
|
+
def test_halt_instances
|
230
|
+
baremetal_ids = [
|
231
|
+
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
232
|
+
"7f6f84ea-8f87-4d9e-af01-ac44db05911c",
|
233
|
+
"54a83807-64ce-42e8-a0da-4d6c31c5b93b"
|
234
|
+
]
|
235
|
+
|
236
|
+
stub = stub_request("bare-metals/halt", method: :post, body: {baremetal_ids: baremetal_ids}, response: {})
|
237
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
238
|
+
|
239
|
+
assert client.bare_metal.halt_instances(baremetal_ids: baremetal_ids)
|
240
|
+
end
|
241
|
+
|
242
|
+
def test_reboot_instances
|
243
|
+
baremetal_ids = [
|
244
|
+
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
245
|
+
"7f6f84ea-8f87-4d9e-af01-ac44db05911c",
|
246
|
+
"54a83807-64ce-42e8-a0da-4d6c31c5b93b"
|
247
|
+
]
|
248
|
+
|
249
|
+
stub = stub_request("bare-metals/reboot", method: :post, body: {baremetal_ids: baremetal_ids}, response: {})
|
250
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
251
|
+
|
252
|
+
assert client.bare_metal.reboot_instances(baremetal_ids: baremetal_ids)
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_start_instances
|
256
|
+
baremetal_ids = [
|
257
|
+
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
|
258
|
+
"7f6f84ea-8f87-4d9e-af01-ac44db05911c",
|
259
|
+
"54a83807-64ce-42e8-a0da-4d6c31c5b93b"
|
260
|
+
]
|
261
|
+
|
262
|
+
stub = stub_request("bare-metals/start", method: :post, body: {baremetal_ids: baremetal_ids}, response: {})
|
263
|
+
client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
|
264
|
+
|
265
|
+
assert client.bare_metal.start_instances(baremetal_ids: baremetal_ids)
|
266
|
+
end
|
267
|
+
end
|