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.
- checksums.yaml +7 -0
- data/.gitbook.yaml +4 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +54 -0
- data/.github/ISSUE_TEMPLATE/config.yml +5 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +51 -0
- data/.github/workflows/ci.yml +38 -0
- data/.github/workflows/publish.yml +58 -0
- data/.gitignore +26 -0
- data/.rubocop.yml +148 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +201 -0
- data/Rakefile +7 -0
- data/docs/README.md +67 -0
- data/docs/changelog.md +1 -0
- data/docs/docs_generator.rb +107 -0
- data/docs/subcommands/backupunit_create.md +38 -0
- data/docs/subcommands/backupunit_delete.md +26 -0
- data/docs/subcommands/backupunit_list.md +26 -0
- data/docs/subcommands/backupunit_ssourl.md +30 -0
- data/docs/subcommands/composite_server_create.md +97 -0
- data/docs/subcommands/contract_list.md +26 -0
- data/docs/subcommands/datacenter_create.md +41 -0
- data/docs/subcommands/datacenter_delete.md +26 -0
- data/docs/subcommands/datacenter_list.md +26 -0
- data/docs/subcommands/firewall_create.md +65 -0
- data/docs/subcommands/firewall_delete.md +38 -0
- data/docs/subcommands/firewall_list.md +38 -0
- data/docs/subcommands/group_create.md +48 -0
- data/docs/subcommands/group_delete.md +26 -0
- data/docs/subcommands/group_get.md +30 -0
- data/docs/subcommands/group_list.md +29 -0
- data/docs/subcommands/group_user_add.md +30 -0
- data/docs/subcommands/group_user_remove.md +30 -0
- data/docs/subcommands/image_list.md +26 -0
- data/docs/subcommands/ipblock_create.md +37 -0
- data/docs/subcommands/ipblock_delete.md +26 -0
- data/docs/subcommands/ipblock_list.md +26 -0
- data/docs/subcommands/ipfailover_add.md +46 -0
- data/docs/subcommands/ipfailover_remove.md +42 -0
- data/docs/subcommands/k8s_create.md +39 -0
- data/docs/subcommands/k8s_delete.md +26 -0
- data/docs/subcommands/k8s_list.md +26 -0
- data/docs/subcommands/kubeconfig_get.md +30 -0
- data/docs/subcommands/label_add.md +45 -0
- data/docs/subcommands/label_list.md +35 -0
- data/docs/subcommands/label_remove.md +37 -0
- data/docs/subcommands/lan_create.md +36 -0
- data/docs/subcommands/lan_delete.md +30 -0
- data/docs/subcommands/lan_list.md +30 -0
- data/docs/subcommands/loadbalancer_create.md +43 -0
- data/docs/subcommands/loadbalancer_delete.md +30 -0
- data/docs/subcommands/loadbalancer_get.md +34 -0
- data/docs/subcommands/loadbalancer_list.md +30 -0
- data/docs/subcommands/loadbalancer_nic_add.md +34 -0
- data/docs/subcommands/loadbalancer_nic_remove.md +34 -0
- data/docs/subcommands/location_list.md +26 -0
- data/docs/subcommands/nic_create.md +51 -0
- data/docs/subcommands/nic_delete.md +34 -0
- data/docs/subcommands/nic_list.md +34 -0
- data/docs/subcommands/node_delete.md +34 -0
- data/docs/subcommands/node_list.md +34 -0
- data/docs/subcommands/node_replace.md +36 -0
- data/docs/subcommands/nodepool_create.md +87 -0
- data/docs/subcommands/nodepool_delete.md +30 -0
- data/docs/subcommands/nodepool_list.md +30 -0
- data/docs/subcommands/pcc_create.md +38 -0
- data/docs/subcommands/pcc_delete.md +26 -0
- data/docs/subcommands/pcc_list.md +26 -0
- data/docs/subcommands/request_list.md +32 -0
- data/docs/subcommands/request_status.md +30 -0
- data/docs/subcommands/request_wait.md +30 -0
- data/docs/subcommands/resource_list.md +34 -0
- data/docs/subcommands/s3key_create.md +30 -0
- data/docs/subcommands/s3key_delete.md +30 -0
- data/docs/subcommands/s3key_list.md +30 -0
- data/docs/subcommands/server_create.md +55 -0
- data/docs/subcommands/server_delete.md +32 -0
- data/docs/subcommands/server_list.md +30 -0
- data/docs/subcommands/server_reboot.md +30 -0
- data/docs/subcommands/server_start.md +30 -0
- data/docs/subcommands/server_stop.md +30 -0
- data/docs/subcommands/share_create.md +40 -0
- data/docs/subcommands/share_delete.md +30 -0
- data/docs/subcommands/share_list.md +30 -0
- data/docs/subcommands/snapshot_create.md +34 -0
- data/docs/subcommands/snapshot_delete.md +26 -0
- data/docs/subcommands/snapshot_list.md +26 -0
- data/docs/subcommands/snapshot_restore.md +38 -0
- data/docs/subcommands/user_create.md +49 -0
- data/docs/subcommands/user_delete.md +26 -0
- data/docs/subcommands/user_list.md +29 -0
- data/docs/subcommands/user_ssourl.md +30 -0
- data/docs/subcommands/volume_attach.md +34 -0
- data/docs/subcommands/volume_create.md +63 -0
- data/docs/subcommands/volume_delete.md +30 -0
- data/docs/subcommands/volume_detach.md +36 -0
- data/docs/subcommands/volume_list.md +33 -0
- data/docs/summary.md +89 -0
- data/docs/templates/subcommand_doc.mustache +26 -0
- data/docs/templates/summary.mustache +10 -0
- data/knife-ionoscloud.gemspec +27 -0
- data/lib/chef/knife/ionoscloud_backupunit_create.rb +63 -0
- data/lib/chef/knife/ionoscloud_backupunit_delete.rb +55 -0
- data/lib/chef/knife/ionoscloud_backupunit_list.rb +41 -0
- data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +39 -0
- data/lib/chef/knife/ionoscloud_base.rb +76 -0
- data/lib/chef/knife/ionoscloud_composite_server_create.rb +217 -0
- data/lib/chef/knife/ionoscloud_contract_list.rb +50 -0
- data/lib/chef/knife/ionoscloud_datacenter_create.rb +66 -0
- data/lib/chef/knife/ionoscloud_datacenter_delete.rb +56 -0
- data/lib/chef/knife/ionoscloud_datacenter_list.rb +50 -0
- data/lib/chef/knife/ionoscloud_firewall_create.rb +135 -0
- data/lib/chef/knife/ionoscloud_firewall_delete.rb +76 -0
- data/lib/chef/knife/ionoscloud_firewall_list.rb +72 -0
- data/lib/chef/knife/ionoscloud_group_create.rb +89 -0
- data/lib/chef/knife/ionoscloud_group_delete.rb +61 -0
- data/lib/chef/knife/ionoscloud_group_get.rb +46 -0
- data/lib/chef/knife/ionoscloud_group_list.rb +62 -0
- data/lib/chef/knife/ionoscloud_group_user_add.rb +72 -0
- data/lib/chef/knife/ionoscloud_group_user_remove.rb +72 -0
- data/lib/chef/knife/ionoscloud_image_list.rb +47 -0
- data/lib/chef/knife/ionoscloud_ipblock_create.rb +63 -0
- data/lib/chef/knife/ionoscloud_ipblock_delete.rb +50 -0
- data/lib/chef/knife/ionoscloud_ipblock_list.rb +42 -0
- data/lib/chef/knife/ionoscloud_ipfailover_add.rb +76 -0
- data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +76 -0
- data/lib/chef/knife/ionoscloud_k8s_create.rb +79 -0
- data/lib/chef/knife/ionoscloud_k8s_delete.rb +67 -0
- data/lib/chef/knife/ionoscloud_k8s_list.rb +45 -0
- data/lib/chef/knife/ionoscloud_kubeconfig_get.rb +37 -0
- data/lib/chef/knife/ionoscloud_label_add.rb +84 -0
- data/lib/chef/knife/ionoscloud_label_list.rb +83 -0
- data/lib/chef/knife/ionoscloud_label_remove.rb +77 -0
- data/lib/chef/knife/ionoscloud_lan_create.rb +69 -0
- data/lib/chef/knife/ionoscloud_lan_delete.rb +54 -0
- data/lib/chef/knife/ionoscloud_lan_list.rb +46 -0
- data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +87 -0
- data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +68 -0
- data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +51 -0
- data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +50 -0
- data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +75 -0
- data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +76 -0
- data/lib/chef/knife/ionoscloud_location_list.rb +38 -0
- data/lib/chef/knife/ionoscloud_nic_create.rb +104 -0
- data/lib/chef/knife/ionoscloud_nic_delete.rb +62 -0
- data/lib/chef/knife/ionoscloud_nic_list.rb +57 -0
- data/lib/chef/knife/ionoscloud_node_delete.rb +65 -0
- data/lib/chef/knife/ionoscloud_node_list.rb +55 -0
- data/lib/chef/knife/ionoscloud_node_replace.rb +54 -0
- data/lib/chef/knife/ionoscloud_nodepool_create.rb +163 -0
- data/lib/chef/knife/ionoscloud_nodepool_delete.rb +60 -0
- data/lib/chef/knife/ionoscloud_nodepool_list.rb +51 -0
- data/lib/chef/knife/ionoscloud_pcc_create.rb +68 -0
- data/lib/chef/knife/ionoscloud_pcc_delete.rb +57 -0
- data/lib/chef/knife/ionoscloud_pcc_list.rb +41 -0
- data/lib/chef/knife/ionoscloud_request_list.rb +94 -0
- data/lib/chef/knife/ionoscloud_request_status.rb +37 -0
- data/lib/chef/knife/ionoscloud_request_wait.rb +41 -0
- data/lib/chef/knife/ionoscloud_resource_list.rb +81 -0
- data/lib/chef/knife/ionoscloud_s3key_create.rb +45 -0
- data/lib/chef/knife/ionoscloud_s3key_delete.rb +57 -0
- data/lib/chef/knife/ionoscloud_s3key_list.rb +46 -0
- data/lib/chef/knife/ionoscloud_server_create.rb +104 -0
- data/lib/chef/knife/ionoscloud_server_delete.rb +62 -0
- data/lib/chef/knife/ionoscloud_server_list.rb +58 -0
- data/lib/chef/knife/ionoscloud_server_reboot.rb +45 -0
- data/lib/chef/knife/ionoscloud_server_start.rb +43 -0
- data/lib/chef/knife/ionoscloud_server_stop.rb +44 -0
- data/lib/chef/knife/ionoscloud_share_create.rb +71 -0
- data/lib/chef/knife/ionoscloud_share_delete.rb +55 -0
- data/lib/chef/knife/ionoscloud_share_list.rb +47 -0
- data/lib/chef/knife/ionoscloud_snapshot_create.rb +58 -0
- data/lib/chef/knife/ionoscloud_snapshot_delete.rb +54 -0
- data/lib/chef/knife/ionoscloud_snapshot_list.rb +45 -0
- data/lib/chef/knife/ionoscloud_snapshot_restore.rb +69 -0
- data/lib/chef/knife/ionoscloud_user_create.rb +83 -0
- data/lib/chef/knife/ionoscloud_user_delete.rb +56 -0
- data/lib/chef/knife/ionoscloud_user_list.rb +60 -0
- data/lib/chef/knife/ionoscloud_user_ssourl.rb +37 -0
- data/lib/chef/knife/ionoscloud_volume_attach.rb +52 -0
- data/lib/chef/knife/ionoscloud_volume_create.rb +133 -0
- data/lib/chef/knife/ionoscloud_volume_delete.rb +67 -0
- data/lib/chef/knife/ionoscloud_volume_detach.rb +77 -0
- data/lib/chef/knife/ionoscloud_volume_list.rb +70 -0
- data/lib/knife-ionoscloud/version.rb +6 -0
- data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +65 -0
- data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +101 -0
- data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +72 -0
- data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +93 -0
- data/spec/chef/knife/ionoscloud_base_spec.rb +157 -0
- data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +111 -0
- data/spec/chef/knife/ionoscloud_contract_list_spec.rb +81 -0
- data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +72 -0
- data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +102 -0
- data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +76 -0
- data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +90 -0
- data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +117 -0
- data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +90 -0
- data/spec/chef/knife/ionoscloud_group_create_spec.rb +76 -0
- data/spec/chef/knife/ionoscloud_group_delete_spec.rb +109 -0
- data/spec/chef/knife/ionoscloud_group_get_spec.rb +73 -0
- data/spec/chef/knife/ionoscloud_group_list_spec.rb +115 -0
- data/spec/chef/knife/ionoscloud_group_user_add_spec.rb +134 -0
- data/spec/chef/knife/ionoscloud_group_user_remove_spec.rb +130 -0
- data/spec/chef/knife/ionoscloud_image_list_spec.rb +75 -0
- data/spec/chef/knife/ionoscloud_ipblock_create_spec.rb +72 -0
- data/spec/chef/knife/ionoscloud_ipblock_delete_spec.rb +102 -0
- data/spec/chef/knife/ionoscloud_ipblock_list_spec.rb +74 -0
- data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +83 -0
- data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +122 -0
- data/spec/chef/knife/ionoscloud_k8s_create_spec.rb +83 -0
- data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +172 -0
- data/spec/chef/knife/ionoscloud_k8s_list_spec.rb +73 -0
- data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +91 -0
- data/spec/chef/knife/ionoscloud_label_add_spec.rb +287 -0
- data/spec/chef/knife/ionoscloud_label_list_spec.rb +337 -0
- data/spec/chef/knife/ionoscloud_label_remove_spec.rb +391 -0
- data/spec/chef/knife/ionoscloud_lan_create_spec.rb +77 -0
- data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +103 -0
- data/spec/chef/knife/ionoscloud_lan_list_spec.rb +73 -0
- data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +82 -0
- data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +107 -0
- data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +68 -0
- data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +74 -0
- data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +128 -0
- data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +124 -0
- data/spec/chef/knife/ionoscloud_location_list_spec.rb +67 -0
- data/spec/chef/knife/ionoscloud_nic_create_spec.rb +85 -0
- data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +108 -0
- data/spec/chef/knife/ionoscloud_nic_list_spec.rb +83 -0
- data/spec/chef/knife/ionoscloud_node_delete_spec.rb +107 -0
- data/spec/chef/knife/ionoscloud_node_list_spec.rb +75 -0
- data/spec/chef/knife/ionoscloud_node_replace_spec.rb +94 -0
- data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +99 -0
- data/spec/chef/knife/ionoscloud_nodepool_delete_spec.rb +106 -0
- data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +76 -0
- data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +70 -0
- data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +106 -0
- data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +69 -0
- data/spec/chef/knife/ionoscloud_request_list_spec.rb +165 -0
- data/spec/chef/knife/ionoscloud_request_status_spec.rb +92 -0
- data/spec/chef/knife/ionoscloud_request_wait_spec.rb +74 -0
- data/spec/chef/knife/ionoscloud_resource_list_spec.rb +155 -0
- data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +64 -0
- data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +103 -0
- data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +70 -0
- data/spec/chef/knife/ionoscloud_server_create_spec.rb +84 -0
- data/spec/chef/knife/ionoscloud_server_delete_spec.rb +108 -0
- data/spec/chef/knife/ionoscloud_server_list_spec.rb +85 -0
- data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +95 -0
- data/spec/chef/knife/ionoscloud_server_start_spec.rb +95 -0
- data/spec/chef/knife/ionoscloud_server_stop_spec.rb +95 -0
- data/spec/chef/knife/ionoscloud_share_create_spec.rb +68 -0
- data/spec/chef/knife/ionoscloud_share_delete_spec.rb +103 -0
- data/spec/chef/knife/ionoscloud_share_list_spec.rb +70 -0
- data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +74 -0
- data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +103 -0
- data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +73 -0
- data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +78 -0
- data/spec/chef/knife/ionoscloud_user_create_spec.rb +73 -0
- data/spec/chef/knife/ionoscloud_user_delete_spec.rb +104 -0
- data/spec/chef/knife/ionoscloud_user_list_spec.rb +103 -0
- data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +93 -0
- data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +99 -0
- data/spec/chef/knife/ionoscloud_volume_create_spec.rb +143 -0
- data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +108 -0
- data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +110 -0
- data/spec/chef/knife/ionoscloud_volume_list_spec.rb +118 -0
- data/spec/spec_helper.rb +702 -0
- data/spec/test.sh +3 -0
- data/summary.md +0 -0
- metadata +460 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudNodepoolDelete < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud nodepool delete NODEPOOL_ID [NODEPOOL_ID] (options)'
|
9
|
+
|
10
|
+
option :cluster_id,
|
11
|
+
short: '-C CLUSTER_ID',
|
12
|
+
long: '--cluster-id CLUSTER_ID',
|
13
|
+
description: 'The ID of the K8s Cluster'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'Deletes a node pool within an existing Kubernetes cluster.'
|
21
|
+
@required_options = [:cluster_id, :ionoscloud_username, :ionoscloud_password]
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
$stdout.sync = true
|
26
|
+
validate_required_params(@required_options, config)
|
27
|
+
|
28
|
+
kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
|
29
|
+
|
30
|
+
@name_args.each do |nodepool_id|
|
31
|
+
begin
|
32
|
+
nodepool = kubernetes_api.k8s_nodepools_find_by_id(config[:cluster_id], nodepool_id)
|
33
|
+
rescue Ionoscloud::ApiError => err
|
34
|
+
raise err unless err.code == 404
|
35
|
+
ui.error("K8s Nodepool ID #{nodepool_id} not found. Skipping.")
|
36
|
+
next
|
37
|
+
end
|
38
|
+
|
39
|
+
msg_pair('ID', nodepool.id)
|
40
|
+
msg_pair('Name', nodepool.properties.name)
|
41
|
+
msg_pair('K8s Version', nodepool.properties.k8s_version)
|
42
|
+
msg_pair('Datacenter ID', nodepool.properties.datacenter_id)
|
43
|
+
msg_pair('Node Count', nodepool.properties.node_count)
|
44
|
+
msg_pair('State', nodepool.metadata.state)
|
45
|
+
|
46
|
+
puts "\n"
|
47
|
+
|
48
|
+
begin
|
49
|
+
confirm('Do you really want to delete this K8s Nodepool')
|
50
|
+
rescue SystemExit => exc
|
51
|
+
next
|
52
|
+
end
|
53
|
+
|
54
|
+
kubernetes_api.k8s_nodepools_delete(config[:cluster_id], nodepool.id)
|
55
|
+
ui.warn("Deleted K8s Nodepool #{nodepool.id}.")
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudNodepoolList < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud nodepool list'
|
9
|
+
|
10
|
+
option :cluster_id,
|
11
|
+
short: '-C CLUSTER_ID',
|
12
|
+
long: '--cluster-id CLUSTER_ID',
|
13
|
+
description: 'The ID of the K8s Cluster'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'Retrieve a list of all node pools contained in a selected Kubernetes cluster.'
|
21
|
+
@required_options = [:cluster_id, :ionoscloud_username, :ionoscloud_password]
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
$stdout.sync = true
|
26
|
+
validate_required_params(@required_options, config)
|
27
|
+
|
28
|
+
nodepool_list = [
|
29
|
+
ui.color('ID', :bold),
|
30
|
+
ui.color('Name', :bold),
|
31
|
+
ui.color('K8s Version', :bold),
|
32
|
+
ui.color('Datacenter ID', :bold),
|
33
|
+
ui.color('Node Count', :bold),
|
34
|
+
ui.color('State', :bold),
|
35
|
+
]
|
36
|
+
|
37
|
+
kubernetes_api = Ionoscloud::KubernetesApi.new(api_client)
|
38
|
+
|
39
|
+
kubernetes_api.k8s_nodepools_get(config[:cluster_id], { depth: 1 }).items.each do |nodepool|
|
40
|
+
nodepool_list << nodepool.id
|
41
|
+
nodepool_list << nodepool.properties.name
|
42
|
+
nodepool_list << nodepool.properties.k8s_version
|
43
|
+
nodepool_list << nodepool.properties.datacenter_id
|
44
|
+
nodepool_list << nodepool.properties.node_count.to_s
|
45
|
+
nodepool_list << nodepool.metadata.state
|
46
|
+
end
|
47
|
+
puts ui.list(nodepool_list, :uneven_columns_across, 6)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudPccCreate < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud pcc create (options)'
|
9
|
+
|
10
|
+
option :name,
|
11
|
+
short: '-n NAME',
|
12
|
+
long: '--name NAME',
|
13
|
+
description: 'Name of the data center'
|
14
|
+
|
15
|
+
option :description,
|
16
|
+
short: '-D DESCRIPTION',
|
17
|
+
long: '--description DESCRIPTION',
|
18
|
+
description: 'Description of the data center'
|
19
|
+
|
20
|
+
option :peers,
|
21
|
+
long: '--peers LAN_ID [LAN_ID]',
|
22
|
+
description: 'An array of LANs joined to this private cross connect'
|
23
|
+
|
24
|
+
option :datacenters,
|
25
|
+
long: '--datacenters DATACENTER_IS [DATACENTER_IS]',
|
26
|
+
description: 'An array of datacenters joined to this private cross connect'
|
27
|
+
|
28
|
+
attr_reader :description, :required_options
|
29
|
+
|
30
|
+
def initialize(args = [])
|
31
|
+
super(args)
|
32
|
+
@description =
|
33
|
+
'Creates a Private Cross-Connect.'
|
34
|
+
@required_options = [:ionoscloud_username, :ionoscloud_password]
|
35
|
+
end
|
36
|
+
|
37
|
+
def run
|
38
|
+
$stdout.sync = true
|
39
|
+
validate_required_params(@required_options, config)
|
40
|
+
|
41
|
+
print "#{ui.color('Creating private cross connect...', :magenta)}"
|
42
|
+
|
43
|
+
pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
|
44
|
+
|
45
|
+
config[:peers] = config[:peers].split(',').map { |peer| { id: peer } } unless config[:peers].nil?
|
46
|
+
config[:datacenters] = config[:datacenters].split(',').map { |datacenter| { id: datacenter } } unless config[:datacenters].nil?
|
47
|
+
|
48
|
+
pcc, _, headers = pcc_api.pccs_post_with_http_info({
|
49
|
+
properties: {
|
50
|
+
name: config[:name],
|
51
|
+
description: config[:description],
|
52
|
+
}.compact,
|
53
|
+
})
|
54
|
+
|
55
|
+
dot = ui.color('.', :magenta)
|
56
|
+
api_client.wait_for { print dot; is_done? get_request_id headers }
|
57
|
+
|
58
|
+
puts "\n"
|
59
|
+
puts "#{ui.color('ID', :cyan)}: #{pcc.id}"
|
60
|
+
puts "#{ui.color('Name', :cyan)}: #{pcc.properties.name}"
|
61
|
+
puts "#{ui.color('Description', :cyan)}: #{pcc.properties.description}"
|
62
|
+
puts "#{ui.color('Peers', :cyan)}: #{pcc.properties.peers.to_s}"
|
63
|
+
puts "#{ui.color('Datacenters', :cyan)}: #{pcc.properties.connectable_datacenters.to_s}"
|
64
|
+
puts 'done'
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudPccDelete < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud pcc delete PCC_ID [PCC_ID]'
|
9
|
+
|
10
|
+
attr_reader :description, :required_options
|
11
|
+
|
12
|
+
def initialize(args = [])
|
13
|
+
super(args)
|
14
|
+
@description =
|
15
|
+
'Deletes a Private Cross-Connect.'
|
16
|
+
@required_options = [:ionoscloud_username, :ionoscloud_password]
|
17
|
+
end
|
18
|
+
|
19
|
+
def run
|
20
|
+
$stdout.sync = true
|
21
|
+
validate_required_params(@required_options, config)
|
22
|
+
|
23
|
+
pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
|
24
|
+
|
25
|
+
@name_args.each do |pcc_id|
|
26
|
+
begin
|
27
|
+
pcc = pcc_api.pccs_find_by_id(pcc_id)
|
28
|
+
rescue Ionoscloud::ApiError => err
|
29
|
+
raise err unless err.code == 404
|
30
|
+
ui.error("PCC ID #{pcc_id} not found. Skipping.")
|
31
|
+
next
|
32
|
+
end
|
33
|
+
|
34
|
+
peers = pcc.properties.peers.map { |peer| peer.id }
|
35
|
+
datacenters = pcc.properties.connectable_datacenters.map { |datacenter| datacenter.id }
|
36
|
+
|
37
|
+
msg_pair('ID', pcc.id)
|
38
|
+
msg_pair('Name', pcc.properties.name)
|
39
|
+
msg_pair('Description', pcc.properties.description)
|
40
|
+
msg_pair('Peers', peers.to_s)
|
41
|
+
msg_pair('Datacenters', datacenters.to_s)
|
42
|
+
|
43
|
+
puts "\n"
|
44
|
+
|
45
|
+
begin
|
46
|
+
confirm('Do you really want to delete this PCC')
|
47
|
+
rescue SystemExit => exc
|
48
|
+
next
|
49
|
+
end
|
50
|
+
|
51
|
+
_, _, headers = pcc_api.pccs_delete_with_http_info(pcc_id)
|
52
|
+
ui.warn("Deleted PCC #{pcc.id}. Request ID: #{get_request_id headers}")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudPccList < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud pcc list'
|
9
|
+
|
10
|
+
attr_reader :description, :required_options
|
11
|
+
|
12
|
+
def initialize(args = [])
|
13
|
+
super(args)
|
14
|
+
@description =
|
15
|
+
'Lists all Private Cross-Connect instances.'
|
16
|
+
@required_options = [:ionoscloud_username, :ionoscloud_password]
|
17
|
+
end
|
18
|
+
|
19
|
+
def run
|
20
|
+
$stdout.sync = true
|
21
|
+
validate_required_params(@required_options, config)
|
22
|
+
|
23
|
+
pcc_list = [
|
24
|
+
ui.color('ID', :bold),
|
25
|
+
ui.color('Name', :bold),
|
26
|
+
ui.color('Description', :bold),
|
27
|
+
]
|
28
|
+
|
29
|
+
pcc_api = Ionoscloud::PrivateCrossConnectApi.new(api_client)
|
30
|
+
|
31
|
+
pcc_api.pccs_get({ depth: 1 }).items.each do |pcc|
|
32
|
+
pcc_list << pcc.id
|
33
|
+
pcc_list << pcc.properties.name
|
34
|
+
pcc_list << pcc.properties.description || ''
|
35
|
+
end
|
36
|
+
|
37
|
+
puts ui.list(pcc_list, :uneven_columns_across, 3)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudRequestList < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud request list (options)'
|
9
|
+
|
10
|
+
option :limit,
|
11
|
+
short: '-l LIMIT',
|
12
|
+
long: '--limit LIMIT',
|
13
|
+
description: 'The maximum number of results.'
|
14
|
+
|
15
|
+
option :offset,
|
16
|
+
short: '-o OFFSET',
|
17
|
+
long: '--offset OFFSET',
|
18
|
+
description: 'The request number from which to return results.'
|
19
|
+
|
20
|
+
# option :status,
|
21
|
+
# short: '-s STATUS',
|
22
|
+
# long: '--status STATUS',
|
23
|
+
# description: 'Request status filter to fetch all the request based on a particular status [QUEUED, RUNNING, DONE, FAILED]'
|
24
|
+
|
25
|
+
attr_reader :description, :required_options
|
26
|
+
|
27
|
+
def initialize(args = [])
|
28
|
+
super(args)
|
29
|
+
@description =
|
30
|
+
'This operation allows you to retrieve a list of requests. Cloud API calls generate a '\
|
31
|
+
'request which is assigned an id. This "request id" can be used to get information about '\
|
32
|
+
'the request and its current status. The "list request" operation described here will '\
|
33
|
+
'return an array of request items. Each returned request item will have an id that can be '\
|
34
|
+
'used to get additional information as described in the Get Request and Get Request Status sections.'
|
35
|
+
@required_options = [:ionoscloud_username, :ionoscloud_password]
|
36
|
+
end
|
37
|
+
|
38
|
+
def run
|
39
|
+
$stdout.sync = true
|
40
|
+
validate_required_params(@required_options, config)
|
41
|
+
|
42
|
+
request_list = [
|
43
|
+
ui.color('ID', :bold),
|
44
|
+
ui.color('Status', :bold),
|
45
|
+
ui.color('Method', :bold),
|
46
|
+
ui.color('Targets', :bold),
|
47
|
+
]
|
48
|
+
|
49
|
+
request_api = Ionoscloud::RequestApi.new(api_client)
|
50
|
+
|
51
|
+
begin
|
52
|
+
config[:limit] = Integer(config[:limit])
|
53
|
+
rescue *[ArgumentError, TypeError]
|
54
|
+
if config[:limit]
|
55
|
+
ui.warn('limit should be an Integer!')
|
56
|
+
end
|
57
|
+
config[:limit] = 20
|
58
|
+
end
|
59
|
+
|
60
|
+
begin
|
61
|
+
config[:offset] = Integer(config[:offset])
|
62
|
+
rescue *[ArgumentError, TypeError]
|
63
|
+
if config[:offset]
|
64
|
+
ui.warn('offset should be an Integer!')
|
65
|
+
end
|
66
|
+
config[:offset] = 0
|
67
|
+
end
|
68
|
+
|
69
|
+
opts = {
|
70
|
+
depth: 2,
|
71
|
+
limit: config[:limit],
|
72
|
+
offset: config[:offset],
|
73
|
+
}
|
74
|
+
|
75
|
+
# if config[:status] && ['QUEUED', 'RUNNING', 'DONE', 'FAILED'].include?(config[:status])
|
76
|
+
# opts[:status] = config[:status]
|
77
|
+
# end
|
78
|
+
|
79
|
+
# if config[:status] && !['QUEUED', 'RUNNING', 'DONE', 'FAILED'].include?(config[:status])
|
80
|
+
# ui.warn('status should be one of [QUEUED, RUNNING, DONE, FAILED]')
|
81
|
+
# end
|
82
|
+
|
83
|
+
request_api.requests_get(opts).items.each do |request|
|
84
|
+
request_list << request.id
|
85
|
+
request_list << request.metadata.request_status.metadata.status
|
86
|
+
request_list << request.properties.method
|
87
|
+
request_list << request.metadata.request_status.metadata.targets.map { |target| [target.target.id, target.target.type] }.to_s
|
88
|
+
end
|
89
|
+
|
90
|
+
puts ui.list(request_list, :uneven_columns_across, 4)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudRequestStatus < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud request status (options)'
|
9
|
+
|
10
|
+
option :request_id,
|
11
|
+
short: '-R REQUEST_ID',
|
12
|
+
long: '--request-id REQUEST_ID',
|
13
|
+
description: 'The ID of the Request.'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'Retrieves the status of a specific request based on the supplied request id.'
|
21
|
+
@required_options = [:request_id, :ionoscloud_username, :ionoscloud_password]
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
$stdout.sync = true
|
26
|
+
validate_required_params(@required_options, config)
|
27
|
+
|
28
|
+
begin
|
29
|
+
puts Ionoscloud::RequestApi.new(api_client).requests_status_get(config[:request_id]).metadata.status
|
30
|
+
rescue Ionoscloud::ApiError => err
|
31
|
+
raise err unless err.code == 404
|
32
|
+
ui.error("Request ID #{config[:request_id]} not found.")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudRequestWait < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud request wait (options)'
|
9
|
+
|
10
|
+
option :request_id,
|
11
|
+
short: '-R REQUEST_ID',
|
12
|
+
long: '--request-id REQUEST_ID',
|
13
|
+
description: 'The ID of the Backup unit.'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'Waits until a request status is either DONE or FAILED.'
|
21
|
+
@required_options = [:request_id, :ionoscloud_username, :ionoscloud_password]
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
$stdout.sync = true
|
26
|
+
validate_required_params(@required_options, config)
|
27
|
+
|
28
|
+
print "#{ui.color('Waiting for request...', :magenta)}"
|
29
|
+
|
30
|
+
begin
|
31
|
+
dot = ui.color('.', :magenta)
|
32
|
+
api_client.wait_for { print dot; is_done? config[:request_id] }
|
33
|
+
rescue Ionoscloud::ApiError => err
|
34
|
+
raise err unless err.code == 404
|
35
|
+
ui.error("Request ID #{config[:request_id]} not found.")
|
36
|
+
end
|
37
|
+
print "\n"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|