kontena-cli 1.2.0.pre1 → 1.2.0.pre2
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/lib/kontena/callback.rb +2 -2
- data/lib/kontena/callbacks/master/01_clear_current_master_after_terminate.rb +1 -1
- data/lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb +6 -6
- data/lib/kontena/callbacks/master/deploy/55_create_initial_grid_after_deploy.rb +1 -1
- data/lib/kontena/callbacks/master/deploy/70_invite_self_after_deploy.rb +1 -1
- data/lib/kontena/callbacks/master/deploy/90_proptip_after_deploy.rb +1 -1
- data/lib/kontena/cli/apps/common.rb +6 -6
- data/lib/kontena/cli/apps/yaml/reader.rb +2 -2
- data/lib/kontena/cli/cloud/login_command.rb +4 -4
- data/lib/kontena/cli/cloud/master/add_command.rb +1 -1
- data/lib/kontena/cli/common.rb +5 -5
- data/lib/kontena/cli/config.rb +8 -8
- data/lib/kontena/cli/containers/exec_command.rb +1 -1
- data/lib/kontena/cli/localhost_web_server.rb +3 -3
- data/lib/kontena/cli/master/{users → user}/invite_command.rb +5 -5
- data/lib/kontena/cli/master/{users → user}/list_command.rb +1 -1
- data/lib/kontena/cli/master/{users → user}/remove_command.rb +3 -4
- data/lib/kontena/cli/master/{users/roles → user/role}/add_command.rb +4 -4
- data/lib/kontena/cli/master/{users/roles → user/role}/remove_command.rb +3 -4
- data/lib/kontena/cli/master/{users → user}/role_command.rb +3 -5
- data/lib/kontena/cli/master/user_command.rb +11 -0
- data/lib/kontena/cli/master/users_command.rb +8 -5
- data/lib/kontena/cli/master_command.rb +2 -1
- data/lib/kontena/cli/nodes/show_command.rb +3 -1
- data/lib/kontena/cli/plugins/install_command.rb +4 -4
- data/lib/kontena/cli/plugins/uninstall_command.rb +3 -2
- data/lib/kontena/cli/services/services_helper.rb +31 -9
- data/lib/kontena/cli/spinner.rb +4 -8
- data/lib/kontena/cli/stacks/build_command.rb +3 -1
- data/lib/kontena/cli/stacks/common.rb +44 -37
- data/lib/kontena/cli/stacks/install_command.rb +2 -2
- data/lib/kontena/cli/stacks/upgrade_command.rb +3 -1
- data/lib/kontena/cli/stacks/validate_command.rb +12 -10
- data/lib/kontena/cli/stacks/yaml/opto/service_instances_resolver.rb +1 -0
- data/lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb +1 -0
- data/lib/kontena/cli/stacks/yaml/opto/vault_cert_prompt_resolver.rb +1 -0
- data/lib/kontena/cli/stacks/yaml/opto/vault_resolver.rb +4 -2
- data/lib/kontena/cli/stacks/yaml/opto/vault_setter.rb +4 -3
- data/lib/kontena/cli/stacks/yaml/reader.rb +30 -7
- data/lib/kontena/cli/stacks/yaml/validations.rb +10 -0
- data/lib/kontena/cli/stacks/yaml/validator_v3.rb +88 -8
- data/lib/kontena/client.rb +14 -12
- data/lib/kontena/command.rb +10 -13
- data/lib/kontena/errors.rb +36 -0
- data/lib/kontena/plugin_manager.rb +8 -10
- data/lib/kontena/stacks_cache.rb +1 -1
- data/lib/kontena_cli.rb +5 -5
- data/spec/fixtures/stack-with-volumes.yml +33 -0
- data/spec/kontena/cli/master/{users → user}/invite_command_spec.rb +3 -3
- data/spec/kontena/cli/master/{users → user}/remove_command_spec.rb +3 -3
- data/spec/kontena/cli/master/{users/roles → user/role}/add_command_spec.rb +3 -3
- data/spec/kontena/cli/master/{users/roles → user/role}/remove_command_spec.rb +3 -3
- data/spec/kontena/cli/stacks/build_command_spec.rb +2 -2
- data/spec/kontena/cli/stacks/install_command_spec.rb +3 -3
- data/spec/kontena/cli/stacks/upgrade_command_spec.rb +6 -6
- data/spec/kontena/cli/stacks/yaml/opto/service_link_resolver_spec.rb +5 -0
- data/spec/kontena/cli/stacks/yaml/opto/vault_cert_prompt_resolver_spec.rb +6 -0
- data/spec/kontena/cli/stacks/yaml/reader_spec.rb +4 -2
- data/spec/kontena/client_spec.rb +19 -1
- data/spec/spec_helper.rb +2 -0
- metadata +19 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fc1d241dbb42a8927a437e28fee00aba525bea78
|
|
4
|
+
data.tar.gz: f12240579934c0bad6f3d441c2744f0f5e9a5f8d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5137972ce9856d048eb8e972f8e20bea52c75a014e04f12a2d34290e870830c2d321fd8a2f264243f65aa12ab8446e3b6b2d1fe8cca5b8b036db947789e4d96b
|
|
7
|
+
data.tar.gz: 064fbf5dc12b11581a36b83ccd96fc961a23fdc5decb1995c1dd15cc8d2793ade68c060eb05dc87e38da4ff1d5f2f3332ac397c01333d0e057729fa06deb4ae1
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.2.0.
|
|
1
|
+
1.2.0.pre2
|
data/lib/kontena/callback.rb
CHANGED
|
@@ -9,7 +9,7 @@ class Kontena::Callback
|
|
|
9
9
|
# Register callback for command types it is supposed to run with.
|
|
10
10
|
def self.matches_commands(*commands)
|
|
11
11
|
cmd_types = {}
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
commands.each do |cmd|
|
|
14
14
|
cmd_class, cmd_type = cmd.split(' ', 2)
|
|
15
15
|
|
|
@@ -44,7 +44,7 @@ class Kontena::Callback
|
|
|
44
44
|
if klass.instance_methods.include?(state)
|
|
45
45
|
cb = klass.new(obj)
|
|
46
46
|
if cb.send(state).kind_of?(FalseClass)
|
|
47
|
-
ENV["DEBUG"] &&
|
|
47
|
+
ENV["DEBUG"] && $stderr.puts("Execution aborted by #{klass}")
|
|
48
48
|
exit 1
|
|
49
49
|
end
|
|
50
50
|
end
|
|
@@ -10,7 +10,7 @@ module Kontena
|
|
|
10
10
|
return unless command.exit_code == 0
|
|
11
11
|
return unless config.current_master
|
|
12
12
|
|
|
13
|
-
ENV["DEBUG"] &&
|
|
13
|
+
ENV["DEBUG"] && $stderr.puts("Removing current master from config")
|
|
14
14
|
config.servers.delete_at(config.find_server_index(config.current_master.name))
|
|
15
15
|
config.current_server = nil
|
|
16
16
|
config.write
|
|
@@ -8,8 +8,8 @@ module Kontena
|
|
|
8
8
|
matches_commands 'master create'
|
|
9
9
|
|
|
10
10
|
def after
|
|
11
|
-
ENV["DEBUG"] &&
|
|
12
|
-
ENV["DEBUG"] &&
|
|
11
|
+
ENV["DEBUG"] && $stderr.puts("Command result: #{command.result.inspect}")
|
|
12
|
+
ENV["DEBUG"] && $stderr.puts("Command exit code: #{command.exit_code.inspect}")
|
|
13
13
|
return unless command.exit_code == 0
|
|
14
14
|
return unless command.result.kind_of?(Hash)
|
|
15
15
|
return unless command.result.has_key?(:public_ip)
|
|
@@ -35,11 +35,11 @@ module Kontena
|
|
|
35
35
|
|
|
36
36
|
# Figure out if HTTPS works, if not, try HTTP
|
|
37
37
|
begin
|
|
38
|
-
ENV["DEBUG"] &&
|
|
38
|
+
ENV["DEBUG"] && $stderr.puts("Trying to request / from #{new_master.url}")
|
|
39
39
|
client = Kontena::Client.new(new_master.url, nil, ignore_ssl_errors: true)
|
|
40
40
|
client.get('/')
|
|
41
|
-
rescue
|
|
42
|
-
ENV["DEBUG"] &&
|
|
41
|
+
rescue => ex
|
|
42
|
+
ENV["DEBUG"] && $stderr.puts("HTTPS test failed: #{ex.class.name} #{ex.message}")
|
|
43
43
|
unless retried
|
|
44
44
|
new_master.url = "http://#{command.result[:public_ip]}"
|
|
45
45
|
retried = true
|
|
@@ -51,7 +51,7 @@ module Kontena
|
|
|
51
51
|
require 'shellwords'
|
|
52
52
|
cmd = "master login --no-login-info --skip-grid-auto-select --verbose --name #{command.result[:name].shellescape} --code #{command.result[:code].shellescape} #{new_master.url.shellescape}"
|
|
53
53
|
Retriable.retriable do
|
|
54
|
-
ENV["DEBUG"] &&
|
|
54
|
+
ENV["DEBUG"] && $stderr.puts("Running: #{cmd}")
|
|
55
55
|
Kontena.run(cmd)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
@@ -12,7 +12,7 @@ module Kontena
|
|
|
12
12
|
return unless config.current_master.name == command.result[:name]
|
|
13
13
|
|
|
14
14
|
cmd = "grid create --silent test"
|
|
15
|
-
ENV["DEBUG"] &&
|
|
15
|
+
ENV["DEBUG"] && $stderr.puts("Running: #{cmd}")
|
|
16
16
|
Retriable.retriable do
|
|
17
17
|
Kontena.run(cmd)
|
|
18
18
|
end
|
|
@@ -22,7 +22,7 @@ module Kontena
|
|
|
22
22
|
puts
|
|
23
23
|
end
|
|
24
24
|
puts " To invite more users you can use:"
|
|
25
|
-
puts " #{Kontena.pastel.green.on_black(" kontena master
|
|
25
|
+
puts " #{Kontena.pastel.green.on_black(" kontena master user invite email_address@example.com ")}"
|
|
26
26
|
puts
|
|
27
27
|
puts " The users can then join the master by using the invite code: "
|
|
28
28
|
puts " #{Kontena.pastel.green.on_black(" kontena master join #{current_master.url} <invite_code> ")}"
|
|
@@ -108,15 +108,15 @@ module Kontena::Cli::Apps
|
|
|
108
108
|
def display_notifications(messages, color = :yellow)
|
|
109
109
|
messages.each do |files|
|
|
110
110
|
files.each do |file, services|
|
|
111
|
-
|
|
111
|
+
$stderr.puts "#{file}:".colorize(color)
|
|
112
112
|
services.each do |service|
|
|
113
113
|
service.each do |name, errors|
|
|
114
|
-
|
|
114
|
+
$stderr.puts " #{name}:".colorize(color)
|
|
115
115
|
if errors.is_a?(String)
|
|
116
|
-
|
|
116
|
+
$stderr.puts " - #{errors}".colorize(color)
|
|
117
117
|
else
|
|
118
118
|
errors.each do |key, error|
|
|
119
|
-
|
|
119
|
+
$stderr.puts " - #{key}: #{error.to_json}".colorize(color)
|
|
120
120
|
end
|
|
121
121
|
end
|
|
122
122
|
end
|
|
@@ -126,12 +126,12 @@ module Kontena::Cli::Apps
|
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
def hint_on_validation_notifications(errors)
|
|
129
|
-
|
|
129
|
+
$stderr.puts "YAML contains the following unsupported options and they were rejected:".colorize(:yellow)
|
|
130
130
|
display_notifications(errors)
|
|
131
131
|
end
|
|
132
132
|
|
|
133
133
|
def abort_on_validation_errors(errors)
|
|
134
|
-
|
|
134
|
+
$stderr.puts "YAML validation failed! Aborting.".colorize(:red)
|
|
135
135
|
display_notifications(errors, :red)
|
|
136
136
|
abort
|
|
137
137
|
end
|
|
@@ -53,8 +53,8 @@ module Kontena::Cli::Apps
|
|
|
53
53
|
replace_dollar_dollars(content)
|
|
54
54
|
begin
|
|
55
55
|
@yaml = ::YAML.safe_load(content)
|
|
56
|
-
rescue Psych::SyntaxError =>
|
|
57
|
-
raise "Error while parsing #{file}
|
|
56
|
+
rescue Psych::SyntaxError => ex
|
|
57
|
+
raise ex.class, "Error while parsing #{file} : #{ex.message}"
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
@@ -52,10 +52,10 @@ module Kontena::Cli::Cloud
|
|
|
52
52
|
|
|
53
53
|
def web_flow
|
|
54
54
|
if Kontena.browserless? && !force?
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
$stderr.puts "Your current environment does not seem to support opening a local graphical WWW browser."
|
|
56
|
+
$stderr.puts
|
|
57
|
+
$stderr.puts "You can perorm a login on another computer, copy the token and use it with 'kontena cloud login --token <token>'."
|
|
58
|
+
$stderr.puts "There will be an easier way to log in from a browserless environment soon."
|
|
59
59
|
exit_with_error 'Unable to launch a web browser'
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -84,7 +84,7 @@ module Kontena::Cli::Cloud::Master
|
|
|
84
84
|
puts " Cloud than the one they currently have as their username in the"
|
|
85
85
|
puts " master will not be able to authenticate before an administrator"
|
|
86
86
|
puts " of the Kontena Master creates an invitation code for them"
|
|
87
|
-
puts " (kontena master
|
|
87
|
+
puts " (kontena master user invite old@email.example.com)"
|
|
88
88
|
exit_with_error "Aborted" unless prompt.yes?("Proceed?")
|
|
89
89
|
end
|
|
90
90
|
|
data/lib/kontena/cli/common.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Kontena
|
|
|
12
12
|
|
|
13
13
|
def logger
|
|
14
14
|
return @logger if @logger
|
|
15
|
-
@logger = Logger.new(ENV["DEBUG"] ?
|
|
15
|
+
@logger = Logger.new(ENV["DEBUG"] ? $stderr : $stdout)
|
|
16
16
|
@logger.level = ENV["DEBUG"].nil? ? Logger::INFO : Logger::DEBUG
|
|
17
17
|
@logger.progname = 'COMMON'
|
|
18
18
|
@logger
|
|
@@ -131,8 +131,8 @@ module Kontena
|
|
|
131
131
|
client = Kontena::Client.new(server.url, server.token)
|
|
132
132
|
logger.debug "Trying to invalidate refresh token on #{server.name}"
|
|
133
133
|
client.refresh_token
|
|
134
|
-
rescue
|
|
135
|
-
logger.debug "Refreshing failed: #{
|
|
134
|
+
rescue => ex
|
|
135
|
+
logger.debug "Refreshing failed: #{ex.class.name} : #{ex.message}"
|
|
136
136
|
end
|
|
137
137
|
|
|
138
138
|
def require_current_master
|
|
@@ -289,7 +289,7 @@ module Kontena
|
|
|
289
289
|
msg = "Press any key to continue or ctrl-c to cancel.. (Automatically continuing in ? seconds)"
|
|
290
290
|
|
|
291
291
|
reader_thread = Thread.new do
|
|
292
|
-
Thread.main['any_key.char'] =
|
|
292
|
+
Thread.main['any_key.char'] = $stdin.getch
|
|
293
293
|
end
|
|
294
294
|
|
|
295
295
|
countdown_thread = Thread.new do
|
|
@@ -316,7 +316,7 @@ module Kontena
|
|
|
316
316
|
return any_key_to_continue_with_timeout(timeout) if timeout
|
|
317
317
|
msg = "Press any key to continue or ctrl-c to cancel.. "
|
|
318
318
|
print pastel.bright_cyan("#{msg}")
|
|
319
|
-
char =
|
|
319
|
+
char = $stdin.getch
|
|
320
320
|
print "\r#{' ' * msg.length}\r"
|
|
321
321
|
if char == "\u0003"
|
|
322
322
|
error "Canceled"
|
data/lib/kontena/cli/config.rb
CHANGED
|
@@ -22,11 +22,11 @@ module Kontena
|
|
|
22
22
|
self
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
TokenExpiredError = Class.new(StandardError)
|
|
26
26
|
|
|
27
27
|
def initialize
|
|
28
28
|
super
|
|
29
|
-
@logger = Logger.new(ENV["DEBUG"] ?
|
|
29
|
+
@logger = Logger.new(ENV["DEBUG"] ? $stderr : $stdout)
|
|
30
30
|
@logger.level = ENV["DEBUG"].nil? ? Logger::INFO : Logger::DEBUG
|
|
31
31
|
@logger.progname = 'CONFIG'
|
|
32
32
|
load_settings_from_env || load_settings_from_config_file
|
|
@@ -41,7 +41,7 @@ module Kontena
|
|
|
41
41
|
return nil unless ENV['KONTENA_URL']
|
|
42
42
|
logger.debug 'Loading configuration from ENV'
|
|
43
43
|
servers << Server.new(
|
|
44
|
-
url: ENV['KONTENA_URL'],
|
|
44
|
+
url: ENV['KONTENA_URL'],
|
|
45
45
|
name: 'default',
|
|
46
46
|
token: Token.new(access_token: ENV['KONTENA_TOKEN'], parent_type: :master, parent_name: 'default'),
|
|
47
47
|
grid: ENV['KONTENA_GRID'],
|
|
@@ -172,7 +172,7 @@ module Kontena
|
|
|
172
172
|
logger.debug "Migrating from legacy style configuration"
|
|
173
173
|
{
|
|
174
174
|
'current_server' => 'default',
|
|
175
|
-
'servers' => [
|
|
175
|
+
'servers' => [
|
|
176
176
|
settings['server'].merge(
|
|
177
177
|
'name' => 'default',
|
|
178
178
|
'account' => 'kontena'
|
|
@@ -303,7 +303,7 @@ module Kontena
|
|
|
303
303
|
def require_current_master_token
|
|
304
304
|
require_current_master
|
|
305
305
|
token = current_master.token
|
|
306
|
-
if token && token.access_token
|
|
306
|
+
if token && token.access_token
|
|
307
307
|
return token unless token.expired?
|
|
308
308
|
raise TokenExpiredError, "The access token has expired and needs to be refreshed."
|
|
309
309
|
end
|
|
@@ -364,7 +364,7 @@ module Kontena
|
|
|
364
364
|
raise ArgumentError, "You have not selected a grid. Use: kontena grid"
|
|
365
365
|
end
|
|
366
366
|
|
|
367
|
-
# Name of the currently selected grid. Can override using
|
|
367
|
+
# Name of the currently selected grid. Can override using
|
|
368
368
|
# KONTENA_GRID environment variable.
|
|
369
369
|
#
|
|
370
370
|
# @return [String, NilClass]
|
|
@@ -433,7 +433,7 @@ module Kontena
|
|
|
433
433
|
JSON.pretty_generate(to_hash)
|
|
434
434
|
end
|
|
435
435
|
|
|
436
|
-
# Write the current configuration to config file.
|
|
436
|
+
# Write the current configuration to config file.
|
|
437
437
|
# Does nothing if using settings from environment variables.
|
|
438
438
|
def write
|
|
439
439
|
return nil if ENV['KONTENA_URL']
|
|
@@ -518,7 +518,7 @@ module Kontena
|
|
|
518
518
|
def account
|
|
519
519
|
return @account if @account
|
|
520
520
|
return config.find_account('master') unless parent
|
|
521
|
-
@account =
|
|
521
|
+
@account =
|
|
522
522
|
case parent_type
|
|
523
523
|
when :master then config.find_account(parent.account)
|
|
524
524
|
when :account then parent
|
|
@@ -16,7 +16,7 @@ module Kontena::Cli::Containers
|
|
|
16
16
|
result = client(token).post("containers/#{current_grid}/#{container_id}/exec", payload)
|
|
17
17
|
|
|
18
18
|
puts result[0].join(" ") unless result[0].size == 0
|
|
19
|
-
|
|
19
|
+
$stderr.puts result[1].join(" ") unless result[1].size == 0
|
|
20
20
|
exit result[2]
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -39,7 +39,7 @@ module Kontena
|
|
|
39
39
|
#
|
|
40
40
|
# @return [Hash] query_params
|
|
41
41
|
def serve_one
|
|
42
|
-
ENV["DEBUG"] &&
|
|
42
|
+
ENV["DEBUG"] && $stderr.puts("Waiting for connection on port #{port}..")
|
|
43
43
|
socket = server.accept
|
|
44
44
|
|
|
45
45
|
content = socket.recvfrom(2048).first.split(/(?:\r)?\n/)
|
|
@@ -56,7 +56,7 @@ module Kontena
|
|
|
56
56
|
|
|
57
57
|
body = content.join("\n")
|
|
58
58
|
|
|
59
|
-
ENV["DEBUG"] &&
|
|
59
|
+
ENV["DEBUG"] && $stderr.puts("Got request: \"#{request.inspect}\n Headers: #{headers.inspect}\n Body: #{body}\"")
|
|
60
60
|
|
|
61
61
|
get_request = request[/GET (\/cb.+?) HTTP/, 1]
|
|
62
62
|
if get_request
|
|
@@ -82,7 +82,7 @@ module Kontena
|
|
|
82
82
|
socket.close
|
|
83
83
|
server.close
|
|
84
84
|
uri = URI.parse("http://localhost#{get_request}")
|
|
85
|
-
ENV["DEBUG"] &&
|
|
85
|
+
ENV["DEBUG"] && $stderr.puts(" * Parsing params: \"#{uri.query}\"")
|
|
86
86
|
params = {}
|
|
87
87
|
URI.decode_www_form(uri.query).each do |key, value|
|
|
88
88
|
if value.to_s == ''
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require_relative '../../common'
|
|
2
|
-
require_relative '
|
|
2
|
+
require_relative 'role/add_command'
|
|
3
3
|
|
|
4
|
-
module Kontena::Cli::Master::
|
|
4
|
+
module Kontena::Cli::Master::User
|
|
5
5
|
class InviteCommand < Kontena::Command
|
|
6
6
|
include Kontena::Cli::Common
|
|
7
7
|
|
|
@@ -41,9 +41,9 @@ module Kontena::Cli::Master::Users
|
|
|
41
41
|
roles.each do |role|
|
|
42
42
|
Kontena.run("master users role add #{role.shellescape} #{email.shellescape}")
|
|
43
43
|
end
|
|
44
|
-
rescue
|
|
45
|
-
|
|
46
|
-
ENV["DEBUG"] &&
|
|
44
|
+
rescue => ex
|
|
45
|
+
$stderr.puts pastel.red("Failed to invite #{email}")
|
|
46
|
+
ENV["DEBUG"] && $stderr.puts("#{ex} : #{ex.message}\n#{ex.backtrace.join("\n ")}")
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require_relative '../../common'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Master::
|
|
3
|
+
module Kontena::Cli::Master::User
|
|
4
4
|
class RemoveCommand < Kontena::Command
|
|
5
5
|
include Kontena::Cli::Common
|
|
6
6
|
|
|
@@ -15,9 +15,8 @@ module Kontena::Cli::Master::Users
|
|
|
15
15
|
email_list.each do |email|
|
|
16
16
|
begin
|
|
17
17
|
client(token).delete("users/#{email}")
|
|
18
|
-
rescue =>
|
|
19
|
-
|
|
20
|
-
STDERR.puts exc.message
|
|
18
|
+
rescue => ex
|
|
19
|
+
$stderr.puts pastel.red("Failed to remove user #{email} : #{ex.message}")
|
|
21
20
|
end
|
|
22
21
|
end
|
|
23
22
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require_relative '../../../common'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Master::
|
|
4
|
-
module
|
|
3
|
+
module Kontena::Cli::Master::User
|
|
4
|
+
module Role
|
|
5
5
|
class AddCommand < Kontena::Command
|
|
6
6
|
include Kontena::Cli::Common
|
|
7
7
|
|
|
@@ -19,8 +19,8 @@ module Kontena::Cli::Master::Users
|
|
|
19
19
|
begin
|
|
20
20
|
response = client(token).post("users/#{email}/roles", data)
|
|
21
21
|
puts "Added role #{role} to #{email}" unless running_silent?
|
|
22
|
-
rescue =>
|
|
23
|
-
abort "Failed to add role #{role} to #{email} : #{
|
|
22
|
+
rescue => ex
|
|
23
|
+
abort pastel.red("Failed to add role #{role} to #{email} : #{ex.message}")
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require_relative '../../../common'
|
|
2
2
|
|
|
3
|
-
module Kontena::Cli::Master::
|
|
3
|
+
module Kontena::Cli::Master::User::Role
|
|
4
4
|
class RemoveCommand < Kontena::Command
|
|
5
5
|
include Kontena::Cli::Common
|
|
6
6
|
|
|
@@ -18,9 +18,8 @@ module Kontena::Cli::Master::Users::Roles
|
|
|
18
18
|
begin
|
|
19
19
|
response = client(token).delete("users/#{email}/roles/#{role}")
|
|
20
20
|
puts "Removed role #{role} from #{email}" if response
|
|
21
|
-
rescue =>
|
|
22
|
-
puts "Failed to remove role #{role} from #{email}"
|
|
23
|
-
puts exc.message
|
|
21
|
+
rescue => ex
|
|
22
|
+
$stderr.puts pastel.red("Failed to remove role #{role} from #{email} : #{ex.message}")
|
|
24
23
|
end
|
|
25
24
|
end
|
|
26
25
|
end
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
module Kontena::Cli::Master::
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
module Kontena::Cli::Master::User
|
|
4
2
|
class RoleCommand < Kontena::Command
|
|
5
|
-
subcommand "add", "Add role to user", load_subcommand('master/
|
|
6
|
-
subcommand ["remove", "rm"], "Remove role from user", load_subcommand('master/
|
|
3
|
+
subcommand "add", "Add role to user", load_subcommand('master/user/role/add_command')
|
|
4
|
+
subcommand ["remove", "rm"], "Remove role from user", load_subcommand('master/user/role/remove_command')
|
|
7
5
|
end
|
|
8
6
|
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'kontena/cli/master/user_command'
|
|
2
|
+
|
|
3
|
+
module Kontena::Cli::Master
|
|
4
|
+
class UserCommand < Kontena::Command
|
|
5
|
+
subcommand "invite", "Invite user to Kontena Master", load_subcommand('master/user/invite_command')
|
|
6
|
+
subcommand ["remove", "rm"], "Remove user from Kontena Master", load_subcommand('master/user/remove_command')
|
|
7
|
+
subcommand ["list", "ls"], "List users", load_subcommand('master/user/list_command')
|
|
8
|
+
subcommand "role", "User role specific commands", load_subcommand('master/user/role_command')
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|