knife-ionoscloud 6.0.0.alpha.1 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (434) hide show
  1. checksums.yaml +4 -4
  2. data/.github/IONOS.CLOUD.BLU.svg +1 -0
  3. data/.github/workflows/publish.yml +4 -1
  4. data/README.md +9 -0
  5. data/docs/README.md +37 -0
  6. data/docs/changelog.md +10 -0
  7. data/docs/docs_generator.rb +45 -10
  8. data/docs/subcommands/{backupunit_create.md → backup/backupunit_create.md} +7 -1
  9. data/docs/subcommands/{backupunit_delete.md → backup/backupunit_delete.md} +7 -1
  10. data/docs/subcommands/backup/backupunit_get.md +38 -0
  11. data/docs/subcommands/{backupunit_list.md → backup/backupunit_list.md} +7 -1
  12. data/docs/subcommands/{backupunit_ssourl.md → backup/backupunit_ssourl.md} +7 -1
  13. data/docs/subcommands/backup/backupunit_update.md +44 -0
  14. data/docs/subcommands/{composite_server_create.md → compute-engine/composite_server_create.md} +15 -3
  15. data/docs/subcommands/compute-engine/cube_server_create.md +94 -0
  16. data/docs/subcommands/{datacenter_create.md → compute-engine/datacenter_create.md} +7 -1
  17. data/docs/subcommands/{datacenter_delete.md → compute-engine/datacenter_delete.md} +7 -1
  18. data/docs/subcommands/compute-engine/datacenter_get.md +38 -0
  19. data/docs/subcommands/{datacenter_list.md → compute-engine/datacenter_list.md} +7 -1
  20. data/docs/subcommands/compute-engine/datacenter_update.md +47 -0
  21. data/docs/subcommands/{firewall_create.md → compute-engine/firewall_create.md} +11 -2
  22. data/docs/subcommands/{firewall_delete.md → compute-engine/firewall_delete.md} +6 -0
  23. data/docs/subcommands/compute-engine/firewall_get.md +50 -0
  24. data/docs/subcommands/{firewall_list.md → compute-engine/firewall_list.md} +7 -1
  25. data/docs/subcommands/compute-engine/firewall_update.md +74 -0
  26. data/docs/subcommands/compute-engine/flowlog_create.md +66 -0
  27. data/docs/subcommands/compute-engine/flowlog_delete.md +54 -0
  28. data/docs/subcommands/compute-engine/flowlog_get.md +58 -0
  29. data/docs/subcommands/compute-engine/flowlog_list.md +54 -0
  30. data/docs/subcommands/compute-engine/flowlog_update.md +70 -0
  31. data/docs/subcommands/{image_list.md → compute-engine/image_list.md} +7 -1
  32. data/docs/subcommands/{ipblock_create.md → compute-engine/ipblock_create.md} +7 -1
  33. data/docs/subcommands/{ipblock_delete.md → compute-engine/ipblock_delete.md} +7 -1
  34. data/docs/subcommands/compute-engine/ipblock_get.md +38 -0
  35. data/docs/subcommands/{ipblock_list.md → compute-engine/ipblock_list.md} +7 -1
  36. data/docs/subcommands/compute-engine/ipblock_update.md +41 -0
  37. data/docs/subcommands/{ipfailover_add.md → compute-engine/ipfailover_add.md} +7 -1
  38. data/docs/subcommands/{ipfailover_remove.md → compute-engine/ipfailover_remove.md} +7 -1
  39. data/docs/subcommands/{label_add.md → compute-engine/label_add.md} +7 -1
  40. data/docs/subcommands/{label_list.md → compute-engine/label_list.md} +7 -1
  41. data/docs/subcommands/{label_remove.md → compute-engine/label_remove.md} +6 -0
  42. data/docs/subcommands/{lan_create.md → compute-engine/lan_create.md} +7 -1
  43. data/docs/subcommands/{lan_delete.md → compute-engine/lan_delete.md} +6 -0
  44. data/docs/subcommands/compute-engine/lan_get.md +42 -0
  45. data/docs/subcommands/{lan_list.md → compute-engine/lan_list.md} +7 -1
  46. data/docs/subcommands/compute-engine/lan_update.md +51 -0
  47. data/docs/subcommands/{loadbalancer_create.md → compute-engine/loadbalancer_create.md} +7 -1
  48. data/docs/subcommands/{loadbalancer_delete.md → compute-engine/loadbalancer_delete.md} +6 -0
  49. data/docs/subcommands/{loadbalancer_get.md → compute-engine/loadbalancer_get.md} +7 -1
  50. data/docs/subcommands/{loadbalancer_list.md → compute-engine/loadbalancer_list.md} +7 -1
  51. data/docs/subcommands/{loadbalancer_nic_add.md → compute-engine/loadbalancer_nic_add.md} +6 -0
  52. data/docs/subcommands/{loadbalancer_nic_remove.md → compute-engine/loadbalancer_nic_remove.md} +6 -0
  53. data/docs/subcommands/compute-engine/loadbalancer_update.md +51 -0
  54. data/docs/subcommands/{location_list.md → compute-engine/location_list.md} +7 -1
  55. data/docs/subcommands/compute-engine/natgateway_create.md +44 -0
  56. data/docs/subcommands/compute-engine/natgateway_delete.md +38 -0
  57. data/docs/subcommands/compute-engine/natgateway_get.md +42 -0
  58. data/docs/subcommands/compute-engine/natgateway_lan_add.md +49 -0
  59. data/docs/subcommands/compute-engine/natgateway_lan_remove.md +42 -0
  60. data/docs/subcommands/compute-engine/natgateway_list.md +38 -0
  61. data/docs/subcommands/compute-engine/natgateway_rule_add.md +69 -0
  62. data/docs/subcommands/compute-engine/natgateway_rule_list.md +41 -0
  63. data/docs/subcommands/compute-engine/natgateway_rule_remove.md +42 -0
  64. data/docs/subcommands/compute-engine/natgateway_rule_update.md +69 -0
  65. data/docs/subcommands/compute-engine/natgateway_update.md +51 -0
  66. data/docs/subcommands/compute-engine/networkloadbalancer_create.md +57 -0
  67. data/docs/subcommands/compute-engine/networkloadbalancer_delete.md +38 -0
  68. data/docs/subcommands/compute-engine/networkloadbalancer_get.md +42 -0
  69. data/docs/subcommands/compute-engine/networkloadbalancer_list.md +38 -0
  70. data/docs/subcommands/compute-engine/networkloadbalancer_rule_add.md +75 -0
  71. data/docs/subcommands/compute-engine/networkloadbalancer_rule_list.md +42 -0
  72. data/docs/subcommands/compute-engine/networkloadbalancer_rule_remove.md +42 -0
  73. data/docs/subcommands/compute-engine/networkloadbalancer_rule_target_add.md +67 -0
  74. data/docs/subcommands/compute-engine/networkloadbalancer_rule_target_list.md +46 -0
  75. data/docs/subcommands/compute-engine/networkloadbalancer_rule_target_remove.md +54 -0
  76. data/docs/subcommands/compute-engine/networkloadbalancer_rule_update.md +75 -0
  77. data/docs/subcommands/compute-engine/networkloadbalancer_update.md +57 -0
  78. data/docs/subcommands/{nic_create.md → compute-engine/nic_create.md} +9 -3
  79. data/docs/subcommands/{nic_delete.md → compute-engine/nic_delete.md} +6 -0
  80. data/docs/subcommands/compute-engine/nic_get.md +46 -0
  81. data/docs/subcommands/{nic_list.md → compute-engine/nic_list.md} +7 -1
  82. data/docs/subcommands/compute-engine/nic_update.md +61 -0
  83. data/docs/subcommands/{pcc_create.md → compute-engine/pcc_create.md} +7 -1
  84. data/docs/subcommands/{pcc_delete.md → compute-engine/pcc_delete.md} +7 -1
  85. data/docs/subcommands/compute-engine/pcc_get.md +38 -0
  86. data/docs/subcommands/{pcc_list.md → compute-engine/pcc_list.md} +7 -1
  87. data/docs/subcommands/compute-engine/pcc_update.md +44 -0
  88. data/docs/subcommands/compute-engine/request_get.md +38 -0
  89. data/docs/subcommands/{request_list.md → compute-engine/request_list.md} +7 -1
  90. data/docs/subcommands/{request_status.md → compute-engine/request_status.md} +7 -1
  91. data/docs/subcommands/{request_wait.md → compute-engine/request_wait.md} +7 -1
  92. data/docs/subcommands/compute-engine/server_console.md +42 -0
  93. data/docs/subcommands/{server_create.md → compute-engine/server_create.md} +7 -1
  94. data/docs/subcommands/{server_delete.md → compute-engine/server_delete.md} +6 -0
  95. data/docs/subcommands/compute-engine/server_get.md +42 -0
  96. data/docs/subcommands/{server_list.md → compute-engine/server_list.md} +10 -1
  97. data/docs/subcommands/{server_reboot.md → compute-engine/server_reboot.md} +6 -0
  98. data/docs/subcommands/compute-engine/server_resume.md +38 -0
  99. data/docs/subcommands/{server_start.md → compute-engine/server_start.md} +6 -0
  100. data/docs/subcommands/{server_stop.md → compute-engine/server_stop.md} +6 -0
  101. data/docs/subcommands/compute-engine/server_suspend.md +38 -0
  102. data/docs/subcommands/compute-engine/server_token.md +42 -0
  103. data/docs/subcommands/compute-engine/server_update.md +63 -0
  104. data/docs/subcommands/compute-engine/server_upgrade.md +42 -0
  105. data/docs/subcommands/{snapshot_create.md → compute-engine/snapshot_create.md} +7 -1
  106. data/docs/subcommands/{snapshot_delete.md → compute-engine/snapshot_delete.md} +7 -1
  107. data/docs/subcommands/compute-engine/snapshot_get.md +38 -0
  108. data/docs/subcommands/{snapshot_list.md → compute-engine/snapshot_list.md} +7 -1
  109. data/docs/subcommands/{snapshot_restore.md → compute-engine/snapshot_restore.md} +7 -1
  110. data/docs/subcommands/compute-engine/snapshot_update.md +80 -0
  111. data/docs/subcommands/compute-engine/template_list.md +34 -0
  112. data/docs/subcommands/{volume_attach.md → compute-engine/volume_attach.md} +6 -0
  113. data/docs/subcommands/{volume_create.md → compute-engine/volume_create.md} +14 -5
  114. data/docs/subcommands/{volume_delete.md → compute-engine/volume_delete.md} +6 -0
  115. data/docs/subcommands/{volume_detach.md → compute-engine/volume_detach.md} +6 -0
  116. data/docs/subcommands/compute-engine/volume_get.md +42 -0
  117. data/docs/subcommands/{volume_list.md → compute-engine/volume_list.md} +7 -1
  118. data/docs/subcommands/compute-engine/volume_update.md +69 -0
  119. data/docs/subcommands/dbaas-postgres/dbaas_postgres_backup_get.md +38 -0
  120. data/docs/subcommands/dbaas-postgres/dbaas_postgres_backup_list.md +38 -0
  121. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_create.md +100 -0
  122. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_delete.md +34 -0
  123. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_get.md +38 -0
  124. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_list.md +34 -0
  125. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_restore.md +44 -0
  126. data/docs/subcommands/dbaas-postgres/dbaas_postgres_cluster_update.md +65 -0
  127. data/docs/subcommands/dbaas-postgres/dbaas_postgres_logs_get.md +47 -0
  128. data/docs/subcommands/dbaas-postgres/dbaas_postgres_version_list.md +38 -0
  129. data/docs/subcommands/kubernetes/k8s_create.md +53 -0
  130. data/docs/subcommands/{k8s_delete.md → kubernetes/k8s_delete.md} +7 -1
  131. data/docs/subcommands/kubernetes/k8s_get.md +38 -0
  132. data/docs/subcommands/{k8s_list.md → kubernetes/k8s_list.md} +7 -1
  133. data/docs/subcommands/kubernetes/k8s_update.md +56 -0
  134. data/docs/subcommands/{kubeconfig_get.md → kubernetes/kubeconfig_get.md} +7 -1
  135. data/docs/subcommands/{node_delete.md → kubernetes/node_delete.md} +6 -0
  136. data/docs/subcommands/kubernetes/node_get.md +46 -0
  137. data/docs/subcommands/{node_list.md → kubernetes/node_list.md} +7 -1
  138. data/docs/subcommands/{node_replace.md → kubernetes/node_replace.md} +6 -0
  139. data/docs/subcommands/{nodepool_create.md → kubernetes/nodepool_create.md} +16 -1
  140. data/docs/subcommands/{nodepool_delete.md → kubernetes/nodepool_delete.md} +6 -0
  141. data/docs/subcommands/kubernetes/nodepool_get.md +42 -0
  142. data/docs/subcommands/kubernetes/nodepool_lan_add.md +52 -0
  143. data/docs/subcommands/kubernetes/nodepool_lan_remove.md +42 -0
  144. data/docs/subcommands/{nodepool_list.md → kubernetes/nodepool_list.md} +7 -1
  145. data/docs/subcommands/kubernetes/nodepool_update.md +72 -0
  146. data/docs/subcommands/{contract_list.md → user/contract_list.md} +7 -1
  147. data/docs/subcommands/{group_create.md → user/group_create.md} +16 -1
  148. data/docs/subcommands/{group_delete.md → user/group_delete.md} +7 -1
  149. data/docs/subcommands/{group_get.md → user/group_get.md} +7 -1
  150. data/docs/subcommands/{group_list.md → user/group_list.md} +7 -1
  151. data/docs/subcommands/user/group_update.md +77 -0
  152. data/docs/subcommands/{group_user_add.md → user/group_user_add.md} +6 -0
  153. data/docs/subcommands/{group_user_remove.md → user/group_user_remove.md} +6 -0
  154. data/docs/subcommands/{resource_list.md → user/resource_list.md} +7 -1
  155. data/docs/subcommands/{s3key_create.md → user/s3key_create.md} +7 -1
  156. data/docs/subcommands/{s3key_delete.md → user/s3key_delete.md} +6 -0
  157. data/docs/subcommands/user/s3key_get.md +42 -0
  158. data/docs/subcommands/{s3key_list.md → user/s3key_list.md} +7 -1
  159. data/docs/subcommands/{share_create.md → user/share_create.md} +7 -1
  160. data/docs/subcommands/{share_delete.md → user/share_delete.md} +6 -0
  161. data/docs/subcommands/user/share_get.md +42 -0
  162. data/docs/subcommands/{share_list.md → user/share_list.md} +7 -1
  163. data/docs/subcommands/user/share_update.md +48 -0
  164. data/docs/subcommands/{user_create.md → user/user_create.md} +7 -1
  165. data/docs/subcommands/{user_delete.md → user/user_delete.md} +7 -1
  166. data/docs/subcommands/user/user_get.md +38 -0
  167. data/docs/subcommands/{user_list.md → user/user_list.md} +7 -1
  168. data/docs/subcommands/{user_ssourl.md → user/user_ssourl.md} +7 -1
  169. data/docs/subcommands/user/user_update.md +59 -0
  170. data/docs/summary.md +167 -82
  171. data/docs/templates/summary.mustache +6 -3
  172. data/knife-ionoscloud.gemspec +2 -1
  173. data/lib/chef/knife/ionoscloud_backupunit_create.rb +12 -16
  174. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +3 -6
  175. data/lib/chef/knife/ionoscloud_backupunit_get.rb +32 -0
  176. data/lib/chef/knife/ionoscloud_backupunit_list.rb +2 -2
  177. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +2 -2
  178. data/lib/chef/knife/ionoscloud_backupunit_update.rb +61 -0
  179. data/lib/chef/knife/ionoscloud_base.rb +417 -1
  180. data/lib/chef/knife/ionoscloud_composite_server_create.rb +7 -11
  181. data/lib/chef/knife/ionoscloud_contract_list.rb +2 -2
  182. data/lib/chef/knife/ionoscloud_cube_server_create.rb +7 -11
  183. data/lib/chef/knife/ionoscloud_datacenter_create.rb +12 -15
  184. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +3 -8
  185. data/lib/chef/knife/ionoscloud_datacenter_get.rb +32 -0
  186. data/lib/chef/knife/ionoscloud_datacenter_list.rb +2 -2
  187. data/lib/chef/knife/ionoscloud_datacenter_update.rb +66 -0
  188. data/lib/chef/knife/ionoscloud_dbaas_postgres_backup_get.rb +33 -0
  189. data/lib/chef/knife/ionoscloud_dbaas_postgres_backup_list.rb +59 -0
  190. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_create.rb +158 -0
  191. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_delete.rb +49 -0
  192. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_get.rb +34 -0
  193. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_list.rb +53 -0
  194. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_restore.rb +48 -0
  195. data/lib/chef/knife/ionoscloud_dbaas_postgres_cluster_update.rb +102 -0
  196. data/lib/chef/knife/ionoscloud_dbaas_postgres_logs_get.rb +59 -0
  197. data/lib/chef/knife/ionoscloud_dbaas_postgres_version_list.rb +49 -0
  198. data/lib/chef/knife/ionoscloud_firewall_create.rb +10 -24
  199. data/lib/chef/knife/ionoscloud_firewall_delete.rb +4 -13
  200. data/lib/chef/knife/ionoscloud_firewall_get.rb +51 -0
  201. data/lib/chef/knife/ionoscloud_firewall_list.rb +2 -2
  202. data/lib/chef/knife/ionoscloud_firewall_update.rb +131 -0
  203. data/lib/chef/knife/ionoscloud_flowlog_create.rb +6 -14
  204. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +10 -14
  205. data/lib/chef/knife/ionoscloud_flowlog_get.rb +83 -0
  206. data/lib/chef/knife/ionoscloud_flowlog_list.rb +4 -4
  207. data/lib/chef/knife/ionoscloud_flowlog_update.rb +124 -0
  208. data/lib/chef/knife/ionoscloud_group_create.rb +3 -18
  209. data/lib/chef/knife/ionoscloud_group_delete.rb +3 -20
  210. data/lib/chef/knife/ionoscloud_group_get.rb +3 -21
  211. data/lib/chef/knife/ionoscloud_group_list.rb +2 -2
  212. data/lib/chef/knife/ionoscloud_group_update.rb +130 -0
  213. data/lib/chef/knife/ionoscloud_group_user_add.rb +3 -20
  214. data/lib/chef/knife/ionoscloud_group_user_remove.rb +3 -20
  215. data/lib/chef/knife/ionoscloud_image_list.rb +2 -2
  216. data/lib/chef/knife/ionoscloud_ipblock_create.rb +12 -15
  217. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +3 -6
  218. data/lib/chef/knife/ionoscloud_ipblock_get.rb +32 -0
  219. data/lib/chef/knife/ionoscloud_ipblock_list.rb +2 -2
  220. data/lib/chef/knife/ionoscloud_ipblock_update.rb +56 -0
  221. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +3 -3
  222. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +3 -3
  223. data/lib/chef/knife/ionoscloud_k8s_create.rb +28 -36
  224. data/lib/chef/knife/ionoscloud_k8s_delete.rb +3 -11
  225. data/lib/chef/knife/ionoscloud_k8s_get.rb +32 -0
  226. data/lib/chef/knife/ionoscloud_k8s_list.rb +2 -2
  227. data/lib/chef/knife/ionoscloud_k8s_update.rb +98 -0
  228. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +2 -2
  229. data/lib/chef/knife/ionoscloud_label_add.rb +2 -2
  230. data/lib/chef/knife/ionoscloud_label_list.rb +2 -2
  231. data/lib/chef/knife/ionoscloud_label_remove.rb +2 -2
  232. data/lib/chef/knife/ionoscloud_lan_create.rb +8 -17
  233. data/lib/chef/knife/ionoscloud_lan_delete.rb +5 -6
  234. data/lib/chef/knife/ionoscloud_lan_get.rb +37 -0
  235. data/lib/chef/knife/ionoscloud_lan_list.rb +4 -3
  236. data/lib/chef/knife/ionoscloud_lan_update.rb +75 -0
  237. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +7 -16
  238. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +3 -10
  239. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +4 -14
  240. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +2 -2
  241. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +4 -16
  242. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +4 -17
  243. data/lib/chef/knife/ionoscloud_loadbalancer_update.rb +72 -0
  244. data/lib/chef/knife/ionoscloud_location_list.rb +2 -2
  245. data/lib/chef/knife/ionoscloud_natgateway_create.rb +7 -19
  246. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +4 -20
  247. data/lib/chef/knife/ionoscloud_natgateway_get.rb +41 -0
  248. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +4 -13
  249. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +3 -10
  250. data/lib/chef/knife/ionoscloud_natgateway_list.rb +3 -2
  251. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +8 -28
  252. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +3 -2
  253. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +5 -23
  254. data/lib/chef/knife/ionoscloud_natgateway_rule_update.rb +115 -0
  255. data/lib/chef/knife/ionoscloud_natgateway_update.rb +83 -0
  256. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +8 -15
  257. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +4 -24
  258. data/lib/chef/knife/ionoscloud_networkloadbalancer_get.rb +41 -0
  259. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +2 -2
  260. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +32 -48
  261. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +3 -2
  262. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +21 -32
  263. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +7 -26
  264. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +3 -2
  265. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +6 -24
  266. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_update.rb +147 -0
  267. data/lib/chef/knife/ionoscloud_networkloadbalancer_update.rb +97 -0
  268. data/lib/chef/knife/ionoscloud_nic_create.rb +10 -24
  269. data/lib/chef/knife/ionoscloud_nic_delete.rb +4 -10
  270. data/lib/chef/knife/ionoscloud_nic_get.rb +48 -0
  271. data/lib/chef/knife/ionoscloud_nic_list.rb +2 -2
  272. data/lib/chef/knife/ionoscloud_nic_update.rb +95 -0
  273. data/lib/chef/knife/ionoscloud_node_delete.rb +2 -2
  274. data/lib/chef/knife/ionoscloud_node_get.rb +48 -0
  275. data/lib/chef/knife/ionoscloud_node_list.rb +2 -2
  276. data/lib/chef/knife/ionoscloud_node_replace.rb +2 -2
  277. data/lib/chef/knife/ionoscloud_nodepool_create.rb +27 -59
  278. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +3 -34
  279. data/lib/chef/knife/ionoscloud_nodepool_get.rb +42 -0
  280. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +4 -32
  281. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +3 -28
  282. data/lib/chef/knife/ionoscloud_nodepool_list.rb +2 -2
  283. data/lib/chef/knife/ionoscloud_nodepool_update.rb +123 -0
  284. data/lib/chef/knife/ionoscloud_pcc_create.rb +13 -19
  285. data/lib/chef/knife/ionoscloud_pcc_delete.rb +3 -11
  286. data/lib/chef/knife/ionoscloud_pcc_get.rb +32 -0
  287. data/lib/chef/knife/ionoscloud_pcc_list.rb +2 -2
  288. data/lib/chef/knife/ionoscloud_pcc_update.rb +62 -0
  289. data/lib/chef/knife/ionoscloud_request_get.rb +39 -0
  290. data/lib/chef/knife/ionoscloud_request_list.rb +2 -2
  291. data/lib/chef/knife/ionoscloud_request_status.rb +2 -2
  292. data/lib/chef/knife/ionoscloud_request_wait.rb +2 -2
  293. data/lib/chef/knife/ionoscloud_resource_list.rb +2 -2
  294. data/lib/chef/knife/ionoscloud_s3key_create.rb +3 -7
  295. data/lib/chef/knife/ionoscloud_s3key_delete.rb +3 -6
  296. data/lib/chef/knife/ionoscloud_s3key_get.rb +37 -0
  297. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -2
  298. data/lib/chef/knife/ionoscloud_server_console.rb +2 -2
  299. data/lib/chef/knife/ionoscloud_server_create.rb +16 -30
  300. data/lib/chef/knife/ionoscloud_server_delete.rb +4 -10
  301. data/lib/chef/knife/ionoscloud_server_get.rb +42 -0
  302. data/lib/chef/knife/ionoscloud_server_list.rb +2 -2
  303. data/lib/chef/knife/ionoscloud_server_reboot.rb +2 -2
  304. data/lib/chef/knife/ionoscloud_server_resume.rb +2 -2
  305. data/lib/chef/knife/ionoscloud_server_start.rb +2 -2
  306. data/lib/chef/knife/ionoscloud_server_stop.rb +2 -2
  307. data/lib/chef/knife/ionoscloud_server_suspend.rb +2 -2
  308. data/lib/chef/knife/ionoscloud_server_token.rb +2 -2
  309. data/lib/chef/knife/ionoscloud_server_update.rb +96 -0
  310. data/lib/chef/knife/ionoscloud_server_upgrade.rb +2 -2
  311. data/lib/chef/knife/ionoscloud_share_create.rb +9 -13
  312. data/lib/chef/knife/ionoscloud_share_delete.rb +4 -5
  313. data/lib/chef/knife/ionoscloud_share_get.rb +37 -0
  314. data/lib/chef/knife/ionoscloud_share_list.rb +2 -2
  315. data/lib/chef/knife/ionoscloud_share_update.rb +69 -0
  316. data/lib/chef/knife/ionoscloud_snapshot_create.rb +3 -11
  317. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +3 -8
  318. data/lib/chef/knife/ionoscloud_snapshot_get.rb +31 -0
  319. data/lib/chef/knife/ionoscloud_snapshot_list.rb +2 -2
  320. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +3 -14
  321. data/lib/chef/knife/ionoscloud_snapshot_update.rb +125 -0
  322. data/lib/chef/knife/ionoscloud_template_list.rb +2 -2
  323. data/lib/chef/knife/ionoscloud_user_create.rb +3 -10
  324. data/lib/chef/knife/ionoscloud_user_delete.rb +3 -8
  325. data/lib/chef/knife/ionoscloud_user_get.rb +31 -0
  326. data/lib/chef/knife/ionoscloud_user_list.rb +2 -2
  327. data/lib/chef/knife/ionoscloud_user_ssourl.rb +2 -2
  328. data/lib/chef/knife/ionoscloud_user_update.rb +91 -0
  329. data/lib/chef/knife/ionoscloud_volume_attach.rb +2 -2
  330. data/lib/chef/knife/ionoscloud_volume_create.rb +4 -15
  331. data/lib/chef/knife/ionoscloud_volume_delete.rb +4 -10
  332. data/lib/chef/knife/ionoscloud_volume_detach.rb +2 -2
  333. data/lib/chef/knife/ionoscloud_volume_get.rb +35 -0
  334. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -2
  335. data/lib/chef/knife/ionoscloud_volume_update.rb +105 -0
  336. data/lib/knife-ionoscloud/version.rb +1 -1
  337. data/spec/chef/knife/ionoscloud_backupunit_get_spec.rb +65 -0
  338. data/spec/chef/knife/ionoscloud_backupunit_update_spec.rb +78 -0
  339. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +3 -0
  340. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +3 -0
  341. data/spec/chef/knife/ionoscloud_datacenter_get_spec.rb +69 -0
  342. data/spec/chef/knife/ionoscloud_datacenter_update_spec.rb +82 -0
  343. data/spec/chef/knife/ionoscloud_dbaas_postgres_backup_get_spec.rb +67 -0
  344. data/spec/chef/knife/ionoscloud_dbaas_postgres_backup_list_spec.rb +111 -0
  345. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_create_spec.rb +99 -0
  346. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_delete_spec.rb +109 -0
  347. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_get_spec.rb +73 -0
  348. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_list_spec.rb +84 -0
  349. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_restore_spec.rb +59 -0
  350. data/spec/chef/knife/ionoscloud_dbaas_postgres_cluster_update_spec.rb +89 -0
  351. data/spec/chef/knife/ionoscloud_dbaas_postgres_logs_get_spec.rb +67 -0
  352. data/spec/chef/knife/ionoscloud_dbaas_postgres_version_list_spec.rb +94 -0
  353. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +1 -1
  354. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +1 -1
  355. data/spec/chef/knife/ionoscloud_firewall_get_spec.rb +77 -0
  356. data/spec/chef/knife/ionoscloud_firewall_update_spec.rb +117 -0
  357. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +3 -3
  358. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +10 -10
  359. data/spec/chef/knife/ionoscloud_flowlog_get_spec.rb +171 -0
  360. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +3 -3
  361. data/spec/chef/knife/ionoscloud_flowlog_update_spec.rb +244 -0
  362. data/spec/chef/knife/ionoscloud_group_create_spec.rb +3 -0
  363. data/spec/chef/knife/ionoscloud_group_update_spec.rb +121 -0
  364. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +6 -0
  365. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +6 -0
  366. data/spec/chef/knife/ionoscloud_ipblock_get_spec.rb +66 -0
  367. data/spec/chef/knife/ionoscloud_ipblock_update_spec.rb +79 -0
  368. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +4 -4
  369. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +7 -7
  370. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +7 -0
  371. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +16 -11
  372. data/spec/chef/knife/ionoscloud_k8s_get_spec.rb +72 -0
  373. data/spec/chef/knife/ionoscloud_k8s_update_spec.rb +114 -0
  374. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +4 -3
  375. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +7 -5
  376. data/spec/chef/knife/ionoscloud_lan_get_spec.rb +68 -0
  377. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +2 -2
  378. data/spec/chef/knife/ionoscloud_lan_update_spec.rb +87 -0
  379. data/spec/chef/knife/ionoscloud_loadbalancer_update_spec.rb +89 -0
  380. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +15 -0
  381. data/spec/chef/knife/ionoscloud_natgateway_get_spec.rb +81 -0
  382. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +15 -0
  383. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +15 -0
  384. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +1 -0
  385. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +1 -0
  386. data/spec/chef/knife/ionoscloud_natgateway_rule_update_spec.rb +121 -0
  387. data/spec/chef/knife/ionoscloud_natgateway_update_spec.rb +121 -0
  388. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +13 -0
  389. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +3 -2
  390. data/spec/chef/knife/ionoscloud_networkloadbalancer_get_spec.rb +82 -0
  391. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +4 -3
  392. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +70 -44
  393. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +26 -22
  394. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +79 -61
  395. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_update_spec.rb +163 -0
  396. data/spec/chef/knife/ionoscloud_networkloadbalancer_update_spec.rb +107 -0
  397. data/spec/chef/knife/ionoscloud_nic_get_spec.rb +72 -0
  398. data/spec/chef/knife/ionoscloud_nic_update_spec.rb +97 -0
  399. data/spec/chef/knife/ionoscloud_node_get_spec.rb +70 -0
  400. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +8 -17
  401. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +14 -0
  402. data/spec/chef/knife/ionoscloud_nodepool_get_spec.rb +83 -0
  403. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +29 -33
  404. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +14 -17
  405. data/spec/chef/knife/ionoscloud_nodepool_update_spec.rb +134 -0
  406. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +7 -4
  407. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +2 -2
  408. data/spec/chef/knife/ionoscloud_pcc_get_spec.rb +71 -0
  409. data/spec/chef/knife/ionoscloud_pcc_update_spec.rb +83 -0
  410. data/spec/chef/knife/ionoscloud_request_get_spec.rb +69 -0
  411. data/spec/chef/knife/ionoscloud_s3key_get_spec.rb +66 -0
  412. data/spec/chef/knife/ionoscloud_server_create_spec.rb +3 -0
  413. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +3 -0
  414. data/spec/chef/knife/ionoscloud_server_get_spec.rb +74 -0
  415. data/spec/chef/knife/ionoscloud_server_update_spec.rb +105 -0
  416. data/spec/chef/knife/ionoscloud_share_get_spec.rb +66 -0
  417. data/spec/chef/knife/ionoscloud_share_update_spec.rb +91 -0
  418. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +12 -0
  419. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +12 -0
  420. data/spec/chef/knife/ionoscloud_snapshot_get_spec.rb +79 -0
  421. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +9 -0
  422. data/spec/chef/knife/ionoscloud_snapshot_update_spec.rb +113 -0
  423. data/spec/chef/knife/ionoscloud_user_create_spec.rb +3 -1
  424. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +4 -2
  425. data/spec/chef/knife/ionoscloud_user_get_spec.rb +70 -0
  426. data/spec/chef/knife/ionoscloud_user_update_spec.rb +110 -0
  427. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +15 -5
  428. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +10 -0
  429. data/spec/chef/knife/ionoscloud_volume_get_spec.rb +81 -0
  430. data/spec/chef/knife/ionoscloud_volume_update_spec.rb +116 -0
  431. data/spec/spec_helper.rb +148 -23
  432. metadata +336 -90
  433. data/docs/subcommands/k8s_create.md +0 -47
  434. data/spec/test.sh +0 -3
