knife-ionoscloud 5.1.2 → 6.0.0.alpha.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 (402) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/publish.yml +1 -4
  3. data/docs/README.md +0 -19
  4. data/docs/docs_generator.rb +1 -1
  5. data/docs/subcommands/backupunit_create.md +2 -5
  6. data/docs/subcommands/backupunit_delete.md +1 -4
  7. data/docs/subcommands/backupunit_list.md +1 -4
  8. data/docs/subcommands/backupunit_ssourl.md +1 -4
  9. data/docs/subcommands/composite_server_create.md +1 -4
  10. data/docs/subcommands/contract_list.md +1 -4
  11. data/docs/subcommands/datacenter_create.md +1 -4
  12. data/docs/subcommands/datacenter_delete.md +1 -4
  13. data/docs/subcommands/datacenter_list.md +1 -4
  14. data/docs/subcommands/firewall_create.md +2 -5
  15. data/docs/subcommands/firewall_delete.md +0 -3
  16. data/docs/subcommands/firewall_list.md +1 -4
  17. data/docs/subcommands/group_create.md +1 -4
  18. data/docs/subcommands/group_delete.md +1 -4
  19. data/docs/subcommands/group_get.md +1 -4
  20. data/docs/subcommands/group_list.md +1 -4
  21. data/docs/subcommands/group_user_add.md +0 -3
  22. data/docs/subcommands/group_user_remove.md +0 -3
  23. data/docs/subcommands/image_list.md +1 -4
  24. data/docs/subcommands/ipblock_create.md +1 -4
  25. data/docs/subcommands/ipblock_delete.md +1 -4
  26. data/docs/subcommands/ipblock_list.md +1 -4
  27. data/docs/subcommands/ipfailover_add.md +1 -4
  28. data/docs/subcommands/ipfailover_remove.md +1 -4
  29. data/docs/subcommands/k8s_create.md +5 -11
  30. data/docs/subcommands/k8s_delete.md +1 -4
  31. data/docs/subcommands/k8s_list.md +1 -4
  32. data/docs/subcommands/kubeconfig_get.md +1 -4
  33. data/docs/subcommands/label_add.md +1 -4
  34. data/docs/subcommands/label_list.md +1 -4
  35. data/docs/subcommands/label_remove.md +0 -3
  36. data/docs/subcommands/lan_create.md +1 -4
  37. data/docs/subcommands/lan_delete.md +0 -3
  38. data/docs/subcommands/lan_list.md +1 -4
  39. data/docs/subcommands/loadbalancer_create.md +2 -5
  40. data/docs/subcommands/loadbalancer_delete.md +0 -3
  41. data/docs/subcommands/loadbalancer_get.md +1 -4
  42. data/docs/subcommands/loadbalancer_list.md +1 -4
  43. data/docs/subcommands/loadbalancer_nic_add.md +0 -3
  44. data/docs/subcommands/loadbalancer_nic_remove.md +0 -3
  45. data/docs/subcommands/location_list.md +1 -4
  46. data/docs/subcommands/nic_create.md +3 -6
  47. data/docs/subcommands/nic_delete.md +1 -4
  48. data/docs/subcommands/nic_list.md +1 -4
  49. data/docs/subcommands/node_delete.md +0 -3
  50. data/docs/subcommands/node_list.md +1 -4
  51. data/docs/subcommands/node_replace.md +0 -3
  52. data/docs/subcommands/nodepool_create.md +5 -17
  53. data/docs/subcommands/nodepool_delete.md +0 -3
  54. data/docs/subcommands/nodepool_list.md +1 -4
  55. data/docs/subcommands/pcc_create.md +1 -4
  56. data/docs/subcommands/pcc_delete.md +1 -4
  57. data/docs/subcommands/pcc_list.md +1 -4
  58. data/docs/subcommands/request_list.md +1 -4
  59. data/docs/subcommands/request_status.md +1 -4
  60. data/docs/subcommands/request_wait.md +1 -4
  61. data/docs/subcommands/resource_list.md +1 -4
  62. data/docs/subcommands/s3key_create.md +1 -4
  63. data/docs/subcommands/s3key_delete.md +0 -3
  64. data/docs/subcommands/s3key_list.md +1 -4
  65. data/docs/subcommands/server_create.md +1 -4
  66. data/docs/subcommands/server_delete.md +0 -3
  67. data/docs/subcommands/server_list.md +1 -4
  68. data/docs/subcommands/server_reboot.md +0 -3
  69. data/docs/subcommands/server_start.md +0 -3
  70. data/docs/subcommands/server_stop.md +0 -3
  71. data/docs/subcommands/share_create.md +2 -5
  72. data/docs/subcommands/share_delete.md +2 -5
  73. data/docs/subcommands/share_list.md +1 -4
  74. data/docs/subcommands/snapshot_create.md +1 -4
  75. data/docs/subcommands/snapshot_delete.md +1 -4
  76. data/docs/subcommands/snapshot_list.md +1 -4
  77. data/docs/subcommands/snapshot_restore.md +1 -4
  78. data/docs/subcommands/user_create.md +3 -12
  79. data/docs/subcommands/user_delete.md +1 -4
  80. data/docs/subcommands/user_list.md +1 -4
  81. data/docs/subcommands/user_ssourl.md +1 -4
  82. data/docs/subcommands/volume_attach.md +0 -3
  83. data/docs/subcommands/volume_create.md +1 -28
  84. data/docs/subcommands/volume_delete.md +0 -3
  85. data/docs/subcommands/volume_detach.md +0 -3
  86. data/docs/subcommands/volume_list.md +1 -4
  87. data/docs/summary.md +0 -33
  88. data/knife-ionoscloud.gemspec +1 -1
  89. data/lib/chef/knife/ionoscloud_backupunit_create.rb +16 -12
  90. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +5 -3
  91. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -2
  92. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +1 -2
  93. data/lib/chef/knife/ionoscloud_base.rb +6 -259
  94. data/lib/chef/knife/ionoscloud_composite_server_create.rb +38 -9
  95. data/lib/chef/knife/ionoscloud_contract_list.rb +32 -24
  96. data/lib/chef/knife/ionoscloud_cube_server_create.rb +215 -0
  97. data/lib/chef/knife/ionoscloud_datacenter_create.rb +14 -12
  98. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +8 -3
  99. data/lib/chef/knife/ionoscloud_datacenter_list.rb +3 -4
  100. data/lib/chef/knife/ionoscloud_firewall_create.rb +24 -7
  101. data/lib/chef/knife/ionoscloud_firewall_delete.rb +14 -6
  102. data/lib/chef/knife/ionoscloud_firewall_list.rb +5 -4
  103. data/lib/chef/knife/ionoscloud_flowlog_create.rb +121 -0
  104. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +106 -0
  105. data/lib/chef/knife/ionoscloud_flowlog_list.rb +100 -0
  106. data/lib/chef/knife/ionoscloud_group_create.rb +46 -16
  107. data/lib/chef/knife/ionoscloud_group_delete.rb +18 -2
  108. data/lib/chef/knife/ionoscloud_group_get.rb +17 -2
  109. data/lib/chef/knife/ionoscloud_group_list.rb +7 -2
  110. data/lib/chef/knife/ionoscloud_group_user_add.rb +13 -2
  111. data/lib/chef/knife/ionoscloud_group_user_remove.rb +13 -2
  112. data/lib/chef/knife/ionoscloud_image_list.rb +1 -2
  113. data/lib/chef/knife/ionoscloud_ipblock_create.rb +13 -11
  114. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +4 -3
  115. data/lib/chef/knife/ionoscloud_ipblock_list.rb +1 -2
  116. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +15 -9
  117. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +9 -3
  118. data/lib/chef/knife/ionoscloud_k8s_create.rb +30 -28
  119. data/lib/chef/knife/ionoscloud_k8s_delete.rb +9 -2
  120. data/lib/chef/knife/ionoscloud_k8s_list.rb +0 -1
  121. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +0 -1
  122. data/lib/chef/knife/ionoscloud_label_add.rb +1 -2
  123. data/lib/chef/knife/ionoscloud_label_list.rb +1 -2
  124. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -2
  125. data/lib/chef/knife/ionoscloud_lan_create.rb +14 -7
  126. data/lib/chef/knife/ionoscloud_lan_delete.rb +4 -4
  127. data/lib/chef/knife/ionoscloud_lan_list.rb +2 -5
  128. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +16 -7
  129. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +10 -3
  130. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +13 -4
  131. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -2
  132. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +14 -5
  133. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +14 -5
  134. data/lib/chef/knife/ionoscloud_location_list.rb +5 -4
  135. data/lib/chef/knife/ionoscloud_natgateway_create.rb +71 -0
  136. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +69 -0
  137. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +82 -0
  138. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +58 -0
  139. data/lib/chef/knife/ionoscloud_natgateway_list.rb +49 -0
  140. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +124 -0
  141. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +63 -0
  142. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +72 -0
  143. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +95 -0
  144. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +81 -0
  145. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +56 -0
  146. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +150 -0
  147. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +63 -0
  148. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +78 -0
  149. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +141 -0
  150. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +68 -0
  151. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +105 -0
  152. data/lib/chef/knife/ionoscloud_nic_create.rb +38 -19
  153. data/lib/chef/knife/ionoscloud_nic_delete.rb +11 -5
  154. data/lib/chef/knife/ionoscloud_nic_list.rb +9 -6
  155. data/lib/chef/knife/ionoscloud_node_delete.rb +6 -2
  156. data/lib/chef/knife/ionoscloud_node_list.rb +0 -2
  157. data/lib/chef/knife/ionoscloud_node_replace.rb +0 -1
  158. data/lib/chef/knife/ionoscloud_nodepool_create.rb +60 -38
  159. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +32 -2
  160. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +130 -0
  161. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +96 -0
  162. data/lib/chef/knife/ionoscloud_nodepool_list.rb +3 -2
  163. data/lib/chef/knife/ionoscloud_pcc_create.rb +18 -13
  164. data/lib/chef/knife/ionoscloud_pcc_delete.rb +10 -3
  165. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -2
  166. data/lib/chef/knife/ionoscloud_request_list.rb +1 -2
  167. data/lib/chef/knife/ionoscloud_request_status.rb +1 -2
  168. data/lib/chef/knife/ionoscloud_request_wait.rb +0 -1
  169. data/lib/chef/knife/ionoscloud_resource_list.rb +0 -1
  170. data/lib/chef/knife/ionoscloud_s3key_create.rb +7 -4
  171. data/lib/chef/knife/ionoscloud_s3key_delete.rb +7 -5
  172. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -3
  173. data/lib/chef/knife/{ionoscloud_server_get.rb → ionoscloud_server_console.rb} +11 -10
  174. data/lib/chef/knife/ionoscloud_server_create.rb +26 -15
  175. data/lib/chef/knife/ionoscloud_server_delete.rb +10 -3
  176. data/lib/chef/knife/ionoscloud_server_list.rb +16 -6
  177. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -2
  178. data/lib/chef/knife/ionoscloud_server_resume.rb +43 -0
  179. data/lib/chef/knife/ionoscloud_server_start.rb +1 -2
  180. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -2
  181. data/lib/chef/knife/ionoscloud_server_suspend.rb +44 -0
  182. data/lib/chef/knife/ionoscloud_server_token.rb +42 -0
  183. data/lib/chef/knife/ionoscloud_server_upgrade.rb +44 -0
  184. data/lib/chef/knife/ionoscloud_share_create.rb +12 -8
  185. data/lib/chef/knife/ionoscloud_share_delete.rb +4 -3
  186. data/lib/chef/knife/ionoscloud_share_list.rb +0 -1
  187. data/lib/chef/knife/ionoscloud_snapshot_create.rb +10 -3
  188. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +7 -3
  189. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -2
  190. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +2 -3
  191. data/lib/chef/knife/ionoscloud_template_list.rb +46 -0
  192. data/lib/chef/knife/ionoscloud_user_create.rb +20 -25
  193. data/lib/chef/knife/ionoscloud_user_delete.rb +7 -2
  194. data/lib/chef/knife/ionoscloud_user_list.rb +0 -1
  195. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -2
  196. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -2
  197. data/lib/chef/knife/ionoscloud_volume_create.rb +31 -57
  198. data/lib/chef/knife/ionoscloud_volume_delete.rb +9 -3
  199. data/lib/chef/knife/ionoscloud_volume_detach.rb +9 -3
  200. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -3
  201. data/lib/knife-ionoscloud/version.rb +1 -1
  202. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  203. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  204. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  205. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  206. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  207. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  208. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  209. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  210. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +3 -12
  211. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +5 -8
  212. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +4 -4
  213. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  214. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  215. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  216. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  217. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  218. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  219. data/spec/chef/knife/ionoscloud_group_create_spec.rb +6 -7
  220. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +3 -0
  221. data/spec/chef/knife/ionoscloud_group_get_spec.rb +3 -0
  222. data/spec/chef/knife/ionoscloud_group_list_spec.rb +11 -2
  223. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +0 -3
  224. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +0 -3
  225. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  226. data/spec/chef/knife/ionoscloud_ipblock_delete_spec.rb +0 -2
  227. data/spec/chef/knife/ionoscloud_ipblock_list_spec.rb +1 -1
  228. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +4 -5
  229. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +7 -8
  230. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +0 -8
  231. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +1 -7
  232. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  233. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  234. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  235. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  236. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +3 -4
  237. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +5 -7
  238. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +3 -5
  239. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  240. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  241. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  242. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  243. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  244. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  245. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  246. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +77 -0
  247. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  248. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +143 -0
  249. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +194 -0
  250. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  251. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +98 -0
  252. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  253. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +77 -0
  254. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +80 -0
  255. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +119 -0
  256. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  257. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +104 -0
  258. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  259. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +124 -0
  260. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +109 -0
  261. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  262. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +263 -0
  263. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  264. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  265. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  266. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +20 -13
  267. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +13 -27
  268. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +226 -0
  269. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +199 -0
  270. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  271. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +8 -11
  272. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +6 -6
  273. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  274. data/spec/chef/knife/ionoscloud_request_list_spec.rb +24 -25
  275. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  276. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  277. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  278. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  279. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  280. data/spec/chef/knife/ionoscloud_server_create_spec.rb +3 -3
  281. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +5 -5
  282. data/spec/chef/knife/ionoscloud_server_list_spec.rb +63 -5
  283. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  284. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  285. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  286. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  287. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  288. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  289. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  290. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +3 -16
  291. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +5 -17
  292. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  293. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +3 -3
  294. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  295. data/spec/chef/knife/ionoscloud_user_create_spec.rb +1 -3
  296. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +2 -4
  297. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  298. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  299. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +6 -15
  300. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +5 -14
  301. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -14
  302. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  303. data/spec/spec_helper.rb +270 -116
  304. metadata +93 -138
  305. data/docs/subcommands/backupunit_get.md +0 -35
  306. data/docs/subcommands/backupunit_update.md +0 -41
  307. data/docs/subcommands/datacenter_get.md +0 -35
  308. data/docs/subcommands/datacenter_update.md +0 -44
  309. data/docs/subcommands/firewall_get.md +0 -47
  310. data/docs/subcommands/firewall_update.md +0 -71
  311. data/docs/subcommands/group_update.md +0 -65
  312. data/docs/subcommands/ipblock_get.md +0 -35
  313. data/docs/subcommands/ipblock_update.md +0 -38
  314. data/docs/subcommands/k8s_get.md +0 -35
  315. data/docs/subcommands/k8s_update.md +0 -53
  316. data/docs/subcommands/lan_get.md +0 -39
  317. data/docs/subcommands/lan_update.md +0 -51
  318. data/docs/subcommands/loadbalancer_update.md +0 -48
  319. data/docs/subcommands/nic_get.md +0 -43
  320. data/docs/subcommands/nic_update.md +0 -58
  321. data/docs/subcommands/node_get.md +0 -43
  322. data/docs/subcommands/nodepool_get.md +0 -39
  323. data/docs/subcommands/nodepool_update.md +0 -69
  324. data/docs/subcommands/pcc_get.md +0 -35
  325. data/docs/subcommands/pcc_update.md +0 -41
  326. data/docs/subcommands/request_get.md +0 -35
  327. data/docs/subcommands/s3key_get.md +0 -39
  328. data/docs/subcommands/server_get.md +0 -39
  329. data/docs/subcommands/server_update.md +0 -60
  330. data/docs/subcommands/share_get.md +0 -39
  331. data/docs/subcommands/share_update.md +0 -45
  332. data/docs/subcommands/snapshot_get.md +0 -35
  333. data/docs/subcommands/snapshot_update.md +0 -77
  334. data/docs/subcommands/user_get.md +0 -35
  335. data/docs/subcommands/user_update.md +0 -56
  336. data/docs/subcommands/volume_get.md +0 -39
  337. data/docs/subcommands/volume_update.md +0 -66
  338. data/lib/chef/knife/ionoscloud_backupunit_get.rb +0 -33
  339. data/lib/chef/knife/ionoscloud_backupunit_update.rb +0 -62
  340. data/lib/chef/knife/ionoscloud_datacenter_get.rb +0 -33
  341. data/lib/chef/knife/ionoscloud_datacenter_update.rb +0 -67
  342. data/lib/chef/knife/ionoscloud_firewall_get.rb +0 -50
  343. data/lib/chef/knife/ionoscloud_firewall_update.rb +0 -131
  344. data/lib/chef/knife/ionoscloud_group_update.rb +0 -114
  345. data/lib/chef/knife/ionoscloud_ipblock_get.rb +0 -33
  346. data/lib/chef/knife/ionoscloud_ipblock_update.rb +0 -57
  347. data/lib/chef/knife/ionoscloud_k8s_get.rb +0 -33
  348. data/lib/chef/knife/ionoscloud_k8s_update.rb +0 -99
  349. data/lib/chef/knife/ionoscloud_lan_get.rb +0 -38
  350. data/lib/chef/knife/ionoscloud_lan_update.rb +0 -87
  351. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +0 -73
  352. data/lib/chef/knife/ionoscloud_nic_get.rb +0 -47
  353. data/lib/chef/knife/ionoscloud_nic_update.rb +0 -93
  354. data/lib/chef/knife/ionoscloud_node_get.rb +0 -47
  355. data/lib/chef/knife/ionoscloud_nodepool_get.rb +0 -41
  356. data/lib/chef/knife/ionoscloud_nodepool_update.rb +0 -124
  357. data/lib/chef/knife/ionoscloud_pcc_get.rb +0 -33
  358. data/lib/chef/knife/ionoscloud_pcc_update.rb +0 -63
  359. data/lib/chef/knife/ionoscloud_request_get.rb +0 -40
  360. data/lib/chef/knife/ionoscloud_s3key_get.rb +0 -38
  361. data/lib/chef/knife/ionoscloud_server_update.rb +0 -97
  362. data/lib/chef/knife/ionoscloud_share_get.rb +0 -38
  363. data/lib/chef/knife/ionoscloud_share_update.rb +0 -70
  364. data/lib/chef/knife/ionoscloud_snapshot_get.rb +0 -32
  365. data/lib/chef/knife/ionoscloud_snapshot_update.rb +0 -126
  366. data/lib/chef/knife/ionoscloud_user_get.rb +0 -32
  367. data/lib/chef/knife/ionoscloud_user_update.rb +0 -92
  368. data/lib/chef/knife/ionoscloud_volume_get.rb +0 -36
  369. data/lib/chef/knife/ionoscloud_volume_update.rb +0 -106
  370. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +0 -65
  371. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +0 -78
  372. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +0 -69
  373. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +0 -82
  374. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +0 -76
  375. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +0 -116
  376. data/spec/chef/knife/ionoscloud_group_update_spec.rb +0 -109
  377. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +0 -66
  378. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +0 -79
  379. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +0 -73
  380. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +0 -115
  381. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +0 -68
  382. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +0 -91
  383. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +0 -89
  384. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +0 -70
  385. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +0 -92
  386. data/spec/chef/knife/ionoscloud_node_get_spec.rb +0 -70
  387. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +0 -83
  388. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +0 -130
  389. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +0 -71
  390. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +0 -83
  391. data/spec/chef/knife/ionoscloud_request_get_spec.rb +0 -69
  392. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +0 -66
  393. data/spec/chef/knife/ionoscloud_server_get_spec.rb +0 -71
  394. data/spec/chef/knife/ionoscloud_server_update_spec.rb +0 -102
  395. data/spec/chef/knife/ionoscloud_share_get_spec.rb +0 -66
  396. data/spec/chef/knife/ionoscloud_share_update_spec.rb +0 -91
  397. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +0 -79
  398. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +0 -113
  399. data/spec/chef/knife/ionoscloud_user_get_spec.rb +0 -70
  400. data/spec/chef/knife/ionoscloud_user_update_spec.rb +0 -110
  401. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +0 -80
  402. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +0 -115
