knife-ionoscloud 5.1.0 → 6.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/knife-ionoscloud.gemspec +1 -1
  3. data/lib/chef/knife/ionoscloud_backupunit_create.rb +1 -1
  4. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +1 -1
  5. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -1
  6. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +1 -1
  7. data/lib/chef/knife/ionoscloud_base.rb +1 -1
  8. data/lib/chef/knife/ionoscloud_composite_server_create.rb +25 -23
  9. data/lib/chef/knife/ionoscloud_contract_list.rb +32 -23
  10. data/lib/chef/knife/ionoscloud_cube_server_create.rb +215 -0
  11. data/lib/chef/knife/ionoscloud_datacenter_create.rb +1 -1
  12. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +1 -1
  13. data/lib/chef/knife/ionoscloud_datacenter_list.rb +4 -2
  14. data/lib/chef/knife/ionoscloud_firewall_create.rb +11 -4
  15. data/lib/chef/knife/ionoscloud_firewall_delete.rb +4 -3
  16. data/lib/chef/knife/ionoscloud_firewall_list.rb +5 -3
  17. data/lib/chef/knife/ionoscloud_flowlog_create.rb +121 -0
  18. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +106 -0
  19. data/lib/chef/knife/ionoscloud_flowlog_list.rb +100 -0
  20. data/lib/chef/knife/ionoscloud_group_create.rb +35 -14
  21. data/lib/chef/knife/ionoscloud_group_delete.rb +7 -0
  22. data/lib/chef/knife/ionoscloud_group_get.rb +6 -0
  23. data/lib/chef/knife/ionoscloud_group_list.rb +19 -7
  24. data/lib/chef/knife/ionoscloud_image_list.rb +1 -1
  25. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +1 -1
  26. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +1 -1
  27. data/lib/chef/knife/ionoscloud_k8s_delete.rb +5 -2
  28. data/lib/chef/knife/ionoscloud_label_add.rb +1 -1
  29. data/lib/chef/knife/ionoscloud_label_list.rb +1 -1
  30. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -1
  31. data/lib/chef/knife/ionoscloud_lan_create.rb +1 -1
  32. data/lib/chef/knife/ionoscloud_lan_delete.rb +1 -1
  33. data/lib/chef/knife/ionoscloud_lan_list.rb +1 -1
  34. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +1 -1
  35. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +1 -1
  36. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +1 -1
  37. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -1
  38. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +1 -1
  39. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +1 -1
  40. data/lib/chef/knife/ionoscloud_location_list.rb +5 -3
  41. data/lib/chef/knife/ionoscloud_natgateway_create.rb +71 -0
  42. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +69 -0
  43. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +82 -0
  44. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +58 -0
  45. data/lib/chef/knife/ionoscloud_natgateway_list.rb +49 -0
  46. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +124 -0
  47. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +63 -0
  48. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +72 -0
  49. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +95 -0
  50. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +81 -0
  51. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +56 -0
  52. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +150 -0
  53. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +63 -0
  54. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +78 -0
  55. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +141 -0
  56. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +68 -0
  57. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +105 -0
  58. data/lib/chef/knife/ionoscloud_nic_create.rb +14 -9
  59. data/lib/chef/knife/ionoscloud_nic_delete.rb +4 -2
  60. data/lib/chef/knife/ionoscloud_nic_list.rb +9 -5
  61. data/lib/chef/knife/ionoscloud_node_list.rb +0 -1
  62. data/lib/chef/knife/ionoscloud_nodepool_create.rb +42 -16
  63. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +25 -0
  64. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +130 -0
  65. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +96 -0
  66. data/lib/chef/knife/ionoscloud_nodepool_list.rb +3 -1
  67. data/lib/chef/knife/ionoscloud_pcc_create.rb +2 -2
  68. data/lib/chef/knife/ionoscloud_pcc_delete.rb +1 -1
  69. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -1
  70. data/lib/chef/knife/ionoscloud_request_list.rb +1 -1
  71. data/lib/chef/knife/ionoscloud_request_status.rb +1 -1
  72. data/lib/chef/knife/ionoscloud_s3key_create.rb +2 -2
  73. data/lib/chef/knife/ionoscloud_s3key_delete.rb +3 -3
  74. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -2
  75. data/lib/chef/knife/ionoscloud_server_console.rb +42 -0
  76. data/lib/chef/knife/ionoscloud_server_create.rb +8 -8
  77. data/lib/chef/knife/ionoscloud_server_delete.rb +1 -1
  78. data/lib/chef/knife/ionoscloud_server_list.rb +16 -5
  79. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -1
  80. data/lib/chef/knife/ionoscloud_server_resume.rb +43 -0
  81. data/lib/chef/knife/ionoscloud_server_start.rb +1 -1
  82. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -1
  83. data/lib/chef/knife/ionoscloud_server_suspend.rb +44 -0
  84. data/lib/chef/knife/ionoscloud_server_token.rb +42 -0
  85. data/lib/chef/knife/ionoscloud_server_upgrade.rb +44 -0
  86. data/lib/chef/knife/ionoscloud_snapshot_create.rb +2 -2
  87. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +1 -1
  88. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -1
  89. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +2 -2
  90. data/lib/chef/knife/ionoscloud_template_list.rb +46 -0
  91. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -1
  92. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -1
  93. data/lib/chef/knife/ionoscloud_volume_create.rb +33 -35
  94. data/lib/chef/knife/ionoscloud_volume_delete.rb +1 -1
  95. data/lib/chef/knife/ionoscloud_volume_detach.rb +1 -1
  96. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -2
  97. data/lib/knife-ionoscloud/version.rb +1 -1
  98. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  99. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  100. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  101. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  102. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  103. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  104. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  105. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  106. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +3 -2
  107. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +5 -5
  108. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +5 -3
  109. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  110. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  111. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  112. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  113. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  114. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  115. data/spec/chef/knife/ionoscloud_group_create_spec.rb +6 -0
  116. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +6 -0
  117. data/spec/chef/knife/ionoscloud_group_get_spec.rb +6 -0
  118. data/spec/chef/knife/ionoscloud_group_list_spec.rb +26 -8
  119. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  120. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +3 -3
  121. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +4 -4
  122. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +5 -2
  123. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  124. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  125. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  126. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  127. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +3 -3
  128. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +5 -5
  129. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +2 -2
  130. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  131. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  132. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  133. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  134. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  135. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  136. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  137. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +77 -0
  138. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  139. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +143 -0
  140. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +194 -0
  141. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  142. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +98 -0
  143. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  144. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +77 -0
  145. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +80 -0
  146. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +119 -0
  147. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  148. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +104 -0
  149. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  150. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +124 -0
  151. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +109 -0
  152. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  153. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +263 -0
  154. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  155. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  156. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  157. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +15 -1
  158. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +226 -0
  159. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +199 -0
  160. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  161. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +6 -6
  162. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +5 -5
  163. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  164. data/spec/chef/knife/ionoscloud_request_list_spec.rb +16 -16
  165. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  166. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  167. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  168. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  169. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  170. data/spec/chef/knife/ionoscloud_server_create_spec.rb +3 -3
  171. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +5 -5
  172. data/spec/chef/knife/ionoscloud_server_list_spec.rb +63 -5
  173. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  174. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  175. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  176. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  177. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  178. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  179. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  180. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +3 -3
  181. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +5 -5
  182. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  183. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +3 -3
  184. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  185. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  186. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  187. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +6 -58
  188. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +5 -5
  189. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -5
  190. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  191. data/spec/spec_helper.rb +223 -29
  192. metadata +93 -6
