kontena-cli 1.2.0.rc3 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 275e980674a2ede2275a9174f4ecf26b8e1f758c
4
- data.tar.gz: 13211f91abe692ca430e945788295d20dec4a65d
3
+ metadata.gz: 9bc00d0ec3050b6dd80e0c193ee9a09499137c06
4
+ data.tar.gz: 51ba8dd82496286ec9751eb52a83a00d15cd99eb
5
5
  SHA512:
6
- metadata.gz: 9aacc4e52361e78ca2e3fad493600fea03c05a4ddfcb963db341474bb69d50c161fe569221e46e300d46931a85bd635134be075a6d0fee458e13abaa1eeb2247
7
- data.tar.gz: fa637d37be4ea80011b05c94d248a9415e0c973e1a0b45fda94eadaab155df174ad2369ac6e55bc86e2037c0ab7723357a42442968ce1288d0a9c26bbd2e6b89
6
+ metadata.gz: e7b5f3297c6f8f7fddcfc10bea2c648f310588ed198ecac836ce1153178c76953d23be9b8e1950aa1d4d780f0d4f7cb5e3638a4044852420fc1a59227a01da78
7
+ data.tar.gz: a92ebc69b4e0eff2aadccaf1c1cefe54117ddca15dafd7d2a1196e6ede3dcbef0b836bb570e6227df9a3e9f6972be8a7ca644fc71c66ca9c2efe6fc3076a8d8c
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0.rc3
1
+ 1.2.0
@@ -1,4 +1,3 @@
1
-
2
1
  module Kontena::Cli::Stacks
3
2
  module StacksHelper
4
3
 
@@ -52,7 +51,13 @@ module Kontena::Cli::Stacks
52
51
  if deployment['state'] == 'error'
53
52
  deployment['service_deploys'].each do |service_deploy|
54
53
  if service_deploy['state'] == 'error'
55
- error service_deploy['reason']
54
+ $stderr.puts "Deployment of service #{pastel.cyan(service_deploy['service_id'])} failed:"
55
+ $stderr.puts " - #{service_deploy['reason'].strip}"
56
+ service_deploy['instance_deploys'].each do |instance_deploy|
57
+ if instance_deploy['state'] == 'error'
58
+ $stderr.puts " - " + "#{instance_deploy['error'].strip} (on node #{pastel.cyan(instance_deploy['node'])})"
59
+ end
60
+ end
56
61
  end
57
62
  end
58
63
  abort
@@ -67,11 +72,12 @@ module Kontena::Cli::Stacks
67
72
  def wait_for_service_deploy(service_deploy, states)
68
73
  service_deployed = false
69
74
  name = service_deploy['service_id'].split('/')[-1]
70
- spinner "Deploying service #{pastel.cyan(name)}" do
75
+ spinner "Deploying service #{pastel.cyan(name)}" do |spin|
71
76
  until service_deployed
72
77
  r = client.get("services/#{service_deploy['service_id']}/deploys/#{service_deploy['id']}")
73
78
  if states.include?(r['state'])
74
79
  service_deployed = true
80
+ spin.fail if r['state'] == 'error'
75
81
  else
76
82
  sleep 1
77
83
  end
@@ -67,7 +67,7 @@ module Kontena::Cli::Stacks
67
67
  unless mount_point
68
68
  result[:errors] << { 'services' => { service => { 'volumes' => { volume => 'mount point missing' } } } }
69
69
  end
70
- if volume_name
70
+ if volume_name && !volume_name.start_with?('/')
71
71
  if yaml.key?('volumes')
72
72
  unless yaml['volumes'][volume_name]
73
73
  result[:errors] << { 'services' => { service => { 'volumes' => { volume_name => 'not found in top level volumes list' } } } }
@@ -304,4 +304,75 @@ describe Kontena::Cli::Stacks::YAML::ValidatorV3 do
304
304
  end
305
305
  end
306
306
  end
307
+
308
+ describe '#validate' do
309
+
310
+ context 'volumes' do
311
+ let(:stack) do
312
+ {
313
+ 'stack' => 'a-stack',
314
+ 'services' => {
315
+ 'foo' => {
316
+ 'volumes' => [
317
+ 'foo:/app'
318
+ ]
319
+ }
320
+ },
321
+ 'volumes' => {
322
+
323
+ }
324
+
325
+ }
326
+ end
327
+ it 'fails validation if volumes are not declared' do
328
+ result = subject.validate(stack)
329
+ expect(result[:errors]).not_to be_empty
330
+ end
331
+
332
+ it 'validation succeeds if volumes are declared' do
333
+ stack['volumes'] = {
334
+ 'foo' => {
335
+ 'external' => true
336
+ }
337
+ }
338
+ result = subject.validate(stack)
339
+ expect(result[:errors]).to be_empty
340
+ end
341
+
342
+ it 'validation fails when external: false' do
343
+ stack['volumes'] = {
344
+ 'foo' => {
345
+ 'external' => false
346
+ }
347
+ }
348
+ result = subject.validate(stack)
349
+ expect(result[:errors]).not_to be_empty
350
+ end
351
+
352
+ it 'validation succeeds if volumes are declared' do
353
+ stack['volumes'] = {
354
+ 'foo' => {
355
+ 'external' => {
356
+ 'name' => 'foobar'
357
+ }
358
+ }
359
+ }
360
+ result = subject.validate(stack)
361
+ expect(result[:errors]).to be_empty
362
+ end
363
+
364
+ it 'bind mount do not need ext volumes' do
365
+ stack['services']['foo']['volumes'] = ['/var/run/docker.sock:/var/run/docker.sock']
366
+ result = subject.validate(stack)
367
+ expect(result[:errors]).to be_empty
368
+ end
369
+
370
+ it 'anon vols do not need ext volumes' do
371
+ stack['services']['foo']['volumes'] = ['/data']
372
+ result = subject.validate(stack)
373
+ expect(result[:errors]).to be_empty
374
+ end
375
+ end
376
+
377
+ end
307
378
  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.rc3
4
+ version: 1.2.0
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-20 00:00:00.000000000 Z
11
+ date: 2017-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -661,9 +661,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
661
661
  version: 2.1.0
662
662
  required_rubygems_version: !ruby/object:Gem::Requirement
663
663
  requirements:
664
- - - ">"
664
+ - - ">="
665
665
  - !ruby/object:Gem::Version
666
- version: 1.3.1
666
+ version: '0'
667
667
  requirements: []
668
668
  rubyforge_project:
669
669
  rubygems_version: 2.6.8