knife-ionoscloud 5.1.1 → 6.0.0.beta.2

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 (326) hide show
  1. checksums.yaml +4 -4
  2. data/docs/README.md +1 -1
  3. data/docs/subcommands/composite_server_create.md +9 -3
  4. data/docs/subcommands/cube_server_create.md +91 -0
  5. data/docs/subcommands/firewall_create.md +5 -2
  6. data/docs/subcommands/flowlog_create.md +63 -0
  7. data/docs/subcommands/flowlog_delete.md +51 -0
  8. data/docs/subcommands/flowlog_list.md +51 -0
  9. data/docs/subcommands/group_create.md +10 -1
  10. data/docs/subcommands/natgateway_create.md +41 -0
  11. data/docs/subcommands/natgateway_delete.md +35 -0
  12. data/docs/subcommands/natgateway_lan_add.md +46 -0
  13. data/docs/subcommands/natgateway_lan_remove.md +39 -0
  14. data/docs/subcommands/natgateway_list.md +35 -0
  15. data/docs/subcommands/natgateway_rule_add.md +66 -0
  16. data/docs/subcommands/natgateway_rule_list.md +38 -0
  17. data/docs/subcommands/natgateway_rule_remove.md +39 -0
  18. data/docs/subcommands/networkloadbalancer_create.md +54 -0
  19. data/docs/subcommands/networkloadbalancer_delete.md +35 -0
  20. data/docs/subcommands/networkloadbalancer_list.md +35 -0
  21. data/docs/subcommands/networkloadbalancer_rule_add.md +72 -0
  22. data/docs/subcommands/networkloadbalancer_rule_list.md +39 -0
  23. data/docs/subcommands/networkloadbalancer_rule_remove.md +39 -0
  24. data/docs/subcommands/networkloadbalancer_rule_target_add.md +64 -0
  25. data/docs/subcommands/networkloadbalancer_rule_target_list.md +43 -0
  26. data/docs/subcommands/networkloadbalancer_rule_target_remove.md +51 -0
  27. data/docs/subcommands/nic_create.md +3 -3
  28. data/docs/subcommands/nodepool_lan_add.md +49 -0
  29. data/docs/subcommands/nodepool_lan_remove.md +39 -0
  30. data/docs/subcommands/server_console.md +39 -0
  31. data/docs/subcommands/server_list.md +4 -1
  32. data/docs/subcommands/server_resume.md +35 -0
  33. data/docs/subcommands/server_suspend.md +35 -0
  34. data/docs/subcommands/server_token.md +39 -0
  35. data/docs/subcommands/server_upgrade.md +39 -0
  36. data/docs/subcommands/template_list.md +31 -0
  37. data/docs/subcommands/volume_create.md +2 -5
  38. data/docs/summary.md +29 -0
  39. data/knife-ionoscloud.gemspec +1 -1
  40. data/lib/chef/knife/ionoscloud_backupunit_create.rb +12 -16
  41. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +2 -5
  42. data/lib/chef/knife/ionoscloud_backupunit_get.rb +33 -0
  43. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -1
  44. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +1 -1
  45. data/lib/chef/knife/ionoscloud_backupunit_update.rb +62 -0
  46. data/lib/chef/knife/ionoscloud_base.rb +309 -1
  47. data/lib/chef/knife/ionoscloud_composite_server_create.rb +23 -5
  48. data/lib/chef/knife/ionoscloud_contract_list.rb +32 -23
  49. data/lib/chef/knife/ionoscloud_cube_server_create.rb +212 -0
  50. data/lib/chef/knife/ionoscloud_datacenter_create.rb +11 -14
  51. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +2 -7
  52. data/lib/chef/knife/ionoscloud_datacenter_get.rb +33 -0
  53. data/lib/chef/knife/ionoscloud_datacenter_list.rb +4 -2
  54. data/lib/chef/knife/ionoscloud_datacenter_update.rb +67 -0
  55. data/lib/chef/knife/ionoscloud_firewall_create.rb +16 -21
  56. data/lib/chef/knife/ionoscloud_firewall_delete.rb +5 -13
  57. data/lib/chef/knife/ionoscloud_firewall_get.rb +52 -0
  58. data/lib/chef/knife/ionoscloud_firewall_list.rb +5 -3
  59. data/lib/chef/knife/ionoscloud_firewall_update.rb +133 -0
  60. data/lib/chef/knife/ionoscloud_flowlog_create.rb +116 -0
  61. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +103 -0
  62. data/lib/chef/knife/ionoscloud_flowlog_get.rb +84 -0
  63. data/lib/chef/knife/ionoscloud_flowlog_list.rb +101 -0
  64. data/lib/chef/knife/ionoscloud_flowlog_update.rb +127 -0
  65. data/lib/chef/knife/ionoscloud_group_create.rb +33 -27
  66. data/lib/chef/knife/ionoscloud_group_delete.rb +1 -11
  67. data/lib/chef/knife/ionoscloud_group_get.rb +1 -13
  68. data/lib/chef/knife/ionoscloud_group_list.rb +19 -7
  69. data/lib/chef/knife/ionoscloud_group_update.rb +131 -0
  70. data/lib/chef/knife/ionoscloud_group_user_add.rb +1 -18
  71. data/lib/chef/knife/ionoscloud_group_user_remove.rb +1 -18
  72. data/lib/chef/knife/ionoscloud_image_list.rb +1 -1
  73. data/lib/chef/knife/ionoscloud_ipblock_create.rb +10 -13
  74. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +1 -4
  75. data/lib/chef/knife/ionoscloud_ipblock_get.rb +33 -0
  76. data/lib/chef/knife/ionoscloud_ipblock_update.rb +57 -0
  77. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +1 -1
  78. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +1 -1
  79. data/lib/chef/knife/ionoscloud_k8s_create.rb +27 -35
  80. data/lib/chef/knife/ionoscloud_k8s_delete.rb +1 -9
  81. data/lib/chef/knife/ionoscloud_k8s_get.rb +33 -0
  82. data/lib/chef/knife/ionoscloud_k8s_update.rb +99 -0
  83. data/lib/chef/knife/ionoscloud_label_add.rb +1 -1
  84. data/lib/chef/knife/ionoscloud_label_list.rb +1 -1
  85. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -1
  86. data/lib/chef/knife/ionoscloud_lan_create.rb +6 -14
  87. data/lib/chef/knife/ionoscloud_lan_delete.rb +3 -4
  88. data/lib/chef/knife/ionoscloud_lan_get.rb +38 -0
  89. data/lib/chef/knife/ionoscloud_lan_list.rb +2 -1
  90. data/lib/chef/knife/ionoscloud_lan_update.rb +76 -0
  91. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +4 -14
  92. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +2 -9
  93. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +3 -13
  94. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -1
  95. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +3 -15
  96. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +3 -16
  97. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +73 -0
  98. data/lib/chef/knife/ionoscloud_location_list.rb +5 -3
  99. data/lib/chef/knife/ionoscloud_natgateway_create.rb +60 -0
  100. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +54 -0
  101. data/lib/chef/knife/ionoscloud_natgateway_get.rb +42 -0
  102. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +74 -0
  103. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +52 -0
  104. data/lib/chef/knife/ionoscloud_natgateway_list.rb +51 -0
  105. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +107 -0
  106. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +65 -0
  107. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +55 -0
  108. data/lib/chef/knife/ionoscloud_natgateway_rule_update.rb +116 -0
  109. data/lib/chef/knife/ionoscloud_natgateway_update.rb +84 -0
  110. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +89 -0
  111. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +62 -0
  112. data/lib/chef/knife/ionoscloud_networkloadbalancer_get.rb +42 -0
  113. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +57 -0
  114. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +141 -0
  115. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +65 -0
  116. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +68 -0
  117. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +124 -0
  118. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +70 -0
  119. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +88 -0
  120. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_update.rb +148 -0
  121. data/lib/chef/knife/ionoscloud_networkloadbalancer_update.rb +98 -0
  122. data/lib/chef/knife/ionoscloud_nic_create.rb +17 -22
  123. data/lib/chef/knife/ionoscloud_nic_delete.rb +3 -7
  124. data/lib/chef/knife/ionoscloud_nic_get.rb +49 -0
  125. data/lib/chef/knife/ionoscloud_nic_list.rb +9 -5
  126. data/lib/chef/knife/ionoscloud_nic_update.rb +96 -0
  127. data/lib/chef/knife/ionoscloud_node_get.rb +49 -0
  128. data/lib/chef/knife/ionoscloud_node_list.rb +0 -1
  129. data/lib/chef/knife/ionoscloud_nodepool_create.rb +35 -48
  130. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +1 -7
  131. data/lib/chef/knife/ionoscloud_nodepool_get.rb +43 -0
  132. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +104 -0
  133. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +72 -0
  134. data/lib/chef/knife/ionoscloud_nodepool_list.rb +3 -1
  135. data/lib/chef/knife/ionoscloud_nodepool_update.rb +124 -0
  136. data/lib/chef/knife/ionoscloud_pcc_create.rb +12 -18
  137. data/lib/chef/knife/ionoscloud_pcc_delete.rb +2 -10
  138. data/lib/chef/knife/ionoscloud_pcc_get.rb +33 -0
  139. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -1
  140. data/lib/chef/knife/ionoscloud_pcc_update.rb +63 -0
  141. data/lib/chef/knife/ionoscloud_request_get.rb +40 -0
  142. data/lib/chef/knife/ionoscloud_request_list.rb +1 -1
  143. data/lib/chef/knife/ionoscloud_request_status.rb +1 -1
  144. data/lib/chef/knife/ionoscloud_s3key_create.rb +3 -7
  145. data/lib/chef/knife/ionoscloud_s3key_delete.rb +4 -7
  146. data/lib/chef/knife/ionoscloud_s3key_get.rb +38 -0
  147. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -2
  148. data/lib/chef/knife/ionoscloud_server_console.rb +43 -0
  149. data/lib/chef/knife/ionoscloud_server_create.rb +14 -26
  150. data/lib/chef/knife/ionoscloud_server_delete.rb +3 -9
  151. data/lib/chef/knife/ionoscloud_server_get.rb +43 -0
  152. data/lib/chef/knife/ionoscloud_server_list.rb +16 -5
  153. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -1
  154. data/lib/chef/knife/ionoscloud_server_resume.rb +44 -0
  155. data/lib/chef/knife/ionoscloud_server_start.rb +1 -1
  156. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -1
  157. data/lib/chef/knife/ionoscloud_server_suspend.rb +45 -0
  158. data/lib/chef/knife/ionoscloud_server_token.rb +43 -0
  159. data/lib/chef/knife/ionoscloud_server_update.rb +97 -0
  160. data/lib/chef/knife/ionoscloud_server_upgrade.rb +45 -0
  161. data/lib/chef/knife/ionoscloud_share_create.rb +7 -11
  162. data/lib/chef/knife/ionoscloud_share_delete.rb +2 -3
  163. data/lib/chef/knife/ionoscloud_share_get.rb +38 -0
  164. data/lib/chef/knife/ionoscloud_share_update.rb +70 -0
  165. data/lib/chef/knife/ionoscloud_snapshot_create.rb +2 -10
  166. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +2 -7
  167. data/lib/chef/knife/ionoscloud_snapshot_get.rb +32 -0
  168. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -1
  169. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +3 -14
  170. data/lib/chef/knife/ionoscloud_snapshot_update.rb +126 -0
  171. data/lib/chef/knife/ionoscloud_template_list.rb +47 -0
  172. data/lib/chef/knife/ionoscloud_user_create.rb +1 -8
  173. data/lib/chef/knife/ionoscloud_user_delete.rb +1 -6
  174. data/lib/chef/knife/ionoscloud_user_get.rb +32 -0
  175. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -1
  176. data/lib/chef/knife/ionoscloud_user_update.rb +92 -0
  177. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -1
  178. data/lib/chef/knife/ionoscloud_volume_create.rb +18 -34
  179. data/lib/chef/knife/ionoscloud_volume_delete.rb +3 -9
  180. data/lib/chef/knife/ionoscloud_volume_detach.rb +1 -1
  181. data/lib/chef/knife/ionoscloud_volume_get.rb +36 -0
  182. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -2
  183. data/lib/chef/knife/ionoscloud_volume_update.rb +106 -0
  184. data/lib/knife-ionoscloud/version.rb +1 -1
  185. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  186. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  187. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +65 -0
  188. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  189. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  190. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +78 -0
  191. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  192. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  193. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  194. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  195. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +6 -2
  196. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +8 -5
  197. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +69 -0
  198. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +5 -3
  199. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +82 -0
  200. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  201. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  202. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +77 -0
  203. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  204. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +117 -0
  205. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  206. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  207. data/spec/chef/knife/ionoscloud_flowlog_get_spec.rb +171 -0
  208. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  209. data/spec/chef/knife/ionoscloud_flowlog_update_spec.rb +244 -0
  210. data/spec/chef/knife/ionoscloud_group_create_spec.rb +9 -0
  211. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +6 -0
  212. data/spec/chef/knife/ionoscloud_group_get_spec.rb +6 -0
  213. data/spec/chef/knife/ionoscloud_group_list_spec.rb +26 -8
  214. data/spec/chef/knife/ionoscloud_group_update_spec.rb +121 -0
  215. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +6 -0
  216. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +6 -0
  217. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  218. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +66 -0
  219. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +79 -0
  220. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +4 -4
  221. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +7 -7
  222. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +7 -0
  223. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +16 -11
  224. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +72 -0
  225. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +114 -0
  226. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  227. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  228. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  229. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  230. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +4 -3
  231. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +7 -5
  232. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +68 -0
  233. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +2 -2
  234. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +87 -0
  235. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  236. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  237. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  238. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  239. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  240. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  241. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +89 -0
  242. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  243. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +92 -0
  244. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  245. data/spec/chef/knife/ionoscloud_natgateway_get_spec.rb +81 -0
  246. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +158 -0
  247. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +209 -0
  248. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  249. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +99 -0
  250. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  251. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +78 -0
  252. data/spec/chef/knife/ionoscloud_natgateway_rule_update_spec.rb +121 -0
  253. data/spec/chef/knife/ionoscloud_natgateway_update_spec.rb +121 -0
  254. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +93 -0
  255. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +120 -0
  256. data/spec/chef/knife/ionoscloud_networkloadbalancer_get_spec.rb +82 -0
  257. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  258. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +105 -0
  259. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  260. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +150 -0
  261. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +113 -0
  262. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  263. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +281 -0
  264. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_update_spec.rb +163 -0
  265. data/spec/chef/knife/ionoscloud_networkloadbalancer_update_spec.rb +107 -0
  266. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  267. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  268. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +72 -0
  269. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  270. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +97 -0
  271. data/spec/chef/knife/ionoscloud_node_get_spec.rb +70 -0
  272. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +10 -5
  273. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +14 -0
  274. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +83 -0
  275. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +222 -0
  276. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +196 -0
  277. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  278. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +134 -0
  279. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +11 -8
  280. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +7 -7
  281. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +71 -0
  282. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  283. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +83 -0
  284. data/spec/chef/knife/ionoscloud_request_get_spec.rb +69 -0
  285. data/spec/chef/knife/ionoscloud_request_list_spec.rb +16 -16
  286. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  287. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  288. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  289. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +66 -0
  290. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  291. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  292. data/spec/chef/knife/ionoscloud_server_create_spec.rb +6 -3
  293. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +8 -5
  294. data/spec/chef/knife/ionoscloud_server_get_spec.rb +74 -0
  295. data/spec/chef/knife/ionoscloud_server_list_spec.rb +63 -5
  296. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  297. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  298. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  299. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  300. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  301. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  302. data/spec/chef/knife/ionoscloud_server_update_spec.rb +105 -0
  303. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  304. data/spec/chef/knife/ionoscloud_share_get_spec.rb +66 -0
  305. data/spec/chef/knife/ionoscloud_share_update_spec.rb +91 -0
  306. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +15 -3
  307. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +17 -5
  308. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +79 -0
  309. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  310. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +12 -3
  311. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +113 -0
  312. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  313. data/spec/chef/knife/ionoscloud_user_create_spec.rb +3 -1
  314. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +4 -2
  315. data/spec/chef/knife/ionoscloud_user_get_spec.rb +70 -0
  316. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  317. data/spec/chef/knife/ionoscloud_user_update_spec.rb +110 -0
  318. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  319. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +21 -11
  320. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +15 -5
  321. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -5
  322. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +81 -0
  323. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  324. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +116 -0
  325. data/spec/spec_helper.rb +251 -39
  326. metadata +245 -6