@@ -53,6 +53,19 @@ class Chef
53
53
  long: '--create-internet-access',
54
54
  description: 'The group will be have internet access privilege.'
55
55
 
56
+ option :create_flow_log,
57
+ long: '--create-flow-log',
58
+ description: 'The group will be granted create Flow Logs privilege.'
59
+
60
+ option :access_and_manage_monitoring,
61
+ long: '--manage-monitoring',
62
+ description: 'Privilege for a group to access and manage monitoring '\
63
+ 'related functionality (access metrics, CRUD on alarms, alarm-actions etc) using Monotoring-as-a-Service (MaaS).'
64
+
65
+ option :access_and_manage_certificates,
66
+ long: '--manage-certificates',
67
+ description: 'Privilege for a group to access and manage certificates.'
68
+
56
69
  attr_reader :description, :required_options
57
70
 
58
71
  def initialize(args = [])
@@ -70,20 +83,25 @@ class Chef
70
83
 
71
84
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
72
85
 
73
- group, _, headers = user_management_api.um_groups_post_with_http_info({
74
- properties: {
75
- name: config[:name],
76
- createDataCenter: config[:create_data_center],
77
- createSnapshot: config[:create_snapshot],
78
- reserveIp: config[:reserve_ip],
79
- accessActivityLog: config[:access_activity_log],
80
- s3Privilege: config[:s3_privilege],
81
- createBackupUnit: config[:create_backup_unit],
82
- createK8sCluster: config[:create_k8s_cluster],
83
- createPcc: config[:create_pcc],
84
- createInternetAccess: config[:create_internet_access],
85
- }.compact,
86
- })
86
+ group_properties = {
87
+ name: config[:name],
88
+ create_data_center: config[:create_data_center],
89
+ create_snapshot: config[:create_snapshot],
90
+ reserve_ip: config[:reserve_ip],
91
+ access_activity_log: config[:access_activity_log],
92
+ s3_privilege: config[:s3_privilege],
93
+ create_backup_unit: config[:create_backup_unit],
94
+ create_k8s_cluster: config[:create_k8s_cluster],
95
+ create_pcc: config[:create_pcc],
96
+ create_internet_access: config[:create_internet_access],
97
+ create_flow_log: config[:create_flow_log],
98
+ access_and_manage_monitoring: config[:access_and_manage_monitoring],
99
+ access_and_manage_certificates: config[:access_and_manage_certificates],
100
+ }.compact
101
+
102
+ group, _, headers = user_management_api.um_groups_post_with_http_info(
103
+ Ionoscloud::Group.new(properties: Ionoscloud::GroupProperties.new(**group_properties)),
104
+ )
87
105
 
