knife-ionoscloud 5.1.2 → 6.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/publish.yml +1 -4
  3. data/docs/README.md +0 -19
  4. data/docs/docs_generator.rb +1 -1
  5. data/docs/subcommands/backupunit_create.md +2 -5
  6. data/docs/subcommands/backupunit_delete.md +1 -4
  7. data/docs/subcommands/backupunit_list.md +1 -4
  8. data/docs/subcommands/backupunit_ssourl.md +1 -4
  9. data/docs/subcommands/composite_server_create.md +1 -4
  10. data/docs/subcommands/contract_list.md +1 -4
  11. data/docs/subcommands/datacenter_create.md +1 -4
  12. data/docs/subcommands/datacenter_delete.md +1 -4
  13. data/docs/subcommands/datacenter_list.md +1 -4
  14. data/docs/subcommands/firewall_create.md +2 -5
  15. data/docs/subcommands/firewall_delete.md +0 -3
  16. data/docs/subcommands/firewall_list.md +1 -4
  17. data/docs/subcommands/group_create.md +1 -4
  18. data/docs/subcommands/group_delete.md +1 -4
  19. data/docs/subcommands/group_get.md +1 -4
  20. data/docs/subcommands/group_list.md +1 -4
  21. data/docs/subcommands/group_user_add.md +0 -3
  22. data/docs/subcommands/group_user_remove.md +0 -3
  23. data/docs/subcommands/image_list.md +1 -4
  24. data/docs/subcommands/ipblock_create.md +1 -4
  25. data/docs/subcommands/ipblock_delete.md +1 -4
  26. data/docs/subcommands/ipblock_list.md +1 -4
  27. data/docs/subcommands/ipfailover_add.md +1 -4
  28. data/docs/subcommands/ipfailover_remove.md +1 -4
  29. data/docs/subcommands/k8s_create.md +5 -11
  30. data/docs/subcommands/k8s_delete.md +1 -4
  31. data/docs/subcommands/k8s_list.md +1 -4
  32. data/docs/subcommands/kubeconfig_get.md +1 -4
  33. data/docs/subcommands/label_add.md +1 -4
  34. data/docs/subcommands/label_list.md +1 -4
  35. data/docs/subcommands/label_remove.md +0 -3
  36. data/docs/subcommands/lan_create.md +1 -4
  37. data/docs/subcommands/lan_delete.md +0 -3
  38. data/docs/subcommands/lan_list.md +1 -4
  39. data/docs/subcommands/loadbalancer_create.md +2 -5
  40. data/docs/subcommands/loadbalancer_delete.md +0 -3
  41. data/docs/subcommands/loadbalancer_get.md +1 -4
  42. data/docs/subcommands/loadbalancer_list.md +1 -4
  43. data/docs/subcommands/loadbalancer_nic_add.md +0 -3
  44. data/docs/subcommands/loadbalancer_nic_remove.md +0 -3
  45. data/docs/subcommands/location_list.md +1 -4
  46. data/docs/subcommands/nic_create.md +3 -6
  47. data/docs/subcommands/nic_delete.md +1 -4
  48. data/docs/subcommands/nic_list.md +1 -4
  49. data/docs/subcommands/node_delete.md +0 -3
  50. data/docs/subcommands/node_list.md +1 -4
  51. data/docs/subcommands/node_replace.md +0 -3
  52. data/docs/subcommands/nodepool_create.md +5 -17
  53. data/docs/subcommands/nodepool_delete.md +0 -3
  54. data/docs/subcommands/nodepool_list.md +1 -4
  55. data/docs/subcommands/pcc_create.md +1 -4
  56. data/docs/subcommands/pcc_delete.md +1 -4
  57. data/docs/subcommands/pcc_list.md +1 -4
  58. data/docs/subcommands/request_list.md +1 -4
  59. data/docs/subcommands/request_status.md +1 -4
  60. data/docs/subcommands/request_wait.md +1 -4
  61. data/docs/subcommands/resource_list.md +1 -4
  62. data/docs/subcommands/s3key_create.md +1 -4
  63. data/docs/subcommands/s3key_delete.md +0 -3
  64. data/docs/subcommands/s3key_list.md +1 -4
  65. data/docs/subcommands/server_create.md +1 -4
  66. data/docs/subcommands/server_delete.md +0 -3
  67. data/docs/subcommands/server_list.md +1 -4
  68. data/docs/subcommands/server_reboot.md +0 -3
  69. data/docs/subcommands/server_start.md +0 -3
  70. data/docs/subcommands/server_stop.md +0 -3
  71. data/docs/subcommands/share_create.md +2 -5
  72. data/docs/subcommands/share_delete.md +2 -5
  73. data/docs/subcommands/share_list.md +1 -4
  74. data/docs/subcommands/snapshot_create.md +1 -4
  75. data/docs/subcommands/snapshot_delete.md +1 -4
  76. data/docs/subcommands/snapshot_list.md +1 -4
  77. data/docs/subcommands/snapshot_restore.md +1 -4
  78. data/docs/subcommands/user_create.md +3 -12
  79. data/docs/subcommands/user_delete.md +1 -4
  80. data/docs/subcommands/user_list.md +1 -4
  81. data/docs/subcommands/user_ssourl.md +1 -4
  82. data/docs/subcommands/volume_attach.md +0 -3
  83. data/docs/subcommands/volume_create.md +1 -28
  84. data/docs/subcommands/volume_delete.md +0 -3
  85. data/docs/subcommands/volume_detach.md +0 -3
  86. data/docs/subcommands/volume_list.md +1 -4
  87. data/docs/summary.md +0 -33
  88. data/knife-ionoscloud.gemspec +1 -1
  89. data/lib/chef/knife/ionoscloud_backupunit_create.rb +16 -12
  90. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +5 -3
  91. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -2
  92. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +1 -2
  93. data/lib/chef/knife/ionoscloud_base.rb +6 -259
  94. data/lib/chef/knife/ionoscloud_composite_server_create.rb +38 -9
  95. data/lib/chef/knife/ionoscloud_contract_list.rb +32 -24
  96. data/lib/chef/knife/ionoscloud_cube_server_create.rb +215 -0
  97. data/lib/chef/knife/ionoscloud_datacenter_create.rb +14 -12
  98. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +8 -3
  99. data/lib/chef/knife/ionoscloud_datacenter_list.rb +3 -4
  100. data/lib/chef/knife/ionoscloud_firewall_create.rb +24 -7
  101. data/lib/chef/knife/ionoscloud_firewall_delete.rb +14 -6
  102. data/lib/chef/knife/ionoscloud_firewall_list.rb +5 -4
  103. data/lib/chef/knife/ionoscloud_flowlog_create.rb +121 -0
  104. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +106 -0
  105. data/lib/chef/knife/ionoscloud_flowlog_list.rb +100 -0
  106. data/lib/chef/knife/ionoscloud_group_create.rb +46 -16
  107. data/lib/chef/knife/ionoscloud_group_delete.rb +18 -2
  108. data/lib/chef/knife/ionoscloud_group_get.rb +17 -2
  109. data/lib/chef/knife/ionoscloud_group_list.rb +7 -2
  110. data/lib/chef/knife/ionoscloud_group_user_add.rb +13 -2
  111. data/lib/chef/knife/ionoscloud_group_user_remove.rb +13 -2
  112. data/lib/chef/knife/ionoscloud_image_list.rb +1 -2
  113. data/lib/chef/knife/ionoscloud_ipblock_create.rb +13 -11
  114. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +4 -3
  115. data/lib/chef/knife/ionoscloud_ipblock_list.rb +1 -2
  116. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +15 -9
  117. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +9 -3
  118. data/lib/chef/knife/ionoscloud_k8s_create.rb +30 -28
  119. data/lib/chef/knife/ionoscloud_k8s_delete.rb +9 -2
  120. data/lib/chef/knife/ionoscloud_k8s_list.rb +0 -1
  121. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +0 -1
  122. data/lib/chef/knife/ionoscloud_label_add.rb +1 -2
  123. data/lib/chef/knife/ionoscloud_label_list.rb +1 -2
  124. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -2
  125. data/lib/chef/knife/ionoscloud_lan_create.rb +14 -7
  126. data/lib/chef/knife/ionoscloud_lan_delete.rb +4 -4
  127. data/lib/chef/knife/ionoscloud_lan_list.rb +2 -5
  128. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +16 -7
  129. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +10 -3
  130. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +13 -4
  131. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -2
  132. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +14 -5
  133. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +14 -5
  134. data/lib/chef/knife/ionoscloud_location_list.rb +5 -4
  135. data/lib/chef/knife/ionoscloud_natgateway_create.rb +71 -0
  136. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +69 -0
  137. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +82 -0
  138. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +58 -0
  139. data/lib/chef/knife/ionoscloud_natgateway_list.rb +49 -0
  140. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +124 -0
  141. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +63 -0
  142. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +72 -0
  143. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +95 -0
  144. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +81 -0
  145. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +56 -0
  146. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +150 -0
  147. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +63 -0
  148. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +78 -0
  149. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +141 -0
  150. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +68 -0
  151. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +105 -0
  152. data/lib/chef/knife/ionoscloud_nic_create.rb +38 -19
  153. data/lib/chef/knife/ionoscloud_nic_delete.rb +11 -5
  154. data/lib/chef/knife/ionoscloud_nic_list.rb +9 -6
  155. data/lib/chef/knife/ionoscloud_node_delete.rb +6 -2
  156. data/lib/chef/knife/ionoscloud_node_list.rb +0 -2
  157. data/lib/chef/knife/ionoscloud_node_replace.rb +0 -1
  158. data/lib/chef/knife/ionoscloud_nodepool_create.rb +60 -38
  159. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +32 -2
  160. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +130 -0
  161. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +96 -0
  162. data/lib/chef/knife/ionoscloud_nodepool_list.rb +3 -2
  163. data/lib/chef/knife/ionoscloud_pcc_create.rb +18 -13
  164. data/lib/chef/knife/ionoscloud_pcc_delete.rb +10 -3
  165. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -2
  166. data/lib/chef/knife/ionoscloud_request_list.rb +1 -2
  167. data/lib/chef/knife/ionoscloud_request_status.rb +1 -2
  168. data/lib/chef/knife/ionoscloud_request_wait.rb +0 -1
  169. data/lib/chef/knife/ionoscloud_resource_list.rb +0 -1
  170. data/lib/chef/knife/ionoscloud_s3key_create.rb +7 -4
  171. data/lib/chef/knife/ionoscloud_s3key_delete.rb +7 -5
  172. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -3
  173. data/lib/chef/knife/{ionoscloud_server_get.rb → ionoscloud_server_console.rb} +11 -10
  174. data/lib/chef/knife/ionoscloud_server_create.rb +26 -15
  175. data/lib/chef/knife/ionoscloud_server_delete.rb +10 -3
  176. data/lib/chef/knife/ionoscloud_server_list.rb +16 -6
  177. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -2
  178. data/lib/chef/knife/ionoscloud_server_resume.rb +43 -0
  179. data/lib/chef/knife/ionoscloud_server_start.rb +1 -2
  180. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -2
  181. data/lib/chef/knife/ionoscloud_server_suspend.rb +44 -0
  182. data/lib/chef/knife/ionoscloud_server_token.rb +42 -0
  183. data/lib/chef/knife/ionoscloud_server_upgrade.rb +44 -0
  184. data/lib/chef/knife/ionoscloud_share_create.rb +12 -8
  185. data/lib/chef/knife/ionoscloud_share_delete.rb +4 -3
  186. data/lib/chef/knife/ionoscloud_share_list.rb +0 -1
  187. data/lib/chef/knife/ionoscloud_snapshot_create.rb +10 -3
  188. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +7 -3
  189. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -2
  190. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +2 -3
  191. data/lib/chef/knife/ionoscloud_template_list.rb +46 -0
  192. data/lib/chef/knife/ionoscloud_user_create.rb +20 -25
  193. data/lib/chef/knife/ionoscloud_user_delete.rb +7 -2
  194. data/lib/chef/knife/ionoscloud_user_list.rb +0 -1
  195. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -2
  196. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -2
  197. data/lib/chef/knife/ionoscloud_volume_create.rb +31 -57
  198. data/lib/chef/knife/ionoscloud_volume_delete.rb +9 -3
  199. data/lib/chef/knife/ionoscloud_volume_detach.rb +9 -3
  200. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -3
  201. data/lib/knife-ionoscloud/version.rb +1 -1
  202. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  203. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  204. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  205. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  206. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  207. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  208. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  209. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  210. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +3 -12
  211. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +5 -8
  212. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +4 -4
  213. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  214. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  215. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  216. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  217. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  218. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  219. data/spec/chef/knife/ionoscloud_group_create_spec.rb +6 -7
  220. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +3 -0
  221. data/spec/chef/knife/ionoscloud_group_get_spec.rb +3 -0
  222. data/spec/chef/knife/ionoscloud_group_list_spec.rb +11 -2
  223. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +0 -3
  224. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +0 -3
  225. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  226. data/spec/chef/knife/ionoscloud_ipblock_delete_spec.rb +0 -2
  227. data/spec/chef/knife/ionoscloud_ipblock_list_spec.rb +1 -1
  228. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +4 -5
  229. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +7 -8
  230. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +0 -8
  231. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +1 -7
  232. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  233. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  234. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  235. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  236. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +3 -4
  237. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +5 -7
  238. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +3 -5
  239. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  240. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  241. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  242. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  243. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  244. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  245. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  246. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +77 -0
  247. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  248. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +143 -0
  249. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +194 -0
  250. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  251. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +98 -0
  252. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  253. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +77 -0
  254. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +80 -0
  255. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +119 -0
  256. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  257. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +104 -0
  258. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  259. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +124 -0
  260. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +109 -0
  261. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  262. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +263 -0
  263. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  264. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  265. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  266. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +20 -13
  267. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +13 -27
  268. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +226 -0
  269. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +199 -0
  270. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  271. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +8 -11
  272. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +6 -6
  273. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  274. data/spec/chef/knife/ionoscloud_request_list_spec.rb +24 -25
  275. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  276. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  277. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  278. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  279. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  280. data/spec/chef/knife/ionoscloud_server_create_spec.rb +3 -3
  281. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +5 -5
  282. data/spec/chef/knife/ionoscloud_server_list_spec.rb +63 -5
  283. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  284. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  285. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  286. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  287. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  288. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  289. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  290. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +3 -16
  291. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +5 -17
  292. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  293. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +3 -3
  294. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  295. data/spec/chef/knife/ionoscloud_user_create_spec.rb +1 -3
  296. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +2 -4
  297. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  298. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  299. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +6 -15
  300. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +5 -14
  301. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -14
  302. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  303. data/spec/spec_helper.rb +270 -116
  304. metadata +93 -138
  305. data/docs/subcommands/backupunit_get.md +0 -35
  306. data/docs/subcommands/backupunit_update.md +0 -41
  307. data/docs/subcommands/datacenter_get.md +0 -35
  308. data/docs/subcommands/datacenter_update.md +0 -44
  309. data/docs/subcommands/firewall_get.md +0 -47
  310. data/docs/subcommands/firewall_update.md +0 -71
  311. data/docs/subcommands/group_update.md +0 -65
  312. data/docs/subcommands/ipblock_get.md +0 -35
  313. data/docs/subcommands/ipblock_update.md +0 -38
  314. data/docs/subcommands/k8s_get.md +0 -35
  315. data/docs/subcommands/k8s_update.md +0 -53
  316. data/docs/subcommands/lan_get.md +0 -39
  317. data/docs/subcommands/lan_update.md +0 -51
  318. data/docs/subcommands/loadbalancer_update.md +0 -48
  319. data/docs/subcommands/nic_get.md +0 -43
  320. data/docs/subcommands/nic_update.md +0 -58
  321. data/docs/subcommands/node_get.md +0 -43
  322. data/docs/subcommands/nodepool_get.md +0 -39
  323. data/docs/subcommands/nodepool_update.md +0 -69
  324. data/docs/subcommands/pcc_get.md +0 -35
  325. data/docs/subcommands/pcc_update.md +0 -41
  326. data/docs/subcommands/request_get.md +0 -35
  327. data/docs/subcommands/s3key_get.md +0 -39
  328. data/docs/subcommands/server_get.md +0 -39
  329. data/docs/subcommands/server_update.md +0 -60
  330. data/docs/subcommands/share_get.md +0 -39
  331. data/docs/subcommands/share_update.md +0 -45
  332. data/docs/subcommands/snapshot_get.md +0 -35
  333. data/docs/subcommands/snapshot_update.md +0 -77
  334. data/docs/subcommands/user_get.md +0 -35
  335. data/docs/subcommands/user_update.md +0 -56
  336. data/docs/subcommands/volume_get.md +0 -39
  337. data/docs/subcommands/volume_update.md +0 -66
  338. data/lib/chef/knife/ionoscloud_backupunit_get.rb +0 -33
  339. data/lib/chef/knife/ionoscloud_backupunit_update.rb +0 -62
  340. data/lib/chef/knife/ionoscloud_datacenter_get.rb +0 -33
  341. data/lib/chef/knife/ionoscloud_datacenter_update.rb +0 -67
  342. data/lib/chef/knife/ionoscloud_firewall_get.rb +0 -50
  343. data/lib/chef/knife/ionoscloud_firewall_update.rb +0 -131
  344. data/lib/chef/knife/ionoscloud_group_update.rb +0 -114
  345. data/lib/chef/knife/ionoscloud_ipblock_get.rb +0 -33
  346. data/lib/chef/knife/ionoscloud_ipblock_update.rb +0 -57
  347. data/lib/chef/knife/ionoscloud_k8s_get.rb +0 -33
  348. data/lib/chef/knife/ionoscloud_k8s_update.rb +0 -99
  349. data/lib/chef/knife/ionoscloud_lan_get.rb +0 -38
  350. data/lib/chef/knife/ionoscloud_lan_update.rb +0 -87
  351. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +0 -73
  352. data/lib/chef/knife/ionoscloud_nic_get.rb +0 -47
  353. data/lib/chef/knife/ionoscloud_nic_update.rb +0 -93
  354. data/lib/chef/knife/ionoscloud_node_get.rb +0 -47
  355. data/lib/chef/knife/ionoscloud_nodepool_get.rb +0 -41
  356. data/lib/chef/knife/ionoscloud_nodepool_update.rb +0 -124
  357. data/lib/chef/knife/ionoscloud_pcc_get.rb +0 -33
  358. data/lib/chef/knife/ionoscloud_pcc_update.rb +0 -63
  359. data/lib/chef/knife/ionoscloud_request_get.rb +0 -40
  360. data/lib/chef/knife/ionoscloud_s3key_get.rb +0 -38
  361. data/lib/chef/knife/ionoscloud_server_update.rb +0 -97
  362. data/lib/chef/knife/ionoscloud_share_get.rb +0 -38
  363. data/lib/chef/knife/ionoscloud_share_update.rb +0 -70
  364. data/lib/chef/knife/ionoscloud_snapshot_get.rb +0 -32
  365. data/lib/chef/knife/ionoscloud_snapshot_update.rb +0 -126
  366. data/lib/chef/knife/ionoscloud_user_get.rb +0 -32
  367. data/lib/chef/knife/ionoscloud_user_update.rb +0 -92
  368. data/lib/chef/knife/ionoscloud_volume_get.rb +0 -36
  369. data/lib/chef/knife/ionoscloud_volume_update.rb +0 -106
  370. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +0 -65
  371. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +0 -78
  372. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +0 -69
  373. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +0 -82
  374. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +0 -76
  375. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +0 -116
  376. data/spec/chef/knife/ionoscloud_group_update_spec.rb +0 -109
  377. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +0 -66
  378. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +0 -79
  379. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +0 -73
  380. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +0 -115
  381. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +0 -68
  382. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +0 -91
  383. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +0 -89
  384. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +0 -70
  385. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +0 -92
  386. data/spec/chef/knife/ionoscloud_node_get_spec.rb +0 -70
  387. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +0 -83
  388. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +0 -130
  389. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +0 -71
  390. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +0 -83
  391. data/spec/chef/knife/ionoscloud_request_get_spec.rb +0 -69
  392. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +0 -66
  393. data/spec/chef/knife/ionoscloud_server_get_spec.rb +0 -71
  394. data/spec/chef/knife/ionoscloud_server_update_spec.rb +0 -102
  395. data/spec/chef/knife/ionoscloud_share_get_spec.rb +0 -66
  396. data/spec/chef/knife/ionoscloud_share_update_spec.rb +0 -91
  397. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +0 -79
  398. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +0 -113
  399. data/spec/chef/knife/ionoscloud_user_get_spec.rb +0 -70
  400. data/spec/chef/knife/ionoscloud_user_update_spec.rb +0 -110
  401. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +0 -80
  402. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +0 -115
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudDatacenterDelete do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call DataCenterApi.datacenters_delete when the ID is valid' do
15
+ it 'should call DataCentersApi.datacenters_delete when the ID is valid' do
16
16
  datacenter = datacenter_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -27,9 +27,6 @@ describe Chef::Knife::IonoscloudDatacenterDelete do
