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
@@ -87,6 +87,20 @@ class Chef
87
87
  long: '--ssh-keys SSHKEY1,SSHKEY2,...',
88
88
  description: 'A list of public SSH keys to include'
89
89
 
90
+ option :backupunit_id,
91
+ short: '-B BACKUPUNIT_ID',
92
+ long: '--backupunit BACKUPUNIT_ID',
93
+ description: 'The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed '\
94
+ 'to be set on a new volume creation. It is mandatory to provide either \'public image\' or \'imageAlias\' in '\
95
+ 'conjunction with this property.'
96
+
97
+ option :user_data,
98
+ short: '-u USER_DATA',
99
+ long: '--user-data USER_DATA',
100
+ description: 'The cloud-init configuration for the volume as base64 encoded string. The property is '\
101
+ 'immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either \'public image\' '\
102
+ 'or \'imageAlias\' that has cloud-init compatibility in conjunction with this property.'
103
+
90
104
  option :nic_name,
91
105
  long: '--nic-name NAME',
92
106
  description: 'Name of the NIC'
@@ -108,9 +122,11 @@ class Chef
108
122
  long: '--lan ID',
109
123
  description: 'The LAN ID the NIC will reside on; if the LAN ID does not exist it will be created'
110
124
 
111
- option :nat,
112
- long: '--nat',
113
- description: 'Set to enable NAT on the NIC'
125
+ option :firewall_type,
126
+ long: '--firewall-type FIREWALL_TYPE',
127
+ description: 'The type of firewall rules that will be allowed on the NIC. If it is not specified it will take the '\
128
+ 'default value INGRESS',
129
+ default: 'INGRESS'
114
130
 
115
131
  attr_reader :description, :required_options
116
132
 
@@ -125,11 +141,10 @@ class Chef
125
141
 
126
142
  def run
127
143
  $stdout.sync = true
128
- handle_extra_config
129
144
  validate_required_params(@required_options, config)
130
145
 
131
- config[:ssh_keys] = config[:ssh_keys].split(',') if config[:ssh_keys] && config[:ssh_keys].instance_of?(String)
132
- config[:ips] = config[:ips].split(',') if config[:ips] && config[:ips].instance_of?(String)
146
+ config[:ssh_keys] = config[:ssh_keys].split(',') if config[:ssh_keys]
147
+ config[:ips] = config[:ips].split(',') if config[:ips]
133
148
 
134
149
  print ui.color('Creating composite server...', :magenta).to_s
135
150
 
@@ -145,6 +160,8 @@ class Chef
145
160
  type: config[:type],
146
161
  licence_type: config[:licence_type],
147
162
  availability_zone: config[:volume_availability_zone],
163
+ backupunit_id: config[:backupunit_id],
164
+ user_data: config[:user_data],
148
165
  }.compact)
149
166
  )
150
167
 
@@ -154,7 +171,7 @@ class Chef
154
171
  ips: config[:ips],
155
172
  dhcp: config[:dhcp],
156
173
  lan: config[:lan],
157
- nat: !config[:nat].nil?,
174
+ firewall_type: config[:firewall_type],
158
175
  }.compact)
159
176
  )
160
177
 
@@ -176,14 +193,26 @@ class Chef
176
193
  ),
177
194
  )
178
195
 
179
- server_api = Ionoscloud::ServerApi.new(api_client)
196
+ server_api = Ionoscloud::ServersApi.new(api_client)
180
197
 
181
198
  server, _, headers = server_api.datacenters_servers_post_with_http_info(config[:datacenter_id], server)
182
199
 
183
200
  dot = ui.color('.', :magenta)
184
201
  api_client.wait_for { print dot; is_done? get_request_id headers }
185
202
 