88
106
  dot = ui.color('.', :magenta)
89
107
  api_client.wait_for { print dot; is_done? get_request_id headers }
@@ -100,6 +118,9 @@ class Chef
100
118
  puts "#{ui.color('Create K8s Clusters', :cyan)}: #{group.properties.create_k8s_cluster.to_s}"
101
119
  puts "#{ui.color('Create PCC', :cyan)}: #{group.properties.create_pcc.to_s}"
102
120
  puts "#{ui.color('Create Internet Acess', :cyan)}: #{group.properties.create_internet_access.to_s}"
121
+ puts "#{ui.color('Create Flow Logs', :cyan)}: #{group.properties.create_flow_log.to_s}"
122
+ puts "#{ui.color('Access and Manage Monitoring', :cyan)}: #{group.properties.access_and_manage_monitoring.to_s}"
123
+ puts "#{ui.color('Access and Manage Certificates', :cyan)}: #{group.properties.access_and_manage_certificates.to_s}"
103
124
  puts 'done'
104
125
  end
105
126
  end
@@ -43,6 +43,13 @@ class Chef
43
43
  msg_pair('Access Activity Log', group.properties.access_activity_log.to_s)
44
44
  msg_pair('S3 Privilege', group.properties.s3_privilege.to_s)
45
45
  msg_pair('Create Backup Unit', group.properties.create_backup_unit.to_s)