@@ -0,0 +1,96 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudNodepoolLanRemove < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud nodepool lan remove LAN_ID [LAN_ID] (options)'
9
+
10
+ option :cluster_id,
11
+ short: '-C CLUSTER_ID',
12
+ long: '--cluster-id CLUSTER_ID',
13
+ description: 'ID of the Kubernetes cluster'
14
+
15
+ option :nodepool_id,
16
+ short: '-N NODEPOOL_ID',
17
+ long: '--nodepool NODEPOOL_ID',
18
+ description: 'The ID of the K8s Nodepool'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Adds or updates a LAN within a Nodepool.'
26
+ @required_options = [:cluster_id, :nodepool_id, :ionoscloud_username, :ionoscloud_password]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ validate_required_params(@required_options, config)
32
+
33
+ kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
34
+
35
+ begin
36
+ nodepool = kubernetes_api.k8s_nodepools_find_by_id(config[:cluster_id], config[:nodepool_id])
37
+ rescue Ionoscloud::ApiError => err
38
+ raise err unless err.code == 404
39
+ ui.error("Nodepool ID #{config[:nodepool_id]} not found.")
40
+ exit(1)
41
+ end
42
+
43
+ existing = nodepool.properties.lans.select { |lan| @name_args.map { |id| Integer(id) }.include? lan.id }
44
+
45
+ if existing.length > 0
46
+ new_nodepool = Ionoscloud::KubernetesNodePool.new(
47
+ properties: Ionoscloud::KubernetesNodePoolPropertiesForPut.new(
48
+ node_count: nodepool.properties.node_count,
49
+ k8s_version: nodepool.properties.k8s_version,
50
+ maintenance_window: nodepool.properties.maintenance_window,
51
+ auto_scaling: nodepool.properties.auto_scaling,
52
+ public_ips: nodepool.properties.public_ips,
53
+ lans: nodepool.properties.lans,
54
+ ),
55
+ )
56
+ new_nodepool.properties.lans.delete_if { |lan| @name_args.map { |id| Integer(id) }.include? lan.id }
57
+
58
+ nodepool = kubernetes_api.k8s_nodepools_put(
59
+ config[:cluster_id], config[:nodepool_id], new_nodepool,
60
+ )
61
+
62
+ ui.info("Removing Lans #{@name_args} from the Nodepoool.")
63
+ else
64
+ ui.info("None of the specified Lan IDs (#{@name_args}) are present on the Nodepoool.")
65
+ end
66
+
67
+ auto_scaling = "Min node count: #{nodepool.properties.auto_scaling.min_node_count}, Max node count:#{nodepool.properties.auto_scaling.max_node_count}"
68
+ maintenance_window = "#{nodepool.properties.maintenance_window.day_of_the_week}, #{nodepool.properties.maintenance_window.time}"
69
+
70
+ puts "\n"
71
+ puts "#{ui.color('ID', :cyan)}: #{nodepool.id}"
72
+ puts "#{ui.color('Name', :cyan)}: #{nodepool.properties.name}"
73
+ puts "#{ui.color('K8s Version', :cyan)}: #{nodepool.properties.k8s_version}"
74
+ puts "#{ui.color('Node Count', :cyan)}: #{nodepool.properties.node_count}"
75
+ puts "#{ui.color('Lans', :cyan)}: #{nodepool.properties.lans.map do
76
+ |lan|
77
+ {
78
+ id: lan.id,
79
+ dhcp: lan.dhcp,
80
+ routes: lan.routes ? lan.routes.map do
81
+ |route|
82
+ {
83
+ network: route.network,
84
+ gateway_ip: route.gateway_ip,
85
+ }
86
+ end : []
87
+ }
88
+ end}"
89
+ puts "#{ui.color('Auto Scaling', :cyan)}: #{auto_scaling}"
90
+ puts "#{ui.color('Maintenance Window', :cyan)}: #{maintenance_window}"
91
+ puts "#{ui.color('State', :cyan)}: #{nodepool.metadata.state}"
92
+ puts 'done'
93
+ end
94
+ end
95
+ end
96
+ end
@@ -23,7 +23,6 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
- handle_extra_config
27
26
  validate_required_params(@required_options, config)
