knife-ionoscloud 5.1.1 → 6.0.0.beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. checksums.yaml +4 -4
  2. data/docs/README.md +1 -1
  3. data/docs/subcommands/composite_server_create.md +9 -3
  4. data/docs/subcommands/cube_server_create.md +91 -0
  5. data/docs/subcommands/firewall_create.md +5 -2
  6. data/docs/subcommands/flowlog_create.md +63 -0
  7. data/docs/subcommands/flowlog_delete.md +51 -0
  8. data/docs/subcommands/flowlog_list.md +51 -0
  9. data/docs/subcommands/group_create.md +10 -1
  10. data/docs/subcommands/natgateway_create.md +41 -0
  11. data/docs/subcommands/natgateway_delete.md +35 -0
  12. data/docs/subcommands/natgateway_lan_add.md +46 -0
  13. data/docs/subcommands/natgateway_lan_remove.md +39 -0
  14. data/docs/subcommands/natgateway_list.md +35 -0
  15. data/docs/subcommands/natgateway_rule_add.md +66 -0
  16. data/docs/subcommands/natgateway_rule_list.md +38 -0
  17. data/docs/subcommands/natgateway_rule_remove.md +39 -0
  18. data/docs/subcommands/networkloadbalancer_create.md +54 -0
  19. data/docs/subcommands/networkloadbalancer_delete.md +35 -0
  20. data/docs/subcommands/networkloadbalancer_list.md +35 -0
  21. data/docs/subcommands/networkloadbalancer_rule_add.md +72 -0
  22. data/docs/subcommands/networkloadbalancer_rule_list.md +39 -0
  23. data/docs/subcommands/networkloadbalancer_rule_remove.md +39 -0
  24. data/docs/subcommands/networkloadbalancer_rule_target_add.md +64 -0
  25. data/docs/subcommands/networkloadbalancer_rule_target_list.md +43 -0
  26. data/docs/subcommands/networkloadbalancer_rule_target_remove.md +51 -0
  27. data/docs/subcommands/nic_create.md +3 -3
  28. data/docs/subcommands/nodepool_lan_add.md +49 -0
  29. data/docs/subcommands/nodepool_lan_remove.md +39 -0
  30. data/docs/subcommands/server_console.md +39 -0
  31. data/docs/subcommands/server_list.md +4 -1
  32. data/docs/subcommands/server_resume.md +35 -0
  33. data/docs/subcommands/server_suspend.md +35 -0
  34. data/docs/subcommands/server_token.md +39 -0
  35. data/docs/subcommands/server_upgrade.md +39 -0
  36. data/docs/subcommands/template_list.md +31 -0
  37. data/docs/subcommands/volume_create.md +2 -5
  38. data/docs/summary.md +29 -0
  39. data/knife-ionoscloud.gemspec +1 -1
  40. data/lib/chef/knife/ionoscloud_backupunit_create.rb +12 -16
  41. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +2 -5
  42. data/lib/chef/knife/ionoscloud_backupunit_get.rb +33 -0
  43. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -1
  44. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +1 -1
  45. data/lib/chef/knife/ionoscloud_backupunit_update.rb +62 -0
  46. data/lib/chef/knife/ionoscloud_base.rb +309 -1
  47. data/lib/chef/knife/ionoscloud_composite_server_create.rb +23 -5
  48. data/lib/chef/knife/ionoscloud_contract_list.rb +32 -23
  49. data/lib/chef/knife/ionoscloud_cube_server_create.rb +212 -0
  50. data/lib/chef/knife/ionoscloud_datacenter_create.rb +11 -14
  51. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +2 -7
  52. data/lib/chef/knife/ionoscloud_datacenter_get.rb +33 -0
  53. data/lib/chef/knife/ionoscloud_datacenter_list.rb +4 -2
  54. data/lib/chef/knife/ionoscloud_datacenter_update.rb +67 -0
  55. data/lib/chef/knife/ionoscloud_firewall_create.rb +16 -21
  56. data/lib/chef/knife/ionoscloud_firewall_delete.rb +5 -13
  57. data/lib/chef/knife/ionoscloud_firewall_get.rb +52 -0
  58. data/lib/chef/knife/ionoscloud_firewall_list.rb +5 -3
  59. data/lib/chef/knife/ionoscloud_firewall_update.rb +133 -0
  60. data/lib/chef/knife/ionoscloud_flowlog_create.rb +116 -0
  61. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +103 -0
  62. data/lib/chef/knife/ionoscloud_flowlog_get.rb +84 -0
  63. data/lib/chef/knife/ionoscloud_flowlog_list.rb +101 -0
  64. data/lib/chef/knife/ionoscloud_flowlog_update.rb +127 -0
  65. data/lib/chef/knife/ionoscloud_group_create.rb +33 -27
  66. data/lib/chef/knife/ionoscloud_group_delete.rb +1 -11
  67. data/lib/chef/knife/ionoscloud_group_get.rb +1 -13
  68. data/lib/chef/knife/ionoscloud_group_list.rb +19 -7
  69. data/lib/chef/knife/ionoscloud_group_update.rb +131 -0
  70. data/lib/chef/knife/ionoscloud_group_user_add.rb +1 -18
  71. data/lib/chef/knife/ionoscloud_group_user_remove.rb +1 -18
  72. data/lib/chef/knife/ionoscloud_image_list.rb +1 -1
  73. data/lib/chef/knife/ionoscloud_ipblock_create.rb +10 -13
  74. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +1 -4
  75. data/lib/chef/knife/ionoscloud_ipblock_get.rb +33 -0
  76. data/lib/chef/knife/ionoscloud_ipblock_update.rb +57 -0
  77. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +1 -1
  78. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +1 -1
  79. data/lib/chef/knife/ionoscloud_k8s_create.rb +27 -35
  80. data/lib/chef/knife/ionoscloud_k8s_delete.rb +1 -9
  81. data/lib/chef/knife/ionoscloud_k8s_get.rb +33 -0
  82. data/lib/chef/knife/ionoscloud_k8s_update.rb +99 -0
  83. data/lib/chef/knife/ionoscloud_label_add.rb +1 -1
  84. data/lib/chef/knife/ionoscloud_label_list.rb +1 -1
  85. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -1
  86. data/lib/chef/knife/ionoscloud_lan_create.rb +6 -14
  87. data/lib/chef/knife/ionoscloud_lan_delete.rb +3 -4
  88. data/lib/chef/knife/ionoscloud_lan_get.rb +38 -0
  89. data/lib/chef/knife/ionoscloud_lan_list.rb +2 -1
  90. data/lib/chef/knife/ionoscloud_lan_update.rb +76 -0
  91. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +4 -14
  92. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +2 -9
  93. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +3 -13
  94. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -1
  95. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +3 -15
  96. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +3 -16
  97. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +73 -0
  98. data/lib/chef/knife/ionoscloud_location_list.rb +5 -3
  99. data/lib/chef/knife/ionoscloud_natgateway_create.rb +60 -0
  100. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +54 -0
  101. data/lib/chef/knife/ionoscloud_natgateway_get.rb +42 -0
  102. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +74 -0
  103. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +52 -0
  104. data/lib/chef/knife/ionoscloud_natgateway_list.rb +51 -0
  105. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +107 -0
  106. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +65 -0
  107. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +55 -0
  108. data/lib/chef/knife/ionoscloud_natgateway_rule_update.rb +116 -0
  109. data/lib/chef/knife/ionoscloud_natgateway_update.rb +84 -0
  110. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +89 -0
  111. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +62 -0
  112. data/lib/chef/knife/ionoscloud_networkloadbalancer_get.rb +42 -0
  113. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +57 -0
  114. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +141 -0
  115. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +65 -0
  116. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +68 -0
  117. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +124 -0
  118. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +70 -0
  119. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +88 -0
  120. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_update.rb +148 -0
  121. data/lib/chef/knife/ionoscloud_networkloadbalancer_update.rb +98 -0
  122. data/lib/chef/knife/ionoscloud_nic_create.rb +17 -22
  123. data/lib/chef/knife/ionoscloud_nic_delete.rb +3 -7
  124. data/lib/chef/knife/ionoscloud_nic_get.rb +49 -0
  125. data/lib/chef/knife/ionoscloud_nic_list.rb +9 -5
  126. data/lib/chef/knife/ionoscloud_nic_update.rb +96 -0
  127. data/lib/chef/knife/ionoscloud_node_get.rb +49 -0
  128. data/lib/chef/knife/ionoscloud_node_list.rb +0 -1
  129. data/lib/chef/knife/ionoscloud_nodepool_create.rb +35 -48
  130. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +1 -7
  131. data/lib/chef/knife/ionoscloud_nodepool_get.rb +43 -0
  132. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +104 -0
  133. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +72 -0
  134. data/lib/chef/knife/ionoscloud_nodepool_list.rb +3 -1
  135. data/lib/chef/knife/ionoscloud_nodepool_update.rb +124 -0
  136. data/lib/chef/knife/ionoscloud_pcc_create.rb +12 -18
  137. data/lib/chef/knife/ionoscloud_pcc_delete.rb +2 -10
  138. data/lib/chef/knife/ionoscloud_pcc_get.rb +33 -0
  139. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -1
  140. data/lib/chef/knife/ionoscloud_pcc_update.rb +63 -0
  141. data/lib/chef/knife/ionoscloud_request_get.rb +40 -0
  142. data/lib/chef/knife/ionoscloud_request_list.rb +1 -1
  143. data/lib/chef/knife/ionoscloud_request_status.rb +1 -1
  144. data/lib/chef/knife/ionoscloud_s3key_create.rb +3 -7
  145. data/lib/chef/knife/ionoscloud_s3key_delete.rb +4 -7
  146. data/lib/chef/knife/ionoscloud_s3key_get.rb +38 -0
  147. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -2
  148. data/lib/chef/knife/ionoscloud_server_console.rb +43 -0
  149. data/lib/chef/knife/ionoscloud_server_create.rb +14 -26
  150. data/lib/chef/knife/ionoscloud_server_delete.rb +3 -9
  151. data/lib/chef/knife/ionoscloud_server_get.rb +43 -0
  152. data/lib/chef/knife/ionoscloud_server_list.rb +16 -5
  153. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -1
  154. data/lib/chef/knife/ionoscloud_server_resume.rb +44 -0
  155. data/lib/chef/knife/ionoscloud_server_start.rb +1 -1
  156. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -1
  157. data/lib/chef/knife/ionoscloud_server_suspend.rb +45 -0
  158. data/lib/chef/knife/ionoscloud_server_token.rb +43 -0
  159. data/lib/chef/knife/ionoscloud_server_update.rb +97 -0
  160. data/lib/chef/knife/ionoscloud_server_upgrade.rb +45 -0
  161. data/lib/chef/knife/ionoscloud_share_create.rb +7 -11
  162. data/lib/chef/knife/ionoscloud_share_delete.rb +2 -3
  163. data/lib/chef/knife/ionoscloud_share_get.rb +38 -0
  164. data/lib/chef/knife/ionoscloud_share_update.rb +70 -0
  165. data/lib/chef/knife/ionoscloud_snapshot_create.rb +2 -10
  166. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +2 -7
  167. data/lib/chef/knife/ionoscloud_snapshot_get.rb +32 -0
  168. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -1
  169. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +3 -14
  170. data/lib/chef/knife/ionoscloud_snapshot_update.rb +126 -0
  171. data/lib/chef/knife/ionoscloud_template_list.rb +47 -0
  172. data/lib/chef/knife/ionoscloud_user_create.rb +1 -8
  173. data/lib/chef/knife/ionoscloud_user_delete.rb +1 -6
  174. data/lib/chef/knife/ionoscloud_user_get.rb +32 -0
  175. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -1
  176. data/lib/chef/knife/ionoscloud_user_update.rb +92 -0
  177. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -1
  178. data/lib/chef/knife/ionoscloud_volume_create.rb +18 -34
  179. data/lib/chef/knife/ionoscloud_volume_delete.rb +3 -9
  180. data/lib/chef/knife/ionoscloud_volume_detach.rb +1 -1
  181. data/lib/chef/knife/ionoscloud_volume_get.rb +36 -0
  182. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -2
  183. data/lib/chef/knife/ionoscloud_volume_update.rb +106 -0
  184. data/lib/knife-ionoscloud/version.rb +1 -1
  185. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  186. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  187. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +65 -0
  188. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  189. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  190. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +78 -0
  191. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  192. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  193. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  194. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  195. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +6 -2
  196. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +8 -5
  197. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +69 -0
  198. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +5 -3
  199. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +82 -0
  200. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  201. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  202. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +77 -0
  203. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  204. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +117 -0
  205. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  206. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  207. data/spec/chef/knife/ionoscloud_flowlog_get_spec.rb +171 -0
  208. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  209. data/spec/chef/knife/ionoscloud_flowlog_update_spec.rb +244 -0
  210. data/spec/chef/knife/ionoscloud_group_create_spec.rb +9 -0
  211. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +6 -0
  212. data/spec/chef/knife/ionoscloud_group_get_spec.rb +6 -0
  213. data/spec/chef/knife/ionoscloud_group_list_spec.rb +26 -8
  214. data/spec/chef/knife/ionoscloud_group_update_spec.rb +121 -0
  215. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +6 -0
  216. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +6 -0
  217. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  218. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +66 -0
  219. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +79 -0
  220. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +4 -4
  221. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +7 -7
  222. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +7 -0
  223. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +16 -11
  224. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +72 -0
  225. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +114 -0
  226. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  227. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  228. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  229. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  230. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +4 -3
  231. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +7 -5
  232. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +68 -0
  233. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +2 -2
  234. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +87 -0
  235. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  236. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  237. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  238. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  239. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  240. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  241. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +89 -0
  242. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  243. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +92 -0
  244. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  245. data/spec/chef/knife/ionoscloud_natgateway_get_spec.rb +81 -0
  246. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +158 -0
  247. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +209 -0
  248. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  249. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +99 -0
  250. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  251. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +78 -0
  252. data/spec/chef/knife/ionoscloud_natgateway_rule_update_spec.rb +121 -0
  253. data/spec/chef/knife/ionoscloud_natgateway_update_spec.rb +121 -0
  254. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +93 -0
  255. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +120 -0
  256. data/spec/chef/knife/ionoscloud_networkloadbalancer_get_spec.rb +82 -0
  257. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  258. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +105 -0
  259. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  260. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +150 -0
  261. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +113 -0
  262. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  263. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +281 -0
  264. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_update_spec.rb +163 -0
  265. data/spec/chef/knife/ionoscloud_networkloadbalancer_update_spec.rb +107 -0
  266. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  267. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  268. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +72 -0
  269. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  270. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +97 -0
  271. data/spec/chef/knife/ionoscloud_node_get_spec.rb +70 -0
  272. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +10 -5
  273. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +14 -0
  274. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +83 -0
  275. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +222 -0
  276. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +196 -0
  277. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  278. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +134 -0
  279. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +11 -8
  280. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +7 -7
  281. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +71 -0
  282. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  283. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +83 -0
  284. data/spec/chef/knife/ionoscloud_request_get_spec.rb +69 -0
  285. data/spec/chef/knife/ionoscloud_request_list_spec.rb +16 -16
  286. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  287. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  288. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  289. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +66 -0
  290. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  291. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  292. data/spec/chef/knife/ionoscloud_server_create_spec.rb +6 -3
  293. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +8 -5
  294. data/spec/chef/knife/ionoscloud_server_get_spec.rb +74 -0
  295. data/spec/chef/knife/ionoscloud_server_list_spec.rb +63 -5
  296. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  297. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  298. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  299. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  300. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  301. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  302. data/spec/chef/knife/ionoscloud_server_update_spec.rb +105 -0
  303. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  304. data/spec/chef/knife/ionoscloud_share_get_spec.rb +66 -0
  305. data/spec/chef/knife/ionoscloud_share_update_spec.rb +91 -0
  306. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +15 -3
  307. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +17 -5
  308. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +79 -0
  309. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  310. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +12 -3
  311. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +113 -0
  312. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  313. data/spec/chef/knife/ionoscloud_user_create_spec.rb +3 -1
  314. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +4 -2
  315. data/spec/chef/knife/ionoscloud_user_get_spec.rb +70 -0
  316. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  317. data/spec/chef/knife/ionoscloud_user_update_spec.rb +110 -0
  318. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  319. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +21 -11
  320. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +15 -5
  321. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -5
  322. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +81 -0
  323. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  324. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +116 -0
  325. data/spec/spec_helper.rb +251 -39
  326. metadata +245 -6