186
- print_server(server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id))
203
+ server = server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id)
204
+
205
+ puts "\n"
206
+ puts "#{ui.color('ID', :cyan)}: #{server.id}"
207
+ puts "#{ui.color('Name', :cyan)}: #{server.properties.name}"
208
+ puts "#{ui.color('Cores', :cyan)}: #{server.properties.cores}"
209
+ puts "#{ui.color('CPU Family', :cyan)}: #{server.properties.cpu_family}"
210
+ puts "#{ui.color('Ram', :cyan)}: #{server.properties.ram}"
211
+ puts "#{ui.color('Availability Zone', :cyan)}: #{server.properties.availability_zone}"
212
+ puts "#{ui.color('Boot Volume', :cyan)}: #{server.properties.boot_volume ? server.properties.boot_volume.id : ''}"
213
+ puts "#{ui.color('Boot CDROM', :cyan)}: #{server.properties.boot_cdrom ? server.properties.boot_cdrom.id : ''}"
214
+
215
+ puts 'done'
187
216
  end
188
217
  end
189
218
  end
@@ -18,33 +18,41 @@ class Chef
18
18
 
19
19
  def run
20
20
  $stdout.sync = true
21
- handle_extra_config
22
21
  validate_required_params(@required_options, config)
23
22
 
24
- contract = Ionoscloud::ContractApi.new(api_client).contracts_get()
23
+ contracts = Ionoscloud::ContractResourcesApi.new(api_client).contracts_get()
25
24
 
