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
@@ -0,0 +1,33 @@
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
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Retrieves information about a K8s Cluster.'
21
+ @required_options = [:cluster_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_k8s_cluster(Ionoscloud::KubernetesApi.new(api_client).k8s_find_by_cluster_id(config[:cluster_id]))
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,99 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudK8sUpdate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud k8s update (options)'
9
+
10
+ option :cluster_id,
11
+ short: '-C CLUSTER_ID',
12
+ long: '--cluster-id CLUSTER_ID',
13
+ description: 'ID of the Kubernetes cluster'
14
+
15
+ option :name,
16
+ short: '-n NAME',
17
+ long: '--name NAME',
18
+ description: 'Name of the server'
19
+
20
+ option :version,
21
+ short: '-v VERSION',
22
+ long: '--version VERSION',
23
+ description: 'The version for the Kubernetes cluster.'
24
+
25
+ option :maintenance_day,
26
+ long: '--maintenance-day MAINTENANCE_DAY',
27
+ description: 'Day Of the week when to perform the maintenance.'
28
+
29
+ option :maintenance_time,
30
+ short: '-t MAINTENANCE_TIME',
31
+ long: '--maintenance-time MAINTENANCE_TIME',
32
+ description: 'Time Of the day when to perform the maintenance.'
33
+
34
+ option :api_subnet_allow_list,
35
+ long: '--subnets SUBNET[,SUBNET,...]',
36
+ description: 'Access to the K8s API server is restricted to these CIDRs. Cluster-internal traffic is not affected by this '\
37
+ 'restriction. If no allowlist is specified, access is not restricted. If an IP without subnet mask is provided, the default '\
38
+ 'value will be used: 32 for IPv4 and 128 for IPv6.'
39
+
40
+ option :s3_buckets,
41
+ long: '--s3-buckets BUCKET[,BUCKET,...]',
42
+ description: 'List of S3 bucket configured for K8s usage. For now it contains only one S3 bucket used to store K8s API audit logs.'
43
+
44
+ attr_reader :description, :required_options
45
+
46
+ def initialize(args = [])
47
+ super(args)
48
+ @description =
49
+ 'Updates information about a Ionoscloud K8s Cluster.'
50
+ @required_options = [:cluster_id, :ionoscloud_username, :ionoscloud_password]
51
+ @updatable_fields = [
52
+ :name, :version, :maintenance_day, :maintenance_time, :api_subnet_allow_list, :s3_buckets,
53
+ ]
54
+ end
55
+
56
+ def run
57
+ $stdout.sync = true
58
+ handle_extra_config
59
+ validate_required_params(@required_options, config)
60
+
61
+ kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
62
+
63
+ if @updatable_fields.map { |el| config[el] }.any?
64
+ print "#{ui.color('Updating K8s Cluster...', :magenta)}"
65
+
66
+ if config[:api_subnet_allow_list] && config[:api_subnet_allow_list].instance_of?(String)
67
+ config[:api_subnet_allow_list] = config[:api_subnet_allow_list].split(',')
68
+ end
69
+ config[:s3_buckets] = config[:s3_buckets].split(',') if config[:s3_buckets] && config[:s3_buckets].instance_of?(String)
70
+
71
+ if config.key?(:s3_buckets)
72
+ config[:s3_buckets] = config[:s3_buckets].map { |el| Ionoscloud::S3Bucket.new(name: el) }
73
+ end
74
+
75
+ cluster = kubernetes_api.k8s_find_by_cluster_id(config[:cluster_id])
76
+
77
+ new_cluster = Ionoscloud::KubernetesCluster.new(
78
+ properties: Ionoscloud::KubernetesClusterPropertiesForPut.new(
79
+ name: config.key?(:name) ? config[:name] : cluster.properties.name,
80
+ k8s_version: config.key?(:version) ? config[:version] : cluster.properties.k8s_version,
81
+ maintenance_window: Ionoscloud::KubernetesMaintenanceWindow.new(
82
+ day_of_the_week: config.key?(:maintenance_day) ? config[:maintenance_day] : cluster.properties.maintenance_window.day_of_the_week,
83
+ time: config.key?(:maintenance_time) ? config[:maintenance_time] : cluster.properties.maintenance_window.time,
84
+ ),
85
+ api_subnet_allow_list: config.key?(:api_subnet_allow_list) ? config[:api_subnet_allow_list] : cluster.properties.api_subnet_allow_list,
86
+ s3_buckets: config.key?(:s3_buckets) ? config[:s3_buckets] : cluster.properties.s3_buckets,
87
+ ),
88
+ )
89
+
90
+ kubernetes_api.k8s_put(config[:cluster_id], new_cluster)
91
+ else
92
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
93
+ end
94
+
95
+ print_k8s_cluster(kubernetes_api.k8s_find_by_cluster_id(config[:cluster_id]))
96
+ end
97
+ end
98
+ end
99
+ end
@@ -45,7 +45,7 @@ class Chef
45
45
  handle_extra_config
46
46
  validate_required_params(@required_options, config)
47
47
 
48
- label_api = Ionoscloud::LabelApi.new(api_client)
48
+ label_api = Ionoscloud::LabelsApi.new(api_client)
49
49
 
50
50
  label_properties = {
51
51
  properties: {
@@ -37,7 +37,7 @@ class Chef
37
37
  handle_extra_config
38
38
  validate_required_params(@required_options, config)
39
39
 
40
- label_api = Ionoscloud::LabelApi.new(api_client)
40
+ label_api = Ionoscloud::LabelsApi.new(api_client)
41
41
  opts = { depth: 1 }
42
42
 
43
43
  case config[:type]
@@ -36,7 +36,7 @@ class Chef
36
36
  handle_extra_config
37
37
  validate_required_params(@required_options, config)
38
38
 
39
- label_api = Ionoscloud::LabelApi.new(api_client)
39
+ label_api = Ionoscloud::LabelsApi.new(api_client)
40
40
 
41
41
  args = [config[:resource_id]]
42
42
 
@@ -45,31 +45,23 @@ class Chef
45
45
 
46
46
  print "#{ui.color('Creating LAN...', :magenta)}"
47
47
 
48
- lan_api = Ionoscloud::LanApi.new(api_client)
48
+ lan_api = Ionoscloud::LansApi.new(api_client)
49
49
 
50
50
  lan, _, headers = lan_api.datacenters_lans_post_with_http_info(
51
51
  config[:datacenter_id],
52
- {
53
- properties: {
52
+ Ionoscloud::Lan.new(
53
+ properties: Ionoscloud::LanProperties.new(
54
54
  name: config[:name],
55
55
  public: config[:public],
56
56
  pcc: config[:pcc],
57
- }
58
- },
57
+ ),
58
+ ),
59
59
  )
60
60
 
61
61
  dot = ui.color('.', :magenta)
62
62
  api_client.wait_for { print dot; is_done? get_request_id headers }
63
63
 
64
- lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], lan.id)
65
-
66
- puts "\n"
67
- puts "#{ui.color('ID', :cyan)}: #{lan.id}"
68
- puts "#{ui.color('Name', :cyan)}: #{lan.properties.name}"
69
- puts "#{ui.color('Public', :cyan)}: #{lan.properties.public}"
70
- puts "#{ui.color('PCC', :cyan)}: #{lan.properties.pcc}"
71
-
72
- puts 'done'
64
+ print_lan(lan_api.datacenters_lans_find_by_id(config[:datacenter_id], lan.id))
73
65
  end
74
66
  end
75
67
  end
@@ -26,7 +26,7 @@ class Chef
26
26
  handle_extra_config
27
27
  validate_required_params(@required_options, config)
28
28
 
29
- lan_api = Ionoscloud::LanApi.new(api_client)
29
+ lan_api = Ionoscloud::LansApi.new(api_client)
30
30
  @name_args.each do |lan_id|
31
31
  begin
32
32
  lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], lan_id)
