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,185 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class KubernetesResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("kubernetes/clusters", response: stub_response(fixture: "kubernetes/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ kubernetes = client.kubernetes.list
10
+
11
+ assert_equal Vultr::Collection, kubernetes.class
12
+ assert_equal Vultr::KubernetesCluster, kubernetes.data.first.class
13
+ assert_equal 2, kubernetes.total
14
+ assert_equal "next", kubernetes.next_cursor
15
+ assert_equal "prev", kubernetes.prev_cursor
16
+ end
17
+
18
+ def test_create
19
+ body = {label: "vke", region: "lax", version: "v1.20.0+1", node_pools: [{node_quantity: 2, label: "my-label", plan: "vc2-1c-2gb"}]}
20
+ stub = stub_request("kubernetes/clusters", method: :post, body: body, response: stub_response(fixture: "kubernetes/create", status: 201))
21
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
22
+ kubernetes = client.kubernetes.create(**body)
23
+
24
+ assert_equal kubernetes.id, "455dcd32-e621-48ee-a10e-0cb5f754e13e"
25
+ assert_equal kubernetes.label, "vke"
26
+ assert_equal kubernetes.date_created, Time.parse("2021-07-07T22:57:01+00:00")
27
+ assert_equal kubernetes.cluster_subnet, "10.244.0.0/16"
28
+ assert_equal kubernetes.service_subnet, "10.96.0.0/12"
29
+ assert_equal kubernetes.ip, "0.0.0.0"
30
+ assert_equal kubernetes.endpoint, "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com"
31
+ assert_equal kubernetes.version, "v1.20.0+1"
32
+ assert_equal kubernetes.region, "lax"
33
+ assert_equal kubernetes.status, "pending"
34
+ assert_equal kubernetes.node_pools.class, Array
35
+ end
36
+
37
+ def test_retrieve
38
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
39
+ stub = stub_request("kubernetes/clusters/#{vke_id}", response: stub_response(fixture: "kubernetes/retrieve"))
40
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
41
+ vke_cluster = client.kubernetes.retrieve(vke_id: vke_id)
42
+
43
+ assert_equal vke_cluster.id, "455dcd32-e621-48ee-a10e-0cb5f754e13e"
44
+ assert_equal vke_cluster.label, "vke"
45
+ assert_equal vke_cluster.date_created, Time.parse("2021-07-07T22:57:01+00:00")
46
+ assert_equal vke_cluster.cluster_subnet, "10.244.0.0/16"
47
+ assert_equal vke_cluster.service_subnet, "10.96.0.0/12"
48
+ assert_equal vke_cluster.ip, "207.246.109.187"
49
+ assert_equal vke_cluster.endpoint, "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com"
50
+ assert_equal vke_cluster.version, "v1.20.0+1"
51
+ assert_equal vke_cluster.region, "lax"
52
+ assert_equal vke_cluster.status, "active"
53
+ assert_equal vke_cluster.node_pools.class, Array
54
+ end
55
+
56
+ def test_update
57
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
58
+ body = {label: "My New Label"}
59
+ stub = stub_request("kubernetes/clusters/#{vke_id}", method: :put, body: body, response: {})
60
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
61
+ assert client.kubernetes.update(vke_id: vke_id, **body)
62
+ end
63
+
64
+ def test_delete
65
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
66
+ stub = stub_request("kubernetes/clusters/#{vke_id}", method: :delete, response: {})
67
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
68
+
69
+ assert client.kubernetes.delete(vke_id: vke_id)
70
+ end
71
+
72
+ def test_config
73
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
74
+ stub = stub_request("kubernetes/clusters/#{vke_id}/config", response: stub_response(fixture: "kubernetes/config"))
75
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
76
+ vke_cluster = client.kubernetes.config(vke_id: vke_id)
77
+
78
+ assert_equal vke_cluster.kube_config, "kube_config"
79
+ end
80
+
81
+ def test_list_resources
82
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
83
+ stub = stub_request("kubernetes/clusters/#{vke_id}/resources", response: stub_response(fixture: "kubernetes/list_resources"))
84
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
85
+ vke_cluster = client.kubernetes.list_resources(vke_id: vke_id)
86
+
87
+ assert_equal vke_cluster.block_storage.class, Array
88
+ assert_equal vke_cluster.load_balancer.class, Array
89
+ end
90
+
91
+ def test_list_node_pools
92
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
93
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools", response: stub_response(fixture: "kubernetes/list_node_pools"))
94
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
95
+ node_pools = client.kubernetes.list_node_pools(vke_id: vke_id)
96
+
97
+ assert_equal Vultr::Collection, node_pools.class
98
+ assert_equal Vultr::Object, node_pools.data.first.class
99
+ assert_equal 2, node_pools.total
100
+ assert_equal "next", node_pools.next_cursor
101
+ assert_equal "prev", node_pools.prev_cursor
102
+ end
103
+
104
+ def test_retrieve_node_pool
105
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
106
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
107
+
108
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}", response: stub_response(fixture: "kubernetes/retrieve_node_pool"))
109
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
110
+ node_pool = client.kubernetes.retrieve_node_pool(vke_id: vke_id, nodepool_id: nodepool_id)
111
+
112
+ assert_equal node_pool.id, "e97bdee9-2781-4f31-be03-60fc75f399ae"
113
+ assert_equal node_pool.date_created, Time.parse("2021-07-07T23:27:08+00:00")
114
+ assert_equal node_pool.date_updated, Time.parse("2021-07-08T12:12:44+00:00")
115
+ assert_equal node_pool.label, "my-label-48770703"
116
+ assert_equal node_pool.plan_id, "vc2-1c-2gb"
117
+ assert_equal node_pool.status, "active"
118
+ assert_equal node_pool.count, 2
119
+ assert_equal node_pool.nodes.class, Array
120
+ end
121
+
122
+ def test_create_node_pool
123
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
124
+ body = {node_quantity: 2, label: "nodepool", paln: "vc2-lc-2gb"}
125
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools", method: :post, body: body, response: stub_response(fixture: "kubernetes/create_node_pool"))
126
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
127
+ node_pool = client.kubernetes.create_node_pool(vke_id: vke_id, **body)
128
+
129
+ assert_equal node_pool.id, "4130764b-5276-4552-546f-32513239732b"
130
+ assert_equal node_pool.date_created, Time.parse("2021-07-07T23:29:18+00:00")
131
+ assert_equal node_pool.date_updated, Time.parse("2021-07-08T23:29:18+00:00")
132
+ assert_equal node_pool.label, "nodepool-48770716"
133
+ assert_equal node_pool.plan_id, "vc2-1c-2gb"
134
+ assert_equal node_pool.status, "pending"
135
+ assert_equal node_pool.count, 2
136
+ assert_equal node_pool.nodes.class, Array
137
+ end
138
+
139
+ def test_update_node_pool
140
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
141
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
142
+ body = {node_quantity: 1}
143
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}", method: :patch, body: body, response: stub_response(fixture: "kubernetes/update_node_pool"))
144
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
145
+ node_pool = client.kubernetes.update_node_pool(vke_id: vke_id, nodepool_id: nodepool_id, **body)
146
+
147
+ assert_equal node_pool.id, "e97bdee9-2781-4f31-be03-60fc75f399ae"
148
+ assert_equal node_pool.date_created, Time.parse("2021-07-07T23:27:08+00:00")
149
+ assert_equal node_pool.date_updated, Time.parse("2021-07-08T12:12:44+00:00")
150
+ assert_equal node_pool.label, "my-label-48770703"
151
+ assert_equal node_pool.plan_id, "vc2-1c-2gb"
152
+ assert_equal node_pool.status, "active"
153
+ assert_equal node_pool.count, 1
154
+ assert_equal node_pool.nodes.class, Array
155
+ end
156
+
157
+ def test_delete_node_pool
158
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
159
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
160
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}", method: :delete, response: {})
161
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
162
+
163
+ assert client.kubernetes.delete_node_pool(vke_id: vke_id, nodepool_id: nodepool_id)
164
+ end
165
+
166
+ def test_delete_node_pool_instance
167
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
168
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
169
+ node_id = "ab809b79-1358-4c59-8c8e-b73add699bf9"
170
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}/nodes/#{node_id}", method: :delete, response: {})
171
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
172
+
173
+ assert client.kubernetes.delete_node_pool_instance(vke_id: vke_id, nodepool_id: nodepool_id, node_id: node_id)
174
+ end
175
+
176
+ def test_recycle_node_pool_instance
177
+ vke_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
178
+ nodepool_id = "e97bdee9-2781-4f31-be03-60fc75f399ae"
179
+ node_id = "ab809b79-1358-4c59-8c8e-b73add699bf9"
180
+ stub = stub_request("kubernetes/clusters/#{vke_id}/node-pools/#{nodepool_id}/nodes/#{node_id}/recycle", method: :post, response: {})
181
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
182
+
183
+ assert client.kubernetes.recycle_node_pool_instance(vke_id: vke_id, nodepool_id: nodepool_id, node_id: node_id)
184
+ end
185
+ end
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class LoadBalancersResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("load-balancers", response: stub_response(fixture: "load_balancers/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ load_balancers = client.load_balancers.list
10
+
11
+ assert_equal Vultr::Collection, load_balancers.class
12
+ assert_equal Vultr::LoadBalancer, load_balancers.data.first.class
13
+ assert_equal 1, load_balancers.total
14
+ end
15
+
16
+ def test_create
17
+ body = {region: "ewr", balancing_algorithm: "roundrobin", label: "Example Load Balancer"}
18
+ stub = stub_request("load-balancers", method: :post, body: body, response: stub_response(fixture: "load_balancers/create"))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ load_balancer = client.load_balancers.create(**body)
21
+
22
+ assert_equal Vultr::LoadBalancer, load_balancer.class
23
+ assert_equal "Example Load Balancer", load_balancer.label
24
+ end
25
+
26
+ def test_retrieve
27
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
28
+ stub = stub_request("load-balancers/#{load_balancer_id}", response: stub_response(fixture: "load_balancers/retrieve"))
29
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
30
+ load_balancer = client.load_balancers.retrieve(load_balancer_id: load_balancer_id)
31
+
32
+ assert_equal Vultr::LoadBalancer, load_balancer.class
33
+ assert_equal "Example Load Balancer", load_balancer.label
34
+ end
35
+
36
+ def test_update
37
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
38
+ body = {balancing_algorithm: "Changed"}
39
+ stub = stub_request("load-balancers/#{load_balancer_id}", method: :patch, body: body, response: stub_response(fixture: "load_balancers/update"))
40
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
41
+ assert client.load_balancers.update(load_balancer_id: load_balancer_id, **body)
42
+ end
43
+
44
+ def test_delete
45
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
46
+ stub = stub_request("load-balancers/#{load_balancer_id}", method: :delete, response: stub_response(fixture: "load_balancers/delete"))
47
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
48
+ assert client.load_balancers.delete(load_balancer_id: load_balancer_id)
49
+ end
50
+
51
+ def test_list_forwarding_rules
52
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
53
+ stub = stub_request("load-balancers/#{load_balancer_id}/forwarding-rules", response: stub_response(fixture: "load_balancers/list_forwarding_rules"))
54
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
55
+ forwarding_rules = client.load_balancers.list_forwarding_rules(load_balancer_id: load_balancer_id)
56
+
57
+ assert Vultr::Collection, forwarding_rules.class
58
+ assert Vultr::Object, forwarding_rules.data.first.class
59
+ assert 1, forwarding_rules.total
60
+ end
61
+
62
+ def test_create_forwarding_rule
63
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
64
+ body = {frontend_protocol: "http", frontend_port: 8080, backend_protocol: "http", backend_port: 80}
65
+ stub = stub_request("load-balancers/#{load_balancer_id}/forwarding-rules", method: :post, body: body, response: stub_response(fixture: "load_balancers/create_forwarding_rule"))
66
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
67
+ assert client.load_balancers.create_forwarding_rule(load_balancer_id: load_balancer_id, **body)
68
+ end
69
+
70
+ def test_retrieve_forwarding_rule
71
+ load_balancer_id = "load-balancer-id"
72
+ forwarding_rule_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
73
+ stub = stub_request("load-balancers/#{load_balancer_id}/forwarding-rules/#{forwarding_rule_id}", response: stub_response(fixture: "load_balancers/retrieve_forwarding_rule"))
74
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
75
+ forwarding_rule = client.load_balancers.retrieve_forwarding_rule(load_balancer_id: load_balancer_id, forwarding_rule_id: forwarding_rule_id)
76
+
77
+ assert Vultr::Object, forwarding_rule.class
78
+ assert "http", forwarding_rule.frontend_protocol
79
+ end
80
+
81
+ def test_delete_forwarding_rule
82
+ load_balancer_id = "load-balancer-id"
83
+ forwarding_rule_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
84
+ stub = stub_request("load-balancers/#{load_balancer_id}/forwarding-rules/#{forwarding_rule_id}", method: :delete, response: stub_response(fixture: "load_balancers/delete_forwarding_rule"))
85
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
86
+ assert client.load_balancers.delete_forwarding_rule(load_balancer_id: load_balancer_id, forwarding_rule_id: forwarding_rule_id)
87
+ end
88
+
89
+ def test_list_firewall_rules
90
+ load_balancer_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
91
+ stub = stub_request("load-balancers/#{load_balancer_id}/firewall-rules", response: stub_response(fixture: "load_balancers/list_firewall_rules"))
92
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
93
+ firewall_rules = client.load_balancers.list_firewall_rules(load_balancer_id: load_balancer_id)
94
+
95
+ assert Vultr::Collection, firewall_rules.class
96
+ assert Vultr::Object, firewall_rules.data.first.class
97
+ assert 1, firewall_rules.total
98
+ end
99
+
100
+ def test_retrieve_firewall_rule
101
+ load_balancer_id = "load-balancer-id"
102
+ firewall_rule_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
103
+ stub = stub_request("load-balancers/#{load_balancer_id}/firewall-rules/#{firewall_rule_id}", response: stub_response(fixture: "load_balancers/retrieve_firewall_rule"))
104
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
105
+ firewall_rule = client.load_balancers.retrieve_firewall_rule(load_balancer_id: load_balancer_id, firewall_rule_id: firewall_rule_id)
106
+
107
+ assert Vultr::Object, firewall_rule
108
+ assert 80, firewall_rule.port
109
+ end
110
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class ObjectStorageResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("object-storage", response: stub_response(fixture: "object_storage/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ object_storage = client.object_storage.list
10
+
11
+ assert_equal Vultr::Collection, object_storage.class
12
+ assert_equal Vultr::ObjectStorage, object_storage.data.first.class
13
+ assert_equal 1, object_storage.total
14
+ end
15
+
16
+ def test_create
17
+ body = {label: "Example Object Storage", cluster_id: 2}
18
+ stub = stub_request("object-storage", method: :post, body: body, response: stub_response(fixture: "object_storage/create"))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ object_storage = client.object_storage.create(**body)
21
+
22
+ assert_equal Vultr::ObjectStorage, object_storage.class
23
+ assert_equal "Example Object Storage", object_storage.label
24
+ end
25
+
26
+ def test_retrieve
27
+ object_storage_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
28
+ stub = stub_request("object-storage/#{object_storage_id}", response: stub_response(fixture: "object_storage/retrieve"))
29
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
30
+ object_storage = client.object_storage.retrieve(object_storage_id: object_storage_id)
31
+
32
+ assert_equal Vultr::ObjectStorage, object_storage.class
33
+ assert_equal "Example Object Storage", object_storage.label
34
+ end
35
+
36
+ def test_update
37
+ object_storage_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
38
+ body = {label: "Updated Object Storage Label"}
39
+ stub = stub_request("object-storage/#{object_storage_id}", method: :put, body: body, response: stub_response(fixture: "object_storage/create"))
40
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
41
+ assert client.object_storage.update(object_storage_id: object_storage_id, **body)
42
+ end
43
+
44
+ def test_delete
45
+ object_storage_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
46
+ stub = stub_request("object-storage/#{object_storage_id}", method: :delete, response: stub_response(fixture: "object_storage/delete"))
47
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
48
+ assert client.object_storage.delete(object_storage_id: object_storage_id)
49
+ end
50
+
51
+ def test_regenerate_keys
52
+ object_storage_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
53
+ stub = stub_request("object-storage/#{object_storage_id}/regenerate-keys", method: :post, response: stub_response(fixture: "object_storage/regenerate_keys", status: 201))
54
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
55
+ object_storage_keys = client.object_storage.regenerate_keys(object_storage_id: object_storage_id)
56
+
57
+ assert_equal "ewr1.vultrobjects.com", object_storage_keys.dig("s3_credentials", "s3_hostname")
58
+ assert_equal "00example11223344", object_storage_keys.dig("s3_credentials", "s3_access_key")
59
+ assert_equal "00example1122334455667788990011", object_storage_keys.dig("s3_credentials", "s3_secret_key")
60
+ end
61
+
62
+ def test_list_clusters
63
+ stub = stub_request("object-storage/clusters", response: stub_response(fixture: "object_storage/list_clusters"))
64
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
65
+ clusters = client.object_storage.list_clusters
66
+
67
+ assert_equal Vultr::Collection, clusters.class
68
+ assert_equal Vultr::Object, clusters.data.first.class
69
+ assert_equal 1, clusters.total
70
+ end
71
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class OperatingSystemsResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("os", response: stub_response(fixture: "operating_systems/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ operating_systems = client.operating_systems.list
10
+
11
+ assert_equal Vultr::Collection, operating_systems.class
12
+ assert_equal Vultr::OperatingSystem, operating_systems.data.first.class
13
+ assert_equal 1, operating_systems.total
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class PlansResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("plans", response: stub_response(fixture: "plans/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ plans = client.plans.list
10
+
11
+ assert_equal Vultr::Collection, plans.class
12
+ assert_equal Vultr::Plan, plans.data.first.class
13
+ assert_equal 1, plans.total
14
+ end
15
+
16
+ def test_list_metal
17
+ stub = stub_request("plans-metal", response: stub_response(fixture: "plans/list_metal"))
18
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
19
+ plans = client.plans.list_metal
20
+
21
+ assert_equal Vultr::Collection, plans.class
22
+ assert_equal Vultr::Plan, plans.data.first.class
23
+ assert_equal 1, plans.total
24
+ end
25
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class PrivateNetworksResourceTest < Minitest::Test
6
+ def test_list
7
+ stub = stub_request("private-networks", response: stub_response(fixture: "private_networks/list"))
8
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
9
+ private_networks = client.private_networks.list
10
+
11
+ assert_equal Vultr::Collection, private_networks.class
12
+ assert_equal Vultr::PrivateNetwork, private_networks.data.first.class
13
+ assert_equal 1, private_networks.total
14
+ end
15
+
16
+ def test_create
17
+ body = {region: "ewr", description: "Example Private Network", v4_subnet: "10.99.0.0", v4_subnet_mask: 24}
18
+ stub = stub_request("private-networks", method: :post, body: body, response: stub_response(fixture: "private_networks/create", status: 201))
19
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
20
+ private_network = client.private_networks.create(**body)
21
+
22
+ assert_equal Vultr::PrivateNetwork, private_network.class
23
+ assert_equal "Example Private Network", private_network.description
24
+ end
25
+
26
+ def test_retrieve
27
+ private_network_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
28
+ stub = stub_request("private-networks/#{private_network_id}", response: stub_response(fixture: "private_networks/retrieve"))
29
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
30
+ private_network = client.private_networks.retrieve(network_id: private_network_id)
31
+
32
+ assert_equal Vultr::PrivateNetwork, private_network.class
33
+ assert_equal "Example Network Description", private_network.description
34
+ end
35
+
36
+ def test_update
37
+ private_network_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
38
+ body = {description: "Example Private Network"}
39
+ stub = stub_request("private-networks/#{private_network_id}", method: :put, body: body, response: stub_response(fixture: "private_networks/update"))
40
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
41
+ assert client.private_networks.update(network_id: private_network_id, **body)
42
+ end
43
+
44
+ def test_delete
45
+ private_network_id = "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
46
+ stub = stub_request("private-networks/#{private_network_id}", method: :delete, response: stub_response(fixture: "private_networks/delete"))
47
+ client = Vultr::Client.new(api_key: "fake", adapter: :test, stubs: stub)
48
+ assert client.private_networks.delete(network_id: private_network_id)
49
+ end
50
+ end