knife-ionoscloud 5.0.0.beta.1 → 5.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +20 -0
  3. data/.github/workflows/ci.yml +4 -4
  4. data/.github/workflows/publish.yml +28 -14
  5. data/.rubocop.yml +0 -1
  6. data/README.md +81 -0
  7. data/docs/README.md +52 -18
  8. data/docs/changelog.md +2 -1
  9. data/docs/docs_generator.rb +2 -2
  10. data/docs/subcommands/backupunit_create.md +14 -9
  11. data/docs/subcommands/backupunit_delete.md +13 -8
  12. data/docs/subcommands/backupunit_get.md +35 -0
  13. data/docs/subcommands/backupunit_list.md +13 -8
  14. data/docs/subcommands/backupunit_ssourl.md +15 -10
  15. data/docs/subcommands/backupunit_update.md +41 -0
  16. data/docs/subcommands/composite_server_create.md +14 -9
  17. data/docs/subcommands/contract_list.md +13 -8
  18. data/docs/subcommands/datacenter_create.md +16 -9
  19. data/docs/subcommands/datacenter_delete.md +13 -8
  20. data/docs/subcommands/datacenter_get.md +35 -0
  21. data/docs/subcommands/datacenter_list.md +13 -8
  22. data/docs/subcommands/datacenter_update.md +44 -0
  23. data/docs/subcommands/firewall_create.md +17 -12
  24. data/docs/subcommands/firewall_delete.md +16 -11
  25. data/docs/subcommands/firewall_get.md +47 -0
  26. data/docs/subcommands/firewall_list.md +16 -11
  27. data/docs/subcommands/firewall_update.md +71 -0
  28. data/docs/subcommands/group_create.md +22 -8
  29. data/docs/subcommands/group_delete.md +13 -8
  30. data/docs/subcommands/group_get.md +14 -9
  31. data/docs/subcommands/group_list.md +13 -8
  32. data/docs/subcommands/group_update.md +65 -0
  33. data/docs/subcommands/group_user_add.md +14 -9
  34. data/docs/subcommands/group_user_remove.md +14 -9
  35. data/docs/subcommands/image_list.md +13 -8
  36. data/docs/subcommands/ipblock_create.md +14 -9
  37. data/docs/subcommands/ipblock_delete.md +13 -8
  38. data/docs/subcommands/ipblock_get.md +35 -0
  39. data/docs/subcommands/ipblock_list.md +13 -8
  40. data/docs/subcommands/ipblock_update.md +38 -0
  41. data/docs/subcommands/ipfailover_add.md +16 -11
  42. data/docs/subcommands/ipfailover_remove.md +16 -11
  43. data/docs/subcommands/k8s_create.md +23 -9
  44. data/docs/subcommands/k8s_delete.md +13 -8
  45. data/docs/subcommands/k8s_get.md +35 -0
  46. data/docs/subcommands/k8s_list.md +13 -8
  47. data/docs/subcommands/k8s_update.md +53 -0
  48. data/docs/subcommands/kubeconfig_get.md +14 -9
  49. data/docs/subcommands/label_add.md +14 -9
  50. data/docs/subcommands/label_list.md +13 -8
  51. data/docs/subcommands/label_remove.md +14 -9
  52. data/docs/subcommands/lan_create.md +17 -9
  53. data/docs/subcommands/lan_delete.md +14 -9
  54. data/docs/subcommands/lan_get.md +39 -0
  55. data/docs/subcommands/lan_list.md +14 -9
  56. data/docs/subcommands/lan_update.md +51 -0
  57. data/docs/subcommands/loadbalancer_create.md +15 -10
  58. data/docs/subcommands/loadbalancer_delete.md +14 -9
  59. data/docs/subcommands/loadbalancer_get.md +15 -10
  60. data/docs/subcommands/loadbalancer_list.md +14 -9
  61. data/docs/subcommands/loadbalancer_nic_add.md +15 -10
  62. data/docs/subcommands/loadbalancer_nic_remove.md +15 -10
  63. data/docs/subcommands/loadbalancer_update.md +48 -0
  64. data/docs/subcommands/location_list.md +13 -8
  65. data/docs/subcommands/nic_create.md +18 -14
  66. data/docs/subcommands/nic_delete.md +16 -11
  67. data/docs/subcommands/nic_get.md +43 -0
  68. data/docs/subcommands/nic_list.md +15 -10
  69. data/docs/subcommands/nic_update.md +58 -0
  70. data/docs/subcommands/node_delete.md +15 -10
  71. data/docs/subcommands/node_get.md +43 -0
  72. data/docs/subcommands/node_list.md +15 -10
  73. data/docs/subcommands/node_replace.md +16 -11
  74. data/docs/subcommands/nodepool_create.md +34 -20
  75. data/docs/subcommands/nodepool_delete.md +14 -9
  76. data/docs/subcommands/nodepool_get.md +39 -0
  77. data/docs/subcommands/nodepool_list.md +14 -9
  78. data/docs/subcommands/nodepool_update.md +69 -0
  79. data/docs/subcommands/pcc_create.md +14 -12
  80. data/docs/subcommands/pcc_delete.md +13 -8
  81. data/docs/subcommands/pcc_get.md +35 -0
  82. data/docs/subcommands/pcc_list.md +13 -8
  83. data/docs/subcommands/pcc_update.md +41 -0
  84. data/docs/subcommands/request_get.md +35 -0
  85. data/docs/subcommands/request_list.md +21 -10
  86. data/docs/subcommands/request_status.md +14 -9
  87. data/docs/subcommands/request_wait.md +14 -9
  88. data/docs/subcommands/resource_list.md +13 -8
  89. data/docs/subcommands/s3key_create.md +14 -9
  90. data/docs/subcommands/s3key_delete.md +14 -9
  91. data/docs/subcommands/s3key_get.md +39 -0
  92. data/docs/subcommands/s3key_list.md +14 -9
  93. data/docs/subcommands/server_create.md +15 -10
  94. data/docs/subcommands/server_delete.md +15 -10
  95. data/docs/subcommands/server_get.md +39 -0
  96. data/docs/subcommands/server_list.md +14 -9
  97. data/docs/subcommands/server_reboot.md +14 -9
  98. data/docs/subcommands/server_start.md +15 -10
  99. data/docs/subcommands/server_stop.md +14 -9
  100. data/docs/subcommands/server_update.md +60 -0
  101. data/docs/subcommands/share_create.md +16 -11
  102. data/docs/subcommands/share_delete.md +14 -9
  103. data/docs/subcommands/share_get.md +39 -0
  104. data/docs/subcommands/share_list.md +14 -9
  105. data/docs/subcommands/share_update.md +45 -0
  106. data/docs/subcommands/snapshot_create.md +27 -10
  107. data/docs/subcommands/snapshot_delete.md +13 -8
  108. data/docs/subcommands/snapshot_get.md +35 -0
  109. data/docs/subcommands/snapshot_list.md +13 -8
  110. data/docs/subcommands/snapshot_restore.md +16 -11
  111. data/docs/subcommands/snapshot_update.md +77 -0
  112. data/docs/subcommands/user_create.md +22 -12
  113. data/docs/subcommands/user_delete.md +13 -8
  114. data/docs/subcommands/user_get.md +35 -0
  115. data/docs/subcommands/user_list.md +14 -9
  116. data/docs/subcommands/user_ssourl.md +14 -9
  117. data/docs/subcommands/user_update.md +56 -0
  118. data/docs/subcommands/volume_attach.md +15 -10
  119. data/docs/subcommands/volume_create.md +38 -9
  120. data/docs/subcommands/volume_delete.md +14 -9
  121. data/docs/subcommands/volume_detach.md +15 -10
  122. data/docs/subcommands/volume_get.md +39 -0
  123. data/docs/subcommands/volume_list.md +14 -9
  124. data/docs/subcommands/volume_update.md +66 -0
  125. data/docs/summary.md +33 -0
  126. data/docs/templates/subcommand_doc.mustache +9 -7
  127. data/git-versioning.sh +113 -0
  128. data/lib/chef/knife/ionoscloud_backupunit_create.rb +11 -15
  129. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +2 -4
  130. data/lib/chef/knife/ionoscloud_backupunit_get.rb +33 -0
  131. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -0
  132. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +2 -1
  133. data/lib/chef/knife/ionoscloud_backupunit_update.rb +62 -0
  134. data/lib/chef/knife/ionoscloud_base.rb +258 -5
  135. data/lib/chef/knife/ionoscloud_composite_server_create.rb +4 -31
  136. data/lib/chef/knife/ionoscloud_contract_list.rb +1 -0
  137. data/lib/chef/knife/ionoscloud_datacenter_create.rb +12 -14
  138. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +2 -7
  139. data/lib/chef/knife/ionoscloud_datacenter_get.rb +33 -0
  140. data/lib/chef/knife/ionoscloud_datacenter_list.rb +4 -1
  141. data/lib/chef/knife/ionoscloud_datacenter_update.rb +67 -0
  142. data/lib/chef/knife/ionoscloud_firewall_create.rb +3 -13
  143. data/lib/chef/knife/ionoscloud_firewall_delete.rb +3 -10
  144. data/lib/chef/knife/ionoscloud_firewall_get.rb +50 -0
  145. data/lib/chef/knife/ionoscloud_firewall_list.rb +1 -0
  146. data/lib/chef/knife/ionoscloud_firewall_update.rb +131 -0
  147. data/lib/chef/knife/ionoscloud_group_create.rb +30 -21
  148. data/lib/chef/knife/ionoscloud_group_delete.rb +2 -11
  149. data/lib/chef/knife/ionoscloud_group_get.rb +2 -11
  150. data/lib/chef/knife/ionoscloud_group_list.rb +14 -7
  151. data/lib/chef/knife/ionoscloud_group_update.rb +114 -0
  152. data/lib/chef/knife/ionoscloud_group_user_add.rb +2 -13
  153. data/lib/chef/knife/ionoscloud_group_user_remove.rb +2 -13
  154. data/lib/chef/knife/ionoscloud_image_list.rb +4 -3
  155. data/lib/chef/knife/ionoscloud_ipblock_create.rb +12 -14
  156. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +3 -4
  157. data/lib/chef/knife/ionoscloud_ipblock_get.rb +33 -0
  158. data/lib/chef/knife/ionoscloud_ipblock_list.rb +4 -1
  159. data/lib/chef/knife/ionoscloud_ipblock_update.rb +57 -0
  160. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +8 -14
  161. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +2 -8
  162. data/lib/chef/knife/ionoscloud_k8s_create.rb +34 -18
  163. data/lib/chef/knife/ionoscloud_k8s_delete.rb +7 -11
  164. data/lib/chef/knife/ionoscloud_k8s_get.rb +33 -0
  165. data/lib/chef/knife/ionoscloud_k8s_list.rb +1 -0
  166. data/lib/chef/knife/ionoscloud_k8s_update.rb +99 -0
  167. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +1 -0
  168. data/lib/chef/knife/ionoscloud_label_add.rb +1 -0
  169. data/lib/chef/knife/ionoscloud_label_list.rb +1 -0
  170. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -0
  171. data/lib/chef/knife/ionoscloud_lan_create.rb +11 -12
  172. data/lib/chef/knife/ionoscloud_lan_delete.rb +3 -3
  173. data/lib/chef/knife/ionoscloud_lan_get.rb +38 -0
  174. data/lib/chef/knife/ionoscloud_lan_list.rb +6 -1
  175. data/lib/chef/knife/ionoscloud_lan_update.rb +87 -0
  176. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +6 -15
  177. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +2 -9
  178. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +4 -13
  179. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -0
  180. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +4 -13
  181. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +4 -13
  182. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +73 -0
  183. data/lib/chef/knife/ionoscloud_location_list.rb +1 -0
  184. data/lib/chef/knife/ionoscloud_nic_create.rb +17 -32
  185. data/lib/chef/knife/ionoscloud_nic_delete.rb +4 -8
  186. data/lib/chef/knife/ionoscloud_nic_get.rb +47 -0
  187. data/lib/chef/knife/ionoscloud_nic_list.rb +1 -0
  188. data/lib/chef/knife/ionoscloud_nic_update.rb +93 -0
  189. data/lib/chef/knife/ionoscloud_node_delete.rb +2 -6
  190. data/lib/chef/knife/ionoscloud_node_get.rb +47 -0
  191. data/lib/chef/knife/ionoscloud_node_list.rb +4 -1
  192. data/lib/chef/knife/ionoscloud_node_replace.rb +1 -0
  193. data/lib/chef/knife/ionoscloud_nodepool_create.rb +55 -51
  194. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +2 -7
  195. data/lib/chef/knife/ionoscloud_nodepool_get.rb +41 -0
  196. data/lib/chef/knife/ionoscloud_nodepool_list.rb +1 -0
  197. data/lib/chef/knife/ionoscloud_nodepool_update.rb +124 -0
  198. data/lib/chef/knife/ionoscloud_pcc_create.rb +42 -20
  199. data/lib/chef/knife/ionoscloud_pcc_delete.rb +2 -9
  200. data/lib/chef/knife/ionoscloud_pcc_get.rb +33 -0
  201. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -0
  202. data/lib/chef/knife/ionoscloud_pcc_update.rb +63 -0
  203. data/lib/chef/knife/ionoscloud_request_get.rb +40 -0
  204. data/lib/chef/knife/ionoscloud_request_list.rb +25 -11
  205. data/lib/chef/knife/ionoscloud_request_status.rb +1 -0
  206. data/lib/chef/knife/ionoscloud_request_wait.rb +1 -0
  207. data/lib/chef/knife/ionoscloud_resource_list.rb +1 -0
  208. data/lib/chef/knife/ionoscloud_s3key_create.rb +2 -5
  209. data/lib/chef/knife/ionoscloud_s3key_delete.rb +2 -4
  210. data/lib/chef/knife/ionoscloud_s3key_get.rb +38 -0
  211. data/lib/chef/knife/ionoscloud_s3key_list.rb +1 -0
  212. data/lib/chef/knife/ionoscloud_server_create.rb +14 -25
  213. data/lib/chef/knife/ionoscloud_server_delete.rb +3 -10
  214. data/lib/chef/knife/ionoscloud_server_get.rb +41 -0
  215. data/lib/chef/knife/ionoscloud_server_list.rb +3 -2
  216. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -0
  217. data/lib/chef/knife/ionoscloud_server_start.rb +1 -0
  218. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -0
  219. data/lib/chef/knife/ionoscloud_server_update.rb +97 -0
  220. data/lib/chef/knife/ionoscloud_share_create.rb +8 -12
  221. data/lib/chef/knife/ionoscloud_share_delete.rb +3 -4
  222. data/lib/chef/knife/ionoscloud_share_get.rb +38 -0
  223. data/lib/chef/knife/ionoscloud_share_list.rb +1 -0
  224. data/lib/chef/knife/ionoscloud_share_update.rb +70 -0
  225. data/lib/chef/knife/ionoscloud_snapshot_create.rb +26 -9
  226. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +2 -6
  227. data/lib/chef/knife/ionoscloud_snapshot_get.rb +32 -0
  228. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -0
  229. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +1 -0
  230. data/lib/chef/knife/ionoscloud_snapshot_update.rb +126 -0
  231. data/lib/chef/knife/ionoscloud_user_create.rb +28 -23
  232. data/lib/chef/knife/ionoscloud_user_delete.rb +2 -7
  233. data/lib/chef/knife/ionoscloud_user_get.rb +32 -0
  234. data/lib/chef/knife/ionoscloud_user_list.rb +2 -1
  235. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -0
  236. data/lib/chef/knife/ionoscloud_user_update.rb +92 -0
  237. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -0
  238. data/lib/chef/knife/ionoscloud_volume_create.rb +62 -38
  239. data/lib/chef/knife/ionoscloud_volume_delete.rb +2 -8
  240. data/lib/chef/knife/ionoscloud_volume_detach.rb +2 -8
  241. data/lib/chef/knife/ionoscloud_volume_get.rb +36 -0
  242. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -1
  243. data/lib/chef/knife/ionoscloud_volume_update.rb +106 -0
  244. data/lib/knife-ionoscloud/version.rb +1 -1
  245. data/sonar-project.properties +12 -0
  246. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +65 -0
  247. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +78 -0
  248. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +10 -0
  249. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +3 -0
  250. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +69 -0
  251. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +3 -1
  252. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +82 -0
  253. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +76 -0
  254. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +116 -0
  255. data/spec/chef/knife/ionoscloud_group_create_spec.rb +13 -0
  256. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +3 -0
  257. data/spec/chef/knife/ionoscloud_group_get_spec.rb +3 -0
  258. data/spec/chef/knife/ionoscloud_group_list_spec.rb +17 -8
  259. data/spec/chef/knife/ionoscloud_group_update_spec.rb +109 -0
  260. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +3 -0
  261. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +3 -0
  262. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  263. data/spec/chef/knife/ionoscloud_ipblock_delete_spec.rb +2 -0
  264. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +66 -0
  265. data/spec/chef/knife/ionoscloud_ipblock_list_spec.rb +3 -1
  266. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +79 -0
  267. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +2 -1
  268. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +4 -3
  269. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +8 -0
  270. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +12 -3
  271. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +73 -0
  272. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +115 -0
  273. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +3 -0
  274. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +2 -0
  275. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +68 -0
  276. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +5 -1
  277. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +91 -0
  278. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +89 -0
  279. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +70 -0
  280. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +92 -0
  281. data/spec/chef/knife/ionoscloud_node_get_spec.rb +70 -0
  282. data/spec/chef/knife/ionoscloud_node_list_spec.rb +3 -1
  283. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +13 -6
  284. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +27 -13
  285. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +83 -0
  286. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +130 -0
  287. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +39 -5
  288. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +1 -1
  289. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +71 -0
  290. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +83 -0
  291. data/spec/chef/knife/ionoscloud_request_get_spec.rb +69 -0
  292. data/spec/chef/knife/ionoscloud_request_list_spec.rb +125 -5
  293. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +66 -0
  294. data/spec/chef/knife/ionoscloud_server_get_spec.rb +71 -0
  295. data/spec/chef/knife/ionoscloud_server_list_spec.rb +2 -2
  296. data/spec/chef/knife/ionoscloud_server_update_spec.rb +102 -0
  297. data/spec/chef/knife/ionoscloud_share_get_spec.rb +66 -0
  298. data/spec/chef/knife/ionoscloud_share_update_spec.rb +91 -0
  299. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +23 -0
  300. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +12 -0
  301. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +79 -0
  302. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +113 -0
  303. data/spec/chef/knife/ionoscloud_user_create_spec.rb +3 -1
  304. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +4 -2
  305. data/spec/chef/knife/ionoscloud_user_get_spec.rb +70 -0
  306. data/spec/chef/knife/ionoscloud_user_update_spec.rb +110 -0
  307. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +9 -52
  308. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +9 -0
  309. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +9 -0
  310. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +80 -0
  311. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +115 -0
  312. data/spec/spec_helper.rb +101 -56
  313. metadata +140 -4
