knife-ionoscloud 5.1.2 → 6.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/publish.yml +1 -4
  3. data/docs/README.md +0 -19
  4. data/docs/docs_generator.rb +1 -1
  5. data/docs/subcommands/backupunit_create.md +2 -5
  6. data/docs/subcommands/backupunit_delete.md +1 -4
  7. data/docs/subcommands/backupunit_list.md +1 -4
  8. data/docs/subcommands/backupunit_ssourl.md +1 -4
  9. data/docs/subcommands/composite_server_create.md +1 -4
  10. data/docs/subcommands/contract_list.md +1 -4
  11. data/docs/subcommands/datacenter_create.md +1 -4
  12. data/docs/subcommands/datacenter_delete.md +1 -4
  13. data/docs/subcommands/datacenter_list.md +1 -4
  14. data/docs/subcommands/firewall_create.md +2 -5
  15. data/docs/subcommands/firewall_delete.md +0 -3
  16. data/docs/subcommands/firewall_list.md +1 -4
  17. data/docs/subcommands/group_create.md +1 -4
  18. data/docs/subcommands/group_delete.md +1 -4
  19. data/docs/subcommands/group_get.md +1 -4
  20. data/docs/subcommands/group_list.md +1 -4
  21. data/docs/subcommands/group_user_add.md +0 -3
  22. data/docs/subcommands/group_user_remove.md +0 -3
  23. data/docs/subcommands/image_list.md +1 -4
  24. data/docs/subcommands/ipblock_create.md +1 -4
  25. data/docs/subcommands/ipblock_delete.md +1 -4
  26. data/docs/subcommands/ipblock_list.md +1 -4
  27. data/docs/subcommands/ipfailover_add.md +1 -4
  28. data/docs/subcommands/ipfailover_remove.md +1 -4
  29. data/docs/subcommands/k8s_create.md +5 -11
  30. data/docs/subcommands/k8s_delete.md +1 -4
  31. data/docs/subcommands/k8s_list.md +1 -4
  32. data/docs/subcommands/kubeconfig_get.md +1 -4
  33. data/docs/subcommands/label_add.md +1 -4
  34. data/docs/subcommands/label_list.md +1 -4
  35. data/docs/subcommands/label_remove.md +0 -3
  36. data/docs/subcommands/lan_create.md +1 -4
  37. data/docs/subcommands/lan_delete.md +0 -3
  38. data/docs/subcommands/lan_list.md +1 -4
  39. data/docs/subcommands/loadbalancer_create.md +2 -5
  40. data/docs/subcommands/loadbalancer_delete.md +0 -3
  41. data/docs/subcommands/loadbalancer_get.md +1 -4
  42. data/docs/subcommands/loadbalancer_list.md +1 -4
  43. data/docs/subcommands/loadbalancer_nic_add.md +0 -3
  44. data/docs/subcommands/loadbalancer_nic_remove.md +0 -3
  45. data/docs/subcommands/location_list.md +1 -4
  46. data/docs/subcommands/nic_create.md +3 -6
  47. data/docs/subcommands/nic_delete.md +1 -4
  48. data/docs/subcommands/nic_list.md +1 -4
  49. data/docs/subcommands/node_delete.md +0 -3
  50. data/docs/subcommands/node_list.md +1 -4
  51. data/docs/subcommands/node_replace.md +0 -3
  52. data/docs/subcommands/nodepool_create.md +5 -17
  53. data/docs/subcommands/nodepool_delete.md +0 -3
  54. data/docs/subcommands/nodepool_list.md +1 -4
  55. data/docs/subcommands/pcc_create.md +1 -4
  56. data/docs/subcommands/pcc_delete.md +1 -4
  57. data/docs/subcommands/pcc_list.md +1 -4
  58. data/docs/subcommands/request_list.md +1 -4
  59. data/docs/subcommands/request_status.md +1 -4
  60. data/docs/subcommands/request_wait.md +1 -4
  61. data/docs/subcommands/resource_list.md +1 -4
  62. data/docs/subcommands/s3key_create.md +1 -4
  63. data/docs/subcommands/s3key_delete.md +0 -3
  64. data/docs/subcommands/s3key_list.md +1 -4
  65. data/docs/subcommands/server_create.md +1 -4
  66. data/docs/subcommands/server_delete.md +0 -3
  67. data/docs/subcommands/server_list.md +1 -4
  68. data/docs/subcommands/server_reboot.md +0 -3
  69. data/docs/subcommands/server_start.md +0 -3
  70. data/docs/subcommands/server_stop.md +0 -3
  71. data/docs/subcommands/share_create.md +2 -5
  72. data/docs/subcommands/share_delete.md +2 -5
  73. data/docs/subcommands/share_list.md +1 -4
  74. data/docs/subcommands/snapshot_create.md +1 -4
  75. data/docs/subcommands/snapshot_delete.md +1 -4
  76. data/docs/subcommands/snapshot_list.md +1 -4
  77. data/docs/subcommands/snapshot_restore.md +1 -4
  78. data/docs/subcommands/user_create.md +3 -12
  79. data/docs/subcommands/user_delete.md +1 -4
  80. data/docs/subcommands/user_list.md +1 -4
  81. data/docs/subcommands/user_ssourl.md +1 -4
  82. data/docs/subcommands/volume_attach.md +0 -3
  83. data/docs/subcommands/volume_create.md +1 -28
  84. data/docs/subcommands/volume_delete.md +0 -3
  85. data/docs/subcommands/volume_detach.md +0 -3
  86. data/docs/subcommands/volume_list.md +1 -4
  87. data/docs/summary.md +0 -33
  88. data/knife-ionoscloud.gemspec +1 -1
  89. data/lib/chef/knife/ionoscloud_backupunit_create.rb +16 -12
  90. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +5 -3
  91. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -2
  92. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +1 -2
  93. data/lib/chef/knife/ionoscloud_base.rb +6 -259
  94. data/lib/chef/knife/ionoscloud_composite_server_create.rb +38 -9
  95. data/lib/chef/knife/ionoscloud_contract_list.rb +32 -24
  96. data/lib/chef/knife/ionoscloud_cube_server_create.rb +215 -0
  97. data/lib/chef/knife/ionoscloud_datacenter_create.rb +14 -12
  98. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +8 -3
  99. data/lib/chef/knife/ionoscloud_datacenter_list.rb +3 -4
  100. data/lib/chef/knife/ionoscloud_firewall_create.rb +24 -7
  101. data/lib/chef/knife/ionoscloud_firewall_delete.rb +14 -6
  102. data/lib/chef/knife/ionoscloud_firewall_list.rb +5 -4
  103. data/lib/chef/knife/ionoscloud_flowlog_create.rb +121 -0
  104. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +106 -0
  105. data/lib/chef/knife/ionoscloud_flowlog_list.rb +100 -0
  106. data/lib/chef/knife/ionoscloud_group_create.rb +46 -16
  107. data/lib/chef/knife/ionoscloud_group_delete.rb +18 -2
  108. data/lib/chef/knife/ionoscloud_group_get.rb +17 -2
  109. data/lib/chef/knife/ionoscloud_group_list.rb +7 -2
  110. data/lib/chef/knife/ionoscloud_group_user_add.rb +13 -2
  111. data/lib/chef/knife/ionoscloud_group_user_remove.rb +13 -2
  112. data/lib/chef/knife/ionoscloud_image_list.rb +1 -2
  113. data/lib/chef/knife/ionoscloud_ipblock_create.rb +13 -11
  114. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +4 -3
  115. data/lib/chef/knife/ionoscloud_ipblock_list.rb +1 -2
  116. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +15 -9
  117. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +9 -3
  118. data/lib/chef/knife/ionoscloud_k8s_create.rb +30 -28
  119. data/lib/chef/knife/ionoscloud_k8s_delete.rb +9 -2
  120. data/lib/chef/knife/ionoscloud_k8s_list.rb +0 -1
  121. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +0 -1
  122. data/lib/chef/knife/ionoscloud_label_add.rb +1 -2
  123. data/lib/chef/knife/ionoscloud_label_list.rb +1 -2
  124. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -2
  125. data/lib/chef/knife/ionoscloud_lan_create.rb +14 -7
  126. data/lib/chef/knife/ionoscloud_lan_delete.rb +4 -4
  127. data/lib/chef/knife/ionoscloud_lan_list.rb +2 -5
  128. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +16 -7
  129. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +10 -3
  130. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +13 -4
  131. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -2
  132. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +14 -5
  133. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +14 -5
  134. data/lib/chef/knife/ionoscloud_location_list.rb +5 -4
  135. data/lib/chef/knife/ionoscloud_natgateway_create.rb +71 -0
  136. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +69 -0
  137. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +82 -0
  138. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +58 -0
  139. data/lib/chef/knife/ionoscloud_natgateway_list.rb +49 -0
  140. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +124 -0
  141. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +63 -0
  142. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +72 -0
  143. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +95 -0
  144. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +81 -0
  145. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +56 -0
  146. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +150 -0
  147. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +63 -0
  148. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +78 -0
  149. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +141 -0
  150. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +68 -0
  151. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +105 -0
  152. data/lib/chef/knife/ionoscloud_nic_create.rb +38 -19
  153. data/lib/chef/knife/ionoscloud_nic_delete.rb +11 -5
  154. data/lib/chef/knife/ionoscloud_nic_list.rb +9 -6
  155. data/lib/chef/knife/ionoscloud_node_delete.rb +6 -2
  156. data/lib/chef/knife/ionoscloud_node_list.rb +0 -2
  157. data/lib/chef/knife/ionoscloud_node_replace.rb +0 -1
  158. data/lib/chef/knife/ionoscloud_nodepool_create.rb +60 -38
  159. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +32 -2
  160. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +130 -0
  161. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +96 -0
  162. data/lib/chef/knife/ionoscloud_nodepool_list.rb +3 -2
  163. data/lib/chef/knife/ionoscloud_pcc_create.rb +18 -13
  164. data/lib/chef/knife/ionoscloud_pcc_delete.rb +10 -3
  165. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -2
  166. data/lib/chef/knife/ionoscloud_request_list.rb +1 -2
  167. data/lib/chef/knife/ionoscloud_request_status.rb +1 -2
  168. data/lib/chef/knife/ionoscloud_request_wait.rb +0 -1
  169. data/lib/chef/knife/ionoscloud_resource_list.rb +0 -1
  170. data/lib/chef/knife/ionoscloud_s3key_create.rb +7 -4
  171. data/lib/chef/knife/ionoscloud_s3key_delete.rb +7 -5
  172. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -3
  173. data/lib/chef/knife/{ionoscloud_server_get.rb → ionoscloud_server_console.rb} +11 -10
  174. data/lib/chef/knife/ionoscloud_server_create.rb +26 -15
  175. data/lib/chef/knife/ionoscloud_server_delete.rb +10 -3
  176. data/lib/chef/knife/ionoscloud_server_list.rb +16 -6
  177. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -2
  178. data/lib/chef/knife/ionoscloud_server_resume.rb +43 -0
  179. data/lib/chef/knife/ionoscloud_server_start.rb +1 -2
  180. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -2
  181. data/lib/chef/knife/ionoscloud_server_suspend.rb +44 -0
  182. data/lib/chef/knife/ionoscloud_server_token.rb +42 -0
  183. data/lib/chef/knife/ionoscloud_server_upgrade.rb +44 -0
  184. data/lib/chef/knife/ionoscloud_share_create.rb +12 -8
  185. data/lib/chef/knife/ionoscloud_share_delete.rb +4 -3
  186. data/lib/chef/knife/ionoscloud_share_list.rb +0 -1
  187. data/lib/chef/knife/ionoscloud_snapshot_create.rb +10 -3
  188. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +7 -3
  189. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -2
  190. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +2 -3
  191. data/lib/chef/knife/ionoscloud_template_list.rb +46 -0
  192. data/lib/chef/knife/ionoscloud_user_create.rb +20 -25
  193. data/lib/chef/knife/ionoscloud_user_delete.rb +7 -2
  194. data/lib/chef/knife/ionoscloud_user_list.rb +0 -1
  195. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -2
  196. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -2
  197. data/lib/chef/knife/ionoscloud_volume_create.rb +31 -57
  198. data/lib/chef/knife/ionoscloud_volume_delete.rb +9 -3
  199. data/lib/chef/knife/ionoscloud_volume_detach.rb +9 -3
  200. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -3
  201. data/lib/knife-ionoscloud/version.rb +1 -1
  202. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  203. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  204. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  205. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  206. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  207. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  208. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  209. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  210. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +3 -12
  211. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +5 -8
  212. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +4 -4
  213. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  214. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  215. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  216. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  217. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  218. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  219. data/spec/chef/knife/ionoscloud_group_create_spec.rb +6 -7
  220. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +3 -0
  221. data/spec/chef/knife/ionoscloud_group_get_spec.rb +3 -0
  222. data/spec/chef/knife/ionoscloud_group_list_spec.rb +11 -2
  223. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +0 -3
  224. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +0 -3
  225. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  226. data/spec/chef/knife/ionoscloud_ipblock_delete_spec.rb +0 -2
  227. data/spec/chef/knife/ionoscloud_ipblock_list_spec.rb +1 -1
  228. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +4 -5
  229. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +7 -8
  230. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +0 -8
  231. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +1 -7
  232. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  233. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  234. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  235. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  236. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +3 -4
  237. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +5 -7
  238. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +3 -5
  239. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  240. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  241. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  242. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  243. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  244. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  245. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  246. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +77 -0
  247. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  248. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +143 -0
  249. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +194 -0
  250. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  251. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +98 -0
  252. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  253. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +77 -0
  254. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +80 -0
  255. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +119 -0
  256. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  257. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +104 -0
  258. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  259. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +124 -0
  260. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +109 -0
  261. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  262. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +263 -0
  263. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  264. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  265. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  266. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +20 -13
  267. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +13 -27
  268. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +226 -0
  269. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +199 -0
  270. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  271. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +8 -11
  272. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +6 -6
  273. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  274. data/spec/chef/knife/ionoscloud_request_list_spec.rb +24 -25
  275. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  276. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  277. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  278. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  279. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  280. data/spec/chef/knife/ionoscloud_server_create_spec.rb +3 -3
  281. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +5 -5
  282. data/spec/chef/knife/ionoscloud_server_list_spec.rb +63 -5
  283. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  284. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  285. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  286. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  287. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  288. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  289. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  290. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +3 -16
  291. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +5 -17
  292. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  293. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +3 -3
  294. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  295. data/spec/chef/knife/ionoscloud_user_create_spec.rb +1 -3
  296. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +2 -4
  297. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  298. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  299. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +6 -15
  300. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +5 -14
  301. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -14
  302. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  303. data/spec/spec_helper.rb +270 -116
  304. metadata +93 -138
  305. data/docs/subcommands/backupunit_get.md +0 -35
  306. data/docs/subcommands/backupunit_update.md +0 -41
  307. data/docs/subcommands/datacenter_get.md +0 -35
  308. data/docs/subcommands/datacenter_update.md +0 -44
  309. data/docs/subcommands/firewall_get.md +0 -47
  310. data/docs/subcommands/firewall_update.md +0 -71
  311. data/docs/subcommands/group_update.md +0 -65
  312. data/docs/subcommands/ipblock_get.md +0 -35
  313. data/docs/subcommands/ipblock_update.md +0 -38
  314. data/docs/subcommands/k8s_get.md +0 -35
  315. data/docs/subcommands/k8s_update.md +0 -53
  316. data/docs/subcommands/lan_get.md +0 -39
  317. data/docs/subcommands/lan_update.md +0 -51
  318. data/docs/subcommands/loadbalancer_update.md +0 -48
  319. data/docs/subcommands/nic_get.md +0 -43
  320. data/docs/subcommands/nic_update.md +0 -58
  321. data/docs/subcommands/node_get.md +0 -43
  322. data/docs/subcommands/nodepool_get.md +0 -39
  323. data/docs/subcommands/nodepool_update.md +0 -69
  324. data/docs/subcommands/pcc_get.md +0 -35
  325. data/docs/subcommands/pcc_update.md +0 -41
  326. data/docs/subcommands/request_get.md +0 -35
  327. data/docs/subcommands/s3key_get.md +0 -39
  328. data/docs/subcommands/server_get.md +0 -39
  329. data/docs/subcommands/server_update.md +0 -60
  330. data/docs/subcommands/share_get.md +0 -39
  331. data/docs/subcommands/share_update.md +0 -45
  332. data/docs/subcommands/snapshot_get.md +0 -35
  333. data/docs/subcommands/snapshot_update.md +0 -77
  334. data/docs/subcommands/user_get.md +0 -35
  335. data/docs/subcommands/user_update.md +0 -56
  336. data/docs/subcommands/volume_get.md +0 -39
  337. data/docs/subcommands/volume_update.md +0 -66
  338. data/lib/chef/knife/ionoscloud_backupunit_get.rb +0 -33
  339. data/lib/chef/knife/ionoscloud_backupunit_update.rb +0 -62
  340. data/lib/chef/knife/ionoscloud_datacenter_get.rb +0 -33
  341. data/lib/chef/knife/ionoscloud_datacenter_update.rb +0 -67
  342. data/lib/chef/knife/ionoscloud_firewall_get.rb +0 -50
  343. data/lib/chef/knife/ionoscloud_firewall_update.rb +0 -131
  344. data/lib/chef/knife/ionoscloud_group_update.rb +0 -114
  345. data/lib/chef/knife/ionoscloud_ipblock_get.rb +0 -33
  346. data/lib/chef/knife/ionoscloud_ipblock_update.rb +0 -57
  347. data/lib/chef/knife/ionoscloud_k8s_get.rb +0 -33
  348. data/lib/chef/knife/ionoscloud_k8s_update.rb +0 -99
  349. data/lib/chef/knife/ionoscloud_lan_get.rb +0 -38
  350. data/lib/chef/knife/ionoscloud_lan_update.rb +0 -87
  351. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +0 -73
  352. data/lib/chef/knife/ionoscloud_nic_get.rb +0 -47
  353. data/lib/chef/knife/ionoscloud_nic_update.rb +0 -93
  354. data/lib/chef/knife/ionoscloud_node_get.rb +0 -47
  355. data/lib/chef/knife/ionoscloud_nodepool_get.rb +0 -41
  356. data/lib/chef/knife/ionoscloud_nodepool_update.rb +0 -124
  357. data/lib/chef/knife/ionoscloud_pcc_get.rb +0 -33
  358. data/lib/chef/knife/ionoscloud_pcc_update.rb +0 -63
  359. data/lib/chef/knife/ionoscloud_request_get.rb +0 -40
  360. data/lib/chef/knife/ionoscloud_s3key_get.rb +0 -38
  361. data/lib/chef/knife/ionoscloud_server_update.rb +0 -97
  362. data/lib/chef/knife/ionoscloud_share_get.rb +0 -38
  363. data/lib/chef/knife/ionoscloud_share_update.rb +0 -70
  364. data/lib/chef/knife/ionoscloud_snapshot_get.rb +0 -32
  365. data/lib/chef/knife/ionoscloud_snapshot_update.rb +0 -126
  366. data/lib/chef/knife/ionoscloud_user_get.rb +0 -32
  367. data/lib/chef/knife/ionoscloud_user_update.rb +0 -92
  368. data/lib/chef/knife/ionoscloud_volume_get.rb +0 -36
  369. data/lib/chef/knife/ionoscloud_volume_update.rb +0 -106
  370. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +0 -65
  371. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +0 -78
  372. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +0 -69
  373. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +0 -82
  374. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +0 -76
  375. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +0 -116
  376. data/spec/chef/knife/ionoscloud_group_update_spec.rb +0 -109
  377. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +0 -66
  378. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +0 -79
  379. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +0 -73
  380. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +0 -115
  381. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +0 -68
  382. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +0 -91
  383. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +0 -89
  384. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +0 -70
  385. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +0 -92
  386. data/spec/chef/knife/ionoscloud_node_get_spec.rb +0 -70
  387. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +0 -83
  388. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +0 -130
  389. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +0 -71
  390. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +0 -83
  391. data/spec/chef/knife/ionoscloud_request_get_spec.rb +0 -69
  392. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +0 -66
  393. data/spec/chef/knife/ionoscloud_server_get_spec.rb +0 -71
  394. data/spec/chef/knife/ionoscloud_server_update_spec.rb +0 -102
  395. data/spec/chef/knife/ionoscloud_share_get_spec.rb +0 -66
  396. data/spec/chef/knife/ionoscloud_share_update_spec.rb +0 -91
  397. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +0 -79
  398. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +0 -113
  399. data/spec/chef/knife/ionoscloud_user_get_spec.rb +0 -70
  400. data/spec/chef/knife/ionoscloud_user_update_spec.rb +0 -110
  401. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +0 -80
  402. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +0 -115