28
27
 
29
28
  nodepool_list = [
@@ -32,6 +31,7 @@ class Chef
32
31
  ui.color('K8s Version', :bold),
33
32
  ui.color('Datacenter ID', :bold),
34
33
  ui.color('Node Count', :bold),
34
+ ui.color('Lan Count', :bold),
35
35
  ui.color('State', :bold),
36
36
  ]
37
37
 
@@ -43,9 +43,10 @@ class Chef
43
43
  nodepool_list << nodepool.properties.k8s_version
44
44
  nodepool_list << nodepool.properties.datacenter_id
45
45
  nodepool_list << nodepool.properties.node_count.to_s
46
+ nodepool_list << nodepool.properties.lans.length
46
47
  nodepool_list << nodepool.metadata.state
47
48
  end
48
- puts ui.list(nodepool_list, :uneven_columns_across, 6)
49
+ puts ui.list(nodepool_list, :uneven_columns_across, 7)
49
50
  end
50
51
  end
51
52
  end
@@ -32,12 +32,11 @@ class Chef
32
32
 
33
33
  def run
34
34
  $stdout.sync = true
35
- handle_extra_config
36
35
  validate_required_params(@required_options, config)
37
36
 
38
37
  print "#{ui.color('Creating private cross connect...', :magenta)}"
