knife-ionoscloud 5.0.0 → 6.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (330) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +4 -4
  3. data/.github/workflows/publish.yml +4 -1
  4. data/.rubocop.yml +0 -1
  5. data/docs/README.md +20 -0
  6. data/docs/docs_generator.rb +2 -2
  7. data/docs/subcommands/backupunit_create.md +5 -3
  8. data/docs/subcommands/backupunit_delete.md +5 -3
  9. data/docs/subcommands/backupunit_list.md +5 -3
  10. data/docs/subcommands/backupunit_ssourl.md +5 -3
  11. data/docs/subcommands/composite_server_create.md +13 -5
  12. data/docs/subcommands/contract_list.md +5 -3
  13. data/docs/subcommands/cube_server_create.md +91 -0
  14. data/docs/subcommands/datacenter_create.md +7 -4
  15. data/docs/subcommands/datacenter_delete.md +5 -3
  16. data/docs/subcommands/datacenter_list.md +5 -3
  17. data/docs/subcommands/firewall_create.md +9 -4
  18. data/docs/subcommands/firewall_delete.md +4 -2
  19. data/docs/subcommands/firewall_list.md +5 -3
  20. data/docs/subcommands/flowlog_create.md +63 -0
  21. data/docs/subcommands/flowlog_delete.md +51 -0
  22. data/docs/subcommands/flowlog_list.md +51 -0
  23. data/docs/subcommands/group_create.md +23 -3
  24. data/docs/subcommands/group_delete.md +5 -3
  25. data/docs/subcommands/group_get.md +5 -3
  26. data/docs/subcommands/group_list.md +5 -3
  27. data/docs/subcommands/group_user_add.md +4 -2
  28. data/docs/subcommands/group_user_remove.md +4 -2
  29. data/docs/subcommands/image_list.md +5 -3
  30. data/docs/subcommands/ipblock_create.md +5 -3
  31. data/docs/subcommands/ipblock_delete.md +5 -3
  32. data/docs/subcommands/ipblock_list.md +5 -3
  33. data/docs/subcommands/ipfailover_add.md +6 -4
  34. data/docs/subcommands/ipfailover_remove.md +5 -3
  35. data/docs/subcommands/k8s_create.md +11 -3
  36. data/docs/subcommands/k8s_delete.md +5 -3
  37. data/docs/subcommands/k8s_list.md +5 -3
  38. data/docs/subcommands/kubeconfig_get.md +5 -3
  39. data/docs/subcommands/label_add.md +5 -3
  40. data/docs/subcommands/label_list.md +5 -3
  41. data/docs/subcommands/label_remove.md +4 -2
  42. data/docs/subcommands/lan_create.md +8 -3
  43. data/docs/subcommands/lan_delete.md +4 -2
  44. data/docs/subcommands/lan_list.md +5 -3
  45. data/docs/subcommands/loadbalancer_create.md +5 -3
  46. data/docs/subcommands/loadbalancer_delete.md +4 -2
  47. data/docs/subcommands/loadbalancer_get.md +5 -3
  48. data/docs/subcommands/loadbalancer_list.md +5 -3
  49. data/docs/subcommands/loadbalancer_nic_add.md +4 -2
  50. data/docs/subcommands/loadbalancer_nic_remove.md +4 -2
  51. data/docs/subcommands/location_list.md +5 -3
  52. data/docs/subcommands/natgateway_create.md +41 -0
  53. data/docs/subcommands/natgateway_delete.md +35 -0
  54. data/docs/subcommands/natgateway_lan_add.md +46 -0
  55. data/docs/subcommands/natgateway_lan_remove.md +39 -0
  56. data/docs/subcommands/natgateway_list.md +35 -0
  57. data/docs/subcommands/natgateway_rule_add.md +66 -0
  58. data/docs/subcommands/natgateway_rule_list.md +38 -0
  59. data/docs/subcommands/natgateway_rule_remove.md +39 -0
  60. data/docs/subcommands/networkloadbalancer_create.md +54 -0
  61. data/docs/subcommands/networkloadbalancer_delete.md +35 -0
  62. data/docs/subcommands/networkloadbalancer_list.md +35 -0
  63. data/docs/subcommands/networkloadbalancer_rule_add.md +72 -0
  64. data/docs/subcommands/networkloadbalancer_rule_list.md +39 -0
  65. data/docs/subcommands/networkloadbalancer_rule_remove.md +39 -0
  66. data/docs/subcommands/networkloadbalancer_rule_target_add.md +64 -0
  67. data/docs/subcommands/networkloadbalancer_rule_target_list.md +43 -0
  68. data/docs/subcommands/networkloadbalancer_rule_target_remove.md +51 -0
  69. data/docs/subcommands/nic_create.md +7 -5
  70. data/docs/subcommands/nic_delete.md +4 -2
  71. data/docs/subcommands/nic_list.md +5 -3
  72. data/docs/subcommands/node_delete.md +4 -2
  73. data/docs/subcommands/node_list.md +5 -3
  74. data/docs/subcommands/node_replace.md +4 -2
  75. data/docs/subcommands/nodepool_create.md +8 -3
  76. data/docs/subcommands/nodepool_delete.md +4 -2
  77. data/docs/subcommands/nodepool_lan_add.md +49 -0
  78. data/docs/subcommands/nodepool_lan_remove.md +39 -0
  79. data/docs/subcommands/nodepool_list.md +5 -3
  80. data/docs/subcommands/pcc_create.md +6 -7
  81. data/docs/subcommands/pcc_delete.md +5 -3
  82. data/docs/subcommands/pcc_list.md +5 -3
  83. data/docs/subcommands/request_list.md +12 -4
  84. data/docs/subcommands/request_status.md +5 -3
  85. data/docs/subcommands/request_wait.md +5 -3
  86. data/docs/subcommands/resource_list.md +7 -3
  87. data/docs/subcommands/s3key_create.md +5 -3
  88. data/docs/subcommands/s3key_delete.md +4 -2
  89. data/docs/subcommands/s3key_list.md +5 -3
  90. data/docs/subcommands/server_console.md +39 -0
  91. data/docs/subcommands/server_create.md +5 -3
  92. data/docs/subcommands/server_delete.md +4 -2
  93. data/docs/subcommands/server_list.md +8 -3
  94. data/docs/subcommands/server_reboot.md +4 -2
  95. data/docs/subcommands/server_resume.md +35 -0
  96. data/docs/subcommands/server_start.md +4 -2
  97. data/docs/subcommands/server_stop.md +4 -2
  98. data/docs/subcommands/server_suspend.md +35 -0
  99. data/docs/subcommands/server_token.md +39 -0
  100. data/docs/subcommands/server_upgrade.md +39 -0
  101. data/docs/subcommands/share_create.md +5 -3
  102. data/docs/subcommands/share_delete.md +4 -2
  103. data/docs/subcommands/share_list.md +5 -3
  104. data/docs/subcommands/snapshot_create.md +17 -3
  105. data/docs/subcommands/snapshot_delete.md +5 -3
  106. data/docs/subcommands/snapshot_list.md +5 -3
  107. data/docs/subcommands/snapshot_restore.md +5 -3
  108. data/docs/subcommands/template_list.md +31 -0
  109. data/docs/subcommands/user_create.md +6 -4
  110. data/docs/subcommands/user_delete.md +5 -3
  111. data/docs/subcommands/user_list.md +5 -3
  112. data/docs/subcommands/user_ssourl.md +5 -3
  113. data/docs/subcommands/volume_attach.md +4 -2
  114. data/docs/subcommands/volume_create.md +12 -7
  115. data/docs/subcommands/volume_delete.md +4 -2
  116. data/docs/subcommands/volume_detach.md +4 -2
  117. data/docs/subcommands/volume_list.md +5 -3
  118. data/docs/summary.md +29 -1
  119. data/docs/templates/subcommand_doc.mustache +9 -7
  120. data/knife-ionoscloud.gemspec +1 -1
  121. data/lib/chef/knife/ionoscloud_backupunit_create.rb +2 -1
  122. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +2 -1
  123. data/lib/chef/knife/ionoscloud_backupunit_list.rb +2 -1
  124. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +3 -2
  125. data/lib/chef/knife/ionoscloud_base.rb +24 -1
  126. data/lib/chef/knife/ionoscloud_composite_server_create.rb +26 -23
  127. data/lib/chef/knife/ionoscloud_contract_list.rb +33 -23
  128. data/lib/chef/knife/ionoscloud_cube_server_create.rb +216 -0
  129. data/lib/chef/knife/ionoscloud_datacenter_create.rb +3 -2
  130. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +2 -1
  131. data/lib/chef/knife/ionoscloud_datacenter_list.rb +5 -2
  132. data/lib/chef/knife/ionoscloud_firewall_create.rb +12 -4
  133. data/lib/chef/knife/ionoscloud_firewall_delete.rb +5 -3
  134. data/lib/chef/knife/ionoscloud_firewall_list.rb +6 -3
  135. data/lib/chef/knife/ionoscloud_flowlog_create.rb +122 -0
  136. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +107 -0
  137. data/lib/chef/knife/ionoscloud_flowlog_list.rb +101 -0
  138. data/lib/chef/knife/ionoscloud_group_create.rb +51 -11
  139. data/lib/chef/knife/ionoscloud_group_delete.rb +8 -0
  140. data/lib/chef/knife/ionoscloud_group_get.rb +7 -0
  141. data/lib/chef/knife/ionoscloud_group_list.rb +20 -7
  142. data/lib/chef/knife/ionoscloud_group_user_add.rb +1 -0
  143. data/lib/chef/knife/ionoscloud_group_user_remove.rb +1 -0
  144. data/lib/chef/knife/ionoscloud_image_list.rb +5 -4
  145. data/lib/chef/knife/ionoscloud_ipblock_create.rb +2 -1
  146. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +1 -0
  147. data/lib/chef/knife/ionoscloud_ipblock_list.rb +4 -1
  148. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +2 -1
  149. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +2 -1
  150. data/lib/chef/knife/ionoscloud_k8s_create.rb +19 -0
  151. data/lib/chef/knife/ionoscloud_k8s_delete.rb +6 -2
  152. data/lib/chef/knife/ionoscloud_k8s_list.rb +1 -0
  153. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +1 -0
  154. data/lib/chef/knife/ionoscloud_label_add.rb +2 -1
  155. data/lib/chef/knife/ionoscloud_label_list.rb +2 -1
  156. data/lib/chef/knife/ionoscloud_label_remove.rb +2 -1
  157. data/lib/chef/knife/ionoscloud_lan_create.rb +8 -1
  158. data/lib/chef/knife/ionoscloud_lan_delete.rb +2 -1
  159. data/lib/chef/knife/ionoscloud_lan_list.rb +5 -2
  160. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +4 -2
  161. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +2 -1
  162. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +2 -1
  163. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +2 -1
  164. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +2 -1
  165. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +2 -1
  166. data/lib/chef/knife/ionoscloud_location_list.rb +6 -3
  167. data/lib/chef/knife/ionoscloud_natgateway_create.rb +70 -0
  168. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +70 -0
  169. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +81 -0
  170. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +59 -0
  171. data/lib/chef/knife/ionoscloud_natgateway_list.rb +50 -0
  172. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +125 -0
  173. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +64 -0
  174. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +73 -0
  175. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +96 -0
  176. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +82 -0
  177. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +57 -0
  178. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +151 -0
  179. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +64 -0
  180. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +79 -0
  181. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +142 -0
  182. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +69 -0
  183. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +106 -0
  184. data/lib/chef/knife/ionoscloud_nic_create.rb +17 -14
  185. data/lib/chef/knife/ionoscloud_nic_delete.rb +5 -2
  186. data/lib/chef/knife/ionoscloud_nic_list.rb +10 -5
  187. data/lib/chef/knife/ionoscloud_node_delete.rb +1 -0
  188. data/lib/chef/knife/ionoscloud_node_list.rb +4 -2
  189. data/lib/chef/knife/ionoscloud_node_replace.rb +1 -0
  190. data/lib/chef/knife/ionoscloud_nodepool_create.rb +43 -16
  191. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +26 -0
  192. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +129 -0
  193. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +97 -0
  194. data/lib/chef/knife/ionoscloud_nodepool_list.rb +4 -1
  195. data/lib/chef/knife/ionoscloud_pcc_create.rb +36 -8
  196. data/lib/chef/knife/ionoscloud_pcc_delete.rb +2 -1
  197. data/lib/chef/knife/ionoscloud_pcc_list.rb +2 -1
  198. data/lib/chef/knife/ionoscloud_request_list.rb +26 -12
  199. data/lib/chef/knife/ionoscloud_request_status.rb +2 -1
  200. data/lib/chef/knife/ionoscloud_request_wait.rb +1 -0
  201. data/lib/chef/knife/ionoscloud_resource_list.rb +1 -0
  202. data/lib/chef/knife/ionoscloud_s3key_create.rb +3 -2
  203. data/lib/chef/knife/ionoscloud_s3key_delete.rb +4 -3
  204. data/lib/chef/knife/ionoscloud_s3key_list.rb +3 -2
  205. data/lib/chef/knife/ionoscloud_server_console.rb +43 -0
  206. data/lib/chef/knife/ionoscloud_server_create.rb +10 -9
  207. data/lib/chef/knife/ionoscloud_server_delete.rb +5 -4
  208. data/lib/chef/knife/ionoscloud_server_list.rb +19 -7
  209. data/lib/chef/knife/ionoscloud_server_reboot.rb +2 -1
  210. data/lib/chef/knife/ionoscloud_server_resume.rb +44 -0
  211. data/lib/chef/knife/ionoscloud_server_start.rb +2 -1
  212. data/lib/chef/knife/ionoscloud_server_stop.rb +2 -1
  213. data/lib/chef/knife/ionoscloud_server_suspend.rb +45 -0
  214. data/lib/chef/knife/ionoscloud_server_token.rb +43 -0
  215. data/lib/chef/knife/ionoscloud_server_upgrade.rb +45 -0
  216. data/lib/chef/knife/ionoscloud_share_create.rb +1 -0
  217. data/lib/chef/knife/ionoscloud_share_delete.rb +1 -0
  218. data/lib/chef/knife/ionoscloud_share_list.rb +1 -0
  219. data/lib/chef/knife/ionoscloud_snapshot_create.rb +27 -2
  220. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +2 -1
  221. data/lib/chef/knife/ionoscloud_snapshot_list.rb +2 -1
  222. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +3 -2
  223. data/lib/chef/knife/ionoscloud_template_list.rb +47 -0
  224. data/lib/chef/knife/ionoscloud_user_create.rb +5 -4
  225. data/lib/chef/knife/ionoscloud_user_delete.rb +1 -0
  226. data/lib/chef/knife/ionoscloud_user_list.rb +2 -1
  227. data/lib/chef/knife/ionoscloud_user_ssourl.rb +2 -1
  228. data/lib/chef/knife/ionoscloud_volume_attach.rb +2 -1
  229. data/lib/chef/knife/ionoscloud_volume_create.rb +34 -35
  230. data/lib/chef/knife/ionoscloud_volume_delete.rb +2 -1
  231. data/lib/chef/knife/ionoscloud_volume_detach.rb +2 -1
  232. data/lib/chef/knife/ionoscloud_volume_list.rb +4 -3
  233. data/lib/knife-ionoscloud/version.rb +1 -1
  234. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  235. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  236. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  237. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  238. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  239. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  240. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  241. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  242. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +3 -2
  243. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +5 -5
  244. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +5 -3
  245. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  246. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  247. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  248. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  249. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  250. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  251. data/spec/chef/knife/ionoscloud_group_create_spec.rb +12 -0
  252. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +6 -0
  253. data/spec/chef/knife/ionoscloud_group_get_spec.rb +6 -0
  254. data/spec/chef/knife/ionoscloud_group_list_spec.rb +26 -8
  255. data/spec/chef/knife/ionoscloud_image_list_spec.rb +4 -4
  256. data/spec/chef/knife/ionoscloud_ipblock_list_spec.rb +3 -1
  257. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +3 -3
  258. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +4 -4
  259. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +5 -2
  260. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  261. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  262. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  263. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  264. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +5 -3
  265. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +5 -5
  266. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +5 -3
  267. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  268. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  269. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  270. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  271. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  272. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  273. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  274. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +77 -0
  275. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  276. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +143 -0
  277. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +194 -0
  278. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  279. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +98 -0
  280. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  281. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +77 -0
  282. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +80 -0
  283. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +119 -0
  284. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  285. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +104 -0
  286. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  287. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +124 -0
  288. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +109 -0
  289. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  290. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +263 -0
  291. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  292. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  293. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  294. data/spec/chef/knife/ionoscloud_node_list_spec.rb +3 -1
  295. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +15 -1
  296. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +226 -0
  297. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +199 -0
  298. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  299. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +36 -5
  300. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +5 -5
  301. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  302. data/spec/chef/knife/ionoscloud_request_list_spec.rb +127 -8
  303. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  304. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  305. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  306. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  307. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  308. data/spec/chef/knife/ionoscloud_server_create_spec.rb +3 -3
  309. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +5 -5
  310. data/spec/chef/knife/ionoscloud_server_list_spec.rb +65 -7
  311. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  312. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  313. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  314. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  315. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  316. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  317. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  318. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +13 -3
  319. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +5 -5
  320. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  321. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +3 -3
  322. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  323. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  324. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  325. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +6 -58
  326. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +5 -5
  327. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -5
  328. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  329. data/spec/spec_helper.rb +235 -36
  330. metadata +122 -6
