kontena-cli 0.11.7 → 0.12.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 +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
|