knife-ionoscloud 5.1.1 → 6.0.0.beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. checksums.yaml +4 -4
  2. data/docs/README.md +1 -1
  3. data/docs/subcommands/composite_server_create.md +9 -3
  4. data/docs/subcommands/cube_server_create.md +91 -0
  5. data/docs/subcommands/firewall_create.md +5 -2
  6. data/docs/subcommands/flowlog_create.md +63 -0
  7. data/docs/subcommands/flowlog_delete.md +51 -0
  8. data/docs/subcommands/flowlog_list.md +51 -0
  9. data/docs/subcommands/group_create.md +10 -1
  10. data/docs/subcommands/natgateway_create.md +41 -0
  11. data/docs/subcommands/natgateway_delete.md +35 -0
  12. data/docs/subcommands/natgateway_lan_add.md +46 -0
  13. data/docs/subcommands/natgateway_lan_remove.md +39 -0
  14. data/docs/subcommands/natgateway_list.md +35 -0
  15. data/docs/subcommands/natgateway_rule_add.md +66 -0
  16. data/docs/subcommands/natgateway_rule_list.md +38 -0
  17. data/docs/subcommands/natgateway_rule_remove.md +39 -0
  18. data/docs/subcommands/networkloadbalancer_create.md +54 -0
  19. data/docs/subcommands/networkloadbalancer_delete.md +35 -0
  20. data/docs/subcommands/networkloadbalancer_list.md +35 -0
  21. data/docs/subcommands/networkloadbalancer_rule_add.md +72 -0
  22. data/docs/subcommands/networkloadbalancer_rule_list.md +39 -0
  23. data/docs/subcommands/networkloadbalancer_rule_remove.md +39 -0
  24. data/docs/subcommands/networkloadbalancer_rule_target_add.md +64 -0
  25. data/docs/subcommands/networkloadbalancer_rule_target_list.md +43 -0
  26. data/docs/subcommands/networkloadbalancer_rule_target_remove.md +51 -0
  27. data/docs/subcommands/nic_create.md +3 -3
  28. data/docs/subcommands/nodepool_lan_add.md +49 -0
  29. data/docs/subcommands/nodepool_lan_remove.md +39 -0
  30. data/docs/subcommands/server_console.md +39 -0
  31. data/docs/subcommands/server_list.md +4 -1
  32. data/docs/subcommands/server_resume.md +35 -0
  33. data/docs/subcommands/server_suspend.md +35 -0
  34. data/docs/subcommands/server_token.md +39 -0
  35. data/docs/subcommands/server_upgrade.md +39 -0
  36. data/docs/subcommands/template_list.md +31 -0
  37. data/docs/subcommands/volume_create.md +2 -5
  38. data/docs/summary.md +29 -0
  39. data/knife-ionoscloud.gemspec +1 -1
  40. data/lib/chef/knife/ionoscloud_backupunit_create.rb +12 -16
  41. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +2 -5
  42. data/lib/chef/knife/ionoscloud_backupunit_get.rb +33 -0
  43. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -1
  44. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +1 -1
  45. data/lib/chef/knife/ionoscloud_backupunit_update.rb +62 -0
  46. data/lib/chef/knife/ionoscloud_base.rb +309 -1
  47. data/lib/chef/knife/ionoscloud_composite_server_create.rb +23 -5
  48. data/lib/chef/knife/ionoscloud_contract_list.rb +32 -23
  49. data/lib/chef/knife/ionoscloud_cube_server_create.rb +212 -0
  50. data/lib/chef/knife/ionoscloud_datacenter_create.rb +11 -14
  51. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +2 -7
  52. data/lib/chef/knife/ionoscloud_datacenter_get.rb +33 -0
  53. data/lib/chef/knife/ionoscloud_datacenter_list.rb +4 -2
  54. data/lib/chef/knife/ionoscloud_datacenter_update.rb +67 -0
  55. data/lib/chef/knife/ionoscloud_firewall_create.rb +16 -21
  56. data/lib/chef/knife/ionoscloud_firewall_delete.rb +5 -13
  57. data/lib/chef/knife/ionoscloud_firewall_get.rb +52 -0
  58. data/lib/chef/knife/ionoscloud_firewall_list.rb +5 -3
  59. data/lib/chef/knife/ionoscloud_firewall_update.rb +133 -0
  60. data/lib/chef/knife/ionoscloud_flowlog_create.rb +116 -0
  61. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +103 -0
  62. data/lib/chef/knife/ionoscloud_flowlog_get.rb +84 -0
  63. data/lib/chef/knife/ionoscloud_flowlog_list.rb +101 -0
  64. data/lib/chef/knife/ionoscloud_flowlog_update.rb +127 -0
  65. data/lib/chef/knife/ionoscloud_group_create.rb +33 -27
  66. data/lib/chef/knife/ionoscloud_group_delete.rb +1 -11
  67. data/lib/chef/knife/ionoscloud_group_get.rb +1 -13
  68. data/lib/chef/knife/ionoscloud_group_list.rb +19 -7
  69. data/lib/chef/knife/ionoscloud_group_update.rb +131 -0
  70. data/lib/chef/knife/ionoscloud_group_user_add.rb +1 -18
  71. data/lib/chef/knife/ionoscloud_group_user_remove.rb +1 -18
  72. data/lib/chef/knife/ionoscloud_image_list.rb +1 -1
  73. data/lib/chef/knife/ionoscloud_ipblock_create.rb +10 -13
  74. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +1 -4
  75. data/lib/chef/knife/ionoscloud_ipblock_get.rb +33 -0
  76. data/lib/chef/knife/ionoscloud_ipblock_update.rb +57 -0
  77. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +1 -1
  78. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +1 -1
  79. data/lib/chef/knife/ionoscloud_k8s_create.rb +27 -35
  80. data/lib/chef/knife/ionoscloud_k8s_delete.rb +1 -9
  81. data/lib/chef/knife/ionoscloud_k8s_get.rb +33 -0
  82. data/lib/chef/knife/ionoscloud_k8s_update.rb +99 -0
  83. data/lib/chef/knife/ionoscloud_label_add.rb +1 -1
  84. data/lib/chef/knife/ionoscloud_label_list.rb +1 -1
  85. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -1
  86. data/lib/chef/knife/ionoscloud_lan_create.rb +6 -14
  87. data/lib/chef/knife/ionoscloud_lan_delete.rb +3 -4
  88. data/lib/chef/knife/ionoscloud_lan_get.rb +38 -0
  89. data/lib/chef/knife/ionoscloud_lan_list.rb +2 -1
  90. data/lib/chef/knife/ionoscloud_lan_update.rb +76 -0
  91. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +4 -14
  92. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +2 -9
  93. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +3 -13
  94. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -1
  95. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +3 -15
  96. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +3 -16
  97. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +73 -0
  98. data/lib/chef/knife/ionoscloud_location_list.rb +5 -3
  99. data/lib/chef/knife/ionoscloud_natgateway_create.rb +60 -0
  100. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +54 -0
  101. data/lib/chef/knife/ionoscloud_natgateway_get.rb +42 -0
  102. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +74 -0
  103. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +52 -0
  104. data/lib/chef/knife/ionoscloud_natgateway_list.rb +51 -0
  105. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +107 -0
  106. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +65 -0
  107. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +55 -0
  108. data/lib/chef/knife/ionoscloud_natgateway_rule_update.rb +116 -0
  109. data/lib/chef/knife/ionoscloud_natgateway_update.rb +84 -0
  110. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +89 -0
  111. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +62 -0
  112. data/lib/chef/knife/ionoscloud_networkloadbalancer_get.rb +42 -0
  113. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +57 -0
  114. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +141 -0
  115. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +65 -0
  116. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +68 -0
  117. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +124 -0
  118. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +70 -0
  119. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +88 -0
  120. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_update.rb +148 -0
  121. data/lib/chef/knife/ionoscloud_networkloadbalancer_update.rb +98 -0
  122. data/lib/chef/knife/ionoscloud_nic_create.rb +17 -22
  123. data/lib/chef/knife/ionoscloud_nic_delete.rb +3 -7
  124. data/lib/chef/knife/ionoscloud_nic_get.rb +49 -0
  125. data/lib/chef/knife/ionoscloud_nic_list.rb +9 -5
  126. data/lib/chef/knife/ionoscloud_nic_update.rb +96 -0
  127. data/lib/chef/knife/ionoscloud_node_get.rb +49 -0
  128. data/lib/chef/knife/ionoscloud_node_list.rb +0 -1
  129. data/lib/chef/knife/ionoscloud_nodepool_create.rb +35 -48
  130. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +1 -7
  131. data/lib/chef/knife/ionoscloud_nodepool_get.rb +43 -0
  132. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +104 -0
  133. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +72 -0
  134. data/lib/chef/knife/ionoscloud_nodepool_list.rb +3 -1
  135. data/lib/chef/knife/ionoscloud_nodepool_update.rb +124 -0
  136. data/lib/chef/knife/ionoscloud_pcc_create.rb +12 -18
  137. data/lib/chef/knife/ionoscloud_pcc_delete.rb +2 -10
  138. data/lib/chef/knife/ionoscloud_pcc_get.rb +33 -0
  139. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -1
  140. data/lib/chef/knife/ionoscloud_pcc_update.rb +63 -0
  141. data/lib/chef/knife/ionoscloud_request_get.rb +40 -0
  142. data/lib/chef/knife/ionoscloud_request_list.rb +1 -1
  143. data/lib/chef/knife/ionoscloud_request_status.rb +1 -1
  144. data/lib/chef/knife/ionoscloud_s3key_create.rb +3 -7
  145. data/lib/chef/knife/ionoscloud_s3key_delete.rb +4 -7
  146. data/lib/chef/knife/ionoscloud_s3key_get.rb +38 -0
  147. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -2
  148. data/lib/chef/knife/ionoscloud_server_console.rb +43 -0
  149. data/lib/chef/knife/ionoscloud_server_create.rb +14 -26
  150. data/lib/chef/knife/ionoscloud_server_delete.rb +3 -9
  151. data/lib/chef/knife/ionoscloud_server_get.rb +43 -0
  152. data/lib/chef/knife/ionoscloud_server_list.rb +16 -5
  153. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -1
  154. data/lib/chef/knife/ionoscloud_server_resume.rb +44 -0
  155. data/lib/chef/knife/ionoscloud_server_start.rb +1 -1
  156. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -1
  157. data/lib/chef/knife/ionoscloud_server_suspend.rb +45 -0
  158. data/lib/chef/knife/ionoscloud_server_token.rb +43 -0
  159. data/lib/chef/knife/ionoscloud_server_update.rb +97 -0
  160. data/lib/chef/knife/ionoscloud_server_upgrade.rb +45 -0
  161. data/lib/chef/knife/ionoscloud_share_create.rb +7 -11
  162. data/lib/chef/knife/ionoscloud_share_delete.rb +2 -3
  163. data/lib/chef/knife/ionoscloud_share_get.rb +38 -0
  164. data/lib/chef/knife/ionoscloud_share_update.rb +70 -0
  165. data/lib/chef/knife/ionoscloud_snapshot_create.rb +2 -10
  166. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +2 -7
  167. data/lib/chef/knife/ionoscloud_snapshot_get.rb +32 -0
  168. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -1
  169. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +3 -14
  170. data/lib/chef/knife/ionoscloud_snapshot_update.rb +126 -0
  171. data/lib/chef/knife/ionoscloud_template_list.rb +47 -0
  172. data/lib/chef/knife/ionoscloud_user_create.rb +1 -8
  173. data/lib/chef/knife/ionoscloud_user_delete.rb +1 -6
  174. data/lib/chef/knife/ionoscloud_user_get.rb +32 -0
  175. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -1
  176. data/lib/chef/knife/ionoscloud_user_update.rb +92 -0
  177. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -1
  178. data/lib/chef/knife/ionoscloud_volume_create.rb +18 -34
  179. data/lib/chef/knife/ionoscloud_volume_delete.rb +3 -9
  180. data/lib/chef/knife/ionoscloud_volume_detach.rb +1 -1
  181. data/lib/chef/knife/ionoscloud_volume_get.rb +36 -0
  182. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -2
  183. data/lib/chef/knife/ionoscloud_volume_update.rb +106 -0
  184. data/lib/knife-ionoscloud/version.rb +1 -1
  185. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  186. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  187. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +65 -0
  188. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  189. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  190. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +78 -0
  191. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  192. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  193. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  194. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  195. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +6 -2
  196. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +8 -5
  197. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +69 -0
  198. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +5 -3
  199. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +82 -0
  200. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  201. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  202. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +77 -0
  203. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  204. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +117 -0
  205. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  206. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  207. data/spec/chef/knife/ionoscloud_flowlog_get_spec.rb +171 -0
  208. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  209. data/spec/chef/knife/ionoscloud_flowlog_update_spec.rb +244 -0
  210. data/spec/chef/knife/ionoscloud_group_create_spec.rb +9 -0
  211. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +6 -0
  212. data/spec/chef/knife/ionoscloud_group_get_spec.rb +6 -0
  213. data/spec/chef/knife/ionoscloud_group_list_spec.rb +26 -8
  214. data/spec/chef/knife/ionoscloud_group_update_spec.rb +121 -0
  215. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +6 -0
  216. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +6 -0
  217. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  218. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +66 -0
  219. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +79 -0
  220. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +4 -4
  221. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +7 -7
  222. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +7 -0
  223. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +16 -11
  224. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +72 -0
  225. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +114 -0
  226. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  227. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  228. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  229. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  230. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +4 -3
  231. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +7 -5
  232. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +68 -0
  233. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +2 -2
  234. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +87 -0
  235. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  236. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  237. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  238. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  239. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  240. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  241. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +89 -0
  242. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  243. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +92 -0
  244. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  245. data/spec/chef/knife/ionoscloud_natgateway_get_spec.rb +81 -0
  246. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +158 -0
  247. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +209 -0
  248. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  249. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +99 -0
  250. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  251. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +78 -0
  252. data/spec/chef/knife/ionoscloud_natgateway_rule_update_spec.rb +121 -0
  253. data/spec/chef/knife/ionoscloud_natgateway_update_spec.rb +121 -0
  254. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +93 -0
  255. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +120 -0
  256. data/spec/chef/knife/ionoscloud_networkloadbalancer_get_spec.rb +82 -0
  257. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  258. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +105 -0
  259. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  260. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +150 -0
  261. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +113 -0
  262. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  263. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +281 -0
  264. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_update_spec.rb +163 -0
  265. data/spec/chef/knife/ionoscloud_networkloadbalancer_update_spec.rb +107 -0
  266. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  267. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  268. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +72 -0
  269. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  270. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +97 -0
  271. data/spec/chef/knife/ionoscloud_node_get_spec.rb +70 -0
  272. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +10 -5
  273. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +14 -0
  274. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +83 -0
  275. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +222 -0
  276. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +196 -0
  277. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  278. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +134 -0
  279. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +11 -8
  280. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +7 -7
  281. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +71 -0
  282. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  283. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +83 -0
  284. data/spec/chef/knife/ionoscloud_request_get_spec.rb +69 -0
  285. data/spec/chef/knife/ionoscloud_request_list_spec.rb +16 -16
  286. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  287. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  288. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  289. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +66 -0
  290. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  291. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  292. data/spec/chef/knife/ionoscloud_server_create_spec.rb +6 -3
  293. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +8 -5
  294. data/spec/chef/knife/ionoscloud_server_get_spec.rb +74 -0
  295. data/spec/chef/knife/ionoscloud_server_list_spec.rb +63 -5
  296. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  297. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  298. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  299. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  300. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  301. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  302. data/spec/chef/knife/ionoscloud_server_update_spec.rb +105 -0
  303. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  304. data/spec/chef/knife/ionoscloud_share_get_spec.rb +66 -0
  305. data/spec/chef/knife/ionoscloud_share_update_spec.rb +91 -0
  306. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +15 -3
  307. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +17 -5
  308. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +79 -0
  309. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  310. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +12 -3
  311. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +113 -0
  312. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  313. data/spec/chef/knife/ionoscloud_user_create_spec.rb +3 -1
  314. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +4 -2
  315. data/spec/chef/knife/ionoscloud_user_get_spec.rb +70 -0
  316. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  317. data/spec/chef/knife/ionoscloud_user_update_spec.rb +110 -0
  318. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  319. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +21 -11
  320. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +15 -5
  321. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -5
  322. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +81 -0
  323. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  324. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +116 -0
  325. data/spec/spec_helper.rb +251 -39
  326. metadata +245 -6
