knife-ionoscloud 6.0.0.alpha.1 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (434) hide show
  1. checksums.yaml +4 -4
  2. data/.github/IONOS.CLOUD.BLU.svg +1 -0
  3. data/.github/workflows/publish.yml +4 -1
  4. data/README.md +9 -0
  5. data/docs/README.md +37 -0
  6. data/docs/changelog.md +10 -0
  7. data/docs/docs_generator.rb +45 -10
  8. data/docs/subcommands/{backupunit_create.md → backup/backupunit_create.md} +7 -1
  9. data/docs/subcommands/{backupunit_delete.md → backup/backupunit_delete.md} +7 -1
  10. data/docs/subcommands/backup/backupunit_get.md +38 -0
  11. data/docs/subcommands/{backupunit_list.md → backup/backupunit_list.md} +7 -1
  12. data/docs/subcommands/{backupunit_ssourl.md → backup/backupunit_ssourl.md} +7 -1
  13. data/docs/subcommands/backup/backupunit_update.md +44 -0
  14. data/docs/subcommands/{composite_server_create.md → compute-engine/composite_server_create.md} +15 -3
  15. data/docs/subcommands/compute-engine/cube_server_create.md +94 -0
  16. data/docs/subcommands/{datacenter_create.md → compute-engine/datacenter_create.md} +7 -1
  17. data/docs/subcommands/{datacenter_delete.md → compute-engine/datacenter_delete.md} +7 -1
  18. data/docs/subcommands/compute-engine/datacenter_get.md +38 -0
  19. data/docs/subcommands/{datacenter_list.md → compute-engine/datacenter_list.md} +7 -1
  20. data/docs/subcommands/compute-engine/datacenter_update.md +47 -0
  21. data/docs/subcommands/{firewall_create.md → compute-engine/firewall_create.md} +11 -2
  22. data/docs/subcommands/{firewall_delete.md → compute-engine/firewall_delete.md} +6 -0
  23. data/docs/subcommands/compute-engine/firewall_get.md +50 -0
  24. data/docs/subcommands/{firewall_list.md → compute-engine/firewall_list.md} +7 -1
  25. data/docs/subcommands/compute-engine/firewall_update.md +74 -0
  26. data/docs/subcommands/compute-engine/flowlog_create.md +66 -0
  27. data/docs/subcommands/compute-engine/flowlog_delete.md +54 -0
  28. data/docs/subcommands/compute-engine/flowlog_get.md +58 -0
  29. data/docs/subcommands/compute-engine/flowlog_list.md +54 -0
  30. data/docs/subcommands/compute-engine/flowlog_update.md +70 -0
  31. data/docs/subcommands/{image_list.md → compute-engine/image_list.md} +7 -1
  32. data/docs/subcommands/{ipblock_create.md → compute-engine/ipblock_create.md} +7 -1
  33. data/docs/subcommands/{ipblock_delete.md → compute-engine/ipblock_delete.md} +7 -1
  34. data/docs/subcommands/compute-engine/ipblock_get.md +38 -0
  35. data/docs/subcommands/{ipblock_list.md → compute-engine/ipblock_list.md} +7 -1
  36. data/docs/subcommands/compute-engine/ipblock_update.md +41 -0
  37. data/docs/subcommands/{ipfailover_add.md → compute-engine/ipfailover_add.md} +7 -1
  38. data/docs/subcommands/{ipfailover_remove.md → compute-engine/ipfailover_remove.md} +7 -1
  39. data/docs/subcommands/{label_add.md → compute-engine/label_add.md} +7 -1
  40. data/docs/subcommands/{label_list.md → compute-engine/label_list.md} +7 -1
  41. data/docs/subcommands/{label_remove.md → compute-engine/label_remove.md} +6 -0
  42. data/docs/subcommands/{lan_create.md → compute-engine/lan_create.md} +7 -1
  43. data/docs/subcommands/{lan_delete.md → compute-engine/lan_delete.md} +6 -0
  44. data/docs/subcommands/compute-engine/lan_get.md +42 -0
  45. data/docs/subcommands/{lan_list.md → compute-engine/lan_list.md} +7 -1
  46. data/docs/subcommands/compute-engine/lan_update.md +51 -0
  47. data/docs/subcommands/{loadbalancer_create.md → compute-engine/loadbalancer_create.md} +7 -1
  48. data/docs/subcommands/{loadbalancer_delete.md → compute-engine/loadbalancer_delete.md} +6 -0
  49. data/docs/subcommands/{loadbalancer_get.md → compute-engine/loadbalancer_get.md} +7 -1
  50. data/docs/subcommands/{loadbalancer_list.md → compute-engine/loadbalancer_list.md} +7 -1
  51. data/docs/subcommands/{loadbalancer_nic_add.md → compute-engine/loadbalancer_nic_add.md} +6 -0
  52. data/docs/subcommands/{loadbalancer_nic_remove.md → compute-engine/loadbalancer_nic_remove.md} +6 -0
  53. data/docs/subcommands/compute-engine/loadbalancer_update.md +51 -0
  54. data/docs/subcommands/{location_list.md → compute-engine/location_list.md} +7 -1
  55. data/docs/subcommands/compute-engine/natgateway_create.md +44 -0
  56. data/docs/subcommands/compute-engine/natgateway_delete.md +38 -0
  57. data/docs/subcommands/compute-engine/natgateway_get.md +42 -0
  58. data/docs/subcommands/compute-engine/natgateway_lan_add.md +49 -0
  59. data/docs/subcommands/compute-engine/natgateway_lan_remove.md +42 -0
  60. data/docs/subcommands/compute-engine/natgateway_list.md +38 -0
  61. data/docs/subcommands/compute-engine/natgateway_rule_add.md +69 -0
  62. data/docs/subcommands/compute-engine/natgateway_rule_list.md +41 -0
  63. data/docs/subcommands/compute-engine/natgateway_rule_remove.md +42 -0
  64. data/docs/subcommands/compute-engine/natgateway_rule_update.md +69 -0
  65. data/docs/subcommands/compute-engine/natgateway_update.md +51 -0
  66. data/docs/subcommands/compute-engine/networkloadbalancer_create.md +57 -0
  67. data/docs/subcommands/compute-engine/networkloadbalancer_delete.md +38 -0
  68. data/docs/subcommands/compute-engine/networkloadbalancer_get.md +42 -0
  69. data/docs/subcommands/compute-engine/networkloadbalancer_list.md +38 -0
  70. data/docs/subcommands/compute-engine/networkloadbalancer_rule_add.md +75 -0
  71. data/docs/subcommands/compute-engine/networkloadbalancer_rule_list.md +42 -0
  72. data/docs/subcommands/compute-engine/networkloadbalancer_rule_remove.md +42 -0
  73. data/docs/subcommands/compute-engine/networkloadbalancer_rule_target_add.md +67 -0
  74. data/docs/subcommands/compute-engine/networkloadbalancer_rule_target_list.md +46 -0
  75. data/docs/subcommands/compute-engine/networkloadbalancer_rule_target_remove.md +54 -0
  76. data/docs/subcommands/compute-engine/networkloadbalancer_rule_update.md +75 -0
  77. data/docs/subcommands/compute-engine/networkloadbalancer_update.md +57 -0
  78. data/docs/subcommands/{nic_create.md → compute-engine/nic_create.md} +9 -3
  79. data/docs/subcommands/{nic_delete.md → compute-engine/nic_delete.md} +6 -0
  80. data/docs/subcommands/compute-engine/nic_get.md +46 -0
  81. data/docs/subcommands/{nic_list.md → compute-engine/nic_list.md} +7 -1
  82. data/docs/subcommands/compute-engine/nic_update.md +61 -0
  83. data/docs/subcommands/{pcc_create.md → compute-engine/pcc_create.md} +7 -1
  84. data/docs/subcommands/{pcc_delete.md → compute-engine/pcc_delete.md} +7 -1
  85. data/docs/subcommands/compute-engine/pcc_get.md +38 -0
  86. data/docs/subcommands/{pcc_list.md → compute-engine/pcc_list.md} +7 -1
  87. data/docs/subcommands/compute-engine/pcc_update.md +44 -0
  88. data/docs/subcommands/compute-engine/request_get.md +38 -0
  89. data/docs/subcommands/{request_list.md → compute-engine/request_list.md} +7 -1
  90. data/docs/subcommands/{request_status.md → compute-engine/request_status.md} +7 -1
  91. data/docs/subcommands/{request_wait.md → compute-engine/request_wait.md} +7 -1
  92. data/docs/subcommands/compute-engine/server_console.md +42 -0
  93. data/docs/subcommands/{server_create.md → compute-engine/server_create.md} +7 -1
  94. data/docs/subcommands/{server_delete.md → compute-engine/server_delete.md} +6 -0
  95. data/docs/subcommands/compute-engine/server_get.md +42 -0
  96. data/docs/subcommands/{server_list.md → compute-engine/server_list.md} +10 -1
  97. data/docs/subcommands/{server_reboot.md → compute-engine/server_reboot.md} +6 -0
  98. data/docs/subcommands/compute-engine/server_resume.md +38 -0
  99. data/docs/subcommands/{server_start.md → compute-engine/server_start.md} +6 -0
  100. data/docs/subcommands/{server_stop.md → compute-engine/server_stop.md} +6 -0
  101. data/docs/subcommands/compute-engine/server_suspend.md +38 -0
  102. data/docs/subcommands/compute-engine/server_token.md +42 -0
  103. data/docs/subcommands/compute-engine/server_update.md +63 -0
  104. data/docs/subcommands/compute-engine/server_upgrade.md +42 -0
  105. data/docs/subcommands/{snapshot_create.md → compute-engine/snapshot_create.md} +7 -1
  106. data/docs/subcommands/{snapshot_delete.md → compute-engine/snapshot_delete.md} +7 -1
  107. data/docs/subcommands/compute-engine/snapshot_get.md +38 -0
  108. data/docs/subcommands/{snapshot_list.md → compute-engine/snapshot_list.md} +7 -1
  109. data/docs/subcommands/{snapshot_restore.md → compute-engine/snapshot_restore.md} +7 -1
  110. data/docs/subcommands/compute-engine/snapshot_update.md +80 -0
  111. data/docs/subcommands/compute-engine/template_list.md +34 -0
  112. data/docs/subcommands/{volume_attach.md → compute-engine/volume_attach.md} +6 -0
  113. data/docs/subcommands/{volume_create.md → compute-engine/volume_create.md} +14 -5
  114. data/docs/subcommands/{volume_delete.md → compute-engine/volume_delete.md} +6 -0
  115. data/docs/subcommands/{volume_detach.md → compute-engine/volume_detach.md} +6 -0
  116. data/docs/subcommands/compute-engine/volume_get.md +42 -0
  117. data/docs/subcommands/{volume_list.md → compute-engine/volume_list.md} +7 -1
  118. data/docs/subcommands/compute-engine/volume_update.md +69 -0
  119. data/docs/subcommands/dbaas-postgres/dbaas_postgres_backup_get.md +38 -0
  120. data/docs/subcommands/dbaas-postgres/dbaas_postgres_backup_list.md +38 -0
  121. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_create.md +100 -0
  122. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_delete.md +34 -0
  123. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_get.md +38 -0
  124. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_list.md +34 -0
  125. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_restore.md +44 -0
  126. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_update.md +65 -0
  127. data/docs/subcommands/dbaas-postgres/dbaas_postgres_logs_get.md +47 -0
  128. data/docs/subcommands/dbaas-postgres/dbaas_postgres_version_list.md +38 -0
  129. data/docs/subcommands/kubernetes/k8s_create.md +53 -0
  130. data/docs/subcommands/{k8s_delete.md → kubernetes/k8s_delete.md} +7 -1
  131. data/docs/subcommands/kubernetes/k8s_get.md +38 -0
  132. data/docs/subcommands/{k8s_list.md → kubernetes/k8s_list.md} +7 -1
  133. data/docs/subcommands/kubernetes/k8s_update.md +56 -0
  134. data/docs/subcommands/{kubeconfig_get.md → kubernetes/kubeconfig_get.md} +7 -1
  135. data/docs/subcommands/{node_delete.md → kubernetes/node_delete.md} +6 -0
  136. data/docs/subcommands/kubernetes/node_get.md +46 -0
  137. data/docs/subcommands/{node_list.md → kubernetes/node_list.md} +7 -1
  138. data/docs/subcommands/{node_replace.md → kubernetes/node_replace.md} +6 -0
  139. data/docs/subcommands/{nodepool_create.md → kubernetes/nodepool_create.md} +16 -1
  140. data/docs/subcommands/{nodepool_delete.md → kubernetes/nodepool_delete.md} +6 -0
  141. data/docs/subcommands/kubernetes/nodepool_get.md +42 -0
  142. data/docs/subcommands/kubernetes/nodepool_lan_add.md +52 -0
  143. data/docs/subcommands/kubernetes/nodepool_lan_remove.md +42 -0
  144. data/docs/subcommands/{nodepool_list.md → kubernetes/nodepool_list.md} +7 -1
  145. data/docs/subcommands/kubernetes/nodepool_update.md +72 -0
  146. data/docs/subcommands/{contract_list.md → user/contract_list.md} +7 -1
  147. data/docs/subcommands/{group_create.md → user/group_create.md} +16 -1
  148. data/docs/subcommands/{group_delete.md → user/group_delete.md} +7 -1
  149. data/docs/subcommands/{group_get.md → user/group_get.md} +7 -1
  150. data/docs/subcommands/{group_list.md → user/group_list.md} +7 -1
  151. data/docs/subcommands/user/group_update.md +77 -0
  152. data/docs/subcommands/{group_user_add.md → user/group_user_add.md} +6 -0
  153. data/docs/subcommands/{group_user_remove.md → user/group_user_remove.md} +6 -0
  154. data/docs/subcommands/{resource_list.md → user/resource_list.md} +7 -1
  155. data/docs/subcommands/{s3key_create.md → user/s3key_create.md} +7 -1
  156. data/docs/subcommands/{s3key_delete.md → user/s3key_delete.md} +6 -0
  157. data/docs/subcommands/user/s3key_get.md +42 -0
  158. data/docs/subcommands/{s3key_list.md → user/s3key_list.md} +7 -1
  159. data/docs/subcommands/{share_create.md → user/share_create.md} +7 -1
  160. data/docs/subcommands/{share_delete.md → user/share_delete.md} +6 -0
  161. data/docs/subcommands/user/share_get.md +42 -0
  162. data/docs/subcommands/{share_list.md → user/share_list.md} +7 -1
  163. data/docs/subcommands/user/share_update.md +48 -0
  164. data/docs/subcommands/{user_create.md → user/user_create.md} +7 -1
  165. data/docs/subcommands/{user_delete.md → user/user_delete.md} +7 -1
  166. data/docs/subcommands/user/user_get.md +38 -0
  167. data/docs/subcommands/{user_list.md → user/user_list.md} +7 -1
  168. data/docs/subcommands/{user_ssourl.md → user/user_ssourl.md} +7 -1
  169. data/docs/subcommands/user/user_update.md +59 -0
  170. data/docs/summary.md +167 -82
  171. data/docs/templates/summary.mustache +6 -3
  172. data/knife-ionoscloud.gemspec +2 -1
  173. data/lib/chef/knife/ionoscloud_backupunit_create.rb +12 -16
  174. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +3 -6
  175. data/lib/chef/knife/ionoscloud_backupunit_get.rb +32 -0
  176. data/lib/chef/knife/ionoscloud_backupunit_list.rb +2 -2
  177. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +2 -2
  178. data/lib/chef/knife/ionoscloud_backupunit_update.rb +61 -0
  179. data/lib/chef/knife/ionoscloud_base.rb +417 -1
  180. data/lib/chef/knife/ionoscloud_composite_server_create.rb +7 -11
  181. data/lib/chef/knife/ionoscloud_contract_list.rb +2 -2
  182. data/lib/chef/knife/ionoscloud_cube_server_create.rb +7 -11
  183. data/lib/chef/knife/ionoscloud_datacenter_create.rb +12 -15
  184. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +3 -8
  185. data/lib/chef/knife/ionoscloud_datacenter_get.rb +32 -0
  186. data/lib/chef/knife/ionoscloud_datacenter_list.rb +2 -2
  187. data/lib/chef/knife/ionoscloud_datacenter_update.rb +66 -0
  188. data/lib/chef/knife/ionoscloud_dbaas_postgres_backup_get.rb +33 -0
  189. data/lib/chef/knife/ionoscloud_dbaas_postgres_backup_list.rb +59 -0
  190. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_create.rb +158 -0
  191. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_delete.rb +49 -0
  192. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_get.rb +34 -0
  193. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_list.rb +53 -0
  194. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_restore.rb +48 -0
  195. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_update.rb +102 -0
  196. data/lib/chef/knife/ionoscloud_dbaas_postgres_logs_get.rb +59 -0
  197. data/lib/chef/knife/ionoscloud_dbaas_postgres_version_list.rb +49 -0
  198. data/lib/chef/knife/ionoscloud_firewall_create.rb +10 -24
  199. data/lib/chef/knife/ionoscloud_firewall_delete.rb +4 -13
  200. data/lib/chef/knife/ionoscloud_firewall_get.rb +51 -0
  201. data/lib/chef/knife/ionoscloud_firewall_list.rb +2 -2
  202. data/lib/chef/knife/ionoscloud_firewall_update.rb +131 -0
  203. data/lib/chef/knife/ionoscloud_flowlog_create.rb +6 -14
  204. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +10 -14
  205. data/lib/chef/knife/ionoscloud_flowlog_get.rb +83 -0
  206. data/lib/chef/knife/ionoscloud_flowlog_list.rb +4 -4
  207. data/lib/chef/knife/ionoscloud_flowlog_update.rb +124 -0
  208. data/lib/chef/knife/ionoscloud_group_create.rb +3 -18
  209. data/lib/chef/knife/ionoscloud_group_delete.rb +3 -20
  210. data/lib/chef/knife/ionoscloud_group_get.rb +3 -21
  211. data/lib/chef/knife/ionoscloud_group_list.rb +2 -2
  212. data/lib/chef/knife/ionoscloud_group_update.rb +130 -0
  213. data/lib/chef/knife/ionoscloud_group_user_add.rb +3 -20
  214. data/lib/chef/knife/ionoscloud_group_user_remove.rb +3 -20
  215. data/lib/chef/knife/ionoscloud_image_list.rb +2 -2
  216. data/lib/chef/knife/ionoscloud_ipblock_create.rb +12 -15
  217. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +3 -6
  218. data/lib/chef/knife/ionoscloud_ipblock_get.rb +32 -0
  219. data/lib/chef/knife/ionoscloud_ipblock_list.rb +2 -2
  220. data/lib/chef/knife/ionoscloud_ipblock_update.rb +56 -0
  221. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +3 -3
  222. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +3 -3
  223. data/lib/chef/knife/ionoscloud_k8s_create.rb +28 -36
  224. data/lib/chef/knife/ionoscloud_k8s_delete.rb +3 -11
  225. data/lib/chef/knife/ionoscloud_k8s_get.rb +32 -0
  226. data/lib/chef/knife/ionoscloud_k8s_list.rb +2 -2
  227. data/lib/chef/knife/ionoscloud_k8s_update.rb +98 -0
  228. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +2 -2
  229. data/lib/chef/knife/ionoscloud_label_add.rb +2 -2
  230. data/lib/chef/knife/ionoscloud_label_list.rb +2 -2
  231. data/lib/chef/knife/ionoscloud_label_remove.rb +2 -2
  232. data/lib/chef/knife/ionoscloud_lan_create.rb +8 -17
  233. data/lib/chef/knife/ionoscloud_lan_delete.rb +5 -6
  234. data/lib/chef/knife/ionoscloud_lan_get.rb +37 -0
  235. data/lib/chef/knife/ionoscloud_lan_list.rb +4 -3
  236. data/lib/chef/knife/ionoscloud_lan_update.rb +75 -0
  237. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +7 -16
  238. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +3 -10
  239. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +4 -14
  240. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +2 -2
  241. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +4 -16
  242. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +4 -17
  243. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +72 -0
  244. data/lib/chef/knife/ionoscloud_location_list.rb +2 -2
  245. data/lib/chef/knife/ionoscloud_natgateway_create.rb +7 -19
  246. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +4 -20
  247. data/lib/chef/knife/ionoscloud_natgateway_get.rb +41 -0
  248. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +4 -13
  249. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +3 -10
  250. data/lib/chef/knife/ionoscloud_natgateway_list.rb +3 -2
  251. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +8 -28
  252. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +3 -2
  253. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +5 -23
  254. data/lib/chef/knife/ionoscloud_natgateway_rule_update.rb +115 -0
  255. data/lib/chef/knife/ionoscloud_natgateway_update.rb +83 -0
  256. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +8 -15
  257. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +4 -24
  258. data/lib/chef/knife/ionoscloud_networkloadbalancer_get.rb +41 -0
  259. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +2 -2
  260. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +32 -48
  261. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +3 -2
  262. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +21 -32
  263. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +7 -26
  264. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +3 -2
  265. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +6 -24
  266. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_update.rb +147 -0
  267. data/lib/chef/knife/ionoscloud_networkloadbalancer_update.rb +97 -0
  268. data/lib/chef/knife/ionoscloud_nic_create.rb +10 -24
  269. data/lib/chef/knife/ionoscloud_nic_delete.rb +4 -10
  270. data/lib/chef/knife/ionoscloud_nic_get.rb +48 -0
  271. data/lib/chef/knife/ionoscloud_nic_list.rb +2 -2
  272. data/lib/chef/knife/ionoscloud_nic_update.rb +95 -0
  273. data/lib/chef/knife/ionoscloud_node_delete.rb +2 -2
  274. data/lib/chef/knife/ionoscloud_node_get.rb +48 -0
  275. data/lib/chef/knife/ionoscloud_node_list.rb +2 -2
  276. data/lib/chef/knife/ionoscloud_node_replace.rb +2 -2
  277. data/lib/chef/knife/ionoscloud_nodepool_create.rb +27 -59
  278. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +3 -34
  279. data/lib/chef/knife/ionoscloud_nodepool_get.rb +42 -0
  280. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +4 -32
  281. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +3 -28
  282. data/lib/chef/knife/ionoscloud_nodepool_list.rb +2 -2
  283. data/lib/chef/knife/ionoscloud_nodepool_update.rb +123 -0
  284. data/lib/chef/knife/ionoscloud_pcc_create.rb +13 -19
  285. data/lib/chef/knife/ionoscloud_pcc_delete.rb +3 -11
  286. data/lib/chef/knife/ionoscloud_pcc_get.rb +32 -0
  287. data/lib/chef/knife/ionoscloud_pcc_list.rb +2 -2
  288. data/lib/chef/knife/ionoscloud_pcc_update.rb +62 -0
  289. data/lib/chef/knife/ionoscloud_request_get.rb +39 -0
  290. data/lib/chef/knife/ionoscloud_request_list.rb +2 -2
  291. data/lib/chef/knife/ionoscloud_request_status.rb +2 -2
  292. data/lib/chef/knife/ionoscloud_request_wait.rb +2 -2
  293. data/lib/chef/knife/ionoscloud_resource_list.rb +2 -2
  294. data/lib/chef/knife/ionoscloud_s3key_create.rb +3 -7
  295. data/lib/chef/knife/ionoscloud_s3key_delete.rb +3 -6
  296. data/lib/chef/knife/ionoscloud_s3key_get.rb +37 -0
  297. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -2
  298. data/lib/chef/knife/ionoscloud_server_console.rb +2 -2
  299. data/lib/chef/knife/ionoscloud_server_create.rb +16 -30
  300. data/lib/chef/knife/ionoscloud_server_delete.rb +4 -10
  301. data/lib/chef/knife/ionoscloud_server_get.rb +42 -0
  302. data/lib/chef/knife/ionoscloud_server_list.rb +2 -2
  303. data/lib/chef/knife/ionoscloud_server_reboot.rb +2 -2
  304. data/lib/chef/knife/ionoscloud_server_resume.rb +2 -2
  305. data/lib/chef/knife/ionoscloud_server_start.rb +2 -2
  306. data/lib/chef/knife/ionoscloud_server_stop.rb +2 -2
  307. data/lib/chef/knife/ionoscloud_server_suspend.rb +2 -2
  308. data/lib/chef/knife/ionoscloud_server_token.rb +2 -2
  309. data/lib/chef/knife/ionoscloud_server_update.rb +96 -0
  310. data/lib/chef/knife/ionoscloud_server_upgrade.rb +2 -2
  311. data/lib/chef/knife/ionoscloud_share_create.rb +9 -13
  312. data/lib/chef/knife/ionoscloud_share_delete.rb +4 -5
  313. data/lib/chef/knife/ionoscloud_share_get.rb +37 -0
  314. data/lib/chef/knife/ionoscloud_share_list.rb +2 -2
  315. data/lib/chef/knife/ionoscloud_share_update.rb +69 -0
  316. data/lib/chef/knife/ionoscloud_snapshot_create.rb +3 -11
  317. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +3 -8
  318. data/lib/chef/knife/ionoscloud_snapshot_get.rb +31 -0
  319. data/lib/chef/knife/ionoscloud_snapshot_list.rb +2 -2
  320. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +3 -14
  321. data/lib/chef/knife/ionoscloud_snapshot_update.rb +125 -0
  322. data/lib/chef/knife/ionoscloud_template_list.rb +2 -2
  323. data/lib/chef/knife/ionoscloud_user_create.rb +3 -10
  324. data/lib/chef/knife/ionoscloud_user_delete.rb +3 -8
  325. data/lib/chef/knife/ionoscloud_user_get.rb +31 -0
  326. data/lib/chef/knife/ionoscloud_user_list.rb +2 -2
  327. data/lib/chef/knife/ionoscloud_user_ssourl.rb +2 -2
  328. data/lib/chef/knife/ionoscloud_user_update.rb +91 -0
  329. data/lib/chef/knife/ionoscloud_volume_attach.rb +2 -2
  330. data/lib/chef/knife/ionoscloud_volume_create.rb +4 -15
  331. data/lib/chef/knife/ionoscloud_volume_delete.rb +4 -10
  332. data/lib/chef/knife/ionoscloud_volume_detach.rb +2 -2
  333. data/lib/chef/knife/ionoscloud_volume_get.rb +35 -0
  334. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -2
  335. data/lib/chef/knife/ionoscloud_volume_update.rb +105 -0
  336. data/lib/knife-ionoscloud/version.rb +1 -1
  337. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +65 -0
  338. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +78 -0
  339. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +3 -0
  340. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +3 -0
  341. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +69 -0
  342. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +82 -0
  343. data/spec/chef/knife/ionoscloud_dbaas_postgres_backup_get_spec.rb +67 -0
  344. data/spec/chef/knife/ionoscloud_dbaas_postgres_backup_list_spec.rb +111 -0
  345. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_create_spec.rb +99 -0
  346. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_delete_spec.rb +109 -0
  347. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_get_spec.rb +73 -0
  348. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_list_spec.rb +84 -0
  349. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_restore_spec.rb +59 -0
  350. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_update_spec.rb +89 -0
  351. data/spec/chef/knife/ionoscloud_dbaas_postgres_logs_get_spec.rb +67 -0
  352. data/spec/chef/knife/ionoscloud_dbaas_postgres_version_list_spec.rb +94 -0
  353. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +1 -1
  354. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +1 -1
  355. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +77 -0
  356. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +117 -0
  357. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +3 -3
  358. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +10 -10
  359. data/spec/chef/knife/ionoscloud_flowlog_get_spec.rb +171 -0
  360. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +3 -3
  361. data/spec/chef/knife/ionoscloud_flowlog_update_spec.rb +244 -0
  362. data/spec/chef/knife/ionoscloud_group_create_spec.rb +3 -0
  363. data/spec/chef/knife/ionoscloud_group_update_spec.rb +121 -0
  364. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +6 -0
  365. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +6 -0
  366. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +66 -0
  367. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +79 -0
  368. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +4 -4
  369. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +7 -7
  370. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +7 -0
  371. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +16 -11
  372. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +72 -0
  373. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +114 -0
  374. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +4 -3
  375. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +7 -5
  376. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +68 -0
  377. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +2 -2
  378. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +87 -0
  379. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +89 -0
  380. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +15 -0
  381. data/spec/chef/knife/ionoscloud_natgateway_get_spec.rb +81 -0
  382. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +15 -0
  383. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +15 -0
  384. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +1 -0
  385. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +1 -0
  386. data/spec/chef/knife/ionoscloud_natgateway_rule_update_spec.rb +121 -0
  387. data/spec/chef/knife/ionoscloud_natgateway_update_spec.rb +121 -0
  388. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +13 -0
  389. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +3 -2
  390. data/spec/chef/knife/ionoscloud_networkloadbalancer_get_spec.rb +82 -0
  391. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +4 -3
  392. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +70 -44
  393. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +26 -22
  394. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +79 -61
  395. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_update_spec.rb +163 -0
  396. data/spec/chef/knife/ionoscloud_networkloadbalancer_update_spec.rb +107 -0
  397. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +72 -0
  398. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +97 -0
  399. data/spec/chef/knife/ionoscloud_node_get_spec.rb +70 -0
  400. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +8 -17
  401. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +14 -0
  402. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +83 -0
  403. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +29 -33
  404. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +14 -17
  405. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +134 -0
  406. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +7 -4
  407. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +2 -2
  408. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +71 -0
  409. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +83 -0
  410. data/spec/chef/knife/ionoscloud_request_get_spec.rb +69 -0
  411. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +66 -0
  412. data/spec/chef/knife/ionoscloud_server_create_spec.rb +3 -0
  413. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +3 -0
  414. data/spec/chef/knife/ionoscloud_server_get_spec.rb +74 -0
  415. data/spec/chef/knife/ionoscloud_server_update_spec.rb +105 -0
  416. data/spec/chef/knife/ionoscloud_share_get_spec.rb +66 -0
  417. data/spec/chef/knife/ionoscloud_share_update_spec.rb +91 -0
  418. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +12 -0
  419. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +12 -0
  420. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +79 -0
  421. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +9 -0
  422. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +113 -0
  423. data/spec/chef/knife/ionoscloud_user_create_spec.rb +3 -1
  424. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +4 -2
  425. data/spec/chef/knife/ionoscloud_user_get_spec.rb +70 -0
  426. data/spec/chef/knife/ionoscloud_user_update_spec.rb +110 -0
  427. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +15 -5
  428. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +10 -0
  429. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +81 -0
  430. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +116 -0
  431. data/spec/spec_helper.rb +148 -23
  432. metadata +336 -90
  433. data/docs/subcommands/k8s_create.md +0 -47
  434. data/spec/test.sh +0 -3