@@ -0,0 +1,97 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_server_console'
3
+
4
+ Chef::Knife::IonoscloudServerConsole.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudServerConsole do
7
+ subject { Chef::Knife::IonoscloudServerConsole.new }
8
+
9
+ describe '#run' do
10
+ it 'should call ServersApi.datacenters_servers_remote_console_get and output the received url when the server ID is valid' do
11
+ datacenter = datacenter_mock
12
+ server = server_mock
13
+ console = console_mock
14
+ subject_config = {
15
+ ionoscloud_username: 'email',
16
+ ionoscloud_password: 'password',
17
+ datacenter_id: datacenter.id,
18
+ server_id: server.id,
19
+ }
20
+
21
+ subject_config.each { |key, value| subject.config[key] = value }
22
+
23
+ expect(subject).to receive(:puts).with(console.url)
24
+
25
+ expect(subject.api_client).not_to receive(:wait_for)
26
+ mock_call_api(
27
+ subject,
28
+ [
29
+ {
30
+ method: 'GET',
31
+ path: "/datacenters/#{datacenter.id}/servers/#{server.id}/remoteconsole",
32
+ operation: :'ServersApi.datacenters_servers_remote_console_get',
33
+ return_type: 'RemoteConsoleUrl',
34
+ result: console,
35
+ },
36
+ ],
37
+ )
38
+
39
+ expect { subject.run }.not_to raise_error(Exception)
40
+ end
41
+
42
+ it 'should output an error when the server is not found' do
43
+ datacenter = datacenter_mock
44
+ server_id = 'invalid_id'
45
+ subject_config = {
46
+ ionoscloud_username: 'email',
47
+ ionoscloud_password: 'password',
48
+ datacenter_id: datacenter.id,
49
+ server_id: server_id,
50
+ }
51
+
52
+ subject_config.each { |key, value| subject.config[key] = value }
53
+
54
+ allow(subject).to receive(:puts)
55
+ allow(subject).to receive(:print)
56
+
57
+ expect(subject.ui).to receive(:error).with("Server ID #{server_id} not found.")
58
+
59
+ expect(subject.api_client).not_to receive(:wait_for)
60
+ mock_call_api(
61
+ subject,
62
+ [
63
+ {
64
+ method: 'GET',
65
+ path: "/datacenters/#{datacenter.id}/servers/#{server_id}/remoteconsole",
66
+ operation: :'ServersApi.datacenters_servers_remote_console_get',
67
+ return_type: 'RemoteConsoleUrl',
68
+ exception: Ionoscloud::ApiError.new(code: 404),
69
+ },
70
+ ],
71
+ )
72
+
73
+ expect { subject.run }.not_to raise_error(Exception)
74
+ end
75
+
76
+ it 'should not make any call if any required option is missing' do
77
+ required_options = subject.instance_variable_get(:@required_options)
78
+ allow(subject).to receive(:puts)
79
+ allow(subject).to receive(:print)
80
+
81
+ arrays_without_one_element(required_options).each {
82
+ |test_case|
83
+
84
+ test_case[:array].each { |value| subject.config[value] = 'test' }
85
+
86
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
87
+ expect(subject.api_client).not_to receive(:call_api)
88
+
89
+ expect { subject.run }.to raise_error(SystemExit) do |error|
90
+ expect(error.status).to eq(1)
91
+ end
92
+
93
+ required_options.each { |value| subject.config[value] = nil }
94
+ }
95
+ end
96
+ end
97
+ end
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudServerCreate do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call ServerApi.datacenters_servers_post with the expected arguments and output based on what it receives' do
15
+ it 'should call ServersApi.datacenters_servers_post with the expected arguments and output based on what it receives' do
16
16
  server = server_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -31,10 +31,13 @@ describe Chef::Knife::IonoscloudServerCreate do