@@ -37,20 +37,22 @@ class Chef
37
37
 
38
38
  print "#{ui.color('Creating private cross connect...', :magenta)}"
39
39
 
40
- pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
41
- config[:peers] = config[:peers].split(',') unless config[:peers].nil?
40
+ pcc_api = Ionoscloud::PrivateCrossConnectsApi.new(api_client)
41
+ config[:peers] = config[:peers].split(',') if config[:peers] && config[:peers].instance_of?(String)
42
42
 
43
43
  if config[:peers] && config[:peers].length % 2 != 0
44
44
  ui.error('Each Lan ID should correspond to one Datacenter ID!')
45
45
  exit(1)
46
46
  end
47
47
 
48
- pcc, _, headers = pcc_api.pccs_post_with_http_info({
49
- properties: {
50
- name: config[:name],
51
- description: config[:description],
52
- }.compact,
53
- })
48
+ pcc, _, headers = pcc_api.pccs_post_with_http_info(
49
+ Ionoscloud::PrivateCrossConnect.new(
50
+ properties: Ionoscloud::PrivateCrossConnectProperties.new(
51
+ name: config[:name],
52
+ description: config[:description],
53
+ ),
54
+ ),
55
+ )
54
56
 
55
57
  dot = ui.color('.', :magenta)