26
- puts "#{ui.color('Contract Type', :cyan)}: #{contract.type}"
27
- puts "#{ui.color('Contract Owner', :cyan)}: #{contract.properties.owner}"
28
- puts "#{ui.color('Contract Number', :cyan)}: #{contract.properties.contract_number}"
29
- puts "#{ui.color('Registration Domain', :cyan)}: #{contract.properties.reg_domain}"
30
- puts "#{ui.color('Status', :cyan)}: #{contract.properties.status}"
31
- puts "#{ui.color('Cores per contract', :cyan)}: #{contract.properties.resource_limits.cores_per_contract}"
32
- puts "#{ui.color('Cores per server', :cyan)}: #{contract.properties.resource_limits.cores_per_server}"
33
- puts "#{ui.color('Cores provisioned', :cyan)}: #{contract.properties.resource_limits.cores_provisioned}"
34
- puts "#{ui.color('HDD limit per contract', :cyan)}: #{contract.properties.resource_limits.hdd_limit_per_contract}"
35
- puts "#{ui.color('HDD limit per volume', :cyan)}: #{contract.properties.resource_limits.hdd_limit_per_volume}"
36
- puts "#{ui.color('HDD volume provisioned', :cyan)}: #{contract.properties.resource_limits.hdd_volume_provisioned}"
37
- puts "#{ui.color('RAM per contract', :cyan)}: #{contract.properties.resource_limits.ram_per_contract}"
38
- puts "#{ui.color('RAM per server', :cyan)}: #{contract.properties.resource_limits.ram_per_server}"
39
- puts "#{ui.color('RAM provisioned', :cyan)}: #{contract.properties.resource_limits.ram_provisioned}"
40
- puts "#{ui.color('Reservable IPs', :cyan)}: #{contract.properties.resource_limits.reservable_ips}"
41
- puts "#{ui.color('Reservable IPs in use', :cyan)}: #{contract.properties.resource_limits.reserved_ips_in_use}"
42
- puts "#{ui.color('Reservable IPs on contract', :cyan)}: #{contract.properties.resource_limits.reserved_ips_on_contract}"
43
- puts "#{ui.color('SSD limit per contract', :cyan)}: #{contract.properties.resource_limits.ssd_limit_per_contract}"
44
- puts "#{ui.color('SSD limit per volume', :cyan)}: #{contract.properties.resource_limits.ssd_limit_per_volume}"
45
- puts "#{ui.color('SSD volume provisioned', :cyan)}: #{contract.properties.resource_limits.ssd_volume_provisioned}"
46
- puts "#{ui.color('K8s Cluster Limit Total', :cyan)}: #{contract.properties.resource_limits.k8s_cluster_limit_total}"
47
- puts "#{ui.color('K8s Clusters provisioned', :cyan)}: #{contract.properties.resource_limits.k8s_clusters_provisioned}"
25
+ contracts.items.each do
26
+ |contract|
27
+ puts "#{ui.color('Contract Type', :cyan)}: #{contract.type}"
28
+ puts "#{ui.color('Contract Owner', :cyan)}: #{contract.properties.owner}"
29
+ puts "#{ui.color('Contract Number', :cyan)}: #{contract.properties.contract_number}"
30
+ puts "#{ui.color('Registration Domain', :cyan)}: #{contract.properties.reg_domain}"
31
+ puts "#{ui.color('Status', :cyan)}: #{contract.properties.status}"
32
+ puts "#{ui.color('Cores per contract', :cyan)}: #{contract.properties.resource_limits.cores_per_contract}"
33
+ puts "#{ui.color('Cores per server', :cyan)}: #{contract.properties.resource_limits.cores_per_server}"
34
+ puts "#{ui.color('Cores provisioned', :cyan)}: #{contract.properties.resource_limits.cores_provisioned}"
35
+ puts "#{ui.color('HDD limit per contract', :cyan)}: #{contract.properties.resource_limits.hdd_limit_per_contract}"
36
+ puts "#{ui.color('HDD limit per volume', :cyan)}: #{contract.properties.resource_limits.hdd_limit_per_volume}"
37
+ puts "#{ui.color('HDD volume provisioned', :cyan)}: #{contract.properties.resource_limits.hdd_volume_provisioned}"
38
+ puts "#{ui.color('RAM per contract', :cyan)}: #{contract.properties.resource_limits.ram_per_contract}"
39
+ puts "#{ui.color('RAM per server', :cyan)}: #{contract.properties.resource_limits.ram_per_server}"
40
+ puts "#{ui.color('RAM provisioned', :cyan)}: #{contract.properties.resource_limits.ram_provisioned}"
41
+ puts "#{ui.color('Reservable IPs', :cyan)}: #{contract.properties.resource_limits.reservable_ips}"
42
+ puts "#{ui.color('Reservable IPs in use', :cyan)}: #{contract.properties.resource_limits.reserved_ips_in_use}"
43
+ puts "#{ui.color('Reservable IPs on contract', :cyan)}: #{contract.properties.resource_limits.reserved_ips_on_contract}"
44
+ puts "#{ui.color('SSD limit per contract', :cyan)}: #{contract.properties.resource_limits.ssd_limit_per_contract}"
45
+ puts "#{ui.color('SSD limit per volume', :cyan)}: #{contract.properties.resource_limits.ssd_limit_per_volume}"
46
+ puts "#{ui.color('SSD volume provisioned', :cyan)}: #{contract.properties.resource_limits.ssd_volume_provisioned}"
47
+ puts "#{ui.color('DAS volume provisioned', :cyan)}: #{contract.properties.resource_limits.das_volume_provisioned}"
48
+ puts "#{ui.color('K8s Cluster Limit Total', :cyan)}: #{contract.properties.resource_limits.k8s_cluster_limit_total}"
49
+ puts "#{ui.color('K8s Clusters provisioned', :cyan)}: #{contract.properties.resource_limits.k8s_clusters_provisioned}"
50
+ puts "#{ui.color('NLB total limit', :cyan)}: #{contract.properties.resource_limits.nlb_limit_total}"
51
+ puts "#{ui.color('NLBs provisioned', :cyan)}: #{contract.properties.resource_limits.nlb_provisioned}"
52
+ puts "#{ui.color('NAT gateway total limit', :cyan)}: #{contract.properties.resource_limits.nat_gateway_limit_total}"
53
+ puts "#{ui.color('NAT gateways provisioned', :cyan)}: #{contract.properties.resource_limits.nat_gateway_provisioned}"
54
+ puts "\n"
55
+ end
48
56
  end
49
57
  end
50
58
  end