@@ -25,8 +25,7 @@ class Chef
25
25
  option :cpu_family,
26
26
  short: '-f CPU_FAMILY',
27
27
  long: '--cpu-family CPU_FAMILY',
28
- description: 'The family of processor cores (INTEL_XEON or AMD_OPTERON)',
29
- default: 'INTEL_SKYLAKE'
28
+ description: 'The family of processor cores (INTEL_XEON or AMD_OPTERON)'
30
29
 
31
30
  option :ram,
32
31
  short: '-r RAM',
@@ -36,8 +35,7 @@ class Chef
36
35
  option :availability_zone,
37
36
  short: '-a AVAILABILITY_ZONE',
38
37
  long: '--availability-zone AVAILABILITY_ZONE',
39
- description: 'The availability zone of the server',
40
- default: 'AUTO'
38
+ description: 'The availability zone of the server'
41
39
 
42
40
  option :volume_name,
43
41
  long: '--volume-name NAME',
@@ -114,7 +112,6 @@ class Chef
114
112
  short: '-h',
115
113
  long: '--dhcp',
116
114
  boolean: true | false,
117
- default: true,
118
115
  description: 'Set to false if you wish to disable DHCP'
119
116
 
120
117
  option :lan,
@@ -125,15 +122,13 @@ class Chef
125
122
  option :firewall_type,