56
58
  api_client.wait_for { print dot; is_done? get_request_id headers }
@@ -58,7 +60,7 @@ class Chef
58
60
  pcc = pcc_api.pccs_find_by_id(pcc.id)
59
61
 
60
62
  if config[:peers]
61
- lan_api = Ionoscloud::LanApi.new(api_client)
63
+ lan_api = Ionoscloud::LansApi.new(api_client)
62
64
 
63
65
  header_list = []
64
66
  allowed_datacenters_ids = pcc.properties.connectable_datacenters.map { |datacenter| datacenter.id }
@@ -81,15 +83,7 @@ class Chef
81
83
  end
82
84
  end
83
85
 
84
- pcc = pcc_api.pccs_find_by_id(pcc.id)
85
-
86
- puts "\n"
87
- puts "#{ui.color('ID', :cyan)}: #{pcc.id}"
88
- puts "#{ui.color('Name', :cyan)}: #{pcc.properties.name}"
89
- puts "#{ui.color('Description', :cyan)}: #{pcc.properties.description}"
90
- puts "#{ui.color('Peers', :cyan)}: #{pcc.properties.peers.to_s}"
91
- puts "#{ui.color('Datacenters', :cyan)}: #{pcc.properties.connectable_datacenters.to_s}"
92
- puts 'done'
86
+ print_pcc(pcc_api.pccs_find_by_id(pcc.id))
93
87
  end