39
38
 
40
- pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
39
+ pcc_api = Ionoscloud::PrivateCrossConnectsApi.new(api_client)
41
40
  config[:peers] = config[:peers].split(',') unless config[:peers].nil?
42
41
 
43
42
  if config[:peers] && config[:peers].length % 2 != 0
@@ -45,14 +44,12 @@ class Chef
45
44
  exit(1)
46
45
  end
47
46
 
48
- pcc, _, headers = pcc_api.pccs_post_with_http_info(
49
- Ionoscloud::PrivateCrossConnect.new(
50
- properties: Ionoscloud::PrivateCrossConnectProperties.new(
51
- name: config[:name],
52
- description: config[:description],
53
- ),
54
- ),
55
- )
47
+ pcc, _, headers = pcc_api.pccs_post_with_http_info({
48
+ properties: {
49
+ name: config[:name],
50
+ description: config[:description],
51
+ }.compact,
52
+ })
56
53
 
57
54
  dot = ui.color('.', :magenta)
58
55
  api_client.wait_for { print dot; is_done? get_request_id headers }
@@ -60,7 +57,7 @@ class Chef
60
57
  pcc = pcc_api.pccs_find_by_id(pcc.id)
61
58
 
62
59
  if config[:peers]
63
- lan_api = Ionoscloud::LanApi.new(api_client)
60
+ lan_api = Ionoscloud::LansApi.new(api_client)
64
61
 