@@ -23,10 +23,11 @@ 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
29
- puts Ionoscloud::RequestApi.new(api_client).requests_status_get(config[:request_id]).metadata.status
30
+ puts Ionoscloud::RequestsApi.new(api_client).requests_status_get(config[:request_id]).metadata.status
30
31
  rescue Ionoscloud::ApiError => err
31
32
  raise err unless err.code == 404
32
33
  ui.error("Request ID #{config[:request_id]} not found.")
@@ -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,13 +23,14 @@ 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)}"
29
30
 
30
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
31
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
31
32
 
32
- s3_key, _, headers = user_management_api.um_users_s3keys_post_with_http_info(config[:user_id])
33
+ s3_key, _, headers = user_s3keys_api.um_users_s3keys_post_with_http_info(config[:user_id])
33
34
 
34
35
  dot = ui.color('.', :magenta)
35
36
  api_client.wait_for { print dot; is_done? get_request_id headers }
@@ -23,13 +23,14 @@ 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
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
29
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
29
30
 
30
31
  @name_args.each do |s3key_id|
31
32
  begin
32
- s3_key = user_management_api.um_users_s3keys_find_by_key_id(config[:user_id], s3key_id)
33
+ s3_key = user_s3keys_api.um_users_s3keys_find_by_key_id(config[:user_id], s3key_id)
33
34
  rescue Ionoscloud::ApiError => err