27
27
  expect(subject).to receive(:puts).with("Name: #{datacenter.properties.name}")
28
28
  expect(subject).to receive(:puts).with("Description: #{datacenter.properties.description}")
29
29
  expect(subject).to receive(:puts).with("Location: #{datacenter.properties.location}")
30
- expect(subject).to receive(:puts).with("Version: #{datacenter.properties.version}")
31
- expect(subject).to receive(:puts).with("Features: #{datacenter.properties.features}")
32
- expect(subject).to receive(:puts).with("Sec Auth Protection: #{datacenter.properties.sec_auth_protection}")
33
30
  expect(subject.ui).to receive(:warn).with("Deleted Data center #{datacenter.id}. Request ID: ")
34
31
 
35
32
  expect(subject.api_client).not_to receive(:wait_for)
@@ -40,14 +37,14 @@ describe Chef::Knife::IonoscloudDatacenterDelete do
40
37
  {
41
38
  method: 'GET',
42
39
  path: "/datacenters/#{datacenter.id}",
43
- operation: :'DataCenterApi.datacenters_find_by_id',
40
+ operation: :'DataCentersApi.datacenters_find_by_id',
44
41
  return_type: 'Datacenter',
45
42
  result: datacenter,
46
43
  },
47
44
  {
48
45
  method: 'DELETE',
49
46
  path: "/datacenters/#{datacenter.id}",
50
- operation: :'DataCenterApi.datacenters_delete',
47
+ operation: :'DataCentersApi.datacenters_delete',
51
48
  },
