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,105 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudNetworkloadbalancerRuleTargetRemove < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud networkloadbalancer rule target remove (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'Name of the data center'
14
+
15
+ option :network_loadbalancer_id,
16
+ short: '-L NETWORK_LOADBALANCER_ID',
17
+ long: '--network-loadbalancer NETWORK_LOADBALANCER_ID',
18
+ description: 'ID of the Network Loadbalancer'
19
+
20
+ option :forwarding_rule_id,
21
+ short: '-R FORWARDING_RULE_ID',
22
+ long: '--forwarding-rule FORWARDING_RULE_ID',
23
+ description: 'ID of the Network Loadbalancer Forwarding Rule'
24
+
25
+ option :ip,
26
+ short: '-i IP',
27
+ long: '--ip IP',
28
+ description: 'IP of a balanced target VM'
29
+
30
+ option :port,
31
+ short: '-p PORT',
32
+ long: '--port PORT',
33
+ description: 'Port of the balanced target service. (range: 1 to 65535)'
34
+
35
+ attr_reader :description, :required_options
36
+
37
+ def initialize(args = [])
38
+ super(args)
39
+ @description =
40
+ 'Adds a target to a Network Load Balancer Forwarding Rule under a data center.'
41
+ @required_options = [
42
+ :datacenter_id, :network_loadbalancer_id, :forwarding_rule_id, :ip, :port, :ionoscloud_username, :ionoscloud_password,
43
+ ]
44
+ end
45
+
46
+ def run
47
+ $stdout.sync = true
48
+ validate_required_params(@required_options, config)
49
+
50
+ network_loadbalancers_api = Ionoscloud::NetworkLoadBalancersApi.new(api_client)
51
+
52
+
53
+ network_load_balancer_rule = network_loadbalancers_api.datacenters_networkloadbalancers_forwardingrules_find_by_forwarding_rule_id(
54
+ config[:datacenter_id], config[:network_loadbalancer_id], config[:forwarding_rule_id],
55
+ )
56
+
57
+ initial_length = network_load_balancer_rule.properties.targets.length
58
+
59
+ network_load_balancer_rule.properties.targets = network_load_balancer_rule.properties.targets.reject do
60
+ |target|
61
+ target.ip == config[:ip] && target.port == Integer(config[:port])
62
+ end
63
+
64
+ if initial_length > network_load_balancer_rule.properties.targets.length
65
+ _, _, headers = network_loadbalancers_api.datacenters_networkloadbalancers_forwardingrules_patch_with_http_info(
66
+ config[:datacenter_id],
67
+ config[:network_loadbalancer_id],
68
+ config[:forwarding_rule_id],
69
+ Ionoscloud::NetworkLoadBalancerForwardingRuleProperties.new({
70
+ targets: network_load_balancer_rule.properties.targets,
71
+ }),
72
+ )
73
+
74
+ print "#{ui.color('Removing the target from the Network Loadbalancer Forwarding Rule...', :magenta)}"
75
+ dot = ui.color('.', :magenta)
76
+ api_client.wait_for { print dot; is_done? get_request_id headers }
77
+ end
78
+
79
+ network_load_balancer_rule = network_loadbalancers_api.datacenters_networkloadbalancers_forwardingrules_find_by_forwarding_rule_id(
80
+ config[:datacenter_id], config[:network_loadbalancer_id], config[:forwarding_rule_id], depth: 2,
81
+ )
82
+
83
+ puts "\n"
84
+ puts "#{ui.color('ID', :cyan)}: #{network_load_balancer_rule.id}"
85
+ puts "#{ui.color('Name', :cyan)}: #{network_load_balancer_rule.properties.name}"
86
+ puts "#{ui.color('Algorithm', :cyan)}: #{network_load_balancer_rule.properties.algorithm}"
87
+ puts "#{ui.color('Protocol', :cyan)}: #{network_load_balancer_rule.properties.protocol}"
88
+ puts "#{ui.color('Listener IP', :cyan)}: #{network_load_balancer_rule.properties.listener_ip}"
89
+ puts "#{ui.color('Listener Port', :cyan)}: #{network_load_balancer_rule.properties.listener_port}"
90
+ puts "#{ui.color('Health Check', :cyan)}: #{network_load_balancer_rule.properties.health_check}"
91
+ puts "#{ui.color('Targets', :cyan)}: #{network_load_balancer_rule.properties.targets.map do |target|
92
+ {
93
+ ip: target.ip,
94
+ port: target.port,
95
+ weight: target.weight,
96
+ check: target.health_check.check,
97
+ check_interval: target.health_check.check_interval,
98
+ maintenance: target.health_check.maintenance,
99
+ }
100
+ end}"
101
+ puts 'done'
102
+ end
103
+ end
104
+ end
105
+ end
@@ -28,7 +28,10 @@ class Chef
28
28
  description: 'IPs assigned to the NIC'
