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,45 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudServerReboot < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud server reboot SERVER_ID [SERVER_ID] (options)'
|
9
|
+
|
10
|
+
option :datacenter_id,
|
11
|
+
short: '-D DATACENTER_ID',
|
12
|
+
long: '--datacenter-id DATACENTER_ID',
|
13
|
+
description: 'ID of the data center'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'This will force a hard reboot of the server. Do not use this method '\
|
21
|
+
'if you want to gracefully reboot the machine. This is the equivalent '\
|
22
|
+
'of powering off the machine and turning it back on.'
|
23
|
+
@required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
|
24
|
+
end
|
25
|
+
|
26
|
+
def run
|
27
|
+
$stdout.sync = true
|
28
|
+
validate_required_params(@required_options, config)
|
29
|
+
|
30
|
+
server_api = Ionoscloud::ServerApi.new(api_client)
|
31
|
+
|
32
|
+
@name_args.each do |server_id|
|
33
|
+
begin
|
34
|
+
_, _, headers = server_api.datacenters_servers_reboot_post_with_http_info(config[:datacenter_id], server_id)
|
35
|
+
rescue Ionoscloud::ApiError => err
|
36
|
+
raise err unless err.code == 404
|
37
|
+
ui.error("Server ID #{server_id} not found. Skipping.")
|
38
|
+
next
|
39
|
+
end
|
40
|
+
ui.warn("Server #{server_id} is rebooting. Request ID: #{get_request_id headers}")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudServerStart < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud server start SERVER_ID [SERVER_ID] (options)'
|
9
|
+
|
10
|
+
option :datacenter_id,
|
11
|
+
short: '-D DATACENTER_ID',
|
12
|
+
long: '--datacenter-id DATACENTER_ID',
|
13
|
+
description: 'ID of the data center'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'This will start a server. If the server\'s public IP was deallocated then a new IP will be assigned.'
|
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
|
+
server_api = Ionoscloud::ServerApi.new(api_client)
|
29
|
+
|
30
|
+
@name_args.each do |server_id|
|
31
|
+
begin
|
32
|
+
_, _, headers = server_api.datacenters_servers_start_post_with_http_info(config[:datacenter_id], server_id)
|
33
|
+
rescue Ionoscloud::ApiError => err
|
34
|
+
raise err unless err.code == 404
|
35
|
+
ui.error("Server ID #{server_id} not found. Skipping.")
|
36
|
+
next
|
37
|
+
end
|
38
|
+
ui.info("Server #{server_id} is starting. Request ID: #{get_request_id headers}")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudServerStop < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud server stop SERVER_ID [SERVER_ID] (options)'
|
9
|
+
|
10
|
+
option :datacenter_id,
|
11
|
+
short: '-D DATACENTER_ID',
|
12
|
+
long: '--datacenter-id DATACENTER_ID',
|
13
|
+
description: 'ID of the data center'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'This will stop a server. The machine will be forcefully powered off, '\
|
21
|
+
'billing will cease, and the public IP, if one is allocated, will be deallocated.'
|
22
|
+
@required_options = [:datacenter_id, :ionoscloud_username, :ionoscloud_password]
|
23
|
+
end
|
24
|
+
|
25
|
+
def run
|
26
|
+
$stdout.sync = true
|
27
|
+
validate_required_params(@required_options, config)
|
28
|
+
|
29
|
+
server_api = Ionoscloud::ServerApi.new(api_client)
|
30
|
+
|
31
|
+
@name_args.each do |server_id|
|
32
|
+
begin
|
33
|
+
_, _, headers = server_api.datacenters_servers_stop_post_with_http_info(config[:datacenter_id], server_id)
|
34
|
+
rescue Ionoscloud::ApiError => err
|
35
|
+
raise err unless err.code == 404
|
36
|
+
ui.error("Server ID #{server_id} not found. Skipping.")
|
37
|
+
next
|
38
|
+
end
|
39
|
+
ui.warn("Server #{server_id} is stopping. Request ID: #{get_request_id headers}")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudShareCreate < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud share create (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
|
+
option :resource_id,
|
16
|
+
short: '-R RESOURCE_ID',
|
17
|
+
long: '--resource-id RESOURCE_ID',
|
18
|
+
description: 'The ID of the resource.'
|
19
|
+
|
20
|
+
option :edit_privilege,
|
21
|
+
short: '-e',
|
22
|
+
long: '--edit',
|
23
|
+
description: 'The group has permission to edit privileges on this resource.'
|
24
|
+
|
25
|
+
option :share_privilege,
|
26
|
+
short: '-s',
|
27
|
+
long: '--share',
|
28
|
+
description: 'The group has permission to share this resource.'
|
29
|
+
|
30
|
+
attr_reader :description, :required_options
|
31
|
+
|
32
|
+
def initialize(args = [])
|
33
|
+
super(args)
|
34
|
+
@description =
|
35
|
+
'Adds a specific resource share to a group and optionally allows the setting of permissions '\
|
36
|
+
'for that resource. As an example, you might use this to grant permissions to use an image '\
|
37
|
+
'or snapshot to a specific group.'
|
38
|
+
@required_options = [:group_id, :resource_id, :ionoscloud_username, :ionoscloud_password]
|
39
|
+
end
|
40
|
+
|
41
|
+
def run
|
42
|
+
$stdout.sync = true
|
43
|
+
validate_required_params(@required_options, config)
|
44
|
+
|
45
|
+
print "#{ui.color('Sharing Resource...', :magenta)}"
|
46
|
+
|
47
|
+
user_management_api = Ionoscloud::UserManagementApi.new(api_client)
|
48
|
+
|
49
|
+
share, _, headers = user_management_api.um_groups_shares_post_with_http_info(
|
50
|
+
config[:group_id],
|
51
|
+
config[:resource_id],
|
52
|
+
{
|
53
|
+
properties: {
|
54
|
+
editPrivilege: config[:edit_privilege],
|
55
|
+
sharePrivilege: config[:share_privilege],
|
56
|
+
}.compact,
|
57
|
+
},
|
58
|
+
)
|
59
|
+
|
60
|
+
dot = ui.color('.', :magenta)
|
61
|
+
api_client.wait_for { print dot; is_done? get_request_id headers }
|
62
|
+
|
63
|
+
puts "\n"
|
64
|
+
puts "#{ui.color('ID', :cyan)}: #{share.id}"
|
65
|
+
puts "#{ui.color('Edit Privilege', :cyan)}: #{share.properties.edit_privilege.to_s}"
|
66
|
+
puts "#{ui.color('Share Privilege', :cyan)}: #{share.properties.share_privilege.to_s}"
|
67
|
+
puts 'done'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudShareDelete < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud server delete SHARE_ID [SHARE_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
|
+
'Removes a resource share from a specified 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
|
+
@name_args.each do |share_id|
|
31
|
+
begin
|
32
|
+
share = user_management_api.um_groups_shares_find_by_resource_id(config[:group_id], share_id)
|
33
|
+
rescue Ionoscloud::ApiError => err
|
34
|
+
raise err unless err.code == 404
|
35
|
+
ui.error("Resource Share ID #{share_id} not found. Skipping.")
|
36
|
+
next
|
37
|
+
end
|
38
|
+
|
39
|
+
msg_pair('ID', share.id)
|
40
|
+
msg_pair('Edit Privilege', share.properties.edit_privilege.to_s)
|
41
|
+
msg_pair('Share Privilege', share.properties.share_privilege.to_s)
|
42
|
+
|
43
|
+
begin
|
44
|
+
confirm('Do you really want to delete this Resource Share')
|
45
|
+
rescue SystemExit => exc
|
46
|
+
next
|
47
|
+
end
|
48
|
+
|
49
|
+
_, _, headers = user_management_api.um_groups_shares_delete_with_http_info(config[:group_id], share_id)
|
50
|
+
ui.warn("Deleted Resource Share #{share.id}. Request ID: #{get_request_id headers}")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudShareList < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud share list (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 a full list of all the resources that are shared through this '\
|
21
|
+
'group and lists the permissions granted to the group members for each shared resource.'
|
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
|
+
share_list = [
|
30
|
+
ui.color('ID', :bold),
|
31
|
+
ui.color('Edit Privilege', :bold),
|
32
|
+
ui.color('Share Privilege', :bold),
|
33
|
+
]
|
34
|
+
|
35
|
+
user_management_api = Ionoscloud::UserManagementApi.new(api_client)
|
36
|
+
|
37
|
+
user_management_api.um_groups_shares_get(config[:group_id], { depth: 1 }).items.each do |share|
|
38
|
+
share_list << share.id
|
39
|
+
share_list << share.properties.edit_privilege.to_s
|
40
|
+
share_list << share.properties.share_privilege.to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
puts ui.list(share_list, :uneven_columns_across, 3)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudSnapshotCreate < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud snapshot create (options)'
|
9
|
+
|
10
|
+
option :datacenter_id,
|
11
|
+
short: '-D DATACENTER_ID',
|
12
|
+
long: '--datacenter DATACENTER_ID',
|
13
|
+
description: 'ID of the Datacenter'
|
14
|
+
|
15
|
+
option :volume_id,
|
16
|
+
short: '-V VOLUME_ID',
|
17
|
+
long: '--volume VOLUME_ID',
|
18
|
+
description: 'ID of the Volume'
|
19
|
+
|
20
|
+
attr_reader :description, :required_options
|
21
|
+
|
22
|
+
def initialize(args = [])
|
23
|
+
super(args)
|
24
|
+
@description =
|
25
|
+
'Creates a snapshot of a volume within the virtual data center. '\
|
26
|
+
'You can use a snapshot to create a new storage volume or to restore a storage volume.'
|
27
|
+
@required_options = [:datacenter_id, :volume_id, :ionoscloud_username, :ionoscloud_password]
|
28
|
+
end
|
29
|
+
|
30
|
+
def run
|
31
|
+
$stdout.sync = true
|
32
|
+
validate_required_params(@required_options, config)
|
33
|
+
|
34
|
+
print "#{ui.color('Creating Snapshot...', :magenta)}"
|
35
|
+
|
36
|
+
volume_api = Ionoscloud::VolumeApi.new(api_client)
|
37
|
+
|
38
|
+
snapshot, _, headers = volume_api.datacenters_volumes_create_snapshot_post_with_http_info(
|
39
|
+
config[:datacenter_id],
|
40
|
+
config[:volume_id],
|
41
|
+
)
|
42
|
+
|
43
|
+
dot = ui.color('.', :magenta)
|
44
|
+
api_client.wait_for { print dot; is_done? get_request_id headers }
|
45
|
+
|
46
|
+
snapshot = Ionoscloud::SnapshotApi.new(api_client).snapshots_find_by_id(snapshot.id)
|
47
|
+
|
48
|
+
puts "\n"
|
49
|
+
puts "#{ui.color('ID', :cyan)}: #{snapshot.id}"
|
50
|
+
puts "#{ui.color('Name', :cyan)}: #{snapshot.properties.name}"
|
51
|
+
puts "#{ui.color('Description', :cyan)}: #{snapshot.properties.description}"
|
52
|
+
puts "#{ui.color('Location', :cyan)}: #{snapshot.properties.location}"
|
53
|
+
puts "#{ui.color('Size', :cyan)}: #{snapshot.properties.size.to_s}"
|
54
|
+
puts 'done'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudSnapshotDelete < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud snapshot delete SNAPSHOT_ID [SNAPSHOT_ID]'
|
9
|
+
|
10
|
+
attr_reader :description, :required_options
|
11
|
+
|
12
|
+
def initialize(args = [])
|
13
|
+
super(args)
|
14
|
+
@description =
|
15
|
+
'Deletes the specified snapshot.'
|
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
|
+
snapshot_api = Ionoscloud::SnapshotApi.new(api_client)
|
24
|
+
|
25
|
+
@name_args.each do |snapshot_id|
|
26
|
+
begin
|
27
|
+
snapshot = snapshot_api.snapshots_find_by_id(snapshot_id)
|
28
|
+
rescue Ionoscloud::ApiError => err
|
29
|
+
raise err unless err.code == 404
|
30
|
+
ui.error("Snapshot ID #{snapshot_id} not found. Skipping.")
|
31
|
+
next
|
32
|
+
end
|
33
|
+
|
34
|
+
msg_pair('ID', snapshot.id)
|
35
|
+
msg_pair('Name', snapshot.properties.name)
|
36
|
+
msg_pair('Description', snapshot.properties.description)
|
37
|
+
msg_pair('Location', snapshot.properties.location)
|
38
|
+
msg_pair('Size', snapshot.properties.size.to_s)
|
39
|
+
|
40
|
+
puts "\n"
|
41
|
+
|
42
|
+
begin
|
43
|
+
confirm('Do you really want to delete this Snapshot')
|
44
|
+
rescue SystemExit => exc
|
45
|
+
next
|
46
|
+
end
|
47
|
+
|
48
|
+
_, _, headers = snapshot_api.snapshots_delete_with_http_info(snapshot_id)
|
49
|
+
ui.warn("Deleted Snapshot #{snapshot.id}. Request ID: #{get_request_id headers}")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudSnapshotList < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud snapshot list'
|
9
|
+
|
10
|
+
attr_reader :description, :required_options
|
11
|
+
|
12
|
+
def initialize(args = [])
|
13
|
+
super(args)
|
14
|
+
@description =
|
15
|
+
'Retrieve a list of snapshots.'
|
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
|
+
snapshot_list = [
|
24
|
+
ui.color('ID', :bold),
|
25
|
+
ui.color('Name', :bold),
|
26
|
+
ui.color('Description', :bold),
|
27
|
+
ui.color('Location', :bold),
|
28
|
+
ui.color('Size', :bold)
|
29
|
+
]
|
30
|
+
|
31
|
+
snapshot_api = Ionoscloud::SnapshotApi.new(api_client)
|
32
|
+
|
33
|
+
snapshot_api.snapshots_get({ depth: 1 }).items.each do |snapshot|
|
34
|
+
snapshot_list << snapshot.id
|
35
|
+
snapshot_list << snapshot.properties.name
|
36
|
+
snapshot_list << snapshot.properties.description || ''
|
37
|
+
snapshot_list << snapshot.properties.location
|
38
|
+
snapshot_list << snapshot.properties.size.to_s
|
39
|
+
end
|
40
|
+
|
41
|
+
puts ui.list(snapshot_list, :uneven_columns_across, 5)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|