knife-ionoscloud 5.0.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. checksums.yaml +7 -0
  2. data/.gitbook.yaml +4 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +54 -0
  4. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +51 -0
  6. data/.github/workflows/ci.yml +38 -0
  7. data/.github/workflows/publish.yml +58 -0
  8. data/.gitignore +26 -0
  9. data/.rubocop.yml +148 -0
  10. data/Gemfile +4 -0
  11. data/LICENSE.txt +201 -0
  12. data/Rakefile +7 -0
  13. data/docs/README.md +67 -0
  14. data/docs/changelog.md +1 -0
  15. data/docs/docs_generator.rb +107 -0
  16. data/docs/subcommands/backupunit_create.md +38 -0
  17. data/docs/subcommands/backupunit_delete.md +26 -0
  18. data/docs/subcommands/backupunit_list.md +26 -0
  19. data/docs/subcommands/backupunit_ssourl.md +30 -0
  20. data/docs/subcommands/composite_server_create.md +97 -0
  21. data/docs/subcommands/contract_list.md +26 -0
  22. data/docs/subcommands/datacenter_create.md +41 -0
  23. data/docs/subcommands/datacenter_delete.md +26 -0
  24. data/docs/subcommands/datacenter_list.md +26 -0
  25. data/docs/subcommands/firewall_create.md +65 -0
  26. data/docs/subcommands/firewall_delete.md +38 -0
  27. data/docs/subcommands/firewall_list.md +38 -0
  28. data/docs/subcommands/group_create.md +48 -0
  29. data/docs/subcommands/group_delete.md +26 -0
  30. data/docs/subcommands/group_get.md +30 -0
  31. data/docs/subcommands/group_list.md +29 -0
  32. data/docs/subcommands/group_user_add.md +30 -0
  33. data/docs/subcommands/group_user_remove.md +30 -0
  34. data/docs/subcommands/image_list.md +26 -0
  35. data/docs/subcommands/ipblock_create.md +37 -0
  36. data/docs/subcommands/ipblock_delete.md +26 -0
  37. data/docs/subcommands/ipblock_list.md +26 -0
  38. data/docs/subcommands/ipfailover_add.md +46 -0
  39. data/docs/subcommands/ipfailover_remove.md +42 -0
  40. data/docs/subcommands/k8s_create.md +39 -0
  41. data/docs/subcommands/k8s_delete.md +26 -0
  42. data/docs/subcommands/k8s_list.md +26 -0
  43. data/docs/subcommands/kubeconfig_get.md +30 -0
  44. data/docs/subcommands/label_add.md +45 -0
  45. data/docs/subcommands/label_list.md +35 -0
  46. data/docs/subcommands/label_remove.md +37 -0
  47. data/docs/subcommands/lan_create.md +36 -0
  48. data/docs/subcommands/lan_delete.md +30 -0
  49. data/docs/subcommands/lan_list.md +30 -0
  50. data/docs/subcommands/loadbalancer_create.md +43 -0
  51. data/docs/subcommands/loadbalancer_delete.md +30 -0
  52. data/docs/subcommands/loadbalancer_get.md +34 -0
  53. data/docs/subcommands/loadbalancer_list.md +30 -0
  54. data/docs/subcommands/loadbalancer_nic_add.md +34 -0
  55. data/docs/subcommands/loadbalancer_nic_remove.md +34 -0
  56. data/docs/subcommands/location_list.md +26 -0
  57. data/docs/subcommands/nic_create.md +51 -0
  58. data/docs/subcommands/nic_delete.md +34 -0
  59. data/docs/subcommands/nic_list.md +34 -0
  60. data/docs/subcommands/node_delete.md +34 -0
  61. data/docs/subcommands/node_list.md +34 -0
  62. data/docs/subcommands/node_replace.md +36 -0
  63. data/docs/subcommands/nodepool_create.md +87 -0
  64. data/docs/subcommands/nodepool_delete.md +30 -0
  65. data/docs/subcommands/nodepool_list.md +30 -0
  66. data/docs/subcommands/pcc_create.md +38 -0
  67. data/docs/subcommands/pcc_delete.md +26 -0
  68. data/docs/subcommands/pcc_list.md +26 -0
  69. data/docs/subcommands/request_list.md +32 -0
  70. data/docs/subcommands/request_status.md +30 -0
  71. data/docs/subcommands/request_wait.md +30 -0
  72. data/docs/subcommands/resource_list.md +34 -0
  73. data/docs/subcommands/s3key_create.md +30 -0
  74. data/docs/subcommands/s3key_delete.md +30 -0
  75. data/docs/subcommands/s3key_list.md +30 -0
  76. data/docs/subcommands/server_create.md +55 -0
  77. data/docs/subcommands/server_delete.md +32 -0
  78. data/docs/subcommands/server_list.md +30 -0
  79. data/docs/subcommands/server_reboot.md +30 -0
  80. data/docs/subcommands/server_start.md +30 -0
  81. data/docs/subcommands/server_stop.md +30 -0
  82. data/docs/subcommands/share_create.md +40 -0
  83. data/docs/subcommands/share_delete.md +30 -0
  84. data/docs/subcommands/share_list.md +30 -0
  85. data/docs/subcommands/snapshot_create.md +34 -0
  86. data/docs/subcommands/snapshot_delete.md +26 -0
  87. data/docs/subcommands/snapshot_list.md +26 -0
  88. data/docs/subcommands/snapshot_restore.md +38 -0
  89. data/docs/subcommands/user_create.md +49 -0
  90. data/docs/subcommands/user_delete.md +26 -0
  91. data/docs/subcommands/user_list.md +29 -0
  92. data/docs/subcommands/user_ssourl.md +30 -0
  93. data/docs/subcommands/volume_attach.md +34 -0
  94. data/docs/subcommands/volume_create.md +63 -0
  95. data/docs/subcommands/volume_delete.md +30 -0
  96. data/docs/subcommands/volume_detach.md +36 -0
  97. data/docs/subcommands/volume_list.md +33 -0
  98. data/docs/summary.md +89 -0
  99. data/docs/templates/subcommand_doc.mustache +26 -0
  100. data/docs/templates/summary.mustache +10 -0
  101. data/knife-ionoscloud.gemspec +27 -0
  102. data/lib/chef/knife/ionoscloud_backupunit_create.rb +63 -0
  103. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +55 -0
  104. data/lib/chef/knife/ionoscloud_backupunit_list.rb +41 -0
  105. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +39 -0
  106. data/lib/chef/knife/ionoscloud_base.rb +76 -0
  107. data/lib/chef/knife/ionoscloud_composite_server_create.rb +217 -0
  108. data/lib/chef/knife/ionoscloud_contract_list.rb +50 -0
  109. data/lib/chef/knife/ionoscloud_datacenter_create.rb +66 -0
  110. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +56 -0
  111. data/lib/chef/knife/ionoscloud_datacenter_list.rb +50 -0
  112. data/lib/chef/knife/ionoscloud_firewall_create.rb +135 -0
  113. data/lib/chef/knife/ionoscloud_firewall_delete.rb +76 -0
  114. data/lib/chef/knife/ionoscloud_firewall_list.rb +72 -0
  115. data/lib/chef/knife/ionoscloud_group_create.rb +89 -0
  116. data/lib/chef/knife/ionoscloud_group_delete.rb +61 -0
  117. data/lib/chef/knife/ionoscloud_group_get.rb +46 -0
  118. data/lib/chef/knife/ionoscloud_group_list.rb +62 -0
  119. data/lib/chef/knife/ionoscloud_group_user_add.rb +72 -0
  120. data/lib/chef/knife/ionoscloud_group_user_remove.rb +72 -0
  121. data/lib/chef/knife/ionoscloud_image_list.rb +47 -0
  122. data/lib/chef/knife/ionoscloud_ipblock_create.rb +63 -0
  123. data/lib/chef/knife/ionoscloud_ipblock_delete.rb +50 -0
  124. data/lib/chef/knife/ionoscloud_ipblock_list.rb +42 -0
  125. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +76 -0
  126. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +76 -0
  127. data/lib/chef/knife/ionoscloud_k8s_create.rb +79 -0
  128. data/lib/chef/knife/ionoscloud_k8s_delete.rb +67 -0
  129. data/lib/chef/knife/ionoscloud_k8s_list.rb +45 -0
  130. data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +37 -0
  131. data/lib/chef/knife/ionoscloud_label_add.rb +84 -0
  132. data/lib/chef/knife/ionoscloud_label_list.rb +83 -0
  133. data/lib/chef/knife/ionoscloud_label_remove.rb +77 -0
  134. data/lib/chef/knife/ionoscloud_lan_create.rb +69 -0
  135. data/lib/chef/knife/ionoscloud_lan_delete.rb +54 -0
  136. data/lib/chef/knife/ionoscloud_lan_list.rb +46 -0
  137. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +87 -0
  138. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +68 -0
  139. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +51 -0
  140. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +50 -0
  141. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +75 -0
  142. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +76 -0
  143. data/lib/chef/knife/ionoscloud_location_list.rb +38 -0
  144. data/lib/chef/knife/ionoscloud_nic_create.rb +104 -0
  145. data/lib/chef/knife/ionoscloud_nic_delete.rb +62 -0
  146. data/lib/chef/knife/ionoscloud_nic_list.rb +57 -0
  147. data/lib/chef/knife/ionoscloud_node_delete.rb +65 -0
  148. data/lib/chef/knife/ionoscloud_node_list.rb +55 -0
  149. data/lib/chef/knife/ionoscloud_node_replace.rb +54 -0
  150. data/lib/chef/knife/ionoscloud_nodepool_create.rb +163 -0
  151. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +60 -0
  152. data/lib/chef/knife/ionoscloud_nodepool_list.rb +51 -0
  153. data/lib/chef/knife/ionoscloud_pcc_create.rb +68 -0
  154. data/lib/chef/knife/ionoscloud_pcc_delete.rb +57 -0
  155. data/lib/chef/knife/ionoscloud_pcc_list.rb +41 -0
  156. data/lib/chef/knife/ionoscloud_request_list.rb +94 -0
  157. data/lib/chef/knife/ionoscloud_request_status.rb +37 -0
  158. data/lib/chef/knife/ionoscloud_request_wait.rb +41 -0
  159. data/lib/chef/knife/ionoscloud_resource_list.rb +81 -0
  160. data/lib/chef/knife/ionoscloud_s3key_create.rb +45 -0
  161. data/lib/chef/knife/ionoscloud_s3key_delete.rb +57 -0
  162. data/lib/chef/knife/ionoscloud_s3key_list.rb +46 -0
  163. data/lib/chef/knife/ionoscloud_server_create.rb +104 -0
  164. data/lib/chef/knife/ionoscloud_server_delete.rb +62 -0
  165. data/lib/chef/knife/ionoscloud_server_list.rb +58 -0
  166. data/lib/chef/knife/ionoscloud_server_reboot.rb +45 -0
  167. data/lib/chef/knife/ionoscloud_server_start.rb +43 -0
  168. data/lib/chef/knife/ionoscloud_server_stop.rb +44 -0
  169. data/lib/chef/knife/ionoscloud_share_create.rb +71 -0
  170. data/lib/chef/knife/ionoscloud_share_delete.rb +55 -0
  171. data/lib/chef/knife/ionoscloud_share_list.rb +47 -0
  172. data/lib/chef/knife/ionoscloud_snapshot_create.rb +58 -0
  173. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +54 -0
  174. data/lib/chef/knife/ionoscloud_snapshot_list.rb +45 -0
  175. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +69 -0
  176. data/lib/chef/knife/ionoscloud_user_create.rb +83 -0
  177. data/lib/chef/knife/ionoscloud_user_delete.rb +56 -0
  178. data/lib/chef/knife/ionoscloud_user_list.rb +60 -0
  179. data/lib/chef/knife/ionoscloud_user_ssourl.rb +37 -0
  180. data/lib/chef/knife/ionoscloud_volume_attach.rb +52 -0
  181. data/lib/chef/knife/ionoscloud_volume_create.rb +133 -0
  182. data/lib/chef/knife/ionoscloud_volume_delete.rb +67 -0
  183. data/lib/chef/knife/ionoscloud_volume_detach.rb +77 -0
  184. data/lib/chef/knife/ionoscloud_volume_list.rb +70 -0
  185. data/lib/knife-ionoscloud/version.rb +6 -0
  186. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +65 -0
  187. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +101 -0
  188. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +72 -0
  189. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +93 -0
  190. data/spec/chef/knife/ionoscloud_base_spec.rb +157 -0
  191. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +111 -0
  192. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +81 -0
  193. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +72 -0
  194. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +102 -0
  195. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +76 -0
  196. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +90 -0
  197. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +117 -0
  198. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +90 -0
  199. data/spec/chef/knife/ionoscloud_group_create_spec.rb +76 -0
  200. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +109 -0
  201. data/spec/chef/knife/ionoscloud_group_get_spec.rb +73 -0
  202. data/spec/chef/knife/ionoscloud_group_list_spec.rb +115 -0
  203. data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +134 -0
  204. data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +130 -0
  205. data/spec/chef/knife/ionoscloud_image_list_spec.rb +75 -0
  206. data/spec/chef/knife/ionoscloud_ipblock_create_spec.rb +72 -0
  207. data/spec/chef/knife/ionoscloud_ipblock_delete_spec.rb +102 -0
  208. data/spec/chef/knife/ionoscloud_ipblock_list_spec.rb +74 -0
  209. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +83 -0
  210. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +122 -0
  211. data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +83 -0
  212. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +172 -0
  213. data/spec/chef/knife/ionoscloud_k8s_list_spec.rb +73 -0
  214. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +91 -0
  215. data/spec/chef/knife/ionoscloud_label_add_spec.rb +287 -0
  216. data/spec/chef/knife/ionoscloud_label_list_spec.rb +337 -0
  217. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +391 -0
  218. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +77 -0
  219. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +103 -0
  220. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +73 -0
  221. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +82 -0
  222. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +107 -0
  223. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +68 -0
  224. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +74 -0
  225. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +128 -0
  226. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +124 -0
  227. data/spec/chef/knife/ionoscloud_location_list_spec.rb +67 -0
  228. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +85 -0
  229. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +108 -0
  230. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +83 -0
  231. data/spec/chef/knife/ionoscloud_node_delete_spec.rb +107 -0
  232. data/spec/chef/knife/ionoscloud_node_list_spec.rb +75 -0
  233. data/spec/chef/knife/ionoscloud_node_replace_spec.rb +94 -0
  234. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +99 -0
  235. data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +106 -0
  236. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +76 -0
  237. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +70 -0
  238. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +106 -0
  239. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +69 -0
  240. data/spec/chef/knife/ionoscloud_request_list_spec.rb +165 -0
  241. data/spec/chef/knife/ionoscloud_request_status_spec.rb +92 -0
  242. data/spec/chef/knife/ionoscloud_request_wait_spec.rb +74 -0
  243. data/spec/chef/knife/ionoscloud_resource_list_spec.rb +155 -0
  244. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +64 -0
  245. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +103 -0
  246. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +70 -0
  247. data/spec/chef/knife/ionoscloud_server_create_spec.rb +84 -0
  248. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +108 -0
  249. data/spec/chef/knife/ionoscloud_server_list_spec.rb +85 -0
  250. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +95 -0
  251. data/spec/chef/knife/ionoscloud_server_start_spec.rb +95 -0
  252. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +95 -0
  253. data/spec/chef/knife/ionoscloud_share_create_spec.rb +68 -0
  254. data/spec/chef/knife/ionoscloud_share_delete_spec.rb +103 -0
  255. data/spec/chef/knife/ionoscloud_share_list_spec.rb +70 -0
  256. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +74 -0
  257. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +103 -0
  258. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +73 -0
  259. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +78 -0
  260. data/spec/chef/knife/ionoscloud_user_create_spec.rb +73 -0
  261. data/spec/chef/knife/ionoscloud_user_delete_spec.rb +104 -0
  262. data/spec/chef/knife/ionoscloud_user_list_spec.rb +103 -0
  263. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +93 -0
  264. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +99 -0
  265. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +143 -0
  266. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +108 -0
  267. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +110 -0
  268. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +118 -0
  269. data/spec/spec_helper.rb +702 -0
  270. data/spec/test.sh +3 -0
  271. data/summary.md +0 -0
  272. metadata +460 -0