@@ -0,0 +1,215 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudCubeServerCreate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud cube server create (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'Name of the virtual datacenter'
14
+
15
+ option :name,
16
+ short: '-n NAME',
17
+ long: '--name NAME',
18
+ description: '(required) Name of the server'
19
+
20
+ option :template,
21
+ long: '--template TEMPLATE_UUID',
22
+ description: 'The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource'
23
+
24
+ option :cpu_family,
25
+ short: '-f CPU_FAMILY',
26
+ long: '--cpu-family CPU_FAMILY',
27
+ description: 'The family of processor cores (INTEL_XEON or AMD_OPTERON)',
28
+ default: 'INTEL_SKYLAKE'
29
+
30
+ option :availability_zone,
31
+ short: '-a AVAILABILITY_ZONE',
32
+ long: '--availability-zone AVAILABILITY_ZONE',
33
+ description: 'The availability zone of the server',
34
+ default: 'AUTO'
35
+
36
+ option :volume_name,
37
+ long: '--volume-name NAME',
38
+ description: 'Name of the volume'
39
+
40
+ option :bus,
41
+ short: '-b BUS',
42
+ long: '--bus BUS',
43
+ description: 'The bus type of the volume (VIRTIO or IDE)'
44
+
45
+ option :image,
46
+ short: '-N ID',
47
+ long: '--image ID',
48
+ description: '(required) The image or snapshot ID'
49
+
50
+ option :licence_type,
51
+ short: '-l LICENCE',
52
+ long: '--licence-type LICENCE',
53
+ description: 'The licence type of the volume (LINUX, WINDOWS, WINDOWS2016, UNKNOWN, OTHER)'
54
+
55
+ option :image_password,
56
+ short: '-P PASSWORD',
57
+ long: '--image-password PASSWORD',
58
+ description: 'The password set on the image for the "root" or "Administrator" user'
59
+
60
+ option :ssh_keys,
61
+ short: '-K SSHKEY[,SSHKEY,...]',
62
+ long: '--ssh-keys SSHKEY1,SSHKEY2,...',
63
+ description: 'A list of public SSH keys to include'
64
+
65
+ option :backupunit_id,
66
+ short: '-B BACKUPUNIT_ID',
67
+ long: '--backupunit BACKUPUNIT_ID',
68
+ description: 'The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed '\
69
+ 'to be set on a new volume creation. It is mandatory to provide either \'public image\' or \'imageAlias\' in '\
70
+ 'conjunction with this property.'
71
+
72
+ option :user_data,
73
+ short: '-u USER_DATA',
74
+ long: '--user-data USER_DATA',
75
+ description: 'The cloud-init configuration for the volume as base64 encoded string. The property is '\
76
+ 'immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either \'public image\' '\
77
+ 'or \'imageAlias\' that has cloud-init compatibility in conjunction with this property.'
78
+
79
+ option :set_boot,
80
+ long: '--set-boot',
81
+ description: 'Whether to set the volume as the boot volume'
82
+
83
+ option :nic_name,
84
+ long: '--nic-name NAME',
85
+ description: 'Name of the NIC'
86
+
87
+ option :ips,
88
+ short: '-i IP[,IP,...]',
89
+ long: '--ips IP[,IP,...]',
90
+ description: 'IPs assigned to the NIC'
91
+
92
+ option :dhcp,
93
+ short: '-h',
94
+ long: '--dhcp',
95
+ boolean: true | false,
96
+ default: true,
97
+ description: 'Set to false if you wish to disable DHCP'
98
+
99
+ option :lan,
100
+ short: '-L ID',
101
+ long: '--lan ID',
102
+ description: 'The LAN ID the NIC will reside on; if the LAN ID does not exist it will be created'
103
+
104
+ option :firewall_type,
105
+ short: '-t FIREWALL_TYPE',
106
+ long: '--firewall-type FIREWALL_TYPE',
107
+ description: 'The type of firewall rules that will be allowed on the NIC. If it is not specified it will take the '\
108
+ 'default value INGRESS',
109
+ default: 'INGRESS'
110
+
111
+ attr_reader :description, :required_options
112
+
113
+ def initialize(args = [])
114
+ super(args)
115
+ @description =
116
+ 'This creates a new cube server with an attached volume and NIC in a specified virtual data center.'
117
+ @required_options = [
118
+ :datacenter_id, :name, :template, :ionoscloud_username, :ionoscloud_password,
119
+ ]
120
+ end
121
+
122
+ def run
123
+ $stdout.sync = true
124
+ validate_required_params(@required_options, config)
125
+
126
+ config[:ssh_keys] = config[:ssh_keys].split(',') if config[:ssh_keys]
127
+ config[:ips] = config[:ips].split(',') if config[:ips]
128
+
129
+ print ui.color('Creating cube server...', :magenta).to_s
130
+
131
+ volumes = [Ionoscloud::Volume.new(
132
+ properties: Ionoscloud::VolumeProperties.new({
133
+ name: config[:volume_name],
134
+ bus: config[:bus] || 'VIRTIO',
135
+ image: config[:image],
136
+ ssh_keys: config[:ssh_keys],
137
+ image_password: config[:image_password],
138
+ type: 'DAS',
139
+ licence_type: config[:licence_type],
140
+ backupunit_id: config[:backupunit_id],
141
+ user_data: config[:user_data],
142
+ }.compact)
143
+ )]
144
+
145
+ nics = []
146
+
147
+ if config[:nic_name] || config[:ips] || config[:dhcp] || config[:lan]
148
+ nics = [
149
+ Ionoscloud::Nic.new(
150
+ properties: Ionoscloud::NicProperties.new({
151
+ name: config[:nic_name],
152
+ ips: config[:ips],
153
+ dhcp: config[:dhcp],
154
+ lan: config[:lan],
155
+ firewall_type: config[:firewall_type],
156
+ }.compact)
157
+ )
158
+ ]
159
+ end
160
+
161
+ server = Ionoscloud::Server.new(
162
+ properties: Ionoscloud::ServerProperties.new({
163
+ name: config[:name],
164
+ type: 'CUBE',
165
+ template_uuid: config[:template],
166
+ cpu_family: config[:cpu_family],
167
+ ram: config[:ram],
168
+ availability_zone: config[:availability_zone],
169
+ }.compact),
170
+ entities: Ionoscloud::ServerEntities.new(
171
+ volumes: {
172
+ items: volumes,
173
+ },
174
+ nics: {
175
+ items: nics,
176
+ },
177
+ ),
178
+ )
179
+
180
+ server_api = Ionoscloud::ServersApi.new(api_client)
181
+
182
+ server, _, headers = server_api.datacenters_servers_post_with_http_info(config[:datacenter_id], server)
183
+
184
+ dot = ui.color('.', :magenta)
185
+ api_client.wait_for { print dot; is_done? get_request_id headers }
186
+
187
+ server = server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id, depth: 1)
188
+
189
+ if config[:set_boot]
190
+ changes = Ionoscloud::ServerProperties.new(boot_volume: { id: server.entities.volumes.items[0].id })
191
+ _, _, headers = server_api.datacenters_servers_patch_with_http_info(
192
+ config[:datacenter_id], server.id, changes,
193
+ )
194
+
195
+ api_client.wait_for { is_done? get_request_id headers }
196
+
197
+ server = server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id, depth: 1)
198
+ end
199
+
200
+ puts "\n"
201
+ puts "#{ui.color('ID', :cyan)}: #{server.id}"
202
+ puts "#{ui.color('Name', :cyan)}: #{server.properties.name}"
203
+ puts "#{ui.color('Type', :cyan)}: #{server.properties.type}"
204
+ puts "#{ui.color('Cores', :cyan)}: #{server.properties.cores}"
205
+ puts "#{ui.color('CPU Family', :cyan)}: #{server.properties.cpu_family}"
206
+ puts "#{ui.color('Ram', :cyan)}: #{server.properties.ram}"
207
+ puts "#{ui.color('Availability Zone', :cyan)}: #{server.properties.availability_zone}"
208
+ puts "#{ui.color('Boot Volume', :cyan)}: #{server.properties.boot_volume ? server.properties.boot_volume.id : ''}"
209
+ puts "#{ui.color('Boot CDROM', :cyan)}: #{server.properties.boot_cdrom ? server.properties.boot_cdrom.id : ''}"
210
+
211
+ puts 'done'
212
+ end
213
+ end
214
+ end
215
+ end
@@ -37,27 +37,29 @@ class Chef
37
37
 