126
123
  long: '--firewall-type FIREWALL_TYPE',
127
124
  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'
130
-
131
- attr_reader :description, :required_options
125
+ 'default value INGRESS'
132
126
 
133
127
  def initialize(args = [])
134
128
  super(args)
135
129
  @description =
136
130
  'This creates a new composite server with an attached volume and NIC in a specified virtual data center.'
131
+ @directory = 'compute-engine'
137
132
  @required_options = [
138
133
  :datacenter_id, :name, :cores, :ram, :size, :type, :dhcp, :lan, :ionoscloud_username, :ionoscloud_password,
139
134
  ]
@@ -141,10 +136,11 @@ class Chef
141
136
 
142
137
  def run
143
138
  $stdout.sync = true
139
+ handle_extra_config
144
140
  validate_required_params(@required_options, config)
145
141
 
146
- config[:ssh_keys] = config[:ssh_keys].split(',') if config[:ssh_keys]
147
- config[:ips] = config[:ips].split(',') if config[:ips]
142
+ config[:ssh_keys] = config[:ssh_keys].split(',') if config[:ssh_keys] && config[:ssh_keys].instance_of?(String)
143
+ config[:ips] = config[:ips].split(',') if config[:ips] && config[:ips].instance_of?(String)
148
144
 
149
145
  print ui.color('Creating composite server...', :magenta).to_s