94
88
  end
95
89
  end
@@ -21,7 +21,7 @@ class Chef
21
21
  handle_extra_config
22
22
  validate_required_params(@required_options, config)
23
23
 
24
- pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
24
+ pcc_api = Ionoscloud::PrivateCrossConnectsApi.new(api_client)
25
25
 
26
26
  @name_args.each do |pcc_id|
27
27
  begin
@@ -32,15 +32,7 @@ class Chef
32
32
  next
33
33
  end
34
34
 
35
- peers = pcc.properties.peers.map { |peer| peer.id }
36
- datacenters = pcc.properties.connectable_datacenters.map { |datacenter| datacenter.id }
37
-
38
- msg_pair('ID', pcc.id)
39
- msg_pair('Name', pcc.properties.name)
40
- msg_pair('Description', pcc.properties.description)
41
- msg_pair('Peers', peers.to_s)
42
- msg_pair('Datacenters', datacenters.to_s)
43
-
35
+ print_pcc(pcc)
44
36
  puts "\n"
45
37
 
46
38
  begin
@@ -0,0 +1,33 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudPccGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud pcc get (options)'
9
+
10
+ option :pcc_id,
11
+ short: '-P PRIVATE_CROSS_CONNECT_ID',
12
+ long: '--pcc-id PRIVATE_CROSS_CONNECT_ID',
13
+ description: 'ID of the Private Cross Connect'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Retrieves information about a Ionoscloud Private Cross Connect.'
21
+ @required_options = [:pcc_id, :ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ handle_extra_config
27
+ validate_required_params(@required_options, config)
28
+
29
+ print_pcc(Ionoscloud::PrivateCrossConnectsApi.new(api_client).pccs_find_by_id(config[:pcc_id]))
30
+ end
31
+ end
32
+ end
33
+ end
@@ -27,7 +27,7 @@ class Chef
27
27
  ui.color('Description', :bold),
28
28
  ]