65
62
  header_list = []
66
63
  allowed_datacenters_ids = pcc.properties.connectable_datacenters.map { |datacenter| datacenter.id }
@@ -72,7 +69,7 @@ class Chef
72
69
  _, _, headers = lan_api.datacenters_lans_patch_with_http_info(
73
70
  datacenter_id,
74
71
  lan_id,
75
- Ionoscloud::LanProperties.new(pcc: pcc.id),
72
+ { pcc: pcc.id },
76
73
  )
77
74
  header_list << headers
78
75
  end
@@ -83,7 +80,15 @@ class Chef
83
80
  end
84
81
  end
85
82
 
86
- print_pcc(pcc_api.pccs_find_by_id(pcc.id))
83
+ pcc = pcc_api.pccs_find_by_id(pcc.id)
84
+
85
+ puts "\n"
86
+ puts "#{ui.color('ID', :cyan)}: #{pcc.id}"
87
+ puts "#{ui.color('Name', :cyan)}: #{pcc.properties.name}"
88
+ puts "#{ui.color('Description', :cyan)}: #{pcc.properties.description}"
89
+ puts "#{ui.color('Peers', :cyan)}: #{pcc.properties.peers.to_s}"
90
+ puts "#{ui.color('Datacenters', :cyan)}: #{pcc.properties.connectable_datacenters.to_s}"
91
+ puts 'done'
87
92
  end