@@ -0,0 +1,130 @@
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
+ def initialize(args = [])
75
+ super(args)
76
+ @description =
77
+ 'Updates information about a Ionoscloud Group.'
78
+ @directory = 'user'
79
+ @required_options = [:group_id, :ionoscloud_username, :ionoscloud_password]
80
+ @updatable_fields = [
81
+ :name, :create_data_center, :create_snapshot, :reserve_ip, :access_activity_log, :s3_privilege,
82
+ :create_backup_unit, :create_k8s_cluster, :create_pcc, :create_internet_access,
83
+ :create_flow_log, :access_and_manage_monitoring, :access_and_manage_certificates,
84
+ ]
85
+ end
86
+
87
+ def run
88
+ $stdout.sync = true
89
+ handle_extra_config
90
+ validate_required_params(@required_options, config)
91
+
92
+ user_management_api = Ionoscloud::UserManagementApi.new(api_client)
93
+
94
+ if @updatable_fields.map { |el| config[el] }.any?
95
+ print "#{ui.color('Updating Group...', :magenta)}"
96
+
97
+ existing_group = user_management_api.um_groups_find_by_id(config[:group_id], depth: 1)
98
+
99
+ group, _, headers = user_management_api.um_groups_put_with_http_info(
100
+ config[:group_id],
101
+ Ionoscloud::Group.new(
102
+ properties: Ionoscloud::GroupProperties.new(
103
+ name: config[:name] || existing_group.properties.name,
104
+ create_data_center: config.key?(:create_data_center) ? config[:create_data_center].to_s != 'false' : existing_group.properties.create_data_center,
105
+ create_snapshot: config.key?(:create_snapshot) ? config[:create_snapshot].to_s != 'false' : existing_group.properties.create_snapshot,
106
+ reserve_ip: config.key?(:reserve_ip) ? config[:reserve_ip].to_s != 'false' : existing_group.properties.reserve_ip,
107
+ access_activity_log: config.key?(:access_activity_log) ? config[:access_activity_log].to_s != 'false' : existing_group.properties.access_activity_log,
108
+ s3_privilege: config.key?(:s3_privilege) ? config[:s3_privilege].to_s != 'false' : existing_group.properties.s3_privilege,
109
+ create_backup_unit: config.key?(:create_backup_unit) ? config[:create_backup_unit].to_s != 'false' : existing_group.properties.create_backup_unit,
110
+ create_k8s_cluster: config.key?(:create_k8s_cluster) ? config[:create_k8s_cluster].to_s != 'false' : existing_group.properties.create_k8s_cluster,
111
+ create_pcc: config.key?(:create_pcc) ? config[:create_pcc].to_s != 'false' : existing_group.properties.create_pcc,
112
+ create_internet_access: config.key?(:create_internet_access) ? config[:create_internet_access].to_s != 'false' : existing_group.properties.create_internet_access,
113
+ create_flow_log: config.key?(:create_flow_log) ? config[:create_flow_log].to_s != 'false' : existing_group.properties.create_flow_log,
114
+ 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,
115
+ 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,
116
+ ),
117
+ ),
118
+ )
119
+
120
+ dot = ui.color('.', :magenta)
121
+ api_client.wait_for { print dot; is_done? get_request_id headers }
122
+ else
123
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
124
+ end
125
+
126
+ print_group(user_management_api.um_groups_find_by_id(config[:group_id], depth: 1))
127
+ end
128
+ end
129
+ end
130
+ end
@@ -12,17 +12,17 @@ class Chef
12
12
  long: '--group-id GROUP_ID',