34
35
  raise err unless err.code == 404
35
36
  ui.error("S3 key ID #{s3key_id} not found. Skipping.")
@@ -48,7 +49,7 @@ class Chef
48
49
  next
49
50
  end
50
51
 
51
- _, _, headers = user_management_api.um_users_s3keys_delete_with_http_info(config[:user_id], s3key_id)
52
+ _, _, headers = user_s3keys_api.um_users_s3keys_delete_with_http_info(config[:user_id], s3key_id)
52
53
  ui.warn("Deleted S3 key #{s3_key.id}. Request ID: #{get_request_id headers}")
53
54
  end
54
55
  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 = [
@@ -31,9 +32,9 @@ class Chef
31
32
  ui.color('Active', :bold),
32
33
  ]
33
34
 
34
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
35
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
35
36
 
36
- user_management_api.um_users_s3keys_get(config[:user_id], { depth: 1 }).items.each do |s3_key|
37
+ user_s3keys_api.um_users_s3keys_get(config[:user_id], { depth: 1 }).items.each do |s3_key|
37
38
  s3key_list << s3_key.id
38
39
  s3key_list << s3_key.properties.secret_key
39
40
  s3key_list << s3_key.properties.active.to_s
@@ -0,0 +1,43 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerConsole < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server console (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'The ID of the Datacenter.'
14
+
15
+ option :server_id,
16
+ short: '-S SERVER_ID',
17
+ long: '--server-id SERVER_ID',
18
+ description: 'The ID of the Server.'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Returns the link with the jwToken to access the server remote console.'
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
+ begin
35
+ puts Ionoscloud::ServersApi.new(api_client).datacenters_servers_remote_console_get(config[:datacenter_id], config[:server_id]).url
36
+ rescue Ionoscloud::ApiError => err
37
+ raise err unless err.code == 404
38
+ ui.error("Server ID #{config[:server_id]} not found.")
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -55,37 +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
68
  params = {
68
69
  name: config[:name],
69
70
  cores: config[:cores],
70
- cpuFamily: config[:cpu_family],
71
+ cpu_family: config[:cpu_family],
71
72
  ram: config[:ram],
72
- availabilityZone: config[:availability_zone]
73
+ availability_zone: config[:availability_zone],
73
74
  }
74
75
 
75
- params[:bootCdrom] = { id: config[:boot_cdrom] } unless config[:boot_cdrom].nil?
76
- params[:bootVolume] = { id: config[:boot_volume] } unless config[:boot_volume].nil?
76
+ params[:boot_cdrom] = { id: config[:boot_cdrom] } unless config[:boot_cdrom].nil?
77
+ params[:boot_volume] = { id: config[:boot_volume] } unless config[:boot_volume].nil?
77
78
 
78
- server_api = Ionoscloud::ServerApi.new(api_client)
79
+ servers_api = Ionoscloud::ServersApi.new(api_client)
79
80
 
80
- server, _, headers = server_api.datacenters_servers_post_with_http_info(
81
+ server, _, headers = servers_api.datacenters_servers_post_with_http_info(
81
82
  config[:datacenter_id],
82
- { properties: params.compact },
83
+ Ionoscloud::Server.new(properties: Ionoscloud::ServerProperties.new(params.compact)),
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
+ server = servers_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id)
89
90
 
90
91
  puts "\n"
91
92
  puts "#{ui.color('ID', :cyan)}: #{server.id}"
@@ -18,16 +18,17 @@ 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
- server_api = Ionoscloud::ServerApi.new(api_client)
31
+ server_api = Ionoscloud::ServersApi.new(api_client)
31
32
 
32
33
  @name_args.each do |server_id|
33
34
  begin
@@ -44,8 +45,8 @@ class Chef
44
45
  msg_pair('CPU Family', server.properties.cpu_family)
45
46
  msg_pair('Ram', server.properties.ram)
46
47
  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)
48
+ msg_pair('Boot Volume', (server.properties.boot_volume.nil? ? '' : server.properties.boot_volume.id))
49
+ msg_pair('Boot CDROM', (server.properties.boot_cdrom.nil? ? '' : server.properties.boot_cdrom.id))
49
50
 
50
51
  begin
51
52
  confirm('Do you really want to delete this server')
@@ -12,6 +12,11 @@ class Chef
12
12
  long: '--datacenter-id DATACENTER_ID',
13
13
  description: 'The ID of the datacenter containing the server'
14
14
 
15
+ option :upgrade_needed,
16
+ short: '-u',
17
+ long: '--upgrade-needed',
18
+ description: 'It can be used to filter which servers can be upgraded'
19
+
15
20
  attr_reader :description, :required_options
16
21
 
17
22
  def initialize(args = [])
@@ -23,35 +28,42 @@ class Chef
23
28
 
24
29
  def run
25
30
  $stdout.sync = true
31
+ handle_extra_config
26
32
  validate_required_params(@required_options, config)
27
33
 
28
34
  server_list = [
29
35
  ui.color('ID', :bold),
30
36
  ui.color('Name', :bold),
37
+ ui.color('Type', :bold),
38
+ ui.color('Template', :bold),
31
39
  ui.color('Cores', :bold),
32
40
  ui.color('CPU Family', :bold),
33
41
  ui.color('RAM', :bold),
34
- ui.color('Availability Zone', :bold),
35
42
  ui.color('VM State', :bold),
36
43
  ui.color('Boot Volume', :bold),
37
44
  ui.color('Boot CDROM', :bold),
38
45
  ]
39
46
 
40
- server_api = Ionoscloud::ServerApi.new(api_client)
47
+ server_api = Ionoscloud::ServersApi.new(api_client)
48
+
49
+ opts = { depth: 1 }
50
+
51
+ opts[:upgrade_needed] = config[:upgrade_needed] if config[:upgrade_needed]
41
52
 
42
- server_api.datacenters_servers_get(config[:datacenter_id], { depth: 1 }).items.each do |server|
53
+ server_api.datacenters_servers_get(config[:datacenter_id], opts).items.each do |server|
43
54
  server_list << server.id
44
55
  server_list << server.properties.name
56
+ server_list << server.properties.type
57
+ server_list << server.properties.template_uuid
45
58
  server_list << server.properties.cores.to_s
46
59
  server_list << server.properties.cpu_family
47
60
  server_list << server.properties.ram.to_s
48
- server_list << server.properties.availability_zone
49
61
  server_list << server.properties.vm_state
50
- server_list << server.properties.boot_volume || ''
51
- server_list << server.properties.boot_cdrom || ''
62
+ server_list << (server.properties.boot_volume.nil? ? '' : server.properties.boot_volume.id)
63
+ server_list << (server.properties.boot_cdrom.nil? ? '' : server.properties.boot_cdrom.id)
52
64
  end
53
65
 
54
- puts ui.list(server_list, :uneven_columns_across, 9)
66
+ puts ui.list(server_list, :uneven_columns_across, 10)
55
67
  end
56
68
  end
57
69
  end
@@ -25,9 +25,10 @@ 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
- server_api = Ionoscloud::ServerApi.new(api_client)
31
+ server_api = Ionoscloud::ServersApi.new(api_client)
31
32
 
32
33
  @name_args.each do |server_id|
33
34
  begin
@@ -0,0 +1,44 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerResume < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server resume SERVER_ID [SERVER_ID] (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
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'This will resume a suspended server. The operation can only be applied to suspended Cube servers. No billing event will be generated.'
21
+ @required_options = [:datacenter_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
+ server_api = Ionoscloud::ServersApi.new(api_client)
30
+
31
+ @name_args.each do |server_id|
32
+ begin
33
+ _, _, headers = server_api.datacenters_servers_resume_post_with_http_info(config[:datacenter_id], server_id)
34
+ rescue Ionoscloud::ApiError => err
35
+ raise err unless err.code == 404
36
+ ui.error("Server ID #{server_id} not found. Skipping.")
37
+ next
38
+ end
39
+ ui.info("Server #{server_id} is resuming. Request ID: #{get_request_id headers}")
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -23,9 +23,10 @@ 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
- server_api = Ionoscloud::ServerApi.new(api_client)
29
+ server_api = Ionoscloud::ServersApi.new(api_client)
29
30
 
30
31
  @name_args.each do |server_id|
31
32
  begin
@@ -24,9 +24,10 @@ 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
- server_api = Ionoscloud::ServerApi.new(api_client)
30
+ server_api = Ionoscloud::ServersApi.new(api_client)
30
31
 
31
32
  @name_args.each do |server_id|
32
33
  begin
@@ -0,0 +1,45 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerSuspend < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server suspend SERVER_ID [SERVER_ID] (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
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'This will suspend a server. The operation can only be applied to Cube servers. '\
21
+ 'Note: The virtual machine will not be deleted, and the consumed resources will continue to be billed.'
22
+ @required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
23
+ end
24
+
25
+ def run
26
+ $stdout.sync = true
27
+ handle_extra_config
28
+ validate_required_params(@required_options, config)
29
+
30
+ server_api = Ionoscloud::ServersApi.new(api_client)
31
+
32
+ @name_args.each do |server_id|
33
+ begin
34
+ _, _, headers = server_api.datacenters_servers_suspend_post_with_http_info(config[:datacenter_id], server_id)
35
+ rescue Ionoscloud::ApiError => err
36
+ raise err unless err.code == 404
37
+ ui.error("Server ID #{server_id} not found. Skipping.")
38
+ next
39
+ end
40
+ ui.warn("Server #{server_id} is being suspended. Request ID: #{get_request_id headers}")
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,43 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerToken < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server token (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'The ID of the Datacenter.'
14
+
15
+ option :server_id,
16
+ short: '-S SERVER_ID',
17
+ long: '--server-id SERVER_ID',
18
+ description: 'The ID of the Server.'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Returns the server json web token to be used for login operations (ex: accessing the server console).'
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
+ begin
35
+ puts Ionoscloud::ServersApi.new(api_client).datacenters_servers_token_get(config[:datacenter_id], config[:server_id]).token
36
+ rescue Ionoscloud::ApiError => err
37
+ raise err unless err.code == 404
38
+ ui.error("Server ID #{config[:server_id]} not found.")
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end