29
29
 
30
30
  option :dhcp,
31
- long: '--dhcp DHCP',
31
+ short: '-d',
32
+ long: '--dhcp',
33
+ boolean: true | false,
34
+ default: true,
32
35
  description: 'Set to false if you wish to disable DHCP'
33
36
 
34
37
  option :lan,
@@ -36,9 +39,12 @@ class Chef
36
39
  long: '--lan ID',
37
40
  description: 'The LAN ID the NIC will reside on; if the LAN ID does not exist it will be created'
38
41
 
39
- option :nat,
40
- long: '--nat NAT',
41
- description: 'Set to enable NAT on the NIC'
42
+ option :firewall_type,
43
+ short: '-t FIREWALL_TYPE',
44
+ long: '--firewall-type FIREWALL_TYPE',
45
+ description: 'The type of firewall rules that will be allowed on the NIC. If it is not specified it will take the '\
46
+ 'default value INGRESS',
47
+ default: 'INGRESS'
42
48
 
43
49
  attr_reader :description, :required_options
44
50
 
@@ -52,37 +58,50 @@ class Chef
52
58
 
53
59
  def run
54
60
  $stdout.sync = true
55
- handle_extra_config
56
61
  validate_required_params(@required_options, config)
57
62
 
58
63
  print "#{ui.color('Creating nic...', :magenta)}"
59
64
 
60
- config[:ips] = config[:ips].split(',') if config[:ips] && config[:ips].instance_of?(String)
65
+ if config[:ips]
66
+ config[:ips] = config[:ips].split(',')
67
+ end
61
68
 
62
- nic_api = Ionoscloud::NicApi.new(api_client)
69
+ nic_properties = {
70
+ name: config[:name],
71
+ ips: config[:ips],
72
+ dhcp: config[:dhcp],
73
+ lan: config[:lan],
74
+ firewall_type: config[:firewall_type]
75
+ }.compact
76
+
77
+ nic_api = Ionoscloud::NetworkInterfacesApi.new(api_client)
63
78
 
64
79
  nic, _, headers = nic_api.datacenters_servers_nics_post_with_http_info(
65
80
  config[:datacenter_id],
66
81
  config[:server_id],
67
- Ionoscloud::Nic.new(
68
- properties: Ionoscloud::NicProperties.new(
69
- name: config[:name],
70
- ips: config[:ips],
71
- dhcp: (config.key?(:dhcp) ? config[:dhcp].to_s.downcase == 'true' : nil),
72
- lan: config[:lan],
73
- nat: (config.key?(:nat) ? config[:nat].to_s.downcase == 'true' : nil),
74
- ),
75
- ),
82
+ Ionoscloud::Nic.new(properties: Ionoscloud::NicProperties.new(**nic_properties)),
76
83
  )
77
84
 
78
85
  dot = ui.color('.', :magenta)
79
86
  api_client.wait_for { print dot; is_done? get_request_id headers }
80
87
 