46
+ msg_pair('Create K8s Clusters', group.properties.create_k8s_cluster.to_s)
47
+ msg_pair('Create PCC', group.properties.create_pcc.to_s)
48
+ msg_pair('Create Internet Acess', group.properties.create_internet_access.to_s)
49
+ msg_pair('Create Flow Logs', group.properties.create_flow_log.to_s)
50
+ msg_pair('Access and Manage Monitoring', group.properties.access_and_manage_monitoring.to_s)
51
+ msg_pair('Access and Manage Certificates', group.properties.access_and_manage_certificates.to_s)
52
+
46
53
  msg_pair('Users', users.to_s)
47
54
  puts "\n"
48
55
 
@@ -39,6 +39,12 @@ class Chef
39
39
  puts "#{ui.color('Access Activity Log', :cyan)}: #{group.properties.access_activity_log.to_s}"
40
40
  puts "#{ui.color('S3 Privilege', :cyan)}: #{group.properties.s3_privilege.to_s}"
41
41
  puts "#{ui.color('Create Backup Unit', :cyan)}: #{group.properties.create_backup_unit.to_s}"
42
+ puts "#{ui.color('Create K8s Clusters', :cyan)}: #{group.properties.create_k8s_cluster.to_s}"
43
+ puts "#{ui.color('Create PCC', :cyan)}: #{group.properties.create_pcc.to_s}"
44
+ puts "#{ui.color('Create Internet Acess', :cyan)}: #{group.properties.create_internet_access.to_s}"
45
+ puts "#{ui.color('Create Flow Logs', :cyan)}: #{group.properties.create_flow_log.to_s}"
46
+ puts "#{ui.color('Access and Manage Monitoring', :cyan)}: #{group.properties.access_and_manage_monitoring.to_s}"
47
+ puts "#{ui.color('Access and Manage Certificates', :cyan)}: #{group.properties.access_and_manage_certificates.to_s}"
42
48
  puts "#{ui.color('Users', :cyan)}: #{users.to_s}"
43
49
  end
44
50
  end
@@ -28,12 +28,18 @@ class Chef
28
28
  group_list = [
29
29
  ui.color('ID', :bold),
30
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),
31
+ ui.color('Datacenter', :bold),
32
+ ui.color('Snapshot', :bold),
33
+ ui.color('IP', :bold),
34
+ ui.color('Activity', :bold),
35
+ ui.color('S3', :bold),
36
+ ui.color('Backup', :bold),
37
+ ui.color('K8s', :bold),
38
+ ui.color('PCC', :bold),
39
+ ui.color('Internet', :bold),
40
+ ui.color('FlowLogs', :bold),
41
+ ui.color('Monitoring', :bold),
42
+ ui.color('Certificates', :bold),
37
43
  ]
38
44
 
39
45
  user_management_api = Ionoscloud::UserManagementApi.new(api_client)
@@ -53,9 +59,15 @@ class Chef
53
59
  group_list << group.properties.access_activity_log.to_s
54
60
  group_list << group.properties.s3_privilege.to_s
55
61
  group_list << group.properties.create_backup_unit.to_s
62
+ group_list << group.properties.create_k8s_cluster.to_s
63
+ group_list << group.properties.create_pcc.to_s
64
+ group_list << group.properties.create_internet_access.to_s
65
+ group_list << group.properties.create_flow_log.to_s
66
+ group_list << group.properties.access_and_manage_monitoring.to_s
67
+ group_list << group.properties.access_and_manage_certificates.to_s
56
68
  end
57
69
 
58
- puts ui.list(group_list, :uneven_columns_across, 8)
70
+ puts ui.list(group_list, :uneven_columns_across, 14)
59
71
  end
60
72
  end
61
73
  end
@@ -29,7 +29,7 @@ class Chef
29
29
  ui.color('Public', :bold),
30
30
  ui.color('Aliases', :bold),
31
31
  ]
32
- image_api = Ionoscloud::ImageApi.new(api_client)
32
+ image_api = Ionoscloud::ImagesApi.new(api_client)
33
33
 
34
34
  image_api.images_get({ depth: 1 }).items.each do |image|
35
35
  image_list << image.id