52
49
  ],
53
50
  )
@@ -55,7 +52,7 @@ describe Chef::Knife::IonoscloudDatacenterDelete do
55
52
  expect { subject.run }.not_to raise_error(Exception)
56
53
  end
57
54
 
58
- it 'should not call DataCenterApi.datacenters_delete when the user ID is not valid' do
55
+ it 'should not call DataCentersApi.datacenters_delete when the user ID is not valid' do
59
56
  datacenter_id = 'invalid_id'
60
57
  subject_config = {
61
58
  ionoscloud_username: 'email',
@@ -74,7 +71,7 @@ describe Chef::Knife::IonoscloudDatacenterDelete do
74
71
  {
75
72
  method: 'GET',
76
73
  path: "/datacenters/#{datacenter_id}",
77
- operation: :'DataCenterApi.datacenters_find_by_id',
74
+ operation: :'DataCentersApi.datacenters_find_by_id',
78
75
  return_type: 'Datacenter',
79
76
  exception: Ionoscloud::ApiError.new(code: 404),
80
77
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudDatacenterList do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call DataCenterApi.datacenters_get' do
15
+ it 'should call DataCentersApi.datacenters_get' do
16
16
  datacenters = datacenters_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -26,8 +26,8 @@ describe Chef::Knife::IonoscloudDatacenterList do
26
26
  subject.ui.color('Name', :bold),
27
27
  subject.ui.color('Description', :bold),
28
28
  subject.ui.color('Location', :bold),
29
+ subject.ui.color('CPU Architectures', :bold),
29
30
  subject.ui.color('Version', :bold),
30
- subject.ui.color('Sec Auth Protection', :bold),
31
31
  ]
32
32
 
33
33
  datacenters.items.each do |datacenter|
@@ -35,8 +35,8 @@ describe Chef::Knife::IonoscloudDatacenterList do
35
35
  datacenter_list << datacenter.properties.name
36
36
  datacenter_list << datacenter.properties.description
37
37
  datacenter_list << datacenter.properties.location
38
+ datacenter_list << datacenter.properties.cpu_architecture.map { |arch| arch.cpu_family }
38
39
  datacenter_list << datacenter.properties.version.to_s
39
- datacenter_list << datacenter.properties.sec_auth_protection.to_s
40
40
  end
41
41
 
42
42
  expect(subject.ui).to receive(:list).with(datacenter_list, :uneven_columns_across, 6)
@@ -47,7 +47,7 @@ describe Chef::Knife::IonoscloudDatacenterList do
47
47
  {
48
48
  method: 'GET',
49
49
  path: '/datacenters',
50
- operation: :'DataCenterApi.datacenters_get',
50
+ operation: :'DataCentersApi.datacenters_get',
51
51
  return_type: 'Datacenters',
52
52
  result: datacenters,
53
53
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudFirewallCreate do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call NicApi.datacenters_servers_nics_firewallrules_post with the expected arguments and output based on what it receives' do
15
+ it 'should call FirewallRulesApi.datacenters_servers_nics_firewallrules_post with the expected arguments and output based on what it receives' do
16
16
  firewall = firewall_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -29,6 +29,7 @@ describe Chef::Knife::IonoscloudFirewallCreate do
29
29
  port_range_end: firewall.properties.port_range_end,
30
30
  icmp_type: firewall.properties.icmp_type,
31
31
  icmp_code: firewall.properties.icmp_code,
32
+ type: firewall.properties.type,
32
33
  }
33
34
 
34
35
  subject_config.each { |key, value| subject.config[key] = value }
@@ -43,6 +44,7 @@ describe Chef::Knife::IonoscloudFirewallCreate do
43
44
  expect(subject).to receive(:puts).with("Port Range End: #{firewall.properties.port_range_end}")
44
45
  expect(subject).to receive(:puts).with("ICMP Type: #{firewall.properties.icmp_type}")
45
46
  expect(subject).to receive(:puts).with("ICMP Code: #{firewall.properties.icmp_code}")
47
+ expect(subject).to receive(:puts).with("Type: #{firewall.properties.type}")
46
48
 
47
49
  mock_wait_for(subject)
48
50
  mock_call_api(
@@ -51,7 +53,7 @@ describe Chef::Knife::IonoscloudFirewallCreate do
51
53
  {
52
54
  method: 'POST',
53
55
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/nics/#{subject_config[:nic_id]}/firewallrules",
54
- operation: :'NicApi.datacenters_servers_nics_firewallrules_post',
56
+ operation: :'FirewallRulesApi.datacenters_servers_nics_firewallrules_post',
55
57
  return_type: 'FirewallRule',
56
58
  body: { properties: firewall.properties.to_hash },
57
59
  result: firewall,
@@ -59,7 +61,7 @@ describe Chef::Knife::IonoscloudFirewallCreate do
59
61
  {
60
62
  method: 'GET',
61
63
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/nics/#{subject_config[:nic_id]}/firewallrules/#{firewall.id}",
62
- operation: :'NicApi.datacenters_servers_nics_firewallrules_find_by_id',
64
+ operation: :'FirewallRulesApi.datacenters_servers_nics_firewallrules_find_by_id',
63
65
  return_type: 'FirewallRule',
64
66
  result: firewall,
65
67
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudFirewallDelete do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call NicApi.datacenters_servers_nics_firewallrules_firewallrules_delete when the ID is valid' do
15
+ it 'should call FirewallRulesApi.datacenters_servers_nics_firewallrules_firewallrules_delete when the ID is valid' do
16
16
  firewall = firewall_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -36,6 +36,7 @@ describe Chef::Knife::IonoscloudFirewallDelete do
36
36
  expect(subject).to receive(:puts).with("Port Range End: #{firewall.properties.port_range_end}")
37
37
  expect(subject).to receive(:puts).with("ICMP Type: #{firewall.properties.icmp_type}")
38
38
  expect(subject).to receive(:puts).with("ICMP Code: #{firewall.properties.icmp_code}")
39
+ expect(subject).to receive(:puts).with("Type: #{firewall.properties.type}")
39
40
  expect(subject.ui).to receive(:warn).with("Deleted Firewall rule #{firewall.id}. Request ID: ")
40
41
 
41
42
  expect(subject.api_client).not_to receive(:wait_for)
@@ -47,7 +48,7 @@ describe Chef::Knife::IonoscloudFirewallDelete do
47
48
  method: 'GET',
48
49
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/"\
49
50
  "nics/#{subject_config[:nic_id]}/firewallrules/#{firewall.id}",
50
- operation: :'NicApi.datacenters_servers_nics_firewallrules_find_by_id',
51
+ operation: :'FirewallRulesApi.datacenters_servers_nics_firewallrules_find_by_id',
51
52
  return_type: 'FirewallRule',
52
53
  result: firewall,
53
54
  },
@@ -55,7 +56,7 @@ describe Chef::Knife::IonoscloudFirewallDelete do
55
56
  method: 'DELETE',
56
57
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/"\
57
58
  "nics/#{subject_config[:nic_id]}/firewallrules/#{firewall.id}",
58
- operation: :'NicApi.datacenters_servers_nics_firewallrules_delete',
59
+ operation: :'FirewallRulesApi.datacenters_servers_nics_firewallrules_delete',
59
60
  },
60
61
  ],
61
62
  )
