kontena-cli 0.12.3 → 0.13.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 +6 -4
- data/lib/kontena/cli/apps/common.rb +21 -7
- data/lib/kontena/cli/apps/deploy_command.rb +11 -4
- data/lib/kontena/cli/apps/docker_helper.rb +12 -0
- data/lib/kontena/cli/apps/logs_command.rb +0 -2
- data/lib/kontena/cli/apps/remove_command.rb +23 -14
- data/lib/kontena/cli/bytes_helper.rb +40 -0
- data/lib/kontena/cli/container_command.rb +0 -1
- data/lib/kontena/cli/grid_command.rb +4 -6
- data/lib/kontena/cli/grids/logs_command.rb +0 -2
- data/lib/kontena/cli/grids/trusted_subnet_command.rb +12 -0
- data/lib/kontena/cli/grids/trusted_subnets/add_command.rb +16 -0
- data/lib/kontena/cli/grids/trusted_subnets/list_command.rb +17 -0
- data/lib/kontena/cli/grids/trusted_subnets/remove_command.rb +20 -0
- data/lib/kontena/cli/grids/user_command.rb +12 -0
- data/lib/kontena/cli/grids/{add_user_command.rb → users/add_command.rb} +4 -4
- data/lib/kontena/cli/grids/{list_users_command.rb → users/list_command.rb} +4 -4
- data/lib/kontena/cli/grids/{remove_user_command.rb → users/remove_command.rb} +4 -4
- data/lib/kontena/cli/login_command.rb +4 -3
- data/lib/kontena/cli/master/aws/create_command.rb +3 -1
- data/lib/kontena/cli/master/current_command.rb +17 -0
- data/lib/kontena/cli/master/digital_ocean/create_command.rb +5 -3
- data/lib/kontena/cli/master/users/role_command.rb +10 -0
- data/lib/kontena/cli/master/users/{add_role_command.rb → roles/add_command.rb} +4 -4
- data/lib/kontena/cli/master/users/{remove_role_command.rb → roles/remove_command.rb} +4 -4
- data/lib/kontena/cli/master/users_command.rb +2 -4
- data/lib/kontena/cli/master_command.rb +2 -0
- data/lib/kontena/cli/node_command.rb +2 -4
- data/lib/kontena/cli/nodes/label_command.rb +14 -0
- data/lib/kontena/cli/nodes/{add_label_command.rb → labels/add_command.rb} +2 -2
- data/lib/kontena/cli/nodes/{remove_label_command.rb → labels/remove_command.rb} +2 -2
- data/lib/kontena/cli/nodes/list_command.rb +2 -1
- data/lib/kontena/cli/nodes/show_command.rb +19 -2
- data/lib/kontena/cli/registry_command.rb +0 -1
- data/lib/kontena/cli/service_command.rb +4 -11
- data/lib/kontena/cli/services/create_command.rb +10 -2
- data/lib/kontena/cli/services/env_command.rb +12 -0
- data/lib/kontena/cli/services/{add_env_command.rb → envs/add_command.rb} +4 -4
- data/lib/kontena/cli/services/{envs_command.rb → envs/list_command.rb} +5 -5
- data/lib/kontena/cli/services/{remove_env_command.rb → envs/remove_command.rb} +4 -4
- data/lib/kontena/cli/services/list_command.rb +3 -2
- data/lib/kontena/cli/services/logs_command.rb +0 -2
- data/lib/kontena/cli/services/secret_command.rb +10 -0
- data/lib/kontena/cli/services/{add_secret_command.rb → secrets/link_command.rb} +4 -4
- data/lib/kontena/cli/services/{remove_secret_command.rb → secrets/unlink_command.rb} +4 -4
- data/lib/kontena/cli/services/services_helper.rb +35 -8
- data/lib/kontena/cli/services/stats_command.rb +6 -1
- data/lib/kontena/cli/services/update_command.rb +4 -0
- data/lib/kontena/cli/user/forgot_password_command.rb +16 -0
- data/lib/kontena/cli/user/reset_password_command.rb +23 -0
- data/lib/kontena/cli/user/verify_command.rb +22 -0
- data/lib/kontena/cli/user_command.rb +13 -0
- data/lib/kontena/cli/vault/list_command.rb +1 -1
- data/lib/kontena/cli/vpn_command.rb +0 -1
- data/lib/kontena/cli/whoami_command.rb +17 -3
- data/lib/kontena/machine/aws/cloudinit_master.yml +13 -4
- data/lib/kontena/machine/aws/common.rb +8 -13
- data/lib/kontena/machine/aws/master_provisioner.rb +6 -5
- data/lib/kontena/machine/azure/cloudinit_master.yml +0 -2
- data/lib/kontena/machine/digital_ocean.rb +1 -0
- data/lib/kontena/machine/digital_ocean/cloudinit.yml +0 -22
- data/lib/kontena/machine/digital_ocean/cloudinit_master.yml +14 -4
- data/lib/kontena/machine/digital_ocean/master_provisioner.rb +12 -9
- data/lib/kontena/machine/vagrant/cloudinit.yml +2 -0
- data/lib/kontena/scripts/completer +4 -4
- data/spec/kontena/cli/app/common_spec.rb +55 -7
- data/spec/kontena/cli/app/docker_helper_spec.rb +74 -0
- data/spec/kontena/cli/grids/trusted_subnets/add_command_spec.rb +38 -0
- data/spec/kontena/cli/grids/trusted_subnets/list_command_spec.rb +31 -0
- data/spec/kontena/cli/grids/trusted_subnets/remove_command_spec.rb +38 -0
- data/spec/kontena/cli/master/current_command_spec.rb +57 -0
- data/spec/kontena/cli/master/users/{add_role_command_spec.rb → roles/add_command_spec.rb} +3 -3
- data/spec/kontena/cli/master/users/{remove_role_command_spec.rb → roles/remove_command_spec.rb} +3 -3
- data/spec/kontena/cli/services/{add_secret_command_spec.rb → secrets/link_command_spec.rb} +4 -3
- data/spec/kontena/cli/services/{remove_secret_command_spec.rb → secrets/unlink_command_spec.rb} +4 -3
- data/spec/kontena/cli/services/services_helper_spec.rb +44 -0
- metadata +45 -26
- data/lib/kontena/cli/forgot_password_command.rb +0 -13
- data/lib/kontena/cli/reset_password_command.rb +0 -19
- data/lib/kontena/cli/users_command.rb +0 -15
- data/lib/kontena/cli/verify_account_command.rb +0 -13
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require_relative 'common'
|
|
1
|
+
require_relative '../common'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Grids
|
|
4
|
-
class
|
|
3
|
+
module Kontena::Cli::Grids::Users
|
|
4
|
+
class RemoveCommand < Clamp::Command
|
|
5
5
|
include Kontena::Cli::Common
|
|
6
6
|
include Kontena::Cli::GridOptions
|
|
7
|
-
include Common
|
|
7
|
+
include Kontena::Cli::Grids::Common
|
|
8
8
|
|
|
9
9
|
parameter "EMAIL", "Email address"
|
|
10
10
|
|
|
@@ -24,7 +24,7 @@ class Kontena::Cli::LoginCommand < Clamp::Command
|
|
|
24
24
|
response = do_login(email, password)
|
|
25
25
|
|
|
26
26
|
if response
|
|
27
|
-
update_master_info(name, url, response['access_token'])
|
|
27
|
+
update_master_info(name, url, response['access_token'], email)
|
|
28
28
|
display_logo
|
|
29
29
|
puts ''
|
|
30
30
|
puts "Logged in as #{response['user']['name'].green}"
|
|
@@ -97,12 +97,13 @@ class Kontena::Cli::LoginCommand < Clamp::Command
|
|
|
97
97
|
# @param [String] url
|
|
98
98
|
# @param [String] token
|
|
99
99
|
#
|
|
100
|
-
def update_master_info(name, url, token)
|
|
100
|
+
def update_master_info(name, url, token, email)
|
|
101
101
|
name = name || 'default'
|
|
102
102
|
master = {
|
|
103
103
|
'name' => name,
|
|
104
104
|
'url' => url,
|
|
105
|
-
'token' => token
|
|
105
|
+
'token' => token,
|
|
106
|
+
'email' => email
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
self.add_master(name, master)
|
|
@@ -16,6 +16,7 @@ module Kontena::Cli::Master::Aws
|
|
|
16
16
|
option "--storage", "STORAGE", "Storage size (GiB)", default: '30'
|
|
17
17
|
option "--vault-secret", "VAULT_SECRET", "Secret key for Vault (default: generate random secret)"
|
|
18
18
|
option "--vault-iv", "VAULT_IV", "Initialization vector for Vault (default: generate random iv)"
|
|
19
|
+
option "--mongodb-uri", "URI", "External MongoDB uri (optional)"
|
|
19
20
|
option "--version", "VERSION", "Define installed Kontena version", default: 'latest'
|
|
20
21
|
option "--auth-provider-url", "AUTH_PROVIDER_URL", "Define authentication provider url (optional)"
|
|
21
22
|
|
|
@@ -34,7 +35,8 @@ module Kontena::Cli::Master::Aws
|
|
|
34
35
|
key_pair: key_pair,
|
|
35
36
|
auth_server: auth_provider_url,
|
|
36
37
|
vault_secret: vault_secret || SecureRandom.hex(24),
|
|
37
|
-
vault_iv: vault_iv || SecureRandom.hex(24)
|
|
38
|
+
vault_iv: vault_iv || SecureRandom.hex(24),
|
|
39
|
+
mongodb_uri: mongodb_uri
|
|
38
40
|
)
|
|
39
41
|
end
|
|
40
42
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Kontena::Cli::Master
|
|
2
|
+
class CurrentCommand < Clamp::Command
|
|
3
|
+
include Kontena::Cli::Common
|
|
4
|
+
|
|
5
|
+
option ["--name"], :flag, "Show name only", default: false
|
|
6
|
+
|
|
7
|
+
def execute
|
|
8
|
+
master = current_master
|
|
9
|
+
|
|
10
|
+
if name?
|
|
11
|
+
puts master['name']
|
|
12
|
+
else
|
|
13
|
+
puts "#{master['name']} #{master['url']}"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -9,8 +9,9 @@ module Kontena::Cli::Master::DigitalOcean
|
|
|
9
9
|
option "--ssl-cert", "SSL CERT", "SSL certificate file"
|
|
10
10
|
option "--size", "SIZE", "Droplet size", default: '1gb'
|
|
11
11
|
option "--region", "REGION", "Region", default: 'ams2'
|
|
12
|
-
option "--vault-secret", "VAULT_SECRET", "Secret key for Vault"
|
|
13
|
-
option "--vault-iv", "VAULT_IV", "Initialization vector for Vault"
|
|
12
|
+
option "--vault-secret", "VAULT_SECRET", "Secret key for Vault (optional)"
|
|
13
|
+
option "--vault-iv", "VAULT_IV", "Initialization vector for Vault (optional)"
|
|
14
|
+
option "--mongodb-uri", "URI", "External MongoDB uri (optional)"
|
|
14
15
|
option "--version", "VERSION", "Define installed Kontena version", default: 'latest'
|
|
15
16
|
option "--auth-provider-url", "AUTH_PROVIDER_URL", "Define authentication provider url"
|
|
16
17
|
|
|
@@ -28,7 +29,8 @@ module Kontena::Cli::Master::DigitalOcean
|
|
|
28
29
|
version: version,
|
|
29
30
|
auth_server: auth_provider_url,
|
|
30
31
|
vault_secret: vault_secret || SecureRandom.hex(24),
|
|
31
|
-
vault_iv: vault_iv || SecureRandom.hex(24)
|
|
32
|
+
vault_iv: vault_iv || SecureRandom.hex(24),
|
|
33
|
+
mongodb_uri: mongodb_uri
|
|
32
34
|
)
|
|
33
35
|
end
|
|
34
36
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module Kontena::Cli::Master::Users
|
|
2
|
+
|
|
3
|
+
require_relative 'roles/add_command'
|
|
4
|
+
require_relative 'roles/remove_command'
|
|
5
|
+
|
|
6
|
+
class RoleCommand < Clamp::Command
|
|
7
|
+
subcommand "add", "Add role to user", Roles::AddCommand
|
|
8
|
+
subcommand ["remove", "rm"], "Remove role from user", Roles::RemoveCommand
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require_relative '
|
|
1
|
+
require_relative '../../../common'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Master::Users
|
|
4
|
-
class
|
|
3
|
+
module Kontena::Cli::Master::Users::Roles
|
|
4
|
+
class AddCommand < Clamp::Command
|
|
5
5
|
include Kontena::Cli::Common
|
|
6
6
|
|
|
7
7
|
parameter "ROLE", "Role name"
|
|
@@ -23,4 +23,4 @@ module Kontena::Cli::Master::Users
|
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
|
-
end
|
|
26
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require_relative '
|
|
1
|
+
require_relative '../../../common'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Master::Users
|
|
4
|
-
class
|
|
3
|
+
module Kontena::Cli::Master::Users::Roles
|
|
4
|
+
class RemoveCommand < Clamp::Command
|
|
5
5
|
include Kontena::Cli::Common
|
|
6
6
|
|
|
7
7
|
parameter "ROLE", "Role name"
|
|
@@ -23,4 +23,4 @@ module Kontena::Cli::Master::Users
|
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
|
-
end
|
|
26
|
+
end
|
|
@@ -3,14 +3,12 @@ module Kontena::Cli::Master
|
|
|
3
3
|
require_relative 'users/invite_command'
|
|
4
4
|
require_relative 'users/remove_command'
|
|
5
5
|
require_relative 'users/list_command'
|
|
6
|
-
require_relative 'users/
|
|
7
|
-
require_relative 'users/remove_role_command'
|
|
6
|
+
require_relative 'users/role_command'
|
|
8
7
|
|
|
9
8
|
class UsersCommand < Clamp::Command
|
|
10
9
|
subcommand "invite", "Invite user to Kontena Master", Users::InviteCommand
|
|
11
10
|
subcommand ["remove", "rm"], "Remove user from Kontena Master", Users::RemoveCommand
|
|
12
11
|
subcommand ["list", "ls"], "List users", Users::ListCommand
|
|
13
|
-
subcommand "
|
|
14
|
-
subcommand "remove-role", "Remove role from user", Users::RemoveRoleCommand
|
|
12
|
+
subcommand "role", "User role specific commands", Users::RoleCommand
|
|
15
13
|
end
|
|
16
14
|
end
|
|
@@ -5,6 +5,7 @@ require_relative 'master/azure_command'
|
|
|
5
5
|
require_relative 'master/use_command'
|
|
6
6
|
require_relative 'master/list_command'
|
|
7
7
|
require_relative 'master/users_command'
|
|
8
|
+
require_relative 'master/current_command'
|
|
8
9
|
|
|
9
10
|
class Kontena::Cli::MasterCommand < Clamp::Command
|
|
10
11
|
|
|
@@ -15,6 +16,7 @@ class Kontena::Cli::MasterCommand < Clamp::Command
|
|
|
15
16
|
subcommand ["list", "ls"], "List masters where client has logged in", Kontena::Cli::Master::ListCommand
|
|
16
17
|
subcommand "use", "Switch to use selected master", Kontena::Cli::Master::UseCommand
|
|
17
18
|
subcommand "users", "Users specific commands", Kontena::Cli::Master::UsersCommand
|
|
19
|
+
subcommand "current", "Show current master details", Kontena::Cli::Master::CurrentCommand
|
|
18
20
|
def execute
|
|
19
21
|
end
|
|
20
22
|
end
|
|
@@ -4,8 +4,7 @@ require_relative 'nodes/show_command'
|
|
|
4
4
|
require_relative 'nodes/update_command'
|
|
5
5
|
require_relative 'nodes/ssh_command'
|
|
6
6
|
|
|
7
|
-
require_relative 'nodes/
|
|
8
|
-
require_relative 'nodes/remove_label_command'
|
|
7
|
+
require_relative 'nodes/label_command'
|
|
9
8
|
|
|
10
9
|
require_relative 'nodes/vagrant_command'
|
|
11
10
|
require_relative 'nodes/digital_ocean_command'
|
|
@@ -20,8 +19,7 @@ class Kontena::Cli::NodeCommand < Clamp::Command
|
|
|
20
19
|
subcommand "update", "Update node", Kontena::Cli::Nodes::UpdateCommand
|
|
21
20
|
subcommand ["remove","rm"], "Remove node", Kontena::Cli::Nodes::RemoveCommand
|
|
22
21
|
|
|
23
|
-
subcommand "
|
|
24
|
-
subcommand "remove-label", "Remove label from node", Kontena::Cli::Nodes::RemoveLabelCommand
|
|
22
|
+
subcommand "label", "Node label specific commands", Kontena::Cli::Nodes::LabelCommand
|
|
25
23
|
|
|
26
24
|
subcommand "vagrant", "Vagrant specific commands", Kontena::Cli::Nodes::VagrantCommand
|
|
27
25
|
subcommand "digitalocean", "DigitalOcean specific commands", Kontena::Cli::Nodes::DigitalOceanCommand
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Kontena::Cli::Nodes
|
|
2
|
+
|
|
3
|
+
require_relative 'labels/add_command'
|
|
4
|
+
require_relative 'labels/remove_command'
|
|
5
|
+
|
|
6
|
+
class LabelCommand < Clamp::Command
|
|
7
|
+
|
|
8
|
+
subcommand "add", "Add label to node", Labels::AddCommand
|
|
9
|
+
subcommand ["remove", "rm"], "Remove label from node", Labels::RemoveCommand
|
|
10
|
+
|
|
11
|
+
def execute
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -32,7 +32,8 @@ module Kontena::Cli::Nodes
|
|
|
32
32
|
else
|
|
33
33
|
nodes = client(token).get("grids/#{current_grid}/nodes")
|
|
34
34
|
puts "%-70s %-10s %-40s" % ['Name', 'Status', 'Labels']
|
|
35
|
-
nodes['nodes'].
|
|
35
|
+
nodes = nodes['nodes'].sort_by{|n| n['node_number'] }
|
|
36
|
+
nodes.each do |node|
|
|
36
37
|
if node['connected']
|
|
37
38
|
status = 'online'
|
|
38
39
|
else
|
|
@@ -2,6 +2,7 @@ module Kontena::Cli::Nodes
|
|
|
2
2
|
class ShowCommand < Clamp::Command
|
|
3
3
|
include Kontena::Cli::Common
|
|
4
4
|
include Kontena::Cli::GridOptions
|
|
5
|
+
include Kontena::Cli::BytesHelper
|
|
5
6
|
|
|
6
7
|
parameter "NODE_ID", "Node id"
|
|
7
8
|
|
|
@@ -22,12 +23,28 @@ module Kontena::Cli::Nodes
|
|
|
22
23
|
puts " os: #{node['os']}"
|
|
23
24
|
puts " driver: #{node['driver']}"
|
|
24
25
|
puts " kernel: #{node['kernel_version']}"
|
|
25
|
-
puts " cpus: #{node['cpus']}"
|
|
26
|
-
puts " memory: #{node['mem_total'] / 1024 / 1024}M"
|
|
27
26
|
puts " labels:"
|
|
28
27
|
if node['labels']
|
|
29
28
|
node['labels'].each{|l| puts " - #{l}"}
|
|
30
29
|
end
|
|
30
|
+
puts " stats:"
|
|
31
|
+
puts " cpus: #{node['cpus']}"
|
|
32
|
+
loads = node.dig('resource_usage', 'load')
|
|
33
|
+
if loads
|
|
34
|
+
puts " load: #{loads['1m'].round(2)} #{loads['5m'].round(2)} #{loads['15m'].round(2)}"
|
|
35
|
+
end
|
|
36
|
+
mem = node.dig('resource_usage', 'memory')
|
|
37
|
+
if mem
|
|
38
|
+
mem_used = mem['used'] - (mem['cached'] + mem['buffers'])
|
|
39
|
+
puts " memory: #{to_gigabytes(mem_used, 2)} of #{to_gigabytes(mem['total'], 2)} GB"
|
|
40
|
+
end
|
|
41
|
+
if node['resource_usage']['filesystem']
|
|
42
|
+
puts " filesystem:"
|
|
43
|
+
node['resource_usage']['filesystem'].each do |filesystem|
|
|
44
|
+
puts " - #{filesystem['name']}: #{to_gigabytes(filesystem['used'], 2)} of #{to_gigabytes(filesystem['total'], 2)} GB"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
31
47
|
end
|
|
48
|
+
|
|
32
49
|
end
|
|
33
50
|
end
|
|
@@ -6,7 +6,6 @@ class Kontena::Cli::RegistryCommand < Clamp::Command
|
|
|
6
6
|
|
|
7
7
|
subcommand "create", "Create Docker image registry service", Kontena::Cli::Registry::CreateCommand
|
|
8
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
|
|
10
9
|
|
|
11
10
|
def execute
|
|
12
11
|
end
|
|
@@ -14,12 +14,8 @@ require_relative 'services/logs_command'
|
|
|
14
14
|
require_relative 'services/stats_command'
|
|
15
15
|
require_relative 'services/monitor_command'
|
|
16
16
|
|
|
17
|
-
require_relative 'services/
|
|
18
|
-
require_relative 'services/
|
|
19
|
-
require_relative 'services/remove_env_command'
|
|
20
|
-
|
|
21
|
-
require_relative 'services/add_secret_command'
|
|
22
|
-
require_relative 'services/remove_secret_command'
|
|
17
|
+
require_relative 'services/env_command'
|
|
18
|
+
require_relative 'services/secret_command'
|
|
23
19
|
|
|
24
20
|
require_relative 'services/link_command'
|
|
25
21
|
require_relative 'services/unlink_command'
|
|
@@ -42,12 +38,9 @@ class Kontena::Cli::ServiceCommand < Clamp::Command
|
|
|
42
38
|
subcommand "stats", "Show service statistics", Kontena::Cli::Services::StatsCommand
|
|
43
39
|
subcommand "monitor", "Monitor", Kontena::Cli::Services::MonitorCommand
|
|
44
40
|
|
|
45
|
-
subcommand "
|
|
46
|
-
subcommand "add-env", "Add environment variable", Kontena::Cli::Services::AddEnvCommand
|
|
47
|
-
subcommand "remove-env", "Remove environment variable", Kontena::Cli::Services::RemoveEnvCommand
|
|
41
|
+
subcommand "env", "Environment variable specific commands", Kontena::Cli::Services::EnvCommand
|
|
48
42
|
|
|
49
|
-
subcommand "
|
|
50
|
-
subcommand "remove-secret", "Remove secret", Kontena::Cli::Services::RemoveSecretCommand
|
|
43
|
+
subcommand "secret", "Secret specific commands", Kontena::Cli::Services::SecretCommand
|
|
51
44
|
|
|
52
45
|
subcommand "link", "Link service to another service", Kontena::Cli::Services::LinkCommand
|
|
53
46
|
subcommand "unlink", "Unlink service from another service", Kontena::Cli::Services::UnlinkCommand
|
|
@@ -31,6 +31,7 @@ module Kontena::Cli::Services
|
|
|
31
31
|
option "--deploy-strategy", "STRATEGY", "Deploy strategy to use (ha, daemon, random)"
|
|
32
32
|
option "--deploy-wait-for-port", "PORT", "Wait for port to respond when deploying"
|
|
33
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"
|
|
34
|
+
option "--deploy-interval", "TIME", "Auto-deploy with given interval (format: <number><unit>, where unit = min, h, d)"
|
|
34
35
|
option "--pid", "PID", "Pid namespace to use"
|
|
35
36
|
option "--secret", "SECRET", "Import secret from Vault (format: <secret>:<name>:<env>)", multivalued: true
|
|
36
37
|
|
|
@@ -73,8 +74,15 @@ module Kontena::Cli::Services
|
|
|
73
74
|
data[:log_opts] = parse_log_opts(log_opt_list)
|
|
74
75
|
data[:strategy] = deploy_strategy if deploy_strategy
|
|
75
76
|
data[:deploy_opts] = {}
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
if deploy_min_health
|
|
78
|
+
data[:deploy_opts][:min_health] = deploy_min_health.to_f
|
|
79
|
+
end
|
|
80
|
+
if deploy_wait_for_port
|
|
81
|
+
data[:deploy_opts][:wait_for_port] = deploy_wait_for_port.to_i
|
|
82
|
+
end
|
|
83
|
+
if deploy_interval
|
|
84
|
+
data[:deploy_opts][:interval] = parse_relative_time(deploy_interval)
|
|
85
|
+
end
|
|
78
86
|
data[:pid] = pid if pid
|
|
79
87
|
data
|
|
80
88
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Kontena::Cli::Services
|
|
2
|
+
|
|
3
|
+
require_relative 'envs/add_command'
|
|
4
|
+
require_relative 'envs/list_command'
|
|
5
|
+
require_relative 'envs/remove_command'
|
|
6
|
+
|
|
7
|
+
class EnvCommand < Clamp::Command
|
|
8
|
+
subcommand ["list", "ls"], "List service environment variables", Envs::ListCommand
|
|
9
|
+
subcommand "add", "Add environment variable", Envs::AddCommand
|
|
10
|
+
subcommand ["remove", "rm"], "Remove environment variable", Envs::RemoveCommand
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require_relative 'services_helper'
|
|
1
|
+
require_relative '../services_helper'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Services
|
|
4
|
-
class
|
|
3
|
+
module Kontena::Cli::Services::Envs
|
|
4
|
+
class AddCommand < Clamp::Command
|
|
5
5
|
include Kontena::Cli::Common
|
|
6
6
|
include Kontena::Cli::GridOptions
|
|
7
|
-
include ServicesHelper
|
|
7
|
+
include Kontena::Cli::Services::ServicesHelper
|
|
8
8
|
|
|
9
9
|
parameter "NAME", "Service name"
|
|
10
10
|
parameter "ENV", "Environment variable"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require_relative 'services_helper'
|
|
1
|
+
require_relative '../services_helper'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Services
|
|
4
|
-
class
|
|
3
|
+
module Kontena::Cli::Services::Envs
|
|
4
|
+
class ListCommand < Clamp::Command
|
|
5
5
|
include Kontena::Cli::Common
|
|
6
6
|
include Kontena::Cli::GridOptions
|
|
7
|
-
include ServicesHelper
|
|
7
|
+
include Kontena::Cli::Services::ServicesHelper
|
|
8
8
|
|
|
9
9
|
parameter "NAME", "Service name"
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ module Kontena::Cli::Services
|
|
|
12
12
|
require_api_url
|
|
13
13
|
token = require_token
|
|
14
14
|
service = client(token).get("services/#{parse_service_id(name)}")
|
|
15
|
-
service["env"].each do |env|
|
|
15
|
+
service["env"].sort.each do |env|
|
|
16
16
|
puts env
|
|
17
17
|
end
|
|
18
18
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require_relative 'services_helper'
|
|
1
|
+
require_relative '../services_helper'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Services
|
|
4
|
-
class
|
|
3
|
+
module Kontena::Cli::Services::Envs
|
|
4
|
+
class RemoveCommand < Clamp::Command
|
|
5
5
|
include Kontena::Cli::Common
|
|
6
6
|
include Kontena::Cli::GridOptions
|
|
7
|
-
include ServicesHelper
|
|
7
|
+
include Kontena::Cli::Services::ServicesHelper
|
|
8
8
|
|
|
9
9
|
parameter "NAME", "Service name"
|
|
10
10
|
parameter "ENV", "Environment variable name"
|
|
@@ -11,9 +11,10 @@ module Kontena::Cli::Services
|
|
|
11
11
|
token = require_token
|
|
12
12
|
|
|
13
13
|
grids = client(token).get("grids/#{current_grid}/services")
|
|
14
|
+
services = grids['services'].sort_by{|s| s['updated_at'] }.reverse
|
|
14
15
|
titles = ['NAME', 'INSTANCES', 'STATEFUL', 'STATE', 'EXPOSED PORTS']
|
|
15
|
-
puts "%-
|
|
16
|
-
|
|
16
|
+
puts "%-60s %-10s %-8s %-10s %-50s" % titles
|
|
17
|
+
services.each do |service|
|
|
17
18
|
stateful = service['stateful'] ? 'yes' : 'no'
|
|
18
19
|
running = service['instances']['running']
|
|
19
20
|
desired = service['container_count']
|
|
@@ -10,7 +10,6 @@ module Kontena::Cli::Services
|
|
|
10
10
|
option ["-t", "--tail"], :flag, "Tail (follow) logs", default: false
|
|
11
11
|
option ["-l", "--lines"], "LINES", "How many lines to show", default: '100'
|
|
12
12
|
option "--since", "SINCE", "Show logs since given timestamp"
|
|
13
|
-
option ["-s", "--search"], "SEARCH", "Search from logs"
|
|
14
13
|
option ["-i", "--instance"], "INSTANCE", "Show only given instance specific logs"
|
|
15
14
|
|
|
16
15
|
def execute
|
|
@@ -22,7 +21,6 @@ module Kontena::Cli::Services
|
|
|
22
21
|
query_params << "limit=#{lines}"
|
|
23
22
|
query_params << "from=#{last_id}" unless last_id.nil?
|
|
24
23
|
query_params << "since=#{since}" if !since.nil? && last_id.nil?
|
|
25
|
-
query_params << "search=#{search}" if search
|
|
26
24
|
query_params << "container=#{name}-#{instance}" if instance
|
|
27
25
|
|
|
28
26
|
result = client(token).get("services/#{current_grid}/#{name}/container_logs?#{query_params.join('&')}")
|