13
13
  description: 'ID of the group.'
14
14
 
15
- attr_reader :description, :required_options
16
-
17
15
  def initialize(args = [])
18
16
  super(args)
19
17
  @description =
20
18
  'Use this operation to add an existing user to a group.'
19
+ @directory = 'user'
21
20
  @required_options = [:group_id, :ionoscloud_username, :ionoscloud_password]
22
21
  end
23
22
 
24
23
  def run
25
24
  $stdout.sync = true
25
+ handle_extra_config
26
26
  validate_required_params(@required_options, config)
27
27
 
28
28
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
@@ -48,24 +48,7 @@ class Chef
48
48
 
49
49
  request_ids_to_wait.each { |request_id| api_client.wait_for { is_done? request_id } }
50
50
 
51
- group = user_management_api.um_groups_find_by_id(
52
- config[:group_id],
53
- { depth: 1 },
54
- )
55
-
56
- users = group.entities.users.items.map! { |el| el.id }
57
-
58
- puts "\n"
59
- puts "#{ui.color('ID', :cyan)}: #{group.id}"
60
- puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
61
- puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
62
- puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
63
- puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
64
- puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
65
- puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
66
- puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
67
- puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
68
- puts 'done'
51
+ print_group(user_management_api.um_groups_find_by_id(config[:group_id], depth: 1))
69
52
  end