38
38
  def run
39
39
  $stdout.sync = true
40
- handle_extra_config
41
40
  validate_required_params(@required_options, config)
42
41
 
43
42
  print "#{ui.color('Creating data center...', :magenta)}"
44
43
 
45
- datacenter_api = Ionoscloud::DataCenterApi.new(api_client)
44
+ datacenter_api = Ionoscloud::DataCentersApi.new(api_client)
46
45
 
47
- datacenter, _, headers = datacenter_api.datacenters_post_with_http_info(
48
- Ionoscloud::Datacenter.new(
49
- properties: Ionoscloud::DatacenterProperties.new(
50
- name: config[:name],
51
- description: config[:description],
52
- location: config[:location],
53
- ),
54
- ),
55
- )
46
+ datacenter, _, headers = datacenter_api.datacenters_post_with_http_info({
47
+ properties: {
48
+ name: config[:name],
49
+ description: config[:description],
50
+ location: config[:location],
51
+ }.compact,
52
+ })
56
53
 
57
54
  dot = ui.color('.', :magenta)
58
55
  api_client.wait_for { print dot; is_done? get_request_id headers }
59
56
 
60
- print_datacenter(datacenter_api.datacenters_find_by_id(datacenter.id))
57
+ puts "\n"
58
+ puts "#{ui.color('ID', :cyan)}: #{datacenter.id}"
59
+ puts "#{ui.color('Name', :cyan)}: #{datacenter.properties.name}"
60
+ puts "#{ui.color('Description', :cyan)}: #{datacenter.properties.description}"
61
+ puts "#{ui.color('Location', :cyan)}: #{datacenter.properties.location}"
62
+ puts 'done'
61
63
  end