150
146
 
@@ -7,17 +7,17 @@ class Chef
7
7
 
8
8
  banner 'knife ionoscloud contract list'
9
9
 
10
- attr_reader :description, :required_options
11
-
12
10
  def initialize(args = [])
13
11
  super(args)
14
12
  @description =
15
13
  'Lists information about available contract resources.'
14
+ @directory = 'user'
16
15
  @required_options = [:ionoscloud_username, :ionoscloud_password]
17
16
  end
18
17
 
19
18
  def run
20
19
  $stdout.sync = true
20
+ handle_extra_config
21
21
  validate_required_params(@required_options, config)
22
22
 
23
23
  contracts = Ionoscloud::ContractResourcesApi.new(api_client).contracts_get()
@@ -24,14 +24,12 @@ class Chef
24
24
  option :cpu_family,
25
25
  short: '-f CPU_FAMILY',
26
26
  long: '--cpu-family CPU_FAMILY',
27
- description: 'The family of processor cores (INTEL_XEON or AMD_OPTERON)',
28
- default: 'INTEL_SKYLAKE'
27
+ description: 'The family of processor cores (INTEL_XEON or AMD_OPTERON)'
29
28
 
30
29
  option :availability_zone,
31
30
  short: '-a AVAILABILITY_ZONE',