31
31
 
32
32
  expect(subject).to receive(:puts).with("ID: #{server.id}")
33
33
  expect(subject).to receive(:puts).with("Name: #{server.properties.name}")
34
+ expect(subject).to receive(:puts).with("Type: #{server.properties.type}")
35
+ expect(subject).to receive(:puts).with("Template: #{server.properties.template_uuid}")
34
36
  expect(subject).to receive(:puts).with("Cores: #{server.properties.cores}")
35
37
  expect(subject).to receive(:puts).with("CPU Family: #{server.properties.cpu_family}")
36
38
  expect(subject).to receive(:puts).with("Ram: #{server.properties.ram}")
37
39
  expect(subject).to receive(:puts).with("Availability Zone: #{server.properties.availability_zone}")
40
+ expect(subject).to receive(:puts).with("VM State: #{server.properties.vm_state}")
38
41
  expect(subject).to receive(:puts).with("Boot Volume: #{server.properties.boot_volume.id}")
39
42
  expect(subject).to receive(:puts).with("Boot CDROM: #{server.properties.boot_cdrom.id}")
40
43
 
@@ -45,7 +48,7 @@ describe Chef::Knife::IonoscloudServerCreate do
45
48
  {
46
49
  method: 'POST',
47
50
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers",
48
- operation: :'ServerApi.datacenters_servers_post',
51
+ operation: :'ServersApi.datacenters_servers_post',
49
52
  return_type: 'Server',
50
53
  body: { properties: server.properties.to_hash },
51
54
  result: server,
@@ -53,7 +56,7 @@ describe Chef::Knife::IonoscloudServerCreate do
53
56
  {
54
57
  method: 'GET',
55
58
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}",
56
- operation: :'ServerApi.datacenters_servers_find_by_id',
59
+ operation: :'ServersApi.datacenters_servers_find_by_id',
57
60
  return_type: 'Server',
58
61
  result: server,
59
62
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudServerDelete do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call ServerApi.datacenters_servers_delete when the ID is valid' do
15
+ it 'should call ServersApi.datacenters_servers_delete when the ID is valid' do
16
16
  server = server_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -26,10 +26,13 @@ describe Chef::Knife::IonoscloudServerDelete do
26
26
 
27
27
  expect(subject).to receive(:puts).with("ID: #{server.id}")
28
28
  expect(subject).to receive(:puts).with("Name: #{server.properties.name}")
29
+ expect(subject).to receive(:puts).with("Type: #{server.properties.type}")
30
+ expect(subject).to receive(:puts).with("Template: #{server.properties.template_uuid}")
29
31
  expect(subject).to receive(:puts).with("Cores: #{server.properties.cores}")
30
32
  expect(subject).to receive(:puts).with("CPU Family: #{server.properties.cpu_family}")
31
33
  expect(subject).to receive(:puts).with("Ram: #{server.properties.ram}")
32
34
  expect(subject).to receive(:puts).with("Availability Zone: #{server.properties.availability_zone}")
35
+ expect(subject).to receive(:puts).with("VM State: #{server.properties.vm_state}")
33
36
  expect(subject).to receive(:puts).with("Boot Volume: #{server.properties.boot_volume.id}")
34
37
  expect(subject).to receive(:puts).with("Boot CDROM: #{server.properties.boot_cdrom.id}")
35
38
  expect(subject.ui).to receive(:warn).with("Deleted Server #{server.id}. Request ID: ")
@@ -42,14 +45,14 @@ describe Chef::Knife::IonoscloudServerDelete do
42
45
  {
43
46
  method: 'GET',
44
47
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}",
45
- operation: :'ServerApi.datacenters_servers_find_by_id',
48
+ operation: :'ServersApi.datacenters_servers_find_by_id',
46
49
  return_type: 'Server',
47
50
  result: server,
48
51
  },