@@ -31,10 +31,9 @@ class Chef
31
31
 
32
32
  def run
33
33
  $stdout.sync = true
34
- handle_extra_config
35
34
  validate_required_params(@required_options, config)
36
35
 
37
- server_api = Ionoscloud::ServerApi.new(api_client)
36
+ server_api = Ionoscloud::ServersApi.new(api_client)
38
37
 
39
38
  @name_args.each do |volume_id|
40
39
  begin
@@ -49,7 +48,14 @@ class Chef
49
48
  next
50
49
  end
51
50
 
52
- print_volume(volume)
51
+ msg_pair('ID', volume.id)
52
+ msg_pair('Name', volume.properties.name)
53
+ msg_pair('Size', volume.properties.size)
54
+ msg_pair('Bus', volume.properties.bus)
55
+ msg_pair('Image', volume.properties.image)
56
+ msg_pair('Type', volume.properties.type)
57
+ msg_pair('Licence Type', volume.properties.licence_type)
58
+ msg_pair('Zone', volume.properties.availability_zone)
53
59
 
54
60
  begin
55
61
  confirm('Do you really want to detach this volume')
@@ -29,7 +29,6 @@ class Chef
29
29
 
30
30
  def run
31
31
  $stdout.sync = true
32
- handle_extra_config
33
32
  validate_required_params(@required_options, config)