62
64
  end
63
65
  end
@@ -20,10 +20,9 @@ class Chef
20
20
 
21
21
  def run
22
22
  $stdout.sync = true
23
- handle_extra_config
24
23
  validate_required_params(@required_options, config)
25
24
 
26
- datacenter_api = Ionoscloud::DataCenterApi.new(api_client)
25
+ datacenter_api = Ionoscloud::DataCentersApi.new(api_client)
27
26
 
28
27
  @name_args.each do |datacenter_id|
29
28
  begin
@@ -34,8 +33,14 @@ class Chef
34
33
  next
35
34
  end
36
35
 
37
- print_datacenter(datacenter)
36
+ msg_pair('ID', datacenter.id)
37
+ msg_pair('Name', datacenter.properties.name)
38
+ msg_pair('Description', datacenter.properties.description)
39
+ msg_pair('Location', datacenter.properties.location)
40
+ msg_pair('Version', datacenter.properties.version)
41
+
38
42
  puts "\n"
43
+
39
44
  begin
40
45
  confirm('Do you really want to delete this data center')
41
46
  rescue SystemExit => exc
@@ -23,7 +23,6 @@ class Chef
23
23
 
24
24
  def run
25
25
  $stdout.sync = true
26
- handle_extra_config
27
26
  validate_required_params(@required_options, config)
28
27
 
29
28
  datacenter_list = [
@@ -31,19 +30,19 @@ class Chef
31
30
  ui.color('Name', :bold),
32
31
  ui.color('Description', :bold),
33
32
  ui.color('Location', :bold),
33
+ ui.color('CPU Architectures', :bold),
34
34
  ui.color('Version', :bold),
35
- ui.color('Sec Auth Protection', :bold),
36
35
  ]
37
36
 
38
- datacenter_api = Ionoscloud::DataCenterApi.new(api_client)
37
+ datacenter_api = Ionoscloud::DataCentersApi.new(api_client)
39
38
 
40
39
  datacenter_api.datacenters_get({ depth: 1 }).items.each do |datacenter|
41
40
  datacenter_list << datacenter.id
42
41
  datacenter_list << datacenter.properties.name
43
42
  datacenter_list << datacenter.properties.description || ''
44
43
  datacenter_list << datacenter.properties.location
44
+ datacenter_list << datacenter.properties.cpu_architecture.map { |arch| arch.cpu_family }
45
45
  datacenter_list << datacenter.properties.version.to_s
46
- datacenter_list << datacenter.properties.sec_auth_protection.to_s
47
46
  end
48
47
 
49
48
  puts ui.list(datacenter_list, :uneven_columns_across, 6)
