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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d6d7268e2f809b3a39ccd527cd000c2aa53cb8134c8461aabc60f9a55250390
4
- data.tar.gz: 7eb0da000669cc3e214e003f16bdf7f4da307dc96518634a845e2e96667f036c
3
+ metadata.gz: 3ebb61a34678162bb7e0884bf72d3015f41c0631599406821d51756d7b810779
4
+ data.tar.gz: f456cc5ade9358ea27bfa0b14a2192020517d69db788ed7487d1f58d69f2acc2
5
5
  SHA512:
6
- metadata.gz: 1c8728c10baf9243e704b9663b59ab472e3c9b017fd0aaf4d30e989e60d5b577040ced421df2092263ee0d4734dd87fa93e48583be9ba86b1989ed2583056806
7
- data.tar.gz: d62e65970f71259cf4d8c1d0d4eae37dab6a5e0439ef4617dea1edbfb39b4d64d4d12242d68d7bbd3e4e4236b535f3d53e99487a76ecc45d56e87cf9f1714d81
6
+ metadata.gz: e250cf98c8fd94545aec82859c149c431ffb9007076fbfe05898e0b25d4ddaff5e805c2a39563f58b992e7c273d0f4ff6ff074fbc5dc968b7b3d70e7f3bbaa73
7
+ data.tar.gz: '05628e57dad09c2983a933c25ee648b684b26a88ad34c2d9d2b46131e31209d2d3b495c4273aa318fd82091e0cb3c540c7753741e65c47b5741149546e26b57f'
@@ -0,0 +1,32 @@
1
+ name: Tests
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - "*"
7
+ push:
8
+ branches:
9
+ - master
10
+ jobs:
11
+ tests:
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ ruby: ["2.4", "2.5", "2.6", "2.7", "3.0"]
16
+
17
+ steps:
18
+ - uses: actions/checkout@master
19
+
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby }}
24
+ bundler: default
25
+ bundler-cache: true
26
+
27
+ - name: StandardRb check
28
+ run: bundle exec standardrb
29
+
30
+ - name: Run tests
31
+ run: |
32
+ bundle exec rake test
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.0.0
2
+
3
+ * Vultr API v2 support
4
+
1
5
  == 0.4.3 / 2019-10-8
2
6
 
3
7
  * Relaxed Faraday dependencies
data/Gemfile CHANGED
@@ -1,12 +1,7 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rake', '~> 10.5.0' if RUBY_VERSION < '1.9.3'
4
- gem 'rake' if RUBY_VERSION >= '1.9.3'
5
-
6
- group :test do
7
- gem 'coveralls', :require => false
8
- gem 'minitest', '>= 5.0.5'
9
- gem 'simplecov'
10
- end
1
+ source "https://rubygems.org"
11
2
 
12
3
  gemspec
4
+
5
+ gem "rake"
6
+ gem "minitest", ">= 5.0.5"
7
+ gem "standard"
data/README.md CHANGED
@@ -1,24 +1,8 @@
1
- # VULTR Rubygem
1
+ # Vultr API Rubygem
2
2
 