49
52
  {
50
53
  method: 'DELETE',
51
54
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}",
52
- operation: :'ServerApi.datacenters_servers_delete',
55
+ operation: :'ServersApi.datacenters_servers_delete',
53
56
  },
54
57
  ],
55
58
  )
@@ -57,7 +60,7 @@ describe Chef::Knife::IonoscloudServerDelete do
57
60
  expect { subject.run }.not_to raise_error(Exception)
58
61
  end
59
62
 
60
- it 'should not call ServerApi.datacenters_servers_delete when the user ID is not valid' do
63
+ it 'should not call ServersApi.datacenters_servers_delete when the server ID is not valid' do
61
64
  server_id = 'invalid_id'
62
65
  subject_config = {
63
66
  ionoscloud_username: 'email',
@@ -77,7 +80,7 @@ describe Chef::Knife::IonoscloudServerDelete do
77
80
  {
78
81
  method: 'GET',
79
82
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server_id}",
80
- operation: :'ServerApi.datacenters_servers_find_by_id',
83
+ operation: :'ServersApi.datacenters_servers_find_by_id',
81
84
  return_type: 'Server',
82
85
  exception: Ionoscloud::ApiError.new(code: 404),
83
86
  },
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_server_get'
3
+
4
+ Chef::Knife::IonoscloudServerGet.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudServerGet do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudServerGet.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 ServersApi.datacenters_servers_find_by_id' do
16
+ server = server_mock
17
+ subject_config = {
18
+ ionoscloud_username: 'email',
19
+ ionoscloud_password: 'password',
20
+ datacenter_id: 'datacenter_id',
21
+ server_id: server.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: #{server.id}")
28
+ expect(subject).to receive(:puts).with("Name: #{server.properties.name}")
29
+ expect(subject).to receive(:puts).with("Type: #{server.properties.type}")
30
+ expect(subject).to receive(:puts).with("Template: #{server.properties.template_uuid}")
31
+ expect(subject).to receive(:puts).with("Cores: #{server.properties.cores}")
32
+ expect(subject).to receive(:puts).with("CPU Family: #{server.properties.cpu_family}")
33
+ expect(subject).to receive(:puts).with("Ram: #{server.properties.ram}")
34
+ expect(subject).to receive(:puts).with("Availability Zone: #{server.properties.availability_zone}")
35
+ expect(subject).to receive(:puts).with("VM State: #{server.properties.vm_state}")
36
+ expect(subject).to receive(:puts).with("Boot Volume: #{server.properties.boot_volume.id}")
37
+ expect(subject).to receive(:puts).with("Boot CDROM: #{server.properties.boot_cdrom.id}")
38
+
39
+ expect(subject.api_client).not_to receive(:wait_for)
40
+ mock_call_api(
41
+ subject,
42
+ [
43
+ {
44
+ method: 'GET',
45
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}",
46
+ operation: :'ServersApi.datacenters_servers_find_by_id',
47
+ return_type: 'Server',
48
+ result: server,
49
+ },
50
+ ],
51
+ )
52
+
53
+ expect { subject.run }.not_to raise_error(Exception)
54
+ end
55
+
56
+ it 'should not make any call if any required option is missing' do
57
+ required_options = subject.instance_variable_get(:@required_options)
58
+
59
+ arrays_without_one_element(required_options).each do |test_case|
60
+
61
+ test_case[:array].each { |value| subject.config[value] = 'test' }
62
+
63
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
64
+ expect(subject.api_client).not_to receive(:call_api)
65
+
66
+ expect { subject.run }.to raise_error(SystemExit) do |error|
67
+ expect(error.status).to eq(1)
68
+ end
69
+
70
+ required_options.each { |value| subject.config[value] = nil }
71
+ end
72
+ end
73
+ end
74
+ end
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudServerList do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call ServerApi.datacenters_servers_get' do
15
+ it 'should call ServersApi.datacenters_servers_get' do
16
16
  servers = servers_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -25,10 +25,11 @@ describe Chef::Knife::IonoscloudServerList do