81
- print_nic(nic_api.datacenters_servers_nics_find_by_id(
82
- config[:datacenter_id],
88
+ nic = nic_api.datacenters_servers_nics_find_by_id(
89
+ config[:datacenter_id],
83
90
  config[:server_id],
84
91
  nic.id,
85
- ))
92
+ )
93
+
94
+ puts "\n"
95
+ puts "#{ui.color('ID', :cyan)}: #{nic.id}"
96
+ puts "#{ui.color('Name', :cyan)}: #{nic.properties.name}"
97
+ puts "#{ui.color('IPs', :cyan)}: #{nic.properties.ips.to_s}"
98
+ puts "#{ui.color('DHCP', :cyan)}: #{nic.properties.dhcp}"
99
+ puts "#{ui.color('LAN', :cyan)}: #{nic.properties.lan}"
100
+ puts "#{ui.color('Firewall Type', :cyan)}: #{nic.properties.firewall_type}"
101
+ puts "#{ui.color('Device Number', :cyan)}: #{nic.properties.device_number}"
102
+ puts "#{ui.color('PCI Slot', :cyan)}: #{nic.properties.pci_slot}"
103
+
104
+ puts 'done'
86
105
  end
87
106
  end
88
107
  end
@@ -15,7 +15,7 @@ class Chef
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 assigned the NIC'
19
19
 
20
20
  attr_reader :description, :required_options
21
21
 
@@ -28,10 +28,9 @@ class Chef
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
- nic_api = Ionoscloud::NicApi.new(api_client)
33
+ nic_api = Ionoscloud::NetworkInterfacesApi.new(api_client)
35
34
  @name_args.each do |nic_id|
36
35
  begin
37
36
  nic = nic_api.datacenters_servers_nics_find_by_id(config[:datacenter_id], config[:server_id], nic_id)
@@ -40,8 +39,15 @@ class Chef
40
39
  ui.error("Nic ID #{nic_id} not found. Skipping.")
41
40
  next
42
41
  end
43
- print_nic(nic)
44
- puts "\n"
42
+
43
+ msg_pair('ID', nic.id)
44
+ msg_pair('Name', nic.properties.name)
45
+ msg_pair('IPs', nic.properties.ips)
46
+ msg_pair('DHCP', nic.properties.dhcp)
47
+ msg_pair('LAN', nic.properties.lan)
48
+ msg_pair('Firewall Type', nic.properties.firewall_type)
49
+ msg_pair('Device Number', nic.properties.device_number)
50
+ msg_pair('PCI Slot', nic.properties.pci_slot)
45
51
 
46
52
  begin
47
53
  confirm('Do you really want to delete this Nic')
@@ -28,7 +28,6 @@ class Chef
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
33
  nic_list = [
@@ -36,22 +35,26 @@ class Chef
36
35
  ui.color('Name', :bold),
37
36
  ui.color('IPs', :bold),
38
37
  ui.color('DHCP', :bold),
39
- ui.color('NAT', :bold),
40
- ui.color('LAN', :bold)
38
+ ui.color('LAN', :bold),
39
+ ui.color('Firewall Type', :bold),
40
+ ui.color('Device Number', :bold),
41
+ ui.color('PCI Slot', :bold),
41
42
  ]
42
43
 
43
- nic_api = Ionoscloud::NicApi.new(api_client)
44
+ nic_api = Ionoscloud::NetworkInterfacesApi.new(api_client)
44
45
 
45
46
  nic_api.datacenters_servers_nics_get(config[:datacenter_id], config[:server_id], { depth: 1 }).items.each do |nic|
46
47
  nic_list << nic.id
47
48
  nic_list << nic.properties.name
48
49
  nic_list << nic.properties.ips.to_s
49
50
  nic_list << nic.properties.dhcp.to_s
50
- nic_list << nic.properties.nat.to_s
51
51
  nic_list << nic.properties.lan.to_s
52
+ nic_list << nic.properties.firewall_type.to_s
53
+ nic_list << nic.properties.device_number.to_s
54
+ nic_list << nic.properties.pci_slot.to_s
52
55
  end
53
56
 
54
- puts ui.list(nic_list, :uneven_columns_across, 6)
57
+ puts ui.list(nic_list, :uneven_columns_across, 8)
55
58
  end
56
59
  end
57
60
  end
@@ -29,7 +29,6 @@ class Chef
29
29
 
30
30
  def run
31
31
  $stdout.sync = true
32
- handle_extra_config
33
32
  validate_required_params(@required_options, config)
34
33
 
35
34
  kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
@@ -42,7 +41,12 @@ class Chef
42
41
  ui.error("K8s Node ID #{node_id} not found. Skipping.")