29
29
 
30
- pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
30
+ pcc_api = Ionoscloud::PrivateCrossConnectsApi.new(api_client)
31
31
 
32
32
  pcc_api.pccs_get({ depth: 1 }).items.each do |pcc|
33
33
  pcc_list << pcc.id
@@ -0,0 +1,63 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudPccUpdate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud pcc update (options)'
9
+
10
+ option :pcc_id,
11
+ short: '-P PRIVATE_CROSS_CONNECT_ID',
12
+ long: '--pcc-id PRIVATE_CROSS_CONNECT_ID',
13
+ description: 'ID of the Private Cross Connect'
14
+
15
+ option :name,
16
+ short: '-n NAME',
17
+ long: '--name NAME',
18
+ description: 'Name of the data center'
19
+
20
+ option :description,
21
+ long: '--description DESCRIPTION',
22
+ description: 'Description of the data center'
23
+
24
+ attr_reader :description, :required_options
25
+
26
+ def initialize(args = [])
27
+ super(args)
28
+ @description =
29
+ 'Updates information about a Ionoscloud Private Cross Connect. In order to add LANs to the Private Cross Connect one should'\
30
+ 'update the LAN and change the pcc property using the ```text\knife ionscloud lan update\n``` command.'
31
+ @required_options = [:pcc_id, :ionoscloud_username, :ionoscloud_password]
32
+ @updatable_fields = [:name, :description]
33
+ end
34
+
35
+ def run
36
+ $stdout.sync = true
37
+ handle_extra_config
38
+ validate_required_params(@required_options, config)
39
+
40
+ pcc_api = Ionoscloud::PrivateCrossConnectsApi.new(api_client)
41
+
42
+ if @updatable_fields.map { |el| config[el] }.any?
43
+ print "#{ui.color('Updating Private Cross Connect...', :magenta)}"
44
+
45
+ _, _, headers = pcc_api.pccs_patch_with_http_info(
46
+ config[:pcc_id],
47
+ Ionoscloud::PrivateCrossConnectProperties.new(
48
+ name: config[:name],
49
+ description: config[:description],
50
+ )
51
+ )
52
+
53
+ dot = ui.color('.', :magenta)
54
+ api_client.wait_for { print dot; is_done? get_request_id headers }
55
+ else
56
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
57
+ end
58
+
59
+ print_pcc(pcc_api.pccs_find_by_id(config[:pcc_id]))
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,40 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudRequestGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud request get (options)'
9
+
10
+ option :request_id,
11
+ short: '-R REQUEST_ID',
12
+ long: '--request-id REQUEST_ID',
13
+ description: 'The ID of the Request.'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Retrieves the properties of a specific request based on the supplied request id.'
21
+ @required_options = [:request_id, :ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ handle_extra_config
27
+ validate_required_params(@required_options, config)
28
+
29
+ request = Ionoscloud::RequestsApi.new(api_client).requests_find_by_id(config[:request_id], depth: 1)
30
+ puts "#{ui.color('ID', :cyan)}: #{request.id}"
31
+ puts "#{ui.color('Status', :cyan)}: #{request.metadata.request_status.metadata.status}"
32
+ puts "#{ui.color('Method', :cyan)}: #{request.properties.method}"
33
+ puts "#{ui.color('URL', :cyan)}: #{request.properties.url}"
34
+ puts "#{ui.color('Targets', :cyan)}: #{request.metadata.request_status.metadata.targets.map { |target| [target.target.id, target.target.type] }.to_s}"
35
+ puts "#{ui.color('Body', :cyan)}: #{request.properties.body}"
36
+ puts "#{ui.color('Headers', :cyan)}: #{request.properties.headers}"
37
+ end
38
+ end
39
+ end
40
+ end
@@ -52,7 +52,7 @@ class Chef
52
52
  ui.color('Targets', :bold),
53
53
  ]
54
54
 
55
- request_api = Ionoscloud::RequestApi.new(api_client)
55
+ request_api = Ionoscloud::RequestsApi.new(api_client)
56
56
 