32
31
  long: '--availability-zone AVAILABILITY_ZONE',
33
- description: 'The availability zone of the server',
34
- default: 'AUTO'
32
+ description: 'The availability zone of the server'
35
33
 
36
34
  option :volume_name,
37
35
  long: '--volume-name NAME',
@@ -93,7 +91,6 @@ class Chef
93
91
  short: '-h',
94
92
  long: '--dhcp',
95
93
  boolean: true | false,
96
- default: true,
97
94
  description: 'Set to false if you wish to disable DHCP'
98
95
 
99
96
  option :lan,
@@ -105,15 +102,13 @@ class Chef
105
102
  short: '-t FIREWALL_TYPE',
106
103
  long: '--firewall-type FIREWALL_TYPE',
107
104
  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
105
+ 'default value INGRESS'
112
106
 
113
107
  def initialize(args = [])
114
108
  super(args)
115
109
  @description =
116
110
  'This creates a new cube server with an attached volume and NIC in a specified virtual data center.'
111
+ @directory = 'compute-engine'
117
112
  @required_options = [
118
113
  :datacenter_id, :name, :template, :ionoscloud_username, :ionoscloud_password,
119
114
  ]
@@ -121,10 +116,11 @@ class Chef
121
116
 
122
117
  def run
123
118
  $stdout.sync = true