@@ -43,7 +43,7 @@ class Chef
43
43
  $stdout.sync = true
44
44
  validate_required_params(@required_options, config)
45
45
 
46
- lan_api = Ionoscloud::LanApi.new(api_client)
46
+ lan_api = Ionoscloud::LansApi.new(api_client)
47
47
 
48
48
  lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], config[:lan_id])
49
49
 
@@ -40,7 +40,7 @@ class Chef
40
40
  $stdout.sync = true
41
41
  validate_required_params(@required_options, config)
42
42
 
43
- lan_api = Ionoscloud::LanApi.new(api_client)
43
+ lan_api = Ionoscloud::LansApi.new(api_client)
44
44
 
45
45
  lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], config[:lan_id])
46
46
 
@@ -31,8 +31,11 @@ class Chef
31
31
  next
32
32
  end
33
33
 
34
- if cluster.metadata.state != 'ACTIVE'
35
- ui.error("K8s Cluster ID #{cluster_id} is not active. Skipping.")
34
+ unless ['ACTIVE', 'TERMINATED'].include? cluster.metadata.state
35
+ ui.error(
36
+ "K8s Cluster #{cluster_id} state must be one of ['ACTIVE', 'TERMINATED'], "\
37
+ "actual state is '#{cluster.metadata.state}'. Skipping."
38
+ )
36
39
  next
37
40
  end
38
41
 
@@ -44,7 +44,7 @@ class Chef
44
44
  $stdout.sync = true
45
45
  validate_required_params(@required_options, config)
46
46
 
47
- label_api = Ionoscloud::LabelApi.new(api_client)
47
+ label_api = Ionoscloud::LabelsApi.new(api_client)
48
48
 
