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,81 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudResourceList < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud resource list (options)'
|
9
|
+
|
10
|
+
option :resource_type,
|
11
|
+
short: '-t RESOURCE_TYPE',
|
12
|
+
long: '--resource-type RESOURCE_TYPE',
|
13
|
+
description: 'The specific type of resources to retrieve information about.'
|
14
|
+
|
15
|
+
option :resource_id,
|
16
|
+
short: '-R RESOURCE_ID',
|
17
|
+
long: '--resource-id RESOURCE_ID',
|
18
|
+
description: 'The ID of the specific resource to retrieve information about.'
|
19
|
+
|
20
|
+
attr_reader :description, :required_options
|
21
|
+
|
22
|
+
def initialize(args = [])
|
23
|
+
super(args)
|
24
|
+
@description =
|
25
|
+
"No option: Retrieves a list of all resources and optionally their group associations. "\
|
26
|
+
"Please Note: This API call can take a significant amount of time to return when there "\
|
27
|
+
"are a large number of provisioned resources. You may wish to consult the next section "\
|
28
|
+
"on how to list resources of a particular type.\n\n"
|
29
|
+
"resource_type specified: Lists all shareable resources of a specific type. Optionally include their "\
|
30
|
+
"association with groups, permissions that a group has for the resource, and "\
|
31
|
+
"users that are members of the group. Because you are scoping your request to "\
|
32
|
+
"a specific resource type, this API will likely return faster than querying */um/resources*.\n\n"\
|
33
|
+
"The values available for resourceType are listed in this table:\n\n"\
|
34
|
+
"| ResourceType | Description |\n"\
|
35
|
+
"| datacenter | A virtual data center. |\n"\
|
36
|
+
"| image | A private image that has been uploaded. |\n"\
|
37
|
+
"| snapshot | A snapshot of a storage volume. |\n"\
|
38
|
+
"| ipblock | An IP block that has been reserved. |\n"\
|
39
|
+
"| k8s | A Kubernetes cluster. |\n\n"\
|
40
|
+
"resource_type and resource_id specified: Retrieves a specific resource."\
|
41
|
+
"**NOTE:** if you pass the *resource_id* option it is necessary to also pass the "\
|
42
|
+
"*resource_type* option or a list of all resources will be returned."
|
43
|
+
@required_options = [:ionoscloud_username, :ionoscloud_password]
|
44
|
+
end
|
45
|
+
|
46
|
+
def run
|
47
|
+
$stdout.sync = true
|
48
|
+
validate_required_params(@required_options, config)
|
49
|
+
|
50
|
+
user_management_api = Ionoscloud::UserManagementApi.new(api_client)
|
51
|
+
|
52
|
+
resource_list = [
|
53
|
+
ui.color('ID', :bold),
|
54
|
+
ui.color('Type', :bold),
|
55
|
+
ui.color('Name', :bold),
|
56
|
+
]
|
57
|
+
|
58
|
+
if config[:resource_id] && !config[:resource_type]
|
59
|
+
ui.warn('Ignoring resource_id because no resource_type was specified.')
|
60
|
+
end
|
61
|
+
|
62
|
+
opts = { depth: 1 }
|
63
|
+
|
64
|
+
if config[:resource_type] && config[:resource_id]
|
65
|
+
resources = user_management_api.um_resources_find_by_type_and_id(config[:resource_type], config[:resource_id], opts)
|
66
|
+
elsif config[:resource_type]
|
67
|
+
resources = user_management_api.um_resources_find_by_type(config[:resource_type], opts)
|
68
|
+
else
|
69
|
+
resources = user_management_api.um_resources_get(opts)
|
70
|
+
end
|
71
|
+
|
72
|
+
resources.items.each do |resource|
|
73
|
+
resource_list << resource.id
|
74
|
+
resource_list << resource.type
|
75
|
+
resource_list << (resource.properties.respond_to?(:name) ? resource.properties.name : '')
|
76
|
+
end
|
77
|
+
puts ui.list(resource_list, :uneven_columns_across, 3)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudS3keyCreate < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud s3key create (options)'
|
9
|
+
|
10
|
+
option :user_id,
|
11
|
+
short: '-u USER_ID',
|
12
|
+
long: '--user USER_ID',
|
13
|
+
description: 'The ID of the user'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'Creates a new S3 key for a particular user.'
|
21
|
+
@required_options = [:user_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('Creating S3key...', :magenta)}"
|
29
|
+
|
30
|
+
user_management_api = Ionoscloud::UserManagementApi.new(api_client)
|
31
|
+
|
32
|
+
s3_key, _, headers = user_management_api.um_users_s3keys_post_with_http_info(config[:user_id])
|
33
|
+
|
34
|
+
dot = ui.color('.', :magenta)
|
35
|
+
api_client.wait_for { print dot; is_done? get_request_id headers }
|
36
|
+
|
37
|
+
puts "\n"
|
38
|
+
puts "#{ui.color('ID', :cyan)}: #{s3_key.id}"
|
39
|
+
puts "#{ui.color('Secret Key', :cyan)}: #{s3_key.properties.secret_key}"
|
40
|
+
puts "#{ui.color('Active', :cyan)}: #{s3_key.properties.active}"
|
41
|
+
puts 'done'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudS3keyDelete < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud s3key delete S3KEY_ID [S3KEY_ID] (options)'
|
9
|
+
|
10
|
+
option :user_id,
|
11
|
+
short: '-u USER_ID',
|
12
|
+
long: '--user USER_ID',
|
13
|
+
description: 'The ID of the user'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'This operation deletes a specific S3 key.'
|
21
|
+
@required_options = [:user_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 |s3key_id|
|
31
|
+
begin
|
32
|
+
s3_key = user_management_api.um_users_s3keys_find_by_key_id(config[:user_id], s3key_id)
|
33
|
+
rescue Ionoscloud::ApiError => err
|
34
|
+
raise err unless err.code == 404
|
35
|
+
ui.error("S3 key ID #{s3key_id} not found. Skipping.")
|
36
|
+
next
|
37
|
+
end
|
38
|
+
|
39
|
+
msg_pair('ID', s3_key.id)
|
40
|
+
msg_pair('Secret Key', s3_key.properties.secret_key)
|
41
|
+
msg_pair('Active', s3_key.properties.active.to_s)
|
42
|
+
|
43
|
+
puts "\n"
|
44
|
+
|
45
|
+
begin
|
46
|
+
confirm('Do you really want to delete this S3 key')
|
47
|
+
rescue SystemExit => exc
|
48
|
+
next
|
49
|
+
end
|
50
|
+
|
51
|
+
_, _, headers = user_management_api.um_users_s3keys_delete_with_http_info(config[:user_id], s3key_id)
|
52
|
+
ui.warn("Deleted S3 key #{s3_key.id}. Request ID: #{get_request_id headers}")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudS3keyList < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud s3key list (options)'
|
9
|
+
|
10
|
+
option :user_id,
|
11
|
+
short: '-u USER_ID',
|
12
|
+
long: '--user USER_ID',
|
13
|
+
description: 'The ID of the user'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'Retrieve a list of all the S3 keys for a specific user.'
|
21
|
+
@required_options = [:user_id, :ionoscloud_username, :ionoscloud_password]
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
$stdout.sync = true
|
26
|
+
validate_required_params(@required_options, config)
|
27
|
+
|
28
|
+
s3key_list = [
|
29
|
+
ui.color('ID', :bold),
|
30
|
+
ui.color('Secret Key', :bold),
|
31
|
+
ui.color('Active', :bold),
|
32
|
+
]
|
33
|
+
|
34
|
+
user_management_api = Ionoscloud::UserManagementApi.new(api_client)
|
35
|
+
|
36
|
+
user_management_api.um_users_s3keys_get(config[:user_id], { depth: 1 }).items.each do |s3_key|
|
37
|
+
s3key_list << s3_key.id
|
38
|
+
s3key_list << s3_key.properties.secret_key
|
39
|
+
s3key_list << s3_key.properties.active.to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
puts ui.list(s3key_list, :uneven_columns_across, 3)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudServerCreate < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud server create (options)'
|
9
|
+
|
10
|
+
option :datacenter_id,
|
11
|
+
short: '-D DATACENTER_ID',
|
12
|
+
long: '--datacenter-id DATACENTER_ID',
|
13
|
+
description: 'Name of the virtual datacenter'
|
14
|
+
|
15
|
+
option :name,
|
16
|
+
short: '-n NAME',
|
17
|
+
long: '--name NAME',
|
18
|
+
description: 'Name of the server'
|
19
|
+
|
20
|
+
option :cores,
|
21
|
+
short: '-C CORES',
|
22
|
+
long: '--cores CORES',
|
23
|
+
description: 'The number of processor cores'
|
24
|
+
|
25
|
+
option :cpu_family,
|
26
|
+
short: '-f CPU_FAMILY',
|
27
|
+
long: '--cpu-family CPU_FAMILY',
|
28
|
+
description: 'The family of the CPU (INTEL_XEON or AMD_OPTERON)',
|
29
|
+
default: 'INTEL_SKYLAKE'
|
30
|
+
|
31
|
+
option :ram,
|
32
|
+
short: '-r RAM',
|
33
|
+
long: '--ram RAM',
|
34
|
+
description: 'The amount of RAM in MB'
|
35
|
+
|
36
|
+
option :availability_zone,
|
37
|
+
short: '-a AVAILABILITY_ZONE',
|
38
|
+
long: '--availability-zone AVAILABILITY_ZONE',
|
39
|
+
description: 'The availability zone of the server',
|
40
|
+
default: 'AUTO'
|
41
|
+
|
42
|
+
option :boot_volume,
|
43
|
+
long: '--boot-volume VOLUME_ID',
|
44
|
+
description: 'Reference to a volume used for booting'
|
45
|
+
|
46
|
+
option :boot_cdrom,
|
47
|
+
long: '--boot-cdrom CDROM_ID',
|
48
|
+
description: 'Reference to a CD-ROM used for booting'
|
49
|
+
|
50
|
+
attr_reader :description, :required_options
|
51
|
+
|
52
|
+
def initialize(args = [])
|
53
|
+
super(args)
|
54
|
+
@description =
|
55
|
+
"One of the unique features of the Ionoscloud platform when compared "\
|
56
|
+
"with the other providers is that they allow you to define your own settings "\
|
57
|
+
"for cores, memory, and disk size without being tied to a particular size or flavor.\n\n"\
|
58
|
+
"Note: *The memory parameter value must be a multiple of 256, e.g. 256, 512, 768, 1024, and so forth.*"
|
59
|
+
@required_options = [:datacenter_id, :cores, :ram, :ionoscloud_username, :ionoscloud_password]
|
60
|
+
end
|
61
|
+
|
62
|
+
def run
|
63
|
+
$stdout.sync = true
|
64
|
+
validate_required_params(@required_options, config)
|
65
|
+
|
66
|
+
print "#{ui.color('Creating server...', :magenta)}"
|
67
|
+
params = {
|
68
|
+
name: config[:name],
|
69
|
+
cores: config[:cores],
|
70
|
+
cpuFamily: config[:cpu_family],
|
71
|
+
ram: config[:ram],
|
72
|
+
availabilityZone: config[:availability_zone]
|
73
|
+
}
|
74
|
+
|
75
|
+
params[:bootCdrom] = { id: config[:boot_cdrom] } unless config[:boot_cdrom].nil?
|
76
|
+
params[:bootVolume] = { id: config[:boot_volume] } unless config[:boot_volume].nil?
|
77
|
+
|
78
|
+
server_api = Ionoscloud::ServerApi.new(api_client)
|
79
|
+
|
80
|
+
server, _, headers = server_api.datacenters_servers_post_with_http_info(
|
81
|
+
config[:datacenter_id],
|
82
|
+
{ properties: params.compact },
|
83
|
+
)
|
84
|
+
|
85
|
+
dot = ui.color('.', :magenta)
|
86
|
+
api_client.wait_for { print dot; is_done? get_request_id headers }
|
87
|
+
|
88
|
+
server = server_api.datacenters_servers_find_by_id(config[:datacenter_id], server.id)
|
89
|
+
|
90
|
+
puts "\n"
|
91
|
+
puts "#{ui.color('ID', :cyan)}: #{server.id}"
|
92
|
+
puts "#{ui.color('Name', :cyan)}: #{server.properties.name}"
|
93
|
+
puts "#{ui.color('Cores', :cyan)}: #{server.properties.cores}"
|
94
|
+
puts "#{ui.color('CPU Family', :cyan)}: #{server.properties.cpu_family}"
|
95
|
+
puts "#{ui.color('Ram', :cyan)}: #{server.properties.ram}"
|
96
|
+
puts "#{ui.color('Availability Zone', :cyan)}: #{server.properties.availability_zone}"
|
97
|
+
puts "#{ui.color('Boot Volume', :cyan)}: #{server.properties.boot_volume ? server.properties.boot_volume.id : ''}"
|
98
|
+
puts "#{ui.color('Boot CDROM', :cyan)}: #{server.properties.boot_cdrom ? server.properties.boot_cdrom.id : ''}"
|
99
|
+
|
100
|
+
puts 'done'
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudServerDelete < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud server delete SERVER_ID [SERVER_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
|
+
"This will remove a server from a VDC.\n\n"\
|
21
|
+
"**NOTE**: This will not automatically remove the storage volume(s) "\
|
22
|
+
"attached to a server. A separate API call is required to perform that action."
|
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
|
+
server = server_api.datacenters_servers_find_by_id(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
|
+
|
41
|
+
msg_pair('ID', server.id)
|
42
|
+
msg_pair('Name', server.properties.name)
|
43
|
+
msg_pair('Cores', server.properties.cores)
|
44
|
+
msg_pair('CPU Family', server.properties.cpu_family)
|
45
|
+
msg_pair('Ram', server.properties.ram)
|
46
|
+
msg_pair('Availability Zone', server.properties.availability_zone)
|
47
|
+
msg_pair('Boot Volume', server.properties.boot_volume.id)
|
48
|
+
msg_pair('Boot CDROM', server.properties.boot_cdrom.id)
|
49
|
+
|
50
|
+
begin
|
51
|
+
confirm('Do you really want to delete this server')
|
52
|
+
rescue SystemExit => exc
|
53
|
+
next
|
54
|
+
end
|
55
|
+
|
56
|
+
_, _, headers = server_api.datacenters_servers_delete_with_http_info(config[:datacenter_id], server_id)
|
57
|
+
ui.warn("Deleted Server #{server.id}. Request ID: #{get_request_id headers}")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require_relative 'ionoscloud_base'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Knife
|
5
|
+
class IonoscloudServerList < Knife
|
6
|
+
include Knife::IonoscloudBase
|
7
|
+
|
8
|
+
banner 'knife ionoscloud server list (options)'
|
9
|
+
|
10
|
+
option :datacenter_id,
|
11
|
+
short: '-D DATACENTER_ID',
|
12
|
+
long: '--datacenter-id DATACENTER_ID',
|
13
|
+
description: 'The ID of the datacenter containing the server'
|
14
|
+
|
15
|
+
attr_reader :description, :required_options
|
16
|
+
|
17
|
+
def initialize(args = [])
|
18
|
+
super(args)
|
19
|
+
@description =
|
20
|
+
'List all available servers under a specified data center.'
|
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_list = [
|
29
|
+
ui.color('ID', :bold),
|
30
|
+
ui.color('Name', :bold),
|
31
|
+
ui.color('Cores', :bold),
|
32
|
+
ui.color('CPU Family', :bold),
|
33
|
+
ui.color('RAM', :bold),
|
34
|
+
ui.color('Availability Zone', :bold),
|
35
|
+
ui.color('VM State', :bold),
|
36
|
+
ui.color('Boot Volume', :bold),
|
37
|
+
ui.color('Boot CDROM', :bold),
|
38
|
+
]
|
39
|
+
|
40
|
+
server_api = Ionoscloud::ServerApi.new(api_client)
|
41
|
+
|
42
|
+
server_api.datacenters_servers_get(config[:datacenter_id], { depth: 1 }).items.each do |server|
|
43
|
+
server_list << server.id
|
44
|
+
server_list << server.properties.name
|
45
|
+
server_list << server.properties.cores.to_s
|
46
|
+
server_list << server.properties.cpu_family
|
47
|
+
server_list << server.properties.ram.to_s
|
48
|
+
server_list << server.properties.availability_zone
|
49
|
+
server_list << server.properties.vm_state
|
50
|
+
server_list << server.properties.boot_volume || ''
|
51
|
+
server_list << server.properties.boot_cdrom || ''
|
52
|
+
end
|
53
|
+
|
54
|
+
puts ui.list(server_list, :uneven_columns_across, 9)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|