119
+ handle_extra_config
124
120
  validate_required_params(@required_options, config)
125
121
 
126
- config[:ssh_keys] = config[:ssh_keys].split(',') if config[:ssh_keys]
127
- config[:ips] = config[:ips].split(',') if config[:ips]
122
+ config[:ssh_keys] = config[:ssh_keys].split(',') if config[:ssh_keys] && config[:ssh_keys].instance_of?(String)
123
+ config[:ips] = config[:ips].split(',') if config[:ips] && config[:ips].instance_of?(String)
128
124
 
129
125
  print ui.color('Creating cube server...', :magenta).to_s
130
126
 
@@ -22,8 +22,6 @@ class Chef
22
22
  long: '--location LOCATION',
23
23
  description: 'Location of the data center'
24
24
 
25
- attr_reader :description, :required_options
26
-
27
25
  def initialize(args = [])
28
26
  super(args)
29
27
  @description =
@@ -32,34 +30,33 @@ class Chef
32
30
  "A list of locations can be obtained with location command.\n\n\t"\
33
31
  "```text\nknife ionoscloud location list\n```\n\n"\
34
32
  "Make a note of the desired location ID and now the data center can be created.\n"
33
+ @directory = 'compute-engine'
35
34
  @required_options = [:location, :ionoscloud_username, :ionoscloud_password]
36
35
  end
37
36
 
38
37
  def run
39
38
  $stdout.sync = true
39
+ handle_extra_config
40
40
  validate_required_params(@required_options, config)
41
41
 
42
42
  print "#{ui.color('Creating data center...', :magenta)}"
43
43
 
44
44
  datacenter_api = Ionoscloud::DataCentersApi.new(api_client)
45
45
 
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
- })
46
+ datacenter, _, headers = datacenter_api.datacenters_post_with_http_info(
47
+ Ionoscloud::Datacenter.new(
48
+ properties: Ionoscloud::DatacenterProperties.new(
49
+ name: config[:name],
50
+ description: config[:description],
51
+ location: config[:location],
52
+ ),
53
+ ),
54
+ )
53
55
 
54
56
  dot = ui.color('.', :magenta)
55
57
  api_client.wait_for { print dot; is_done? get_request_id headers }
56
58
 
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'
59
+ print_datacenter(datacenter)
63
60
  end
64
61
  end
65
62
  end
@@ -7,19 +7,19 @@ class Chef
7
7
 
8
8
  banner 'knife ionoscloud datacenter delete DATACENTER_ID [DATACENTER_ID]'
9
9
 
10
- attr_reader :description, :required_options
11
-
12
10
  def initialize(args = [])
13
11
  super(args)
14
12
  @description =
15
13
  'You will want to exercise a bit of caution here. Removing a data center will destroy '\
16
14
  'all objects contained within that data center -- servers, volumes, snapshots, and so on. '\
17
15
  'The objects -- once removed -- will be unrecoverable.'
16
+ @directory = 'compute-engine'
18
17
  @required_options = [:ionoscloud_username, :ionoscloud_password]
19
18
  end
20
19
 
21
20
  def run
22
21
  $stdout.sync = true
22
+ handle_extra_config
23
23
  validate_required_params(@required_options, config)
24
24
 