34
33
 
35
34
  volume_list = [
@@ -46,10 +45,10 @@ class Chef
46
45
  opts = { depth: 1 }
47
46
 
48
47
  if config[:server_id]
49
- server_api = Ionoscloud::ServerApi.new(api_client)
48
+ server_api = Ionoscloud::ServersApi.new(api_client)
50
49
  volumes = server_api.datacenters_servers_volumes_get(config[:datacenter_id], config[:server_id], opts)
51
50
  else
52
- volume_api = Ionoscloud::VolumeApi.new(api_client)
51
+ volume_api = Ionoscloud::VolumesApi.new(api_client)
53
52
  volumes = volume_api.datacenters_volumes_get(config[:datacenter_id], opts)
54
53
  end
55
54
 
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module Ionoscloud
3
- VERSION = '5.1.2'
3
+ VERSION = '6.0.0.alpha.1'
4
4
  MAJOR, MINOR, TINY = VERSION.split('.')
5
5
  end
6
6
  end
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudBackupunitCreate do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call BackupUnitApi.backupunits_post with the expected arguments and output based on what it receives' do
15
+ it 'should call BackupUnitsApi.backupunits_post with the expected arguments and output based on what it receives' do
16
16
  backupunit = backupunit_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -33,7 +33,7 @@ describe Chef::Knife::IonoscloudBackupunitCreate do
33
33
  {
34
34
  method: 'POST',
35
35
  path: '/backupunits',
36
- operation: :'BackupUnitApi.backupunits_post',
36
+ operation: :'BackupUnitsApi.backupunits_post',
37
37
  return_type: 'BackupUnit',
38
38
  body: { properties: backupunit.properties.to_hash },
39
39
  result: backupunit,
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudBackupunitDelete do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call BackupUnitApi.backupunits_delete when the ID is valid' do
15
+ it 'should call BackupUnitsApi.backupunits_delete when the ID is valid' do
16
16
  backupunit = backupunit_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -36,14 +36,14 @@ describe Chef::Knife::IonoscloudBackupunitDelete do
36
36
  {
37
37
  method: 'GET',
38
38
  path: "/backupunits/#{backupunit.id}",
39
- operation: :'BackupUnitApi.backupunits_find_by_id',
39
+ operation: :'BackupUnitsApi.backupunits_find_by_id',
40
40
  return_type: 'BackupUnit',
41
41
  result: backupunit,
42
42
  },
43
43
  {
44
44
  method: 'DELETE',
45
45
  path: "/backupunits/#{backupunit.id}",
46
- operation: :'BackupUnitApi.backupunits_delete',
46
+ operation: :'BackupUnitsApi.backupunits_delete',
47
47
  },
48
48
  ],
49
49
  )
