kontena-cli 0.11.7 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/bin/kontena +2 -4
- data/kontena-cli.gemspec +1 -0
- data/lib/kontena/cli/app_command.rb +1 -1
- data/lib/kontena/cli/apps/common.rb +30 -3
- data/lib/kontena/cli/apps/deploy_command.rb +1 -0
- data/lib/kontena/cli/apps/list_command.rb +1 -0
- data/lib/kontena/cli/apps/logs_command.rb +9 -3
- data/lib/kontena/cli/apps/monitor_command.rb +1 -0
- data/lib/kontena/cli/apps/remove_command.rb +2 -0
- data/lib/kontena/cli/apps/scale_command.rb +2 -1
- data/lib/kontena/cli/apps/show_command.rb +1 -0
- data/lib/kontena/cli/apps/start_command.rb +1 -0
- data/lib/kontena/cli/apps/stop_command.rb +1 -0
- data/lib/kontena/cli/common.rb +5 -1
- data/lib/kontena/cli/containers/exec_command.rb +1 -0
- data/lib/kontena/cli/containers/inspect_command.rb +1 -0
- data/lib/kontena/cli/etcd/get_command.rb +2 -1
- data/lib/kontena/cli/etcd/list_command.rb +1 -0
- data/lib/kontena/cli/etcd/mkdir_command.rb +2 -1
- data/lib/kontena/cli/etcd/remove_command.rb +2 -1
- data/lib/kontena/cli/etcd/set_command.rb +2 -1
- data/lib/kontena/cli/etcd_command.rb +2 -2
- data/lib/kontena/cli/external_registries/add_command.rb +1 -0
- data/lib/kontena/cli/external_registries/delete_command.rb +2 -0
- data/lib/kontena/cli/external_registries/list_command.rb +1 -0
- data/lib/kontena/cli/external_registries/remove_command.rb +13 -0
- data/lib/kontena/cli/external_registry_command.rb +4 -3
- data/lib/kontena/cli/grid_command.rb +5 -1
- data/lib/kontena/cli/grid_options.rb +12 -0
- data/lib/kontena/cli/grids/add_user_command.rb +1 -0
- data/lib/kontena/cli/grids/cloud_config_command.rb +41 -0
- data/lib/kontena/cli/grids/common.rb +65 -4
- data/lib/kontena/cli/grids/logs_command.rb +9 -4
- data/lib/kontena/cli/grids/remove_user_command.rb +1 -0
- data/lib/kontena/cli/grids/update_command.rb +27 -0
- data/lib/kontena/cli/master/use_command.rb +12 -2
- data/lib/kontena/cli/master/users/add_role_command.rb +26 -0
- data/lib/kontena/cli/master/users/invite_command.rb +24 -0
- data/lib/kontena/cli/master/users/list_command.rb +18 -0
- data/lib/kontena/cli/master/users/remove_role_command.rb +26 -0
- data/lib/kontena/cli/master/users_command.rb +14 -0
- data/lib/kontena/cli/master_command.rb +2 -1
- data/lib/kontena/cli/node_command.rb +7 -1
- data/lib/kontena/cli/nodes/add_label_command.rb +19 -0
- data/lib/kontena/cli/nodes/aws/create_command.rb +2 -1
- data/lib/kontena/cli/nodes/aws/restart_command.rb +1 -0
- data/lib/kontena/cli/nodes/aws/terminate_command.rb +1 -0
- data/lib/kontena/cli/nodes/azure/create_command.rb +1 -0
- data/lib/kontena/cli/nodes/azure/restart_command.rb +1 -0
- data/lib/kontena/cli/nodes/azure/terminate_command.rb +1 -0
- data/lib/kontena/cli/nodes/digital_ocean/create_command.rb +1 -0
- data/lib/kontena/cli/nodes/digital_ocean/restart_command.rb +1 -0
- data/lib/kontena/cli/nodes/digital_ocean/terminate_command.rb +1 -0
- data/lib/kontena/cli/nodes/list_command.rb +10 -14
- data/lib/kontena/cli/nodes/remove_command.rb +1 -0
- data/lib/kontena/cli/nodes/remove_label_command.rb +23 -0
- data/lib/kontena/cli/nodes/show_command.rb +1 -0
- data/lib/kontena/cli/nodes/ssh_command.rb +1 -0
- data/lib/kontena/cli/nodes/update_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/create_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/restart_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/ssh_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/start_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/stop_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/terminate_command.rb +1 -0
- data/lib/kontena/cli/registry/create_command.rb +80 -30
- data/lib/kontena/cli/registry/delete_command.rb +3 -0
- data/lib/kontena/cli/registry/remove_command.rb +15 -0
- data/lib/kontena/cli/registry_command.rb +3 -1
- data/lib/kontena/cli/service_command.rb +20 -4
- data/lib/kontena/cli/services/add_env_command.rb +1 -0
- data/lib/kontena/cli/services/add_secret_command.rb +24 -0
- data/lib/kontena/cli/services/containers_command.rb +1 -0
- data/lib/kontena/cli/services/create_command.rb +3 -2
- data/lib/kontena/cli/services/delete_command.rb +2 -0
- data/lib/kontena/cli/services/deploy_command.rb +1 -0
- data/lib/kontena/cli/services/envs_command.rb +1 -0
- data/lib/kontena/cli/services/link_command.rb +26 -0
- data/lib/kontena/cli/services/list_command.rb +13 -10
- data/lib/kontena/cli/services/logs_command.rb +13 -5
- data/lib/kontena/cli/services/monitor_command.rb +1 -0
- data/lib/kontena/cli/services/remove_command.rb +17 -0
- data/lib/kontena/cli/services/remove_env_command.rb +1 -0
- data/lib/kontena/cli/services/remove_secret_command.rb +28 -0
- data/lib/kontena/cli/services/restart_command.rb +1 -0
- data/lib/kontena/cli/services/scale_command.rb +2 -1
- data/lib/kontena/cli/services/show_command.rb +1 -0
- data/lib/kontena/cli/services/start_command.rb +1 -0
- data/lib/kontena/cli/services/stats_command.rb +5 -4
- data/lib/kontena/cli/services/stop_command.rb +1 -0
- data/lib/kontena/cli/services/unlink_command.rb +25 -0
- data/lib/kontena/cli/services/update_command.rb +4 -3
- data/lib/kontena/cli/users_command.rb +15 -0
- data/lib/kontena/cli/vault/list_command.rb +1 -0
- data/lib/kontena/cli/vault/read_command.rb +1 -0
- data/lib/kontena/cli/vault/remove_command.rb +1 -0
- data/lib/kontena/cli/vault/write_command.rb +1 -0
- data/lib/kontena/cli/version_command.rb +9 -1
- data/lib/kontena/cli/vpn/config_command.rb +1 -0
- data/lib/kontena/cli/vpn/create_command.rb +1 -0
- data/lib/kontena/cli/vpn/delete_command.rb +2 -0
- data/lib/kontena/cli/vpn/remove_command.rb +15 -0
- data/lib/kontena/cli/vpn_command.rb +3 -1
- data/lib/kontena/machine/aws/node_destroyer.rb +1 -1
- data/lib/kontena/machine/cloud_config/cloudinit.yml +70 -0
- data/lib/kontena/machine/cloud_config/node_generator.rb +28 -0
- data/lib/kontena/machine/digital_ocean/cloudinit.yml +22 -0
- data/lib/kontena/machine/digital_ocean/node_destroyer.rb +4 -2
- data/lib/kontena/machine/random_name.rb +3 -3
- data/lib/kontena/scripts/completer +7 -3
- data/spec/fixtures/docker-compose.yml +8 -0
- data/spec/fixtures/kontena.yml +17 -0
- data/spec/fixtures/mysql.yml +3 -0
- data/spec/fixtures/wordpress-scaled.yml +3 -0
- data/spec/fixtures/wordpress.yml +2 -0
- data/spec/kontena/cli/app/common_spec.rb +42 -0
- data/spec/kontena/cli/app/deploy_command_spec.rb +4 -31
- data/spec/kontena/cli/app/scale_spec.rb +4 -23
- data/spec/kontena/cli/master/use_command_spec.rb +12 -3
- data/spec/kontena/cli/master/users/add_role_command_spec.rb +35 -0
- data/spec/kontena/cli/master/users/invite_command_spec.rb +35 -0
- data/spec/kontena/cli/master/users/remove_role_command_spec.rb +35 -0
- data/spec/kontena/cli/services/add_secret_command_spec.rb +61 -0
- data/spec/kontena/cli/services/link_command_spec.rb +43 -0
- data/spec/kontena/cli/services/remove_secret_command_spec.rb +48 -0
- data/spec/kontena/cli/services/restart_command_spec.rb +1 -23
- data/spec/kontena/cli/services/unlink_command_spec.rb +43 -0
- data/spec/kontena/cli/version_command_spec.rb +17 -0
- data/spec/spec_helper.rb +6 -1
- data/spec/support/client_helpers.rb +31 -0
- data/spec/support/fixtures_helpers.rb +7 -0
- metadata +67 -6
- data/lib/kontena/cli/deploy_command.rb +0 -164
- data/lib/kontena/cli/invite_command.rb +0 -13
- data/spec/kontena/cli/deploy_command_spec.rb +0 -239
@@ -1,8 +1,11 @@
|
|
1
1
|
module Kontena::Cli::Registry
|
2
2
|
class DeleteCommand < Clamp::Command
|
3
3
|
include Kontena::Cli::Common
|
4
|
+
include Kontena::Cli::GridOptions
|
4
5
|
|
5
6
|
def execute
|
7
|
+
puts "DEPRECATION WARNING: Support for 'kontena registry delete' will be dropped. Use 'kontena registry remove' instead.".colorize(:red)
|
8
|
+
|
6
9
|
require_api_url
|
7
10
|
token = require_token
|
8
11
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Kontena::Cli::Registry
|
2
|
+
class RemoveCommand < Clamp::Command
|
3
|
+
include Kontena::Cli::Common
|
4
|
+
|
5
|
+
def execute
|
6
|
+
require_api_url
|
7
|
+
token = require_token
|
8
|
+
|
9
|
+
registry = client(token).get("services/#{current_grid}/registry") rescue nil
|
10
|
+
abort("Docker Registry service does not exist") if registry.nil?
|
11
|
+
|
12
|
+
client(token).delete("services/#{current_grid}/registry")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require_relative 'registry/create_command'
|
2
2
|
require_relative 'registry/delete_command'
|
3
|
+
require_relative 'registry/remove_command'
|
3
4
|
|
4
5
|
class Kontena::Cli::RegistryCommand < Clamp::Command
|
5
6
|
|
6
7
|
subcommand "create", "Create Docker image registry service", Kontena::Cli::Registry::CreateCommand
|
7
|
-
subcommand "
|
8
|
+
subcommand ["remove","rm"], "Remove Docker image registry service", Kontena::Cli::Registry::RemoveCommand
|
9
|
+
subcommand "delete", "[DEPRECATED] Delete Docker image registry service", Kontena::Cli::Registry::DeleteCommand
|
8
10
|
|
9
11
|
def execute
|
10
12
|
end
|
@@ -8,17 +8,25 @@ require_relative 'services/restart_command'
|
|
8
8
|
require_relative 'services/create_command'
|
9
9
|
require_relative 'services/scale_command'
|
10
10
|
require_relative 'services/delete_command'
|
11
|
+
require_relative 'services/remove_command'
|
11
12
|
require_relative 'services/containers_command'
|
12
13
|
require_relative 'services/logs_command'
|
13
14
|
require_relative 'services/stats_command'
|
15
|
+
require_relative 'services/monitor_command'
|
16
|
+
|
14
17
|
require_relative 'services/envs_command'
|
15
18
|
require_relative 'services/add_env_command'
|
16
19
|
require_relative 'services/remove_env_command'
|
17
|
-
|
20
|
+
|
21
|
+
require_relative 'services/add_secret_command'
|
22
|
+
require_relative 'services/remove_secret_command'
|
23
|
+
|
24
|
+
require_relative 'services/link_command'
|
25
|
+
require_relative 'services/unlink_command'
|
18
26
|
|
19
27
|
class Kontena::Cli::ServiceCommand < Clamp::Command
|
20
28
|
|
21
|
-
subcommand "list", "List services", Kontena::Cli::Services::ListCommand
|
29
|
+
subcommand ["list","ls"], "List services", Kontena::Cli::Services::ListCommand
|
22
30
|
subcommand "create", "Create a new service", Kontena::Cli::Services::CreateCommand
|
23
31
|
subcommand "show", "Show service details", Kontena::Cli::Services::ShowCommand
|
24
32
|
subcommand "update", "Update service configuration", Kontena::Cli::Services::UpdateCommand
|
@@ -27,14 +35,22 @@ class Kontena::Cli::ServiceCommand < Clamp::Command
|
|
27
35
|
subcommand "start", "Start service", Kontena::Cli::Services::StartCommand
|
28
36
|
subcommand "restart", "Restart service", Kontena::Cli::Services::RestartCommand
|
29
37
|
subcommand "scale", "Scale service", Kontena::Cli::Services::ScaleCommand
|
30
|
-
subcommand "
|
38
|
+
subcommand ["remove", "rm"], "Remove service", Kontena::Cli::Services::RemoveCommand
|
39
|
+
subcommand "delete", "[DEPRECATED] Delete service", Kontena::Cli::Services::DeleteCommand
|
31
40
|
subcommand "containers", "List service containers", Kontena::Cli::Services::ContainersCommand
|
32
41
|
subcommand "logs", "Show service logs", Kontena::Cli::Services::LogsCommand
|
33
42
|
subcommand "stats", "Show service statistics", Kontena::Cli::Services::StatsCommand
|
43
|
+
subcommand "monitor", "Monitor", Kontena::Cli::Services::MonitorCommand
|
44
|
+
|
34
45
|
subcommand "envs", "Show environment variables", Kontena::Cli::Services::EnvsCommand
|
35
46
|
subcommand "add-env", "Add environment variable", Kontena::Cli::Services::AddEnvCommand
|
36
47
|
subcommand "remove-env", "Remove environment variable", Kontena::Cli::Services::RemoveEnvCommand
|
37
|
-
|
48
|
+
|
49
|
+
subcommand "add-secret", "Add secret from Vault", Kontena::Cli::Services::AddSecretCommand
|
50
|
+
subcommand "remove-secret", "Remove secret", Kontena::Cli::Services::RemoveSecretCommand
|
51
|
+
|
52
|
+
subcommand "link", "Link service to another service", Kontena::Cli::Services::LinkCommand
|
53
|
+
subcommand "unlink", "Unlink service from another service", Kontena::Cli::Services::UnlinkCommand
|
38
54
|
|
39
55
|
def execute
|
40
56
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative 'services_helper'
|
2
|
+
|
3
|
+
module Kontena::Cli::Services
|
4
|
+
class AddSecretCommand < Clamp::Command
|
5
|
+
include Kontena::Cli::Common
|
6
|
+
include Kontena::Cli::GridOptions
|
7
|
+
include ServicesHelper
|
8
|
+
|
9
|
+
parameter "NAME", "Service name"
|
10
|
+
parameter "SECRET", "Secret to be added from Vault (format: secret:name:type)"
|
11
|
+
|
12
|
+
def execute
|
13
|
+
require_api_url
|
14
|
+
token = require_token
|
15
|
+
result = client(token).get("services/#{parse_service_id(name)}")
|
16
|
+
secrets = result['secrets']
|
17
|
+
secrets << parse_secrets([secret])[0]
|
18
|
+
data = {
|
19
|
+
secrets: secrets
|
20
|
+
}
|
21
|
+
client(token).put("services/#{parse_service_id(name)}", data)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -3,6 +3,7 @@ require_relative 'services_helper'
|
|
3
3
|
module Kontena::Cli::Services
|
4
4
|
class CreateCommand < Clamp::Command
|
5
5
|
include Kontena::Cli::Common
|
6
|
+
include Kontena::Cli::GridOptions
|
6
7
|
include ServicesHelper
|
7
8
|
|
8
9
|
parameter "NAME", "Service name"
|
@@ -27,11 +28,11 @@ module Kontena::Cli::Services
|
|
27
28
|
option "--net", "NET", "Network mode"
|
28
29
|
option "--log-driver", "LOG_DRIVER", "Set logging driver"
|
29
30
|
option "--log-opt", "LOG_OPT", "Add logging options", multivalued: true
|
30
|
-
option "--deploy-strategy", "STRATEGY", "Deploy strategy to use (ha, random)"
|
31
|
+
option "--deploy-strategy", "STRATEGY", "Deploy strategy to use (ha, daemon, random)"
|
31
32
|
option "--deploy-wait-for-port", "PORT", "Wait for port to respond when deploying"
|
32
33
|
option "--deploy-min-health", "FLOAT", "The minimum percentage (0.0 - 1.0) of healthy instances that do not sacrifice overall service availability while deploying"
|
33
34
|
option "--pid", "PID", "Pid namespace to use"
|
34
|
-
option "--secret", "SECRET", "Import secret from Vault", multivalued: true
|
35
|
+
option "--secret", "SECRET", "Import secret from Vault (format: <secret>:<name>:<env>)", multivalued: true
|
35
36
|
|
36
37
|
def execute
|
37
38
|
require_api_url
|
@@ -3,11 +3,13 @@ require_relative 'services_helper'
|
|
3
3
|
module Kontena::Cli::Services
|
4
4
|
class DeleteCommand < Clamp::Command
|
5
5
|
include Kontena::Cli::Common
|
6
|
+
include Kontena::Cli::GridOptions
|
6
7
|
include ServicesHelper
|
7
8
|
|
8
9
|
parameter "NAME", "Service name"
|
9
10
|
|
10
11
|
def execute
|
12
|
+
puts "DEPRECATION WARNING: Support for 'kontena service delete' will be dropped. Use 'kontena service remove' instead.".colorize(:red)
|
11
13
|
require_api_url
|
12
14
|
token = require_token
|
13
15
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative '../grid_options'
|
2
|
+
require_relative 'services_helper'
|
3
|
+
|
4
|
+
module Kontena::Cli::Services
|
5
|
+
class LinkCommand < Clamp::Command
|
6
|
+
include Kontena::Cli::Common
|
7
|
+
include Kontena::Cli::GridOptions
|
8
|
+
include ServicesHelper
|
9
|
+
|
10
|
+
parameter "NAME", "Service name"
|
11
|
+
parameter "TARGET", "Link target service name"
|
12
|
+
|
13
|
+
def execute
|
14
|
+
require_api_url
|
15
|
+
token = require_token
|
16
|
+
|
17
|
+
service = client(token).get("services/#{parse_service_id(name)}")
|
18
|
+
existing_targets = service['links'].map{|l| l['grid_service_id'].split('/')[1]}
|
19
|
+
abort("Service is already linked to #{target.to_s}") if existing_targets.include?(target.to_s)
|
20
|
+
links = service['links'].map{|l| {name: l['grid_service_id'].split('/')[1], alias: l['alias']} }
|
21
|
+
links << {name: target.to_s, alias: target.to_s}
|
22
|
+
data = {links: links}
|
23
|
+
update_service(token, name, data)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -3,6 +3,7 @@ require_relative 'services_helper'
|
|
3
3
|
module Kontena::Cli::Services
|
4
4
|
class ListCommand < Clamp::Command
|
5
5
|
include Kontena::Cli::Common
|
6
|
+
include Kontena::Cli::GridOptions
|
6
7
|
include ServicesHelper
|
7
8
|
|
8
9
|
def execute
|
@@ -10,22 +11,24 @@ module Kontena::Cli::Services
|
|
10
11
|
token = require_token
|
11
12
|
|
12
13
|
grids = client(token).get("grids/#{current_grid}/services")
|
13
|
-
titles = ['NAME', '
|
14
|
-
puts "%-
|
14
|
+
titles = ['NAME', 'INSTANCES', 'STATEFUL', 'STATE', 'EXPOSED PORTS']
|
15
|
+
puts "%-60.60s %-10s %-8s %-10s %-50s" % titles
|
15
16
|
grids['services'].each do |service|
|
16
17
|
stateful = service['stateful'] ? 'yes' : 'no'
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
running = service['instances']['running']
|
19
|
+
desired = service['container_count']
|
20
|
+
instances = "#{running} / #{desired}"
|
21
|
+
ports = service['ports'].map{|p|
|
22
|
+
"#{p['ip']}:#{p['node_port']}->#{p['container_port']}/#{p['protocol']}"
|
23
|
+
}.join(", ")
|
21
24
|
vars = [
|
22
25
|
service['name'],
|
23
|
-
|
24
|
-
service['container_count'],
|
26
|
+
instances,
|
25
27
|
stateful,
|
26
|
-
service['state']
|
28
|
+
service['state'],
|
29
|
+
ports
|
27
30
|
]
|
28
|
-
puts "%-
|
31
|
+
puts "%-60.60s %-10.10s %-8s %-10s %-50s" % vars
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
@@ -3,12 +3,15 @@ require_relative 'services_helper'
|
|
3
3
|
module Kontena::Cli::Services
|
4
4
|
class LogsCommand < Clamp::Command
|
5
5
|
include Kontena::Cli::Common
|
6
|
+
include Kontena::Cli::GridOptions
|
6
7
|
include ServicesHelper
|
7
8
|
|
8
9
|
parameter "NAME", "Service name"
|
9
|
-
option ["-
|
10
|
+
option ["-t", "--tail"], :flag, "Tail (follow) logs", default: false
|
11
|
+
option ["-l", "--lines"], "LINES", "How many lines to show", default: '100'
|
12
|
+
option "--since", "SINCE", "Show logs since given timestamp"
|
10
13
|
option ["-s", "--search"], "SEARCH", "Search from logs"
|
11
|
-
option ["-
|
14
|
+
option ["-i", "--instance"], "INSTANCE", "Show only given instance specific logs"
|
12
15
|
|
13
16
|
def execute
|
14
17
|
require_api_url
|
@@ -16,17 +19,22 @@ module Kontena::Cli::Services
|
|
16
19
|
last_id = nil
|
17
20
|
loop do
|
18
21
|
query_params = []
|
22
|
+
query_params << "limit=#{lines}"
|
19
23
|
query_params << "from=#{last_id}" unless last_id.nil?
|
24
|
+
query_params << "since=#{since}" if !since.nil? && last_id.nil?
|
20
25
|
query_params << "search=#{search}" if search
|
21
|
-
query_params << "container=#{
|
26
|
+
query_params << "container=#{name}-#{instance}" if instance
|
22
27
|
|
23
28
|
result = client(token).get("services/#{current_grid}/#{name}/container_logs?#{query_params.join('&')}")
|
24
29
|
result['logs'].each do |log|
|
25
30
|
color = color_for_container(log['name'])
|
26
|
-
|
31
|
+
instance_number = log['name'].match(/^.+-(\d+)$/)[1]
|
32
|
+
name = instance_number.nil? ? log['name'] : instance_number
|
33
|
+
prefix = "#{log['created_at']} [#{name}]:".colorize(color)
|
34
|
+
puts "#{prefix} #{log['data']}"
|
27
35
|
last_id = log['id']
|
28
36
|
end
|
29
|
-
break unless
|
37
|
+
break unless tail?
|
30
38
|
sleep(2)
|
31
39
|
end
|
32
40
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'services_helper'
|
2
|
+
|
3
|
+
module Kontena::Cli::Services
|
4
|
+
class RemoveCommand < Clamp::Command
|
5
|
+
include Kontena::Cli::Common
|
6
|
+
include ServicesHelper
|
7
|
+
|
8
|
+
parameter "NAME", "Service name"
|
9
|
+
|
10
|
+
def execute
|
11
|
+
require_api_url
|
12
|
+
token = require_token
|
13
|
+
|
14
|
+
result = client(token).delete("services/#{parse_service_id(name)}")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require_relative 'services_helper'
|
2
|
+
|
3
|
+
module Kontena::Cli::Services
|
4
|
+
class RemoveSecretCommand < Clamp::Command
|
5
|
+
include Kontena::Cli::Common
|
6
|
+
include Kontena::Cli::GridOptions
|
7
|
+
include ServicesHelper
|
8
|
+
|
9
|
+
parameter "NAME", "Service name"
|
10
|
+
parameter "SECRET", "Secret to be removed (format: secret:name:type)"
|
11
|
+
|
12
|
+
def execute
|
13
|
+
require_api_url
|
14
|
+
token = require_token
|
15
|
+
result = client(token).get("services/#{parse_service_id(name)}")
|
16
|
+
secrets = result['secrets']
|
17
|
+
remove_secret = parse_secrets([secret])[0]
|
18
|
+
if secrets.delete_if{|s| s['name'] == remove_secret[:name] && s['secret'] == remove_secret[:secret]}
|
19
|
+
data = {
|
20
|
+
secrets: secrets
|
21
|
+
}
|
22
|
+
client(token).put("services/#{parse_service_id(name)}", data)
|
23
|
+
else
|
24
|
+
abort("Secret not found")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -3,13 +3,14 @@ require_relative 'services_helper'
|
|
3
3
|
module Kontena::Cli::Services
|
4
4
|
class ScaleCommand < Clamp::Command
|
5
5
|
include Kontena::Cli::Common
|
6
|
+
include Kontena::Cli::GridOptions
|
6
7
|
include ServicesHelper
|
7
8
|
|
8
9
|
parameter "NAME", "Service name"
|
9
10
|
parameter "INSTANCES", "Scales service to given number of instances"
|
10
11
|
|
11
12
|
def execute
|
12
|
-
token = require_token
|
13
|
+
token = require_token
|
13
14
|
scale_service(token, name, instances)
|
14
15
|
end
|
15
16
|
end
|
@@ -3,21 +3,22 @@ require_relative 'services_helper'
|
|
3
3
|
module Kontena::Cli::Services
|
4
4
|
class StatsCommand < Clamp::Command
|
5
5
|
include Kontena::Cli::Common
|
6
|
+
include Kontena::Cli::GridOptions
|
6
7
|
include ServicesHelper
|
7
8
|
|
8
9
|
parameter "NAME", "Service name"
|
9
|
-
option ["-
|
10
|
+
option ["-t", "--tail"], :flag, "Tail (follow) stats in real time", default: false
|
10
11
|
|
11
12
|
def execute
|
12
13
|
require_api_url
|
13
14
|
token = require_token
|
14
|
-
if
|
15
|
+
if tail?
|
15
16
|
system('clear')
|
16
17
|
render_header
|
17
18
|
end
|
18
19
|
loop do
|
19
|
-
fetch_stats(token, name,
|
20
|
-
break unless
|
20
|
+
fetch_stats(token, name, tail?)
|
21
|
+
break unless tail?
|
21
22
|
sleep(2)
|
22
23
|
end
|
23
24
|
end
|