25
25
  datacenter_api = Ionoscloud::DataCentersApi.new(api_client)
@@ -33,12 +33,7 @@ class Chef
33
33
  next
34
34
  end
35
35
 
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
-
36
+ print_datacenter(datacenter)
42
37
  puts "\n"
43
38
 
44
39
  begin
@@ -0,0 +1,32 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudDatacenterGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud datacenter 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
+ def initialize(args = [])
16
+ super(args)
17
+ @description =
18
+ 'Retrieves information about a Ionoscloud Datacenter.'
19
+ @directory = 'compute-engine'
20
+ @required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
21
+ end
22
+
23
+ def run
24
+ $stdout.sync = true
25
+ handle_extra_config
26
+ validate_required_params(@required_options, config)
27
+
28
+ print_datacenter(Ionoscloud::DataCentersApi.new(api_client).datacenters_find_by_id(config[:datacenter_id]))
29
+ end
30
+ end
31
+ end
32
+ end
@@ -7,8 +7,6 @@ class Chef
7
7
 
8
8
  banner 'knife ionoscloud datacenter list'
9
9
 
10
- attr_reader :description, :required_options
11
-
12
10
  def initialize(args = [])
13
11
  super(args)
14
12
  @description =
@@ -18,11 +16,13 @@ class Chef
18
16
  'networking, and other resources. The goal is to give you the same '\
19
17
  'experience as you would have if you were running your own physical '\
20
18
  'data center. A list of available data centers can be obtained with the following command.'
19
+ @directory = 'compute-engine'
21
20
  @required_options = [:ionoscloud_username, :ionoscloud_password]
22
21
  end
23
22
 
24
23
  def run
25
24
  $stdout.sync = true
25
+ handle_extra_config
26
26
  validate_required_params(@required_options, config)
27
27
 