49
49
  label_properties = {
50
50
  properties: {
@@ -36,7 +36,7 @@ class Chef
36
36
  $stdout.sync = true
37
37
  validate_required_params(@required_options, config)
38
38
 
39
- label_api = Ionoscloud::LabelApi.new(api_client)
39
+ label_api = Ionoscloud::LabelsApi.new(api_client)
40
40
  opts = { depth: 1 }
41
41
 
42
42
  case config[:type]
@@ -35,7 +35,7 @@ class Chef
35
35
  $stdout.sync = true
36
36
  validate_required_params(@required_options, config)
37
37
 
38
- label_api = Ionoscloud::LabelApi.new(api_client)
38
+ label_api = Ionoscloud::LabelsApi.new(api_client)
39
39
 
40
40
  args = [config[:resource_id]]
41
41
 
@@ -44,7 +44,7 @@ class Chef
44
44
 
45
45
  print "#{ui.color('Creating LAN...', :magenta)}"
46
46
 
47
- lan_api = Ionoscloud::LanApi.new(api_client)
47
+ lan_api = Ionoscloud::LansApi.new(api_client)
48
48
 
49
49
  lan, _, headers = lan_api.datacenters_lans_post_with_http_info(
50
50
  config[:datacenter_id],
@@ -25,7 +25,7 @@ class Chef
25
25
  $stdout.sync = true
26
26
  validate_required_params(@required_options, config)
27
27
 
28
- lan_api = Ionoscloud::LanApi.new(api_client)
28
+ lan_api = Ionoscloud::LansApi.new(api_client)
29
29
  @name_args.each do |lan_id|
30
30
  begin
31
31
  lan = lan_api.datacenters_lans_find_by_id(config[:datacenter_id], lan_id)
@@ -32,7 +32,7 @@ class Chef
32
32
  ui.color('Public', :bold),
33
33
  ui.color('PCC', :bold),
34
34
  ]
35
- lan_api = Ionoscloud::LanApi.new(api_client)
35
+ lan_api = Ionoscloud::LansApi.new(api_client)
36
36
 
37
37
  lan_api.datacenters_lans_get(config[:datacenter_id], { depth: 1 }).items.each do |lan|
38
38
  lan_list << lan.id
@@ -49,7 +49,7 @@ class Chef
49
49
  config[:nics] = config[:nics].split(',').map! { |nic| { id: nic } }
50
50
  end
51
51
 
52
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
52
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
53
53
 
54
54
  load_balancer, _, headers = load_balancer_api.datacenters_loadbalancers_post_with_http_info(
55
55
  config[:datacenter_id],
@@ -25,7 +25,7 @@ class Chef
25
25
  $stdout.sync = true
26
26
  validate_required_params(@required_options, config)
27
27
 
28
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
28
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
29
29
 
30
30
  @name_args.each do |load_balancer_id|
31
31
  begin
@@ -30,7 +30,7 @@ class Chef
30
30
  $stdout.sync = true
31
31
  validate_required_params(@required_options, config)
32
32
 
33
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
33
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
34
34
 
35
35
  load_balancer = load_balancer_api.datacenters_loadbalancers_find_by_id(
36
36
  config[:datacenter_id],
@@ -33,7 +33,7 @@ class Chef
33
33
  ui.color('NICs count', :bold),
34
34
  ]
35
35
 
36
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
36
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
37
37
 
38
38
  load_balancer_api.datacenters_loadbalancers_get(config[:datacenter_id], { depth: 2 }).items.each do |load_balancer|
39
39
  load_balancers_list << load_balancer.id
@@ -30,7 +30,7 @@ class Chef
30
30
  $stdout.sync = true
31
31
  validate_required_params(@required_options, config)
32
32
 
33
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
33
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
34
34
 
35
35
  request_ids_to_wait = []
36
36
 
@@ -30,7 +30,7 @@ class Chef
30
30
  $stdout.sync = true
31
31
  validate_required_params(@required_options, config)
32
32
 
33
- load_balancer_api = Ionoscloud::LoadBalancerApi.new(api_client)
33
+ load_balancer_api = Ionoscloud::LoadBalancersApi.new(api_client)
34
34
 
35
35
  request_ids_to_wait = []
36
36
 
@@ -22,16 +22,18 @@ class Chef
22
22
 
23
23
  location_list = [
24
24
  ui.color('ID', :bold),
25
- ui.color('Name', :bold)
25
+ ui.color('Name', :bold),
26
+ ui.color('CPU Architectures', :bold),
26
27
  ]
27
- location_api = Ionoscloud::LocationApi.new(api_client)
28
+ location_api = Ionoscloud::LocationsApi.new(api_client)
28
29
 
29
30
  location_api.locations_get({ depth: 1 }).items.each do |location|
30
31
  location_list << location.id
31
32
  location_list << location.properties.name
33
+ location_list << location.properties.cpu_architecture.map { |arch| arch.cpu_family }
32
34
  end
33
35
 
34
- puts ui.list(location_list, :uneven_columns_across, 2)
36
+ puts ui.list(location_list, :uneven_columns_across, 3)
35
37
  end
36
38
  end
37
39
  end
@@ -0,0 +1,71 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudNatgatewayCreate < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud natgateway create (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'Name of the data center'
14
+
15
+ option :name,
16
+ short: '-n NAME',
17
+ long: '--name NAME',
18
+ description: 'Name of the server'
19
+
20
+ option :ips,
21
+ short: '-i IP[,IP,...]',
22
+ long: '--ips IP[,IP,...]',
23
+ description: 'IPs assigned to the NIC'
24
+
25
+ attr_reader :description, :required_options
26
+
27
+ def initialize(args = [])
28
+ super(args)
29
+ @description =
30
+ 'Creates a new Nat Gateway under a data center.'
31
+ @required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
32
+ end
33
+
34
+ def run
35
+ $stdout.sync = true
36
+ validate_required_params(@required_options, config)
37
+
38
+ natgateways_api = Ionoscloud::NATGatewaysApi.new(api_client)
39
+
40
+ if config[:ips]
41
+ config[:ips] = config[:ips].split(',')
42
+ end
43
+
44
+ natgateway = Ionoscloud::NatGateway.new(
45
+ properties: Ionoscloud::NatGatewayProperties.new(
46
+ name: config[:name],
47
+ public_ips: config[:ips],
48
+ )
49
+ )
50
+
51
+ natgateway, _, headers = natgateways_api.datacenters_natgateways_post_with_http_info(
52
+ config[:datacenter_id],
53
+ natgateway,
54
+ )
55
+
56
+ print "#{ui.color('Creating Nat Gateway...', :magenta)}"
57
+ dot = ui.color('.', :magenta)
58
+ api_client.wait_for { print dot; is_done? get_request_id headers }
59
+
60
+ natgateway = natgateways_api.datacenters_natgateways_find_by_nat_gateway_id(config[:datacenter_id], natgateway.id)
61
+
62
+ puts "\n"
63
+ puts "#{ui.color('ID', :cyan)}: #{natgateway.id}"
64
+ puts "#{ui.color('Name', :cyan)}: #{natgateway.properties.name}"
65
+ puts "#{ui.color('IPS', :cyan)}: #{natgateway.properties.public_ips}"
66
+
67
+ puts 'done'
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,69 @@
1
+ require_relative 'ionoscloud_base'
2
+
3
+ class Chef
4
+ class Knife
5
+ class IonoscloudNatgatewayDelete < Knife
6
+ include Knife::IonoscloudBase
7
+
8
+ banner 'knife ionoscloud natgateway delete NATGATEWAY_ID [NATGATEWAY_ID] (options)'
9
+
10
+ option :datacenter_id,
11
+ short: '-D DATACENTER_ID',
12
+ long: '--datacenter-id DATACENTER_ID',
13
+ description: 'Name of the data center'
14
+
15
+ attr_reader :description, :required_options
16
+
17
+ def initialize(args = [])
18
+ super(args)
19
+ @description =
20
+ 'Deletes an existing NAT Gateway.'
21
+ @required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
22
+ end
23
+
24
+ def run
25
+ $stdout.sync = true
26
+ validate_required_params(@required_options, config)
27
+
28
+ natgateways_api = Ionoscloud::NATGatewaysApi.new(api_client)
29
+ @name_args.each do |natgateway_id|
30
+ begin
31
+ natgateway = natgateways_api.datacenters_natgateways_find_by_nat_gateway_id(config[:datacenter_id], natgateway_id, depth: 2)
32
+ rescue Ionoscloud::ApiError => err
33
+ raise err unless err.code == 404
34
+ ui.error("NAT Gateway ID #{natgateway_id} not found. Skipping.")
35
+ next
36
+ end
37
+
38
+ msg_pair('ID', natgateway.id)
39
+ msg_pair('Name', natgateway.properties.name)
40
+ msg_pair('IPS', natgateway.properties.public_ips)
41
+ msg_pair('LANS', natgateway.properties.lans.map { |el| { id: el.id, gateway_ips: el.gateway_ips } })
42
+ msg_pair('Rules', natgateway.entities.rules.items.map do |el|
43
+ {
44
+ id: el.id,
45
+ name: el.properties.name,
46
+ type: el.properties.type,
47
+ protocol: el.properties.protocol,
48
+ public_ip: el.properties.public_ip,
49
+ source_subnet: el.properties.source_subnet,
50
+ target_subnet: el.properties.target_subnet,
51
+ target_port_range_start: el.properties.target_port_range ? el.properties.target_port_range.start : '',
52
+ target_port_range_end: el.properties.target_port_range ? el.properties.target_port_range._end : '',
53
+ }
54
+ end
55
+ )
56
+
57
+ begin
58
+ confirm('Do you really want to delete this NAT Gateway')
59
+ rescue SystemExit => exc
60
+ next
61
+ end
62
+
63
+ _, _, headers = natgateways_api.datacenters_natgateways_delete_with_http_info(config[:datacenter_id], natgateway.id)
64
+ ui.warn("Deleted NAT Gateway #{natgateway.id}. Request ID: #{get_request_id headers}")
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end