70
53
  end
71
54
  end
@@ -12,17 +12,17 @@ class Chef
12
12
  long: '--group-id GROUP_ID',
13
13
  description: 'ID of the group.'
14
14
 
15
- attr_reader :description, :required_options
16
-
17
15
  def initialize(args = [])
18
16
  super(args)
19
17
  @description =
20
18
  'Use this operation to remove a user from a group.'
19
+ @directory = 'user'
21
20
  @required_options = [:group_id, :ionoscloud_username, :ionoscloud_password]
22
21
  end
23
22
 
24
23
  def run
25
24
  $stdout.sync = true
25
+ handle_extra_config
26
26
  validate_required_params(@required_options, config)
27
27
 
28
28
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
@@ -48,24 +48,7 @@ class Chef
48
48
 
49
49
  request_ids_to_wait.each { |request_id| api_client.wait_for { is_done? request_id } }
50
50
 
51
- group = user_management_api.um_groups_find_by_id(
52
- config[:group_id],
53
- { depth: 1 },
54
- )
55
-
56
- users = group.entities.users.items.map! { |el| el.id }
57
-
58
- puts "\n"
59
- puts "#{ui.color('ID', :cyan)}: #{group.id}"
60
- puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
61
- puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
62
- puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
63
- puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
64
- puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
65
- puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
66
- puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
67
- puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
68
- puts 'done'
51
+ print_group(user_management_api.um_groups_find_by_id(config[:group_id], depth: 1))
69
52
  end
