vultr 0.4.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (233) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +32 -0
  3. data/CHANGELOG.md +4 -0
  4. data/Gemfile +5 -10
  5. data/README.md +306 -136
  6. data/Rakefile +10 -6
  7. data/bin/console +21 -0
  8. data/bin/setup +8 -0
  9. data/bin/test +6 -0
  10. data/lib/vultr/client.rb +111 -0
  11. data/lib/vultr/collection.rb +22 -0
  12. data/lib/vultr/error.rb +4 -0
  13. data/lib/vultr/object.rb +19 -0
  14. data/lib/vultr/objects/account.rb +4 -0
  15. data/lib/vultr/objects/application.rb +4 -0
  16. data/lib/vultr/objects/backup.rb +4 -0
  17. data/lib/vultr/objects/bare_metal.rb +4 -0
  18. data/lib/vultr/objects/block_storage.rb +4 -0
  19. data/lib/vultr/objects/domain.rb +4 -0
  20. data/lib/vultr/objects/firewall_group.rb +4 -0
  21. data/lib/vultr/objects/instance.rb +4 -0
  22. data/lib/vultr/objects/iso.rb +4 -0
  23. data/lib/vultr/objects/kubernetes_cluster.rb +4 -0
  24. data/lib/vultr/objects/load_balancer.rb +4 -0
  25. data/lib/vultr/objects/object_storage.rb +4 -0
  26. data/lib/vultr/objects/operating_system.rb +4 -0
  27. data/lib/vultr/objects/plan.rb +4 -0
  28. data/lib/vultr/objects/private_network.rb +4 -0
  29. data/lib/vultr/objects/region.rb +4 -0
  30. data/lib/vultr/objects/reserved_ip.rb +4 -0
  31. data/lib/vultr/objects/snapshot.rb +4 -0
  32. data/lib/vultr/objects/ssh_key.rb +4 -0
  33. data/lib/vultr/objects/startup_script.rb +4 -0
  34. data/lib/vultr/objects/user.rb +4 -0
  35. data/lib/vultr/resource.rb +52 -0
  36. data/lib/vultr/resources/account.rb +7 -0
  37. data/lib/vultr/resources/applications.rb +8 -0
  38. data/lib/vultr/resources/backups.rb +12 -0
  39. data/lib/vultr/resources/bare_metal.rb +79 -0
  40. data/lib/vultr/resources/block_storage.rb +32 -0
  41. data/lib/vultr/resources/dns.rb +58 -0
  42. data/lib/vultr/resources/firewall.rb +42 -0
  43. data/lib/vultr/resources/instances.rb +145 -0
  44. data/lib/vultr/resources/iso.rb +25 -0
  45. data/lib/vultr/resources/kubernetes.rb +61 -0
  46. data/lib/vultr/resources/load_balancers.rb +50 -0
  47. data/lib/vultr/resources/object_storage.rb +33 -0
  48. data/lib/vultr/resources/operating_systems.rb +8 -0
  49. data/lib/vultr/resources/plans.rb +13 -0
  50. data/lib/vultr/resources/private_networks.rb +24 -0
  51. data/lib/vultr/resources/regions.rb +12 -0
  52. data/lib/vultr/resources/reserved_ips.rb +32 -0
  53. data/lib/vultr/resources/snapshots.rb +28 -0
  54. data/lib/vultr/resources/ssh_keys.rb +24 -0
  55. data/lib/vultr/resources/startup_scripts.rb +24 -0
  56. data/lib/vultr/resources/users.rb +24 -0
  57. data/lib/vultr/version.rb +1 -8
  58. data/lib/vultr.rb +56 -887
  59. data/test/fixtures/account/info.json +11 -0
  60. data/test/fixtures/applications/list.json +29 -0
  61. data/test/fixtures/backups/list.json +18 -0
  62. data/test/fixtures/backups/retrieve.json +9 -0
  63. data/test/fixtures/bare_metals/bandwidth.json +12 -0
  64. data/test/fixtures/bare_metals/create.json +26 -0
  65. data/test/fixtures/bare_metals/list.json +36 -0
  66. data/test/fixtures/bare_metals/list_ipv4.json +18 -0
  67. data/test/fixtures/bare_metals/list_ipv6.json +17 -0
  68. data/test/fixtures/bare_metals/reinstall.json +25 -0
  69. data/test/fixtures/bare_metals/retrieve.json +26 -0
  70. data/test/fixtures/bare_metals/update.json +26 -0
  71. data/test/fixtures/bare_metals/upgrades.json +47 -0
  72. data/test/fixtures/bare_metals/user_data.json +5 -0
  73. data/test/fixtures/bare_metals/vnc.json +5 -0
  74. data/test/fixtures/block_storage/attach.json +4 -0
  75. data/test/fixtures/block_storage/create.json +13 -0
  76. data/test/fixtures/block_storage/detach.json +4 -0
  77. data/test/fixtures/block_storage/list.json +22 -0
  78. data/test/fixtures/block_storage/retrieve.json +13 -0
  79. data/test/fixtures/domains/create.json +6 -0
  80. data/test/fixtures/domains/dnssec.json +7 -0
  81. data/test/fixtures/domains/list.json +15 -0
  82. data/test/fixtures/domains/record.json +10 -0
  83. data/test/fixtures/domains/records.json +19 -0
  84. data/test/fixtures/domains/retrieve.json +6 -0
  85. data/test/fixtures/domains/soa.json +6 -0
  86. data/test/fixtures/firewall/create.json +11 -0
  87. data/test/fixtures/firewall/create_rule.json +9 -0
  88. data/test/fixtures/firewall/delete.json +1 -0
  89. data/test/fixtures/firewall/delete_rule.json +1 -0
  90. data/test/fixtures/firewall/list.json +20 -0
  91. data/test/fixtures/firewall/list_rules.json +22 -0
  92. data/test/fixtures/firewall/retrieve.json +11 -0
  93. data/test/fixtures/firewall/retrieve_rule.json +13 -0
  94. data/test/fixtures/firewall/update.json +1 -0
  95. data/test/fixtures/instances/attach_iso.json +6 -0
  96. data/test/fixtures/instances/attach_private_network.json +1 -0
  97. data/test/fixtures/instances/backup_schedule.json +10 -0
  98. data/test/fixtures/instances/bandwidth.json +12 -0
  99. data/test/fixtures/instances/create.json +36 -0
  100. data/test/fixtures/instances/create_ipv4_reverse.json +1 -0
  101. data/test/fixtures/instances/create_ipv6_reverse.json +1 -0
  102. data/test/fixtures/instances/delete.json +1 -0
  103. data/test/fixtures/instances/delete_ipv4.json +1 -0
  104. data/test/fixtures/instances/delete_ipv6.json +1 -0
  105. data/test/fixtures/instances/detach_iso.json +5 -0
  106. data/test/fixtures/instances/detach_private_network.json +1 -0
  107. data/test/fixtures/instances/halt.json +1 -0
  108. data/test/fixtures/instances/halt_instances.json +1 -0
  109. data/test/fixtures/instances/ipv4.json +9 -0
  110. data/test/fixtures/instances/ipv6_reverse.json +15 -0
  111. data/test/fixtures/instances/iso.json +6 -0
  112. data/test/fixtures/instances/list.json +44 -0
  113. data/test/fixtures/instances/list_ipv4.json +32 -0
  114. data/test/fixtures/instances/list_ipv6.json +17 -0
  115. data/test/fixtures/instances/list_private_networks.json +16 -0
  116. data/test/fixtures/instances/neighbors.json +6 -0
  117. data/test/fixtures/instances/reboot.json +1 -0
  118. data/test/fixtures/instances/reboot_instances.json +1 -0
  119. data/test/fixtures/instances/reinstall.json +35 -0
  120. data/test/fixtures/instances/restore.json +7 -0
  121. data/test/fixtures/instances/retrieve.json +35 -0
  122. data/test/fixtures/instances/set_backup_schedule.json +1 -0
  123. data/test/fixtures/instances/set_default_reverse_dns_entry.json +1 -0
  124. data/test/fixtures/instances/start.json +1 -0
  125. data/test/fixtures/instances/start_instances.json +1 -0
  126. data/test/fixtures/instances/update.json +1 -0
  127. data/test/fixtures/instances/upgrades.json +55 -0
  128. data/test/fixtures/instances/user_data.json +5 -0
  129. data/test/fixtures/isos/create.json +8 -0
  130. data/test/fixtures/isos/list.json +20 -0
  131. data/test/fixtures/isos/list_public.json +17 -0
  132. data/test/fixtures/isos/retrieve.json +11 -0
  133. data/test/fixtures/kubernetes/config.json +3 -0
  134. data/test/fixtures/kubernetes/create.json +39 -0
  135. data/test/fixtures/kubernetes/create_node_pool.json +25 -0
  136. data/test/fixtures/kubernetes/list.json +85 -0
  137. data/test/fixtures/kubernetes/list_node_pools.json +56 -0
  138. data/test/fixtures/kubernetes/list_resources.json +26 -0
  139. data/test/fixtures/kubernetes/retrieve.json +39 -0
  140. data/test/fixtures/kubernetes/retrieve_node_pool.json +25 -0
  141. data/test/fixtures/kubernetes/update_node_pool.json +19 -0
  142. data/test/fixtures/load_balancers/create.json +48 -0
  143. data/test/fixtures/load_balancers/create_forwarding_rule.json +1 -0
  144. data/test/fixtures/load_balancers/delete.json +1 -0
  145. data/test/fixtures/load_balancers/delete_forwarding_rule.json +1 -0
  146. data/test/fixtures/load_balancers/list.json +57 -0
  147. data/test/fixtures/load_balancers/list_firewall_rules.json +17 -0
  148. data/test/fixtures/load_balancers/list_forwarding_rules.json +18 -0
  149. data/test/fixtures/load_balancers/retrieve.json +48 -0
  150. data/test/fixtures/load_balancers/retrieve_firewall_rule.json +8 -0
  151. data/test/fixtures/load_balancers/retrieve_forwarding_rule.json +9 -0
  152. data/test/fixtures/load_balancers/update.json +1 -0
  153. data/test/fixtures/object_storage/create.json +14 -0
  154. data/test/fixtures/object_storage/delete.json +1 -0
  155. data/test/fixtures/object_storage/list.json +22 -0
  156. data/test/fixtures/object_storage/list_clusters.json +17 -0
  157. data/test/fixtures/object_storage/regenerate_keys.json +7 -0
  158. data/test/fixtures/object_storage/retrieve.json +13 -0
  159. data/test/fixtures/object_storage/update.json +1 -0
  160. data/test/fixtures/operating_systems/list.json +17 -0
  161. data/test/fixtures/plans/list.json +22 -0
  162. data/test/fixtures/plans/list_metal.json +24 -0
  163. data/test/fixtures/private_networks/create.json +10 -0
  164. data/test/fixtures/private_networks/delete.json +1 -0
  165. data/test/fixtures/private_networks/list.json +19 -0
  166. data/test/fixtures/private_networks/retrieve.json +10 -0
  167. data/test/fixtures/private_networks/update.json +1 -0
  168. data/test/fixtures/regions/list.json +20 -0
  169. data/test/fixtures/regions/list_availability.json +24 -0
  170. data/test/fixtures/reserved_ips/attach.json +1 -0
  171. data/test/fixtures/reserved_ips/convert.json +11 -0
  172. data/test/fixtures/reserved_ips/create.json +11 -0
  173. data/test/fixtures/reserved_ips/delete.json +1 -0
  174. data/test/fixtures/reserved_ips/detach.json +1 -0
  175. data/test/fixtures/reserved_ips/list.json +29 -0
  176. data/test/fixtures/reserved_ips/retrieve.json +11 -0
  177. data/test/fixtures/snapshots/create.json +11 -0
  178. data/test/fixtures/snapshots/create_from_url.json +11 -0
  179. data/test/fixtures/snapshots/delete.json +1 -0
  180. data/test/fixtures/snapshots/list.json +20 -0
  181. data/test/fixtures/snapshots/retrieve.json +11 -0
  182. data/test/fixtures/snapshots/update.json +1 -0
  183. data/test/fixtures/ssh_keys/create.json +8 -0
  184. data/test/fixtures/ssh_keys/delete.json +1 -0
  185. data/test/fixtures/ssh_keys/list.json +17 -0
  186. data/test/fixtures/ssh_keys/retrieve.json +8 -0
  187. data/test/fixtures/ssh_keys/update.json +1 -0
  188. data/test/fixtures/startup_scripts/create.json +10 -0
  189. data/test/fixtures/startup_scripts/delete.json +1 -0
  190. data/test/fixtures/startup_scripts/list.json +18 -0
  191. data/test/fixtures/startup_scripts/retrieve.json +10 -0
  192. data/test/fixtures/startup_scripts/update.json +1 -0
  193. data/test/fixtures/users/create.json +9 -0
  194. data/test/fixtures/users/delete.json +1 -0
  195. data/test/fixtures/users/list.json +29 -0
  196. data/test/fixtures/users/retrieve.json +20 -0
  197. data/test/fixtures/users/update.json +1 -0
  198. data/test/test_helper.rb +18 -5
  199. data/test/vultr/client_test.rb +8 -0
  200. data/test/vultr/object_test.rb +21 -0
  201. data/test/vultr/resources/account_test.rb +12 -0
  202. data/test/vultr/resources/applications_test.rb +15 -0
  203. data/test/vultr/resources/backups_test.rb +24 -0
  204. data/test/vultr/resources/bare_metal_test.rb +267 -0
  205. data/test/vultr/resources/block_storage_test.rb +85 -0
  206. data/test/vultr/resources/dns_test.rb +134 -0
  207. data/test/vultr/resources/firewall_test.rb +88 -0
  208. data/test/vultr/resources/instances_test.rb +325 -0
  209. data/test/vultr/resources/iso_test.rb +58 -0
  210. data/test/vultr/resources/kubernetes_test.rb +185 -0
  211. data/test/vultr/resources/load_balancers_test.rb +110 -0
  212. data/test/vultr/resources/object_storage_test.rb +71 -0
  213. data/test/vultr/resources/operating_systems_test.rb +15 -0
  214. data/test/vultr/resources/plans_test.rb +25 -0
  215. data/test/vultr/resources/private_networks_test.rb +50 -0
  216. data/test/vultr/resources/regions_test.rb +26 -0
  217. data/test/vultr/resources/reserved_ips_test.rb +67 -0
  218. data/test/vultr/resources/snapshots_test.rb +60 -0
  219. data/test/vultr/resources/ssh_keys_test.rb +50 -0
  220. data/test/vultr/resources/startup_scripts_test.rb +50 -0
  221. data/test/vultr/resources/users_test.rb +50 -0
  222. data/vultr.gemspec +17 -17
  223. metadata +394 -48
  224. data/test/vultr/vultr_account_test.rb +0 -29
  225. data/test/vultr/vultr_app_test.rb +0 -26
  226. data/test/vultr/vultr_backup_test.rb +0 -22
  227. data/test/vultr/vultr_iso_test.rb +0 -27
  228. data/test/vultr/vultr_os_test.rb +0 -21
  229. data/test/vultr/vultr_plan_test.rb +0 -22
  230. data/test/vultr/vultr_region_test.rb +0 -33
  231. data/test/vultr/vultr_snapshot_test.rb +0 -30
  232. data/test/vultr/vultr_sshkey_test.rb +0 -50
  233. data/test/vultr/vultr_startupscript_test.rb +0 -53