@@ -0,0 +1,40 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudRequestGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud request get (options)'
9
+
10
+ option :request_id,
11
+ short: '-R REQUEST_ID',
12
+ long: '--request-id REQUEST_ID',
13
+ description: 'The ID of the Request.'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Retrieves the properties of a specific request based on the supplied request id.'
21
+ @required_options = [:request_id, :ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ handle_extra_config
27
+ validate_required_params(@required_options, config)
28
+
29
+ request = Ionoscloud::RequestApi.new(api_client).requests_find_by_id(config[:request_id], depth: 1)
30
+ puts "#{ui.color('ID', :cyan)}: #{request.id}"
31
+ puts "#{ui.color('Status', :cyan)}: #{request.metadata.request_status.metadata.status}"
32
+ puts "#{ui.color('Method', :cyan)}: #{request.properties.method}"
33
+ puts "#{ui.color('URL', :cyan)}: #{request.properties.url}"
34
+ puts "#{ui.color('Targets', :cyan)}: #{request.metadata.request_status.metadata.targets.map { |target| [target.target.id, target.target.type] }.to_s}"
35
+ puts "#{ui.color('Body', :cyan)}: #{request.properties.body}"
36
+ puts "#{ui.color('Headers', :cyan)}: #{request.properties.headers}"
37
+ end
38
+ end
39
+ end
40
+ end
@@ -10,17 +10,22 @@ class Chef
10
10
  option :limit,
11
11
  short: '-l LIMIT',
12
12
  long: '--limit LIMIT',
13
- description: 'The maximum number of results.'
13
+ description: 'The maximum number of requests to look into.'
14
14
 
15
15
  option :offset,
16
16
  short: '-o OFFSET',
17
17
  long: '--offset OFFSET',
18
18
  description: 'The request number from which to return results.'
19
19
 
20
- # option :status,
21
- # short: '-s STATUS',
22
- # long: '--status STATUS',
23
- # description: 'Request status filter to fetch all the request based on a particular status [QUEUED, RUNNING, DONE, FAILED]'
20
+ option :status,
21
+ short: '-s STATUS',
22
+ long: '--status STATUS',
23
+ description: 'Request status filter to fetch all the request based on a particular status [QUEUED, RUNNING, DONE, FAILED]'
24
+
25
+ option :method,
26
+ short: '-m METHOD',
27
+ long: '--method METHOD',
28
+ description: 'Request method filter to fetch all the request based on a particular method [POST, PUT, PATCH, DELETE]'
24
29
 
25
30
  attr_reader :description, :required_options
26
31
 
@@ -37,6 +42,7 @@ class Chef
37
42
 
38
43
  def run
39
44
  $stdout.sync = true
45
+ handle_extra_config
40
46
  validate_required_params(@required_options, config)
41
47
 
42
48
  request_list = [
@@ -72,13 +78,21 @@ class Chef
72
78
  offset: config[:offset],
73
79
  }
74
80
 
75
- # if config[:status] && ['QUEUED', 'RUNNING', 'DONE', 'FAILED'].include?(config[:status])
76
- # opts[:status] = config[:status]
77
- # end
81
+ if config[:status] && ['QUEUED', 'RUNNING', 'DONE', 'FAILED'].include?(config[:status])
82
+ opts[:filter_request_status] = config[:status]
83
+ end
84
+
85
+ if config[:status] && !['QUEUED', 'RUNNING', 'DONE', 'FAILED'].include?(config[:status])
86
+ ui.warn('status should be one of [QUEUED, RUNNING, DONE, FAILED]')
87
+ end
78
88
 
79
- # if config[:status] && !['QUEUED', 'RUNNING', 'DONE', 'FAILED'].include?(config[:status])
80
- # ui.warn('status should be one of [QUEUED, RUNNING, DONE, FAILED]')
81
- # end
89
+ if config[:method] && ['POST', 'PUT', 'PATCH', 'DELETE'].include?(config[:method])
90
+ opts[:filter_method] = config[:method]
91
+ end
92
+
93
+ if config[:method] && !['POST', 'PUT', 'PATCH', 'DELETE'].include?(config[:method])
94
+ ui.warn('method should be one of [POST, PUT, PATCH, DELETE]')
95
+ end
82
96
 
83
97
  request_api.requests_get(opts).items.each do |request|
84
98
  request_list << request.id
@@ -23,6 +23,7 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
+ handle_extra_config
26
27
  validate_required_params(@required_options, config)
27
28
 
28
29
  begin
@@ -23,6 +23,7 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
+ handle_extra_config
26
27
  validate_required_params(@required_options, config)
27
28
 
28
29
  print "#{ui.color('Waiting for request...', :magenta)}"
@@ -45,6 +45,7 @@ class Chef
45
45
 
46
46
  def run
47
47
  $stdout.sync = true
48
+ handle_extra_config
48
49
  validate_required_params(@required_options, config)
49
50
 
50
51
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
@@ -23,6 +23,7 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
+ handle_extra_config
26
27
  validate_required_params(@required_options, config)
27
28
 
28
29
  print "#{ui.color('Creating S3key...', :magenta)}"
@@ -34,11 +35,7 @@ class Chef
34
35
  dot = ui.color('.', :magenta)
35
36
  api_client.wait_for { print dot; is_done? get_request_id headers }
36
37
 
37
- puts "\n"
38
- puts "#{ui.color('ID', :cyan)}: #{s3_key.id}"
39
- puts "#{ui.color('Secret Key', :cyan)}: #{s3_key.properties.secret_key}"
40
- puts "#{ui.color('Active', :cyan)}: #{s3_key.properties.active}"
41
- puts 'done'
38
+ print_s3key(s3_key)
42
39
  end
43
40
  end
44
41
  end
@@ -23,6 +23,7 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
+ handle_extra_config
26
27
  validate_required_params(@required_options, config)
27
28
 
28
29
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
@@ -36,10 +37,7 @@ class Chef
36
37
  next
37
38
  end
38
39
 
39
- msg_pair('ID', s3_key.id)
40
- msg_pair('Secret Key', s3_key.properties.secret_key)
41
- msg_pair('Active', s3_key.properties.active.to_s)
42
-
40
+ print_s3key(s3_key)
43
41
  puts "\n"
44
42
 
45
43
  begin
@@ -0,0 +1,38 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudS3keyGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud s3key get (options)'
9
+
10
+ option :user_id,
11
+ short: '-u USER_ID',
12
+ long: '--user USER_ID',
13
+ description: 'The ID of the user'
14
+
15
+ option :s3_key_id,
16
+ short: '-S S3KEY_ID',
17
+ long: '--s3-key S3KEY_ID',
18
+ description: 'The ID of the S3 Key.'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Retrieves the properties of an S3 Key.'
26
+ @required_options = [:user_id, :s3_key_id, :ionoscloud_username, :ionoscloud_password]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ handle_extra_config
32
+ validate_required_params(@required_options, config)
33
+
34
+ print_s3key(Ionoscloud::UserManagementApi.new(api_client).um_users_s3keys_find_by_key_id(config[:user_id], config[:s3_key_id]))
35
+ end
36
+ end
37
+ end
38
+ end
@@ -23,6 +23,7 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
+ handle_extra_config
26
27
  validate_required_params(@required_options, config)
27
28
 
28
29
  s3key_list = [
@@ -55,49 +55,38 @@ class Chef
55
55
  "One of the unique features of the Ionoscloud platform when compared "\
56
56
  "with the other providers is that they allow you to define your own settings "\
57
57
  "for cores, memory, and disk size without being tied to a particular size or flavor.\n\n"\
58
- "Note: *The memory parameter value must be a multiple of 256, e.g. 256, 512, 768, 1024, and so forth.*"
58
+ "Note: _The memory parameter value must be a multiple of 256, e.g. 256, 512, 768, 1024, and so forth._"
59
59
  @required_options = [:datacenter_id, :cores, :ram, :ionoscloud_username, :ionoscloud_password]
60
60
  end
61
61
 
62
62
  def run
63
63
  $stdout.sync = true
64
+ handle_extra_config
64
65
  validate_required_params(@required_options, config)
65
66
 
66
67
  print "#{ui.color('Creating server...', :magenta)}"
67
- params = {
68
- name: config[:name],
69
- cores: config[:cores],
70
- cpuFamily: config[:cpu_family],
71
- ram: config[:ram],
72
- availabilityZone: config[:availability_zone]
73
- }
74
-
75
- params[:bootCdrom] = { id: config[:boot_cdrom] } unless config[:boot_cdrom].nil?
76
- params[:bootVolume] = { id: config[:boot_volume] } unless config[:boot_volume].nil?
77
68
 
78
69
  server_api = Ionoscloud::ServerApi.new(api_client)
79
70
 
80
71
  server, _, headers = server_api.datacenters_servers_post_with_http_info(
81
72
  config[:datacenter_id],
82
- { properties: params.compact },
73
+ Ionoscloud::Server.new(
74
+ properties: Ionoscloud::ServerProperties.new(
75
+ name: config[:name],
76
+ cores: config[:cores],
77
+ cpu_family: config[:cpu_family],
78
+ ram: config[:ram],
79
+ availability_zone: config[:availability_zone],
80
+ boot_cdrom: config.key?(:boot_cdrom) ? { id: config[:boot_cdrom] } : nil,
81
+ boot_volume: config.key?(:boot_volume) ? { id: config[:boot_volume] } : nil,
82
+ ),
83
+ ),
83
84
  )
84
85
 
85
86
  dot = ui.color('.', :magenta)
86
87
  api_client.wait_for { print dot; is_done? get_request_id headers }
87
88
 
88
- server = server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id)
89
-
90
- puts "\n"
91
- puts "#{ui.color('ID', :cyan)}: #{server.id}"
92
- puts "#{ui.color('Name', :cyan)}: #{server.properties.name}"
93
- puts "#{ui.color('Cores', :cyan)}: #{server.properties.cores}"
94
- puts "#{ui.color('CPU Family', :cyan)}: #{server.properties.cpu_family}"
95
- puts "#{ui.color('Ram', :cyan)}: #{server.properties.ram}"
96
- puts "#{ui.color('Availability Zone', :cyan)}: #{server.properties.availability_zone}"
97
- puts "#{ui.color('Boot Volume', :cyan)}: #{server.properties.boot_volume ? server.properties.boot_volume.id : ''}"
98
- puts "#{ui.color('Boot CDROM', :cyan)}: #{server.properties.boot_cdrom ? server.properties.boot_cdrom.id : ''}"
99
-
100
- puts 'done'
89
+ print_server(server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id))
101
90
  end