57
57
  begin
58
58
  config[:limit] = Integer(config[:limit])
@@ -27,7 +27,7 @@ class Chef
27
27
  validate_required_params(@required_options, config)
28
28
 
29
29
  begin
30
- puts Ionoscloud::RequestApi.new(api_client).requests_status_get(config[:request_id]).metadata.status
30
+ puts Ionoscloud::RequestsApi.new(api_client).requests_status_get(config[:request_id]).metadata.status
31
31
  rescue Ionoscloud::ApiError => err
32
32
  raise err unless err.code == 404
33
33
  ui.error("Request ID #{config[:request_id]} not found.")
@@ -28,18 +28,14 @@ class Chef
28
28
 
29
29
  print "#{ui.color('Creating S3key...', :magenta)}"
30
30
 
31
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
31
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
32
32
 
33
- s3_key, _, headers = user_management_api.um_users_s3keys_post_with_http_info(config[:user_id])
33
+ s3_key, _, headers = user_s3keys_api.um_users_s3keys_post_with_http_info(config[:user_id])
34
34
 
35
35
  dot = ui.color('.', :magenta)
36
36
  api_client.wait_for { print dot; is_done? get_request_id headers }
37
37
 
38
- puts "\n"
39
- puts "#{ui.color('ID', :cyan)}: #{s3_key.id}"
40
- puts "#{ui.color('Secret Key', :cyan)}: #{s3_key.properties.secret_key}"
41
- puts "#{ui.color('Active', :cyan)}: #{s3_key.properties.active}"
42
- puts 'done'
38
+ print_s3key(s3_key)
43
39
  end
44
40
  end
45
41
  end
@@ -26,21 +26,18 @@ class Chef
26
26
  handle_extra_config
27
27
  validate_required_params(@required_options, config)
28
28
 
29
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
29
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
30
30
 
31
31
  @name_args.each do |s3key_id|
32
32
  begin
33
- s3_key = user_management_api.um_users_s3keys_find_by_key_id(config[:user_id], s3key_id)
33
+ s3_key = user_s3keys_api.um_users_s3keys_find_by_key_id(config[:user_id], s3key_id)
34
34
  rescue Ionoscloud::ApiError => err
35
35
  raise err unless err.code == 404
36
36
  ui.error("S3 key ID #{s3key_id} not found. Skipping.")
37
37
  next
38
38
  end
39
39
 
40
- msg_pair('ID', s3_key.id)
41
- msg_pair('Secret Key', s3_key.properties.secret_key)
42
- msg_pair('Active', s3_key.properties.active.to_s)
43
-
40
+ print_s3key(s3_key)
44
41
  puts "\n"
45
42
 
46
43
  begin
@@ -49,7 +46,7 @@ class Chef
49
46
  next
50
47
  end
51
48
 
52
- _, _, headers = user_management_api.um_users_s3keys_delete_with_http_info(config[:user_id], s3key_id)
49
+ _, _, headers = user_s3keys_api.um_users_s3keys_delete_with_http_info(config[:user_id], s3key_id)
53
50
  ui.warn("Deleted S3 key #{s3_key.id}. Request ID: #{get_request_id headers}")
54
51
  end
55
52
  end
@@ -0,0 +1,38 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudS3keyGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud s3key get (options)'
9
+
10
+ option :user_id,
11
+ short: '-u USER_ID',
12
+ long: '--user USER_ID',
13
+ description: 'The ID of the user'
14
+
15
+ option :s3_key_id,
16
+ short: '-S S3KEY_ID',
17
+ long: '--s3-key S3KEY_ID',
18
+ description: 'The ID of the S3 Key.'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Retrieves the properties of an S3 Key.'
26
+ @required_options = [:user_id, :s3_key_id, :ionoscloud_username, :ionoscloud_password]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ handle_extra_config
32
+ validate_required_params(@required_options, config)
33
+
34
+ print_s3key(Ionoscloud::UserS3KeysApi.new(api_client).um_users_s3keys_find_by_key_id(config[:user_id], config[:s3_key_id]))
35
+ end
36
+ end
37
+ end
38
+ end
@@ -32,9 +32,9 @@ class Chef
32
32
  ui.color('Active', :bold),
33
33
  ]
34
34
 
35
- user_management_api = Ionoscloud::UserManagementApi.new(api_client)
35
+ user_s3keys_api = Ionoscloud::UserS3KeysApi.new(api_client)
36
36
 
37
- user_management_api.um_users_s3keys_get(config[:user_id], { depth: 1 }).items.each do |s3_key|
37
+ user_s3keys_api.um_users_s3keys_get(config[:user_id], { depth: 1 }).items.each do |s3_key|
38
38
  s3key_list << s3_key.id
39
39
  s3key_list << s3_key.properties.secret_key
40
40
  s3key_list << s3_key.properties.active.to_s