@@ -53,6 +53,19 @@ class Chef
53
53
  long: '--create-internet-access',
54
54
  description: 'The group will be have internet access privilege.'
55
55
 
56
+ option :create_flow_log,
57
+ long: '--create-flow-log',
58
+ description: 'The group will be granted create Flow Logs privilege.'
59
+
60
+ option :access_and_manage_monitoring,
61
+ long: '--manage-monitoring',
62
+ description: 'Privilege for a group to access and manage monitoring '\
63
+ 'related functionality (access metrics, CRUD on alarms, alarm-actions etc) using Monotoring-as-a-Service (MaaS).'
64
+
65
+ option :access_and_manage_certificates,
66
+ long: '--manage-certificates',
67
+ description: 'Privilege for a group to access and manage certificates.'
68
+
56
69
  attr_reader :description, :required_options
57
70
 
58
71
  def initialize(args = [])
@@ -71,37 +84,30 @@ class Chef
71
84
 
72
85
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
73
86
 
74
- group, _, headers = user_management_api.um_groups_post_with_http_info({
75
- properties: {
76
- name: config[:name],
77
- createDataCenter: config[:create_data_center],
78
- createSnapshot: config[:create_snapshot],
79
- reserveIp: config[:reserve_ip],
80
- accessActivityLog: config[:access_activity_log],
81
- s3Privilege: config[:s3_privilege],
82
- createBackupUnit: config[:create_backup_unit],
83
- createK8sCluster: config[:create_k8s_cluster],
84
- createPcc: config[:create_pcc],
85
- createInternetAccess: config[:create_internet_access],
86
- }.compact,
87
- })
87
+ group_properties = {
88
+ name: config[:name],
89
+ create_data_center: config[:create_data_center],
90
+ create_snapshot: config[:create_snapshot],
91
+ reserve_ip: config[:reserve_ip],
92
+ access_activity_log: config[:access_activity_log],
93
+ s3_privilege: config[:s3_privilege],
94
+ create_backup_unit: config[:create_backup_unit],
95
+ create_k8s_cluster: config[:create_k8s_cluster],
96
+ create_pcc: config[:create_pcc],
97
+ create_internet_access: config[:create_internet_access],
98
+ create_flow_log: config[:create_flow_log],
99
+ access_and_manage_monitoring: config[:access_and_manage_monitoring],
100
+ access_and_manage_certificates: config[:access_and_manage_certificates],
101
+ }.compact
102
+
103
+ group, _, headers = user_management_api.um_groups_post_with_http_info(
104
+ Ionoscloud::Group.new(properties: Ionoscloud::GroupProperties.new(**group_properties)),
105
+ )
88
106
 
