krates 1.6.0
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/LICENSE +212 -0
- data/LOGO +10 -0
- data/VERSION +1 -0
- data/bin/krates +23 -0
- data/lib/kontena/autoload_core.rb +19 -0
- data/lib/kontena/callback.rb +60 -0
- data/lib/kontena/callbacks/.gitkeep +0 -0
- data/lib/kontena/callbacks/auth/01_list_and_select_grid_after_master_auth.rb +26 -0
- data/lib/kontena/callbacks/master/01_clear_current_master_after_terminate.rb +19 -0
- data/lib/kontena/callbacks/master/deploy/01_show_logo_before_deploy.rb +14 -0
- data/lib/kontena/callbacks/master/deploy/04_default_master_version.rb +18 -0
- data/lib/kontena/callbacks/master/deploy/05_before_deploy_configuration_wizard.rb +105 -0
- data/lib/kontena/callbacks/master/deploy/40_install_ssl_certificate_after_deploy.rb +32 -0
- data/lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb +66 -0
- data/lib/kontena/callbacks/master/deploy/55_create_initial_grid_after_deploy.rb +21 -0
- data/lib/kontena/callbacks/master/deploy/56_set_server_provider_after_deploy.rb +24 -0
- data/lib/kontena/callbacks/master/deploy/60_configure_auth_provider_after_deploy.rb +31 -0
- data/lib/kontena/callbacks/master/deploy/70_invite_self_after_deploy.rb +95 -0
- data/lib/kontena/callbacks/master/deploy/90_proptip_after_deploy.rb +33 -0
- data/lib/kontena/cli/browser_launcher.rb +61 -0
- data/lib/kontena/cli/bytes_helper.rb +40 -0
- data/lib/kontena/cli/certificate/authorize_command.rb +107 -0
- data/lib/kontena/cli/certificate/common.rb +16 -0
- data/lib/kontena/cli/certificate/domain_authorization/list_command.rb +24 -0
- data/lib/kontena/cli/certificate/domain_authorization/remove_authorization_command.rb +25 -0
- data/lib/kontena/cli/certificate/domain_authorize_command.rb +7 -0
- data/lib/kontena/cli/certificate/export_command.rb +28 -0
- data/lib/kontena/cli/certificate/get_command.rb +33 -0
- data/lib/kontena/cli/certificate/import_command.rb +61 -0
- data/lib/kontena/cli/certificate/list_command.rb +75 -0
- data/lib/kontena/cli/certificate/register_command.rb +30 -0
- data/lib/kontena/cli/certificate/remove_command.rb +23 -0
- data/lib/kontena/cli/certificate/request_command.rb +20 -0
- data/lib/kontena/cli/certificate/show_command.rb +22 -0
- data/lib/kontena/cli/certificate_command.rb +18 -0
- data/lib/kontena/cli/cloud/login_command.rb +186 -0
- data/lib/kontena/cli/cloud/logout_command.rb +14 -0
- data/lib/kontena/cli/cloud/master/add_command.rb +156 -0
- data/lib/kontena/cli/cloud/master/list_command.rb +35 -0
- data/lib/kontena/cli/cloud/master/remove_command.rb +68 -0
- data/lib/kontena/cli/cloud/master/show_command.rb +21 -0
- data/lib/kontena/cli/cloud/master/update_command.rb +52 -0
- data/lib/kontena/cli/cloud/master_command.rb +14 -0
- data/lib/kontena/cli/cloud_command.rb +13 -0
- data/lib/kontena/cli/common.rb +360 -0
- data/lib/kontena/cli/config.rb +662 -0
- data/lib/kontena/cli/container_command.rb +10 -0
- data/lib/kontena/cli/containers/exec_command.rb +31 -0
- data/lib/kontena/cli/containers/inspect_command.rb +16 -0
- data/lib/kontena/cli/containers/list_command.rb +51 -0
- data/lib/kontena/cli/containers/logs_command.rb +19 -0
- data/lib/kontena/cli/etcd/common.rb +8 -0
- data/lib/kontena/cli/etcd/get_command.rb +26 -0
- data/lib/kontena/cli/etcd/health_command.rb +53 -0
- data/lib/kontena/cli/etcd/list_command.rb +36 -0
- data/lib/kontena/cli/etcd/mkdir_command.rb +23 -0
- data/lib/kontena/cli/etcd/remove_command.rb +29 -0
- data/lib/kontena/cli/etcd/set_command.rb +24 -0
- data/lib/kontena/cli/etcd_command.rb +12 -0
- data/lib/kontena/cli/external_registries/add_command.rb +25 -0
- data/lib/kontena/cli/external_registries/list_command.rb +23 -0
- data/lib/kontena/cli/external_registries/remove_command.rb +17 -0
- data/lib/kontena/cli/external_registry_command.rb +9 -0
- data/lib/kontena/cli/grid_command.rb +21 -0
- data/lib/kontena/cli/grid_options.rb +12 -0
- data/lib/kontena/cli/grids/audit_log_command.rb +22 -0
- data/lib/kontena/cli/grids/cloud_config_command.rb +53 -0
- data/lib/kontena/cli/grids/common.rb +182 -0
- data/lib/kontena/cli/grids/create_command.rb +48 -0
- data/lib/kontena/cli/grids/current_command.rb +25 -0
- data/lib/kontena/cli/grids/env_command.rb +32 -0
- data/lib/kontena/cli/grids/events_command.rb +50 -0
- data/lib/kontena/cli/grids/health_command.rb +69 -0
- data/lib/kontena/cli/grids/list_command.rb +59 -0
- data/lib/kontena/cli/grids/logs_command.rb +35 -0
- data/lib/kontena/cli/grids/remove_command.rb +31 -0
- data/lib/kontena/cli/grids/show_command.rb +25 -0
- data/lib/kontena/cli/grids/trusted_subnet_command.rb +10 -0
- data/lib/kontena/cli/grids/trusted_subnets/add_command.rb +18 -0
- data/lib/kontena/cli/grids/trusted_subnets/list_command.rb +18 -0
- data/lib/kontena/cli/grids/trusted_subnets/remove_command.rb +26 -0
- data/lib/kontena/cli/grids/update_command.rb +35 -0
- data/lib/kontena/cli/grids/use_command.rb +26 -0
- data/lib/kontena/cli/grids/user_command.rb +9 -0
- data/lib/kontena/cli/grids/users/add_command.rb +18 -0
- data/lib/kontena/cli/grids/users/list_command.rb +20 -0
- data/lib/kontena/cli/grids/users/remove_command.rb +20 -0
- data/lib/kontena/cli/helpers/exec_helper.rb +209 -0
- data/lib/kontena/cli/helpers/health_helper.rb +65 -0
- data/lib/kontena/cli/helpers/log_helper.rb +113 -0
- data/lib/kontena/cli/helpers/time_helper.rb +29 -0
- data/lib/kontena/cli/localhost_web_server.rb +113 -0
- data/lib/kontena/cli/log_formatters/compact.rb +65 -0
- data/lib/kontena/cli/log_formatters/strip_color.rb +13 -0
- data/lib/kontena/cli/logout_command.rb +10 -0
- data/lib/kontena/cli/master/audit_log_command.rb +19 -0
- data/lib/kontena/cli/master/config/export_command.rb +46 -0
- data/lib/kontena/cli/master/config/get_command.rb +26 -0
- data/lib/kontena/cli/master/config/import_command.rb +67 -0
- data/lib/kontena/cli/master/config/set_command.rb +19 -0
- data/lib/kontena/cli/master/config/unset_command.rb +20 -0
- data/lib/kontena/cli/master/config_command.rb +17 -0
- data/lib/kontena/cli/master/create_command.rb +74 -0
- data/lib/kontena/cli/master/current_command.rb +25 -0
- data/lib/kontena/cli/master/init_cloud_command.rb +45 -0
- data/lib/kontena/cli/master/join_command.rb +22 -0
- data/lib/kontena/cli/master/list_command.rb +24 -0
- data/lib/kontena/cli/master/login_command.rb +331 -0
- data/lib/kontena/cli/master/logout_command.rb +25 -0
- data/lib/kontena/cli/master/remove_command.rb +55 -0
- data/lib/kontena/cli/master/ssh_command.rb +72 -0
- data/lib/kontena/cli/master/token/common.rb +29 -0
- data/lib/kontena/cli/master/token/create_command.rb +50 -0
- data/lib/kontena/cli/master/token/current_command.rb +45 -0
- data/lib/kontena/cli/master/token/list_command.rb +39 -0
- data/lib/kontena/cli/master/token/remove_command.rb +19 -0
- data/lib/kontena/cli/master/token/show_command.rb +34 -0
- data/lib/kontena/cli/master/token_command.rb +13 -0
- data/lib/kontena/cli/master/use_command.rb +31 -0
- data/lib/kontena/cli/master/user/invite_command.rb +51 -0
- data/lib/kontena/cli/master/user/list_command.rb +29 -0
- data/lib/kontena/cli/master/user/remove_command.rb +24 -0
- data/lib/kontena/cli/master/user/role/add_command.rb +29 -0
- data/lib/kontena/cli/master/user/role/remove_command.rb +27 -0
- data/lib/kontena/cli/master/user/role_command.rb +6 -0
- data/lib/kontena/cli/master/user_command.rb +9 -0
- data/lib/kontena/cli/master_command.rb +21 -0
- data/lib/kontena/cli/node_command.rb +17 -0
- data/lib/kontena/cli/nodes/create_command.rb +25 -0
- data/lib/kontena/cli/nodes/env_command.rb +37 -0
- data/lib/kontena/cli/nodes/health_command.rb +47 -0
- data/lib/kontena/cli/nodes/label_command.rb +10 -0
- data/lib/kontena/cli/nodes/labels/add_command.rb +18 -0
- data/lib/kontena/cli/nodes/labels/list_command.rb +19 -0
- data/lib/kontena/cli/nodes/labels/remove_command.rb +32 -0
- data/lib/kontena/cli/nodes/list_command.rb +97 -0
- data/lib/kontena/cli/nodes/remove_command.rb +34 -0
- data/lib/kontena/cli/nodes/reset_token_command.rb +34 -0
- data/lib/kontena/cli/nodes/show_command.rb +56 -0
- data/lib/kontena/cli/nodes/ssh_command.rb +63 -0
- data/lib/kontena/cli/nodes/update_command.rb +31 -0
- data/lib/kontena/cli/plugin_command.rb +12 -0
- data/lib/kontena/cli/plugins/common.rb +8 -0
- data/lib/kontena/cli/plugins/install_command.rb +42 -0
- data/lib/kontena/cli/plugins/list_command.rb +31 -0
- data/lib/kontena/cli/plugins/search_command.rb +25 -0
- data/lib/kontena/cli/plugins/show_command.rb +17 -0
- data/lib/kontena/cli/plugins/uninstall_command.rb +31 -0
- data/lib/kontena/cli/plugins/upgrade_command.rb +60 -0
- data/lib/kontena/cli/registry/create_command.rb +151 -0
- data/lib/kontena/cli/registry/remove_command.rb +21 -0
- data/lib/kontena/cli/registry_command.rb +8 -0
- data/lib/kontena/cli/service_command.rb +28 -0
- data/lib/kontena/cli/services/container_command.rb +8 -0
- data/lib/kontena/cli/services/containers_command.rb +39 -0
- data/lib/kontena/cli/services/create_command.rb +105 -0
- data/lib/kontena/cli/services/deploy_command.rb +25 -0
- data/lib/kontena/cli/services/env_command.rb +9 -0
- data/lib/kontena/cli/services/envs/add_command.rb +21 -0
- data/lib/kontena/cli/services/envs/list_command.rb +22 -0
- data/lib/kontena/cli/services/envs/remove_command.rb +22 -0
- data/lib/kontena/cli/services/events_command.rb +36 -0
- data/lib/kontena/cli/services/exec_command.rb +107 -0
- data/lib/kontena/cli/services/link_command.rb +35 -0
- data/lib/kontena/cli/services/list_command.rb +66 -0
- data/lib/kontena/cli/services/logs_command.rb +33 -0
- data/lib/kontena/cli/services/monitor_command.rb +58 -0
- data/lib/kontena/cli/services/remove_command.rb +60 -0
- data/lib/kontena/cli/services/restart_command.rb +19 -0
- data/lib/kontena/cli/services/scale_command.rb +21 -0
- data/lib/kontena/cli/services/secret_command.rb +8 -0
- data/lib/kontena/cli/services/secrets/link_command.rb +26 -0
- data/lib/kontena/cli/services/secrets/unlink_command.rb +28 -0
- data/lib/kontena/cli/services/services_helper.rb +579 -0
- data/lib/kontena/cli/services/show_command.rb +26 -0
- data/lib/kontena/cli/services/start_command.rb +21 -0
- data/lib/kontena/cli/services/stats_command.rb +87 -0
- data/lib/kontena/cli/services/stop_command.rb +21 -0
- data/lib/kontena/cli/services/unlink_command.rb +30 -0
- data/lib/kontena/cli/services/update_command.rb +94 -0
- data/lib/kontena/cli/spinner.rb +205 -0
- data/lib/kontena/cli/stack_command.rb +21 -0
- data/lib/kontena/cli/stacks/build_command.rb +125 -0
- data/lib/kontena/cli/stacks/common.rb +209 -0
- data/lib/kontena/cli/stacks/deploy_command.rb +37 -0
- data/lib/kontena/cli/stacks/events_command.rb +33 -0
- data/lib/kontena/cli/stacks/inspect_command.rb +17 -0
- data/lib/kontena/cli/stacks/install_command.rb +95 -0
- data/lib/kontena/cli/stacks/label_command.rb +10 -0
- data/lib/kontena/cli/stacks/labels/add_command.rb +21 -0
- data/lib/kontena/cli/stacks/labels/common.rb +19 -0
- data/lib/kontena/cli/stacks/labels/list_command.rb +21 -0
- data/lib/kontena/cli/stacks/labels/remove_command.rb +21 -0
- data/lib/kontena/cli/stacks/list_command.rb +154 -0
- data/lib/kontena/cli/stacks/logs_command.rb +35 -0
- data/lib/kontena/cli/stacks/monitor_command.rb +93 -0
- data/lib/kontena/cli/stacks/registry/create_command.rb +24 -0
- data/lib/kontena/cli/stacks/registry/make_private_command.rb +24 -0
- data/lib/kontena/cli/stacks/registry/make_public_command.rb +24 -0
- data/lib/kontena/cli/stacks/registry/pull_command.rb +28 -0
- data/lib/kontena/cli/stacks/registry/push_command.rb +40 -0
- data/lib/kontena/cli/stacks/registry/remove_command.rb +30 -0
- data/lib/kontena/cli/stacks/registry/search_command.rb +42 -0
- data/lib/kontena/cli/stacks/registry/show_command.rb +65 -0
- data/lib/kontena/cli/stacks/registry_command.rb +12 -0
- data/lib/kontena/cli/stacks/remove_command.rb +80 -0
- data/lib/kontena/cli/stacks/restart_command.rb +24 -0
- data/lib/kontena/cli/stacks/service_generator.rb +131 -0
- data/lib/kontena/cli/stacks/service_generator_v2.rb +27 -0
- data/lib/kontena/cli/stacks/show_command.rb +168 -0
- data/lib/kontena/cli/stacks/stack_name.rb +71 -0
- data/lib/kontena/cli/stacks/stacks_helper.rb +83 -0
- data/lib/kontena/cli/stacks/stop_command.rb +24 -0
- data/lib/kontena/cli/stacks/upgrade_command.rb +264 -0
- data/lib/kontena/cli/stacks/validate_command.rb +75 -0
- data/lib/kontena/cli/stacks/yaml/custom_validators/affinities_validator.rb +19 -0
- data/lib/kontena/cli/stacks/yaml/custom_validators/build_validator.rb +22 -0
- data/lib/kontena/cli/stacks/yaml/custom_validators/certificates_validator.rb +22 -0
- data/lib/kontena/cli/stacks/yaml/custom_validators/extends_validator.rb +22 -0
- data/lib/kontena/cli/stacks/yaml/custom_validators/hooks_validator.rb +102 -0
- data/lib/kontena/cli/stacks/yaml/custom_validators/secrets_validator.rb +22 -0
- data/lib/kontena/cli/stacks/yaml/opto/certificates_resolver.rb +37 -0
- data/lib/kontena/cli/stacks/yaml/opto/prompt_resolver.rb +78 -0
- data/lib/kontena/cli/stacks/yaml/opto/service_instances_resolver.rb +25 -0
- data/lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb +80 -0
- data/lib/kontena/cli/stacks/yaml/opto/vault_cert_prompt_resolver.rb +39 -0
- data/lib/kontena/cli/stacks/yaml/opto/vault_resolver.rb +13 -0
- data/lib/kontena/cli/stacks/yaml/opto/vault_setter.rb +12 -0
- data/lib/kontena/cli/stacks/yaml/opto.rb +16 -0
- data/lib/kontena/cli/stacks/yaml/reader.rb +525 -0
- data/lib/kontena/cli/stacks/yaml/service_extender.rb +65 -0
- data/lib/kontena/cli/stacks/yaml/stack_file_loader/file_loader.rb +41 -0
- data/lib/kontena/cli/stacks/yaml/stack_file_loader/registry_loader.rb +24 -0
- data/lib/kontena/cli/stacks/yaml/stack_file_loader/uri_loader.rb +23 -0
- data/lib/kontena/cli/stacks/yaml/stack_file_loader.rb +152 -0
- data/lib/kontena/cli/stacks/yaml/validations.rb +119 -0
- data/lib/kontena/cli/stacks/yaml/validator_v3.rb +164 -0
- data/lib/kontena/cli/subcommand_loader.rb +83 -0
- data/lib/kontena/cli/table_generator.rb +128 -0
- data/lib/kontena/cli/vault/export_command.rb +24 -0
- data/lib/kontena/cli/vault/import_command.rb +75 -0
- data/lib/kontena/cli/vault/list_command.rb +37 -0
- data/lib/kontena/cli/vault/read_command.rb +27 -0
- data/lib/kontena/cli/vault/remove_command.rb +23 -0
- data/lib/kontena/cli/vault/update_command.rb +24 -0
- data/lib/kontena/cli/vault/write_command.rb +23 -0
- data/lib/kontena/cli/vault_command.rb +13 -0
- data/lib/kontena/cli/version.rb +10 -0
- data/lib/kontena/cli/version_command.rb +20 -0
- data/lib/kontena/cli/volume_command.rb +9 -0
- data/lib/kontena/cli/volumes/create_command.rb +42 -0
- data/lib/kontena/cli/volumes/list_command.rb +29 -0
- data/lib/kontena/cli/volumes/remove_command.rb +29 -0
- data/lib/kontena/cli/volumes/show_command.rb +38 -0
- data/lib/kontena/cli/vpn/config_command.rb +27 -0
- data/lib/kontena/cli/vpn/create_command.rb +99 -0
- data/lib/kontena/cli/vpn/remove_command.rb +22 -0
- data/lib/kontena/cli/vpn_command.rb +9 -0
- data/lib/kontena/cli/whoami_command.rb +38 -0
- data/lib/kontena/client.rb +574 -0
- data/lib/kontena/command.rb +251 -0
- data/lib/kontena/debug_instrumentor.rb +80 -0
- data/lib/kontena/errors.rb +50 -0
- data/lib/kontena/light_prompt.rb +103 -0
- data/lib/kontena/machine/cert_helper.rb +43 -0
- data/lib/kontena/machine/cloud_config/cloudinit.yml +82 -0
- data/lib/kontena/machine/cloud_config/node_generator.rb +28 -0
- data/lib/kontena/machine/common.rb +17 -0
- data/lib/kontena/machine/random_name.rb +42 -0
- data/lib/kontena/main_command.rb +66 -0
- data/lib/kontena/plugin_manager/cleaner.rb +33 -0
- data/lib/kontena/plugin_manager/common.rb +89 -0
- data/lib/kontena/plugin_manager/installer.rb +78 -0
- data/lib/kontena/plugin_manager/loader.rb +93 -0
- data/lib/kontena/plugin_manager/rubygems_client.rb +59 -0
- data/lib/kontena/plugin_manager/uninstaller.rb +34 -0
- data/lib/kontena/plugin_manager.rb +26 -0
- data/lib/kontena/presets/github_auth_provider.yml +11 -0
- data/lib/kontena/presets/kontena_auth_provider.yml +11 -0
- data/lib/kontena/scripts/completer +9 -0
- data/lib/kontena/scripts/completer.rb +334 -0
- data/lib/kontena/scripts/init +18 -0
- data/lib/kontena/scripts/kontena.zsh +11 -0
- data/lib/kontena/scripts/krates.bash +8 -0
- data/lib/kontena/stacks/change_resolver.rb +118 -0
- data/lib/kontena/stacks/stack_data.rb +58 -0
- data/lib/kontena/stacks/stack_data_set.rb +51 -0
- data/lib/kontena/stacks_cache.rb +110 -0
- data/lib/kontena/stacks_client.rb +177 -0
- data/lib/kontena/util.rb +116 -0
- data/lib/kontena_cli.rb +190 -0
- metadata +518 -0
@@ -0,0 +1,10 @@
|
|
1
|
+
class Kontena::Cli::LogoutCommand < Kontena::Command
|
2
|
+
include Kontena::Cli::Common
|
3
|
+
|
4
|
+
banner "Command removed, use 'kontena master logout' to log out of the Kontena Master"
|
5
|
+
banner "or 'kontena cloud logout' to log out of the Kontena Cloud", false
|
6
|
+
|
7
|
+
def execute
|
8
|
+
exit_with_error("Command removed. Use #{pastel.yellow("kontena master logout")} to log out of the Kontena Master")
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Kontena::Cli::Master
|
2
|
+
class AuditLogCommand < Kontena::Command
|
3
|
+
include Kontena::Cli::Common
|
4
|
+
|
5
|
+
option ["-l", "--lines"], "LINES", "Number of lines"
|
6
|
+
|
7
|
+
requires_current_master
|
8
|
+
requires_current_master_token
|
9
|
+
|
10
|
+
def execute
|
11
|
+
audit_logs = client.get("audit_logs", {limit: lines})
|
12
|
+
puts '%-30.30s %-10s %-15s %-25s %-15s %-25s %-15s %-15s' % ['Time', 'Grid', 'Resource Type', 'Resource Name', 'Event Name', 'User', 'Source IP', 'User-Agent']
|
13
|
+
audit_logs['logs'].each do |log|
|
14
|
+
puts '%-30.30s %-10s %-15s %-25s %-15s %-25s %-15s %-15s' % [ log['time'], log['grid'], log['resource_type'], log['resource_name'], log['event_name'], log['user_identity']['email'], log['source_ip'], log['user_agent']]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Kontena::Cli::Master::Config
|
2
|
+
class ExportCommand < Kontena::Command
|
3
|
+
|
4
|
+
include Kontena::Cli::Common
|
5
|
+
|
6
|
+
requires_current_master
|
7
|
+
requires_current_master_token
|
8
|
+
|
9
|
+
banner "Reads configuration from master"
|
10
|
+
|
11
|
+
parameter '[PATH]', "Output to file in PATH, default: STDOUT", required: false
|
12
|
+
option ['-f', '--format'], '[FORMAT]', "Specify output format (json, yaml) (default: guess from PATH or json)"
|
13
|
+
|
14
|
+
option ['--filter'], "[FILTER]", "Filter keys, example: oauth2.*"
|
15
|
+
|
16
|
+
def decorate(data)
|
17
|
+
case self.format.downcase
|
18
|
+
when 'json'
|
19
|
+
require 'json'
|
20
|
+
JSON.pretty_generate(data)
|
21
|
+
when 'yaml', 'yml'
|
22
|
+
require 'yaml'
|
23
|
+
YAML.dump(data)
|
24
|
+
else
|
25
|
+
exit_with_error "Unknown output format '#{self.format}'"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def output(content)
|
30
|
+
self.path ? File.write(self.path, content) : puts(content)
|
31
|
+
end
|
32
|
+
|
33
|
+
def data
|
34
|
+
client.get("config", self.filter ? { filter: self.filter } : nil)
|
35
|
+
end
|
36
|
+
|
37
|
+
def set_default_format
|
38
|
+
self.format ||= self.path.to_s.end_with?('.yml') ? 'yaml' : 'json'
|
39
|
+
end
|
40
|
+
|
41
|
+
def execute
|
42
|
+
set_default_format
|
43
|
+
output(decorate(data))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Kontena::Cli::Master::Config
|
2
|
+
class GetCommand < Kontena::Command
|
3
|
+
|
4
|
+
include Kontena::Cli::Common
|
5
|
+
|
6
|
+
requires_current_master
|
7
|
+
requires_current_master_token
|
8
|
+
|
9
|
+
banner "Reads a configuration value from master"
|
10
|
+
|
11
|
+
parameter "KEY", "Configuration key to read from master", required: true
|
12
|
+
|
13
|
+
option ['-p', '--pair'], :flag, "Print key=value instead of only value"
|
14
|
+
|
15
|
+
def response
|
16
|
+
client.get("config/#{key}")
|
17
|
+
end
|
18
|
+
|
19
|
+
def execute
|
20
|
+
value = response[key]
|
21
|
+
print(key + '=') if pair?
|
22
|
+
puts value
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Kontena::Cli::Master::Config
|
2
|
+
class ImportCommand < Kontena::Command
|
3
|
+
|
4
|
+
include Kontena::Cli::Common
|
5
|
+
|
6
|
+
requires_current_master
|
7
|
+
requires_current_master_token
|
8
|
+
|
9
|
+
banner "Updates configuration from a file into Master"
|
10
|
+
|
11
|
+
parameter '[PATH]', "Input from file in PATH (default: STDIN)", required: false
|
12
|
+
|
13
|
+
option ['--preset'], '[NAME]', 'Load preset', hidden: true
|
14
|
+
|
15
|
+
option ['--format'], '[FORMAT]', "Specify input format (json, yaml) (default: guess from PATH or json)"
|
16
|
+
option ['--full'], :flag, "Perform full update, keys that are not present in the input are cleared"
|
17
|
+
option ['-f', '--force'], :flag, "Don't ask for confirmation"
|
18
|
+
|
19
|
+
|
20
|
+
def input_as_hash
|
21
|
+
if self.path && self.preset
|
22
|
+
exit_with_error "Options --preset and PATH can not be used together"
|
23
|
+
elsif self.path
|
24
|
+
unless File.exist?(self.path) && File.readable?(self.path)
|
25
|
+
exit_with_error "Can not read '#{self.path}'"
|
26
|
+
end
|
27
|
+
File.read(self.path)
|
28
|
+
elsif self.preset
|
29
|
+
self.format = 'yaml'
|
30
|
+
path = File.join(Kontena.root, 'lib/kontena/presets', "#{self.preset}.yml")
|
31
|
+
File.read(path)
|
32
|
+
else
|
33
|
+
stdin_input("Enter master configuration as #{format.upcase}", :multiline)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def convert(data)
|
38
|
+
case self.format.downcase
|
39
|
+
when 'json'
|
40
|
+
require 'json'
|
41
|
+
JSON.parse(data)
|
42
|
+
when 'yaml', 'yml'
|
43
|
+
::YAML.safe_load(data, [], [], true)
|
44
|
+
else
|
45
|
+
exit_with_error "Unknown input format '#{self.format}'"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def http_method
|
50
|
+
self.full? ? :patch : :put
|
51
|
+
end
|
52
|
+
|
53
|
+
def upload(data)
|
54
|
+
confirm unless self.force?
|
55
|
+
client.send(http_method, "config", data)
|
56
|
+
end
|
57
|
+
|
58
|
+
def set_default_format
|
59
|
+
self.format ||= self.path.to_s.end_with?('.yml') ? 'yaml' : 'json'
|
60
|
+
end
|
61
|
+
|
62
|
+
def execute
|
63
|
+
set_default_format
|
64
|
+
upload(convert(input_as_hash))
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Kontena::Cli::Master::Config
|
2
|
+
class SetCommand < Kontena::Command
|
3
|
+
|
4
|
+
include Kontena::Cli::Common
|
5
|
+
|
6
|
+
requires_current_master
|
7
|
+
requires_current_master_token
|
8
|
+
|
9
|
+
banner "Sets a configuration value to Master"
|
10
|
+
|
11
|
+
parameter "KEY_VALUE_PAIR ...", "Key/value pair, for example server.root_url=http://example.com", required: true
|
12
|
+
|
13
|
+
def execute
|
14
|
+
data = self.key_value_pair_list.map{ |p| p.split('=') }.to_h
|
15
|
+
client.patch('config', data)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Kontena::Cli::Master::Config
|
2
|
+
class UnsetCommand < Kontena::Command
|
3
|
+
|
4
|
+
include Kontena::Cli::Common
|
5
|
+
|
6
|
+
requires_current_master
|
7
|
+
requires_current_master_token
|
8
|
+
|
9
|
+
parameter "KEY ...", "Key(s) to unset", required: true
|
10
|
+
|
11
|
+
banner "Clears a configuration value from Master"
|
12
|
+
|
13
|
+
def execute
|
14
|
+
self.key_list.each do |key|
|
15
|
+
client.delete("config/#{key}")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
module Kontena
|
3
|
+
module Cli
|
4
|
+
module Master
|
5
|
+
class ConfigCommand < Kontena::Command
|
6
|
+
subcommand "set", "Set a config value", load_subcommand('master/config/set_command')
|
7
|
+
subcommand "get", "Get a config value", load_subcommand('master/config/get_command')
|
8
|
+
subcommand "unset", "Clear a config value", load_subcommand('master/config/unset_command')
|
9
|
+
subcommand ["load", "import"], "Upload config to Master", load_subcommand('master/config/import_command')
|
10
|
+
subcommand ["dump", "export"], "Download config from Master", load_subcommand('master/config/export_command')
|
11
|
+
|
12
|
+
def execute
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Kontena::Cli::Master
|
2
|
+
class CreateCommand < Kontena::Command
|
3
|
+
include Kontena::Cli::Common
|
4
|
+
|
5
|
+
callback_matcher :master, :create_with_plugin_select
|
6
|
+
|
7
|
+
def subcommand_tree(command = nil)
|
8
|
+
command ||= Kontena::MainCommand
|
9
|
+
|
10
|
+
real_command = command.respond_to?(:subcommand_class) ? command.subcommand_class : command
|
11
|
+
|
12
|
+
tree = {}
|
13
|
+
real_command.recognised_subcommands.each do |sub_command|
|
14
|
+
sub_command.names.each do |command_name|
|
15
|
+
if sub_command.subcommand_class.has_subcommands?
|
16
|
+
tree[command_name] = subcommand_tree(sub_command)
|
17
|
+
else
|
18
|
+
tree[command_name] = sub_command.subcommand_class
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
tree
|
23
|
+
end
|
24
|
+
|
25
|
+
def master_create_subcommands(tree)
|
26
|
+
creators = []
|
27
|
+
tree.each do |k,cmd|
|
28
|
+
if cmd.kind_of?(Hash)
|
29
|
+
creators += master_create_subcommands(cmd)
|
30
|
+
elsif cmd.respond_to?(:callback_matcher) && cmd.callback_matcher == [:master, :create]
|
31
|
+
creators << cmd
|
32
|
+
end
|
33
|
+
end
|
34
|
+
creators
|
35
|
+
end
|
36
|
+
|
37
|
+
def execute
|
38
|
+
|
39
|
+
require 'shellwords'
|
40
|
+
|
41
|
+
tree = master_create_subcommands(subcommand_tree)
|
42
|
+
|
43
|
+
if tree.empty?
|
44
|
+
exit_with_error "Install platform plugins first, use: kontena plugin"
|
45
|
+
end
|
46
|
+
cmd_class = prompt.select("Choose target platform") do |menu|
|
47
|
+
tree.each do |cmd_class|
|
48
|
+
plugin_name = cmd_class.to_s[/Plugin::(.+?)::/, 1]
|
49
|
+
next unless plugin_name
|
50
|
+
menu.choice plugin_name, cmd_class
|
51
|
+
end
|
52
|
+
end
|
53
|
+
skip_options = ['--no-prompt', '--silent', '--help', '--version']
|
54
|
+
options = []
|
55
|
+
cmd_class.recognised_options.each do |option|
|
56
|
+
next if option.switches.any?{ |sw| skip_options.include?(sw) }
|
57
|
+
if option.type == :flag
|
58
|
+
answer = prompt.yes?(option.description)
|
59
|
+
if answer
|
60
|
+
options << option.switches.first
|
61
|
+
end
|
62
|
+
else
|
63
|
+
answer = prompt.ask("#{option.description}: ", required: option.required?, default: option.default_value)
|
64
|
+
if answer
|
65
|
+
options << "#{option.switches.first} #{answer.shellescape}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
cmd = [cmd_class.to_s[/Plugin::(.+?)::/, 1].downcase, 'master', 'create'] + options
|
70
|
+
Kontena.run!(cmd)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
3
|
+
module Kontena::Cli::Master
|
4
|
+
class CurrentCommand < Kontena::Command
|
5
|
+
include Kontena::Cli::Common
|
6
|
+
|
7
|
+
option ["--name"], :flag, "Show name only", default: false
|
8
|
+
option ["--address"], :flag, "Show IP address or FQDN only", default: false
|
9
|
+
option ["--url"], :flag, "Show URL only", default: false
|
10
|
+
|
11
|
+
def execute
|
12
|
+
master = require_current_master
|
13
|
+
|
14
|
+
if name?
|
15
|
+
puts master['name']
|
16
|
+
elsif address?
|
17
|
+
puts URI.parse(master['url']).host
|
18
|
+
elsif url?
|
19
|
+
puts master['url']
|
20
|
+
else
|
21
|
+
puts "#{master['name']} #{master['url']}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Kontena::Cli::Master
|
2
|
+
class InitCloudCommand < Kontena::Command
|
3
|
+
|
4
|
+
include Kontena::Cli::Common
|
5
|
+
|
6
|
+
banner "Configures the current Kontena Master to use Kontena Cloud services and authentication"
|
7
|
+
|
8
|
+
option '--force', :flag, "Don't ask questions"
|
9
|
+
option '--cloud-master-id', '[ID]', "Use existing cloud master ID"
|
10
|
+
option '--provider', '[NAME]', "Set master provider name"
|
11
|
+
option '--version', '[VERSION]', "Set master version"
|
12
|
+
|
13
|
+
requires_current_master
|
14
|
+
requires_current_master_token
|
15
|
+
requires_current_account_token
|
16
|
+
|
17
|
+
def master_config
|
18
|
+
@master_config ||= client.get('config')
|
19
|
+
end
|
20
|
+
|
21
|
+
def current_master_cloud_config
|
22
|
+
return @cloud_config if @cloud_config
|
23
|
+
master_client_id = master_config['oauth2.client_id']
|
24
|
+
@cloud_config = cloud_client.get('user/masters')['data'].find { |cm| cm['attributes']['client-id'] == master_client_id }
|
25
|
+
end
|
26
|
+
|
27
|
+
def current_master_cloud_name
|
28
|
+
@cloud_name ||= current_master_cloud_config.nil? ? nil : current_master_cloud_config['attributes']['name']
|
29
|
+
end
|
30
|
+
|
31
|
+
def already_cloud_enabled?
|
32
|
+
!current_master_cloud_config.nil?
|
33
|
+
end
|
34
|
+
|
35
|
+
def execute
|
36
|
+
exit_with_error "Current master is already registered to use Kontena Cloud as #{pastel.cyan(current_master_cloud_name)}" if already_cloud_enabled?
|
37
|
+
args = ["--current"]
|
38
|
+
args << "--force" if self.force?
|
39
|
+
args += ["--cloud-master-id", self.cloud_master_id.shellescape] if self.cloud_master_id
|
40
|
+
args += ["--provider", self.provider.shellescape] if self.provider
|
41
|
+
args += ["--version", self.version.shellescape] if self.version
|
42
|
+
Kontena.run!(['cloud', 'master', 'add'] + args)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Kontena::Cli::Master
|
2
|
+
class JoinCommand < Kontena::Command
|
3
|
+
parameter "URL", "Kontena Master URL or name"
|
4
|
+
parameter "INVITE_CODE", "Invitation code"
|
5
|
+
|
6
|
+
option ['-n', '--name'], '[NAME]', 'Set server name'
|
7
|
+
option ['-r', '--remote'], :flag, 'Do not try to open a browser'
|
8
|
+
option ['-v', '--verbose'], :flag, 'Increase output verbosity'
|
9
|
+
|
10
|
+
def execute
|
11
|
+
params = []
|
12
|
+
params += ["--join", self.invite_code]
|
13
|
+
params << "--remote" if self.remote?
|
14
|
+
params += ["--name", self.name] if self.name
|
15
|
+
params << "--verbose" if self.verbose?
|
16
|
+
|
17
|
+
cmd = ['master', 'login'] + params
|
18
|
+
cmd << url
|
19
|
+
Kontena.run!(cmd)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Kontena::Cli::Master
|
2
|
+
class ListCommand < Kontena::Command
|
3
|
+
include Kontena::Cli::Common
|
4
|
+
include Kontena::Cli::TableGenerator::Helper
|
5
|
+
|
6
|
+
def fields
|
7
|
+
@fields ||= quiet? ? %w(name) : %w(name url)
|
8
|
+
end
|
9
|
+
|
10
|
+
def current_master_name
|
11
|
+
@current_master_name ||= current_master.nil? ? nil : current_master.name
|
12
|
+
end
|
13
|
+
|
14
|
+
def mark_if_current(row)
|
15
|
+
unless quiet?
|
16
|
+
row.name.to_s.insert(0, pastel.yellow('* ')) if row.name == current_master_name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def execute
|
21
|
+
print_table(config.servers, fields, &method(:mark_if_current))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|