knife-ionoscloud 5.0.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. checksums.yaml +7 -0
  2. data/.gitbook.yaml +4 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +54 -0
  4. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +51 -0
  6. data/.github/workflows/ci.yml +38 -0
  7. data/.github/workflows/publish.yml +58 -0
  8. data/.gitignore +26 -0
  9. data/.rubocop.yml +148 -0
  10. data/Gemfile +4 -0
  11. data/LICENSE.txt +201 -0
  12. data/Rakefile +7 -0
  13. data/docs/README.md +67 -0
  14. data/docs/changelog.md +1 -0
  15. data/docs/docs_generator.rb +107 -0
  16. data/docs/subcommands/backupunit_create.md +38 -0
  17. data/docs/subcommands/backupunit_delete.md +26 -0
  18. data/docs/subcommands/backupunit_list.md +26 -0
  19. data/docs/subcommands/backupunit_ssourl.md +30 -0
  20. data/docs/subcommands/composite_server_create.md +97 -0
  21. data/docs/subcommands/contract_list.md +26 -0
  22. data/docs/subcommands/datacenter_create.md +41 -0
  23. data/docs/subcommands/datacenter_delete.md +26 -0
  24. data/docs/subcommands/datacenter_list.md +26 -0
  25. data/docs/subcommands/firewall_create.md +65 -0
  26. data/docs/subcommands/firewall_delete.md +38 -0
  27. data/docs/subcommands/firewall_list.md +38 -0
  28. data/docs/subcommands/group_create.md +48 -0
  29. data/docs/subcommands/group_delete.md +26 -0
  30. data/docs/subcommands/group_get.md +30 -0
  31. data/docs/subcommands/group_list.md +29 -0
  32. data/docs/subcommands/group_user_add.md +30 -0
  33. data/docs/subcommands/group_user_remove.md +30 -0
  34. data/docs/subcommands/image_list.md +26 -0
  35. data/docs/subcommands/ipblock_create.md +37 -0
  36. data/docs/subcommands/ipblock_delete.md +26 -0
  37. data/docs/subcommands/ipblock_list.md +26 -0
  38. data/docs/subcommands/ipfailover_add.md +46 -0
  39. data/docs/subcommands/ipfailover_remove.md +42 -0
  40. data/docs/subcommands/k8s_create.md +39 -0
  41. data/docs/subcommands/k8s_delete.md +26 -0
  42. data/docs/subcommands/k8s_list.md +26 -0
  43. data/docs/subcommands/kubeconfig_get.md +30 -0
  44. data/docs/subcommands/label_add.md +45 -0
  45. data/docs/subcommands/label_list.md +35 -0
  46. data/docs/subcommands/label_remove.md +37 -0
  47. data/docs/subcommands/lan_create.md +36 -0
  48. data/docs/subcommands/lan_delete.md +30 -0
  49. data/docs/subcommands/lan_list.md +30 -0
  50. data/docs/subcommands/loadbalancer_create.md +43 -0
  51. data/docs/subcommands/loadbalancer_delete.md +30 -0
  52. data/docs/subcommands/loadbalancer_get.md +34 -0
  53. data/docs/subcommands/loadbalancer_list.md +30 -0
  54. data/docs/subcommands/loadbalancer_nic_add.md +34 -0
  55. data/docs/subcommands/loadbalancer_nic_remove.md +34 -0
  56. data/docs/subcommands/location_list.md +26 -0
  57. data/docs/subcommands/nic_create.md +51 -0
  58. data/docs/subcommands/nic_delete.md +34 -0
  59. data/docs/subcommands/nic_list.md +34 -0
  60. data/docs/subcommands/node_delete.md +34 -0
  61. data/docs/subcommands/node_list.md +34 -0
  62. data/docs/subcommands/node_replace.md +36 -0
  63. data/docs/subcommands/nodepool_create.md +87 -0
  64. data/docs/subcommands/nodepool_delete.md +30 -0
  65. data/docs/subcommands/nodepool_list.md +30 -0
  66. data/docs/subcommands/pcc_create.md +38 -0
  67. data/docs/subcommands/pcc_delete.md +26 -0
  68. data/docs/subcommands/pcc_list.md +26 -0
  69. data/docs/subcommands/request_list.md +32 -0
  70. data/docs/subcommands/request_status.md +30 -0
  71. data/docs/subcommands/request_wait.md +30 -0
  72. data/docs/subcommands/resource_list.md +34 -0
  73. data/docs/subcommands/s3key_create.md +30 -0
  74. data/docs/subcommands/s3key_delete.md +30 -0
  75. data/docs/subcommands/s3key_list.md +30 -0
  76. data/docs/subcommands/server_create.md +55 -0
  77. data/docs/subcommands/server_delete.md +32 -0
  78. data/docs/subcommands/server_list.md +30 -0
  79. data/docs/subcommands/server_reboot.md +30 -0
  80. data/docs/subcommands/server_start.md +30 -0
  81. data/docs/subcommands/server_stop.md +30 -0
  82. data/docs/subcommands/share_create.md +40 -0
  83. data/docs/subcommands/share_delete.md +30 -0
  84. data/docs/subcommands/share_list.md +30 -0
  85. data/docs/subcommands/snapshot_create.md +34 -0
  86. data/docs/subcommands/snapshot_delete.md +26 -0
  87. data/docs/subcommands/snapshot_list.md +26 -0
  88. data/docs/subcommands/snapshot_restore.md +38 -0
  89. data/docs/subcommands/user_create.md +49 -0
  90. data/docs/subcommands/user_delete.md +26 -0
  91. data/docs/subcommands/user_list.md +29 -0
  92. data/docs/subcommands/user_ssourl.md +30 -0
  93. data/docs/subcommands/volume_attach.md +34 -0
  94. data/docs/subcommands/volume_create.md +63 -0
  95. data/docs/subcommands/volume_delete.md +30 -0
  96. data/docs/subcommands/volume_detach.md +36 -0
  97. data/docs/subcommands/volume_list.md +33 -0
  98. data/docs/summary.md +89 -0
  99. data/docs/templates/subcommand_doc.mustache +26 -0
  100. data/docs/templates/summary.mustache +10 -0
  101. data/knife-ionoscloud.gemspec +27 -0
  102. data/lib/chef/knife/ionoscloud_backupunit_create.rb +63 -0
  103. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +55 -0
  104. data/lib/chef/knife/ionoscloud_backupunit_list.rb +41 -0
  105. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +39 -0
  106. data/lib/chef/knife/ionoscloud_base.rb +76 -0
  107. data/lib/chef/knife/ionoscloud_composite_server_create.rb +217 -0
  108. data/lib/chef/knife/ionoscloud_contract_list.rb +50 -0
  109. data/lib/chef/knife/ionoscloud_datacenter_create.rb +66 -0
  110. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +56 -0
  111. data/lib/chef/knife/ionoscloud_datacenter_list.rb +50 -0
  112. data/lib/chef/knife/ionoscloud_firewall_create.rb +135 -0
  113. data/lib/chef/knife/ionoscloud_firewall_delete.rb +76 -0
  114. data/lib/chef/knife/ionoscloud_firewall_list.rb +72 -0
  115. data/lib/chef/knife/ionoscloud_group_create.rb +89 -0
  116. data/lib/chef/knife/ionoscloud_group_delete.rb +61 -0
  117. data/lib/chef/knife/ionoscloud_group_get.rb +46 -0
  118. data/lib/chef/knife/ionoscloud_group_list.rb +62 -0
  119. data/lib/chef/knife/ionoscloud_group_user_add.rb +72 -0
  120. data/lib/chef/knife/ionoscloud_group_user_remove.rb +72 -0
  121. data/lib/chef/knife/ionoscloud_image_list.rb +47 -0
  122. data/lib/chef/knife/ionoscloud_ipblock_create.rb +63 -0
  123. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +50 -0
  124. data/lib/chef/knife/ionoscloud_ipblock_list.rb +42 -0
  125. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +76 -0
  126. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +76 -0
  127. data/lib/chef/knife/ionoscloud_k8s_create.rb +79 -0
  128. data/lib/chef/knife/ionoscloud_k8s_delete.rb +67 -0
  129. data/lib/chef/knife/ionoscloud_k8s_list.rb +45 -0
  130. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +37 -0
  131. data/lib/chef/knife/ionoscloud_label_add.rb +84 -0
  132. data/lib/chef/knife/ionoscloud_label_list.rb +83 -0
  133. data/lib/chef/knife/ionoscloud_label_remove.rb +77 -0
  134. data/lib/chef/knife/ionoscloud_lan_create.rb +69 -0
  135. data/lib/chef/knife/ionoscloud_lan_delete.rb +54 -0
  136. data/lib/chef/knife/ionoscloud_lan_list.rb +46 -0
  137. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +87 -0
  138. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +68 -0
  139. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +51 -0
  140. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +50 -0
  141. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +75 -0
  142. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +76 -0
  143. data/lib/chef/knife/ionoscloud_location_list.rb +38 -0
  144. data/lib/chef/knife/ionoscloud_nic_create.rb +104 -0
  145. data/lib/chef/knife/ionoscloud_nic_delete.rb +62 -0
  146. data/lib/chef/knife/ionoscloud_nic_list.rb +57 -0
  147. data/lib/chef/knife/ionoscloud_node_delete.rb +65 -0
  148. data/lib/chef/knife/ionoscloud_node_list.rb +55 -0
  149. data/lib/chef/knife/ionoscloud_node_replace.rb +54 -0
  150. data/lib/chef/knife/ionoscloud_nodepool_create.rb +163 -0
  151. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +60 -0
  152. data/lib/chef/knife/ionoscloud_nodepool_list.rb +51 -0
  153. data/lib/chef/knife/ionoscloud_pcc_create.rb +68 -0
  154. data/lib/chef/knife/ionoscloud_pcc_delete.rb +57 -0
  155. data/lib/chef/knife/ionoscloud_pcc_list.rb +41 -0
  156. data/lib/chef/knife/ionoscloud_request_list.rb +94 -0
  157. data/lib/chef/knife/ionoscloud_request_status.rb +37 -0
  158. data/lib/chef/knife/ionoscloud_request_wait.rb +41 -0
  159. data/lib/chef/knife/ionoscloud_resource_list.rb +81 -0
  160. data/lib/chef/knife/ionoscloud_s3key_create.rb +45 -0
  161. data/lib/chef/knife/ionoscloud_s3key_delete.rb +57 -0
  162. data/lib/chef/knife/ionoscloud_s3key_list.rb +46 -0
  163. data/lib/chef/knife/ionoscloud_server_create.rb +104 -0
  164. data/lib/chef/knife/ionoscloud_server_delete.rb +62 -0
  165. data/lib/chef/knife/ionoscloud_server_list.rb +58 -0
  166. data/lib/chef/knife/ionoscloud_server_reboot.rb +45 -0
  167. data/lib/chef/knife/ionoscloud_server_start.rb +43 -0
  168. data/lib/chef/knife/ionoscloud_server_stop.rb +44 -0
  169. data/lib/chef/knife/ionoscloud_share_create.rb +71 -0
  170. data/lib/chef/knife/ionoscloud_share_delete.rb +55 -0
  171. data/lib/chef/knife/ionoscloud_share_list.rb +47 -0
  172. data/lib/chef/knife/ionoscloud_snapshot_create.rb +58 -0
  173. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +54 -0
  174. data/lib/chef/knife/ionoscloud_snapshot_list.rb +45 -0
  175. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +69 -0
  176. data/lib/chef/knife/ionoscloud_user_create.rb +83 -0
  177. data/lib/chef/knife/ionoscloud_user_delete.rb +56 -0
  178. data/lib/chef/knife/ionoscloud_user_list.rb +60 -0
  179. data/lib/chef/knife/ionoscloud_user_ssourl.rb +37 -0
  180. data/lib/chef/knife/ionoscloud_volume_attach.rb +52 -0
  181. data/lib/chef/knife/ionoscloud_volume_create.rb +133 -0
  182. data/lib/chef/knife/ionoscloud_volume_delete.rb +67 -0
  183. data/lib/chef/knife/ionoscloud_volume_detach.rb +77 -0
  184. data/lib/chef/knife/ionoscloud_volume_list.rb +70 -0
  185. data/lib/knife-ionoscloud/version.rb +6 -0
  186. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +65 -0
  187. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +101 -0
  188. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +72 -0
  189. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +93 -0
  190. data/spec/chef/knife/ionoscloud_base_spec.rb +157 -0
  191. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +111 -0
  192. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +81 -0
  193. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +72 -0
  194. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +102 -0
  195. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +76 -0
  196. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +90 -0
  197. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +117 -0
  198. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +90 -0
  199. data/spec/chef/knife/ionoscloud_group_create_spec.rb +76 -0
  200. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +109 -0
  201. data/spec/chef/knife/ionoscloud_group_get_spec.rb +73 -0
  202. data/spec/chef/knife/ionoscloud_group_list_spec.rb +115 -0
  203. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +134 -0
  204. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +130 -0
  205. data/spec/chef/knife/ionoscloud_image_list_spec.rb +75 -0
  206. data/spec/chef/knife/ionoscloud_ipblock_create_spec.rb +72 -0
  207. data/spec/chef/knife/ionoscloud_ipblock_delete_spec.rb +102 -0
  208. data/spec/chef/knife/ionoscloud_ipblock_list_spec.rb +74 -0
  209. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +83 -0
  210. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +122 -0
  211. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +83 -0
  212. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +172 -0
  213. data/spec/chef/knife/ionoscloud_k8s_list_spec.rb +73 -0
  214. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +91 -0
  215. data/spec/chef/knife/ionoscloud_label_add_spec.rb +287 -0
  216. data/spec/chef/knife/ionoscloud_label_list_spec.rb +337 -0
  217. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +391 -0
  218. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +77 -0
  219. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +103 -0
  220. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +73 -0
  221. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +82 -0
  222. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +107 -0
  223. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +68 -0
  224. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +74 -0
  225. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +128 -0
  226. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +124 -0
  227. data/spec/chef/knife/ionoscloud_location_list_spec.rb +67 -0
  228. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +85 -0
  229. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +108 -0
  230. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +83 -0
  231. data/spec/chef/knife/ionoscloud_node_delete_spec.rb +107 -0
  232. data/spec/chef/knife/ionoscloud_node_list_spec.rb +75 -0
  233. data/spec/chef/knife/ionoscloud_node_replace_spec.rb +94 -0
  234. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +99 -0
  235. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +106 -0
  236. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +76 -0
  237. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +70 -0
  238. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +106 -0
  239. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +69 -0
  240. data/spec/chef/knife/ionoscloud_request_list_spec.rb +165 -0
  241. data/spec/chef/knife/ionoscloud_request_status_spec.rb +92 -0
  242. data/spec/chef/knife/ionoscloud_request_wait_spec.rb +74 -0
  243. data/spec/chef/knife/ionoscloud_resource_list_spec.rb +155 -0
  244. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +64 -0
  245. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +103 -0
  246. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +70 -0
  247. data/spec/chef/knife/ionoscloud_server_create_spec.rb +84 -0
  248. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +108 -0
  249. data/spec/chef/knife/ionoscloud_server_list_spec.rb +85 -0
  250. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +95 -0
  251. data/spec/chef/knife/ionoscloud_server_start_spec.rb +95 -0
  252. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +95 -0
  253. data/spec/chef/knife/ionoscloud_share_create_spec.rb +68 -0
  254. data/spec/chef/knife/ionoscloud_share_delete_spec.rb +103 -0
  255. data/spec/chef/knife/ionoscloud_share_list_spec.rb +70 -0
  256. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +74 -0
  257. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +103 -0
  258. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +73 -0
  259. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +78 -0
  260. data/spec/chef/knife/ionoscloud_user_create_spec.rb +73 -0
  261. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +104 -0
  262. data/spec/chef/knife/ionoscloud_user_list_spec.rb +103 -0
  263. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +93 -0
  264. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +99 -0
  265. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +143 -0
  266. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +108 -0
  267. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +110 -0
  268. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +118 -0
  269. data/spec/spec_helper.rb +702 -0
  270. data/spec/test.sh +3 -0
  271. data/summary.md +0 -0
  272. metadata +460 -0
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
data/docs/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # Ionoscloud Chef Knife Plugin
2
+
3
+ ![CI](https://github.com/ionos-cloud/knife-ionos-cloud/workflows/CI/badge.svg)
4
+ [![Gem Version](https://badge.fury.io/rb/knife-ionoscloud.svg)](https://badge.fury.io/rb/knife-ionoscloud)
5
+ [![Gitter](https://badges.gitter.im/ionos-cloud/sdk-general.png)](https://gitter.im/ionos-cloud/sdk-general)
6
+
7
+ ## Overview
8
+
9
+ Chef is a popular configuration management tool that allows simplified configuration and maintenance of both servers and cloud provider environments through the use of common templates called recipes. The Chef `knife` command line tool allows management of various nodes within those environments. The `knife-ionoscloud` plugin utilizes the Ionoscloud REST API to provision and manage various cloud resources on the Ionoscloud platform.
10
+
11
+ ## Getting Started
12
+
13
+ Before you begin you will need to have [signed-up](https://www.ionos.com/enterprise-cloud/signup) for a Ionoscloud account. The credentials you establish during sign-up will be used to authenticate against the [Ionoscloud Cloud API](https://devops.ionos.com/api/).
14
+
15
+ ### Installation
16
+
17
+ The `knife-ionoscloud` plugin can be installed as a gem:
18
+
19
+ $ gem install knife-ionoscloud
20
+
21
+ Or the plugin can be installed by adding the following line to your application's Gemfile:
22
+
23
+ gem 'knife-ionoscloud'
24
+
25
+ And then execute:
26
+
27
+ $ bundle
28
+
29
+ ### Configuration
30
+
31
+ The Ionoscloud account credentials can be added to the `knife.rb` configuration file.
32
+
33
+ knife[:ionoscloud_username] = 'username'
34
+ knife[:ionoscloud_password] = 'password'
35
+
36
+ If a virtual data center has already been created under the Ionoscloud account, then the data center UUID can be added to the `knife.rb` which reduces the need to include the `--datacenter-id [datacenter_id]` parameter for each action within the data center.
37
+
38
+ knife[:datacenter_id] = 'f3f3b6fe-017d-43a3-b42a-a759144b2e99'
39
+
40
+ knife[:ionoscloud_debug] = true
41
+
42
+ The configuration parameters can also be passed using shell environment variables. First, the following should be added to the `knife.rb` configuration file:
43
+
44
+ knife[:ionoscloud_username] = ENV['IONOSCLOUD_USERNAME']
45
+ knife[:ionoscloud_password] = ENV['IONOSCLOUD_PASSWORD']
46
+
47
+ Now the parameters can be set as environment variables:
48
+
49
+ $ export IONOSCLOUD_USERNAME='username'
50
+ $ export IONOSCLOUD_PASSWORD='password'
51
+
52
+ ### Testing
53
+
54
+ $ rspec spec
55
+
56
+ ## Feature Reference
57
+
58
+ The IONOS Cloud plugin for Knife aims to offer access to all resources in the IONOS Cloud API and also offers some additional features that make the integration easier:
59
+
60
+ * authentication for API calls
61
+ * handling of asynchronous requests
62
+
63
+ ## FAQ
64
+
65
+ 1. How can I open a bug/feature request?
66
+
67
+ Bugs & feature requests can be open on the repository issues: [https://github.com/ionos-cloud/knife-ionos-cloud/issues/new/choose](https://github.com/ionos-cloud/knife-ionos-cloud/issues/new/choose)
data/docs/changelog.md ADDED
@@ -0,0 +1 @@
1
+ # CHANGELOG
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This must be run from /docs directory
4
+
5
+ require 'mustache'
6
+
7
+ $LOAD_PATH << '.'
8
+
9
+ Dir["../lib/chef/knife/*.rb"].each { |file| require file }
10
+
11
+ def underscore_string(s)
12
+ s.gsub(/::/, '/').
13
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
14
+ gsub(/([a-z\d])([A-Z])/, '\1_\2').
15
+ tr("-", "_").
16
+ downcase
17
+ end
18
+
19
+ class Subcommand < Mustache
20
+ self.template_path = './templates'
21
+ self.template_file = './templates/subcommand_doc.mustache'
22
+
23
+ attr_accessor :banner, :options, :example, :description, :name, :required_options
24
+
25
+ def initialize(banner, options, description, name, required_options)
26
+ @banner = banner
27
+ @options = options || []
28
+ @example = banner.chomp('(options)').gsub!(/\[.*\] /, '') || banner.chomp('(options)') + (options.map { |el| el[:long] }).join(' ')
29
+ @description = description
30
+ @name = name
31
+ @required_options = required_options || []
32
+ end
33
+ end
34
+
35
+ class Summary < Mustache
36
+ self.template_path = './templates'
37
+ self.template_file = './templates/summary.mustache'
38
+
39
+ attr_accessor :subcommands
40
+
41
+ def initialize(subcommands)
42
+ @subcommands = subcommands || []
43
+ end
44
+ end
45
+
46
+ def generate_subcommand_doc(subcommand)
47
+ options = subcommand.options.map { |key, value|
48
+ value[:name] = key
49
+ value[:required] = subcommand.required_options.include? key
50
+ value[:description][0] = value[:description][0].downcase
51
+ value
52
+ }.rotate(2)
53
+
54
+ subcommand_name = subcommand.class.to_s
55
+ subcommand_name.slice!('Chef::Knife::Ionoscloud')
56
+
57
+ filename = "subcommands/#{underscore_string(subcommand_name)}.md"
58
+
59
+ begin
60
+ description = subcommand.description
61
+ rescue NoMethodError
62
+ description = ''
63
+ end
64
+
65
+ File.open(filename, 'w') { |f|
66
+ f.write(
67
+ Subcommand.new(
68
+ subcommand.banner,
69
+ options,
70
+ description,
71
+ subcommand_name,
72
+ subcommand.required_options,
73
+ ).render,
74
+ )
75
+ }
76
+
77
+ puts "Generated documentation for #{subcommand_name}."
78
+ return subcommand_name, filename
79
+ end
80
+
81
+ subcommands = []
82
+
83
+ begin
84
+ Chef::Knife.constants.select { |c|
85
+ Chef::Knife.const_get(c).is_a?(Class) && c.to_s.start_with?('Ionoscloud')
86
+ }.each {
87
+ |subcommand|
88
+ begin
89
+ subcommand_name, filename = generate_subcommand_doc(Chef::Knife.const_get(subcommand).new)
90
+ subcommands.append({ title: subcommand_name, filename: filename })
91
+ rescue Exception => exc
92
+ puts "Could not generate doc for #{subcommand}. Error: #{exc}"
93
+ # raise exc
94
+ end
95
+ }
96
+ rescue NameError => exc
97
+ if exc.message == 'uninitialized constant Chef'
98
+ puts 'This must be run from /docs directory!'
99
+ end
100
+ raise exc
101
+ end
102
+
103
+ subcommands.sort! { |a, b| a[:title] <=> b[:title] }
104
+
105
+ File.open('summary.md', 'w') { |f|
106
+ f.write(Summary.new(subcommands).render,)
107
+ }
@@ -0,0 +1,38 @@
1
+ # BackupunitCreate
2
+
3
+ Create a new backup unit.
4
+
5
+ knife ionoscloud backupunit create (options)
6
+
7
+
8
+ ## Available options:
9
+ ---
10
+
11
+ ### Required options:
12
+ * name
13
+ * password
14
+ * email
15
+ * ionoscloud_username
16
+ * ionoscloud_password
17
+
18
+ ```
19
+ name: --name NAME, -n NAME
20
+ alphanumeric name you want assigned to the backup unit (required)
21
+
22
+ password: --password PASSWORD, -p PASSWORD
23
+ alphanumeric password you want assigned to the backup unit (required)
24
+
25
+ email: --email EMAIL, -e EMAIL
26
+ the e-mail address you want assigned to the backup unit. (required)
27
+
28
+ ionoscloud_username: --username USERNAME, -u USERNAME
29
+ your Ionoscloud username (required)
30
+
31
+ ionoscloud_password: --password PASSWORD, -p PASSWORD
32
+ your Ionoscloud password (required)
33
+
34
+ ```
35
+
36
+ ## Example
37
+
38
+ knife ionoscloud backupunit create --name NAME --password PASSWORD --email EMAIL --username USERNAME --password PASSWORD
@@ -0,0 +1,26 @@
1
+ # BackupunitDelete
2
+
3
+ A backup unit may be deleted using a DELETE request. Deleting a backup unit is a dangerous operation. A successful DELETE request will remove the backup plans inside a backup unit, ALL backups associated with the backup unit, the backup user and finally the backup unit itself.
4
+
5
+ knife ionoscloud backupunit delete BACKUPUNIT_ID [BACKUPUNIT_ID]
6
+
7
+
8
+ ## Available options:
9
+ ---
10
+
11
+ ### Required options:
12
+ * ionoscloud_username
13
+ * ionoscloud_password
14
+
15
+ ```
16
+ ionoscloud_username: --username USERNAME, -u USERNAME
17
+ your Ionoscloud username (required)
18
+
19
+ ionoscloud_password: --password PASSWORD, -p PASSWORD
20
+ your Ionoscloud password (required)
21
+
22
+ ```
23
+
24
+ ## Example
25
+
26
+ knife ionoscloud backupunit delete BACKUPUNIT_ID [BACKUPUNIT_ID]--username USERNAME --password PASSWORD
@@ -0,0 +1,26 @@
1
+ # BackupunitList
2
+
3
+ Retrieve a list of all the backup units the supplied credentials have access to.
4
+
5
+ knife ionoscloud backupunit list
6
+
7
+
8
+ ## Available options:
9
+ ---
10
+
11
+ ### Required options:
12
+ * ionoscloud_username
13
+ * ionoscloud_password
14
+
15
+ ```
16
+ ionoscloud_username: --username USERNAME, -u USERNAME
17
+ your Ionoscloud username (required)
18
+
19
+ ionoscloud_password: --password PASSWORD, -p PASSWORD
20
+ your Ionoscloud password (required)
21
+
22
+ ```
23
+
24
+ ## Example
25
+
26
+ knife ionoscloud backupunit list--username USERNAME --password PASSWORD
@@ -0,0 +1,30 @@
1
+ # BackupunitSsourl
2
+
3
+ The ProfitBricks backup system features a web-based GUI. Once you have created a backup unit, you can access the GUI with a Single Sign On (SSO) URL that can be retrieved from the Cloud API using this request.
4
+
5
+ knife ionoscloud backupunit ssourl (options)
6
+
7
+
8
+ ## Available options:
9
+ ---
10
+
11
+ ### Required options:
12
+ * backupunit_id
13
+ * ionoscloud_username
14
+ * ionoscloud_password
15
+
16
+ ```
17
+ backupunit_id: --backupunit-id BACKUPUNIT_ID, -B BACKUPUNIT_ID
18
+ the ID of the Backup unit. (required)
19
+
20
+ ionoscloud_username: --username USERNAME, -u USERNAME
21
+ your Ionoscloud username (required)
22
+
23
+ ionoscloud_password: --password PASSWORD, -p PASSWORD
24
+ your Ionoscloud password (required)
25
+
26
+ ```
27
+
28
+ ## Example
29
+
30
+ knife ionoscloud backupunit ssourl --backupunit-id BACKUPUNIT_ID --username USERNAME --password PASSWORD
@@ -0,0 +1,97 @@
1
+ # CompositeServerCreate
2
+
3
+ This creates a new composite server with an attached volume and NIC in a specified virtual data center.
4
+
5
+ knife ionoscloud composite server create (options)
6
+
7
+
8
+ ## Available options:
9
+ ---
10
+
11
+ ### Required options:
12
+ * datacenter_id
13
+ * name
14
+ * cores
15
+ * ram
16
+ * size
17
+ * type
18
+ * dhcp
19
+ * lan
20
+ * ionoscloud_username
21
+ * ionoscloud_password
22
+
23
+ ```
24
+ datacenter_id: --datacenter-id DATACENTER_ID, -D DATACENTER_ID
25
+ name of the virtual datacenter (required)
26
+
27
+ name: --name NAME, -n NAME
28
+ (required) Name of the server (required)
29
+
30
+ cores: --cores CORES, -C CORES
31
+ (required) The number of processor cores (required)
32
+
33
+ cpu_family: --cpu-family CPU_FAMILY, -f CPU_FAMILY
34
+ the family of processor cores (INTEL_XEON or AMD_OPTERON)
35
+
36
+ ram: --ram RAM, -r RAM
37
+ (required) The amount of RAM in MB (required)
38
+
39
+ availability_zone: --availability-zone AVAILABILITY_ZONE, -a AVAILABILITY_ZONE
40
+ the availability zone of the server
41
+
42
+ volume_name: --volume-name NAME
43
+ name of the volume
44
+
45
+ size: --size SIZE, -S SIZE
46
+ (required) The size of the volume in GB (required)
47
+
48
+ bus: --bus BUS, -b BUS
49
+ the bus type of the volume (VIRTIO or IDE)
50
+
51
+ image: --image ID, -N ID
52
+ (required) The image or snapshot ID
53
+
54
+ image_alias: --image-alias IMAGE_ALIAS
55
+ (required) The image alias
56
+
57
+ type: --type TYPE, -t TYPE
58
+ (required) The disk type (HDD or SSD) (required)
59
+
60
+ licence_type: --licence-type LICENCE, -l LICENCE
61
+ the licence type of the volume (LINUX, WINDOWS, WINDOWS2016, UNKNOWN, OTHER)
62
+
63
+ image_password: --image-password PASSWORD, -P PASSWORD
64
+ the password set on the image for the "root" or "Administrator" user
65
+
66
+ volume_availability_zone: --volume-availability-zone AVAILABILITY_ZONE, -Z AVAILABILITY_ZONE
67
+ the volume availability zone of the server
68
+
69
+ ssh_keys: --ssh-keys SSHKEY1,SSHKEY2,..., -K SSHKEY[,SSHKEY,...]
70
+ a list of public SSH keys to include
71
+
72
+ nic_name: --nic-name NAME
73
+ name of the NIC
74
+
75
+ ips: --ips IP[,IP,...], -i IP[,IP,...]
76
+ iPs assigned to the NIC
77
+
78
+ dhcp: --dhcp, -h
79
+ set to false if you wish to disable DHCP (required)
80
+
81
+ lan: --lan ID, -L ID
82
+ the LAN ID the NIC will reside on; if the LAN ID does not exist it will be created (required)
83
+
84
+ nat: --nat
85
+ set to enable NAT on the NIC
86
+
87
+ ionoscloud_username: --username USERNAME, -u USERNAME
88
+ your Ionoscloud username (required)
89
+
90
+ ionoscloud_password: --password PASSWORD, -p PASSWORD
91
+ your Ionoscloud password (required)
92
+
93
+ ```
94
+
95
+ ## Example
96
+
97
+ knife ionoscloud composite server create --datacenter-id DATACENTER_ID --name NAME --cores CORES --cpu-family CPU_FAMILY --ram RAM --availability-zone AVAILABILITY_ZONE --volume-name NAME --size SIZE --bus BUS --image ID --image-alias IMAGE_ALIAS --type TYPE --licence-type LICENCE --image-password PASSWORD --volume-availability-zone AVAILABILITY_ZONE --ssh-keys SSHKEY1,SSHKEY2,... --nic-name NAME --ips IP[,IP,...] --dhcp --lan ID --nat --username USERNAME --password PASSWORD
@@ -0,0 +1,26 @@
1
+ # ContractList
2
+
3
+ Lists information about available contract resources.
4
+
5
+ knife ionoscloud contract list
6
+
7
+
8
+ ## Available options:
9
+ ---
10
+
11
+ ### Required options:
12
+ * ionoscloud_username
13
+ * ionoscloud_password
14
+
15
+ ```
16
+ ionoscloud_username: --username USERNAME, -u USERNAME
17
+ your Ionoscloud username (required)
18
+
19
+ ionoscloud_password: --password PASSWORD, -p PASSWORD
20
+ your Ionoscloud password (required)
21
+
22
+ ```
23
+
24
+ ## Example
25
+
26
+ knife ionoscloud contract list--username USERNAME --password PASSWORD
@@ -0,0 +1,41 @@
1
+ # DatacenterCreate
2
+
3
+ Unless you are planning to manage an existing Ionoscloud environment, the first step will typically involve choosing the location for a new virtual data centerA list of locations can be obtained with location command.
4
+
5
+ knife ionoscloud location list
6
+
7
+ Make a note of the desired location ID and now the data center can be created.
8
+
9
+
10
+ knife ionoscloud datacenter create (options)
11
+
12
+
13
+ ## Available options:
14
+ ---
15
+
16
+ ### Required options:
17
+ * location
18
+ * ionoscloud_username
19
+ * ionoscloud_password
20
+
21
+ ```
22
+ name: --name NAME, -n NAME
23
+ name of the data center
24
+
25
+ description: --description DESCRIPTION, -D DESCRIPTION
26
+ description of the data center
27
+
28
+ location: --location LOCATION, -l LOCATION
29
+ location of the data center (required)
30
+
31
+ ionoscloud_username: --username USERNAME, -u USERNAME
32
+ your Ionoscloud username (required)
33
+
34
+ ionoscloud_password: --password PASSWORD, -p PASSWORD
35
+ your Ionoscloud password (required)
36
+
37
+ ```
38
+
39
+ ## Example
40
+
41
+ knife ionoscloud datacenter create --name NAME --description DESCRIPTION --location LOCATION --username USERNAME --password PASSWORD