kontena-cli 1.2.0.pre2 → 1.2.0.pre3
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/lib/kontena/callbacks/master/deploy/70_invite_self_after_deploy.rb +4 -4
- data/lib/kontena/cli/master/user/invite_command.rb +1 -1
- data/lib/kontena/cli/nodes/remove_command.rb +7 -0
- data/lib/kontena/cli/nodes/ssh_command.rb +1 -1
- data/lib/kontena/cli/stacks/common.rb +5 -0
- data/lib/kontena/cli/stacks/yaml/validator_v3.rb +1 -15
- data/lib/kontena/cli/volumes/remove_command.rb +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbe93b31f3b0185a1f79d87967898a48dd6c3a8b
|
4
|
+
data.tar.gz: d94145ce8dbb0289a75785293802b25f8a29e48f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6f6a68a4ef272bdc3f8ef941e155d7536eb3c429fd726dc00d98fe8ee6cd15a39f1f600ad218f7d1041a33db88d01a23f4d6d692ef0af1f2ad9b25de3a54725
|
7
|
+
data.tar.gz: 1e0552a145da0f8cebebe1ef1305052385f25077b7d903d58a4bc4f4fda7622e323e712af13b2bcce79319fc0950d55e59c01ae4cd63f97b8c5876d3ff2b0c2c
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.0.
|
1
|
+
1.2.0.pre3
|
@@ -32,7 +32,7 @@ module Kontena
|
|
32
32
|
|
33
33
|
invite_response = nil
|
34
34
|
spinner "Creating user #{cloud_user_data[:email]} into Kontena Master" do |spin|
|
35
|
-
invite_response = Kontena.run("master
|
35
|
+
invite_response = Kontena.run(["master", "user", "invite", "--external-id", cloud_user_data[:id], "--return", cloud_user_data[:email]], returning: :result)
|
36
36
|
unless invite_response.kind_of?(Hash) && invite_response.has_key?('invite_code')
|
37
37
|
spin.fail
|
38
38
|
end
|
@@ -44,7 +44,7 @@ module Kontena
|
|
44
44
|
role_status = nil
|
45
45
|
|
46
46
|
spinner "Adding master_admin role for #{cloud_user_data[:email]}" do |spin|
|
47
|
-
role_status = Kontena.run("master
|
47
|
+
role_status = Kontena.run(["master", "user", "role", "add", "--silent", "master_admin", cloud_user_data[:email]])
|
48
48
|
spin.fail if role_status.to_i > 0
|
49
49
|
end
|
50
50
|
|
@@ -52,7 +52,7 @@ module Kontena
|
|
52
52
|
|
53
53
|
if current_master.grid
|
54
54
|
spinner "Adding #{cloud_user_data[:email]} to grid '#{current_master.grid}'" do |spin|
|
55
|
-
grid_add_status = Kontena.run("grid user add --grid
|
55
|
+
grid_add_status = Kontena.run(["grid", "user", "add", "--grid", current_master.grid, cloud_user_data[:email]])
|
56
56
|
spin.fail if grid_add_status.to_i > 0
|
57
57
|
end
|
58
58
|
end
|
@@ -61,7 +61,7 @@ module Kontena
|
|
61
61
|
|
62
62
|
new_user_token = nil
|
63
63
|
spinner "Creating an access token for #{cloud_user_data[:email]}" do |spin|
|
64
|
-
new_user_token = Kontena.run("master token create -e 0 -s user --return -u
|
64
|
+
new_user_token = Kontena.run(["master", "token", "create", "-e", "0", "-s", "user", "--return", "-u", cloud_user_data[:email]], returning: :result)
|
65
65
|
end
|
66
66
|
|
67
67
|
master_name = current_master.name.dup
|
@@ -39,7 +39,7 @@ module Kontena::Cli::Master::User
|
|
39
39
|
puts " * command: kontena master join #{current_master.url} #{response['invite_code']}"
|
40
40
|
end
|
41
41
|
roles.each do |role|
|
42
|
-
Kontena.run("master
|
42
|
+
Kontena.run(["master", "user", "role", "add", role, email])
|
43
43
|
end
|
44
44
|
rescue => ex
|
45
45
|
$stderr.puts pastel.red("Failed to invite #{email}")
|
@@ -10,6 +10,13 @@ module Kontena::Cli::Nodes
|
|
10
10
|
require_api_url
|
11
11
|
require_current_grid
|
12
12
|
token = require_token
|
13
|
+
|
14
|
+
node = client(token).get("nodes/#{current_grid}/#{node_id}")
|
15
|
+
|
16
|
+
if node['connected']
|
17
|
+
exit_with_error "Node #{node['name']} is still online. You must terminate the node before removing it."
|
18
|
+
end
|
19
|
+
|
13
20
|
confirm_command(node_id) unless forced?
|
14
21
|
|
15
22
|
spinner "Removing #{node_id.colorize(:cyan)} node from #{current_grid.colorize(:cyan)} grid " do
|
@@ -18,7 +18,7 @@ module Kontena::Cli::Nodes
|
|
18
18
|
exit_with_error "Cannot combine --any with a node name" if node_id && any?
|
19
19
|
|
20
20
|
if node_id
|
21
|
-
node = client.get("
|
21
|
+
node = client.get("nodes/#{current_grid}/#{node_id}")
|
22
22
|
elsif any?
|
23
23
|
nodes = client.get("grids/#{current_grid}/nodes")['nodes']
|
24
24
|
node = nodes.select{ |node| node['connected'] }.first
|
@@ -110,6 +110,11 @@ module Kontena::Cli::Stacks
|
|
110
110
|
def generate_volumes(yaml_volumes)
|
111
111
|
return [] unless yaml_volumes
|
112
112
|
yaml_volumes.map do |name, config|
|
113
|
+
if config['external'].is_a?(TrueClass)
|
114
|
+
config['external'] = name
|
115
|
+
elsif config['external']['name']
|
116
|
+
config['external'] = config['external']['name']
|
117
|
+
end
|
113
118
|
config.merge('name' => name)
|
114
119
|
end
|
115
120
|
end
|
@@ -92,21 +92,7 @@ module Kontena::Cli::Stacks
|
|
92
92
|
yaml['volumes'].each do |volume, options|
|
93
93
|
if options.is_a?(Hash)
|
94
94
|
option_errors = validate_volume_options(options)
|
95
|
-
|
96
|
-
if !options.key?('driver') && options.key?('driver_opts')
|
97
|
-
result[:errors] << { 'volumes' => { volume => { 'driver_opts' => 'defined without defining driver' } } }
|
98
|
-
end
|
99
|
-
if options.key?('external')
|
100
|
-
unless options['external'].is_a?(FalseClass)
|
101
|
-
['driver', 'driver_opts', 'scope'].each do |key|
|
102
|
-
result[:errors] << { 'volumes' => { volume => { key => 'specified together with external' } } } if options.key?(key)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
if options.key?('driver') && !options.key?('scope')
|
107
|
-
result[:errors] << { 'volumes' => { volume => { 'scope' => 'required value missing' } } }
|
108
|
-
end
|
109
|
-
else
|
95
|
+
unless option_errors.valid?
|
110
96
|
result[:errors] << { 'volumes' => { volume => option_errors.errors } }
|
111
97
|
end
|
112
98
|
else
|
@@ -7,11 +7,14 @@ module Kontena::Cli::Volumes
|
|
7
7
|
|
8
8
|
banner "Removes a volume"
|
9
9
|
parameter 'VOLUME', 'Volume'
|
10
|
+
option "--force", :flag, "Force remove", default: false, attribute_name: :forced
|
10
11
|
|
11
12
|
requires_current_master
|
12
13
|
requires_current_master_token
|
13
14
|
|
14
15
|
def execute
|
16
|
+
confirm_command(volume) unless forced?
|
17
|
+
|
15
18
|
spinner "Removing volume #{pastel.cyan(volume)} " do
|
16
19
|
remove_volume(volume)
|
17
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kontena-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.0.
|
4
|
+
version: 1.2.0.pre3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kontena, Inc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|