28
28
  datacenter_list = [
@@ -0,0 +1,66 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudDatacenterUpdate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud datacenter update (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 :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
+ option :sec_auth_protection,
25
+ long: '--sec-auth-protection SEC_AUTH_PROTECTION',
26
+ description: 'Boolean value representing if the data center requires extra protection e.g. two factor protection'
27
+
28
+ def initialize(args = [])
29
+ super(args)
30
+ @description =
31
+ 'Updates information about a Ionoscloud Datacenter.'
32
+ @directory = 'compute-engine'
33
+ @required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
34
+ @updatable_fields = [:name, :description, :sec_auth_protection]
35
+ end
36
+
37
+ def run
38
+ $stdout.sync = true
39
+ handle_extra_config
40
+ validate_required_params(@required_options, config)
41
+
42
+ datacenter_api = Ionoscloud::DataCentersApi.new(api_client)
43
+
44
+ if @updatable_fields.map { |el| config[el] }.any?
45
+ print "#{ui.color('Updating data center...', :magenta)}"
46
+
47
+ datacenter, _, headers = datacenter_api.datacenters_patch_with_http_info(
48
+ config[:datacenter_id],
49
+ Ionoscloud::DatacenterProperties.new(
50
+ name: config[:name],
51
+ description: config[:description],
52
+ sec_auth_protection: (config.key?(:sec_auth_protection) ? config[:sec_auth_protection].to_s.downcase == 'true' : nil),
53
+ )
54
+ )
55
+
56
+ dot = ui.color('.', :magenta)
57
+ api_client.wait_for { print dot; is_done? get_request_id headers }
58
+ else
59
+ ui.warn("Nothing to update, please set one of the attributes #{@updatable_fields}.")
60
+ end
61
+
62
+ print_datacenter(datacenter_api.datacenters_find_by_id(config[:datacenter_id]))
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,33 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudDbaasPostgresBackupGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud dbaas postgres cluster get (options)'
9
+
10
+ option :backup_id,
11
+ short: '-B BACKUP_ID',
12
+ long: '--backup-id BACKUP_ID',
13
+ description: 'ID of the cluster backup'
14
+
15
+ def initialize(args = [])
16
+ super(args)
17
+ @description =
18
+ 'Retrieve a PostgreSQL cluster backup by using its ID. This value can be
19
+ found when you GET a list of PostgreSQL cluster backups.'
20
+ @directory = 'dbaas-postgres'
21
+ @required_options = [:backup_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_cluster_backup(IonoscloudDbaasPostgres::BackupsApi.new(api_client_dbaas).clusters_backups_find_by_id(config[:backup_id]))
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,59 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudDbaasPostgresBackupList < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud dbaas postgres backup list (options)'
9
+
10
+ option :cluster_id,
11
+ short: '-C CLUSTER_ID',
12
+ long: '--cluster-id CLUSTER_ID',
13
+ description: 'ID of the cluster'
14
+
15
+ def initialize(args = [])
16
+ super(args)
17
+ @description =
18
+ 'If cluster_id is provided, retrieves a list of all backups of the given PostgreSQL cluster,
19
+ otherwise retrieves a list of all PostgreSQL cluster backups.'
20
+ @directory = 'dbaas-postgres'
21
+ @required_options = [: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
+ backup_list = [
30
+ ui.color('ID', :bold),
31
+ ui.color('Type', :bold),
32
+ ui.color('Cluster ID', :bold),
33
+ ui.color('Is Active', :bold),
34
+ ui.color('Earliest Recovery Target Time', :bold),
35
+ ui.color('Created Date', :bold),
36
+ ]
37
+
38
+ backups_api = IonoscloudDbaasPostgres::BackupsApi.new(api_client_dbaas)
39
+
40
+ if config[:cluster_id]
41
+ backups = backups_api.cluster_backups_get(config[:cluster_id])
42
+ else
43
+ backups = backups_api.clusters_backups_get()
44
+ end
45
+
46
+ backups.items.each do |backup|
47
+ backup_list << backup.id
48
+ backup_list << backup.type
49
+ backup_list << backup.properties.cluster_id
50
+ backup_list << backup.properties.is_active
51
+ backup_list << backup.properties.earliest_recovery_target_time
52
+ backup_list << backup.metadata.created_date
53
+ end
54
+
55
+ puts ui.list(backup_list, :uneven_columns_across, 6)
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,158 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudDbaasPostgresClusterCreate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud dbaas postgres cluster create (options)'
9
+
10
+ option :postgres_version,
11
+ long: '--postgres-version POSTGRES_VERSION',
12
+ description: 'The PostgreSQL version of your cluster'
13
+
14
+ option :instances,
15
+ short: '-R INSTANCES',
16
+ long: '--instances INSTANCES',
17
+ description: 'The total number of instances in the cluster (one master and n-1 standbys).'
18
+
19
+ option :cores,
20
+ short: '-C CORES',
21
+ long: '--cores CORES',
22
+ description: 'The number of CPU cores per instance.'
23
+
24
+ option :ram,
25
+ short: '-r RAM',
26
+ long: '--ram RAM',
27
+ description: 'The amount of memory per instance(should be a multiple of 1024).'
28
+
29
+ option :storage_size,
30
+ long: '--size STORAGE_SIZE',
31
+ description: 'The amount of storage per instance.'
32
+
33
+ option :storage_type,
34
+ long: '--type STORAGE_TYPE',
35
+ description: 'The storage type used in your cluster.'
36
+
37
+ option :connections,
38
+ long: '--connections CONNECTIONS',
39
+ description: 'Array of VDCs to connect to your cluster.'
40
+
41
+ option :location,
42
+ short: '-l LOCATION',
43
+ long: '--location LOCATION',
44
+ description: 'The physical location where the cluster will be created. This will
45
+ be where all of your instances live. Property cannot be modified
46
+ after datacenter creation (disallowed in update requests)'
47
+
48
+ option :display_name,
49
+ short: '-n DISPLAY_NAME',
50
+ long: '--name DISPLAY_NAME',
51
+ description: 'The friendly name of your cluster.'
52
+
53
+ option :from_backup,
54
+ short: '-b FROM_BACKUP',
55
+ long: '--from-backup FROM_BACKUP',
56
+ description: 'Deprecated: backup is always enabled. Enables automatic backups of your cluster.'
57
+
58
+ option :time,
59
+ long: '--time TIME',
60
+ description: 'Time Of the day when to perform the maintenance.'
61
+
62
+ option :day_of_the_week,
63
+ short: '-d DAY_OF_THE_WEEK',
64
+ long: '--day-of-the-week DAY_OF_THE_WEEK',
65
+ description: 'Day Of the week when to perform the maintenance.'
66
+
67
+ option :synchronization_mode,
68
+ short: '-s SYNCHRONIZATION_MODE',
69
+ long: '--synchronization-mode SYNCHRONIZATION_MODE',
70
+ description: 'Represents different modes of replication'
71
+
72
+ option :username,
73
+ long: '--db-user DB_USERNAME',
74
+ description: 'The username for the initial postgres user.
75
+ Some system usernames are restricted (e.g. "postgres", "admin", "standby")'
76
+
77
+ option :password,
78
+ long: '--db-password DB_PASSWORD',
79
+ description: 'The username for the initial postgres user.'
80
+
81
+ option :backup_id,
82
+ short: '-B BACKUP_ID',
83
+ long: '--backup-id BACKUP_ID',
84
+ description: 'ID of backup'
85
+
86
+ option :recovery_target_time,
87
+ short: '-T RECOVERY_TARGET_TIME',
88
+ long: '--recovery-target-time RECOVERY_TARGET_TIME',
89
+ description: 'Recovery target time'
90
+
91
+ def initialize(args = [])
92
+ super(args)
93
+ @description =
94
+ 'Creates a new PostgreSQL cluster.
95
+ If the `fromBackup` field is populated, the new cluster will be created
96
+ based on the given backup.'
97
+ @directory = 'dbaas-postgres'
98
+ @required_options = [
99
+ :postgres_version, :instances, :cores, :ram, :storage_size, :storage_type,
100
+ :connections, :location, :display_name, :synchronization_mode, :username, :password, :ionoscloud_username, :ionoscloud_password,
101
+ ]
102
+ end
103
+
104
+ def run
105
+ $stdout.sync = true
106
+ handle_extra_config
107
+ validate_required_params(@required_options, config)
108
+
109
+ print "#{ui.color('Creating cluster...', :magenta)}"
110
+
111
+ config[:connections] = JSON[config[:connections]] if config[:connections] && config[:connections].instance_of?(String)
112
+
113
+ config[:connections] = config[:connections].map do
114
+ |connection|
115
+ IonoscloudDbaasPostgres::Connection.new(
116
+ datacenter_id: connection['datacenter_id'],
117
+ lan_id: String(connection['lan_id']),
118
+ cidr: connection['cidr'],
119
+ )
120
+ end if config[:connections]
121
+
122
+ clusters_api = IonoscloudDbaasPostgres::ClustersApi.new(api_client_dbaas)
123
+
124
+ cluster_properties = IonoscloudDbaasPostgres::CreateClusterProperties.new(
125
+ postgres_version: config[:postgres_version],
126
+ instances: Integer(config[:instances]),
127
+ cores: Integer(config[:cores]),
128
+ ram: Integer(config[:ram]),
129
+ storage_size: Integer(config[:storage_size]),
130
+ storage_type: config[:storage_type],
131
+ connections: config[:connections],
132
+ location: config[:location],
133
+ display_name: config[:display_name],
134
+ maintenance_window: (config[:time] && config[:day_of_the_week]) ? IonoscloudDbaasPostgres::MaintenanceWindow.new(
135
+ time: config[:time],
136
+ day_of_the_week: config[:day_of_the_week],
137
+ ) : nil,
138
+ credentials: IonoscloudDbaasPostgres::DBUser.new(
139
+ username: config[:username],
140
+ password: config[:password],
141
+ ),
142
+ synchronization_mode: config[:synchronization_mode],
143
+ from_backup: IonoscloudDbaasPostgres::CreateRestoreRequest.new(
144
+ backup_id: config[:backup_id],
145
+ recovery_target_time: config[:recovery_target_time],
146
+ ),
147
+ )
148
+
149
+ cluster_request = IonoscloudDbaasPostgres::CreateClusterRequest.new()
150
+ cluster_request.properties = cluster_properties
151
+
152
+ cluster, _, headers = clusters_api.clusters_post_with_http_info(cluster_request)
153
+
154
+ print_cluster(cluster)
155
+ end
156
+ end
157
+ end
158
+ end
@@ -0,0 +1,49 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudDbaasPostgresClusterDelete < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud dbaas postgres cluster delete CLUSTER_ID [CLUSTER_ID]'
9
+
10
+ def initialize(args = [])
11
+ super(args)
12
+ @description =
13
+ 'Delete a PostgreSQL cluster.'
14
+ @directory = 'dbaas-postgres'
15
+ @required_options = [:ionoscloud_username, :ionoscloud_password]
16
+ end
17
+
18
+ def run
19
+ $stdout.sync = true
20
+ handle_extra_config
21
+ validate_required_params(@required_options, config)
22
+
23
+ clusters_api = IonoscloudDbaasPostgres::ClustersApi.new(api_client_dbaas)
24
+
25
+ @name_args.each do |cluster_id|
26
+ begin
27
+ cluster = clusters_api.clusters_find_by_id(cluster_id)
28
+ rescue IonoscloudDbaasPostgres::ApiError => err
29
+ raise err unless err.code == 404
30
+ ui.error("Cluster ID #{cluster_id} not found. Skipping.")
31
+ next
32
+ end
33
+
34
+ print_cluster(cluster)
35
+ puts "\n"
36
+
37
+ begin
38
+ confirm('Do you really want to delete this cluster')
39
+ rescue SystemExit => exc
40
+ next
41
+ end
42
+
43
+ _, _, headers = clusters_api.clusters_delete_with_http_info(cluster_id)
44
+ ui.warn("Deleted Cluster #{cluster.id}.")
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end