43
42
  next
44
43
  end
45
- print_k8s_node(node)
44
+
45
+ msg_pair('ID', node.id)
46
+ msg_pair('Name', node.properties.name)
47
+ msg_pair('Public IP', node.properties.public_ip)
48
+ msg_pair('K8s Version', node.properties.k8s_version)
49
+ msg_pair('State', node.metadata.state)
46
50
 
47
51
  puts "\n"
48
52
 
@@ -12,7 +12,6 @@ class Chef
12
12
  long: '--cluster-id CLUSTER_ID',
13
13
  description: 'The ID of the K8s Cluster'
14
14
 
15
-
16
15
  option :nodepool_id,
17
16
  short: '-P NODEPOOL_ID',
18
17
  long: '--nodepool-id NODEPOOL_ID',
@@ -29,7 +28,6 @@ class Chef
29
28
 
30
29
  def run
31
30
  $stdout.sync = true
32
- handle_extra_config
33
31
  validate_required_params(@required_options, config)
34
32
 
35
33
  node_list = [
@@ -33,7 +33,6 @@ class Chef
33
33
 
34
34
  def run
35
35
  $stdout.sync = true
36
- handle_extra_config
37
36
  validate_required_params(@required_options, config)
38
37
 
39
38
  kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
@@ -22,12 +22,13 @@ class Chef
22
22
  long: '--name NAME',
23
23
  description: 'Name of the Kubernetes node pool'
24
24
 
25
- option :k8s_version,
25
+ option :version,
26
26
  short: '-v VERSION',
27
27
  long: '--version VERSION',
28
- description: 'The version for the Kubernetes Nodepool.'
28
+ description: 'The version for the Kubernetes cluster.'
29
29
 
30
30
  option :maintenance_day,
31
+ short: '-d MAINTENANCE_DAY',
31
32
  long: '--maintenance-day MAINTENANCE_DAY',
32
33
  description: 'Day Of the week when to perform the maintenance.'
33
34
 
@@ -90,14 +91,6 @@ class Chef
90
91
  'must contain one extra IP than maximum number of nodes could be. (nodeCount+1 if fixed '\
91
92
  'node amount or maxNodeCount+1 if auto scaling is used) The extra provided IP Will be used during rebuilding of nodes.'
92
93
 
93
- option :labels,
94
- long: '--labels LABEL [LABEL]',
95
- description: 'map of labels attached to node pool'
96
-
97
- option :annotations,
98
- long: '--annotations ANNOTATION [ANNOTATION]',
99
- description: 'map of annotations attached to node pool'
100
-
101
94
  attr_reader :description, :required_options
102
95
 
103
96
  def initialize(args = [])
@@ -107,28 +100,24 @@ class Chef
107
100
  "The Kubernetes cluster must be in state \"ACTIVE\" before creating a node pool.\n\n"\
108
101
  "The worker nodes within the node pools will be deployed into an existing data centers."
109
102
  @required_options = [
110
- :datacenter_id, :cluster_id, :name, :k8s_version, :node_count, :cpu_family, :cores, :ram,
103
+ :datacenter_id, :cluster_id, :name, :version, :node_count, :cpu_family, :cores, :ram,
111
104
  :availability_zone, :storage_type, :storage_size, :ionoscloud_username, :ionoscloud_password,
112
105
  ]
113
106
  end
114
107
 
115
108
  def run
116
109
  $stdout.sync = true
117
- handle_extra_config
118
110
  validate_required_params(@required_options, config)
119
111
 
120
112
  print "#{ui.color('Creating K8s Nodepool...', :magenta)}"
121
113
 
122
114
  kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
123
115
 
124
- config[:public_ips] = config[:public_ips].split(',') if config[:public_ips] && config[:public_ips].instance_of?(String)
125
- config[:lans] = config[:lans].split(',') if config[:lans] && config[:lans].instance_of?(String)
126
- config[:labels] = JSON[config[:labels]] if config[:labels] && config[:labels].instance_of?(String)
127
- config[:annotations] = JSON[config[:annotations]] if config[:annotations] && config[:annotations].instance_of?(String)
116
+ config[:public_ips] = config[:public_ips].split(',') if config[:public_ips]
128
117
 
129
118
  nodepool_properties = {
130
119
  name: config[:name],
131
- k8s_version: config[:k8s_version],
120
+ k8s_version: config[:version],
132
121
  datacenter_id: config[:datacenter_id],
133
122
  node_count: config[:node_count],
134
123
  cpu_family: config[:cpu_family],
@@ -138,29 +127,62 @@ class Chef
138
127
  storage_type: config[:storage_type],
139
128
  storage_size: config[:storage_size],
140
129
  public_ips: config[:public_ips],
141
- labels: config[:labels],
142
- annotations: config[:annotations],
143
- lans: config.key?(:lans) ? config[:lans].map! { |lan| { id: Integer(lan) } } : nil,
144
- auto_scaling: Ionoscloud::KubernetesAutoScaling.new(
145
- min_node_count: config[:min_node_count],
146
- max_node_count: config[:max_node_count],
147
- ),
148
- maintenance_window: (config.key?(:maintenance_day) || config.key?(:maintenance_time)) ? Ionoscloud::KubernetesMaintenanceWindow.new(
149
- day_of_the_week: config[:maintenance_day],
150
- time: config[:maintenance_time],
151
- ) : nil,
152
130
  }
153
131
 
154
- print_k8s_nodepool(
155
- kubernetes_api.k8s_nodepools_post(
156
- config[:cluster_id],
157
- Ionoscloud::KubernetesNodePoolForPost.new(
158
- properties: Ionoscloud::KubernetesNodePoolPropertiesForPost.new(
159
- **nodepool_properties,
160
- ),
161
- ),
162
- ),
163
- )
132
+ if config[:maintenance_day] && config[:maintenance_time]
133
+ nodepool_properties[:maintenance_window] = Ionoscloud::KubernetesMaintenanceWindow.new(
134
+ day_of_the_week: config[:maintenance_day],
135
+ time: config[:maintenance_time],
136
+ )
137
+ end
138
+
139
+ if config[:min_node_count] || config[:max_node_count]
140
+ nodepool_properties[:auto_scaling] = Ionoscloud::KubernetesAutoScaling.new()
141
+ nodepool_properties[:auto_scaling].min_node_count = config[:min_node_count] unless config[:min_node_count].nil?
142
+ nodepool_properties[:auto_scaling].max_node_count = config[:max_node_count] unless config[:max_node_count].nil?
143
+ end
144
+
145
+ if config[:lans]
146
+ nodepool_properties[:lans] = config[:lans].split(',').map! { |lan| { id: Integer(lan) } }
147
+ end
148
+
149
+ nodepool = Ionoscloud::KubernetesNodePool.new(properties: Ionoscloud::KubernetesNodePoolPropertiesForPost.new(nodepool_properties))
150
+
151
+ nodepool = kubernetes_api.k8s_nodepools_post(config[:cluster_id], nodepool)
152
+
153
+ auto_scaling = "Min node count: #{nodepool.properties.auto_scaling.min_node_count}, Max node count:#{nodepool.properties.auto_scaling.max_node_count}"
154
+ maintenance_window = "#{nodepool.properties.maintenance_window.day_of_the_week}, #{nodepool.properties.maintenance_window.time}"
155
+
156
+ puts "\n"
157
+ puts "#{ui.color('ID', :cyan)}: #{nodepool.id}"
158
+ puts "#{ui.color('Name', :cyan)}: #{nodepool.properties.name}"
159
+ puts "#{ui.color('K8s Version', :cyan)}: #{nodepool.properties.k8s_version}"
160
+ puts "#{ui.color('Datacenter ID', :cyan)}: #{nodepool.properties.datacenter_id}"
161
+ puts "#{ui.color('Node Count', :cyan)}: #{nodepool.properties.node_count}"
162
+ puts "#{ui.color('CPU Family', :cyan)}: #{nodepool.properties.cpu_family}"
163
+ puts "#{ui.color('Cores Count', :cyan)}: #{nodepool.properties.cores_count}"
164
+ puts "#{ui.color('RAM', :cyan)}: #{nodepool.properties.ram_size}"
165
+ puts "#{ui.color('Storage Type', :cyan)}: #{nodepool.properties.storage_type}"
166
+ puts "#{ui.color('Storage Size', :cyan)}: #{nodepool.properties.storage_size}"
167
+ puts "#{ui.color('Lans', :cyan)}: #{nodepool.properties.lans.map do
168
+ |lan|
169
+ {
170
+ id: lan.id,
171
+ dhcp: lan.dhcp,
172
+ routes: lan.routes ? lan.routes.map do
173
+ |route|
174
+ {
175
+ network: route.network,
176
+ gateway_ip: route.gateway_ip,
177
+ }
178
+ end : []
179
+ }
180
+ end}"
181
+ puts "#{ui.color('Availability Zone', :cyan)}: #{nodepool.properties.availability_zone}"
182
+ puts "#{ui.color('Auto Scaling', :cyan)}: #{auto_scaling}"
183
+ puts "#{ui.color('Maintenance Window', :cyan)}: #{maintenance_window}"
184
+ puts "#{ui.color('State', :cyan)}: #{nodepool.metadata.state}"
185
+ puts 'done'
164
186
  end