@@ -36,9 +36,8 @@ class Chef
36
36
  next
37
37
  end
38
38
 
39
- msg_pair('ID', lan.id)
40
- msg_pair('Name', lan.properties.name)
41
- msg_pair('Public', lan.properties.public.to_s)
39
+ print_lan(lan)
40
+ puts "\n"
42
41
 
43
42
  begin
44
43
  confirm('Do you really want to delete this LAN')
@@ -0,0 +1,38 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudLanGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud lan get (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'ID of the data center'
14
+
15
+ option :lan_id,
16
+ short: '-L LAN_ID',
17
+ long: '--lan-id LAN_ID',
18
+ description: 'ID of the LAN'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Retrieves information about a Ionoscloud LAN.'
26
+ @required_options = [:datacenter_id, :lan_id, :ionoscloud_username, :ionoscloud_password]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ handle_extra_config
32
+ validate_required_params(@required_options, config)
33
+
34
+ print_lan(Ionoscloud::LansApi.new(api_client).datacenters_lans_find_by_id(config[:datacenter_id], config[:lan_id]))
35
+ end
36
+ end
37
+ end
38
+ end
@@ -27,13 +27,14 @@ class Chef
27
27
  validate_required_params(@required_options, config)
28
28
 
29
29
  $stdout.sync = true
30
+ handle_extra_config
30
31
  lan_list = [
31
32
  ui.color('ID', :bold),
32
33
  ui.color('Name', :bold),
33
34
  ui.color('Public', :bold),
34
35
  ui.color('PCC', :bold),
35
36
  ]
36
- lan_api = Ionoscloud::LanApi.new(api_client)
37
+ lan_api = Ionoscloud::LansApi.new(api_client)
37
38
 
38
39
  lan_api.datacenters_lans_get(config[:datacenter_id], { depth: 1 }).items.each do |lan|
39
40
  lan_list << lan.id
@@ -0,0 +1,76 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudLanUpdate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud lan update (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'ID of the data center'
14
+
15
+ option :lan_id,
16
+ short: '-L LAN_ID',
17
+ long: '--lan-id LAN_ID',
18
+ description: 'ID of the LAN'
19
+
20
+ option :name,
21
+ short: '-n NAME',
22
+ long: '--name NAME',
23
+ description: 'Name of the server'
24
+
25
+ option :public,
26
+ short: '-p PUBLIC',
27
+ long: '--public PUBLIC',
28
+ boolean: true,
29
+ description: 'Boolean indicating if the LAN faces the public ' \
30
+ 'Internet or not; defaults to false'
31
+
32
+ option :pcc,
33
+ long: '--pcc PCC_ID',
34
+ description: 'ID of the PCC to connect the LAN to'
35
+
36
+ attr_reader :description, :required_options
37
+
38
+ def initialize(args = [])
39
+ super(args)
40
+ @description =
41
+ 'Updates information about a Ionoscloud LAN.'
42
+ @required_options = [:datacenter_id, :lan_id, :ionoscloud_username, :ionoscloud_password]
43
+ @updatable_fields = [:name, :public, :pcc, :description]
44
+ end
45
+
46
+ def run
47
+ $stdout.sync = true
48
+ handle_extra_config
49
+ validate_required_params(@required_options, config)
50
+
51
+ lan_api = Ionoscloud::LansApi.new(api_client)
52
+
53
+ if @updatable_fields.map { |el| config[el] }.any?
54
+ print "#{ui.color('Updating LAN...', :magenta)}"
55
+
56
+ _, _, headers = lan_api.datacenters_lans_patch_with_http_info(
57
+ config[:datacenter_id],
58
+ config[:lan_id],
59
+ Ionoscloud::LanProperties.new(
60
+ name: config[:name],
61
+ public: (config.key?(:public) ? config[:public].to_s.downcase == 'true' : nil),
62
+ pcc: config[:pcc],
63
+ ),
64
+ )
65
+
66
+ dot = ui.color('.', :magenta)
67
+ api_client.wait_for { print dot; is_done? get_request_id headers }
68
+ else
69
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
70
+ end
71
+
72
+ print_lan(lan_api.datacenters_lans_find_by_id(config[:datacenter_id], config[:lan_id]))
73
+ end
74
+ end
75
+ end
76
+ end
@@ -51,7 +51,7 @@ class Chef
51
51
  config[:nics].map! { |nic| { id: nic } }
52
52
  end
53
53
 
54
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
54
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
55
55
 
56
56
  load_balancer, _, headers = load_balancer_api.datacenters_loadbalancers_post_with_http_info(
57
57
  config[:datacenter_id],
@@ -64,25 +64,15 @@ class Chef
64
64
  entities: Ionoscloud::LoadbalancerEntities.new(
65
65
  balancednics: Ionoscloud::Nics.new(
66
66
  items: config[:nics],
67
- )
68
- )
67
+ ),
68
+ ),
69
69
  ),
