kontena-cli 0.15.4 → 0.15.5.rc1
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/cli/apps/common.rb +1 -6
- data/lib/kontena/cli/apps/yaml/reader.rb +13 -3
- data/lib/kontena/cli/apps/yaml/validator.rb +4 -0
- data/lib/kontena/cli/apps/yaml/validator_v2.rb +5 -1
- data/lib/kontena/cli/master/use_command.rb +6 -11
- data/lib/kontena/cli/services/services_helper.rb +1 -5
- data/spec/fixtures/kontena-malformed-yaml.yml +6 -0
- data/spec/fixtures/kontena-not-hash-service-config.yml +3 -0
- data/spec/kontena/cli/app/yaml/reader_spec.rb +48 -0
- data/spec/kontena/cli/master/use_command_spec.rb +5 -0
- metadata +8 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ed3274a66dc5dcee8f9e8fa4ee7841664910fc88
|
|
4
|
+
data.tar.gz: 52690daf0a91bba1cbbd2e1578366aa4955b28c6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5cb2fe4b739883ad79eb9cc411de73772924a6b43a9d2df560051759566edb85d9f40be029d87ac2226a9fa5bfe23ae26d28994cf32465872932d616d65578b6
|
|
7
|
+
data.tar.gz: 6620468258c43d296b89cfa297044c2159692643770b0ef986cdd04941c8e76b5683a1fd6807b3fb150ee6ac1a4d200f657c6f171874adbb62b800f0662ce09d
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.15.
|
|
1
|
+
0.15.5.rc1
|
|
@@ -62,12 +62,7 @@ module Kontena::Cli::Apps
|
|
|
62
62
|
|
|
63
63
|
def project_name_from_yaml(file)
|
|
64
64
|
reader = YAML::Reader.new(file, true)
|
|
65
|
-
|
|
66
|
-
if outcome[:version].to_i == 2
|
|
67
|
-
outcome[:name]
|
|
68
|
-
else
|
|
69
|
-
nil
|
|
70
|
-
end
|
|
65
|
+
reader.stack_name
|
|
71
66
|
end
|
|
72
67
|
|
|
73
68
|
# @return [String]
|
|
@@ -27,13 +27,17 @@ module Kontena::Cli::Apps
|
|
|
27
27
|
Dir.chdir(File.dirname(File.expand_path(file))) do
|
|
28
28
|
result[:version] = yaml['version'] || '1'
|
|
29
29
|
result[:name] = yaml['name']
|
|
30
|
-
result[:services] = parse_services(service_name)
|
|
31
30
|
result[:errors] = errors
|
|
32
31
|
result[:notifications] = notifications
|
|
32
|
+
result[:services] = parse_services(service_name) unless errors.count > 0
|
|
33
33
|
end
|
|
34
34
|
result
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
+
def stack_name
|
|
38
|
+
yaml['name'] if v2?
|
|
39
|
+
end
|
|
40
|
+
|
|
37
41
|
##
|
|
38
42
|
# @return [true|false]
|
|
39
43
|
def v2?
|
|
@@ -47,7 +51,11 @@ module Kontena::Cli::Apps
|
|
|
47
51
|
content = content % { project: ENV['project'], grid: ENV['grid'] }
|
|
48
52
|
interpolate(content)
|
|
49
53
|
replace_dollar_dollars(content)
|
|
50
|
-
|
|
54
|
+
begin
|
|
55
|
+
@yaml = ::YAML.load(content)
|
|
56
|
+
rescue Psych::SyntaxError => e
|
|
57
|
+
abort("Error while parsing #{file}".colorize(:red)+ " "+e.message)
|
|
58
|
+
end
|
|
51
59
|
end
|
|
52
60
|
|
|
53
61
|
# @return [Array] array of validation errors
|
|
@@ -80,7 +88,9 @@ module Kontena::Cli::Apps
|
|
|
80
88
|
# @return [Hash]
|
|
81
89
|
def parse_services(service_name = nil)
|
|
82
90
|
if service_name.nil?
|
|
83
|
-
services.each
|
|
91
|
+
services.each do |name, config|
|
|
92
|
+
services[name] = process_config(config)
|
|
93
|
+
end
|
|
84
94
|
services
|
|
85
95
|
else
|
|
86
96
|
abort("Service '#{service_name}' not found in #{file}".colorize(:red)) unless services.key?(service_name)
|
|
@@ -43,6 +43,10 @@ module Kontena::Cli::Apps
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
yaml.each do |service, options|
|
|
46
|
+
unless options.is_a?(Hash)
|
|
47
|
+
result[:errors] << { service => { 'options' => 'must be a mapping not a string'} }
|
|
48
|
+
next
|
|
49
|
+
end
|
|
46
50
|
key_errors = validate_keys(options)
|
|
47
51
|
option_errors = validate_options(options)
|
|
48
52
|
result[:errors] << { service => option_errors.messages } if option_errors.failure?
|
|
@@ -53,7 +53,11 @@ module Kontena::Cli::Apps
|
|
|
53
53
|
notifications: []
|
|
54
54
|
}
|
|
55
55
|
if yaml.key?('services')
|
|
56
|
-
yaml['services'].each do |service, options|
|
|
56
|
+
yaml['services'].each do |service, options|
|
|
57
|
+
unless options.is_a?(Hash)
|
|
58
|
+
result[:errors] << { service => { 'options' => 'must be a mapping not a string'} }
|
|
59
|
+
next
|
|
60
|
+
end
|
|
57
61
|
key_errors = validate_keys(options)
|
|
58
62
|
option_errors = validate_options(options)
|
|
59
63
|
result[:errors] << { service => option_errors.messages } if option_errors.failure?
|
|
@@ -5,29 +5,24 @@ module Kontena::Cli::Master
|
|
|
5
5
|
parameter "NAME", "Master name to use"
|
|
6
6
|
|
|
7
7
|
def execute
|
|
8
|
-
master =
|
|
9
|
-
|
|
8
|
+
master = settings['servers'].find { |s| s['name'] == name }
|
|
9
|
+
|
|
10
|
+
if master
|
|
10
11
|
self.current_master = master['name']
|
|
11
12
|
puts "Using master: #{master['name'].cyan} (#{master['url']})"
|
|
12
13
|
puts "Using grid: #{current_grid.cyan}" if current_grid
|
|
14
|
+
|
|
13
15
|
grids = client(require_token).get('grids')['grids']
|
|
14
16
|
if grids.size > 1
|
|
15
17
|
puts ""
|
|
16
|
-
puts "You have access to following grids
|
|
18
|
+
puts "You have access to following grids:"
|
|
17
19
|
puts ""
|
|
18
20
|
grids.each do |grid|
|
|
19
21
|
puts " * #{grid['name']}"
|
|
20
22
|
end
|
|
21
|
-
puts ""
|
|
22
23
|
end
|
|
23
24
|
else
|
|
24
|
-
abort "Could not resolve master
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def find_master_by_name(name)
|
|
29
|
-
settings['servers'].each do |server|
|
|
30
|
-
return server if server['name'] == name
|
|
25
|
+
abort "Could not resolve master with name: #{name}".colorize(:red)
|
|
31
26
|
end
|
|
32
27
|
end
|
|
33
28
|
|
|
@@ -156,6 +156,28 @@ describe Kontena::Cli::Apps::YAML::Reader do
|
|
|
156
156
|
end
|
|
157
157
|
end
|
|
158
158
|
|
|
159
|
+
context 'when yaml file is malformed' do
|
|
160
|
+
it 'exits the execution' do
|
|
161
|
+
allow(File).to receive(:read)
|
|
162
|
+
.with(absolute_yaml_path)
|
|
163
|
+
.and_return(fixture('kontena-malformed-yaml.yml'))
|
|
164
|
+
expect {
|
|
165
|
+
subject.execute
|
|
166
|
+
}.to raise_error(SystemExit)
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
context 'when service config is not hash' do
|
|
171
|
+
it 'returns error' do
|
|
172
|
+
allow(File).to receive(:read)
|
|
173
|
+
.with(absolute_yaml_path)
|
|
174
|
+
.and_return(fixture('kontena-not-hash-service-config.yml'))
|
|
175
|
+
|
|
176
|
+
outcome = subject.execute
|
|
177
|
+
expect(outcome[:errors].size).to eq(1)
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
159
181
|
describe '#v2?' do
|
|
160
182
|
context 'version 1' do
|
|
161
183
|
it 'returns false' do
|
|
@@ -407,4 +429,30 @@ describe Kontena::Cli::Apps::YAML::Reader do
|
|
|
407
429
|
end
|
|
408
430
|
end
|
|
409
431
|
end
|
|
432
|
+
|
|
433
|
+
describe '#stack_name' do
|
|
434
|
+
it 'returns nil for v1' do
|
|
435
|
+
allow(File).to receive(:read)
|
|
436
|
+
.with(absolute_yaml_path('kontena.yml'))
|
|
437
|
+
.and_return(fixture('kontena.yml'))
|
|
438
|
+
name = subject.stack_name
|
|
439
|
+
expect(name).to be_nil
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
it 'returns name for v2 if defined' do
|
|
443
|
+
allow(File).to receive(:read)
|
|
444
|
+
.with(absolute_yaml_path('kontena.yml'))
|
|
445
|
+
.and_return(fixture('kontena_v2.yml'))
|
|
446
|
+
name = subject.stack_name
|
|
447
|
+
expect(name).to eq('test-project')
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
it 'returns nil for v2 if not defined' do
|
|
451
|
+
allow(File).to receive(:read)
|
|
452
|
+
.with(absolute_yaml_path('kontena.yml'))
|
|
453
|
+
.and_return(fixture('docker-compose.yml'))
|
|
454
|
+
name = subject.stack_name
|
|
455
|
+
expect(name).to be_nil
|
|
456
|
+
end
|
|
457
|
+
end
|
|
410
458
|
end
|
|
@@ -34,5 +34,10 @@ describe Kontena::Cli::Master::UseCommand do
|
|
|
34
34
|
expect(client).to receive(:get).with('grids')
|
|
35
35
|
subject.run(['some_master'])
|
|
36
36
|
end
|
|
37
|
+
|
|
38
|
+
it 'should abort with error message if master is not configured' do
|
|
39
|
+
expect { subject.run(['not_existing']) }.to raise_error(
|
|
40
|
+
SystemExit, /Could not resolve master with name: not_existing/)
|
|
41
|
+
end
|
|
37
42
|
end
|
|
38
43
|
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: 0.15.
|
|
4
|
+
version: 0.15.5.rc1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kontena, Inc
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-10-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -397,6 +397,8 @@ files:
|
|
|
397
397
|
- spec/fixtures/kontena-build.yml
|
|
398
398
|
- spec/fixtures/kontena-internal-extend.yml
|
|
399
399
|
- spec/fixtures/kontena-invalid.yml
|
|
400
|
+
- spec/fixtures/kontena-malformed-yaml.yml
|
|
401
|
+
- spec/fixtures/kontena-not-hash-service-config.yml
|
|
400
402
|
- spec/fixtures/kontena-with-env-file.yml
|
|
401
403
|
- spec/fixtures/kontena-with-variables.yml
|
|
402
404
|
- spec/fixtures/kontena.yml
|
|
@@ -466,9 +468,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
466
468
|
version: 2.0.0
|
|
467
469
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
468
470
|
requirements:
|
|
469
|
-
- - "
|
|
471
|
+
- - ">"
|
|
470
472
|
- !ruby/object:Gem::Version
|
|
471
|
-
version:
|
|
473
|
+
version: 1.3.1
|
|
472
474
|
requirements: []
|
|
473
475
|
rubyforge_project:
|
|
474
476
|
rubygems_version: 2.5.1
|
|
@@ -483,6 +485,8 @@ test_files:
|
|
|
483
485
|
- spec/fixtures/kontena-build.yml
|
|
484
486
|
- spec/fixtures/kontena-internal-extend.yml
|
|
485
487
|
- spec/fixtures/kontena-invalid.yml
|
|
488
|
+
- spec/fixtures/kontena-malformed-yaml.yml
|
|
489
|
+
- spec/fixtures/kontena-not-hash-service-config.yml
|
|
486
490
|
- spec/fixtures/kontena-with-env-file.yml
|
|
487
491
|
- spec/fixtures/kontena-with-variables.yml
|
|
488
492
|
- spec/fixtures/kontena.yml
|