25
25
  server_list = [
26
26
  subject.ui.color('ID', :bold),
27
27
  subject.ui.color('Name', :bold),
28
+ subject.ui.color('Type', :bold),
29
+ subject.ui.color('Template', :bold),
28
30
  subject.ui.color('Cores', :bold),
29
31
  subject.ui.color('CPU Family', :bold),
30
32
  subject.ui.color('RAM', :bold),
31
- subject.ui.color('Availability Zone', :bold),
32
33
  subject.ui.color('VM State', :bold),
33
34
  subject.ui.color('Boot Volume', :bold),
34
35
  subject.ui.color('Boot CDROM', :bold),
@@ -37,16 +38,17 @@ describe Chef::Knife::IonoscloudServerList do
37
38
  servers.items.each do |server|
38
39
  server_list << server.id
39
40
  server_list << server.properties.name
41
+ server_list << server.properties.type
42
+ server_list << server.properties.template_uuid
40
43
  server_list << server.properties.cores.to_s
41
44
  server_list << server.properties.cpu_family
42
45
  server_list << server.properties.ram.to_s
43
- server_list << server.properties.availability_zone
44
46
  server_list << server.properties.vm_state
45
47
  server_list << (server.properties.boot_volume.nil? ? '' : server.properties.boot_volume.id)
46
48
  server_list << (server.properties.boot_cdrom.nil? ? '' : server.properties.boot_cdrom.id)
47
49
  end
48
50
 
49
- expect(subject.ui).to receive(:list).with(server_list, :uneven_columns_across, 9)
51
+ expect(subject.ui).to receive(:list).with(server_list, :uneven_columns_across, 10)
50
52
 
51
53
  mock_call_api(
52
54
  subject,
@@ -54,7 +56,63 @@ describe Chef::Knife::IonoscloudServerList do
54
56
  {
55
57
  method: 'GET',
56
58
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers",
57
- operation: :'ServerApi.datacenters_servers_get',
59
+ operation: :'ServersApi.datacenters_servers_get',
60
+ return_type: 'Servers',
61
+ result: servers,
62
+ },
63
+ ],
64
+ )
65
+
66
+ expect { subject.run }.not_to raise_error(Exception)
67
+ end
68
+
69
+ it 'should call ServersApi.datacenters_servers_get with upgradeNeeded option when it is received' do
70
+ servers = servers_mock
71
+ subject_config = {
72
+ ionoscloud_username: 'email',
73
+ ionoscloud_password: 'password',
74
+ datacenter_id: 'datacenter_id',
75
+ upgrade_needed: true,
76
+ }
77
+
78
+ subject_config.each { |key, value| subject.config[key] = value }
79
+
80
+ server_list = [
81
+ subject.ui.color('ID', :bold),
82
+ subject.ui.color('Name', :bold),
83
+ subject.ui.color('Type', :bold),
84
+ subject.ui.color('Template', :bold),
85
+ subject.ui.color('Cores', :bold),
86
+ subject.ui.color('CPU Family', :bold),
87
+ subject.ui.color('RAM', :bold),
88
+ subject.ui.color('VM State', :bold),
89
+ subject.ui.color('Boot Volume', :bold),
90
+ subject.ui.color('Boot CDROM', :bold),
91
+ ]
92
+
93
+ servers.items.each do |server|
94
+ server_list << server.id
95
+ server_list << server.properties.name
96
+ server_list << server.properties.type
97
+ server_list << server.properties.template_uuid
98
+ server_list << server.properties.cores.to_s
99
+ server_list << server.properties.cpu_family
100
+ server_list << server.properties.ram.to_s
101
+ server_list << server.properties.vm_state
102
+ server_list << (server.properties.boot_volume.nil? ? '' : server.properties.boot_volume.id)
103
+ server_list << (server.properties.boot_cdrom.nil? ? '' : server.properties.boot_cdrom.id)
104
+ end
105
+
106
+ expect(subject.ui).to receive(:list).with(server_list, :uneven_columns_across, 10)
107
+
108
+ mock_call_api(
109
+ subject,
110
+ [
111
+ {
112
+ method: 'GET',
113
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers",
114
+ options: { upgrade_needed: true },
115
+ operation: :'ServersApi.datacenters_servers_get',
58
116
  return_type: 'Servers',
59
117
  result: servers,
60
118
  },
@@ -34,8 +34,7 @@ describe Chef::Knife::IonoscloudServerReboot do
34
34
  {
35
35
  method: 'POST',
36
36
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}/reboot",
37
- operation: :'ServerApi.datacenters_servers_reboot_post',
38
- return_type: 'Object',
37
+ operation: :'ServersApi.datacenters_servers_reboot_post',
39
38
  result: server,
40
39
  },
41
40
  ],
