vultr 0.4.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +32 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +5 -10
- data/README.md +306 -136
- data/Rakefile +10 -6
- data/bin/console +21 -0
- data/bin/setup +8 -0
- data/bin/test +6 -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/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 +56 -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 +17 -17
- metadata +394 -48
- 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,79 @@
|
|
1
|
+
module Vultr
|
2
|
+
class BareMetalResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("bare-metals", params: params)
|
5
|
+
Collection.from_response(response, key: "bare_metals", type: BareMetal)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
BareMetal.new post_request("bare-metals", body: attributes).body.dig("bare_metal")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(baremetal_id:)
|
13
|
+
BareMetal.new get_request("bare-metals/#{baremetal_id}").body.dig("bare_metal")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(baremetal_id:, **attributes)
|
17
|
+
BareMetal.new patch_request("bare-metals/#{baremetal_id}", body: attributes).body.dig("bare_metal")
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(baremetal_id:)
|
21
|
+
delete_request("bare-metals/#{baremetal_id}")
|
22
|
+
end
|
23
|
+
|
24
|
+
def start(baremetal_id:)
|
25
|
+
post_request("bare-metals/#{baremetal_id}/start", body: {})
|
26
|
+
end
|
27
|
+
|
28
|
+
def reboot(baremetal_id:)
|
29
|
+
post_request("bare-metals/#{baremetal_id}/reboot", body: {})
|
30
|
+
end
|
31
|
+
|
32
|
+
def reinstall(baremetal_id:)
|
33
|
+
BareMetal.new post_request("bare-metals/#{baremetal_id}/reinstall", body: {}).body.dig("bare_metal")
|
34
|
+
end
|
35
|
+
|
36
|
+
def halt(baremetal_id:)
|
37
|
+
post_request("bare-metals/#{baremetal_id}/halt", body: {})
|
38
|
+
end
|
39
|
+
|
40
|
+
def bandwidth(baremetal_id:)
|
41
|
+
Object.new get_request("bare-metals/#{baremetal_id}/bandwidth").body.dig("bandwidth")
|
42
|
+
end
|
43
|
+
|
44
|
+
def user_data(baremetal_id:)
|
45
|
+
Object.new get_request("bare-metals/#{baremetal_id}/user-data").body.dig("user_data")
|
46
|
+
end
|
47
|
+
|
48
|
+
def upgrades(baremetal_id:, **params)
|
49
|
+
Object.new get_request("bare-metals/#{baremetal_id}/upgrades", params: params).body.dig("upgrades")
|
50
|
+
end
|
51
|
+
|
52
|
+
def vnc(baremetal_id:)
|
53
|
+
Object.new get_request("bare-metals/#{baremetal_id}/vnc").body.dig("vnc")
|
54
|
+
end
|
55
|
+
|
56
|
+
def list_ipv4(baremetal_id:)
|
57
|
+
response = get_request("bare-metals/#{baremetal_id}/ipv4")
|
58
|
+
Collection.from_response(response, key: "ipv4s", type: Object)
|
59
|
+
end
|
60
|
+
|
61
|
+
def list_ipv6(baremetal_id:)
|
62
|
+
response = get_request("bare-metals/#{baremetal_id}/ipv6")
|
63
|
+
Collection.from_response(response, key: "ipv6s", type: Object)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Bulk operations
|
67
|
+
def halt_instances(baremetal_ids:)
|
68
|
+
post_request("bare-metals/halt", body: {baremetal_ids: Array(baremetal_ids)})
|
69
|
+
end
|
70
|
+
|
71
|
+
def reboot_instances(baremetal_ids:)
|
72
|
+
post_request("bare-metals/reboot", body: {baremetal_ids: Array(baremetal_ids)})
|
73
|
+
end
|
74
|
+
|
75
|
+
def start_instances(baremetal_ids:)
|
76
|
+
post_request("bare-metals/start", body: {baremetal_ids: Array(baremetal_ids)})
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Vultr
|
2
|
+
class BlockStorageResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("blocks", params: params)
|
5
|
+
Collection.from_response(response, key: "blocks", type: BlockStorage)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
BlockStorage.new post_request("blocks", body: attributes).body.dig("block")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(block_id:)
|
13
|
+
BlockStorage.new get_request("blocks/#{block_id}").body.dig("block")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(block_id:, **attributes)
|
17
|
+
patch_request("blocks/#{block_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(block_id:)
|
21
|
+
delete_request("blocks/#{block_id}")
|
22
|
+
end
|
23
|
+
|
24
|
+
def attach(block_id:)
|
25
|
+
post_request("blocks/#{block_id}/attach", body: {})
|
26
|
+
end
|
27
|
+
|
28
|
+
def detach(block_id:)
|
29
|
+
post_request("blocks/#{block_id}/detach", body: {})
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Vultr
|
2
|
+
class DnsResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("domains", params: params)
|
5
|
+
Collection.from_response(response, key: "domains", type: Domain)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
Domain.new post_request("domains", body: attributes).body.dig("domain")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(dns_domain:)
|
13
|
+
Domain.new get_request("domains/#{dns_domain}").body.dig("domain")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(dns_domain:, **attributes)
|
17
|
+
put_request("domains/#{dns_domain}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(dns_domain:)
|
21
|
+
delete_request("domains/#{dns_domain}")
|
22
|
+
end
|
23
|
+
|
24
|
+
def soa(dns_domain:)
|
25
|
+
Object.new get_request("domains/#{dns_domain}/soa").body.dig("dns_soa")
|
26
|
+
end
|
27
|
+
|
28
|
+
def update_soa(dns_domain:, **attributes)
|
29
|
+
patch_request("domains/#{dns_domain}/soa", body: attributes)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns an Array of strings
|
33
|
+
def dnssec(dns_domain:)
|
34
|
+
get_request("domains/#{dns_domain}/dnssec").body.dig("dns_sec")
|
35
|
+
end
|
36
|
+
|
37
|
+
def list_records(dns_domain:, **params)
|
38
|
+
response = get_request("domains/#{dns_domain}/records", params: params)
|
39
|
+
Collection.from_response(response, key: "records", type: Object)
|
40
|
+
end
|
41
|
+
|
42
|
+
def create_record(dns_domain:, **attributes)
|
43
|
+
Object.new post_request("domains/#{dns_domain}/records", body: attributes).body.dig("record")
|
44
|
+
end
|
45
|
+
|
46
|
+
def retrieve_record(dns_domain:, record_id:)
|
47
|
+
Object.new get_request("domains/#{dns_domain}/records/#{record_id}").body.dig("record")
|
48
|
+
end
|
49
|
+
|
50
|
+
def update_record(dns_domain:, record_id:, **attributes)
|
51
|
+
patch_request("domains/#{dns_domain}/records/#{record_id}", body: attributes)
|
52
|
+
end
|
53
|
+
|
54
|
+
def delete_record(dns_domain:, record_id:)
|
55
|
+
delete_request("domains/#{dns_domain}/records/#{record_id}")
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Vultr
|
2
|
+
class FirewallResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("firewalls", params: params)
|
5
|
+
Collection.from_response(response, key: "firewall_groups", type: FirewallGroup)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
FirewallGroup.new post_request("firewalls", body: attributes).body.dig("firewall_group")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(firewall_group_id:)
|
13
|
+
FirewallGroup.new get_request("firewalls/#{firewall_group_id}").body.dig("firewall_group")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(firewall_group_id:, **attributes)
|
17
|
+
put_request("firewalls/#{firewall_group_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(firewall_group_id:)
|
21
|
+
delete_request("firewalls/#{firewall_group_id}")
|
22
|
+
end
|
23
|
+
|
24
|
+
# Firewall Rules
|
25
|
+
def list_rules(firewall_group_id:, **params)
|
26
|
+
response = get_request("firewalls/#{firewall_group_id}/rules", params: params)
|
27
|
+
Collection.from_response(response, key: "firewall_rules", type: Object)
|
28
|
+
end
|
29
|
+
|
30
|
+
def create_rule(firewall_group_id:, **attributes)
|
31
|
+
Object.new post_request("firewalls/#{firewall_group_id}/rules", body: attributes).body.dig("firewall_rule")
|
32
|
+
end
|
33
|
+
|
34
|
+
def retrieve_rule(firewall_group_id:, firewall_rule_id:)
|
35
|
+
Object.new get_request("firewalls/#{firewall_group_id}/rules/#{firewall_rule_id}").body.dig("firewall_rule")
|
36
|
+
end
|
37
|
+
|
38
|
+
def delete_rule(firewall_group_id:, firewall_rule_id:)
|
39
|
+
delete_request("firewalls/#{firewall_group_id}/rules/#{firewall_rule_id}")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
module Vultr
|
2
|
+
class InstancesResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("instances", params: params)
|
5
|
+
Collection.from_response(response, key: "instances", type: Instance)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
Instance.new post_request("instances", body: attributes).body.dig("instance")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(instance_id:)
|
13
|
+
Instance.new get_request("instances/#{instance_id}").body.dig("instance")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(instance_id:, **attributes)
|
17
|
+
patch_request("instances/#{instance_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(instance_id:)
|
21
|
+
delete_request("instances/#{instance_id}")
|
22
|
+
end
|
23
|
+
|
24
|
+
def start(instance_id:, **attributes)
|
25
|
+
post_request("instances/#{instance_id}/start", body: attributes)
|
26
|
+
end
|
27
|
+
|
28
|
+
def reboot(instance_id:, **attributes)
|
29
|
+
post_request("instances/#{instance_id}/reboot", body: attributes)
|
30
|
+
end
|
31
|
+
|
32
|
+
def reinstall(instance_id:, **attributes)
|
33
|
+
Instance.new post_request("instances/#{instance_id}/reinstall", body: attributes).body.dig("instance")
|
34
|
+
end
|
35
|
+
|
36
|
+
def restore(instance_id:, **attributes)
|
37
|
+
Object.new post_request("instances/#{instance_id}/restore", body: attributes).body.dig("status")
|
38
|
+
end
|
39
|
+
|
40
|
+
def halt(instance_id:, **attributes)
|
41
|
+
post_request("instances/#{instance_id}/halt", body: attributes)
|
42
|
+
end
|
43
|
+
|
44
|
+
def bandwidth(instance_id:)
|
45
|
+
Object.new get_request("instances/#{instance_id}/bandwidth").body.dig("bandwidth")
|
46
|
+
end
|
47
|
+
|
48
|
+
def neighbors(instance_id:)
|
49
|
+
get_request("instances/#{instance_id}/neighbors").body.dig("neighbors")
|
50
|
+
end
|
51
|
+
|
52
|
+
def user_data(instance_id:)
|
53
|
+
Object.new get_request("instances/#{instance_id}/user-data").body.dig("user_data")
|
54
|
+
end
|
55
|
+
|
56
|
+
def upgrades(instance_id:, **params)
|
57
|
+
Object.new get_request("instances/#{instance_id}/upgrades", params: params).body.dig("upgrades")
|
58
|
+
end
|
59
|
+
|
60
|
+
def list_ipv4(instance_id:, **params)
|
61
|
+
response = get_request("instances/#{instance_id}/ipv4", params: params)
|
62
|
+
Collection.from_response(response, key: "ipv4s", type: Object)
|
63
|
+
end
|
64
|
+
|
65
|
+
def create_ipv4(instance_id:, **params)
|
66
|
+
Object.new post_request("instances/#{instance_id}/ipv4", body: params).body.dig("ipv4")
|
67
|
+
end
|
68
|
+
|
69
|
+
def delete_ipv4(instance_id:, ipv4:)
|
70
|
+
delete_request("instances/#{instance_id}/ipv4/#{ipv4}")
|
71
|
+
end
|
72
|
+
|
73
|
+
def create_ipv4_reverse(instance_id:, **params)
|
74
|
+
post_request("instances/#{instance_id}/ipv4/reverse", body: params)
|
75
|
+
end
|
76
|
+
|
77
|
+
def set_default_reverse_dns_entry(instance_id:, **params)
|
78
|
+
post_request("instances/#{instance_id}/ipv4/reverse/default", body: params)
|
79
|
+
end
|
80
|
+
|
81
|
+
def list_ipv6(instance_id:, **params)
|
82
|
+
response = get_request("instances/#{instance_id}/ipv6", params: params)
|
83
|
+
Collection.from_response(response, key: "ipv6s", type: Object)
|
84
|
+
end
|
85
|
+
|
86
|
+
def ipv6_reverse(instance_id:)
|
87
|
+
response = get_request("instances/#{instance_id}/ipv6/reverse")
|
88
|
+
Collection.from_response(response, key: "reverse_ipv6s", type: Object)
|
89
|
+
end
|
90
|
+
|
91
|
+
def create_ipv6_reverse(instance_id:, **params)
|
92
|
+
post_request("instances/#{instance_id}/ipv6/reverse", body: params)
|
93
|
+
end
|
94
|
+
|
95
|
+
def delete_ipv6_reverse(instance_id:, ipv6:)
|
96
|
+
delete_request("instances/#{instance_id}/ipv6/reverse/#{ipv6}")
|
97
|
+
end
|
98
|
+
|
99
|
+
def list_private_networks(instance_id:, **params)
|
100
|
+
response = get_request("instances/#{instance_id}/private-networks", params: params)
|
101
|
+
Collection.from_response(response, key: "private_networks", type: PrivateNetwork)
|
102
|
+
end
|
103
|
+
|
104
|
+
def attach_private_network(instance_id:, network_id:)
|
105
|
+
post_request("instances/#{instance_id}/private-networks/attach", body: {network_id: network_id})
|
106
|
+
end
|
107
|
+
|
108
|
+
def detach_private_network(instance_id:, network_id:)
|
109
|
+
post_request("instances/#{instance_id}/private-networks/detach", body: {network_id: network_id})
|
110
|
+
end
|
111
|
+
|
112
|
+
def iso(instance_id:)
|
113
|
+
Object.new get_request("instances/#{instance_id}/iso").body.dig("iso_status")
|
114
|
+
end
|
115
|
+
|
116
|
+
def attach_iso(instance_id:, iso_id:)
|
117
|
+
Object.new post_request("instances/#{instance_id}/iso/attach", body: {iso_id: iso_id}).body.dig("iso_status")
|
118
|
+
end
|
119
|
+
|
120
|
+
def detach_iso(instance_id:, iso_id:)
|
121
|
+
Object.new post_request("instances/#{instance_id}/iso/detach", body: {iso_id: iso_id}).body.dig("iso_status")
|
122
|
+
end
|
123
|
+
|
124
|
+
def backup_schedule(instance_id:)
|
125
|
+
Object.new get_request("instances/#{instance_id}/backup-schedule").body.dig("backup_schedule")
|
126
|
+
end
|
127
|
+
|
128
|
+
def set_backup_schedule(instance_id:, **attributes)
|
129
|
+
post_request("instances/#{instance_id}/backup-schedule", body: attributes)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Bulk operations
|
133
|
+
def halt_instances(instance_ids:)
|
134
|
+
post_request("instances/halt", body: {instance_ids: Array(instance_ids)})
|
135
|
+
end
|
136
|
+
|
137
|
+
def reboot_instances(instance_ids:)
|
138
|
+
post_request("instances/reboot", body: {instance_ids: Array(instance_ids)})
|
139
|
+
end
|
140
|
+
|
141
|
+
def start_instances(instance_ids:)
|
142
|
+
post_request("instances/start", body: {instance_ids: Array(instance_ids)})
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Vultr
|
2
|
+
class IsoResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("iso", params: params)
|
5
|
+
Collection.from_response(response, key: "isos", type: Iso)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
Iso.new post_request("iso", body: attributes).body.dig("iso")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(iso_id:)
|
13
|
+
Iso.new get_request("iso/#{iso_id}").body.dig("iso")
|
14
|
+
end
|
15
|
+
|
16
|
+
def delete(iso_id:)
|
17
|
+
delete_request("iso/#{iso_id}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def list_public(**params)
|
21
|
+
response = get_request("iso-public", params: params)
|
22
|
+
Collection.from_response(response, key: "public_isos", type: Iso)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Vultr
|
2
|
+
class KubernetesResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("kubernetes/clusters", params: params)
|
5
|
+
Collection.from_response(response, key: "vke_clusters", type: KubernetesCluster)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
KubernetesCluster.new post_request("kubernetes/clusters", body: attributes).body.dig("vke_cluster")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(vke_id:)
|
13
|
+
KubernetesCluster.new get_request("kubernetes/clusters/#{vke_id}").body.dig("vke_cluster")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(vke_id:, **attributes)
|
17
|
+
put_request("kubernetes/clusters/#{vke_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(vke_id:)
|
21
|
+
delete_request("kubernetes/clusters/#{vke_id}")
|
22
|
+
end
|
23
|
+
|
24
|
+
def config(vke_id:)
|
25
|
+
Object.new get_request("kubernetes/clusters/#{vke_id}/config").body
|
26
|
+
end
|
27
|
+
|
28
|
+
def list_resources(vke_id:)
|
29
|
+
Object.new get_request("kubernetes/clusters/#{vke_id}/resources").body.dig("resources")
|
30
|
+
end
|
31
|
+
|
32
|
+
def list_node_pools(vke_id:, **params)
|
33
|
+
response = get_request("kubernetes/clusters/#{vke_id}/node-pools", params: params)
|
34
|
+
Collection.from_response(response, key: "node_pools", type: Object)
|
35
|
+
end
|
36
|
+
|
37
|
+
def retrieve_node_pool(vke_id:, nodepool_id:)
|
38
|
+
Object.new get_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}").body.dig("node_pool")
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_node_pool(vke_id:, **attributes)
|
42
|
+
Object.new post_request("kubernetes/clusters/#{vke_id}/node-pools", body: attributes).body.dig("node_pool")
|
43
|
+
end
|
44
|
+
|
45
|
+
def update_node_pool(vke_id:, nodepool_id:, **attributes)
|
46
|
+
Object.new patch_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}", body: attributes).body.dig("node_pool")
|
47
|
+
end
|
48
|
+
|
49
|
+
def delete_node_pool(vke_id:, nodepool_id:)
|
50
|
+
delete_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}")
|
51
|
+
end
|
52
|
+
|
53
|
+
def delete_node_pool_instance(vke_id:, nodepool_id:, node_id:)
|
54
|
+
delete_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}/nodes/#{node_id}")
|
55
|
+
end
|
56
|
+
|
57
|
+
def recycle_node_pool_instance(vke_id:, nodepool_id:, node_id:)
|
58
|
+
post_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}/nodes/#{node_id}/recycle", body: {})
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|