88
93
  end
89
94
  end
@@ -18,10 +18,9 @@ class Chef
18
18
 
19
19
  def run
20
20
  $stdout.sync = true
21
- handle_extra_config
22
21
  validate_required_params(@required_options, config)
23
22
 
24
- pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
23
+ pcc_api = Ionoscloud::PrivateCrossConnectsApi.new(api_client)
25
24
 
26
25
  @name_args.each do |pcc_id|
27
26
  begin
@@ -32,7 +31,15 @@ class Chef
32
31
  next
33
32
  end
34
33
 
35
- print_pcc(pcc)
34
+ peers = pcc.properties.peers.map { |peer| peer.id }
35
+ datacenters = pcc.properties.connectable_datacenters.map { |datacenter| datacenter.id }
36
+
37
+ msg_pair('ID', pcc.id)
38
+ msg_pair('Name', pcc.properties.name)
39
+ msg_pair('Description', pcc.properties.description)
40
+ msg_pair('Peers', peers.to_s)
41
+ msg_pair('Datacenters', datacenters.to_s)
42
+
36
43
  puts "\n"
37
44
 
38
45
  begin
@@ -18,7 +18,6 @@ class Chef
18
18
 
19
19
  def run
20
20
  $stdout.sync = true
21
- handle_extra_config
22
21
  validate_required_params(@required_options, config)
23
22
 
24
23
  pcc_list = [
@@ -27,7 +26,7 @@ class Chef
27
26
  ui.color('Description', :bold),
28
27
  ]
29
28
 
30
- pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
29
+ pcc_api = Ionoscloud::PrivateCrossConnectsApi.new(api_client)
31
30
 
32
31
  pcc_api.pccs_get({ depth: 1 }).items.each do |pcc|
33
32
  pcc_list << pcc.id
@@ -42,7 +42,6 @@ class Chef
42
42
 
43
43
  def run
44
44
  $stdout.sync = true
45
- handle_extra_config
46
45
  validate_required_params(@required_options, config)
47
46
 
48
47
  request_list = [
@@ -52,7 +51,7 @@ class Chef
52
51
  ui.color('Targets', :bold),
53
52
  ]
54
53
 
55
- request_api = Ionoscloud::RequestApi.new(api_client)
54
+ request_api = Ionoscloud::RequestsApi.new(api_client)
56
55
 
57
56
  begin
58
57
  config[:limit] = Integer(config[:limit])
@@ -23,11 +23,10 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
- handle_extra_config
27
26
  validate_required_params(@required_options, config)
28
27
 
29
28
  begin
30
- puts Ionoscloud::RequestApi.new(api_client).requests_status_get(config[:request_id]).metadata.status
29
+ puts Ionoscloud::RequestsApi.new(api_client).requests_status_get(config[:request_id]).metadata.status
31
30
  rescue Ionoscloud::ApiError => err
32
31
  raise err unless err.code == 404
33
32
  ui.error("Request ID #{config[:request_id]} not found.")
@@ -23,7 +23,6 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
- handle_extra_config
27
26
  validate_required_params(@required_options, config)
28
27
 
29
28
  print "#{ui.color('Waiting for request...', :magenta)}"
@@ -45,7 +45,6 @@ class Chef
45
45
 
46
46
  def run
47
47
  $stdout.sync = true
48
- handle_extra_config
49
48
  validate_required_params(@required_options, config)
50
49
 
51
50
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
@@ -23,19 +23,22 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
- handle_extra_config
27
26
  validate_required_params(@required_options, config)
28
27
 