@@ -44,7 +43,7 @@ describe Chef::Knife::IonoscloudServerReboot do
44
43
  expect { subject.run }.not_to raise_error(Exception)
45
44
  end
46
45
 
47
- it 'should output failure when the user ID is not valid' do
46
+ it 'should output failure when the server ID is not valid' do
48
47
  server_id = 'invalid_id'
49
48
  subject_config = {
50
49
  ionoscloud_username: 'email',
@@ -64,8 +63,7 @@ describe Chef::Knife::IonoscloudServerReboot do
64
63
  {
65
64
  method: 'POST',
66
65
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server_id}/reboot",
67
- operation: :'ServerApi.datacenters_servers_reboot_post',
68
- return_type: 'Object',
66
+ operation: :'ServersApi.datacenters_servers_reboot_post',
69
67
  exception: Ionoscloud::ApiError.new(code: 404),
70
68
  },
71
69
  ],
@@ -0,0 +1,93 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_server_resume'
3
+
4
+ Chef::Knife::IonoscloudServerResume.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudServerResume do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudServerResume.new }
9
+
10
+ allow(subject).to receive(:puts)
11
+ allow(subject).to receive(:print)
12
+ end
13
+
14
+ describe '#run' do
15
+ it 'should output success when the ID is valid' do
16
+ server = server_mock
17
+ subject_config = {
18
+ ionoscloud_username: 'email',
19
+ ionoscloud_password: 'password',
20
+ datacenter_id: 'datacenter_id',
21
+ yes: true,
22
+ }
23
+
24
+ subject_config.each { |key, value| subject.config[key] = value }
25
+ subject.name_args = [server.id]
26
+
27
+ expect(subject.ui).to receive(:info).with("Server #{server.id} is resuming. Request ID: ")
28
+
29
+ expect(subject.api_client).not_to receive(:wait_for)
30
+ expect(subject).to receive(:get_request_id).once
31
+ mock_call_api(
32
+ subject,
33
+ [
34
+ {
35
+ method: 'POST',
36
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}/resume",
37
+ operation: :'ServersApi.datacenters_servers_resume_post',
38
+ result: server,
39
+ },
40
+ ],
41
+ )
42
+
43
+ expect { subject.run }.not_to raise_error(Exception)
44
+ end
45
+
46
+ it 'should output failure when the server ID is not valid' do
47
+ server_id = 'invalid_id'
48
+ subject_config = {
49
+ ionoscloud_username: 'email',
50
+ ionoscloud_password: 'password',
51
+ datacenter_id: 'datacenter_id',
52
+ }
53
+
54
+ subject_config.each { |key, value| subject.config[key] = value }
55
+ subject.name_args = [server_id]
56
+
57
+ expect(subject.ui).to receive(:error).with("Server ID #{server_id} not found. Skipping.")
58
+
59
+ expect(subject.api_client).not_to receive(:wait_for)
60
+ mock_call_api(
61
+ subject,
62
+ [
63
+ {
64
+ method: 'POST',
65
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server_id}/resume",
66
+ operation: :'ServersApi.datacenters_servers_resume_post',
67
+ exception: Ionoscloud::ApiError.new(code: 404),
68
+ },
69
+ ],
70
+ )
71
+
72
+ expect { subject.run }.not_to raise_error(Exception)
73
+ end
74
+
75
+ it 'should not make any call if any required option is missing' do
76
+ required_options = subject.instance_variable_get(:@required_options)
77
+
78
+ arrays_without_one_element(required_options).each do |test_case|
79
+
80
+ test_case[:array].each { |value| subject.config[value] = 'test' }
81
+
82
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
83
+ expect(subject.api_client).not_to receive(:call_api)
84
+
85
+ expect { subject.run }.to raise_error(SystemExit) do |error|
86
+ expect(error.status).to eq(1)
87
+ end
88
+
89
+ required_options.each { |value| subject.config[value] = nil }
90
+ end
91
+ end
92
+ end
93
+ end
@@ -34,8 +34,7 @@ describe Chef::Knife::IonoscloudServerStart do
34
34
  {
35
35
  method: 'POST',
36
36
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}/start",
37
- operation: :'ServerApi.datacenters_servers_start_post',
38
- return_type: 'Object',
37
+ operation: :'ServersApi.datacenters_servers_start_post',
39
38
  result: server,