70
70
  )
71
71
 
72
72
  dot = ui.color('.', :magenta)
73
73
  api_client.wait_for { print dot; is_done? get_request_id headers }
74
74
 
75
- load_balancer = load_balancer_api.datacenters_loadbalancers_find_by_id(config[:datacenter_id], load_balancer.id, { depth: 1 })
76
-
77
- nics = load_balancer.entities.balancednics.items.map { |nic| nic.id }
78
-
79
- puts "\n"
80
- puts "#{ui.color('ID', :cyan)}: #{load_balancer.id}"
81
- puts "#{ui.color('Name', :cyan)}: #{load_balancer.properties.name}"
82
- puts "#{ui.color('IP address', :cyan)}: #{load_balancer.properties.ip}"
83
- puts "#{ui.color('DHCP', :cyan)}: #{load_balancer.properties.dhcp}"
84
- puts "#{ui.color('Balanced Nics', :cyan)}: #{nics.to_s}"
85
- puts 'done'
75
+ print_load_balancer(load_balancer_api.datacenters_loadbalancers_find_by_id(config[:datacenter_id], load_balancer.id, { depth: 1 }))
86
76
  end
87
77
  end
88
78
  end
@@ -26,7 +26,7 @@ class Chef
26
26
  handle_extra_config
27
27
  validate_required_params(@required_options, config)