89
107
  dot = ui.color('.', :magenta)
90
108
  api_client.wait_for { print dot; is_done? get_request_id headers }
91
109
 
92
- puts "\n"
93
- puts "#{ui.color('ID', :cyan)}: #{group.id}"
94
- puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
95
- puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
96
- puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
97
- puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
98
- puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
99
- puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
100
- puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
101
- puts "#{ui.color('Create K8s Clusters', :cyan)}: #{group.properties.create_k8s_cluster.to_s}"
102
- puts "#{ui.color('Create PCC', :cyan)}: #{group.properties.create_pcc.to_s}"
103
- puts "#{ui.color('Create Internet Acess', :cyan)}: #{group.properties.create_internet_access.to_s}"
104
- puts 'done'
110
+ print_group(group)
105
111
  end
106
112
  end
107
113
  end
@@ -34,17 +34,7 @@ class Chef
34
34
  next
35
35
  end
36
36
 
37
- users = group.entities.users.items.map! { |el| el.id }
38
-
39
- msg_pair('ID', group.id)
40
- msg_pair('Name', group.properties.name)
41
- msg_pair('Create Datacenter', group.properties.create_data_center.to_s)
42
- msg_pair('Create Snapshot', group.properties.create_snapshot.to_s)
43
- msg_pair('Reserve IP', group.properties.reserve_ip.to_s)
44
- msg_pair('Access Activity Log', group.properties.access_activity_log.to_s)
45
- msg_pair('S3 Privilege', group.properties.s3_privilege.to_s)
46
- msg_pair('Create Backup Unit', group.properties.create_backup_unit.to_s)
47
- msg_pair('Users', users.to_s)
37
+ print_group(group)
48
38
  puts "\n"