40
39
  },
41
40
  ],
@@ -44,7 +43,7 @@ describe Chef::Knife::IonoscloudServerStart do
44
43
  expect { subject.run }.not_to raise_error(Exception)
45
44
  end
46
45
 
47
- it 'should output failure when the user ID is not valid' do
46
+ it 'should output failure when the server ID is not valid' do
48
47
  server_id = 'invalid_id'
49
48
  subject_config = {
50
49
  ionoscloud_username: 'email',
@@ -64,8 +63,7 @@ describe Chef::Knife::IonoscloudServerStart do
64
63
  {
65
64
  method: 'POST',
66
65
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server_id}/start",
67
- operation: :'ServerApi.datacenters_servers_start_post',
68
- return_type: 'Object',
66
+ operation: :'ServersApi.datacenters_servers_start_post',
69
67
  exception: Ionoscloud::ApiError.new(code: 404),
70
68
  },
71
69
  ],
@@ -34,8 +34,7 @@ describe Chef::Knife::IonoscloudServerStop do
34
34
  {
35
35
  method: 'POST',
36
36
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}/stop",
37
- operation: :'ServerApi.datacenters_servers_stop_post',
38
- return_type: 'Object',
37
+ operation: :'ServersApi.datacenters_servers_stop_post',
39
38
  result: server,