165
187
  end
166
188
  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
  kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
@@ -37,7 +36,38 @@ class Chef
37
36
  next
38
37
  end
39
38
 
40
- print_k8s_nodepool(nodepool)
39
+ auto_scaling = "Min node count: #{nodepool.properties.auto_scaling.min_node_count}, Max node count:#{nodepool.properties.auto_scaling.max_node_count}"
40
+ maintenance_window = "#{nodepool.properties.maintenance_window.day_of_the_week}, #{nodepool.properties.maintenance_window.time}"
41
+
42
+ msg_pair('ID', nodepool.id)
43
+ msg_pair('Name', nodepool.properties.name)
44
+ msg_pair('K8s Version', nodepool.properties.k8s_version)
45
+ msg_pair('Datacenter ID', nodepool.properties.datacenter_id)
46
+ msg_pair('Node Count', nodepool.properties.node_count)
47
+ msg_pair('CPU Family', nodepool.properties.cpu_family)
48
+ msg_pair('Cores Count', nodepool.properties.cores_count)
49
+ msg_pair('RAM', nodepool.properties.ram_size)
50
+ msg_pair('Storage Type', nodepool.properties.storage_type)
51
+ msg_pair('Storage Size', nodepool.properties.storage_size)
52
+ msg_pair('Lans', nodepool.properties.lans.map do
53
+ |lan|
54
+ {
55
+ id: lan.id,
56
+ dhcp: lan.dhcp,
57
+ routes: lan.routes ? lan.routes.map do
58
+ |route|
59
+ {
60
+ network: route.network,
61
+ gateway_ip: route.gateway_ip,
62
+ }
63
+ end : []
64
+ }
65
+ end)
66
+ msg_pair('Availability Zone', nodepool.properties.availability_zone)
67
+ msg_pair('Auto Scaling', auto_scaling)
68
+ msg_pair('Maintenance Window', maintenance_window)
69
+ msg_pair('State', nodepool.metadata.state)
70
+
41
71
  puts "\n"
