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,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
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Vultr
|
2
|
+
class LoadBalancersResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("load-balancers", params: params)
|
5
|
+
Collection.from_response(response, key: "load_balancers", type: LoadBalancer)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
LoadBalancer.new post_request("load-balancers", body: attributes).body.dig("load_balancer")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(load_balancer_id:)
|
13
|
+
LoadBalancer.new get_request("load-balancers/#{load_balancer_id}").body.dig("load_balancer")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(load_balancer_id:, **attributes)
|
17
|
+
LoadBalancer.new patch_request("load-balancers/#{load_balancer_id}", body: attributes).body.dig("load_balancer")
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(load_balancer_id:)
|
21
|
+
delete_request("load-balancers/#{load_balancer_id}")
|
22
|
+
end
|
23
|
+
|
24
|
+
def list_forwarding_rules(load_balancer_id:, **params)
|
25
|
+
response = get_request("load-balancers/#{load_balancer_id}/forwarding-rules", params: params)
|
26
|
+
Collection.from_response(response, key: "forwarding_rules", type: Object)
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_forwarding_rule(load_balancer_id:, **attributes)
|
30
|
+
Object.new post_request("load-balancers/#{load_balancer_id}/forwarding-rules", body: attributes).body.dig("forwarding_rule")
|
31
|
+
end
|
32
|
+
|
33
|
+
def retrieve_forwarding_rule(load_balancer_id:, forwarding_rule_id:)
|
34
|
+
Object.new get_request("load-balancers/#{load_balancer_id}/forwarding-rules/#{forwarding_rule_id}").body.dig("forwarding_rule")
|
35
|
+
end
|
36
|
+
|
37
|
+
def delete_forwarding_rule(load_balancer_id:, forwarding_rule_id:)
|
38
|
+
delete_request("load-balancers/#{load_balancer_id}/forwarding-rules/#{forwarding_rule_id}")
|
39
|
+
end
|
40
|
+
|
41
|
+
def list_firewall_rules(load_balancer_id:, **params)
|
42
|
+
response = get_request("load-balancers/#{load_balancer_id}/firewall-rules", params: params)
|
43
|
+
Collection.from_response(response, key: "firewall_rules", type: Object)
|
44
|
+
end
|
45
|
+
|
46
|
+
def retrieve_firewall_rule(load_balancer_id:, firewall_rule_id:)
|
47
|
+
Object.new get_request("load-balancers/#{load_balancer_id}/firewall-rules/#{firewall_rule_id}").body.dig("firewall_rule")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Vultr
|
2
|
+
class ObjectStorageResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("object-storage", params: params)
|
5
|
+
Collection.from_response(response, key: "object_storages", type: ObjectStorage)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
ObjectStorage.new post_request("object-storage", body: attributes).body.dig("object_storage")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(object_storage_id:)
|
13
|
+
ObjectStorage.new get_request("object-storage/#{object_storage_id}").body.dig("object_storage")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(object_storage_id:, **attributes)
|
17
|
+
put_request("object-storage/#{object_storage_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(object_storage_id:)
|
21
|
+
delete_request("object-storage/#{object_storage_id}")
|
22
|
+
end
|
23
|
+
|
24
|
+
def regenerate_keys(object_storage_id:)
|
25
|
+
Object.new post_request("object-storage/#{object_storage_id}/regenerate-keys", body: {}).body
|
26
|
+
end
|
27
|
+
|
28
|
+
def list_clusters(**params)
|
29
|
+
response = get_request("object-storage/clusters", params: params)
|
30
|
+
Collection.from_response(response, key: "clusters", type: Object)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Vultr
|
2
|
+
class PlansResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("plans", params: params)
|
5
|
+
Collection.from_response(response, key: "plans", type: Plan)
|
6
|
+
end
|
7
|
+
|
8
|
+
def list_metal(**params)
|
9
|
+
response = get_request("plans-metal", params: params)
|
10
|
+
Collection.from_response(response, key: "plans_metal", type: Plan)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Vultr
|
2
|
+
class PrivateNetworksResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("private-networks", params: params)
|
5
|
+
Collection.from_response(response, key: "networks", type: PrivateNetwork)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
PrivateNetwork.new post_request("private-networks", body: attributes).body.dig("network")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(network_id:)
|
13
|
+
PrivateNetwork.new get_request("private-networks/#{network_id}").body.dig("network")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(network_id:, **attributes)
|
17
|
+
put_request("private-networks/#{network_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(network_id:)
|
21
|
+
delete_request("private-networks/#{network_id}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Vultr
|
2
|
+
class RegionsResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("regions", params: params)
|
5
|
+
Collection.from_response(response, key: "regions", type: Region)
|
6
|
+
end
|
7
|
+
|
8
|
+
def list_availability(region_id:)
|
9
|
+
Object.new get_request("regions/#{region_id}/availability").body
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Vultr
|
2
|
+
class ReservedIpsResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("reserved-ips", params: params)
|
5
|
+
Collection.from_response(response, key: "reserved_ips", type: ReservedIp)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
ReservedIp.new post_request("reserved-ips", body: attributes).body.dig("reserved_ip")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(reserved_ip:)
|
13
|
+
ReservedIp.new get_request("reserved-ips/#{reserved_ip}").body.dig("reserved_ip")
|
14
|
+
end
|
15
|
+
|
16
|
+
def delete(reserved_ip:)
|
17
|
+
delete_request("reserved-ips/#{reserved_ip}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def attach(reserved_ip:, instance_id:)
|
21
|
+
post_request("reserved-ips/#{reserved_ip}/attach", body: {instance_id: instance_id})
|
22
|
+
end
|
23
|
+
|
24
|
+
def detach(reserved_ip:)
|
25
|
+
post_request("reserved-ips/#{reserved_ip}/detach", body: {})
|
26
|
+
end
|
27
|
+
|
28
|
+
def convert(**attributes)
|
29
|
+
ReservedIp.new post_request("reserved-ips/convert", body: attributes).body.dig("reserved_ip")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Vultr
|
2
|
+
class SnapshotsResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("snapshots", params: params)
|
5
|
+
Collection.from_response(response, key: "snapshots", type: Snapshot)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
Snapshot.new post_request("snapshots", body: attributes).body.dig("snapshot")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(snapshot_id:)
|
13
|
+
Snapshot.new get_request("snapshots/#{snapshot_id}").body.dig("snapshot")
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_from_url(url)
|
17
|
+
Snapshot.new post_request("snapshots/create-from-url", body: {url: url}).body.dig("snapshot")
|
18
|
+
end
|
19
|
+
|
20
|
+
def update(snapshot_id:, **attributes)
|
21
|
+
put_request("snapshots/#{snapshot_id}", body: attributes)
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete(snapshot_id:)
|
25
|
+
delete_request("snapshots/#{snapshot_id}")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Vultr
|
2
|
+
class SshKeysResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("ssh-keys", params: params)
|
5
|
+
Collection.from_response(response, key: "ssh_keys", type: SshKey)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
SshKey.new post_request("ssh-keys", body: attributes).body.dig("ssh_key")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(ssh_key_id:)
|
13
|
+
SshKey.new get_request("ssh-keys/#{ssh_key_id}").body.dig("ssh_key")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(ssh_key_id:, **attributes)
|
17
|
+
patch_request("ssh-keys/#{ssh_key_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(ssh_key_id:)
|
21
|
+
delete_request("ssh-keys/#{ssh_key_id}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Vultr
|
2
|
+
class StartupScriptsResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("startup-scripts", params: params)
|
5
|
+
Collection.from_response(response, key: "startup_scripts", type: StartupScript)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
StartupScript.new post_request("startup-scripts", body: attributes).body.dig("startup_script")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(startup_script_id:)
|
13
|
+
StartupScript.new get_request("startup-scripts/#{startup_script_id}").body.dig("startup_script")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(startup_script_id:, **attributes)
|
17
|
+
patch_request("startup-scripts/#{startup_script_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(startup_script_id:)
|
21
|
+
delete_request("startup-scripts/#{startup_script_id}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Vultr
|
2
|
+
class UserResource < Resource
|
3
|
+
def list(**params)
|
4
|
+
response = get_request("users", params: params)
|
5
|
+
Collection.from_response(response, key: "users", type: User)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create(**attributes)
|
9
|
+
User.new post_request("users", body: attributes).body.dig("user")
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve(user_id:)
|
13
|
+
User.new get_request("users/#{user_id}").body.dig("user")
|
14
|
+
end
|
15
|
+
|
16
|
+
def update(user_id:, **attributes)
|
17
|
+
patch_request("users/#{user_id}", body: attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(user_id:)
|
21
|
+
delete_request("users/#{user_id}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|