40
39
  },
41
40
  ],
@@ -44,7 +43,7 @@ describe Chef::Knife::IonoscloudServerStop do
44
43
  expect { subject.run }.not_to raise_error(Exception)
45
44
  end
46
45
 
47
- it 'should output failure when the user ID is not valid' do
46
+ it 'should output failure when the server ID is not valid' do
48
47
  server_id = 'invalid_id'
49
48
  subject_config = {
50
49
  ionoscloud_username: 'email',
@@ -64,8 +63,7 @@ describe Chef::Knife::IonoscloudServerStop do
64
63
  {
65
64
  method: 'POST',
66
65
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server_id}/stop",
67
- operation: :'ServerApi.datacenters_servers_stop_post',
68
- return_type: 'Object',
66
+ operation: :'ServersApi.datacenters_servers_stop_post',
69
67
  exception: Ionoscloud::ApiError.new(code: 404),
70
68
  },
71
69
  ],
@@ -0,0 +1,93 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_server_suspend'
3
+
4
+ Chef::Knife::IonoscloudServerSuspend.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudServerSuspend do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudServerSuspend.new }
9
+
10
+ allow(subject).to receive(:puts)
11
+ allow(subject).to receive(:print)
12
+ end
13
+
14
+ describe '#run' do
15
+ it 'should output success when the ID is valid' do
16
+ server = server_mock
17
+ subject_config = {
18
+ ionoscloud_username: 'email',
19
+ ionoscloud_password: 'password',
20
+ datacenter_id: 'datacenter_id',
21
+ yes: true,
22
+ }
23
+
24
+ subject_config.each { |key, value| subject.config[key] = value }
25
+ subject.name_args = [server.id]
26
+
27
+ expect(subject.ui).to receive(:warn).with("Server #{server.id} is being suspended. Request ID: ")
28
+
29
+ expect(subject.api_client).not_to receive(:wait_for)
30
+ expect(subject).to receive(:get_request_id).once
31
+ mock_call_api(
32
+ subject,
33
+ [
34
+ {
35
+ method: 'POST',
36
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}/suspend",
37
+ operation: :'ServersApi.datacenters_servers_suspend_post',
38
+ result: server,
39
+ },
40
+ ],
41
+ )
42
+
43
+ expect { subject.run }.not_to raise_error(Exception)
44
+ end
45
+
46
+ it 'should output failure when the server ID is not valid' do
47
+ server_id = 'invalid_id'
48
+ subject_config = {
49
+ ionoscloud_username: 'email',
50
+ ionoscloud_password: 'password',
51
+ datacenter_id: 'datacenter_id',
52
+ }
53
+
54
+ subject_config.each { |key, value| subject.config[key] = value }
55
+ subject.name_args = [server_id]
56
+
57
+ expect(subject.ui).to receive(:error).with("Server ID #{server_id} not found. Skipping.")
58
+
59
+ expect(subject.api_client).not_to receive(:wait_for)
60
+ mock_call_api(
61
+ subject,
62
+ [
63
+ {
64
+ method: 'POST',
65
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server_id}/suspend",
66
+ operation: :'ServersApi.datacenters_servers_suspend_post',
67
+ exception: Ionoscloud::ApiError.new(code: 404),
68
+ },
69
+ ],
70
+ )
71
+
72
+ expect { subject.run }.not_to raise_error(Exception)
73
+ end
74
+
75
+ it 'should not make any call if any required option is missing' do
76
+ required_options = subject.instance_variable_get(:@required_options)
77
+
78
+ arrays_without_one_element(required_options).each do |test_case|
79
+
80
+ test_case[:array].each { |value| subject.config[value] = 'test' }
81
+
82
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
83
+ expect(subject.api_client).not_to receive(:call_api)
84
+
85
+ expect { subject.run }.to raise_error(SystemExit) do |error|
86
+ expect(error.status).to eq(1)
87
+ end
88
+
89
+ required_options.each { |value| subject.config[value] = nil }
90
+ end
91
+ end
92
+ end
93
+ end