@@ -0,0 +1,43 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerConsole < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server console (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'The ID of the Datacenter.'
14
+
15
+ option :server_id,
16
+ short: '-S SERVER_ID',
17
+ long: '--server-id SERVER_ID',
18
+ description: 'The ID of the Server.'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Returns the link with the jwToken to access the server remote console.'
26
+ @required_options = [:datacenter_id, :server_id, :ionoscloud_username, :ionoscloud_password]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ handle_extra_config
32
+ validate_required_params(@required_options, config)
33
+
34
+ begin
35
+ puts Ionoscloud::ServersApi.new(api_client).datacenters_servers_remote_console_get(config[:datacenter_id], config[:server_id]).url
36
+ rescue Ionoscloud::ApiError => err
37
+ raise err unless err.code == 404
38
+ ui.error("Server ID #{config[:server_id]} not found.")
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -65,40 +65,28 @@ class Chef
65
65
  validate_required_params(@required_options, config)
66
66
 
67
67
  print "#{ui.color('Creating server...', :magenta)}"
68
- params = {
69
- name: config[:name],
70
- cores: config[:cores],
71
- cpuFamily: config[:cpu_family],
72
- ram: config[:ram],
73
- availabilityZone: config[:availability_zone]
74
- }
75
68
 
76
- params[:bootCdrom] = { id: config[:boot_cdrom] } unless config[:boot_cdrom].nil?
77
- params[:bootVolume] = { id: config[:boot_volume] } unless config[:boot_volume].nil?
69
+ servers_api = Ionoscloud::ServersApi.new(api_client)
78
70
 
79
- server_api = Ionoscloud::ServerApi.new(api_client)
80
-
81
- server, _, headers = server_api.datacenters_servers_post_with_http_info(
71
+ server, _, headers = servers_api.datacenters_servers_post_with_http_info(
82
72
  config[:datacenter_id],
83
- { properties: params.compact },
73
+ Ionoscloud::Server.new(
74
+ properties: Ionoscloud::ServerProperties.new(
75
+ name: config[:name],
76
+ cores: config[:cores],
77
+ cpu_family: config[:cpu_family],
78
+ ram: config[:ram],
79
+ availability_zone: config[:availability_zone],
80
+ boot_cdrom: config.key?(:boot_cdrom) ? { id: config[:boot_cdrom] } : nil,
81
+ boot_volume: config.key?(:boot_volume) ? { id: config[:boot_volume] } : nil,
82
+ ),
83
+ ),
84
84
  )
85
85
 
86
86
  dot = ui.color('.', :magenta)
87
87
  api_client.wait_for { print dot; is_done? get_request_id headers }
88
88
 
89
- server = server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id)
90
-
91
- puts "\n"
92
- puts "#{ui.color('ID', :cyan)}: #{server.id}"
93
- puts "#{ui.color('Name', :cyan)}: #{server.properties.name}"
94
- puts "#{ui.color('Cores', :cyan)}: #{server.properties.cores}"
95
- puts "#{ui.color('CPU Family', :cyan)}: #{server.properties.cpu_family}"
96
- puts "#{ui.color('Ram', :cyan)}: #{server.properties.ram}"
97
- puts "#{ui.color('Availability Zone', :cyan)}: #{server.properties.availability_zone}"
98
- puts "#{ui.color('Boot Volume', :cyan)}: #{server.properties.boot_volume ? server.properties.boot_volume.id : ''}"
99
- puts "#{ui.color('Boot CDROM', :cyan)}: #{server.properties.boot_cdrom ? server.properties.boot_cdrom.id : ''}"
100
-
101
- puts 'done'
89
+ print_server(servers_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id))
102
90
  end
103
91
  end
104
92
  end
@@ -28,7 +28,7 @@ class Chef
28
28
  handle_extra_config
29
29
  validate_required_params(@required_options, config)
30
30
 
31
- server_api = Ionoscloud::ServerApi.new(api_client)
31
+ server_api = Ionoscloud::ServersApi.new(api_client)
32
32
 
33
33
  @name_args.each do |server_id|
34
34
  begin
@@ -39,14 +39,8 @@ class Chef
39
39
  next
40
40
  end
41
41
 
42
- msg_pair('ID', server.id)
43
- msg_pair('Name', server.properties.name)
44
- msg_pair('Cores', server.properties.cores)
45
- msg_pair('CPU Family', server.properties.cpu_family)
46
- msg_pair('Ram', server.properties.ram)
47
- msg_pair('Availability Zone', server.properties.availability_zone)
48
- msg_pair('Boot Volume', (server.properties.boot_volume.nil? ? '' : server.properties.boot_volume.id))
49
- msg_pair('Boot CDROM', (server.properties.boot_cdrom.nil? ? '' : server.properties.boot_cdrom.id))
42
+ print_server(server)
43
+ puts "\n"
50
44
 
51
45
  begin
52
46
  confirm('Do you really want to delete this server')