@@ -63,7 +64,7 @@ describe Chef::Knife::IonoscloudFirewallDelete do
63
64
  expect { subject.run }.not_to raise_error(Exception)
64
65
  end
65
66
 
66
- it 'should not call NicApi.datacenters_servers_nics_firewallrules_delete when the user ID is not valid' do
67
+ it 'should not call FirewallRulesApi.datacenters_servers_nics_firewallrules_delete when the user ID is not valid' do
67
68
  firewall_id = 'invalid_id'
68
69
  subject_config = {
69
70
  ionoscloud_username: 'email',
@@ -86,7 +87,7 @@ describe Chef::Knife::IonoscloudFirewallDelete do
86
87
  method: 'GET',
87
88
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/"\
88
89
  "nics/#{subject_config[:nic_id]}/firewallrules/#{firewall_id}",
89
- operation: :'NicApi.datacenters_servers_nics_firewallrules_find_by_id',
90
+ operation: :'FirewallRulesApi.datacenters_servers_nics_firewallrules_find_by_id',
90
91
  return_type: 'FirewallRule',
91
92
  exception: Ionoscloud::ApiError.new(code: 404),
92
93
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudFirewallList do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call NicApi.datacenters_servers_nics_firewallrules_get' do
15
+ it 'should call FirewallRulesApi.datacenters_servers_nics_firewallrules_get' do
16
16
  firewalls = firewalls_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -35,6 +35,7 @@ describe Chef::Knife::IonoscloudFirewallList do
35
35
  subject.ui.color('Port Range End', :bold),
36
36
  subject.ui.color('ICMP Type', :bold),
37
37
  subject.ui.color('ICMP CODE', :bold),
38
+ subject.ui.color('Type', :bold),
38
39
  ]