70
53
  end
71
54
  end
@@ -7,18 +7,18 @@ class Chef
7
7
 
8
8
  banner 'knife ionoscloud image list'
9
9
 
10
- attr_reader :description, :required_options
11
-
12
10
  def initialize(args = [])
13
11
  super(args)
14
12
  @description =
15
13
  'A list of disk and ISO images are available from Ionoscloud for immediate use. '\
16
14
  'Make sure the image you use is in the same location as the virtual data center.'
15
+ @directory = 'compute-engine'
17
16
  @required_options = [:ionoscloud_username, :ionoscloud_password]
18
17
  end
19
18
 
20
19
  def run
21
20
  $stdout.sync = true
21
+ handle_extra_config
22
22
  validate_required_params(@required_options, config)
23
23
 
24
24
  image_list = [
@@ -22,8 +22,6 @@ class Chef
22
22
  long: '--name NAME',
23
23
  description: 'Name of the IP block'
24
24
 
25
- attr_reader :description, :required_options
26
-
27
25
  def initialize(args = [])
28
26
  super(args)
29
27
  @description =
@@ -31,32 +29,31 @@ class Chef
31
29
  'within any VDCs provisioned in that same location. An IP block consists of '\
32
30
  'one or more static IP addresses. The IP block size \(number of IP addresses\) '\
33
31
  'and location are required to reserve an IP block.'
32
+ @directory = 'compute-engine'
34
33
  @required_options = [:size, :location, :ionoscloud_username, :ionoscloud_password]
35
34
  end
36
35
 
37
36
  def run
38
37
  $stdout.sync = true
38
+ handle_extra_config
39
39
  validate_required_params(@required_options, config)
40
40
 
41
41
  print "#{ui.color('Allocating IP block...', :magenta)}"
42
42
 
43
- params = {
44
- location: config[:location],
45
- size: config[:size],
46
- name: config[:name],
47
- }.compact
48
-
49
- ipblock, _, headers = Ionoscloud::IPBlocksApi.new(api_client).ipblocks_post_with_http_info({ properties: params.compact })
43
+ ipblock, _, headers = Ionoscloud::IPBlocksApi.new(api_client).ipblocks_post_with_http_info(
44
+ Ionoscloud::IpBlock.new(
45
+ properties: Ionoscloud::IpBlockProperties.new(
46
+ location: config[:location],
47
+ size: config[:size],
48
+ name: config[:name],
49
+ ),
50
+ ),
51
+ )
50
52
 
51
53
  dot = ui.color('.', :magenta)
52
54
  api_client.wait_for { print dot; is_done? get_request_id headers }
53
55
 
54
- puts "\n"
55
- puts "#{ui.color('ID', :cyan)}: #{ipblock.id}"
56
- puts "#{ui.color('Name', :cyan)}: #{ipblock.properties.name}"
57
- puts "#{ui.color('Location', :cyan)}: #{ipblock.properties.location}"
58
- puts "#{ui.color('IP Addresses', :cyan)}: #{ipblock.properties.ips.to_s}"
59
- puts 'done'
56
+ print_ipblock(ipblock)
60
57
  end
61
58
  end
62
59
  end
@@ -7,17 +7,17 @@ class Chef
7
7
 
8
8
  banner 'knife ionoscloud ipblock delete IPBLOCK_ID [IPBLOCK_ID]'
9
9
 
10
- attr_reader :description, :required_options
11
-
12
10
  def initialize(args = [])
13
11
  super(args)
14
12
  @description =
15
13
  'Releases a currently assigned IP block.'
14
+ @directory = 'compute-engine'
16
15
  @required_options = [:ionoscloud_username, :ionoscloud_password]
17
16
  end
18
17
 
19
18
  def run
20
19
  $stdout.sync = true
20
+ handle_extra_config
21
21
  validate_required_params(@required_options, config)
22
22
 
23
23
  ipblock_api = Ionoscloud::IPBlocksApi.new(api_client)
@@ -30,10 +30,7 @@ class Chef
30
30
  next
31
31
  end
32
32
 
33
- msg_pair('ID', ipblock.id)
34
- msg_pair('Name', ipblock.properties.name)
35
- msg_pair('Location', ipblock.properties.location)
36
- msg_pair('IP Addresses', ipblock.properties.ips)
33
+ print_ipblock(ipblock)
37
34
 
38
35
  begin
39
36
  confirm('Do you really want to delete this IP block')
@@ -0,0 +1,32 @@
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
+ def initialize(args = [])
16
+ super(args)
17
+ @description =
18
+ 'Retrieves information about an IP Block.'
19
+ @directory = 'compute-engine'
20
+ @required_options = [:ipblock_id, :ionoscloud_username, :ionoscloud_password]
21
+ end
22
+
23
+ def run
24
+ $stdout.sync = true
25
+ handle_extra_config
26
+ validate_required_params(@required_options, config)
27
+
28
+ print_ipblock(Ionoscloud::IPBlocksApi.new(api_client).ipblocks_find_by_id(config[:ipblock_id]))
29
+ end
30
+ end
31
+ end
32
+ end
@@ -7,17 +7,17 @@ class Chef
7
7
 
8
8
  banner 'knife ionoscloud ipblock list'
9
9
 
10
- attr_reader :description, :required_options
11
-
12
10
  def initialize(args = [])
13
11
  super(args)
14
12
  @description =
15
13
  'Lists all available IP blocks.'
14
+ @directory = 'compute-engine'
16
15
  @required_options = [:ionoscloud_username, :ionoscloud_password]
17
16
  end
18
17
 
19
18
  def run
20
19
  $stdout.sync = true
20
+ handle_extra_config
21
21
  validate_required_params(@required_options, config)
22
22
 
23
23
  ipblock_list = [
@@ -0,0 +1,56 @@
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
+ def initialize(args = [])
21
+ super(args)
22
+ @description =
23
+ 'Updates information about an IP Block.'
24
+ @directory = 'compute-engine'
25
+ @required_options = [:ipblock_id, :ionoscloud_username, :ionoscloud_password]
26
+ @updatable_fields = [:name]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ handle_extra_config
32
+ validate_required_params(@required_options, config)
33
+
34
+ ipblock_api = Ionoscloud::IPBlocksApi.new(api_client)
35
+
36
+ if @updatable_fields.map { |el| config[el] }.any?
37
+ print "#{ui.color('Updating IP block...', :magenta)}"
38
+
39
+ _, _, headers = ipblock_api.ipblocks_patch_with_http_info(
40
+ config[:ipblock_id],
41
+ Ionoscloud::IpBlockProperties.new(
42
+ name: config[:name],
43
+ ),
44
+ )
45
+
46
+ dot = ui.color('.', :magenta)
47
+ api_client.wait_for { print dot; is_done? get_request_id headers }
48
+ else
49
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
50
+ end
51
+
52
+ print_ipblock(ipblock_api.ipblocks_find_by_id(config[:ipblock_id]))
53
+ end
54
+ end
55
+ end
56
+ end
@@ -27,8 +27,6 @@ class Chef
27
27
  long: '--nic-id NIC_ID',
28
28
  description: 'NIC to be added to IP failover group'
29
29
 
30
- attr_reader :description, :required_options
31
-
32
30
  def initialize(args = [])
33
31
  super(args)
34
32
  @description =
@@ -36,14 +34,16 @@ class Chef
36
34
  "* Add a reserved IP address to a NIC that will become the IP Failover master.\n"\
37
35
  "* Use PATCH or PUT to enable ipFailover by providing the relevant ip and nicUuid values.\n"\
38
36
  "* Add the same reserved IP address to any other NICs that are a member of the same LAN. Those NICs will become IP Failover members.\n"
37
+ @directory = 'compute-engine'
39
38
  @required_options = [:datacenter_id, :lan_id, :ip, :nic_id, :ionoscloud_username, :ionoscloud_password]
40
39
  end
41
40
 
42
41
  def run
43
42
  $stdout.sync = true
43
+ handle_extra_config
44
44
  validate_required_params(@required_options, config)
45
45
 
46
- lan_api = Ionoscloud::LansApi.new(api_client)
46
+ lan_api = Ionoscloud::LANsApi.new(api_client)
47
47
 
48
48
  lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], config[:lan_id])
