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
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLanDelete do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call LanApi.datacenters_lans_delete when the ID is valid' do
15
+ it 'should call LansApi.datacenters_lans_delete when the ID is valid' do
16
16
  lan = lan_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -27,6 +27,8 @@ describe Chef::Knife::IonoscloudLanDelete do
27
27
  expect(subject).to receive(:puts).with("ID: #{lan.id}")
28
28
  expect(subject).to receive(:puts).with("Name: #{lan.properties.name}")
29
29
  expect(subject).to receive(:puts).with("Public: #{lan.properties.public.to_s}")
30
+ expect(subject).to receive(:puts).with("PCC: #{lan.properties.pcc}")
31
+ expect(subject).to receive(:puts).with("IP Failover: #{[]}")
30
32
  expect(subject.ui).to receive(:warn).with("Deleted Lan #{lan.id}. Request ID: ")
31
33
 
32
34
  expect(subject.api_client).not_to receive(:wait_for)
@@ -37,14 +39,14 @@ describe Chef::Knife::IonoscloudLanDelete do
37
39
  {
38
40
  method: 'GET',
39
41
  path: "/datacenters/#{subject_config[:datacenter_id]}/lans/#{lan.id}",
40
- operation: :'LanApi.datacenters_lans_find_by_id',
42
+ operation: :'LansApi.datacenters_lans_find_by_id',
41
43
  return_type: 'Lan',
42
44
  result: lan,
43
45
  },
44
46
  {
45
47
  method: 'DELETE',
46
48
  path: "/datacenters/#{subject_config[:datacenter_id]}/lans/#{lan.id}",
47
- operation: :'LanApi.datacenters_lans_delete',
49
+ operation: :'LansApi.datacenters_lans_delete',
48
50
  },
49
51
  ],
50
52
  )
@@ -52,7 +54,7 @@ describe Chef::Knife::IonoscloudLanDelete do
52
54
  expect { subject.run }.not_to raise_error(Exception)
53
55
  end
54
56
 
55
- it 'should not call LanApi.datacenters_lans_delete when the user ID is not valid' do
57
+ it 'should not call LansApi.datacenters_lans_delete when the user ID is not valid' do
56
58
  lan_id = 'invalid_id'