3
- [![Build Status](https://img.shields.io/travis/tolbkni/vultr.rb.svg)](https://travis-ci.org/tolbkni/vultr.rb)
4
- [![Gem Version](https://badge.fury.io/rb/vultr.svg)](https://badge.fury.io/rb/vultr)
3
+ [![Build Status](https://github.com/tolbkni/vultr.rb/workflows/Tests/badge.svg)](https://github.com/tolbkni/vultr.rb/actions)
5
4
 
6
-
7
- The easiest and most complete rubygem for [VULTR](https://www.vultr.com).
8
-
9
- ```ruby
10
- Vultr.api_key = "your_api_key"
11
- r = Vultr::Server.list
12
- # => {
13
- # :status=>200,
14
- # :result=>[40, 11, 45, 29, 41, 61, 46, 35, 12, 30, 42, 3, 39, 13, 60, 36, 37, 43, 27, 28, 38]
15
- # }
16
-
17
- r[:status]
18
- r[:result]
19
- ```
20
-
21
- You can find your keys at [https://my.vultr.com/settings/#API](https://my.vultr.com/settings/#API)
5
+ The easiest and most complete rubygem for [Vultr](https://www.vultr.com). Currently supports [API v2](https://www.vultr.com/api/v2).
22
6
 
23
7
  ## Installation
24
8
 
@@ -36,123 +20,309 @@ Or install it yourself as:
36
20
 
37
21
  ## Usage
38
22
 
39
- ### List Servers
40
-
41
- ```ruby
42
- Vultr::Server.list
43
- ```
44
-
45
- ### Create Server
46
-
47
- ```ruby
48
- Vultr::Server.create({DCID: dc_id, VPSPLANID: vps_plan_id, OSID: os_id})
49
- ```
50
-
51
- ## Available Commands
52
-
53
- ```ruby
54
- Vultr::Account.info
55
-
56
- Vultr::App.list
57
-
58
- Vultr::Auth.info
59
-
60
- Vultr::Backup.list
61
-
62
- Vultr::Block.attach({SUBID: sub_id, attach_to_SUBID: attach_to_sub_id})
63
- Vultr::Block.create({DCID: dc_id, size_gb: size_gb, label: label})
64
- Vultr::Block.delete(SUBID: sub_id)
65
- Vultr::Block.detach(SUBID: sub_id)
66
- Vultr::Block.label_set({SUBID: sub_id, label: label})
67
- Vultr::Block.list(SUBID: sub_id)
68
- Vultr::Block.resize({SUBID: sub_id, size_gb: size_gb})
69
-
70
- Vultr::DNS.create_domain({domain: domain, serverip: server_ip})
71
- Vultr::DNS.create_record({domain: domain, name: name, type: type, data: data, ttl: ttl, priority: priority})
72
- Vultr::DNS.delete_domain(domain: domain)
73
- Vultr::DNS.delete_record({domain: domain, RECORDID: record_id})
74
- Vultr::DNS.list
75
- Vultr::DNS.records(domain: domain)
76
- Vultr::DNS.update_record({domain: domain, RECORDID: record_id, name: name, type: type, data: data, ttl: ttl, priority: priority})
77
-
78
- Vultr::ISO.list
79
-
80
- Vultr::OS.list
81
-
82
- Vultr::Plans.list
83
- Vultr::Plans.list_vc2
84
- Vultr::Plans.list_vdc2
85
-
86
- Vultr::Regions.list
87
- Vultr::Regions.availability(DCID: dc_id)
88
-
89
- Vultr::ReservedIP.attach({ip_address: ip_address, attach_SUBID: attach_sub_id})
90
- Vultr::ReservedIP.convert({SUBID: sub_id, ip_address: ip_address, label: label})
91
- Vultr::ReservedIP.create({DCID: dc_id, ip_type: ip_type, label: label})
92
- Vultr::ReservedIP.destroy(ip_address: ip_address)
93
- Vultr::ReservedIP.detach({ip_address: ip_address, detach_SUBID: detach_sub_id})
94
- Vultr::ReservedIP.list
95
-
96
- Vultr::Server.app_change({SUBID: sub_id, APPID: app_id})
97
- Vultr::Server.app_change_list(SUBID: sub_id)
98
- Vultr::Server.backup_disable(SUBID: sub_id)
99
- Vultr::Server.backup_enable(SUBID: sub_id)
100
- Vultr::Server.backup_get_schedule(SUBID: sub_id)
101
- Vultr::Server.backup_set_schedule({SUBID: sub_id, cron_type: cron_type, hour: hour, dow: dow, dom: dom})
102
- Vultr::Server.bandwidth(SUBID: sub_id)
103
- Vultr::Server.create({DCID: dc_id, VPSPLANID: vps_plan_id, OSID: os_id, ipxe_chain_url: ipxe_chain_url, ISOID: iso_id,
104
- SCRIPTID: script_id, SNAPSHOTID: snapshot_id, enable_ipv6: enable_ipv6, enable_private_network: enable_private_network,
105
- private_network: private_network, label: label, SSHKEYID: sshkey_id, auto_backups: auto_backups, APPID: app_id,
106
- userdata: userdata, notify_activate: notify_activate, ddos_protection: ddos_protection, reserved_ip_v4: reserved_ipv4,
107
- hostname: hostname, tag: tag})
108
- Vultr::Server.create_ipv4({SUBID: sub_id, reboot: reboot})
109
- Vultr::Server.destroy(SUBID: sub_id)
110
- Vultr::Server.destroy_ipv4({SUBID: sub_id, ip: ip})
111
- Vultr::Server.get_app_inf(SUBID: sub_id)
112
- Vultr::Server.get_user_data(SUBID: sub_id)
113
- Vultr::Server.halt(SUBID: sub_id)
114
- Vultr::Server.iso_attach({SUBID: sub_id, ISOID: iso_id})
115
- Vultr::Server.iso_detach(SUBID: sub_id)
116
- Vultr::Server.iso_status(SUBID: sub_id)
117
- Vultr::Server.label_set({SUBID: sub_id, label: label})
118
- Vultr::Server.list({SUBID: sub_id, tag: tag})
119
- Vultr::Server.list_ipv4(SUBID: sub_id)
120
- Vultr::Server.list_ipv6(SUBID: sub_id)
121
- Vultr::Server.neighbors(SUBID: sub_id)
122
- Vultr::Server.os_change({SUBID: sub_id, OSID: os_id})
123
- Vultr::Server.os_change_list(SUBID: sub_id)
124
- Vultr::Server.reboot(SUBID: sub_id)
125
- Vultr::Server.reinstall({SUBID: sub_id, hostname: hostname})
126
- Vultr::Server.restore_backup({SUBID: sub_id, BACKUPID: backup_id})
127
- Vultr::Server.restore_snapshot({SUBID: sub_id, SNAPSHOTID: snapshot_id})
128
- Vultr::Server.reverse_default_ipv4({SUBID: sub_id, ip: ip})
129
- Vultr::Server.reverse_delete_ipv6({SUBID: sub_id, ip: ip})
130
- Vultr::Server.reverse_list_ipv6(SUBID: sub_id)
131
- Vultr::Server.reverse_set_ipv4({SUBID: sub_id, ip: ip, entry: entry})
132
- Vultr::Server.reverse_set_ipv6({SUBID: sub_id, ip: ip, entry: entry})
133
- Vultr::Server.set_user_data({SUBID: sub_id, userdata: userdata})
134
- Vultr::Server.start(SUBID: sub_id)
135
- Vultr::Server.upgrade_plan({SUBID: sub_id, VPSPLANID: vpsplan_id})
136
- Vultr::Server.upgrade_plan_list(SUBID: sub_id)
137
-
138
- Vultr::Snapshot.create(SUBID: sub_id)
139
- Vultr::Snapshot.destroy(SNAPSHOTID: snapshot_id)
140
- Vultr::Snapshot.list
141
-
142
- Vultr::SSHKey.create({name: name, ssh_key: ssh_key})
143
- Vultr::SSHKey.destroy(SSHKEYID: sshkey_id)
144
- Vultr::SSHKey.list
145
- Vultr::SSHKey.update({SSHKEYID: sshkey_id, name: name, ssh_key: ssh_key})
146
-
147
- Vultr::StartupScript.create({name: name, script: script, type: type})
148
- Vultr::StartupScript.destroy(SCRIPTID: script_id)
149
- Vultr::StartupScript.list
150
- Vultr::StartupScript.update({SCRIPTID: script_id, name: name, script: script})
151
-
152
- Vultr::User.create({email: email, name: name, password: password, api_enabled: api_enabled, acls: acls})
153
- Vultr::User.delete(USERID: user_id)
154
- Vultr::User.list
155
- Vultr::User.update({USERID: user_id, email: email, name: name, password: password, api_enabled: api_enabled, acls: acls})
23
+ To access the API, you'll need to create a `Vultr::Client` and pass in your API key. You can find your API key at [https://my.vultr.com/settings](https://my.vultr.com/settings/#settingsapi)
24
+
25
+ ```ruby
26
+ client = Vultr::Client.new(api_key: ENV["VULTR_API_KEY"])
27
+ ```
28
+
29
+ The client then gives you access to each of the resources.
30
+
31
+ ## Resources
32
+
33
+ The gem maps as closely as we can to the Vultr API so you can easily convert API examples to gem code.
34
+
35
+ Responses are created as objects like `Vultr::Account`. Having types like `Vultr::User` is handy for understanding what type of object you're working with. They're built using OpenStruct so you can easily access data in a Ruby-ish way.
36
+
37
+ ##### Pagination
38
+
39
+ `list` endpoints return pages of results. The result object will have a `data` key to access the results, as well as metadata like `next_cursor` and `prev_cursor` for retrieving the next and previous pages. You may also specify the
40
+
41
+ ```ruby
42
+ results = client.applications.list(per_page: 5)
43
+ #=> Vultr::Collection
44
+
45
+ results.total
46
+ #=> 48
47
+
48
+ results.data
49
+ #=> [#<Vultr::Application>, #<Vultr::Application>]
50
+
51
+ results.next_cursor
52
+ #=> "bmV4dF9fMTU="
53
+
54
+ # Retrieve the next page
55
+ client.applications.list(per_page: 5, cursor: results.next_cursor)
56
+ #=> Vultr::Collection
57
+ ```
58
+
59
+ ### Account
60
+
61
+ ```ruby
62
+ client.account.info
63
+ ```
64
+
65
+ ### Applications
66
+
67
+ ```ruby
68
+ client.applications.list
69
+ ```
70
+
71
+ ### Backups
72
+
73
+ ```ruby
74
+ client.backups.list
75
+ client.backups.get(backup_id: "id")
76
+ ```
77
+
78
+ ### Bare Metal
79
+
80
+ ```ruby
81
+ client.bare_metal.list
82
+ client.bare_metal.create({})
83
+ client.bare_metal.retrieve(baremetal_id: "id")
84
+ client.bare_metal.update(baremetal_id: "id", {})
85
+ client.bare_metal.delete(baremetal_id: "id")
86
+ client.bare_metal.start(baremetal_id: "id")
87
+ client.bare_metal.reboot(baremetal_id: "id")
88
+ client.bare_metal.reinstall(baremetal_id: "id")
89
+ client.bare_metal.halt(baremetal_id: "id")
90
+ client.bare_metal.bandwidth(baremetal_id: "id")
91
+ client.bare_metal.user_data(baremetal_id: "id")
92
+ client.bare_metal.upgrades(baremetal_id: "id")
93
+ client.bare_metal.vnc(baremetal_id: "id")
94
+ client.bare_metal.list_ipv4(baremetal_id: "id")
95
+ client.bare_metal.list_ipv6(baremetal_id: "id")
96
+
97
+ # Bulk operations
98
+ client.bare_metal.start_instances(baremetal_ids: [id1, id2])
99
+ client.bare_metal.halt_instances(baremetal_ids: [id1, id2])
100
+ client.bare_metal.reboot_instances(baremetal_ids: [id1, id2])
101
+ ```
102
+
103
+ ### Block Storage
104
+
105
+ ```ruby
106
+ client.block_storage.list
107
+ client.block_storage.create({})
108
+ client.block_storage.retrieve(block_id: "id")
109
+ client.block_storage.update(block_id: "id", {})
110
+ client.block_storage.delete(block_id: "id")
111
+ client.block_storage.attach(block_id: "id", {})
112
+ client.block_storage.detach(block_id: "id")
113
+ ```
114
+
115
+ ### DNS (Domains)
116
+
117
+ ```ruby
118
+ client.dns.list
119
+ client.dns.create({})
120
+ client.dns.retrieve(dns_domain: "id")
121
+ client.dns.update(dns_domain: "id", {})
122
+ client.dns.delete(dns_domain: "id")
123
+ client.dns.soa(dns_domain: "id")
124
+ client.dns.update_soa(dns_domain: "id", {})
125
+ client.dns.dnssec(dns_domain: "id")
126
+ client.dns.list_records(dns_domain: "id")
127
+ client.dns.retrieve_record(dns_domain: "id", record_id: "id")
128
+ client.dns.create_record(dns_domain: "id", {})
129
+ client.dns.update_record(dns_domain: "id", record_id: "id", {})
130
+ client.dns.delete_record(dns_domain: "id", record_id: "id")
131
+ ```
132
+
133
+ ### Firewall
134
+
135
+ ```ruby
136
+ client.firewall.list
137
+ client.firewall.create({})
138
+ client.firewall.retrieve(firewall_group_id: "id")
139
+ client.firewall.update(firewall_group_id: "id", {})
140
+ client.firewall.delete(firewall_group_id: "id")
141
+ client.firewall.list_rules(firewall_group_id: "id")
142
+ client.firewall.create_rule(firewall_group_id: "id", {})
143
+ client.firewall.retrieve_rule(firewall_group_id: "id", firewall_rule_id: "id")
144
+ client.firewall.delete_rule(firewall_group_id: "id", firewall_rule_id: "id")
145
+ ```
146
+
147
+ ### Instances
148
+
149
+ ```ruby
150
+ client.instances.list
151
+ client.instances.create({})
152
+ client.instances.retrieve(instance_id: "id")
153
+ client.instances.update(instance_id: "id", {})
154
+ client.instances.delete(instance_id: "id")
155
+ client.instances.start(instance_id: "id")
156
+ client.instances.reboot(instance_id: "id")
157
+ client.instances.reinstall(instance_id: "id")
158
+ client.instances.restore(instance_id: "id", {})
159
+ client.instances.halt(instance_id: "id")
160
+ client.instances.bandwidth(instance_id: "id")
161
+ client.instances.neighbors(instance_id: "id")
162
+ client.instances.user_data(instance_id: "id")
163
+ client.instances.upgrades(instance_id: "id")
164
+ client.instances.list_ipv4(instance_id: "id")
165
+ client.instances.create_ipv4(instance_id: "id", {})
166
+ client.instances.delete_ipv4(instance_id: "id", ipv4: "id")
167
+ client.instances.create_ipv4_reverse(instance_id: "id", {})
168
+ client.instances.set_default_reverse_dns_entry(instance_id: "id", {})
169
+ client.instances.list_ipv6(instance_id: "id")
170
+ client.instances.ipv6_reverse(instance_id: "id")
171
+ client.instances.create_ipv6_reverse(instance_id: "id", {})
172
+ client.instances.delete_ipv6_reverse(instance_id: "id", ipv6: "id")
173
+ client.instances.list_private_networks(instance_id: "id")
174
+ client.instances.attach_private_network(instance_id: "id", network_id: "id")
175
+ client.instances.detach_private_network(instance_id: "id", network_id: "id")
176
+ client.instances.iso(instance_id: "id")
177
+ client.instances.attach_iso(instance_id: "id", iso_id: "id")
178
+ client.instances.detach_iso(instance_id: "id", iso_id: "id")
179
+ client.instances.backup_schedule(instance_id: "id")
180
+ client.instances.set_backup_schedule(instance_id: "id", {})
181
+
182
+ # Bulk operations
183
+ client.instances.start_instances(instance_ids: [id1, id2])
184
+ client.instances.halt_instances(instance_ids: [id1, id2])
185
+ client.instances.reboot_instances(instance_ids: [id1, id2])
186
+ ```
187
+
188
+ ### ISO
189
+
190
+ ```ruby
191
+ client.iso.list
192
+ client.iso.create({})
193
+ client.iso.retrieve(iso_id: "id")
194
+ client.iso.delete(iso_id: "id")
195
+ client.iso.list_public
196
+ ```
197
+
198
+ ### Kubernetes
199
+
200
+ ```ruby
201
+ client.kubernetes.list
202
+ client.kubernetes.create({})
203
+ client.kubernetes.retrieve(vke_id: "id")
204
+ client.kubernetes.update(vke_id: "id", {})
205
+ client.kubernetes.delete(vke_id: "id")
206
+ client.kubernetes.config(vke_id: "id")
207
+ client.kubernetes.list_resources(vke_id: "id")
208
+ client.kubernetes.list_node_pools(vke_id: "id")
209
+ client.kubernetes.retrieve_node_pool(vke_id: "id", nodepool_id: "id")
210
+ client.kubernetes.create_node_pool(vke_id: "id", {})
211
+ client.kubernetes.update_node_pool(vke_id: "id", nodepool_id: "id", {})
212
+ client.kubernetes.delete_node_pool(vke_id: "id", nodepool_id: "id")
213
+ client.kubernetes.delete_node_pool_instance(vke_id: "id", nodepool_id: "id", node_id: "id")
214
+ client.kubernetes.recycle_node_pool_instance(vke_id: "id", nodepool_id: "id", node_id: "id")
215
+ ```
216
+
217
+ ### Load Balancers
218
+
219
+ ```ruby
220
+ client.load_balancers.list
221
+ client.load_balancers.create({})
222
+ client.load_balancers.retrieve(load_balancer_id: "id")
223
+ client.load_balancers.update(load_balancer_id: "id", {})
224
+ client.load_balancers.delete(load_balancer_id: "id")
225
+ client.load_balancers.list_forwarding_rules(load_balancer_id: "id")
226
+ client.load_balancers.create_forwarding_rule(load_balancer_id: "id", {})
227
+ client.load_balancers.retrieve_forwarding_rule(load_balancer_id: "id", forwarding_rule_id: "id")
228
+ client.load_balancers.delete_forwarding_rule(load_balancer_id: "id", forwarding_rule_id: "id")
229
+ client.load_balancers.list_firewall_rules(load_balancer_id: "id")
230
+ client.load_balancers.retrieve_firewall_rule(load_balancer_id: "id", firewall_rule_id: "id")
231
+ ```
232
+
233
+ ### Object Storage
234
+
235
+ ```ruby
236
+ client.object_storage.list
237
+ client.object_storage.create({})
238
+ client.object_storage.retrieve(object_storage_id: "id")
239
+ client.object_storage.update(object_storage_id: "id", {})
240
+ client.object_storage.delete(object_storage_id: "id")
241
+ client.object_storage.regenerate_keys(object_storage_id: "id")
242
+ client.object_storage.list_clusters()
243
+ ```
244
+
245
+ ### Operating Systems
246
+
247
+ ```ruby
248
+ client.operating_systems.list
249
+ ```
250
+
251
+ ### Plans
252
+
253
+ ```ruby
254
+ client.plans.list
255
+ client.plans.list_metal
256
+ ```
257
+
258
+ ### Private Networks
259
+
260
+ ```ruby
261
+ client.private_networks.list
262
+ client.private_networks.create({})
263
+ client.private_networks.retrieve(network_id: "id")
264
+ client.private_networks.update(network_id: "id", {})
265
+ client.private_networks.delete(network_id: "id")
266
+ ```
267
+
268
+ ### Regions
269
+
270
+ ```ruby
271
+ client.regions.list
272
+ client.regions.list_availability(region_id: "id")
273
+ ```
274
+
275
+ ### Reserved IPs
276
+
277
+ ```ruby
278
+ client.reserved_ips.list
279
+ client.reserved_ips.create({})
280
+ client.reserved_ips.retrieve(reserved_ip: "id")
281
+ client.reserved_ips.delete(reserved_ip: "id")
282
+ client.reserved_ips.attach(reserved_ip: "id", instance_id: "id")
283
+ client.reserved_ips.detach(reserved_ip: "id")
284
+ client.reserved_ips.convert({})
285
+ ```
286
+
287
+ ### Snapshots
288
+
289
+ ```ruby
290
+ client.snapshots.list
291
+ client.snapshots.create({})
292
+ client.snapshots.retrieve(snapshot_id: "id")
293
+ client.snapshots.create_from_url("https://...")
294
+ client.snapshots.update(snapshot_id: "id", {})
295
+ client.snapshots.delete(snapshot_id: "id")
296
+ ```
297
+
298
+ ### SSH Keys
299
+
300
+ ```ruby
301
+ client.ssh_keys.list
302
+ client.ssh_keys.create({})
303
+ client.ssh_keys.retrieve(ssh_key_id: "id")
304
+ client.ssh_keys.update(ssh_key_id: "id", {})
305
+ client.ssh_keys.delete(ssh_key_id: "id")
306
+ ```
307
+
308
+ ### Startup Scripts
309
+
310
+ ```ruby
311
+ client.startup_scripts.list
312
+ client.startup_scripts.create({})
313
+ client.startup_scripts.retrieve(startup_script_id: "id")
314
+ client.startup_scripts.update(startup_script_id: "id", {})
315
+ client.startup_scripts.delete(startup_script_id: "id")
316
+ ```
317
+
318
+ ### Users
319
+
320
+ ```ruby
321
+ client.users.list
322
+ client.users.create({})
323
+ client.users.retrieve(user_id: "id")
324
+ client.users.update(user_id: "id", {})
325
+ client.users.delete(user_id: "id")
156
326
  ```
157
327
 
158
328
  ## Contributing