49
49
 
@@ -27,20 +27,20 @@ class Chef
27
27
  long: '--nic-id NIC_ID',
28
28
  description: 'NIC to be removed from the IP failover group'
29
29
 
30
- attr_reader :description, :required_options
31
-
32
30
  def initialize(args = [])
33
31
  super(args)
34
32
  @description =
35
33
  'Remove IP Failover from LAN'
34
+ @directory = 'compute-engine'
36
35
  @required_options = [:datacenter_id, :lan_id, :ip, :nic_id, :ionoscloud_username, :ionoscloud_password]
37
36
  end
38
37
 
39
38
  def run
40
39
  $stdout.sync = true
40
+ handle_extra_config
41
41
  validate_required_params(@required_options, config)
42
42
 
43
- lan_api = Ionoscloud::LansApi.new(api_client)
43
+ lan_api = Ionoscloud::LANsApi.new(api_client)
44
44
 
45
45
  lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], config[:lan_id])
46
46
 
@@ -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,61 +27,62 @@ class Chef
36
27
  long: '--maintenance-time MAINTENANCE_TIME',
37
28
  description: 'Time Of the day when to perform the maintenance.'
38
29
 
39
- attr_reader :description, :required_options
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'
40
39
 
41
40
  def initialize(args = [])
42
41
  super(args)