@@ -0,0 +1,89 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudGroupCreate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud group create (options)'
9
+
10
+ option :name,
11
+ short: '-N NAME',
12
+ long: '--name NAME',
13
+ description: 'Mame of the group.'
14
+
15
+ option :create_data_center,
16
+ short: '-D',
17
+ long: '--create-datacenter',
18
+ description: 'The group will be allowed to create virtual data centers.'
19
+
20
+ option :create_snapshot,
21
+ short: '-s',
22
+ long: '--create-snapshot',
23
+ description: 'The group will be allowed to create snapshots.'
24
+
25
+ option :reserve_ip,
26
+ short: '-i',
27
+ long: '--reserve-ip',
28
+ description: 'The group will be allowed to reserve IP addresses.'
29
+
30
+ option :access_activity_log,
31
+ short: '-a',
32
+ long: '--access-log',
33
+ description: 'The group will be allowed to access the activity log.'
34
+
35
+ option :s3_privilege,
36
+ long: '--s3',
37
+ description: 'The group will be allowed to manage S3'
38
+
39
+ option :create_backup_unit,
40
+ short: '-b',
41
+ long: '--create-backupunit',
42
+ description: 'The group will be able to manage backup units.'
43
+
44
+ attr_reader :description, :required_options
45
+
46
+ def initialize(args = [])
47
+ super(args)
48
+ @description =
49
+ 'Use this operation to create a new group and set group privileges.'
50
+ @required_options = [:name, :ionoscloud_username, :ionoscloud_password]
51
+ end
52
+
53
+ def run
54
+ $stdout.sync = true
55
+ validate_required_params(@required_options, config)
56
+
57
+ print "#{ui.color('Creating Group...', :magenta)}"
58
+
59
+ user_management_api = Ionoscloud::UserManagementApi.new(api_client)
60
+
61
+ group, _, headers = user_management_api.um_groups_post_with_http_info({
62
+ properties: {
63
+ name: config[:name],
64
+ createDataCenter: config[:create_data_center],
65
+ createSnapshot: config[:create_snapshot],
66
+ reserveIp: config[:reserve_ip],
67
+ accessActivityLog: config[:access_activity_log],
68
+ s3Privilege: config[:s3_privilege],
69
+ createBackupUnit: config[:create_backup_unit],
70
+ }.compact,
71
+ })
72
+
73
+ dot = ui.color('.', :magenta)
74
+ api_client.wait_for { print dot; is_done? get_request_id headers }
75
+
76
+ puts "\n"
77
+ puts "#{ui.color('ID', :cyan)}: #{group.id}"
78
+ puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
79
+ puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
80
+ puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
81
+ puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
82
+ puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
83
+ puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
84
+ puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
85
+ puts 'done'
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,61 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudGroupDelete < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud group delete GROUP_ID [GROUP_ID]'
9
+
10
+ attr_reader :description, :required_options
11
+
12
+ def initialize(args = [])
13
+ super(args)
14
+ @description =
15
+ 'Use this operation to delete a single group. Resources that are '\
16
+ 'assigned to the group are NOT deleted, but are no longer accessible '\
17
+ 'to the group members unless the member is a Contract Owner, Admin, or Resource Owner.'
18
+ @required_options = [:ionoscloud_username, :ionoscloud_password]
19
+ end
20
+
21
+ def run
22
+ $stdout.sync = true
23
+ validate_required_params(@required_options, config)
24
+
25
+ user_management_api = Ionoscloud::UserManagementApi.new(api_client)
26
+
27
+ @name_args.each do |group_id|
28
+ begin
29
+ group = user_management_api.um_groups_find_by_id(group_id, { depth: 1 })
30
+ rescue Ionoscloud::ApiError => err
31
+ raise err unless err.code == 404
32
+ ui.error("Group ID #{group_id} not found. Skipping.")
33
+ next
34
+ end
35
+
36
+ users = group.entities.users.items.map! { |el| el.id }
37
+
38
+ msg_pair('ID', group.id)
39
+ msg_pair('Name', group.properties.name)
40
+ msg_pair('Create Datacenter', group.properties.create_data_center.to_s)
41
+ msg_pair('Create Snapshot', group.properties.create_snapshot.to_s)
42
+ msg_pair('Reserve IP', group.properties.reserve_ip.to_s)
43
+ msg_pair('Access Activity Log', group.properties.access_activity_log.to_s)
44
+ msg_pair('S3 Privilege', group.properties.s3_privilege.to_s)
45
+ msg_pair('Create Backup Unit', group.properties.create_backup_unit.to_s)
46
+ msg_pair('Users', users.to_s)
47
+ puts "\n"
48
+
49
+ begin
50
+ confirm('Do you really want to delete this Group')
51
+ rescue SystemExit => exc
52
+ next
53
+ end
54
+
55
+ _, _, headers = user_management_api.um_groups_delete_with_http_info(group_id)
56
+ ui.warn("Deleted Group #{group.id}. Request ID: #{get_request_id headers}")
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,46 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudGroupGet < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud group get (options)'
9
+
10
+ option :group_id,
11
+ short: '-G GROUP_ID',
12
+ long: '--group-id GROUP_ID',
13
+ description: 'ID of the group.'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Retrieves detailed information about a specific group. This will also '\
21
+ 'retrieve a list of users who are members of the group.'
22
+ @required_options = [:group_id, :ionoscloud_username, :ionoscloud_password]
23
+ end
24
+
25
+ def run
26
+ $stdout.sync = true
27
+ validate_required_params(@required_options, config)
28
+
29
+ user_management_api = Ionoscloud::UserManagementApi.new(api_client)
30
+ group = user_management_api.um_groups_find_by_id(config[:group_id], { depth: 1 })
31
+
32
+ users = group.entities.users.items.map! { |el| el.id }
33
+
34
+ puts "#{ui.color('ID', :cyan)}: #{group.id}"
35
+ puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
36
+ puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
37
+ puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
38
+ puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
39
+ puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
40
+ puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
41
+ puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
42
+ puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,62 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudGroupList < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud group list (options)'
9
+
10
+ option :user_id,
11
+ short: '-u USER_ID',
12
+ long: '--user-id USER_ID',
13
+ description: 'ID of the user.'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'This retrieves a full list of all groups.'
21
+ @required_options = [:ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ validate_required_params(@required_options, config)
27
+
28
+ group_list = [
29
+ ui.color('ID', :bold),
30
+ ui.color('Name', :bold),
31
+ ui.color('Create Datacenter', :bold),
32
+ ui.color('Create Snapshot', :bold),
33
+ ui.color('Reserve IP', :bold),
34
+ ui.color('Access Activity Log', :bold),
35
+ ui.color('S3 Privilege', :bold),
36
+ ui.color('Create Backup Unit', :bold),
37
+ ]
38
+
39
+ user_management_api = Ionoscloud::UserManagementApi.new(api_client)
40
+
41
+ if config[:user_id]
42
+ groups = user_management_api.um_users_groups_get(config[:user_id], { depth: 1 }).items
43
+ else
44
+ groups = user_management_api.um_groups_get({ depth: 1 }).items
45
+ end
46
+
47
+ groups.each do |group|
48
+ group_list << group.id
49
+ group_list << group.properties.name
50
+ group_list << group.properties.create_data_center.to_s
51
+ group_list << group.properties.create_snapshot.to_s
52
+ group_list << group.properties.reserve_ip.to_s
53
+ group_list << group.properties.access_activity_log.to_s
54
+ group_list << group.properties.s3_privilege.to_s
55
+ group_list << group.properties.create_backup_unit.to_s
56
+ end
57
+
58
+ puts ui.list(group_list, :uneven_columns_across, 8)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,72 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudGroupUserAdd < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud group user add USER_ID [USER_ID] (options)'
9
+
10
+ option :group_id,
11
+ short: '-G GROUP_ID',
12
+ long: '--group-id GROUP_ID',
13
+ description: 'ID of the group.'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Use this operation to add an existing user to a group.'
21
+ @required_options = [:group_id, :ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ validate_required_params(@required_options, config)
27
+
28
+ user_management_api = Ionoscloud::UserManagementApi.new(api_client)
29
+
30
+ request_ids_to_wait = []
31
+
32
+ @name_args.each do |user_id|
33
+ begin
34
+ _, _, headers = user_management_api.um_groups_users_post_with_http_info(
35
+ config[:group_id],
36
+ { id: user_id },
37
+ )
38
+ request_id = get_request_id headers
39
+ request_ids_to_wait.append(request_id)
40
+
41
+ ui.info("Added User #{user_id} to the Group #{config[:group_id]}. Request ID: #{request_id}.")
42
+ rescue Ionoscloud::ApiError => err
43
+ raise err unless err.code == 404
44
+ ui.error("User ID #{user_id} not found. Skipping.")
45
+ next
46
+ end
47
+ end
48
+
49
+ request_ids_to_wait.each { |request_id| api_client.wait_for { is_done? request_id } }
50
+
51
+ group = user_management_api.um_groups_find_by_id(
52
+ config[:group_id],
53
+ { depth: 1 },
54
+ )
55
+
56
+ users = group.entities.users.items.map! { |el| el.id }
57
+
58
+ puts "\n"
59
+ puts "#{ui.color('ID', :cyan)}: #{group.id}"
60
+ puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
61
+ puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
62
+ puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
63
+ puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
64
+ puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
65
+ puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
66
+ puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
67
+ puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
68
+ puts 'done'
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,72 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudGroupUserRemove < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud group user remove USER_ID [USER_ID] (options)'
9
+
10
+ option :group_id,
11
+ short: '-G GROUP_ID',
12
+ long: '--group-id GROUP_ID',
13
+ description: 'ID of the group.'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Use this operation to remove a user from a group.'
21
+ @required_options = [:group_id, :ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ validate_required_params(@required_options, config)
27
+
28
+ user_management_api = Ionoscloud::UserManagementApi.new(api_client)
29
+
30
+ request_ids_to_wait = []
31
+
32
+ @name_args.each do |user_id|
33
+ begin
34
+ _, _, headers = user_management_api.um_groups_users_delete_with_http_info(
35
+ config[:group_id],
36
+ user_id,
37
+ )
38
+ request_id = get_request_id headers
39
+ request_ids_to_wait.append(request_id)
40
+
41
+ ui.warn("Removed User #{user_id} from the Group #{config[:group_id]}. Request ID: #{request_id}.")
42
+ rescue Ionoscloud::ApiError => err
43
+ raise err unless err.code == 404
44
+ ui.error("User ID #{user_id} not found. Skipping.")
45
+ next
46
+ end
47
+ end
48
+
49
+ request_ids_to_wait.each { |request_id| api_client.wait_for { is_done? request_id } }
50
+
51
+ group = user_management_api.um_groups_find_by_id(
52
+ config[:group_id],
53
+ { depth: 1 },
54
+ )
55
+
56
+ users = group.entities.users.items.map! { |el| el.id }
57
+
58
+ puts "\n"
59
+ puts "#{ui.color('ID', :cyan)}: #{group.id}"
60
+ puts "#{ui.color('Name', :cyan)}: #{group.properties.name}"
61
+ puts "#{ui.color('Create Datacenter', :cyan)}: #{group.properties.create_data_center.to_s}"
62
+ puts "#{ui.color('Create Snapshot', :cyan)}: #{group.properties.create_snapshot.to_s}"
63
+ puts "#{ui.color('Reserve IP', :cyan)}: #{group.properties.reserve_ip.to_s}"
64
+ puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
65
+ puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
66
+ puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
67
+ puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
68
+ puts 'done'
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,47 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudImageList < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud image list'
9
+
10
+ attr_reader :description, :required_options
11
+
12
+ def initialize(args = [])
13
+ super(args)
14
+ @description =
15
+ 'A list of disk and ISO images are available from Ionoscloud for immediate use. '\
16
+ 'Make sure the image you use is in the same location as the virtual data center.'
17
+ @required_options = [:ionoscloud_username, :ionoscloud_password]
18
+ end
19
+
20
+ def run
21
+ $stdout.sync = true
22
+ validate_required_params(@required_options, config)
23
+
24
+ image_list = [
25
+ ui.color('ID', :bold),
26
+ ui.color('Name', :bold),
27
+ ui.color('Description', :bold),
28
+ ui.color('Location', :bold),
29
+ ui.color('Size', :bold),
30
+ ui.color('Public', :bold)
31
+ ]
32
+ image_api = Ionoscloud::ImageApi.new(api_client)
33
+
34
+ image_api.images_get({ depth: 1 }).items.each do |image|
35
+ image_list << image.id
36
+ image_list << image.properties.name
37
+ image_list << image.properties.description
38
+ image_list << image.properties.location
39
+ image_list << image.properties.size.to_s
40
+ image_list << image.properties.public.to_s
41
+ end
42
+
43
+ puts ui.list(image_list, :uneven_columns_across, 6)
44
+ end
45
+ end
46
+ end
47
+ end