49
39
 
50
40
  begin
@@ -28,19 +28,7 @@ class Chef
28
28
  validate_required_params(@required_options, config)
29
29
 
30
30
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
31
- group = user_management_api.um_groups_find_by_id(config[:group_id], { depth: 1 })
32
-
33
- users = group.entities.users.items.map! { |el| el.id }
34
-
35
- puts "#{ui.color('ID', :cyan)}: #{group.id}"
36
- puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
37
- puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
38
- puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
39
- puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
40
- puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
41
- puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
42
- puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
43
- puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
31
+ print_group(user_management_api.um_groups_find_by_id(config[:group_id], depth: 1))
44
32
  end
45
33
  end
46
34
  end
@@ -29,12 +29,18 @@ class Chef
29
29
  group_list = [
30
30
  ui.color('ID', :bold),
31
31
  ui.color('Name', :bold),
32
- ui.color('Create Datacenter', :bold),
33
- ui.color('Create Snapshot', :bold),
34
- ui.color('Reserve IP', :bold),
35
- ui.color('Access Activity Log', :bold),
36
- ui.color('S3 Privilege', :bold),
37
- ui.color('Create Backup Unit', :bold),
32
+ ui.color('Datacenter', :bold),
33
+ ui.color('Snapshot', :bold),
34
+ ui.color('IP', :bold),
35
+ ui.color('Activity', :bold),
36
+ ui.color('S3', :bold),
37
+ ui.color('Backup', :bold),
38
+ ui.color('K8s', :bold),
39
+ ui.color('PCC', :bold),
40
+ ui.color('Internet', :bold),
41
+ ui.color('FlowLogs', :bold),
42
+ ui.color('Monitoring', :bold),
43
+ ui.color('Certificates', :bold),
38
44
  ]