29
28
  print "#{ui.color('Creating S3key...', :magenta)}"
30
29
 
31
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
30
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
32
31
 
33
- s3_key, _, headers = user_management_api.um_users_s3keys_post_with_http_info(config[:user_id])
32
+ s3_key, _, headers = user_s3keys_api.um_users_s3keys_post_with_http_info(config[:user_id])
34
33
 
35
34
  dot = ui.color('.', :magenta)
36
35
  api_client.wait_for { print dot; is_done? get_request_id headers }
37
36
 
38
- print_s3key(s3_key)
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'
39
42
  end
40
43
  end
41
44
  end
@@ -23,21 +23,23 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
- handle_extra_config
27
26
  validate_required_params(@required_options, config)
28
27
 
29
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
28
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
30
29
 
31
30
  @name_args.each do |s3key_id|
32
31
  begin
33
- s3_key = user_management_api.um_users_s3keys_find_by_key_id(config[:user_id], s3key_id)
32
+ s3_key = user_s3keys_api.um_users_s3keys_find_by_key_id(config[:user_id], s3key_id)
34
33
  rescue Ionoscloud::ApiError => err
35
34
  raise err unless err.code == 404
36
35
  ui.error("S3 key ID #{s3key_id} not found. Skipping.")
37
36
  next
38
37
  end
39
38
 
40
- print_s3key(s3_key)
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
+
41
43
  puts "\n"
42
44
 
43
45
  begin
@@ -46,7 +48,7 @@ class Chef
46
48
  next
47
49
  end
48
50
 
49
- _, _, headers = user_management_api.um_users_s3keys_delete_with_http_info(config[:user_id], s3key_id)
51
+ _, _, headers = user_s3keys_api.um_users_s3keys_delete_with_http_info(config[:user_id], s3key_id)
50
52
  ui.warn("Deleted S3 key #{s3_key.id}. Request ID: #{get_request_id headers}")
51
53
  end
52
54
  end
@@ -23,7 +23,6 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
- handle_extra_config
27
26
  validate_required_params(@required_options, config)
28
27
 
29
28
  s3key_list = [
@@ -32,9 +31,9 @@ class Chef
32
31
  ui.color('Active', :bold),
33
32
  ]
34
33
 
35
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
34
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
36
35
 
37
- user_management_api.um_users_s3keys_get(config[:user_id], { depth: 1 }).items.each do |s3_key|
36
+ user_s3keys_api.um_users_s3keys_get(config[:user_id], { depth: 1 }).items.each do |s3_key|
38
37
  s3key_list << s3_key.id
39
38
  s3key_list << s3_key.properties.secret_key
40
39
  s3key_list << s3_key.properties.active.to_s
@@ -2,39 +2,40 @@ require_relative 'ionoscloud_base'
2
2
 
3
3
  class Chef
4
4
  class Knife
5
- class IonoscloudServerGet < Knife
5
+ class IonoscloudServerConsole < Knife
6
6
  include Knife::IonoscloudBase
7
7
 
8
- banner 'knife ionoscloud server get (options)'
8
+ banner 'knife ionoscloud server console (options)'
9
9
 
10
10
  option :datacenter_id,
11
11
  short: '-D DATACENTER_ID',
12
12
  long: '--datacenter-id DATACENTER_ID',
13
- description: 'ID of the data center'
13
+ description: 'The ID of the Datacenter.'
14
14
 
15
15
  option :server_id,
16
16
  short: '-S SERVER_ID',
17
17
  long: '--server-id SERVER_ID',
18
- description: 'The ID of the server to which the NIC is assigned'
18
+ description: 'The ID of the Server.'
19
19
 
20
20
  attr_reader :description, :required_options
21
21
 
22
22
  def initialize(args = [])
23
23
  super(args)
24
24
  @description =
25
- 'Retrieves the attributes of a given Server.'
25
+ 'Returns the link with the jwToken to access the server remote console.'
26
26
  @required_options = [:datacenter_id, :server_id, :ionoscloud_username, :ionoscloud_password]
27
27
  end
28
28
 
29
29
  def run
30
30
  $stdout.sync = true
31
- handle_extra_config
32
31
  validate_required_params(@required_options, config)
33
32
 
34
- print_server(Ionoscloud::ServerApi.new(api_client).datacenters_servers_find_by_id(
35
- config[:datacenter_id],
36
- config[:server_id],
37
- ))
33
+ begin
34
+ puts Ionoscloud::ServersApi.new(api_client).datacenters_servers_remote_console_get(config[:datacenter_id], config[:server_id]).url
35
+ rescue Ionoscloud::ApiError => err
36
+ raise err unless err.code == 404
37
+ ui.error("Server ID #{config[:server_id]} not found.")
38
+ end
38
39
  end
39
40
  end
40
41
  end
@@ -61,32 +61,43 @@ class Chef
61
61
 
62
62
  def run
63
63
  $stdout.sync = true
64
- handle_extra_config
65
64
  validate_required_params(@required_options, config)
66
65
 
67
66
  print "#{ui.color('Creating server...', :magenta)}"
67
+ params = {
68
+ name: config[:name],
69
+ cores: config[:cores],
70
+ cpu_family: config[:cpu_family],
71
+ ram: config[:ram],
72
+ availability_zone: config[:availability_zone],
73
+ }
68
74
 
69
- server_api = Ionoscloud::ServerApi.new(api_client)
75
+ params[:boot_cdrom] = { id: config[:boot_cdrom] } unless config[:boot_cdrom].nil?
76
+ params[:boot_volume] = { id: config[:boot_volume] } unless config[:boot_volume].nil?
70
77
 