102
91
  end
103
92
  end
@@ -18,13 +18,14 @@ class Chef
18
18
  super(args)
19
19
  @description =
20
20
  "This will remove a server from a VDC.\n\n"\
21
- "**NOTE**: This will not automatically remove the storage volume(s) "\
21
+ "**NOTE**: This will not automatically remove the storage volume\\(s\\) "\
22
22
  "attached to a server. A separate API call is required to perform that action."
23
23
  @required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
24
24
  end
25
25
 
26
26
  def run
27
27
  $stdout.sync = true
28
+ handle_extra_config
28
29
  validate_required_params(@required_options, config)
29
30
 
30
31
  server_api = Ionoscloud::ServerApi.new(api_client)
@@ -37,15 +38,7 @@ class Chef
37
38
  ui.error("Server ID #{server_id} not found. Skipping.")
38
39
  next
39
40
  end
40
-
41
- msg_pair('ID', server.id)
42
- msg_pair('Name', server.properties.name)
43
- msg_pair('Cores', server.properties.cores)
44
- msg_pair('CPU Family', server.properties.cpu_family)
45
- msg_pair('Ram', server.properties.ram)
46
- msg_pair('Availability Zone', server.properties.availability_zone)
47
- msg_pair('Boot Volume', server.properties.boot_volume.id)
48
- msg_pair('Boot CDROM', server.properties.boot_cdrom.id)
41
+ print_server(server)
49
42
 