39
45
 
40
46
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
@@ -54,9 +60,15 @@ class Chef
54
60
  group_list << group.properties.access_activity_log.to_s
55
61
  group_list << group.properties.s3_privilege.to_s
56
62
  group_list << group.properties.create_backup_unit.to_s
63
+ group_list << group.properties.create_k8s_cluster.to_s
64
+ group_list << group.properties.create_pcc.to_s
65
+ group_list << group.properties.create_internet_access.to_s
66
+ group_list << group.properties.create_flow_log.to_s
67
+ group_list << group.properties.access_and_manage_monitoring.to_s
68
+ group_list << group.properties.access_and_manage_certificates.to_s
57
69
  end
58
70
 
59
- puts ui.list(group_list, :uneven_columns_across, 8)
71
+ puts ui.list(group_list, :uneven_columns_across, 14)
60
72
  end
61
73
  end
62
74
  end
@@ -0,0 +1,131 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudGroupUpdate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud group update (options)'
9
+
10
+ option :group_id,
11
+ short: '-G GROUP_ID',
12
+ long: '--group-id GROUP_ID',
13
+ description: 'ID of the group.'
14
+
15
+ option :name,
16
+ short: '-N NAME',
17
+ long: '--name NAME',
18
+ description: 'Mame of the group.'
19
+
20
+ option :create_data_center,
21
+ short: '-D CREATE_DATACENTER',
22
+ long: '--create-datacenter CREATE_DATACENTER',
23
+ description: 'The group will be allowed to create virtual data centers.'
24
+
25
+ option :create_snapshot,
26
+ short: '-s CREATE_SNAPSHOT',
27
+ long: '--create-snapshot CREATE_SNAPSHOT',
28
+ description: 'The group will be allowed to create snapshots.'
29
+
30
+ option :reserve_ip,
31
+ short: '-i RESERVE_IP',
32
+ long: '--reserve-ip RESERVE_IP',
33
+ description: 'The group will be allowed to reserve IP addresses.'
34
+
35
+ option :access_activity_log,
36
+ short: '-a ACCESS_ACTIVITY_LOG',
37
+ long: '--access-log ACCESS_ACTIVITY_LOG',
38
+ description: 'The group will be allowed to access the activity log.'
39
+
40
+ option :s3_privilege,
41
+ long: '--s3 S3_PRIVILEGE',
42
+ description: 'The group will be allowed to manage S3'
43
+
44
+ option :create_backup_unit,
45
+ short: '-b CREATE_BACKUPUNIT',
46
+ long: '--create-backupunit CREATE_BACKUPUNIT',
47
+ description: 'The group will be able to manage backup units.'
48
+
49
+ option :create_k8s_cluster,
50
+ long: '--create-k8s-cluster CREATE_K8S_CLUSTER',
51
+ description: 'The group will be able to create kubernetes clusters.'
52
+
53
+ option :create_pcc,
54
+ long: '--create-pcc CREATE_PCC',
55
+ description: 'The group will be able to manage pccs.'
56
+
57
+ option :create_internet_access,
58
+ long: '--create-internet-access CREATE_INTERNET_ACCESS',
59
+ description: 'The group will be have internet access privilege.'
60
+
61
+ option :create_flow_log,
62
+ long: '--create-flow-log CREATE_FLOW_LOG',
63
+ description: 'The group will be granted create Flow Logs privilege.'
64
+
65
+ option :access_and_manage_monitoring,
66
+ long: '--manage-monitoring ACCESS_AND_MANAGE_MONITORING',
67
+ description: 'Privilege for a group to access and manage monitoring '\
68
+ 'related functionality (access metrics, CRUD on alarms, alarm-actions etc) using Monotoring-as-a-Service (MaaS).'
69
+
70
+ option :access_and_manage_certificates,
71
+ long: '--manage-certificates ACCESS_AND_MANAGE_CERTIFICATES',
72
+ description: 'Privilege for a group to access and manage certificates.'
73
+
74
+ attr_reader :description, :required_options
75
+
76
+ def initialize(args = [])
77
+ super(args)
78
+ @description =
79
+ 'Updates information about a Ionoscloud Group.'
80
+ @required_options = [:group_id, :ionoscloud_username, :ionoscloud_password]
81
+ @updatable_fields = [
82
+ :name, :create_data_center, :create_snapshot, :reserve_ip, :access_activity_log, :s3_privilege,
83
+ :create_backup_unit, :create_k8s_cluster, :create_pcc, :create_internet_access,
84
+ :create_flow_log, :access_and_manage_monitoring, :access_and_manage_certificates,
85
+ ]
86
+ end
87
+
88
+ def run
89
+ $stdout.sync = true
90
+ handle_extra_config
91
+ validate_required_params(@required_options, config)
92
+
93
+ user_management_api = Ionoscloud::UserManagementApi.new(api_client)
94
+
95
+ if @updatable_fields.map { |el| config[el] }.any?
96
+ print "#{ui.color('Updating Group...', :magenta)}"
97
+
98
+ existing_group = user_management_api.um_groups_find_by_id(config[:group_id], depth: 1)
99
+
100
+ group, _, headers = user_management_api.um_groups_put_with_http_info(
101
+ config[:group_id],
102
+ Ionoscloud::Group.new(
103
+ properties: Ionoscloud::GroupProperties.new(
104
+ name: config[:name] || existing_group.properties.name,
105
+ create_data_center: config.key?(:create_data_center) ? config[:create_data_center].to_s != 'false' : existing_group.properties.create_data_center,
106
+ create_snapshot: config.key?(:create_snapshot) ? config[:create_snapshot].to_s != 'false' : existing_group.properties.create_snapshot,
107
+ reserve_ip: config.key?(:reserve_ip) ? config[:reserve_ip].to_s != 'false' : existing_group.properties.reserve_ip,
108
+ access_activity_log: config.key?(:access_activity_log) ? config[:access_activity_log].to_s != 'false' : existing_group.properties.access_activity_log,
109
+ s3_privilege: config.key?(:s3_privilege) ? config[:s3_privilege].to_s != 'false' : existing_group.properties.s3_privilege,
110
+ create_backup_unit: config.key?(:create_backup_unit) ? config[:create_backup_unit].to_s != 'false' : existing_group.properties.create_backup_unit,
111
+ create_k8s_cluster: config.key?(:create_k8s_cluster) ? config[:create_k8s_cluster].to_s != 'false' : existing_group.properties.create_k8s_cluster,
112
+ create_pcc: config.key?(:create_pcc) ? config[:create_pcc].to_s != 'false' : existing_group.properties.create_pcc,
113
+ create_internet_access: config.key?(:create_internet_access) ? config[:create_internet_access].to_s != 'false' : existing_group.properties.create_internet_access,
114
+ create_flow_log: config.key?(:create_flow_log) ? config[:create_flow_log].to_s != 'false' : existing_group.properties.create_flow_log,
115
+ access_and_manage_monitoring: config.key?(:access_and_manage_monitoring) ? config[:access_and_manage_monitoring].to_s != 'false' : existing_group.properties.access_and_manage_monitoring,
116
+ access_and_manage_certificates: config.key?(:access_and_manage_certificates) ? config[:access_and_manage_certificates].to_s != 'false' : existing_group.properties.access_and_manage_certificates,
117
+ ),
118
+ ),
119
+ )
120
+
121
+ dot = ui.color('.', :magenta)
122
+ api_client.wait_for { print dot; is_done? get_request_id headers }
123
+ else
124
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
125
+ end
126
+
127
+ print_group(user_management_api.um_groups_find_by_id(config[:group_id], depth: 1))
128
+ end
129
+ end
130
+ end
131
+ end
@@ -49,24 +49,7 @@ class Chef
49
49
 