@@ -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
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class BlockStorageResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("blocks", response: stub_response(fixture: "block_storage/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ blocks = client.block_storage.list
10
+
11
+ assert_equal Vultr::Collection, blocks.class
12
+ assert_equal Vultr::BlockStorage, blocks.data.first.class
13
+ assert_equal 1, blocks.total
14
+ assert_equal "next", blocks.next_cursor
15
+ assert_equal "prev", blocks.prev_cursor
16
+ end
17
+
18
+ def test_create
19
+ body = {region: "ewr", size_gb: 50, label: "Example Block Storage"}
20
+ stub = stub_request("blocks", method: :post, body: body, response: stub_response(fixture: "block_storage/create", status: 202))
21
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
22
+ blocks = client.block_storage.create(**body)
23
+
24
+ assert_equal blocks.id, "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
25
+ assert_equal blocks.date_created, Time.parse("2020-10-10T01:56:20+00:00")
26
+ assert_equal blocks.cost, 5
27
+ assert_equal blocks.status, "active"
28
+ assert_equal blocks.size_gb, 50
29
+ assert_equal blocks.region, "ewr"
30
+ assert_equal blocks.attached_to_instance, "742c9913-d088-4d67-bc61-5a10e922fbd1"
31
+ assert_equal blocks.label, "Example Block Storage"
32
+ assert_equal blocks.mount_id, "ewr-example112233"
33
+ end
34
+
35
+ def test_retrieve
36
+ block_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
37
+ body = {region: "ewr", size_gb: 50, label: "Example Block Storage"}
38
+ stub = stub_request("blocks/#{block_id}", body: body, response: stub_response(fixture: "block_storage/retrieve"))
39
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
40
+ blocks = client.block_storage.retrieve(block_id: block_id)
41
+
42
+ assert_equal blocks.id, "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
43
+ assert_equal blocks.date_created, Time.parse("2020-10-10T01:56:20+00:00")
44
+ assert_equal blocks.cost, 5
45
+ assert_equal blocks.status, "active"
46
+ assert_equal blocks.size_gb, 50
47
+ assert_equal blocks.region, "ewr"
48
+ assert_equal blocks.attached_to_instance, "742c9913-d088-4d67-bc61-5a10e922fbd1"
49
+ assert_equal blocks.label, "Example Block Storage"
50
+ assert_equal blocks.mount_id, "ewr-example112233"
51
+ end
52
+
53
+ def test_update
54
+ block_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
55
+ body = {size_gb: 50, label: "Example Block Storage"}
56
+ stub = stub_request("blocks/#{block_id}", method: :patch, body: body, response: {})
57
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
58
+
59
+ assert client.block_storage.update(block_id: block_id, **body)
60
+ end
61
+
62
+ def test_delete
63
+ block_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
64
+ stub = stub_request("blocks/#{block_id}", method: :delete, response: {})
65
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
66
+
67
+ assert client.block_storage.delete(block_id: block_id)
68
+ end
69
+
70
+ def test_attach
71
+ block_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
72
+ stub = stub_request("blocks/#{block_id}/attach", method: :post, response: stub_response(fixture: "block_storage/attach"))
73
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
74
+
75
+ assert client.block_storage.attach(block_id: block_id)
76
+ end
77
+
78
+ def test_detach
79
+ block_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
80
+ stub = stub_request("blocks/#{block_id}/detach", method: :post, response: stub_response(fixture: "block_storage/detach"))
81
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
82
+
83
+ assert client.block_storage.detach(block_id: block_id)
84
+ end
85
+ end
@@ -0,0 +1,134 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class DnsResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("domains", response: stub_response(fixture: "domains/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ dns = client.dns.list
10
+
11
+ assert_equal Vultr::Collection, dns.class
12
+ assert_equal Vultr::Domain, dns.data.first.class
13
+ assert_equal 1, dns.total
14
+ assert_equal "next", dns.next_cursor
15
+ assert_equal "prev", dns.prev_cursor
16
+ end
17
+
18
+ def test_create
19
+ body = {domain: "example.com", ip: "192.0.2.123", dns_sec: :enabled}
20
+ stub = stub_request("domains", method: :post, body: body, response: stub_response(fixture: "domains/create", status: 201))
21
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
22
+ dns = client.dns.create(**body)
23
+
24
+ assert_equal "example.com", dns.domain
25
+ assert_equal Time.parse("2020-10-10T01:56:20+00:00"), dns.date_created
26
+ end
27
+
28
+ def test_retrieve
29
+ dns_domain = "example.com"
30
+ stub = stub_request("domains/#{dns_domain}", response: stub_response(fixture: "domains/retrieve"))
31
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
32
+ dns = client.dns.retrieve(dns_domain: dns_domain)
33
+
34
+ assert_equal "example.com", dns.domain
35
+ assert_equal Time.parse("2020-10-10T01:56:20+00:00"), dns.date_created
36
+ end
37
+
38
+ def test_update
39
+ dns_domain = "example.com"
40
+ body = {dns_sec: "enabled"}
41
+ stub = stub_request("domains/#{dns_domain}", method: :put, body: body, response: {})
42
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
43
+
44
+ assert client.dns.update(dns_domain: dns_domain, **body)
45
+ end
46
+
47
+ def test_delete
48
+ dns_domain = "example.com"
49
+ stub = stub_request("domains/#{dns_domain}", method: :delete, response: {})
50
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
51
+
52
+ assert client.dns.delete(dns_domain: dns_domain)
53
+ end
54
+
55
+ def test_soa
56
+ dns_domain = "example.com"
57
+ stub = stub_request("domains/#{dns_domain}/soa", response: stub_response(fixture: "domains/soa"))
58
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
59
+ soa = client.dns.soa(dns_domain: dns_domain)
60
+
61
+ assert_equal "ns1.vultr.com", soa.nsprimary
62
+ assert_equal "admin@example.com", soa.email
63
+ end
64
+
65
+ def test_update_soa
66
+ dns_domain = "example.com"
67
+ body = {nsprimary: "ns1.vultr.com", email: "admin@example.com"}
68
+ stub = stub_request("domains/#{dns_domain}/soa", method: :patch, body: body, response: {})
69
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
70
+
71
+ assert client.dns.update_soa(dns_domain: dns_domain, **body)
72
+ end
73
+
74
+ def test_dnssec
75
+ dns_domain = "example.com"
76
+ stub = stub_request("domains/#{dns_domain}/dnssec", response: stub_response(fixture: "domains/dnssec"))
77
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
78
+ assert client.dns.dnssec(dns_domain: dns_domain)
79
+ end
80
+
81
+ def test_list_records
82
+ dns_domain = "example.com"
83
+ stub = stub_request("domains/#{dns_domain}/records", response: stub_response(fixture: "domains/records"))
84
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
85
+ dns = client.dns.list_records(dns_domain: dns_domain)
86
+
87
+ assert_equal Vultr::Collection, dns.class
88
+ assert_equal Vultr::Object, dns.data.first.class
89
+ end
90
+
91
+ def test_create_record
92
+ dns_domain = "example.com"
93
+ body = {name: "www", type: "A", data: "192.0.2.123", ttl: 300, priority: 0}
94
+ stub = stub_request("domains/#{dns_domain}/records", method: :post, body: body, response: stub_response(fixture: "domains/record", status: 201))
95
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
96
+ dns = client.dns.create_record(dns_domain: dns_domain, **body)
97
+
98
+ assert dns.id
99
+ assert "www", dns.name
100
+ assert "A", dns.type
101
+ assert "192.0.2.123", dns.data
102
+ assert 300, dns.ttl
103
+ assert 0, dns.priority
104
+ end
105
+
106
+ def test_retrieve_record
107
+ dns_domain = "example.com"
108
+ record_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
109
+ stub = stub_request("domains/#{dns_domain}/records/#{record_id}", response: stub_response(fixture: "domains/record"))
110
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
111
+ dns = client.dns.retrieve_record(dns_domain: dns_domain, record_id: record_id)
112
+
113
+ assert_equal record_id, dns.id
114
+ end
115
+
116
+ def test_update_record
117
+ dns_domain = "example.com"
118
+ record_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
119
+ body = {name: "CNAME", data: "foo.example.com", ttl: 300, priority: 0}
120
+ stub = stub_request("domains/#{dns_domain}/records/#{record_id}", method: :patch, body: body, response: {})
121
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
122
+
123
+ assert client.dns.update_record(dns_domain: dns_domain, record_id: record_id, **body)
124
+ end
125
+
126
+ def test_delete_record
127
+ dns_domain = "example.com"
128
+ record_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
129
+ stub = stub_request("domains/#{dns_domain}/records/#{record_id}", method: :delete, response: {})
130
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
131
+
132
+ assert client.dns.delete_record(dns_domain: dns_domain, record_id: record_id)
133
+ end
134
+ end