@@ -25,7 +25,7 @@ class Chef
25
25
  option :name,
26
26
  short: '-n NAME',
27
27
  long: '--name NAME',
28
- description: 'Name of the Firewall Rule'
28
+ description: 'Name of the NIC'
29
29
 
30
30
  option :protocol,
31
31
  short: '-P PROTOCOL',
@@ -57,7 +57,6 @@ class Chef
57
57
  description: 'Defines the start range of the allowed port(s)'
58
58
 
59
59
  option :port_range_end,
60
- short: '-t PORT',
61
60
  long: '--port-range-end PORT',
62
61
  description: 'Defines the end range of the allowed port(s)'
63
62
 
@@ -71,6 +70,12 @@ class Chef
71
70
  description: 'Defines the allowed code (from 0 to 254) if the' \
72
71
  ' protocol ICMP is chosen; null allows all codes'
73
72
 
73
+ option :type,
74
+ short: '--t TYPE',
75
+ long: '--type TYPE',
76
+ description: 'The type of firewall rule. If is not specified, it will take the default value INGRESS',
77
+ default: 'INGRESS'
78
+
74
79
  attr_reader :description, :required_options
75
80
 
76
81
  def initialize(args = [])
@@ -82,7 +87,6 @@ class Chef
82
87
 
83
88
  def run
84
89
  $stdout.sync = true
85
- handle_extra_config
86
90
  validate_required_params(@required_options, config)
87
91
 
88
92
  print "#{ui.color('Creating firewall...', :magenta)}"
@@ -97,11 +101,12 @@ class Chef
97
101
  port_range_end: config[:port_range_end],
98
102
  icmp_type: config[:icmp_type],
99
103
  icmp_code: config[:icmp_code],
104
+ type: config[:type]
100
105
  }
101
106
 
102
- nic_api = Ionoscloud::NicApi.new(api_client)
107
+ firewallrules_api = Ionoscloud::FirewallRulesApi.new(api_client)
103
108
 