50
50
  request_ids_to_wait.each { |request_id| api_client.wait_for { is_done? request_id } }
51
51
 
52
- group = user_management_api.um_groups_find_by_id(
53
- config[:group_id],
54
- { depth: 1 },
55
- )
56
-
57
- users = group.entities.users.items.map! { |el| el.id }
58
-
59
- puts "\n"
60
- puts "#{ui.color('ID', :cyan)}: #{group.id}"
61
- puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
62
- puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
63
- puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
64
- puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
65
- puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
66
- puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
67
- puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
68
- puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
69
- puts 'done'
52
+ print_group(user_management_api.um_groups_find_by_id(config[:group_id], depth: 1))
70
53
  end
71
54
  end
72
55
  end
@@ -49,24 +49,7 @@ class Chef
49
49
 
50
50
  request_ids_to_wait.each { |request_id| api_client.wait_for { is_done? request_id } }
51
51
 
52
- group = user_management_api.um_groups_find_by_id(
53
- config[:group_id],
54
- { depth: 1 },
55
- )
56
-
57
- users = group.entities.users.items.map! { |el| el.id }
58
-
59
- puts "\n"
60
- puts "#{ui.color('ID', :cyan)}: #{group.id}"
61
- puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
62
- puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
63
- puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
64
- puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
65
- puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
66
- puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
67
- puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
68
- puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
69
- puts 'done'
52
+ print_group(user_management_api.um_groups_find_by_id(config[:group_id], depth: 1))
70
53
  end
71
54
  end
72
55
  end
@@ -30,7 +30,7 @@ class Chef
30
30
  ui.color('Public', :bold),
31
31
  ui.color('Aliases', :bold),