57
59
  subject_config = {
58
60
  ionoscloud_username: 'email',
@@ -72,7 +74,7 @@ describe Chef::Knife::IonoscloudLanDelete do
72
74
  {
73
75
  method: 'GET',
74
76
  path: "/datacenters/#{subject_config[:datacenter_id]}/lans/#{lan_id}",
75
- operation: :'LanApi.datacenters_lans_find_by_id',
77
+ operation: :'LansApi.datacenters_lans_find_by_id',
76
78
  return_type: 'Lan',
77
79
  exception: Ionoscloud::ApiError.new(code: 404),
78
80
  },
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_lan_get'
3
+
4
+ Chef::Knife::IonoscloudLanGet.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudLanGet do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudLanGet.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 LansApi.datacenters_lans_find_by_id' do
16
+ lan = lan_mock
17
+ subject_config = {
18
+ ionoscloud_username: 'email',
19
+ ionoscloud_password: 'password',
20
+ datacenter_id: 'datacenter_id',
21
+ lan_id: lan.id,
22
+ yes: true,
23
+ }
24
+
25
+ subject_config.each { |key, value| subject.config[key] = value }
26
+
27
+ expect(subject).to receive(:puts).with("ID: #{lan.id}")
28
+ expect(subject).to receive(:puts).with("Name: #{lan.properties.name}")
29
+ expect(subject).to receive(:puts).with("Public: #{lan.properties.public.to_s}")
30
+ expect(subject).to receive(:puts).with("PCC: #{lan.properties.pcc}")
31
+ expect(subject).to receive(:puts).with("IP Failover: #{[]}")
32
+
33
+ expect(subject.api_client).not_to receive(:wait_for)
34
+ mock_call_api(
35
+ subject,
36
+ [
37
+ {
38
+ method: 'GET',
39
+ path: "/datacenters/#{subject_config[:datacenter_id]}/lans/#{subject_config[:lan_id]}",
40
+ operation: :'LansApi.datacenters_lans_find_by_id',
41
+ return_type: 'Lan',
42
+ result: lan,
43
+ },
44
+ ],
45
+ )
46
+
47
+ expect { subject.run }.not_to raise_error(Exception)
48
+ end
49
+
50
+ it 'should not make any call if any required option is missing' do
51
+ required_options = subject.instance_variable_get(:@required_options)
52
+
53
+ arrays_without_one_element(required_options).each do |test_case|
54
+
55
+ test_case[:array].each { |value| subject.config[value] = 'test' }
56
+
57
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
58
+ expect(subject.api_client).not_to receive(:call_api)
59
+
60
+ expect { subject.run }.to raise_error(SystemExit) do |error|
61
+ expect(error.status).to eq(1)
62
+ end
63
+
64
+ required_options.each { |value| subject.config[value] = nil }
65
+ end
66
+ end
67
+ end
68
+ end
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLanList do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call LanApi.datacenters_lans_get' do
15
+ it 'should call LansApi.datacenters_lans_get' do
16
16
  lans = lans_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -44,7 +44,7 @@ describe Chef::Knife::IonoscloudLanList do
44
44
  {
45
45
  method: 'GET',
46
46
  path: "/datacenters/#{subject_config[:datacenter_id]}/lans",
47
- operation: :'LanApi.datacenters_lans_get',
47
+ operation: :'LansApi.datacenters_lans_get',
48
48
  return_type: 'Lans',
49
49
  result: lans,
50
50
  },
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_lan_update'
3
+
4
+ Chef::Knife::IonoscloudLanUpdate.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudLanUpdate do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudLanUpdate.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 LansApi.datacenters_lans_patch' do
16
+ lan = lan_mock
17
+ subject_config = {
18
+ ionoscloud_username: 'email',
19
+ ionoscloud_password: 'password',
20
+ datacenter_id: 'datacenter_id',
21
+ lan_id: lan.id,
22
+ name: lan.properties.name + '_edited',
23
+ public: (!lan.properties.public).to_s,
24
+ pcc: 'pcc_id',
25
+ yes: true,
26
+ }
27
+
28
+ subject_config.each { |key, value| subject.config[key] = value }
29
+
30
+ expect(subject).to receive(:puts).with("ID: #{lan.id}")
31
+ expect(subject).to receive(:puts).with("Name: #{subject_config[:name]}")
32
+ expect(subject).to receive(:puts).with("Public: #{subject_config[:public]}")
33
+ expect(subject).to receive(:puts).with("PCC: #{subject_config[:pcc]}")
34
+ expect(subject).to receive(:puts).with("IP Failover: #{[]}")
35
+
36
+ lan.properties.name = subject_config[:name]
37
+ lan.properties.public = subject_config[:public].to_s.downcase == 'true'
38
+ lan.properties.pcc = subject_config[:pcc]
39
+
40
+ mock_wait_for(subject)
41
+ mock_call_api(
42
+ subject,
43
+ [
44
+ {
45
+ method: 'PATCH',
46
+ path: "/datacenters/#{subject_config[:datacenter_id]}/lans/#{subject_config[:lan_id]}",
47
+ operation: :'LansApi.datacenters_lans_patch',
48
+ return_type: 'Lan',
49
+ body: {
50
+ name: subject_config[:name],
51
+ public: subject_config[:public].to_s.downcase == 'true',
52
+ pcc: subject_config[:pcc],
53
+ },
54
+ result: lan,
55
+ },
56
+ {
57
+ method: 'GET',
58
+ path: "/datacenters/#{subject_config[:datacenter_id]}/lans/#{subject_config[:lan_id]}",
59
+ operation: :'LansApi.datacenters_lans_find_by_id',
60
+ return_type: 'Lan',
61
+ result: lan,
62
+ },
63
+ ],
64
+ )
65
+
66
+ expect { subject.run }.not_to raise_error(Exception)
67
+ end
68
+
69
+ it 'should not make any call if any required option is missing' do
70
+ required_options = subject.instance_variable_get(:@required_options)
71
+
72
+ arrays_without_one_element(required_options).each do |test_case|
73
+
74
+ test_case[:array].each { |value| subject.config[value] = 'test' }
75
+
76
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
77
+ expect(subject.api_client).not_to receive(:call_api)
78
+
79
+ expect { subject.run }.to raise_error(SystemExit) do |error|
80
+ expect(error.status).to eq(1)
81
+ end
82
+
83
+ required_options.each { |value| subject.config[value] = nil }
84
+ end
85
+ end
86
+ end
87
+ end
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLoadbalancerCreate do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call KubernetesApi.k8s_nodepools_post with the expected arguments and output based on what it receives' do
15
+ it 'should call LoadBalancersApi.datacenters_loadbalancers_post with the expected arguments and output based on what it receives' do
16
16
  load_balancer = load_balancer_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -43,7 +43,7 @@ describe Chef::Knife::IonoscloudLoadbalancerCreate do
43
43
  {
44
44
  method: 'POST',
45
45
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers",
46
- operation: :'LoadBalancerApi.datacenters_loadbalancers_post',
46
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_post',
47
47
  return_type: 'Loadbalancer',
48
48
  body: { properties: load_balancer.properties.to_hash, entities: expected_entities },
49
49
  result: load_balancer,
@@ -51,7 +51,7 @@ describe Chef::Knife::IonoscloudLoadbalancerCreate do
51
51
  {
52
52
  method: 'GET',
53
53
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}",
54
- operation: :'LoadBalancerApi.datacenters_loadbalancers_find_by_id',
54
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
55
55
  return_type: 'Loadbalancer',
56
56
  result: load_balancer,
57
57
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLoadbalancerDelete do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call LoadBalancerApi.datacenters_loadbalancers_delete when the ID is valid' do
15
+ it 'should call LoadBalancersApi.datacenters_loadbalancers_delete when the ID is valid' do
16
16
  load_balancer = load_balancer_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -41,14 +41,14 @@ describe Chef::Knife::IonoscloudLoadbalancerDelete do
41
41
  {
42
42
  method: 'GET',
43
43
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}",
44
- operation: :'LoadBalancerApi.datacenters_loadbalancers_find_by_id',
44
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
45
45
  return_type: 'Loadbalancer',
46
46
  result: load_balancer,
47
47
  },
48
48
  {
49
49
  method: 'DELETE',
50
50
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}",
51
- operation: :'LoadBalancerApi.datacenters_loadbalancers_delete',
51
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_delete',
52
52
  },
