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
data/Rakefile
ADDED
data/docs/README.md
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# Ionoscloud Chef Knife Plugin
|
2
|
+
|
3
|
+

|
4
|
+
[](https://badge.fury.io/rb/knife-ionoscloud)
|
5
|
+
[](https://gitter.im/ionos-cloud/sdk-general)
|
6
|
+
|
7
|
+
## Overview
|
8
|
+
|
9
|
+
Chef is a popular configuration management tool that allows simplified configuration and maintenance of both servers and cloud provider environments through the use of common templates called recipes. The Chef `knife` command line tool allows management of various nodes within those environments. The `knife-ionoscloud` plugin utilizes the Ionoscloud REST API to provision and manage various cloud resources on the Ionoscloud platform.
|
10
|
+
|
11
|
+
## Getting Started
|
12
|
+
|
13
|
+
Before you begin you will need to have [signed-up](https://www.ionos.com/enterprise-cloud/signup) for a Ionoscloud account. The credentials you establish during sign-up will be used to authenticate against the [Ionoscloud Cloud API](https://devops.ionos.com/api/).
|
14
|
+
|
15
|
+
### Installation
|
16
|
+
|
17
|
+
The `knife-ionoscloud` plugin can be installed as a gem:
|
18
|
+
|
19
|
+
$ gem install knife-ionoscloud
|
20
|
+
|
21
|
+
Or the plugin can be installed by adding the following line to your application's Gemfile:
|
22
|
+
|
23
|
+
gem 'knife-ionoscloud'
|
24
|
+
|
25
|
+
And then execute:
|
26
|
+
|
27
|
+
$ bundle
|
28
|
+
|
29
|
+
### Configuration
|
30
|
+
|
31
|
+
The Ionoscloud account credentials can be added to the `knife.rb` configuration file.
|
32
|
+
|
33
|
+
knife[:ionoscloud_username] = 'username'
|
34
|
+
knife[:ionoscloud_password] = 'password'
|
35
|
+
|
36
|
+
If a virtual data center has already been created under the Ionoscloud account, then the data center UUID can be added to the `knife.rb` which reduces the need to include the `--datacenter-id [datacenter_id]` parameter for each action within the data center.
|
37
|
+
|
38
|
+
knife[:datacenter_id] = 'f3f3b6fe-017d-43a3-b42a-a759144b2e99'
|
39
|
+
|
40
|
+
knife[:ionoscloud_debug] = true
|
41
|
+
|
42
|
+
The configuration parameters can also be passed using shell environment variables. First, the following should be added to the `knife.rb` configuration file:
|
43
|
+
|
44
|
+
knife[:ionoscloud_username] = ENV['IONOSCLOUD_USERNAME']
|
45
|
+
knife[:ionoscloud_password] = ENV['IONOSCLOUD_PASSWORD']
|
46
|
+
|
47
|
+
Now the parameters can be set as environment variables:
|
48
|
+
|
49
|
+
$ export IONOSCLOUD_USERNAME='username'
|
50
|
+
$ export IONOSCLOUD_PASSWORD='password'
|
51
|
+
|
52
|
+
### Testing
|
53
|
+
|
54
|
+
$ rspec spec
|
55
|
+
|
56
|
+
## Feature Reference
|
57
|
+
|
58
|
+
The IONOS Cloud plugin for Knife aims to offer access to all resources in the IONOS Cloud API and also offers some additional features that make the integration easier:
|
59
|
+
|
60
|
+
* authentication for API calls
|
61
|
+
* handling of asynchronous requests
|
62
|
+
|
63
|
+
## FAQ
|
64
|
+
|
65
|
+
1. How can I open a bug/feature request?
|
66
|
+
|
67
|
+
Bugs & feature requests can be open on the repository issues: [https://github.com/ionos-cloud/knife-ionos-cloud/issues/new/choose](https://github.com/ionos-cloud/knife-ionos-cloud/issues/new/choose)
|
data/docs/changelog.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# CHANGELOG
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# This must be run from /docs directory
|
4
|
+
|
5
|
+
require 'mustache'
|
6
|
+
|
7
|
+
$LOAD_PATH << '.'
|
8
|
+
|
9
|
+
Dir["../lib/chef/knife/*.rb"].each { |file| require file }
|
10
|
+
|
11
|
+
def underscore_string(s)
|
12
|
+
s.gsub(/::/, '/').
|
13
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
14
|
+
gsub(/([a-z\d])([A-Z])/, '\1_\2').
|
15
|
+
tr("-", "_").
|
16
|
+
downcase
|
17
|
+
end
|
18
|
+
|
19
|
+
class Subcommand < Mustache
|
20
|
+
self.template_path = './templates'
|
21
|
+
self.template_file = './templates/subcommand_doc.mustache'
|
22
|
+
|
23
|
+
attr_accessor :banner, :options, :example, :description, :name, :required_options
|
24
|
+
|
25
|
+
def initialize(banner, options, description, name, required_options)
|
26
|
+
@banner = banner
|
27
|
+
@options = options || []
|
28
|
+
@example = banner.chomp('(options)').gsub!(/\[.*\] /, '') || banner.chomp('(options)') + (options.map { |el| el[:long] }).join(' ')
|
29
|
+
@description = description
|
30
|
+
@name = name
|
31
|
+
@required_options = required_options || []
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class Summary < Mustache
|
36
|
+
self.template_path = './templates'
|
37
|
+
self.template_file = './templates/summary.mustache'
|
38
|
+
|
39
|
+
attr_accessor :subcommands
|
40
|
+
|
41
|
+
def initialize(subcommands)
|
42
|
+
@subcommands = subcommands || []
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def generate_subcommand_doc(subcommand)
|
47
|
+
options = subcommand.options.map { |key, value|
|
48
|
+
value[:name] = key
|
49
|
+
value[:required] = subcommand.required_options.include? key
|
50
|
+
value[:description][0] = value[:description][0].downcase
|
51
|
+
value
|
52
|
+
}.rotate(2)
|
53
|
+
|
54
|
+
subcommand_name = subcommand.class.to_s
|
55
|
+
subcommand_name.slice!('Chef::Knife::Ionoscloud')
|
56
|
+
|
57
|
+
filename = "subcommands/#{underscore_string(subcommand_name)}.md"
|
58
|
+
|
59
|
+
begin
|
60
|
+
description = subcommand.description
|
61
|
+
rescue NoMethodError
|
62
|
+
description = ''
|
63
|
+
end
|
64
|
+
|
65
|
+
File.open(filename, 'w') { |f|
|
66
|
+
f.write(
|
67
|
+
Subcommand.new(
|
68
|
+
subcommand.banner,
|
69
|
+
options,
|
70
|
+
description,
|
71
|
+
subcommand_name,
|
72
|
+
subcommand.required_options,
|
73
|
+
).render,
|
74
|
+
)
|
75
|
+
}
|
76
|
+
|
77
|
+
puts "Generated documentation for #{subcommand_name}."
|
78
|
+
return subcommand_name, filename
|
79
|
+
end
|
80
|
+
|
81
|
+
subcommands = []
|
82
|
+
|
83
|
+
begin
|
84
|
+
Chef::Knife.constants.select { |c|
|
85
|
+
Chef::Knife.const_get(c).is_a?(Class) && c.to_s.start_with?('Ionoscloud')
|
86
|
+
}.each {
|
87
|
+
|subcommand|
|
88
|
+
begin
|
89
|
+
subcommand_name, filename = generate_subcommand_doc(Chef::Knife.const_get(subcommand).new)
|
90
|
+
subcommands.append({ title: subcommand_name, filename: filename })
|
91
|
+
rescue Exception => exc
|
92
|
+
puts "Could not generate doc for #{subcommand}. Error: #{exc}"
|
93
|
+
# raise exc
|
94
|
+
end
|
95
|
+
}
|
96
|
+
rescue NameError => exc
|
97
|
+
if exc.message == 'uninitialized constant Chef'
|
98
|
+
puts 'This must be run from /docs directory!'
|
99
|
+
end
|
100
|
+
raise exc
|
101
|
+
end
|
102
|
+
|
103
|
+
subcommands.sort! { |a, b| a[:title] <=> b[:title] }
|
104
|
+
|
105
|
+
File.open('summary.md', 'w') { |f|
|
106
|
+
f.write(Summary.new(subcommands).render,)
|
107
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# BackupunitCreate
|
2
|
+
|
3
|
+
Create a new backup unit.
|
4
|
+
|
5
|
+
knife ionoscloud backupunit create (options)
|
6
|
+
|
7
|
+
|
8
|
+
## Available options:
|
9
|
+
---
|
10
|
+
|
11
|
+
### Required options:
|
12
|
+
* name
|
13
|
+
* password
|
14
|
+
* email
|
15
|
+
* ionoscloud_username
|
16
|
+
* ionoscloud_password
|
17
|
+
|
18
|
+
```
|
19
|
+
name: --name NAME, -n NAME
|
20
|
+
alphanumeric name you want assigned to the backup unit (required)
|
21
|
+
|
22
|
+
password: --password PASSWORD, -p PASSWORD
|
23
|
+
alphanumeric password you want assigned to the backup unit (required)
|
24
|
+
|
25
|
+
email: --email EMAIL, -e EMAIL
|
26
|
+
the e-mail address you want assigned to the backup unit. (required)
|
27
|
+
|
28
|
+
ionoscloud_username: --username USERNAME, -u USERNAME
|
29
|
+
your Ionoscloud username (required)
|
30
|
+
|
31
|
+
ionoscloud_password: --password PASSWORD, -p PASSWORD
|
32
|
+
your Ionoscloud password (required)
|
33
|
+
|
34
|
+
```
|
35
|
+
|
36
|
+
## Example
|
37
|
+
|
38
|
+
knife ionoscloud backupunit create --name NAME --password PASSWORD --email EMAIL --username USERNAME --password PASSWORD
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# BackupunitDelete
|
2
|
+
|
3
|
+
A backup unit may be deleted using a DELETE request. Deleting a backup unit is a dangerous operation. A successful DELETE request will remove the backup plans inside a backup unit, ALL backups associated with the backup unit, the backup user and finally the backup unit itself.
|
4
|
+
|
5
|
+
knife ionoscloud backupunit delete BACKUPUNIT_ID [BACKUPUNIT_ID]
|
6
|
+
|
7
|
+
|
8
|
+
## Available options:
|
9
|
+
---
|
10
|
+
|
11
|
+
### Required options:
|
12
|
+
* ionoscloud_username
|
13
|
+
* ionoscloud_password
|
14
|
+
|
15
|
+
```
|
16
|
+
ionoscloud_username: --username USERNAME, -u USERNAME
|
17
|
+
your Ionoscloud username (required)
|
18
|
+
|
19
|
+
ionoscloud_password: --password PASSWORD, -p PASSWORD
|
20
|
+
your Ionoscloud password (required)
|
21
|
+
|
22
|
+
```
|
23
|
+
|
24
|
+
## Example
|
25
|
+
|
26
|
+
knife ionoscloud backupunit delete BACKUPUNIT_ID [BACKUPUNIT_ID]--username USERNAME --password PASSWORD
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# BackupunitList
|
2
|
+
|
3
|
+
Retrieve a list of all the backup units the supplied credentials have access to.
|
4
|
+
|
5
|
+
knife ionoscloud backupunit list
|
6
|
+
|
7
|
+
|
8
|
+
## Available options:
|
9
|
+
---
|
10
|
+
|
11
|
+
### Required options:
|
12
|
+
* ionoscloud_username
|
13
|
+
* ionoscloud_password
|
14
|
+
|
15
|
+
```
|
16
|
+
ionoscloud_username: --username USERNAME, -u USERNAME
|
17
|
+
your Ionoscloud username (required)
|
18
|
+
|
19
|
+
ionoscloud_password: --password PASSWORD, -p PASSWORD
|
20
|
+
your Ionoscloud password (required)
|
21
|
+
|
22
|
+
```
|
23
|
+
|
24
|
+
## Example
|
25
|
+
|
26
|
+
knife ionoscloud backupunit list--username USERNAME --password PASSWORD
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# BackupunitSsourl
|
2
|
+
|
3
|
+
The ProfitBricks backup system features a web-based GUI. Once you have created a backup unit, you can access the GUI with a Single Sign On (SSO) URL that can be retrieved from the Cloud API using this request.
|
4
|
+
|
5
|
+
knife ionoscloud backupunit ssourl (options)
|
6
|
+
|
7
|
+
|
8
|
+
## Available options:
|
9
|
+
---
|
10
|
+
|
11
|
+
### Required options:
|
12
|
+
* backupunit_id
|
13
|
+
* ionoscloud_username
|
14
|
+
* ionoscloud_password
|
15
|
+
|
16
|
+
```
|
17
|
+
backupunit_id: --backupunit-id BACKUPUNIT_ID, -B BACKUPUNIT_ID
|
18
|
+
the ID of the Backup unit. (required)
|
19
|
+
|
20
|
+
ionoscloud_username: --username USERNAME, -u USERNAME
|
21
|
+
your Ionoscloud username (required)
|
22
|
+
|
23
|
+
ionoscloud_password: --password PASSWORD, -p PASSWORD
|
24
|
+
your Ionoscloud password (required)
|
25
|
+
|
26
|
+
```
|
27
|
+
|
28
|
+
## Example
|
29
|
+
|
30
|
+
knife ionoscloud backupunit ssourl --backupunit-id BACKUPUNIT_ID --username USERNAME --password PASSWORD
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# CompositeServerCreate
|
2
|
+
|
3
|
+
This creates a new composite server with an attached volume and NIC in a specified virtual data center.
|
4
|
+
|
5
|
+
knife ionoscloud composite server create (options)
|
6
|
+
|
7
|
+
|
8
|
+
## Available options:
|
9
|
+
---
|
10
|
+
|
11
|
+
### Required options:
|
12
|
+
* datacenter_id
|
13
|
+
* name
|
14
|
+
* cores
|
15
|
+
* ram
|
16
|
+
* size
|
17
|
+
* type
|
18
|
+
* dhcp
|
19
|
+
* lan
|
20
|
+
* ionoscloud_username
|
21
|
+
* ionoscloud_password
|
22
|
+
|
23
|
+
```
|
24
|
+
datacenter_id: --datacenter-id DATACENTER_ID, -D DATACENTER_ID
|
25
|
+
name of the virtual datacenter (required)
|
26
|
+
|
27
|
+
name: --name NAME, -n NAME
|
28
|
+
(required) Name of the server (required)
|
29
|
+
|
30
|
+
cores: --cores CORES, -C CORES
|
31
|
+
(required) The number of processor cores (required)
|
32
|
+
|
33
|
+
cpu_family: --cpu-family CPU_FAMILY, -f CPU_FAMILY
|
34
|
+
the family of processor cores (INTEL_XEON or AMD_OPTERON)
|
35
|
+
|
36
|
+
ram: --ram RAM, -r RAM
|
37
|
+
(required) The amount of RAM in MB (required)
|
38
|
+
|
39
|
+
availability_zone: --availability-zone AVAILABILITY_ZONE, -a AVAILABILITY_ZONE
|
40
|
+
the availability zone of the server
|
41
|
+
|
42
|
+
volume_name: --volume-name NAME
|
43
|
+
name of the volume
|
44
|
+
|
45
|
+
size: --size SIZE, -S SIZE
|
46
|
+
(required) The size of the volume in GB (required)
|
47
|
+
|
48
|
+
bus: --bus BUS, -b BUS
|
49
|
+
the bus type of the volume (VIRTIO or IDE)
|
50
|
+
|
51
|
+
image: --image ID, -N ID
|
52
|
+
(required) The image or snapshot ID
|
53
|
+
|
54
|
+
image_alias: --image-alias IMAGE_ALIAS
|
55
|
+
(required) The image alias
|
56
|
+
|
57
|
+
type: --type TYPE, -t TYPE
|
58
|
+
(required) The disk type (HDD or SSD) (required)
|
59
|
+
|
60
|
+
licence_type: --licence-type LICENCE, -l LICENCE
|
61
|
+
the licence type of the volume (LINUX, WINDOWS, WINDOWS2016, UNKNOWN, OTHER)
|
62
|
+
|
63
|
+
image_password: --image-password PASSWORD, -P PASSWORD
|
64
|
+
the password set on the image for the "root" or "Administrator" user
|
65
|
+
|
66
|
+
volume_availability_zone: --volume-availability-zone AVAILABILITY_ZONE, -Z AVAILABILITY_ZONE
|
67
|
+
the volume availability zone of the server
|
68
|
+
|
69
|
+
ssh_keys: --ssh-keys SSHKEY1,SSHKEY2,..., -K SSHKEY[,SSHKEY,...]
|
70
|
+
a list of public SSH keys to include
|
71
|
+
|
72
|
+
nic_name: --nic-name NAME
|
73
|
+
name of the NIC
|
74
|
+
|
75
|
+
ips: --ips IP[,IP,...], -i IP[,IP,...]
|
76
|
+
iPs assigned to the NIC
|
77
|
+
|
78
|
+
dhcp: --dhcp, -h
|
79
|
+
set to false if you wish to disable DHCP (required)
|
80
|
+
|
81
|
+
lan: --lan ID, -L ID
|
82
|
+
the LAN ID the NIC will reside on; if the LAN ID does not exist it will be created (required)
|
83
|
+
|
84
|
+
nat: --nat
|
85
|
+
set to enable NAT on the NIC
|
86
|
+
|
87
|
+
ionoscloud_username: --username USERNAME, -u USERNAME
|
88
|
+
your Ionoscloud username (required)
|
89
|
+
|
90
|
+
ionoscloud_password: --password PASSWORD, -p PASSWORD
|
91
|
+
your Ionoscloud password (required)
|
92
|
+
|
93
|
+
```
|
94
|
+
|
95
|
+
## Example
|
96
|
+
|
97
|
+
knife ionoscloud composite server create --datacenter-id DATACENTER_ID --name NAME --cores CORES --cpu-family CPU_FAMILY --ram RAM --availability-zone AVAILABILITY_ZONE --volume-name NAME --size SIZE --bus BUS --image ID --image-alias IMAGE_ALIAS --type TYPE --licence-type LICENCE --image-password PASSWORD --volume-availability-zone AVAILABILITY_ZONE --ssh-keys SSHKEY1,SSHKEY2,... --nic-name NAME --ips IP[,IP,...] --dhcp --lan ID --nat --username USERNAME --password PASSWORD
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# ContractList
|
2
|
+
|
3
|
+
Lists information about available contract resources.
|
4
|
+
|
5
|
+
knife ionoscloud contract list
|
6
|
+
|
7
|
+
|
8
|
+
## Available options:
|
9
|
+
---
|
10
|
+
|
11
|
+
### Required options:
|
12
|
+
* ionoscloud_username
|
13
|
+
* ionoscloud_password
|
14
|
+
|
15
|
+
```
|
16
|
+
ionoscloud_username: --username USERNAME, -u USERNAME
|
17
|
+
your Ionoscloud username (required)
|
18
|
+
|
19
|
+
ionoscloud_password: --password PASSWORD, -p PASSWORD
|
20
|
+
your Ionoscloud password (required)
|
21
|
+
|
22
|
+
```
|
23
|
+
|
24
|
+
## Example
|
25
|
+
|
26
|
+
knife ionoscloud contract list--username USERNAME --password PASSWORD
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# DatacenterCreate
|
2
|
+
|
3
|
+
Unless you are planning to manage an existing Ionoscloud environment, the first step will typically involve choosing the location for a new virtual data centerA list of locations can be obtained with location command.
|
4
|
+
|
5
|
+
knife ionoscloud location list
|
6
|
+
|
7
|
+
Make a note of the desired location ID and now the data center can be created.
|
8
|
+
|
9
|
+
|
10
|
+
knife ionoscloud datacenter create (options)
|
11
|
+
|
12
|
+
|
13
|
+
## Available options:
|
14
|
+
---
|
15
|
+
|
16
|
+
### Required options:
|
17
|
+
* location
|
18
|
+
* ionoscloud_username
|
19
|
+
* ionoscloud_password
|
20
|
+
|
21
|
+
```
|
22
|
+
name: --name NAME, -n NAME
|
23
|
+
name of the data center
|
24
|
+
|
25
|
+
description: --description DESCRIPTION, -D DESCRIPTION
|
26
|
+
description of the data center
|
27
|
+
|
28
|
+
location: --location LOCATION, -l LOCATION
|
29
|
+
location of the data center (required)
|
30
|
+
|
31
|
+
ionoscloud_username: --username USERNAME, -u USERNAME
|
32
|
+
your Ionoscloud username (required)
|
33
|
+
|
34
|
+
ionoscloud_password: --password PASSWORD, -p PASSWORD
|
35
|
+
your Ionoscloud password (required)
|
36
|
+
|
37
|
+
```
|
38
|
+
|
39
|
+
## Example
|
40
|
+
|
41
|
+
knife ionoscloud datacenter create --name NAME --description DESCRIPTION --location LOCATION --username USERNAME --password PASSWORD
|