42
72
 
43
73
  begin
@@ -0,0 +1,130 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudNodepoolLanAdd < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud nodepool lan add (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
+ option :lan_id,
21
+ short: '-L LAN_ID',
22
+ long: '--lan LAN_ID',
23
+ description: 'The ID of the LAN'
24
+
25
+ option :no_dhcp,
26
+ long: '--nodhcp',
27
+ boolean: true,
28
+ default: false,
29
+ description: 'Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP'
30
+
31
+ option :routes,
32
+ long: '--routes NETWORK,GATEWAY_IP [NETWORK,GATEWAY_IP]',
33
+ description: 'An array of additional LANs attached to worker nodes'
34
+
35
+ attr_reader :description, :required_options
36
+
37
+ def initialize(args = [])
38
+ super(args)
39
+ @description =
40
+ 'Adds or updates a LAN within a Nodepool.'
41
+ @required_options = [:cluster_id, :nodepool_id, :lan_id, :ionoscloud_username, :ionoscloud_password]
42
+ end
43
+
44
+ def run
45
+ $stdout.sync = true
46
+ validate_required_params(@required_options, config)
47
+
48
+ kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
49
+
50
+ begin
51
+ nodepool = kubernetes_api.k8s_nodepools_find_by_id(config[:cluster_id], config[:nodepool_id])
52
+ rescue Ionoscloud::ApiError => err
53
+ raise err unless err.code == 404
54
+ ui.error("Nodepool ID #{config[:nodepool_id]} not found.")
55
+ exit(1)
56
+ end
57
+
58
+ routes = []
59
+ config[:routes] = config[:routes].split(',') if config[:routes]
60
+ config[:routes].each_slice(2) do |network, gateway_ip|
61
+ routes << Ionoscloud::KubernetesNodePoolLanRoutes.new(
62
+ network: network,
63
+ gateway_ip: gateway_ip,
64
+ )
65
+ end
66
+
67
+ new_lan = Ionoscloud::KubernetesNodePoolLan.new(
68
+ id: Integer(config[:lan_id]),
69
+ dhcp: !config[:no_dhcp],
70
+ routes: routes,
71
+ )
72
+
73
+ puts new_lan
74
+
75
+ existing = nodepool.properties.lans.select { |lan| lan.id == new_lan.id }
76
+
77
+ new_nodepool = Ionoscloud::KubernetesNodePool.new(
78
+ properties: Ionoscloud::KubernetesNodePoolPropertiesForPut.new(
79
+ node_count: nodepool.properties.node_count,
80
+ k8s_version: nodepool.properties.k8s_version,
81
+ maintenance_window: nodepool.properties.maintenance_window,
82
+ auto_scaling: nodepool.properties.auto_scaling,
83
+ public_ips: nodepool.properties.public_ips,
84
+ lans: nodepool.properties.lans,
85
+ ),
86
+ )
87
+
88
+ new_nodepool.properties.lans = new_nodepool.properties.lans.delete_if { |lan| lan.id == new_lan.id }
89
+ new_nodepool.properties.lans << new_lan
90
+
91
+ nodepool = kubernetes_api.k8s_nodepools_put(
92
+ config[:cluster_id], config[:nodepool_id], new_nodepool,
93
+ )
94
+
95
+ if existing.length > 0
96
+ ui.info("Updating Lan #{config[:lan_id]} in the Nodepoool.")
97
+ else
98
+ ui.info("Adding Lan #{config[:lan_id]} to the Nodepoool.")
99
+ end
100
+
101
+ auto_scaling = "Min node count: #{nodepool.properties.auto_scaling.min_node_count}, Max node count:#{nodepool.properties.auto_scaling.max_node_count}"
102
+ maintenance_window = "#{nodepool.properties.maintenance_window.day_of_the_week}, #{nodepool.properties.maintenance_window.time}"
103
+
104
+ puts "\n"
105
+ puts "#{ui.color('ID', :cyan)}: #{nodepool.id}"
106
+ puts "#{ui.color('Name', :cyan)}: #{nodepool.properties.name}"
107
+ puts "#{ui.color('K8s Version', :cyan)}: #{nodepool.properties.k8s_version}"
108
+ puts "#{ui.color('Node Count', :cyan)}: #{nodepool.properties.node_count}"
109
+ puts "#{ui.color('Lans', :cyan)}: #{nodepool.properties.lans.map do
110
+ |lan|
111
+ {
112
+ id: lan.id,
113
+ dhcp: lan.dhcp,
114
+ routes: lan.routes ? lan.routes.map do
115
+ |route|
116
+ {
117
+ network: route.network,
118
+ gateway_ip: route.gateway_ip,
119
+ }
120
+ end : []
121
+ }
122
+ end}"
123
+ puts "#{ui.color('Auto Scaling', :cyan)}: #{auto_scaling}"
124
+ puts "#{ui.color('Maintenance Window', :cyan)}: #{maintenance_window}"
125
+ puts "#{ui.color('State', :cyan)}: #{nodepool.metadata.state}"
126
+ puts 'done'
127
+ end
128
+ end
129
+ end
130
+ end