53
53
  ],
54
54
  )
@@ -56,7 +56,7 @@ describe Chef::Knife::IonoscloudLoadbalancerDelete do
56
56
  expect { subject.run }.not_to raise_error(Exception)
57
57
  end
58
58
 
59
- it 'should not call LoadBalancerApi.datacenters_loadbalancers_delete when the ID is not valid' do
59
+ it 'should not call LoadBalancersApi.datacenters_loadbalancers_delete when the ID is not valid' do
60
60
  load_balancer_id = 'invalid_id'
61
61
  subject_config = {
62
62
  ionoscloud_username: 'email',
@@ -76,7 +76,7 @@ describe Chef::Knife::IonoscloudLoadbalancerDelete do
76
76
  {
77
77
  method: 'GET',
78
78
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer_id}",
79
- operation: :'LoadBalancerApi.datacenters_loadbalancers_find_by_id',
79
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
80
80
  return_type: 'Loadbalancer',
81
81
  exception: Ionoscloud::ApiError.new(code: 404),
82
82
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLoadbalancerGet do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call LoadBalancerApi.datacenters_loadbalancers_get' do
15
+ it 'should call LoadBalancersApi.datacenters_loadbalancers_get' do
16
16
  load_balancer = load_balancer_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -37,7 +37,7 @@ describe Chef::Knife::IonoscloudLoadbalancerGet do
37
37
  {
38
38
  method: 'GET',
39
39
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{subject_config[:loadbalancer_id]}",
40
- operation: :'LoadBalancerApi.datacenters_loadbalancers_find_by_id',
40
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
41
41
  return_type: 'Loadbalancer',
42
42
  result: load_balancer,
43
43
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLoadbalancerList do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call LoadBalancerApi.datacenters_loadbalancers_get' do
15
+ it 'should call LoadBalancersApi.datacenters_loadbalancers_get' do
16
16
  load_balancers = load_balancers_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -43,7 +43,7 @@ describe Chef::Knife::IonoscloudLoadbalancerList do
43
43
  {
44
44
  method: 'GET',
45
45
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers",
46
- operation: :'LoadBalancerApi.datacenters_loadbalancers_get',
46
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_get',
47
47
  return_type: 'Loadbalancers',
48
48
  result: load_balancers,
49
49
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLoadbalancerNicAdd do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call LoadBalancerApi.datacenters_loadbalancers_delete when the ID is valid' do
15
+ it 'should call LoadBalancersApi.datacenters_loadbalancers_delete when the ID is valid' do
16
16
  load_balancer = load_balancer_mock
17
17
  nic = nic_mock
18
18
  subject_config = {
@@ -43,14 +43,14 @@ describe Chef::Knife::IonoscloudLoadbalancerNicAdd do
43
43
  {
44
44
  method: 'POST',
45
45
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}/balancednics",
46
- operation: :'LoadBalancerApi.datacenters_loadbalancers_balancednics_post',
46
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_balancednics_post',
47
47
  body: { id: nic.id },
48
48
  return_type: 'Nic',
49
49
  },
50
50
  {
51
51
  method: 'GET',
52
52
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}",
53
- operation: :'LoadBalancerApi.datacenters_loadbalancers_find_by_id',
53
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
54
54
  return_type: 'Loadbalancer',
55
55
  result: load_balancer,
56
56
  },
@@ -60,7 +60,7 @@ describe Chef::Knife::IonoscloudLoadbalancerNicAdd do
60
60
  expect { subject.run }.not_to raise_error(Exception)
61
61
  end
62
62
 
63
- it 'should not call LoadBalancerApi.datacenters_loadbalancers_delete when the ID is not valid' do
63
+ it 'should not call LoadBalancersApi.datacenters_loadbalancers_delete when the ID is not valid' do
64
64
  load_balancer = load_balancer_mock
65
65
  nic_id = 'invalid_id'
66
66
  subject_config = {
@@ -89,7 +89,7 @@ describe Chef::Knife::IonoscloudLoadbalancerNicAdd do
89
89
  {
90
90
  method: 'POST',
91
91
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{subject_config[:loadbalancer_id]}/balancednics",
92
- operation: :'LoadBalancerApi.datacenters_loadbalancers_balancednics_post',
92
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_balancednics_post',
93
93
  body: { id: nic_id },
94
94
  return_type: 'Nic',
95
95
  exception: Ionoscloud::ApiError.new(code: 404),
@@ -97,7 +97,7 @@ describe Chef::Knife::IonoscloudLoadbalancerNicAdd do
97
97
  {
98
98
  method: 'GET',
99
99
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}",
100
- operation: :'LoadBalancerApi.datacenters_loadbalancers_find_by_id',
100
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
101
101
  return_type: 'Loadbalancer',
102
102
  result: load_balancer,
103
103
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLoadbalancerNicRemove do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call LoadBalancerApi.datacenters_loadbalancers_delete when the ID is valid' do
15
+ it 'should call LoadBalancersApi.datacenters_loadbalancers_delete when the ID is valid' do
16
16
  load_balancer = load_balancer_mock
17
17
  nic = nic_mock
18
18
  subject_config = {
@@ -43,12 +43,12 @@ describe Chef::Knife::IonoscloudLoadbalancerNicRemove do
43
43
  {
44
44
  method: 'DELETE',
45
45
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}/balancednics/#{nic.id}",
46
- operation: :'LoadBalancerApi.datacenters_loadbalancers_balancednics_delete',
46
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_balancednics_delete',
47
47
  },
48
48
  {
49
49
  method: 'GET',
50
50
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}",
51
- operation: :'LoadBalancerApi.datacenters_loadbalancers_find_by_id',
51
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
52
52
  return_type: 'Loadbalancer',
53
53
  result: load_balancer,
54
54
  },
@@ -58,7 +58,7 @@ describe Chef::Knife::IonoscloudLoadbalancerNicRemove do
58
58
  expect { subject.run }.not_to raise_error(Exception)
59
59
  end
60
60
 
61
- it 'should not call LoadBalancerApi.datacenters_loadbalancers_delete when the ID is not valid' do
61
+ it 'should not call LoadBalancersApi.datacenters_loadbalancers_delete when the ID is not valid' do
62
62
  load_balancer = load_balancer_mock
63
63
  nic_id = 'invalid_id'
64
64
  subject_config = {
@@ -87,13 +87,13 @@ describe Chef::Knife::IonoscloudLoadbalancerNicRemove do
87
87
  {
88
88
  method: 'DELETE',
89
89
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{subject_config[:loadbalancer_id]}/balancednics/#{nic_id}",
90
- operation: :'LoadBalancerApi.datacenters_loadbalancers_balancednics_delete',
90
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_balancednics_delete',
91
91
  exception: Ionoscloud::ApiError.new(code: 404),
92
92
  },
93
93
  {
94
94
  method: 'GET',
95
95
  path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{load_balancer.id}",
96
- operation: :'LoadBalancerApi.datacenters_loadbalancers_find_by_id',
96
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
97
97
  return_type: 'Loadbalancer',
98
98
  result: load_balancer,
99
99
  },
@@ -0,0 +1,89 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_loadbalancer_update'
3
+
4
+ Chef::Knife::IonoscloudLoadbalancerUpdate.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudLoadbalancerUpdate do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudLoadbalancerUpdate.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 LoadBalancersApi.datacenters_loadbalancers_patch' do
16
+ load_balancer = load_balancer_mock
17
+ subject_config = {
18
+ ionoscloud_username: 'email',
19
+ ionoscloud_password: 'password',
20
+ datacenter_id: 'datacenter_id',
21
+ loadbalancer_id: load_balancer.id,
22
+ name: load_balancer.properties.name + '_edited',
23
+ dhcp: (!load_balancer.properties.dhcp).to_s,
24
+ ip: '3.3.3.3',
25
+ yes: true,
26
+ }
27
+
28
+ subject_config.each { |key, value| subject.config[key] = value }
29
+
30
+ nics = load_balancer.entities.balancednics.items.map { |nic| nic.id }
31
+
32
+ expect(subject).to receive(:puts).with("ID: #{load_balancer.id}")
33
+ expect(subject).to receive(:puts).with("Name: #{subject_config[:name]}")
34
+ expect(subject).to receive(:puts).with("IP address: #{subject_config[:ip]}")
35
+ expect(subject).to receive(:puts).with("DHCP: #{subject_config[:dhcp]}")
36
+ expect(subject).to receive(:puts).with("Balanced Nics: #{nics.to_s}")
37
+
38
+ load_balancer.properties.name = subject_config[:name]
39
+ load_balancer.properties.dhcp = subject_config[:dhcp].to_s.downcase == 'true'
40
+ load_balancer.properties.ip = subject_config[:ip]
41
+
42
+ mock_wait_for(subject)
43
+ mock_call_api(
44
+ subject,
45
+ [
46
+ {
47
+ method: 'PATCH',
48
+ path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{subject_config[:loadbalancer_id]}",
49
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_patch',
50
+ return_type: 'Loadbalancer',
51
+ body: {
52
+ name: subject_config[:name],
53
+ dhcp: subject_config[:dhcp].to_s.downcase == 'true',
54
+ ip: subject_config[:ip],
55
+ },
56
+ result: load_balancer,
57
+ },
58
+ {
59
+ method: 'GET',
60
+ path: "/datacenters/#{subject_config[:datacenter_id]}/loadbalancers/#{subject_config[:loadbalancer_id]}",
61
+ operation: :'LoadBalancersApi.datacenters_loadbalancers_find_by_id',
62
+ return_type: 'Loadbalancer',
63
+ result: load_balancer,
64
+ },
65
+ ],
66
+ )
67
+
68
+ expect { subject.run }.not_to raise_error(Exception)
69
+ end
70
+
71
+ it 'should not make any call if any required option is missing' do
72
+ required_options = subject.instance_variable_get(:@required_options)
73
+
74
+ arrays_without_one_element(required_options).each do |test_case|
75
+
76
+ test_case[:array].each { |value| subject.config[value] = 'test' }
77
+
78
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
79
+ expect(subject.api_client).not_to receive(:call_api)
80
+
81
+ expect { subject.run }.to raise_error(SystemExit) do |error|
82
+ expect(error.status).to eq(1)
83
+ end
84
+
85
+ required_options.each { |value| subject.config[value] = nil }
86
+ end
87
+ end
88
+ end
89
+ end
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudLocationList do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call LocationApi.locations_get' do
15
+ it 'should call LocationsApi.locations_get' do
16
16
  locations = locations_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -24,11 +24,13 @@ describe Chef::Knife::IonoscloudLocationList do
24
24
  location_list = [
25
25
  subject.ui.color('ID', :bold),
26
26
  subject.ui.color('Name', :bold),
27
+ subject.ui.color('CPU Architectures', :bold),
27
28
  locations.items.first.id,
28
29
  locations.items.first.properties.name,
30
+ locations.items.first.properties.cpu_architecture.map { |arch| arch.cpu_family }
29
31
  ]
30
32
 
31
- expect(subject.ui).to receive(:list).with(location_list, :uneven_columns_across, 2)
33
+ expect(subject.ui).to receive(:list).with(location_list, :uneven_columns_across, 3)
32
34
 
33
35
  mock_call_api(
34
36
  subject,
@@ -36,7 +38,7 @@ describe Chef::Knife::IonoscloudLocationList do
36
38
  {
37
39
  method: 'GET',
38
40
  path: '/locations',
39
- operation: :'LocationApi.locations_get',
41
+ operation: :'LocationsApi.locations_get',
40
42
  return_type: 'Locations',
41
43
  result: locations,
42
44
  },
@@ -0,0 +1,92 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_natgateway_create'
3
+
4
+ Chef::Knife::IonoscloudNatgatewayCreate.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudNatgatewayCreate do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudNatgatewayCreate.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 NATGatewaysApi.datacenters_natgateways_post with the expected arguments and output based on what it receives' do
16
+ natgateway = natgateway_mock
17
+ subject_config = {
18
+ ionoscloud_username: 'email',
19
+ ionoscloud_password: 'password',
20
+ datacenter_id: 'datacenter_id',
21
+ name: natgateway.properties.name,
22
+ ips: natgateway.properties.public_ips.join(','),
23
+ }.each do |key, value|
24
+ subject.config[key] = value
25
+ end
26
+
27
+ expect(subject).to receive(:puts).with("ID: #{natgateway.id}")
28
+ expect(subject).to receive(:puts).with("Name: #{natgateway.properties.name}")
29
+ expect(subject).to receive(:puts).with("IPS: #{natgateway.properties.public_ips}")
30
+ expect(subject).to receive(:puts).with("LANS: #{natgateway.properties.lans.map { |el| { id: el.id, gateway_ips: el.gateway_ips } }}")
31
+ expect(subject).to receive(:puts).with("Rules: #{natgateway.entities.rules.items.map do |el|
32
+ {
33
+ id: el.id,
34
+ name: el.properties.name,
35
+ type: el.properties.type,
36
+ protocol: el.properties.protocol,
37
+ public_ip: el.properties.public_ip,
38
+ source_subnet: el.properties.source_subnet,
39
+ target_subnet: el.properties.target_subnet,
40
+ target_port_range_start: el.properties.target_port_range ? el.properties.target_port_range.start : '',
41
+ target_port_range_end: el.properties.target_port_range ? el.properties.target_port_range._end : '',
42
+ }
43
+ end}")
44
+ expect(subject).to receive(:puts).with("Flowlogs: #{natgateway.entities.flowlogs.items.map { |flowlog| flowlog.id }}")
45
+
46
+ expected_properties = natgateway.properties.to_hash
47
+ expected_properties.delete(:lans)
48
+
49
+ mock_wait_for(subject)
50
+ mock_call_api(
51
+ subject,
52
+ [
53
+ {
54
+ method: 'POST',
55
+ path: "/datacenters/#{subject_config[:datacenter_id]}/natgateways",
56
+ operation: :'NATGatewaysApi.datacenters_natgateways_post',
57
+ return_type: 'NatGateway',
58
+ body: { properties: expected_properties },
59
+ result: natgateway,
60
+ },
61
+ {
62
+ method: 'GET',
63
+ path: "/datacenters/#{subject_config[:datacenter_id]}/natgateways/#{natgateway.id}",
64
+ operation: :'NATGatewaysApi.datacenters_natgateways_find_by_nat_gateway_id',
65
+ return_type: 'NatGateway',
66
+ result: natgateway,
67
+ },
68
+ ],
69
+ )
70
+
71
+ expect { subject.run }.not_to raise_error(Exception)
72
+ end
73
+
74
+ it 'should not make any call if any required option is missing' do
75
+ required_options = subject.instance_variable_get(:@required_options)
76
+
77
+ arrays_without_one_element(required_options).each do |test_case|
78
+
79
+ test_case[:array].each { |value| subject.config[value] = 'test' }
80
+
81
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
82
+ expect(subject.api_client).not_to receive(:call_api)
83
+
84
+ expect { subject.run }.to raise_error(SystemExit) do |error|
85
+ expect(error.status).to eq(1)
86
+ end
87
+
88
+ required_options.each { |value| subject.config[value] = nil }
89
+ end
90
+ end
91
+ end
92
+ end