43
42
  @description =
44
43
  'Creates a new Managed Kubernetes cluster.'
44
+ @directory = 'kubernetes'
45
45
  @required_options = [:name, :ionoscloud_username, :ionoscloud_password]
46
46
  end
47
47
 
48
48
  def run
49
49
  $stdout.sync = true
50
+ handle_extra_config
50
51
  validate_required_params(@required_options, config)
51
52
 
52
53
  print "#{ui.color('Creating K8s Cluster...', :magenta)}"
53
54
 
54
55
  kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
55
56
 
57
+ 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)
58
+ config[:s3_buckets] = config[:s3_buckets].split(',') if config[:s3_buckets] && config[:s3_buckets].instance_of?(String)
59
+
56
60
  cluster_properties = {
57
61
  name: config[:name],
58
- k8sVersion: config[:version],
59
- public: !config[:private],
62
+ k8s_version: config[:version],
63
+ api_subnet_allow_list: config[:api_subnet_allow_list],
64
+ s3_buckets: (config[:s3_buckets].nil? ? config[:s3_buckets] : config[:s3_buckets].map { |el| Ionoscloud::S3Bucket.new(name: el) }),
60
65
  }.compact
61
66
 
62
- if config[:private]
63
- if !config[:gateway_ip]
64
- ui.error("Gateway IP must be specified for private K8s Clusters")
65
- exit(1)
66
- end
67
- cluster_properties[:gatewayIp] = config[:gateway_ip]
68
- end
69
-
70
67
  if config[:maintenance_day] && config[:maintenance_time]