32
32
  ]
33
- image_api = Ionoscloud::ImageApi.new(api_client)
33
+ image_api = Ionoscloud::ImagesApi.new(api_client)
34
34
 
35
35
  image_api.images_get({ depth: 1 }).items.each do |image|
36
36
  image_list << image.id
@@ -41,23 +41,20 @@ class Chef
41
41
 
42
42
  print "#{ui.color('Allocating IP block...', :magenta)}"
43
43
 
44
- params = {
45
- location: config[:location],
46
- size: config[:size],
47
- name: config[:name],
48
- }.compact
49
-
50
- ipblock, _, headers = Ionoscloud::IPBlocksApi.new(api_client).ipblocks_post_with_http_info({ properties: params.compact })
44
+ ipblock, _, headers = Ionoscloud::IPBlocksApi.new(api_client).ipblocks_post_with_http_info(
45
+ Ionoscloud::IpBlock.new(
46
+ properties: Ionoscloud::IpBlockProperties.new(
47
+ location: config[:location],
48
+ size: config[:size],
49
+ name: config[:name],
50
+ ),
51
+ ),
52
+ )
51
53
 
52
54
  dot = ui.color('.', :magenta)
53
55
  api_client.wait_for { print dot; is_done? get_request_id headers }
54
56
 
55
- puts "\n"
56
- puts "#{ui.color('ID', :cyan)}: #{ipblock.id}"
57
- puts "#{ui.color('Name', :cyan)}: #{ipblock.properties.name}"
58
- puts "#{ui.color('Location', :cyan)}: #{ipblock.properties.location}"
59
- puts "#{ui.color('IP Addresses', :cyan)}: #{ipblock.properties.ips.to_s}"
60
- puts 'done'
57
+ print_ipblock(ipblock)
61
58
  end
62
59
  end
63
60
  end
@@ -31,10 +31,7 @@ class Chef
31
31
  next
32
32
  end
33
33
 
34
- msg_pair('ID', ipblock.id)
35
- msg_pair('Name', ipblock.properties.name)
36
- msg_pair('Location', ipblock.properties.location)
37
- msg_pair('IP Addresses', ipblock.properties.ips)
34
+ print_ipblock(ipblock)
38
35
 
39
36
  begin
40
37
  confirm('Do you really want to delete this IP block')
@@ -0,0 +1,33 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudIpblockGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud ipblock get (options)'
9
+
10
+ option :ipblock_id,
11
+ short: '-I IPBLOCK_ID',
12
+ long: '--ipblock-id IPBLOCK_ID',
13
+ description: 'ID of the IPBlock.'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Retrieves information about an IP Block.'
21
+ @required_options = [:ipblock_id, :ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ handle_extra_config
27
+ validate_required_params(@required_options, config)
28
+
29
+ print_ipblock(Ionoscloud::IPBlocksApi.new(api_client).ipblocks_find_by_id(config[:ipblock_id]))
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,57 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudIpblockUpdate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud ipblock update (options)'
9
+
10
+ option :ipblock_id,
11
+ short: '-I IPBLOCK_ID',
12
+ long: '--ipblock-id IPBLOCK_ID',
13
+ description: 'ID of the IPBlock.'
14
+
15
+ option :name,
16
+ short: '-n NAME',
17
+ long: '--name NAME',
18
+ description: 'Name of the IP block'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Updates information about an IP Block.'
26
+ @required_options = [:ipblock_id, :ionoscloud_username, :ionoscloud_password]
27
+ @updatable_fields = [:name]
28
+ end
29
+
30
+ def run
31
+ $stdout.sync = true
32
+ handle_extra_config
33
+ validate_required_params(@required_options, config)
34
+
35
+ ipblock_api = Ionoscloud::IPBlocksApi.new(api_client)
36
+
37
+ if @updatable_fields.map { |el| config[el] }.any?
38
+ print "#{ui.color('Updating IP block...', :magenta)}"
39
+
40
+ _, _, headers = ipblock_api.ipblocks_patch_with_http_info(
41
+ config[:ipblock_id],
42
+ Ionoscloud::IpBlockProperties.new(
43
+ name: config[:name],
44
+ ),
45
+ )
46
+
47
+ dot = ui.color('.', :magenta)
48
+ api_client.wait_for { print dot; is_done? get_request_id headers }
49
+ else
50
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
51
+ end
52
+
53
+ print_ipblock(ipblock_api.ipblocks_find_by_id(config[:ipblock_id]))
54
+ end
55
+ end
56
+ end
57
+ end
@@ -44,7 +44,7 @@ class Chef
44
44
  handle_extra_config
45
45
  validate_required_params(@required_options, config)
46
46
 
47
- lan_api = Ionoscloud::LanApi.new(api_client)
47
+ lan_api = Ionoscloud::LansApi.new(api_client)
48
48
 
49
49
  lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], config[:lan_id])
50
50
 
@@ -41,7 +41,7 @@ class Chef
41
41
  handle_extra_config
42
42
  validate_required_params(@required_options, config)
43
43
 
44
- lan_api = Ionoscloud::LanApi.new(api_client)
44
+ lan_api = Ionoscloud::LansApi.new(api_client)
45
45
 
46
46
  lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], config[:lan_id])
47
47
 
@@ -17,15 +17,6 @@ class Chef
17
17
  long: '--version VERSION',
18
18
  description: 'The version for the Kubernetes cluster.'
19
19
 