@@ -0,0 +1,43 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server get (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'ID of the data center'
14
+
15
+ option :server_id,
16
+ short: '-S SERVER_ID',
17
+ long: '--server-id SERVER_ID',
18
+ description: 'The ID of the server to which the NIC is assigned'
19
+
20
+ attr_reader :description, :required_options
21
+
22
+ def initialize(args = [])
23
+ super(args)
24
+ @description =
25
+ 'Retrieves the attributes of a given Server.'
26
+ @required_options = [:datacenter_id, :server_id, :ionoscloud_username, :ionoscloud_password]
27
+ end
28
+
29
+ def run
30
+ $stdout.sync = true
31
+ handle_extra_config
32
+ validate_required_params(@required_options, config)\
33
+
34
+ print_server(
35
+ Ionoscloud::ServersApi.new(api_client).datacenters_servers_find_by_id(
36
+ config[:datacenter_id],
37
+ config[:server_id],
38
+ ),
39
+ )
40
+ end
41
+ end
42
+ end
43
+ end
@@ -12,6 +12,11 @@ class Chef
12
12
  long: '--datacenter-id DATACENTER_ID',
13
13
  description: 'The ID of the datacenter containing the server'
14
14
 
15
+ option :upgrade_needed,
16
+ short: '-u',
17
+ long: '--upgrade-needed',
18
+ description: 'It can be used to filter which servers can be upgraded'
19
+
15
20
  attr_reader :description, :required_options
16
21
 
17
22
  def initialize(args = [])
@@ -29,30 +34,36 @@ class Chef
29
34
  server_list = [
30
35
  ui.color('ID', :bold),
31
36
  ui.color('Name', :bold),
37
+ ui.color('Type', :bold),
38
+ ui.color('Template', :bold),
32
39
  ui.color('Cores', :bold),
33
40
  ui.color('CPU Family', :bold),
34
41
  ui.color('RAM', :bold),
35
- ui.color('Availability Zone', :bold),
36
42
  ui.color('VM State', :bold),
37
43
  ui.color('Boot Volume', :bold),
38
44
  ui.color('Boot CDROM', :bold),
39
45
  ]
40
46
 
41
- server_api = Ionoscloud::ServerApi.new(api_client)
47
+ server_api = Ionoscloud::ServersApi.new(api_client)
48
+
49
+ opts = { depth: 1 }
50
+
51
+ opts[:upgrade_needed] = config[:upgrade_needed] if config[:upgrade_needed]
42
52
 
43
- server_api.datacenters_servers_get(config[:datacenter_id], { depth: 1 }).items.each do |server|
53
+ server_api.datacenters_servers_get(config[:datacenter_id], opts).items.each do |server|
44
54
  server_list << server.id
45
55
  server_list << server.properties.name
56
+ server_list << server.properties.type
57
+ server_list << server.properties.template_uuid
46
58
  server_list << server.properties.cores.to_s
47
59
  server_list << server.properties.cpu_family
48
60
  server_list << server.properties.ram.to_s
49
- server_list << server.properties.availability_zone
50
61
  server_list << server.properties.vm_state
51
62
  server_list << (server.properties.boot_volume.nil? ? '' : server.properties.boot_volume.id)
52
63
  server_list << (server.properties.boot_cdrom.nil? ? '' : server.properties.boot_cdrom.id)
53
64
  end
54
65
 
55
- puts ui.list(server_list, :uneven_columns_across, 9)
66
+ puts ui.list(server_list, :uneven_columns_across, 10)
56
67
  end
57
68
  end
58
69
  end
@@ -28,7 +28,7 @@ class Chef
28
28
  handle_extra_config
29
29
  validate_required_params(@required_options, config)
30
30
 
31
- server_api = Ionoscloud::ServerApi.new(api_client)
31
+ server_api = Ionoscloud::ServersApi.new(api_client)
32
32
 
33
33
  @name_args.each do |server_id|
34
34
  begin
@@ -0,0 +1,44 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudServerResume < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud server resume SERVER_ID [SERVER_ID] (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'ID of the data center'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'This will resume a suspended server. The operation can only be applied to suspended Cube servers. No billing event will be generated.'
21
+ @required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ handle_extra_config
27
+ validate_required_params(@required_options, config)
28
+
29
+ server_api = Ionoscloud::ServersApi.new(api_client)
30
+
31
+ @name_args.each do |server_id|
32
+ begin
33
+ _, _, headers = server_api.datacenters_servers_resume_post_with_http_info(config[:datacenter_id], server_id)
34
+ rescue Ionoscloud::ApiError => err
35
+ raise err unless err.code == 404
36
+ ui.error("Server ID #{server_id} not found. Skipping.")
37
+ next
38
+ end
39
+ ui.info("Server #{server_id} is resuming. Request ID: #{get_request_id headers}")
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -26,7 +26,7 @@ class Chef
26
26
  handle_extra_config
27
27
  validate_required_params(@required_options, config)
28
28
 
29
- server_api = Ionoscloud::ServerApi.new(api_client)
29
+ server_api = Ionoscloud::ServersApi.new(api_client)
30
30
 
31
31
  @name_args.each do |server_id|
32
32
  begin
@@ -27,7 +27,7 @@ class Chef
27
27
  handle_extra_config
28
28
  validate_required_params(@required_options, config)
29
29
 
30
- server_api = Ionoscloud::ServerApi.new(api_client)
30
+ server_api = Ionoscloud::ServersApi.new(api_client)
31
31
 
32
32
  @name_args.each do |server_id|
33
33
  begin