28
28
 
29
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
29
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
30
30
 
31
31
  @name_args.each do |load_balancer_id|
32
32
  begin
@@ -41,14 +41,7 @@ class Chef
41
41
  next
42
42
  end
43
43
 
44
- nics = load_balancer.entities.balancednics.items.map { |nic| nic.id }
45
-
46
- msg_pair('ID', load_balancer.id)
47
- msg_pair('Name', load_balancer.properties.name)
48
- msg_pair('IP address', load_balancer.properties.ip)
49
- msg_pair('DHCP', load_balancer.properties.dhcp)
50
- msg_pair('Balanced Nics', nics.to_s)
51
-
44
+ print_load_balancer(load_balancer)
52
45
  puts "\n"
53
46
 
54
47
  begin
@@ -31,21 +31,11 @@ class Chef
31
31
  handle_extra_config
32
32
  validate_required_params(@required_options, config)
33
33
 
34
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
34
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
35
35
 
36
- load_balancer = load_balancer_api.datacenters_loadbalancers_find_by_id(
37
- config[:datacenter_id],
38
- config[:loadbalancer_id],
39
- { depth: 1 },
36
+ print_load_balancer(
37
+ load_balancer_api.datacenters_loadbalancers_find_by_id(config[:datacenter_id], config[:loadbalancer_id], depth: 1),
40
38
  )
41
-
42
- nics = load_balancer.entities.balancednics.items.map! { |el| el.id }
43
-
44
- puts "#{ui.color('ID', :cyan)}: #{load_balancer.id}"
45
- puts "#{ui.color('Name', :cyan)}: #{load_balancer.properties.name}"
46
- puts "#{ui.color('IP address', :cyan)}: #{load_balancer.properties.ip}"
47
- puts "#{ui.color('DHCP', :cyan)}: #{load_balancer.properties.dhcp}"
48
- puts "#{ui.color('Balanced Nics', :cyan)}: #{nics.to_s}"
49
39
  end
50
40
  end
51
41
  end
@@ -34,7 +34,7 @@ class Chef
34
34
  ui.color('NICs count', :bold),
35
35
  ]
36
36
 
37
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
37
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
38
38
 
39
39
  load_balancer_api.datacenters_loadbalancers_get(config[:datacenter_id], { depth: 2 }).items.each do |load_balancer|
40
40
  load_balancers_list << load_balancer.id
@@ -31,7 +31,7 @@ class Chef
31
31
  handle_extra_config
32
32
  validate_required_params(@required_options, config)
33
33
 
34
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
34
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
35
35
 
36
36
  request_ids_to_wait = []
37
37
 
@@ -55,21 +55,9 @@ class Chef
55
55
 
56
56
  request_ids_to_wait.each { |request_id| api_client.wait_for { is_done? request_id } }
57
57
 