20
- option :private,
21
- long: '--private',
22
- default: false,
23
- description: 'The indicator if the cluster is public or private. Be aware that setting it to false is currently in beta phase.'
24
-
25
- option :gateway_ip,
26
- long: '--gateway GATEWAY_IP',
27
- description: 'The IP address of the gateway used by the cluster. This is mandatory when `public` is set to `false` and should not be provided otherwise.'
28
-
29
20
  option :maintenance_day,
30
21
  short: '-d MAINTENANCE_DAY',
31
22
  long: '--maintenance-day MAINTENANCE_DAY',
@@ -36,6 +27,16 @@ class Chef
36
27
  long: '--maintenance-time MAINTENANCE_TIME',
37
28
  description: 'Time Of the day when to perform the maintenance.'
38
29
 
30
+ option :api_subnet_allow_list,
31
+ long: '--subnets SUBNET [SUBNET]',
32
+ description: 'Access to the K8s API server is restricted to these CIDRs. Cluster-internal traffic is not affected by this restriction. '\
33
+ 'If no allowlist is specified, access is not restricted. If an IP without subnet mask is provided, the default value will be used: 32 '\
34
+ 'for IPv4 and 128 for IPv6.'
35
+
36
+ option :s3_buckets,
37
+ long: '--buckets S3_BUCKET [S3_BUCKET]',
38
+ description: 'List of S3 bucket configured for K8s usage. For now it contains only an S3 bucket used to store K8s API audit logs'
39
+
39
40
  attr_reader :description, :required_options
40
41
 
41
42
  def initialize(args = [])
@@ -54,44 +55,35 @@ class Chef
54
55
 
55
56
  kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
56
57
 
58
+ config[:api_subnet_allow_list] = config[:api_subnet_allow_list].split(',') if config[:api_subnet_allow_list] && config[:api_subnet_allow_list].instance_of?(String)
59
+ config[:s3_buckets] = config[:s3_buckets].split(',') if config[:s3_buckets] && config[:s3_buckets].instance_of?(String)
60
+
57
61
  cluster_properties = {
58
62
  name: config[:name],
59
- k8sVersion: config[:version],
60
- public: !config[:private],
63
+ k8s_version: config[:version],
64
+ api_subnet_allow_list: config[:api_subnet_allow_list],
65
+ s3_buckets: (config[:s3_buckets].nil? ? config[:s3_buckets] : config[:s3_buckets].map { |el| Ionoscloud::S3Bucket.new(name: el) }),
61
66
  }.compact
62
67
 
63
- if config[:private]
64
- if !config[:gateway_ip]
65
- ui.error("Gateway IP must be specified for private K8s Clusters")
66
- exit(1)
67
- end
68
- cluster_properties[:gatewayIp] = config[:gateway_ip]
69
- end
70
-
71
68
  if config[:maintenance_day] && config[:maintenance_time]
72
- cluster_properties[:maintenanceWindow] = {
73
- dayOfTheWeek: config[:maintenance_day],
69
+ cluster_properties[:maintenance_window] = Ionoscloud::KubernetesMaintenanceWindow.new(
70
+ day_of_the_week: config[:maintenance_day],
74
71
  time: config[:maintenance_time],
75
- }
72
+ )
76
73
  end
77
74
 
78
- cluster, _, headers = kubernetes_api.k8s_post_with_http_info({ properties: cluster_properties })
75
+ k8s_cluster = Ionoscloud::KubernetesClusterForPost.new(
76
+ properties: Ionoscloud::KubernetesClusterPropertiesForPost.new(
77
+ **cluster_properties,
78
+ ),
79
+ )
80
+
81
+ cluster, _, headers = kubernetes_api.k8s_post_with_http_info(k8s_cluster)
79
82
 
80
83
  dot = ui.color('.', :magenta)
81
84
  api_client.wait_for { print dot; is_done? get_request_id headers }
82
85
 
83
- cluster = kubernetes_api.k8s_find_by_cluster_id(cluster.id)
84
-
85
- maintenance_window = "#{cluster.properties.maintenance_window.day_of_the_week}, #{cluster.properties.maintenance_window.time}"
86
-
87
- puts "\n"
88
- puts "#{ui.color('ID', :cyan)}: #{cluster.id}"
89
- puts "#{ui.color('Name', :cyan)}: #{cluster.properties.name}"
90
- puts "#{ui.color('k8s Version', :cyan)}: #{cluster.properties.k8s_version}"
91
- puts "#{ui.color('Maintenance Window', :cyan)}: #{maintenance_window}"
92
- puts "#{ui.color('State', :cyan)}: #{cluster.metadata.state}"
93
-
94
- puts 'done'
86
+ print_k8s_cluster(kubernetes_api.k8s_find_by_cluster_id(cluster.id))
95
87
  end
96
88
  end
97
89
  end
@@ -45,15 +45,7 @@ class Chef
45
45
  next
46
46
  end
47
47
 
48
- msg_pair('ID', cluster.id)
49
- msg_pair('Name', cluster.properties.name)
50
- msg_pair('Version', cluster.properties.k8s_version)
51
- msg_pair(
52
- 'Maintenance Window',
53
- "#{cluster.properties.maintenance_window.day_of_the_week}, #{cluster.properties.maintenance_window.time}",
54
- )
55
- msg_pair('State', cluster.metadata.state)
56
-
48
+ print_k8s_cluster(cluster)
57
49
  puts "\n"
58
50
 
59
51
  begin