39
40
 
40
41
  firewalls.items.each do |firewall|
@@ -48,9 +49,10 @@ describe Chef::Knife::IonoscloudFirewallList do
48
49
  firewall_list << firewall.properties.port_range_end.to_s
49
50
  firewall_list << firewall.properties.icmp_type.to_s
50
51
  firewall_list << firewall.properties.icmp_code.to_s
52
+ firewall_list << firewall.properties.type.to_s
51
53
  end
52
54
 
53
- expect(subject.ui).to receive(:list).with(firewall_list, :uneven_columns_across, 10)
55
+ expect(subject.ui).to receive(:list).with(firewall_list, :uneven_columns_across, 11)
54
56
 
55
57
  mock_call_api(
56
58
  subject,
@@ -59,7 +61,7 @@ describe Chef::Knife::IonoscloudFirewallList do
59
61
  method: 'GET',
60
62
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/"\
61
63
  "nics/#{subject_config[:nic_id]}/firewallrules",
62
- operation: :'NicApi.datacenters_servers_nics_firewallrules_get',
64
+ operation: :'FirewallRulesApi.datacenters_servers_nics_firewallrules_get',
63
65
  return_type: 'FirewallRules',
64
66
  result: firewalls,
65
67
  },
@@ -0,0 +1,254 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_flowlog_create'
3
+
4
+ Chef::Knife::IonoscloudFlowlogCreate.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudFlowlogCreate do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudFlowlogCreate.new }
9
+
10
+ allow(subject).to receive(:puts)
11
+ allow(subject).to receive(:print)
12
+ end
13
+
14
+ describe '#run' do
15
+ it 'should call FlowLogsApi.datacenters_servers_nics_flowlogs_post with the expected arguments and output based on what it receives' do
16
+ flowlog = flowlog_mock
17
+ subject_config = {
18
+ ionoscloud_username: 'email',
19
+ ionoscloud_password: 'password',
20
+ datacenter_id: 'datacenter_id',
21
+ server_id: 'server_id',
22
+ nic_id: 'nic_id',
23
+ type: 'nic',
24
+ name: flowlog.properties.name,
25
+ action: flowlog.properties.action,
26
+ direction: flowlog.properties.direction,
27
+ bucket: flowlog.properties.bucket,
28
+ }
29
+
30
+ subject_config.each { |key, value| subject.config[key] = value }
31
+
32
+ expect(subject).to receive(:puts).with("ID: #{flowlog.id}")
33
+ expect(subject).to receive(:puts).with("Name: #{flowlog.properties.name}")
34
+ expect(subject).to receive(:puts).with("Action: #{flowlog.properties.action}")
35
+ expect(subject).to receive(:puts).with("Direction: #{flowlog.properties.direction}")
36
+ expect(subject).to receive(:puts).with("Bucket: #{flowlog.properties.bucket}")
37
+
38
+ mock_wait_for(subject)
39
+ mock_call_api(
40
+ subject,
41
+ [
42
+ {
43
+ method: 'POST',
44
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/nics/#{subject_config[:nic_id]}/flowlogs",
45
+ operation: :'FlowLogsApi.datacenters_servers_nics_flowlogs_post',
46
+ return_type: 'FlowLog',
47
+ body: { properties: flowlog.properties.to_hash },
48
+ result: flowlog,
49
+ },
50
+ ],
51
+ )
52
+
53
+ expect { subject.run }.not_to raise_error(Exception)
54
+ end
55
+
56
+ it 'should not call FlowLogsApi.datacenters_servers_nics_flowlogs_post when server_id and nic_id are not given' do
57
+ flowlog = flowlog_mock
58
+ subject_config = {
59
+ ionoscloud_username: 'email',
60
+ ionoscloud_password: 'password',
61
+ datacenter_id: 'datacenter_id',
62
+ type: 'nic',
63
+ name: flowlog.properties.name,
64
+ action: flowlog.properties.action,
65
+ direction: flowlog.properties.direction,
66
+ bucket: flowlog.properties.bucket,
67
+ }
68
+
69
+ subject_config.each { |key, value| subject.config[key] = value }
70
+
71
+ expect(subject).to receive(:puts).with("Missing required parameters #{[:server_id, :nic_id]}")
72
+
73
+ expect(subject.api_client).not_to receive(:call_api)
74
+
75
+ expect { subject.run }.to raise_error(SystemExit) do |error|
76
+ expect(error.status).to eq(1)
77
+ end
78
+ end
79
+
80
+ it 'should call NATGatewaysApi.datacenters_natgateways_flowlogs_post with the expected arguments and output based on what it receives' do
81
+ flowlog = flowlog_mock
82
+ subject_config = {
83
+ ionoscloud_username: 'email',
84
+ ionoscloud_password: 'password',
85
+ datacenter_id: 'datacenter_id',
86
+ natgateway_id: 'natgateway_id',
87
+ type: 'natgateway',
88
+ name: flowlog.properties.name,
89
+ action: flowlog.properties.action,
90
+ direction: flowlog.properties.direction,
91
+ bucket: flowlog.properties.bucket,
92
+ }
93
+
94
+ subject_config.each { |key, value| subject.config[key] = value }
95
+
96
+ expect(subject).to receive(:puts).with("ID: #{flowlog.id}")
97
+ expect(subject).to receive(:puts).with("Name: #{flowlog.properties.name}")
98
+ expect(subject).to receive(:puts).with("Action: #{flowlog.properties.action}")
99
+ expect(subject).to receive(:puts).with("Direction: #{flowlog.properties.direction}")
100
+ expect(subject).to receive(:puts).with("Bucket: #{flowlog.properties.bucket}")
101
+
102
+ mock_wait_for(subject)
103
+ mock_call_api(
104
+ subject,
105
+ [
106
+ {
107
+ method: 'POST',
108
+ path: "/datacenters/#{subject_config[:datacenter_id]}/natgateways/#{subject_config[:natgateway_id]}/flowlogs",
109
+ operation: :'NATGatewaysApi.datacenters_natgateways_flowlogs_post',
110
+ return_type: 'FlowLog',
111
+ body: { properties: flowlog.properties.to_hash },
112
+ result: flowlog,
113
+ },
114
+ ],
115
+ )
116
+
117
+ expect { subject.run }.not_to raise_error(Exception)
118
+ end
119
+
120
+ it 'should not call NATGatewaysApi.datacenters_natgateways_flowlogs_post when natgateway_id is not given' do
121
+ flowlog = flowlog_mock
122
+ subject_config = {
123
+ ionoscloud_username: 'email',
124
+ ionoscloud_password: 'password',
125
+ datacenter_id: 'datacenter_id',
126
+ type: 'natgateway',
127
+ name: flowlog.properties.name,
128
+ action: flowlog.properties.action,
129
+ direction: flowlog.properties.direction,
130
+ bucket: flowlog.properties.bucket,
131
+ }
132
+
133
+ subject_config.each { |key, value| subject.config[key] = value }
134
+
135
+ expect(subject).to receive(:puts).with("Missing required parameters #{[:natgateway_id]}")
136
+
137
+ expect(subject.api_client).not_to receive(:call_api)
138
+
139
+ expect { subject.run }.to raise_error(SystemExit) do |error|
140
+ expect(error.status).to eq(1)
141
+ end
142
+ end
143
+
144
+ it 'should call NetworkLoadBalancersApi.datacenters_networkloadbalancers_flowlogs_post with the expected arguments and output based on what it receives' do
145
+ flowlog = flowlog_mock
146
+ subject_config = {
147
+ ionoscloud_username: 'email',
148
+ ionoscloud_password: 'password',
149
+ datacenter_id: 'datacenter_id',
150
+ network_loadbalancer_id: 'network_loadbalancer_id',
151
+ type: 'loadbalancer',
152
+ name: flowlog.properties.name,
153
+ action: flowlog.properties.action,
154
+ direction: flowlog.properties.direction,
155
+ bucket: flowlog.properties.bucket,
156
+ }
157
+
158
+ subject_config.each { |key, value| subject.config[key] = value }
159
+
160
+ expect(subject).to receive(:puts).with("ID: #{flowlog.id}")
161
+ expect(subject).to receive(:puts).with("Name: #{flowlog.properties.name}")
162
+ expect(subject).to receive(:puts).with("Action: #{flowlog.properties.action}")
163
+ expect(subject).to receive(:puts).with("Direction: #{flowlog.properties.direction}")
164
+ expect(subject).to receive(:puts).with("Bucket: #{flowlog.properties.bucket}")
165
+
166
+ mock_wait_for(subject)
167
+ mock_call_api(
168
+ subject,
169
+ [
170
+ {
171
+ method: 'POST',
172
+ path: "/datacenters/#{subject_config[:datacenter_id]}/networkloadbalancers/#{subject_config[:network_loadbalancer_id]}/flowlogs",
173
+ operation: :'NetworkLoadBalancersApi.datacenters_networkloadbalancers_flowlogs_post',
174
+ return_type: 'FlowLog',
175
+ body: { properties: flowlog.properties.to_hash },
176
+ result: flowlog,
177
+ },
178
+ ],
179
+ )
180
+
181
+ expect { subject.run }.not_to raise_error(Exception)
182
+ end
183
+
184
+ it 'should not call NetworkLoadBalancersApi.datacenters_networkloadbalancers_flowlogs_post when network_loadbalancer_id is not given' do
185
+ flowlog = flowlog_mock
186
+ subject_config = {
187
+ ionoscloud_username: 'email',
188
+ ionoscloud_password: 'password',
189
+ datacenter_id: 'datacenter_id',
190
+ type: 'loadbalancer',
191
+ name: flowlog.properties.name,
192
+ action: flowlog.properties.action,
193
+ direction: flowlog.properties.direction,
194
+ bucket: flowlog.properties.bucket,
195
+ }
196
+
197
+ subject_config.each { |key, value| subject.config[key] = value }
198
+
199
+ expect(subject).to receive(:puts).with("Missing required parameters #{[:network_loadbalancer_id]}")
200
+
201
+ expect(subject.api_client).not_to receive(:call_api)
202
+
203
+ expect { subject.run }.to raise_error(SystemExit) do |error|
204
+ expect(error.status).to eq(1)
205
+ end
206
+ end
207
+
208
+ it 'should not call anything when the wrong type is given' do
209
+ flowlog = flowlog_mock
210
+ subject_config = {
211
+ ionoscloud_username: 'email',
212
+ ionoscloud_password: 'password',
213
+ datacenter_id: 'datacenter_id',
214
+ server_id: 'server_id',
215
+ natgateway_id: 'natgateway_id',
216
+ network_loadbalancer_id: 'network_loadbalancer_id',
217
+ nic_id: 'nic_id',
218
+ type: 'other',
219
+ name: flowlog.properties.name,
220
+ action: flowlog.properties.action,
221
+ direction: flowlog.properties.direction,
222
+ bucket: flowlog.properties.bucket,
223
+ }
224
+
225
+ subject_config.each { |key, value| subject.config[key] = value }
226
+
227
+ expect(subject.ui).to receive(:error).with("Flow log cannot belong to #{subject_config[:type]}. Value must be one of ['nic', 'natgateway', 'loadbalancer']")
228
+
229
+ expect(subject.api_client).not_to receive(:call_api)
230
+
231
+ expect { subject.run }.to raise_error(SystemExit) do |error|
232
+ expect(error.status).to eq(1)
233
+ end
234
+ end
235
+
236
+ it 'should not make any call if any required option is missing' do
237
+ required_options = subject.instance_variable_get(:@required_options)
238
+
239
+ arrays_without_one_element(required_options).each do |test_case|
240
+
241
+ test_case[:array].each { |value| subject.config[value] = 'test' }
242
+
243
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
244
+ expect(subject.api_client).not_to receive(:call_api)
245
+
246
+ expect { subject.run }.to raise_error(SystemExit) do |error|
247
+ expect(error.status).to eq(1)
248
+ end
249
+
250
+ required_options.each { |value| subject.config[value] = nil }
251
+ end
252
+ end
253
+ end
254
+ end