71
- server, _, headers = server_api.datacenters_servers_post_with_http_info(
78
+ servers_api = Ionoscloud::ServersApi.new(api_client)
79
+
80
+ server, _, headers = servers_api.datacenters_servers_post_with_http_info(
72
81
  config[:datacenter_id],
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
- ),
82
+ Ionoscloud::Server.new(properties: Ionoscloud::ServerProperties.new(params.compact)),
84
83
  )
85
84
 
86
85
  dot = ui.color('.', :magenta)
87
86
  api_client.wait_for { print dot; is_done? get_request_id headers }
88
87
 
89
- print_server(server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id))
88
+ server = servers_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'
90
101
  end
91
102
  end
92
103
  end
@@ -25,10 +25,9 @@ class Chef
25
25
 
26
26
  def run
27
27
  $stdout.sync = true
28
- handle_extra_config
29
28
  validate_required_params(@required_options, config)
30
29
 
31
- server_api = Ionoscloud::ServerApi.new(api_client)
30
+ server_api = Ionoscloud::ServersApi.new(api_client)
32
31
 
33
32
  @name_args.each do |server_id|
34
33
  begin
@@ -38,7 +37,15 @@ class Chef
38
37
  ui.error("Server ID #{server_id} not found. Skipping.")
39
38
  next
40
39
  end
41
- print_server(server)
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)
42
49
 
43
50
  begin
44
51
  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,36 +28,41 @@ class Chef
23
28
 
24
29
  def run
25
30
  $stdout.sync = true
26
- handle_extra_config
27
31
  validate_required_params(@required_options, config)
28
32
 
29
33
  server_list = [
30
34
  ui.color('ID', :bold),
31
35
  ui.color('Name', :bold),
36
+ ui.color('Type', :bold),
37
+ ui.color('Template', :bold),
32
38
  ui.color('Cores', :bold),
33
39
  ui.color('CPU Family', :bold),
34
40
  ui.color('RAM', :bold),
35
- ui.color('Availability Zone', :bold),
36
41
  ui.color('VM State', :bold),
37
42
  ui.color('Boot Volume', :bold),
38
43
  ui.color('Boot CDROM', :bold),
39
44
  ]
40
45
 
41
- server_api = Ionoscloud::ServerApi.new(api_client)
46
+ server_api = Ionoscloud::ServersApi.new(api_client)
47
+
48
+ opts = { depth: 1 }
49
+
50
+ opts[:upgrade_needed] = config[:upgrade_needed] if config[:upgrade_needed]
42
51
 
43
- server_api.datacenters_servers_get(config[:datacenter_id], { depth: 1 }).items.each do |server|
52
+ server_api.datacenters_servers_get(config[:datacenter_id], opts).items.each do |server|
44
53
  server_list << server.id
45
54
  server_list << server.properties.name
55
+ server_list << server.properties.type
56
+ server_list << server.properties.template_uuid
46
57
  server_list << server.properties.cores.to_s
47
58
  server_list << server.properties.cpu_family
48
59
  server_list << server.properties.ram.to_s
49
- server_list << server.properties.availability_zone
50
60
  server_list << server.properties.vm_state
51
61
  server_list << (server.properties.boot_volume.nil? ? '' : server.properties.boot_volume.id)
52
62
  server_list << (server.properties.boot_cdrom.nil? ? '' : server.properties.boot_cdrom.id)
53
63
  end
54
64
 
55
- puts ui.list(server_list, :uneven_columns_across, 9)
65
+ puts ui.list(server_list, :uneven_columns_across, 10)
56
66
  end
57
67
  end
58
68
  end
@@ -25,10 +25,9 @@ class Chef
25
25
 
26
26
  def run
27
27
  $stdout.sync = true
28
- handle_extra_config
29
28
  validate_required_params(@required_options, config)
30
29
 
31
- server_api = Ionoscloud::ServerApi.new(api_client)
30
+ server_api = Ionoscloud::ServersApi.new(api_client)
32
31
 
33
32
  @name_args.each do |server_id|
34
33
  begin
@@ -0,0 +1,43 @@
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
+ validate_required_params(@required_options, config)
27
+
28
+ server_api = Ionoscloud::ServersApi.new(api_client)
29
+
30
+ @name_args.each do |server_id|
31
+ begin
32
+ _, _, headers = server_api.datacenters_servers_resume_post_with_http_info(config[:datacenter_id], server_id)
33
+ rescue Ionoscloud::ApiError => err
34
+ raise err unless err.code == 404
35
+ ui.error("Server ID #{server_id} not found. Skipping.")
36
+ next
37
+ end
38
+ ui.info("Server #{server_id} is resuming. Request ID: #{get_request_id headers}")
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -23,10 +23,9 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
- handle_extra_config
27
26
  validate_required_params(@required_options, config)
28
27
 
29
- server_api = Ionoscloud::ServerApi.new(api_client)
28
+ server_api = Ionoscloud::ServersApi.new(api_client)
30
29
 
31
30
  @name_args.each do |server_id|
32
31
  begin
@@ -24,10 +24,9 @@ class Chef
24
24
 
25
25
  def run
26
26
  $stdout.sync = true
27
- handle_extra_config
28
27
  validate_required_params(@required_options, config)
29
28
 
30
- server_api = Ionoscloud::ServerApi.new(api_client)
29
+ server_api = Ionoscloud::ServersApi.new(api_client)
31
30
 
32
31
  @name_args.each do |server_id|
33
32
  begin