50
43
  begin
51
44
  confirm('Do you really want to delete this server')
@@ -0,0 +1,41 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server get (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'ID of the data center'
14
+
15
+ option :server_id,
16
+ short: '-S SERVER_ID',
17
+ long: '--server-id SERVER_ID',
18
+ description: 'The ID of the server to which the NIC is assigned'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Retrieves the attributes of a given Server.'
26
+ @required_options = [:datacenter_id, :server_id, :ionoscloud_username, :ionoscloud_password]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ handle_extra_config
32
+ validate_required_params(@required_options, config)
33
+
34
+ print_server(Ionoscloud::ServerApi.new(api_client).datacenters_servers_find_by_id(
35
+ config[:datacenter_id],
36
+ config[:server_id],
37
+ ))
38
+ end
39
+ end
40
+ end
41
+ end
@@ -23,6 +23,7 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
+ handle_extra_config
26
27
  validate_required_params(@required_options, config)
27
28
 
28
29
  server_list = [
@@ -47,8 +48,8 @@ class Chef
47
48
  server_list << server.properties.ram.to_s
48
49
  server_list << server.properties.availability_zone
49
50
  server_list << server.properties.vm_state
50
- server_list << server.properties.boot_volume || ''
51
- server_list << server.properties.boot_cdrom || ''
51
+ server_list << (server.properties.boot_volume.nil? ? '' : server.properties.boot_volume.id)
52
+ server_list << (server.properties.boot_cdrom.nil? ? '' : server.properties.boot_cdrom.id)
52
53
  end
53
54
 
54
55
  puts ui.list(server_list, :uneven_columns_across, 9)
@@ -25,6 +25,7 @@ class Chef
25
25
 
26
26
  def run
27
27
  $stdout.sync = true
28
+ handle_extra_config
28
29
  validate_required_params(@required_options, config)
29
30
 
30
31
  server_api = Ionoscloud::ServerApi.new(api_client)
@@ -23,6 +23,7 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
+ handle_extra_config
26
27
  validate_required_params(@required_options, config)
27
28
 
28
29
  server_api = Ionoscloud::ServerApi.new(api_client)
@@ -24,6 +24,7 @@ class Chef
24
24
 
25
25
  def run
26
26
  $stdout.sync = true
27
+ handle_extra_config
27
28
  validate_required_params(@required_options, config)
28
29
 
29
30
  server_api = Ionoscloud::ServerApi.new(api_client)
@@ -0,0 +1,97 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerUpdate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server update (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'ID of the data center'
14
+
15
+ option :server_id,
16
+ short: '-S SERVER_ID',
17
+ long: '--server-id SERVER_ID',
18
+ description: 'The ID of the server to which the NIC is assigned'
19
+
20
+ option :name,
21
+ short: '-n NAME',
22
+ long: '--name NAME',
23
+ description: 'Name of the server'
24
+
25
+ option :cores,
26
+ short: '-C CORES',
27
+ long: '--cores CORES',
28
+ description: 'The number of processor cores'
29
+
30
+ option :cpu_family,
31
+ short: '-f CPU_FAMILY',
32
+ long: '--cpu-family CPU_FAMILY',
33
+ description: 'The family of the CPU (INTEL_XEON or AMD_OPTERON)'
34
+
35
+ option :ram,
36
+ short: '-r RAM',
37
+ long: '--ram RAM',
38
+ description: 'The amount of RAM in MB'
39
+
40
+ option :availability_zone,
41
+ short: '-a AVAILABILITY_ZONE',
42
+ long: '--availability-zone AVAILABILITY_ZONE',
43
+ description: 'The availability zone of the server'
44
+
45
+ option :boot_volume,
46
+ long: '--boot-volume VOLUME_ID',
47
+ description: 'Reference to a volume used for booting'
48
+
49
+ option :boot_cdrom,
50
+ long: '--boot-cdrom CDROM_ID',
51
+ description: 'Reference to a CD-ROM used for booting'
52
+
53
+ attr_reader :description, :required_options
54
+
55
+ def initialize(args = [])
56
+ super(args)
57
+ @description =
58
+ 'Updates information about a Ionoscloud Server.'
59
+ @required_options = [:datacenter_id, :server_id, :ionoscloud_username, :ionoscloud_password]
60
+ @updatable_fields = [:name, :cores, :cpu_family, :ram, :availability_zone, :boot_volume, :boot_cdrom]
61
+ end
62
+
63
+ def run
64
+ $stdout.sync = true
65
+ handle_extra_config
66
+ validate_required_params(@required_options, config)
67
+
68
+ server_api = Ionoscloud::ServerApi.new(api_client)
69
+
70
+ if @updatable_fields.map { |el| config[el] }.any?
71
+ print "#{ui.color('Updating Server...', :magenta)}"
72
+
73
+ _, _, headers = server_api.datacenters_servers_patch_with_http_info(
74
+ config[:datacenter_id],
75
+ config[:server_id],
76
+ Ionoscloud::ServerProperties.new(
77
+ name: config[:name],
78
+ cores: config[:cores],
79
+ cpu_family: config[:cpu_family],
80
+ ram: config[:ram],
81
+ availability_zone: config[:availability_zone],
82
+ boot_cdrom: config.key?(:boot_cdrom) ? { id: config[:boot_cdrom] } : nil,
83
+ boot_volume: config.key?(:boot_volume) ? { id: config[:boot_volume] } : nil,
84
+ ),
85
+ )
86
+
87
+ dot = ui.color('.', :magenta)
88
+ api_client.wait_for { print dot; is_done? get_request_id headers }
89
+ else
90
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
91
+ end
92
+
93
+ print_server(server_api.datacenters_servers_find_by_id(config[:datacenter_id], config[:server_id]))
94
+ end
95
+ end
96
+ end
97
+ end
@@ -18,7 +18,6 @@ class Chef
18
18
  description: 'The ID of the resource.'
19
19
 
20
20
  option :edit_privilege,
21
- short: '-e',
22
21
  long: '--edit',
23
22
  description: 'The group has permission to edit privileges on this resource.'
24
23
 
@@ -40,6 +39,7 @@ class Chef
40
39
 
41
40
  def run
42
41
  $stdout.sync = true
42
+ handle_extra_config
43
43
  validate_required_params(@required_options, config)
44
44
 
45
45
  print "#{ui.color('Sharing Resource...', :magenta)}"
@@ -49,22 +49,18 @@ class Chef
49
49
  share, _, headers = user_management_api.um_groups_shares_post_with_http_info(
50
50
  config[:group_id],
51
51
  config[:resource_id],
52
- {
53
- properties: {
54
- editPrivilege: config[:edit_privilege],
55
- sharePrivilege: config[:share_privilege],
56
- }.compact,
57
- },
52
+ Ionoscloud::GroupShare.new(
53
+ properties: Ionoscloud::GroupShareProperties.new(
54
+ edit_privilege: config[:edit_privilege],
55
+ share_privilege: config[:share_privilege],
56
+ ),
57
+ ),
58
58
  )
59
59
 
60
60
  dot = ui.color('.', :magenta)
61
61
  api_client.wait_for { print dot; is_done? get_request_id headers }
62
62
 
63
- puts "\n"
64
- puts "#{ui.color('ID', :cyan)}: #{share.id}"
65
- puts "#{ui.color('Edit Privilege', :cyan)}: #{share.properties.edit_privilege.to_s}"
66
- puts "#{ui.color('Share Privilege', :cyan)}: #{share.properties.share_privilege.to_s}"
67
- puts 'done'
63
+ print_share(share)
68
64
  end
69
65
  end
70
66
  end
@@ -5,7 +5,7 @@ class Chef
5
5
  class IonoscloudShareDelete < Knife
6
6
  include Knife::IonoscloudBase
7
7
 
8
- banner 'knife ionoscloud server delete SHARE_ID [SHARE_ID] (options)'
8
+ banner 'knife ionoscloud server delete RESOURCE_ID [RESOURCE_ID] (options)'
9
9
 
10
10
  option :group_id,
11
11
  short: '-G GROUP_ID',
@@ -23,6 +23,7 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
+ handle_extra_config
26
27
  validate_required_params(@required_options, config)
27
28
 
28
29
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
@@ -36,9 +37,7 @@ class Chef
36
37
  next
37
38
  end
38
39
 
39
- msg_pair('ID', share.id)
40
- msg_pair('Edit Privilege', share.properties.edit_privilege.to_s)
41
- msg_pair('Share Privilege', share.properties.share_privilege.to_s)
40
+ print_share(share)
42
41
 
43
42
  begin
44
43
  confirm('Do you really want to delete this Resource Share')
@@ -0,0 +1,38 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudShareGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud share get (options)'
9
+
10
+ option :group_id,
11
+ short: '-G GROUP_ID',
12
+ long: '--group-id GROUP_ID',
13
+ description: 'ID of the group.'
14
+
15
+ option :resource_id,
16
+ short: '-R RESOURCE_ID',
17
+ long: '--resource-id RESOURCE_ID',
18
+ description: 'The ID of the resource.'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Retrieves the attributes of a given Group Share.'
26
+ @required_options = [:group_id, :resource_id, :ionoscloud_username, :ionoscloud_password]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ handle_extra_config
32
+ validate_required_params(@required_options, config)
33
+
34
+ print_share(Ionoscloud::UserManagementApi.new(api_client).um_groups_shares_find_by_resource_id(config[:group_id], config[:resource_id]))
35
+ end
36
+ end
37
+ end
38
+ end
@@ -24,6 +24,7 @@ class Chef
24
24
 
25
25
  def run
26
26
  $stdout.sync = true
27
+ handle_extra_config
27
28
  validate_required_params(@required_options, config)
28
29
 
29
30
  share_list = [