@@ -51,7 +51,7 @@ describe Chef::Knife::IonoscloudBackupunitDelete do
51
51
  expect { subject.run }.not_to raise_error(Exception)
52
52
  end
53
53
 
54
- it 'should not call BackupUnitApi.backupunits_delete when the ID is not valid' do
54
+ it 'should not call BackupUnitsApi.backupunits_delete when the ID is not valid' do
55
55
  backup_unit = 'invalid_id'
56
56
  subject_config = {
57
57
  ionoscloud_username: 'email',
@@ -70,7 +70,7 @@ describe Chef::Knife::IonoscloudBackupunitDelete do
70
70
  {
71
71
  method: 'GET',
72
72
  path: "/backupunits/#{backup_unit}",
73
- operation: :'BackupUnitApi.backupunits_find_by_id',
73
+ operation: :'BackupUnitsApi.backupunits_find_by_id',
74
74
  return_type: 'BackupUnit',
75
75
  exception: Ionoscloud::ApiError.new(code: 404),
76
76
  },
@@ -41,7 +41,7 @@ describe Chef::Knife::IonoscloudBackupunitList do
41
41
  {
42
42
  method: 'GET',
43
43
  path: '/backupunits',
44
- operation: :'BackupUnitApi.backupunits_get',
44
+ operation: :'BackupUnitsApi.backupunits_get',
45
45
  return_type: 'BackupUnits',
46
46
  result: backupunits,
47
47
  },
@@ -7,7 +7,7 @@ describe Chef::Knife::IonoscloudBackupunitSsourl do
7
7
  subject { Chef::Knife::IonoscloudBackupunitSsourl.new }
8
8
 
9
9
  describe '#run' do
10
- it 'should call BackupUnitApi.backupunits_ssourl_get and output the received url when the user ID is valid' do
10
+ it 'should call BackupUnitsApi.backupunits_ssourl_get and output the received url when the user ID is valid' do
11
11
  backupunit = backupunit_mock
12
12
  backupunit_sso = backupunit_sso_mock
13
13
  subject_config = {
@@ -27,7 +27,7 @@ describe Chef::Knife::IonoscloudBackupunitSsourl do
27
27
  {
28
28
  method: 'GET',
29
29
  path: "/backupunits/#{backupunit.id}/ssourl",
30
- operation: :'BackupUnitApi.backupunits_ssourl_get',
30
+ operation: :'BackupUnitsApi.backupunits_ssourl_get',
31
31
  return_type: 'BackupUnitSSO',
32
32
  result: backupunit_sso,
33
33
  },
@@ -59,7 +59,7 @@ describe Chef::Knife::IonoscloudBackupunitSsourl do
59
59
  {
60
60
  method: 'GET',
61
61
  path: "/backupunits/#{backupunit_id}/ssourl",
62
- operation: :'BackupUnitApi.backupunits_ssourl_get',
62
+ operation: :'BackupUnitsApi.backupunits_ssourl_get',
63
63
  return_type: 'BackupUnitSSO',
64
64
  exception: Ionoscloud::ApiError.new(code: 404),
65
65
  },
@@ -27,7 +27,7 @@ describe Chef::Knife::IonoscloudBaseTest do
27
27
  {
28
28
  method: 'GET',
29
29
  path: "/requests/#{request_id}/status",
30
- operation: :'RequestApi.requests_status_get',
30
+ operation: :'RequestsApi.requests_status_get',
31
31
  return_type: 'RequestStatus',
32
32
  result: request_status,
33
33
  },
@@ -47,7 +47,7 @@ describe Chef::Knife::IonoscloudBaseTest do
47
47
  {
48
48
  method: 'GET',
49
49
  path: "/requests/#{request_id}/status",
50
- operation: :'RequestApi.requests_status_get',
50
+ operation: :'RequestsApi.requests_status_get',
51
51
  return_type: 'RequestStatus',
52
52
  result: request_status,
53
53
  },
@@ -67,7 +67,7 @@ describe Chef::Knife::IonoscloudBaseTest do
67
67
  {
68
68
  method: 'GET',
69
69
  path: "/requests/#{request_id}/status",
70
- operation: :'RequestApi.requests_status_get',
70
+ operation: :'RequestsApi.requests_status_get',
71
71
  return_type: 'RequestStatus',
72
72
  result: request_status,
73
73
  },
@@ -89,7 +89,7 @@ describe Chef::Knife::IonoscloudBaseTest do
89
89
  {
90
90
  method: 'GET',
91
91
  path: "/requests/#{request_id}/status",
92
- operation: :'RequestApi.requests_status_get',
92
+ operation: :'RequestsApi.requests_status_get',
93
93
  return_type: 'RequestStatus',
94
94
  result: request_status,
95
95
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudCompositeServerCreate 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({ volumes: Ionoscloud::Volumes.new(items: [volume_mock]), nics: Ionoscloud::Nics.new(items: [nic_mock]) })
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -30,15 +30,16 @@ describe Chef::Knife::IonoscloudCompositeServerCreate do
30
30
  type: server.entities.volumes.items.first.properties.type,
31
31
  bus: server.entities.volumes.items.first.properties.bus,
32
32
  volume_availability_zone: server.entities.volumes.items.first.properties.availability_zone,
33
- licence_type: server.entities.volumes.items.first.properties.licence_type,
34
- image_alias: 'debian:latest',
33
+ image: server.entities.volumes.items.first.properties.image,
34
+ backupunit_id: server.entities.volumes.items.first.properties.backupunit_id,
35
+ user_data: server.entities.volumes.items.first.properties.user_data,
35
36
  image_password: 'K3tTj8G14a3EgKyNeeiY',
36
37
 
37
38
  lan: server.entities.nics.items.first.properties.lan,
38
39
  nic_name: server.entities.nics.items.first.properties.name,
39
40
  dhcp: server.entities.nics.items.first.properties.dhcp,
40
41
  ips: server.entities.nics.items.first.properties.ips.join(','),
41
- nat: server.entities.nics.items.first.properties.nat,
42
+ firewall_type: server.entities.nics.items.first.properties.firewall_type,
42
43
  }
43
44
 
44
45
  subject_config.each { |key, value| subject.config[key] = value }
@@ -56,13 +57,15 @@ describe Chef::Knife::IonoscloudCompositeServerCreate do
56
57
 
57
58
  expected_entities = server.entities.to_hash
58
59
  expected_entities[:volumes][:items][0].delete(:id)
59
- expected_entities[:volumes][:items][0][:properties].delete(:image)
60
60
  expected_entities[:nics][:items][0].delete(:id)
61
61
  expected_entities[:nics][:items][0].delete(:entities)
62
62
  expected_entities[:nics][:items][0][:properties].delete(:mac)
63
63
  expected_entities[:nics][:items][0][:properties].delete(:firewallActive)
64
+ expected_entities[:nics][:items][0][:properties].delete(:deviceNumber)
65
+ expected_entities[:nics][:items][0][:properties].delete(:pciSlot)
64
66
 
65
- expected_entities[:volumes][:items][0][:properties][:imageAlias] = subject_config[:image_alias]
67
+ expected_entities[:volumes][:items][0][:properties].delete(:licenceType)
68
+ expected_entities[:volumes][:items][0][:properties][:image] = subject_config[:image]
66
69
  expected_entities[:volumes][:items][0][:properties][:imagePassword] = subject_config[:image_password]
67
70
 
68
71
  mock_wait_for(subject)
@@ -72,7 +75,7 @@ describe Chef::Knife::IonoscloudCompositeServerCreate do
72
75
  {
73
76
  method: 'POST',
74
77
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers",
75
- operation: :'ServerApi.datacenters_servers_post',
78
+ operation: :'ServersApi.datacenters_servers_post',
76
79
  return_type: 'Server',
77
80
  body: { properties: expected_properties, entities: expected_entities },
78
81
  result: server,
@@ -80,7 +83,7 @@ describe Chef::Knife::IonoscloudCompositeServerCreate do
80
83
  {
81
84
  method: 'GET',
82
85
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}",
83
- operation: :'ServerApi.datacenters_servers_find_by_id',
86
+ operation: :'ServersApi.datacenters_servers_find_by_id',
84
87
  return_type: 'Server',
85
88
  result: server,
86
89
  },
@@ -12,8 +12,8 @@ describe Chef::Knife::IonoscloudContractList do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call ContractApi.contracts_get' do
16
- contract = contract_mock
15
+ it 'should call ContractResourcesApi.contracts_get' do
16
+ contracts = contracts_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
19
19
  ionoscloud_password: 'password',
@@ -21,28 +21,33 @@ describe Chef::Knife::IonoscloudContractList do
21
21
 
22
22
  subject_config.each { |key, value| subject.config[key] = value }
23
23
 
24
- expect(subject).to receive(:puts).with("Contract Type: #{contract.type}")
25
- expect(subject).to receive(:puts).with("Contract Owner: #{contract.properties.owner}")
26
- expect(subject).to receive(:puts).with("Contract Number: #{contract.properties.contract_number}")
27
- expect(subject).to receive(:puts).with("Registration Domain: #{contract.properties.reg_domain}")
28
- expect(subject).to receive(:puts).with("Status: #{contract.properties.status}")
29
- expect(subject).to receive(:puts).with("Cores per contract: #{contract.properties.resource_limits.cores_per_contract}")
30
- expect(subject).to receive(:puts).with("Cores per server: #{contract.properties.resource_limits.cores_per_server}")
31
- expect(subject).to receive(:puts).with("Cores provisioned: #{contract.properties.resource_limits.cores_provisioned}")
32
- expect(subject).to receive(:puts).with("HDD limit per contract: #{contract.properties.resource_limits.hdd_limit_per_contract}")
33
- expect(subject).to receive(:puts).with("HDD limit per volume: #{contract.properties.resource_limits.hdd_limit_per_volume}")
34
- expect(subject).to receive(:puts).with("HDD volume provisioned: #{contract.properties.resource_limits.hdd_volume_provisioned}")
35
- expect(subject).to receive(:puts).with("RAM per contract: #{contract.properties.resource_limits.ram_per_contract}")
36
- expect(subject).to receive(:puts).with("RAM per server: #{contract.properties.resource_limits.ram_per_server}")
37
- expect(subject).to receive(:puts).with("RAM provisioned: #{contract.properties.resource_limits.ram_provisioned}")
38
- expect(subject).to receive(:puts).with("Reservable IPs: #{contract.properties.resource_limits.reservable_ips}")
39
- expect(subject).to receive(:puts).with("Reservable IPs in use: #{contract.properties.resource_limits.reserved_ips_in_use}")
40
- expect(subject).to receive(:puts).with("Reservable IPs on contract: #{contract.properties.resource_limits.reserved_ips_on_contract}")
41
- expect(subject).to receive(:puts).with("SSD limit per contract: #{contract.properties.resource_limits.ssd_limit_per_contract}")
42
- expect(subject).to receive(:puts).with("SSD limit per volume: #{contract.properties.resource_limits.ssd_limit_per_volume}")
43
- expect(subject).to receive(:puts).with("SSD volume provisioned: #{contract.properties.resource_limits.ssd_volume_provisioned}")
44
- expect(subject).to receive(:puts).with("K8s Cluster Limit Total: #{contract.properties.resource_limits.k8s_cluster_limit_total}")
45
- expect(subject).to receive(:puts).with("K8s Clusters provisioned: #{contract.properties.resource_limits.k8s_clusters_provisioned}")
24
+ expect(subject).to receive(:puts).with("Contract Type: #{contracts.items.first.type}")
25
+ expect(subject).to receive(:puts).with("Contract Owner: #{contracts.items.first.properties.owner}")
26
+ expect(subject).to receive(:puts).with("Contract Number: #{contracts.items.first.properties.contract_number}")
27
+ expect(subject).to receive(:puts).with("Registration Domain: #{contracts.items.first.properties.reg_domain}")
28
+ expect(subject).to receive(:puts).with("Status: #{contracts.items.first.properties.status}")
29
+ expect(subject).to receive(:puts).with("Cores per contract: #{contracts.items.first.properties.resource_limits.cores_per_contract}")
30
+ expect(subject).to receive(:puts).with("Cores per server: #{contracts.items.first.properties.resource_limits.cores_per_server}")
31
+ expect(subject).to receive(:puts).with("Cores provisioned: #{contracts.items.first.properties.resource_limits.cores_provisioned}")
32
+ expect(subject).to receive(:puts).with("HDD limit per contract: #{contracts.items.first.properties.resource_limits.hdd_limit_per_contract}")
33
+ expect(subject).to receive(:puts).with("HDD limit per volume: #{contracts.items.first.properties.resource_limits.hdd_limit_per_volume}")
34
+ expect(subject).to receive(:puts).with("HDD volume provisioned: #{contracts.items.first.properties.resource_limits.hdd_volume_provisioned}")
35
+ expect(subject).to receive(:puts).with("RAM per contract: #{contracts.items.first.properties.resource_limits.ram_per_contract}")
36
+ expect(subject).to receive(:puts).with("RAM per server: #{contracts.items.first.properties.resource_limits.ram_per_server}")
37
+ expect(subject).to receive(:puts).with("RAM provisioned: #{contracts.items.first.properties.resource_limits.ram_provisioned}")
38
+ expect(subject).to receive(:puts).with("Reservable IPs: #{contracts.items.first.properties.resource_limits.reservable_ips}")
39
+ expect(subject).to receive(:puts).with("Reservable IPs in use: #{contracts.items.first.properties.resource_limits.reserved_ips_in_use}")
40
+ expect(subject).to receive(:puts).with("Reservable IPs on contract: #{contracts.items.first.properties.resource_limits.reserved_ips_on_contract}")
41
+ expect(subject).to receive(:puts).with("SSD limit per contract: #{contracts.items.first.properties.resource_limits.ssd_limit_per_contract}")
42
+ expect(subject).to receive(:puts).with("SSD limit per volume: #{contracts.items.first.properties.resource_limits.ssd_limit_per_volume}")
43
+ expect(subject).to receive(:puts).with("SSD volume provisioned: #{contracts.items.first.properties.resource_limits.ssd_volume_provisioned}")
44
+ expect(subject).to receive(:puts).with("DAS volume provisioned: #{contracts.items.first.properties.resource_limits.das_volume_provisioned}")
45
+ expect(subject).to receive(:puts).with("K8s Cluster Limit Total: #{contracts.items.first.properties.resource_limits.k8s_cluster_limit_total}")
46
+ expect(subject).to receive(:puts).with("K8s Clusters provisioned: #{contracts.items.first.properties.resource_limits.k8s_clusters_provisioned}")
47
+ expect(subject).to receive(:puts).with("NLB total limit: #{contracts.items.first.properties.resource_limits.nlb_limit_total}")
48
+ expect(subject).to receive(:puts).with("NLBs provisioned: #{contracts.items.first.properties.resource_limits.nlb_provisioned}")
49
+ expect(subject).to receive(:puts).with("NAT gateway total limit: #{contracts.items.first.properties.resource_limits.nat_gateway_limit_total}")
50
+ expect(subject).to receive(:puts).with("NAT gateways provisioned: #{contracts.items.first.properties.resource_limits.nat_gateway_provisioned}")
46
51
 
47
52
  mock_call_api(
48
53
  subject,
@@ -50,9 +55,9 @@ describe Chef::Knife::IonoscloudContractList do
50
55
  {
51
56
  method: 'GET',
52
57
  path: '/contracts',
53
- operation: :'ContractApi.contracts_get',
54
- return_type: 'Contract',
55
- result: contract,
58
+ operation: :'ContractResourcesApi.contracts_get',
59
+ return_type: 'Contracts',
60
+ result: contracts,
56
61
  },
57
62
  ],
58
63
  )
@@ -0,0 +1,249 @@
1
+ require 'spec_helper'
2
+ require 'ionoscloud_cube_server_create'
3
+
4
+ Chef::Knife::IonoscloudCubeServerCreate.load_deps
5
+
6
+ describe Chef::Knife::IonoscloudCubeServerCreate do
7
+ before :each do
8
+ subject { Chef::Knife::IonoscloudCubeServerCreate.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_post with the expected arguments and also make another call to set the boot_volume when set_boot is sent' do
16
+ template = template_mock
17
+ server = server_mock(
18
+ volumes: Ionoscloud::Volumes.new(items: [volume_mock(size: template.properties.storage_size, type: 'DAS')]),
19
+ nics: Ionoscloud::Nics.new(items: [nic_mock]),
20
+ ram: template.properties.ram,
21
+ cores: template.properties.cores,
22
+ boot_volume: nil,
23
+ boot_cdrom: Ionoscloud::ResourceReference.new({ id: nil }),
24
+ )
25
+
26
+ subject_config = {
27
+ ionoscloud_username: 'email',
28
+ ionoscloud_password: 'password',
29
+ datacenter_id: 'datacenter_id',
30
+
31
+ template: template.id,
32
+ name: server.properties.name,
33
+ cpu_family: server.properties.cpu_family,
34
+ availability_zone: server.properties.availability_zone,
35
+
36
+ volume_name: server.entities.volumes.items.first.properties.name,
37
+ type: server.entities.volumes.items.first.properties.type,
38
+ bus: server.entities.volumes.items.first.properties.bus,
39
+ image: SecureRandom.uuid,
40
+ image_password: 'K3tTj8G14a3EgKyNeeiY',
41
+ backupunit_id: server.entities.volumes.items.first.properties.backupunit_id,
42
+ user_data: server.entities.volumes.items.first.properties.user_data,
43
+
44
+ set_boot: true,
45
+
46
+ lan: server.entities.nics.items.first.properties.lan,
47
+ nic_name: server.entities.nics.items.first.properties.name,
48
+ dhcp: server.entities.nics.items.first.properties.dhcp,
49
+ ips: server.entities.nics.items.first.properties.ips.join(','),
50
+ firewall_type: server.entities.nics.items.first.properties.firewall_type,
51
+ }
52
+
53
+ subject_config.each { |key, value| subject.config[key] = value }
54
+
55
+ expect(subject).to receive(:puts).with("ID: #{server.id}")
56
+ expect(subject).to receive(:puts).with("Name: #{server.properties.name}")
57
+ expect(subject).to receive(:puts).with("Type: #{server.properties.type}")
58
+ expect(subject).to receive(:puts).with("Cores: #{server.properties.cores}")
59
+ expect(subject).to receive(:puts).with("CPU Family: #{server.properties.cpu_family}")
60
+ expect(subject).to receive(:puts).with("Ram: #{server.properties.ram}")
61
+ expect(subject).to receive(:puts).with("Availability Zone: #{server.properties.availability_zone}")
62
+ expect(subject).to receive(:puts).with("Boot Volume: #{server.entities.volumes.items.first.id}")
63
+ expect(subject).to receive(:puts).with("Boot CDROM: ")
64
+
65
+ expected_properties = server.properties.to_hash
66
+ expected_properties.delete(:bootCdrom)
67
+ expected_properties.delete(:bootVolume)
68
+ expected_properties.delete(:cores)
69
+ expected_properties.delete(:ram)
70
+ expected_properties[:type] = 'CUBE'
71
+ expected_properties[:templateUuid] = template.id
72
+
73
+ expected_entities = server.entities.to_hash
74
+ expected_entities[:volumes][:items][0].delete(:id)
75
+ expected_entities[:volumes][:items][0][:properties].delete(:size)
76
+ expected_entities[:volumes][:items][0][:properties].delete(:availabilityZone)
77
+ expected_entities[:nics][:items][0].delete(:id)
78
+ expected_entities[:nics][:items][0].delete(:entities)
79
+ expected_entities[:nics][:items][0][:properties].delete(:mac)
80
+ expected_entities[:nics][:items][0][:properties].delete(:firewallActive)
81
+ expected_entities[:nics][:items][0][:properties].delete(:deviceNumber)
82
+ expected_entities[:nics][:items][0][:properties].delete(:pciSlot)
83
+
84
+ expected_entities[:volumes][:items][0][:properties].delete(:licenceType)
85
+ expected_entities[:volumes][:items][0][:properties][:image] = subject_config[:image]
86
+ expected_entities[:volumes][:items][0][:properties][:imagePassword] = subject_config[:image_password]
87
+
88
+ server.properties.boot_volume = Ionoscloud::ResourceReference.new({ id: server.entities.volumes.items.first.id })
89
+
90
+ mock_wait_for(subject)
91
+ mock_wait_for(subject)
92
+ mock_call_api(
93
+ subject,
94
+ [
95
+ {
96
+ method: 'POST',
97
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers",
98
+ operation: :'ServersApi.datacenters_servers_post',
99
+ return_type: 'Server',
100
+ body: { properties: expected_properties, entities: expected_entities },
101
+ result: server,
102
+ },
103
+ {
104
+ method: 'GET',
105
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}",
106
+ operation: :'ServersApi.datacenters_servers_find_by_id',
107
+ return_type: 'Server',
108
+ result: server,
109
+ },
110
+ {
111
+ method: 'PATCH',
112
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}",
113
+ operation: :'ServersApi.datacenters_servers_patch',
114
+ return_type: 'Server',
115
+ body: { bootVolume: { id: server.entities.volumes.items[0].id } },
116
+ result: server,
117
+ },
118
+ {
119
+ method: 'GET',
120
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}",
121
+ operation: :'ServersApi.datacenters_servers_find_by_id',
122
+ return_type: 'Server',
123
+ result: server,
124
+ },
125
+ ],
126
+ )
127
+
128
+ expect { subject.run }.not_to raise_error(Exception)
129
+ end
130
+
131
+ it 'should call ServersApi.datacenters_servers_post with the expected arguments and should not make another call to set the boot_volume when set_boot is not sent' do
132
+ template = template_mock
133
+ server = server_mock(
134
+ volumes: Ionoscloud::Volumes.new(items: [volume_mock(size: template.properties.storage_size, type: 'DAS')]),
135
+ nics: Ionoscloud::Nics.new(items: [nic_mock]),
136
+ ram: template.properties.ram,
137
+ cores: template.properties.cores,
138
+ boot_volume: nil,
139
+ boot_cdrom: Ionoscloud::ResourceReference.new({ id: nil }),
140
+ )
141
+
142
+ subject_config = {
143
+ ionoscloud_username: 'email',
144
+ ionoscloud_password: 'password',
145
+ datacenter_id: 'datacenter_id',
146
+
147
+ template: template.id,
148
+ name: server.properties.name,
149
+ cpu_family: server.properties.cpu_family,
150
+ availability_zone: server.properties.availability_zone,
151
+
152
+ volume_name: server.entities.volumes.items.first.properties.name,
153
+ type: server.entities.volumes.items.first.properties.type,
154
+ bus: server.entities.volumes.items.first.properties.bus,
155
+ image: SecureRandom.uuid,
156
+ image_password: 'K3tTj8G14a3EgKyNeeiY',
157
+ backupunit_id: server.entities.volumes.items.first.properties.backupunit_id,
158
+ user_data: server.entities.volumes.items.first.properties.user_data,
159
+
160
+ set_boot: false,
161
+
162
+ lan: server.entities.nics.items.first.properties.lan,
163
+ nic_name: server.entities.nics.items.first.properties.name,
164
+ dhcp: server.entities.nics.items.first.properties.dhcp,
165
+ ips: server.entities.nics.items.first.properties.ips.join(','),
166
+ firewall_type: server.entities.nics.items.first.properties.firewall_type,
167
+ }
168
+
169
+ subject_config.each { |key, value| subject.config[key] = value }
170
+
171
+ expect(subject).to receive(:puts).with("ID: #{server.id}")
172
+ expect(subject).to receive(:puts).with("Name: #{server.properties.name}")
173
+ expect(subject).to receive(:puts).with("Type: #{server.properties.type}")
174
+ expect(subject).to receive(:puts).with("Cores: #{server.properties.cores}")
175
+ expect(subject).to receive(:puts).with("CPU Family: #{server.properties.cpu_family}")
176
+ expect(subject).to receive(:puts).with("Ram: #{server.properties.ram}")
177
+ expect(subject).to receive(:puts).with("Availability Zone: #{server.properties.availability_zone}")
178
+ expect(subject).to receive(:puts).with("Boot Volume: #{server.entities.volumes.items.first.id}")
179
+ expect(subject).to receive(:puts).with("Boot CDROM: ")
180
+
181
+ expected_properties = server.properties.to_hash
182
+ expected_properties.delete(:bootCdrom)
183
+ expected_properties.delete(:bootVolume)
184
+ expected_properties.delete(:cores)
185
+ expected_properties.delete(:ram)
186
+ expected_properties[:type] = 'CUBE'
187
+ expected_properties[:templateUuid] = template.id
188
+
189
+ expected_entities = server.entities.to_hash
190
+ expected_entities[:volumes][:items][0].delete(:id)
191
+ expected_entities[:volumes][:items][0][:properties].delete(:size)
192
+ expected_entities[:volumes][:items][0][:properties].delete(:availabilityZone)
193
+ expected_entities[:nics][:items][0].delete(:id)
194
+ expected_entities[:nics][:items][0].delete(:entities)
195
+ expected_entities[:nics][:items][0][:properties].delete(:mac)
196
+ expected_entities[:nics][:items][0][:properties].delete(:firewallActive)
197
+ expected_entities[:nics][:items][0][:properties].delete(:deviceNumber)
198
+ expected_entities[:nics][:items][0][:properties].delete(:pciSlot)
199
+
200
+ expected_entities[:volumes][:items][0][:properties].delete(:licenceType)
201
+ expected_entities[:volumes][:items][0][:properties][:image] = subject_config[:image]
202
+ expected_entities[:volumes][:items][0][:properties][:imagePassword] = subject_config[:image_password]
203
+
204
+ server.properties.boot_volume = Ionoscloud::ResourceReference.new({ id: server.entities.volumes.items.first.id })
205
+
206
+ mock_wait_for(subject)
207
+ mock_call_api(
208
+ subject,
209
+ [
210
+ {
211
+ method: 'POST',
212
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers",
213
+ operation: :'ServersApi.datacenters_servers_post',
214
+ return_type: 'Server',
215
+ body: { properties: expected_properties, entities: expected_entities },
216
+ result: server,
217
+ },
218
+ {
219
+ method: 'GET',
220
+ path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{server.id}",
221
+ operation: :'ServersApi.datacenters_servers_find_by_id',
222
+ return_type: 'Server',
223
+ result: server,
224
+ },
225
+ ],
226
+ )
227
+
228
+ expect { subject.run }.not_to raise_error(Exception)
229
+ end
230
+
231
+ it 'should not make any call if any required option is missing' do
232
+ required_options = subject.instance_variable_get(:@required_options)
233
+
234
+ arrays_without_one_element(required_options).each do |test_case|
235
+
236
+ test_case[:array].each { |value| subject.config[value] = 'test' }
237
+
238
+ expect(subject).to receive(:puts).with("Missing required parameters #{test_case[:removed]}")
239
+ expect(subject.api_client).not_to receive(:call_api)
240
+
241
+ expect { subject.run }.to raise_error(SystemExit) do |error|
242
+ expect(error.status).to eq(1)
243
+ end
244
+
245
+ required_options.each { |value| subject.config[value] = nil }
246
+ end
247
+ end
248
+ end
249
+ end
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudDatacenterCreate do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call DataCenterApi.datacenters_post with the expected arguments and output based on what it receives' do
15
+ it 'should call DataCentersApi.datacenters_post with the expected arguments and output based on what it receives' do
16
16
  datacenter = datacenter_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -29,12 +29,10 @@ describe Chef::Knife::IonoscloudDatacenterCreate do