104
- firewall, _, headers = nic_api.datacenters_servers_nics_firewallrules_post_with_http_info(
109
+ firewall, _, headers = firewallrules_api.datacenters_servers_nics_firewallrules_post_with_http_info(
105
110
  config[:datacenter_id],
106
111
  config[:server_id],
107
112
  config[:nic_id],
@@ -111,14 +116,26 @@ class Chef
111
116
  dot = ui.color('.', :magenta)
112
117
  api_client.wait_for { print dot; is_done? get_request_id headers }
113
118
 
114
- firewall = nic_api.datacenters_servers_nics_firewallrules_find_by_id(
119
+ firewall = firewallrules_api.datacenters_servers_nics_firewallrules_find_by_id(
115
120
  config[:datacenter_id],
116
121
  config[:server_id],
117
122
  config[:nic_id],
118
123
  firewall.id,
119
124
  )
120
125
 
121
- print_firewall_rule(firewall)
126
+ puts "\n"
127
+ puts "#{ui.color('ID', :cyan)}: #{firewall.id}"
128
+ puts "#{ui.color('Name', :cyan)}: #{firewall.properties.name}"
129
+ puts "#{ui.color('Protocol', :cyan)}: #{firewall.properties.protocol}"
130
+ puts "#{ui.color('Source MAC', :cyan)}: #{firewall.properties.source_mac}"
131
+ puts "#{ui.color('Source IP', :cyan)}: #{firewall.properties.source_ip}"
132
+ puts "#{ui.color('Target IP', :cyan)}: #{firewall.properties.target_ip}"
133
+ puts "#{ui.color('Port Range Start', :cyan)}: #{firewall.properties.port_range_start}"
134
+ puts "#{ui.color('Port Range End', :cyan)}: #{firewall.properties.port_range_end}"
135
+ puts "#{ui.color('ICMP Type', :cyan)}: #{firewall.properties.icmp_type}"
136
+ puts "#{ui.color('ICMP Code', :cyan)}: #{firewall.properties.icmp_code}"
137
+ puts "#{ui.color('Type', :cyan)}: #{firewall.properties.type}"
138
+ puts 'done'
122
139
  end
123
140
  end
124
141
  end
@@ -33,14 +33,13 @@ class Chef
33
33
 
34
34
  def run
35
35
  $stdout.sync = true
36
- handle_extra_config
37
36
  validate_required_params(@required_options, config)
38
37
 
39
- nic_api = Ionoscloud::NicApi.new(api_client)
38
+ firewallrules_api = Ionoscloud::FirewallRulesApi.new(api_client)
40
39
 
41
40
  @name_args.each do |firewall_id|
42
41
  begin
43
- firewall = nic_api.datacenters_servers_nics_firewallrules_find_by_id(
42
+ firewall = firewallrules_api.datacenters_servers_nics_firewallrules_find_by_id(
44
43
  config[:datacenter_id], config[:server_id], config[:nic_id], firewall_id,
45
44
  )
46
45
  rescue Ionoscloud::ApiError => err
@@ -49,8 +48,17 @@ class Chef
49
48
  next
50
49
  end
51
50
 
52
- print_firewall_rule(firewall)
53
- puts "\n"
51
+ msg_pair('ID', firewall.id)
52
+ msg_pair('Name', firewall.properties.name)
53
+ msg_pair('Protocol', firewall.properties.protocol)
54
+ msg_pair('Source MAC', firewall.properties.source_mac)
55
+ msg_pair('Source IP', firewall.properties.source_ip)
56
+ msg_pair('Target IP', firewall.properties.target_ip)
57
+ msg_pair('Port Range Start', firewall.properties.port_range_start)
58
+ msg_pair('Port Range End', firewall.properties.port_range_end)
59
+ msg_pair('ICMP Type', firewall.properties.icmp_type)
60
+ msg_pair('ICMP Code', firewall.properties.icmp_code)
61
+ msg_pair('Type', firewall.properties.type)
54
62
 
55
63
  begin
56
64
  confirm('Do you really want to delete this firewall rule')
@@ -58,7 +66,7 @@ class Chef
58
66
  next
59
67
  end
60
68
 
61
- _, _, headers = nic_api.datacenters_servers_nics_firewallrules_delete_with_http_info(
69
+ _, _, headers = firewallrules_api.datacenters_servers_nics_firewallrules_delete_with_http_info(
62
70
  config[:datacenter_id], config[:server_id], config[:nic_id], firewall_id,
63
71
  )
64
72
  ui.warn("Deleted Firewall rule #{firewall.id}. Request ID: #{get_request_id headers}")
@@ -33,7 +33,6 @@ class Chef
33
33
 
34
34
  def run
35
35
  $stdout.sync = true
36
- handle_extra_config
37
36
  validate_required_params(@required_options, config)
38
37
 
39
38
  firewall_list = [
@@ -47,11 +46,12 @@ class Chef
47
46
  ui.color('Port Range End', :bold),
48
47
  ui.color('ICMP Type', :bold),
49
48
  ui.color('ICMP CODE', :bold),
49
+ ui.color('Type', :bold),
50
50
  ]
51
51
 
52
- nic_api = Ionoscloud::NicApi.new(api_client)
52
+ firewallrules_api = Ionoscloud::FirewallRulesApi.new(api_client)
53
53
 
54
- nic_api.datacenters_servers_nics_firewallrules_get(
54
+ firewallrules_api.datacenters_servers_nics_firewallrules_get(
55
55
  config[:datacenter_id], config[:server_id], config[:nic_id], { depth: 1 }
56
56
  ).items.each do |firewall|
57
57
  firewall_list << firewall.id
@@ -64,9 +64,10 @@ class Chef
64
64
  firewall_list << firewall.properties.port_range_end.to_s
65
65
  firewall_list << firewall.properties.icmp_type.to_s
66
66
  firewall_list << firewall.properties.icmp_code.to_s
67
+ firewall_list << firewall.properties.type.to_s
67
68
  end
68
69
 
69
- puts ui.list(firewall_list, :uneven_columns_across, 10)
70
+ puts ui.list(firewall_list, :uneven_columns_across, 11)
70
71
  end
71
72
  end
72
73
  end