71
- cluster_properties[:maintenanceWindow] = {
72
- dayOfTheWeek: config[:maintenance_day],
68
+ cluster_properties[:maintenance_window] = Ionoscloud::KubernetesMaintenanceWindow.new(
69
+ day_of_the_week: config[:maintenance_day],
73
70
  time: config[:maintenance_time],
74
- }
71
+ )
75
72
  end
76
73
 
77
- cluster, _, headers = kubernetes_api.k8s_post_with_http_info({ properties: cluster_properties })
74
+ k8s_cluster = Ionoscloud::KubernetesClusterForPost.new(
75
+ properties: Ionoscloud::KubernetesClusterPropertiesForPost.new(
76
+ **cluster_properties,
77
+ ),
78
+ )
79
+
80
+ cluster, _, headers = kubernetes_api.k8s_post_with_http_info(k8s_cluster)
78
81
 
79
82
  dot = ui.color('.', :magenta)
80
83
  api_client.wait_for { print dot; is_done? get_request_id headers }
81
84
 
82
- cluster = kubernetes_api.k8s_find_by_cluster_id(cluster.id)
83
-
84
- maintenance_window = "#{cluster.properties.maintenance_window.day_of_the_week}, #{cluster.properties.maintenance_window.time}"
85
-
86
- puts "\n"
87
- puts "#{ui.color('ID', :cyan)}: #{cluster.id}"
88
- puts "#{ui.color('Name', :cyan)}: #{cluster.properties.name}"
89
- puts "#{ui.color('k8s Version', :cyan)}: #{cluster.properties.k8s_version}"
90
- puts "#{ui.color('Maintenance Window', :cyan)}: #{maintenance_window}"
91
- puts "#{ui.color('State', :cyan)}: #{cluster.metadata.state}"
92
-
93
- puts 'done'
85
+ print_k8s_cluster(kubernetes_api.k8s_find_by_cluster_id(cluster.id))
94
86
  end
95
87
  end
96
88
  end
@@ -7,17 +7,17 @@ class Chef
7
7
 
8
8
  banner 'knife ionoscloud k8s delete CLUSTER_ID [CLUSTER_ID]'
9
9
 
10
- attr_reader :description, :required_options
11
-
12
10
  def initialize(args = [])
13
11
  super(args)
14
12
  @description =
15
13
  'Deletes a Kubernetes cluster. The cluster cannot contain any node pools when deleting.'
14
+ @directory = 'kubernetes'
16
15
  @required_options = [:ionoscloud_username, :ionoscloud_password]
17
16
  end
18
17
 
19
18
  def run
20
19
  $stdout.sync = true
20
+ handle_extra_config
21
21
  validate_required_params(@required_options, config)
22
22
 
23
23
  kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
@@ -44,15 +44,7 @@ class Chef
44
44
  next
45
45
  end
46
46
 
47
- msg_pair('ID', cluster.id)
48
- msg_pair('Name', cluster.properties.name)
49
- msg_pair('Version', cluster.properties.k8s_version)
50
- msg_pair(
51
- 'Maintenance Window',
52
- "#{cluster.properties.maintenance_window.day_of_the_week}, #{cluster.properties.maintenance_window.time}",
53
- )
54
- msg_pair('State', cluster.metadata.state)
55
-
47
+ print_k8s_cluster(cluster)
56
48
  puts "\n"
57
49
 
58
50
  begin
@@ -0,0 +1,32 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudK8sGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud k8s get (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
+ def initialize(args = [])
16
+ super(args)
17
+ @description =
18
+ 'Retrieves information about a K8s Cluster.'
19
+ @directory = 'kubernetes'
20
+ @required_options = [:cluster_id, :ionoscloud_username, :ionoscloud_password]
21
+ end
22
+
23
+ def run
24
+ $stdout.sync = true
25
+ handle_extra_config
26
+ validate_required_params(@required_options, config)
27
+
28
+ print_k8s_cluster(Ionoscloud::KubernetesApi.new(api_client).k8s_find_by_cluster_id(config[:cluster_id]))
29
+ end
30
+ end
31
+ end
32
+ end