58
- load_balancer = load_balancer_api.datacenters_loadbalancers_find_by_id(
59
- config[:datacenter_id],
60
- config[:loadbalancer_id],
61
- { depth: 1 },
58
+ print_load_balancer(
59
+ load_balancer_api.datacenters_loadbalancers_find_by_id(config[:datacenter_id], config[:loadbalancer_id], depth: 1),
62
60
  )
63
-
64
- nics = load_balancer.entities.balancednics.items.map! { |el| el.id }
65
-
66
- puts "\n"
67
- puts "#{ui.color('ID', :cyan)}: #{load_balancer.id}"
68
- puts "#{ui.color('Name', :cyan)}: #{load_balancer.properties.name}"
69
- puts "#{ui.color('IP address', :cyan)}: #{load_balancer.properties.ip}"
70
- puts "#{ui.color('DHCP', :cyan)}: #{load_balancer.properties.dhcp}"
71
- puts "#{ui.color('Balanced Nics', :cyan)}: #{nics.to_s}"
72
- puts 'done'
73
61
  end
74
62
  end
75
63
  end
@@ -31,7 +31,7 @@ class Chef
31
31
  handle_extra_config
32
32
  validate_required_params(@required_options, config)
33
33
 
34
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
34
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
35
35
 
36
36
  request_ids_to_wait = []
37
37
 
@@ -51,26 +51,13 @@ class Chef
51
51
  ui.error("NIC ID #{nic_id} not found. Skipping.")
52
52
  next
53
53
  end
54
-
55
54
  end
56
55
 
57
56
  request_ids_to_wait.each { |request_id| api_client.wait_for { is_done? request_id } }
58
57
 
59
- load_balancer = load_balancer_api.datacenters_loadbalancers_find_by_id(
60
- config[:datacenter_id],
61
- config[:loadbalancer_id],
62
- { depth: 1 },
58
+ print_load_balancer(
59
+ load_balancer_api.datacenters_loadbalancers_find_by_id(config[:datacenter_id], config[:loadbalancer_id], depth: 1),
63
60
  )
64
-
65
- nics = load_balancer.entities.balancednics.items.map! { |el| el.id }
66
-
67
- puts "\n\n"
68
- puts "#{ui.color('ID', :cyan)}: #{load_balancer.id}"
69
- puts "#{ui.color('Name', :cyan)}: #{load_balancer.properties.name}"
70
- puts "#{ui.color('IP address', :cyan)}: #{load_balancer.properties.ip}"
71
- puts "#{ui.color('DHCP', :cyan)}: #{load_balancer.properties.dhcp}"
72
- puts "#{ui.color('Balanced Nics', :cyan)}: #{nics.to_s}"
73
- puts 'done'
74
61
  end
75
62
  end
76
63
  end
@@ -0,0 +1,73 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudLoadbalancerUpdate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud loadbalancer update (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'ID of the data center'
14
+
15
+ option :loadbalancer_id,
16
+ short: '-L LOADBALANCER_ID',
17
+ long: '--loadbalancer-id LOADBALANCER_ID',
18
+ description: 'ID of the load balancer'
19
+
20
+ option :name,
21
+ short: '-n NAME',
22
+ long: '--name NAME',
23
+ description: 'Name of the load balancer'
24
+
25
+ option :ip,
26
+ long: '--ip IP',
27
+ description: 'IPv4 address of the load balancer. All attached NICs will inherit this IP.'
28
+
29
+ option :dhcp,
30
+ long: '--dhcp DHCP',
31
+ description: 'Indicates if the load balancer will reserve an IP using DHCP.'
32
+
33
+ attr_reader :description, :required_options
34
+
35
+ def initialize(args = [])
36
+ super(args)
37
+ @description =
38
+ 'Updates information about a Ionoscloud Load Balancer.'
39
+ @required_options = [:datacenter_id, :loadbalancer_id, :ionoscloud_username, :ionoscloud_password]
40
+ @updatable_fields = [:name, :ip, :dhcp]
41
+ end
42
+
43
+ def run
44
+ $stdout.sync = true
45
+ handle_extra_config
46
+ validate_required_params(@required_options, config)
47
+
48
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
49
+
50
+ if @updatable_fields.map { |el| config[el] }.any?
51
+ print "#{ui.color('Updating Load Balancer...', :magenta)}"
52
+
53
+ _, _, headers = load_balancer_api.datacenters_loadbalancers_patch_with_http_info(
54
+ config[:datacenter_id],
55
+ config[:loadbalancer_id],
56
+ Ionoscloud::LoadbalancerProperties.new(
57
+ name: config[:name],
58
+ dhcp: (config.key?(:dhcp) ? config[:dhcp].to_s.downcase == 'true' : nil),
59
+ ip: config[:ip],
60
+ ),
61
+ )
62
+
63
+ dot = ui.color('.', :magenta)
64
+ api_client.wait_for { print dot; is_done? get_request_id headers }
65
+ else
66
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
67
+ end
68
+
69
+ print_load_balancer(load_balancer_api.datacenters_loadbalancers_find_by_id(config[:datacenter_id], config[:loadbalancer_id]))
70
+ end
71
+ end
72
+ end
73
+ end
@@ -23,16 +23,18 @@ class Chef
23
23
 
24
24
  location_list = [
25
25
  ui.color('ID', :bold),
26
- ui.color('Name', :bold)
26
+ ui.color('Name', :bold),
27
+ ui.color('CPU Architectures', :bold),
27
28
  ]
28
- location_api = Ionoscloud::LocationApi.new(api_client)
29
+ location_api = Ionoscloud::LocationsApi.new(api_client)
29
30
 
30
31
  location_api.locations_get({ depth: 1 }).items.each do |location|
31
32
  location_list << location.id
32
33
  location_list << location.properties.name
34
+ location_list << location.properties.cpu_architecture.map { |arch| arch.cpu_family }
33
35
  end
34
36
 
35
- puts ui.list(location_list, :uneven_columns_across, 2)
37
+ puts ui.list(location_list, :uneven_columns_across, 3)
36
38
  end
37
39
  end
38
40
  end