29
29
  expect(subject).to receive(:puts).with("Name: #{datacenter.properties.name}")
30
30
  expect(subject).to receive(:puts).with("Description: #{datacenter.properties.description}")
31
31
  expect(subject).to receive(:puts).with("Location: #{datacenter.properties.location}")
32
- expect(subject).to receive(:puts).with("Version: #{datacenter.properties.version}")
33
- expect(subject).to receive(:puts).with("Features: #{datacenter.properties.features}")
34
- expect(subject).to receive(:puts).with("Sec Auth Protection: #{datacenter.properties.sec_auth_protection}")
35
32
 
36
33
  expected_body = datacenter.properties.to_hash
37
34
  expected_body.delete(:version)
35
+ expected_body.delete(:cpuArchitecture)
38
36
 
39
37
  mock_wait_for(subject)
40
38
  mock_call_api(
@@ -43,18 +41,11 @@ describe Chef::Knife::IonoscloudDatacenterCreate do
43
41
  {
44
42
  method: 'POST',
45
43
  path: '/datacenters',
46
- operation: :'DataCenterApi.datacenters_post',
44
+ operation: :'DataCentersApi.datacenters_post',
47
45
  return_type: 'Datacenter',
48
46
  body: { properties: expected_body },
49
47
  result: datacenter,
50
48
  },
51
- {
52
- method: 'GET',
53
- path: "/datacenters/#{datacenter.id}",
54
- operation: :'DataCenterApi.datacenters_find_by_id',
55
- return_type: 'Datacenter',
56
- result: datacenter,
57
- },
58
49
  ],
59
50
  )
60
51