kontena-cli 1.0.6 → 1.1.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/VERSION +1 -1
  4. data/bin/kontena +4 -1
  5. data/kontena-cli.gemspec +1 -1
  6. data/lib/kontena/callback.rb +1 -1
  7. data/lib/kontena/callbacks/master/01_clear_current_master_after_terminate.rb +1 -1
  8. data/lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb +5 -5
  9. data/lib/kontena/callbacks/master/deploy/55_create_initial_grid_after_deploy.rb +1 -1
  10. data/lib/kontena/callbacks/master/deploy/56_set_server_provider_after_deploy.rb +25 -0
  11. data/lib/kontena/callbacks/master/deploy/70_invite_self_after_deploy.rb +1 -1
  12. data/lib/kontena/cli/common.rb +3 -3
  13. data/lib/kontena/cli/config.rb +1 -1
  14. data/lib/kontena/cli/grid_command.rb +2 -0
  15. data/lib/kontena/cli/grids/common.rb +12 -0
  16. data/lib/kontena/cli/grids/health_command.rb +69 -0
  17. data/lib/kontena/cli/helpers/health_helper.rb +53 -0
  18. data/lib/kontena/cli/localhost_web_server.rb +3 -3
  19. data/lib/kontena/cli/master/users/invite_command.rb +1 -1
  20. data/lib/kontena/cli/node_command.rb +2 -0
  21. data/lib/kontena/cli/nodes/health_command.rb +32 -0
  22. data/lib/kontena/cli/nodes/list_command.rb +40 -26
  23. data/lib/kontena/cli/nodes/show_command.rb +0 -1
  24. data/lib/kontena/cli/plugins/install_command.rb +28 -30
  25. data/lib/kontena/cli/plugins/search_command.rb +6 -14
  26. data/lib/kontena/cli/plugins/uninstall_command.rb +7 -11
  27. data/lib/kontena/cli/services/stats_command.rb +4 -2
  28. data/lib/kontena/cli/spinner.rb +20 -4
  29. data/lib/kontena/cli/stacks/show_command.rb +5 -1
  30. data/lib/kontena/cli/stacks/yaml/opto/service_instances_resolver.rb +22 -0
  31. data/lib/kontena/cli/stacks/yaml/opto/vault_setter.rb +1 -1
  32. data/lib/kontena/cli/stacks/yaml/reader.rb +1 -0
  33. data/lib/kontena/cli/vault/export_command.rb +22 -0
  34. data/lib/kontena/cli/vault/import_command.rb +80 -0
  35. data/lib/kontena/cli/vault/list_command.rb +4 -0
  36. data/lib/kontena/cli/vault/read_command.rb +8 -3
  37. data/lib/kontena/cli/vault/remove_command.rb +2 -1
  38. data/lib/kontena/cli/vault/update_command.rb +5 -7
  39. data/lib/kontena/cli/vault_command.rb +5 -1
  40. data/lib/kontena/client.rb +25 -2
  41. data/lib/kontena/command.rb +1 -1
  42. data/lib/kontena/debug_instrumentor.rb +70 -0
  43. data/lib/kontena/light_prompt.rb +103 -0
  44. data/lib/kontena/plugin_manager.rb +167 -6
  45. data/lib/kontena/stacks_cache.rb +1 -1
  46. data/lib/kontena_cli.rb +23 -6
  47. data/spec/kontena/cli/grids/health_command_spec.rb +390 -0
  48. data/spec/kontena/cli/nodes/health_command_spec.rb +206 -0
  49. data/spec/kontena/cli/nodes/list_command_spec.rb +205 -0
  50. data/spec/kontena/cli/vault/export_spec.rb +32 -0
  51. data/spec/kontena/cli/vault/import_spec.rb +69 -0
  52. data/spec/kontena/client_spec.rb +39 -0
  53. data/spec/kontena/plugin_manager_spec.rb +7 -7
  54. data/spec/spec_helper.rb +1 -0
  55. data/spec/support/output_helpers.rb +51 -0
  56. metadata +27 -6
@@ -294,5 +294,44 @@ describe Kontena::Client do
294
294
  expect{subject.get('test')}.to raise_error(Kontena::Errors::StandardError, "You are wrong")
295
295
  end
296
296
  end
297
+
298
+ context 'version warning' do
299
+ let(:client) { double(:client) }
300
+ let(:response) { double(:response) }
301
+ let(:cli_version) { Kontena::Cli::VERSION }
302
+
303
+ before(:each) do
304
+ allow(subject).to receive(:http_client).and_return(client)
305
+ allow(client).to receive(:request).and_return(response)
306
+ allow(response).to receive(:body).and_return("hello")
307
+ allow(response).to receive(:headers).and_return({})
308
+ end
309
+
310
+ it 'warns the user once if server version differs enough from master version' do
311
+ bumped_version = cli_version.split('.')[0] + '.' + (cli_version.split('.')[1].to_i + 1).to_s + '.0' # 1.5.4 --> 1.6.0
312
+ expect(response).to receive(:headers).at_least(:once).and_return({'X-Kontena-Version' => bumped_version})
313
+ expect(subject).to receive(:check_version_and_warn).at_least(:once).and_call_original
314
+ expect(subject).to receive(:add_version_warning).with(bumped_version).once.and_return(true)
315
+ expect(subject.get("test")).to eq 'hello'
316
+ expect(subject.get("test")).to eq 'hello'
317
+ end
318
+
319
+ it 'does not warn the user if server version does not differ too much' do
320
+ bumped_version = cli_version.split('.')[0] + '.' + cli_version.split('.')[1] + '.' + (cli_version.split('.')[2].to_i + 1).to_s # 1.5.4 --> 1.5.5
321
+ expect(response).to receive(:headers).at_least(:once).and_return({'X-Kontena-Version' => bumped_version})
322
+ expect(subject).to receive(:check_version_and_warn).at_least(:once).and_call_original
323
+ expect(subject).not_to receive(:at_exit)
324
+ expect(subject).not_to receive(:add_version_warning)
325
+ expect(subject.get("test")).to eq 'hello'
326
+ end
327
+
328
+ it 'does not warn the user if server version is not there at all' do
329
+ expect(response).to receive(:headers).at_least(:once).and_return({})
330
+ allow(subject).to receive(:check_version_and_warn).at_least(:once).and_call_original
331
+ expect(subject).not_to receive(:at_exit)
332
+ expect(subject).not_to receive(:add_version_warning)
333
+ expect(subject.get("test")).to eq 'hello'
334
+ end
335
+ end
297
336
  end
298
337
  end
@@ -5,14 +5,14 @@ describe Kontena::PluginManager do
5
5
 
6
6
  let(:subject) { described_class.instance }
7
7
 
8
+ before(:each) { subject.init }
8
9
  describe '#load_plugins' do
9
10
  it 'includes hello plugin' do
10
- plugins = subject.load_plugins
11
- expect(plugins.any?{ |p| p.name == 'kontena-plugin-hello' }).to be_truthy
11
+ expect(subject.plugins.any?{ |p| p.name == 'kontena-plugin-hello' }).to be_truthy
12
12
  end
13
13
 
14
14
  it 'allows plugin to register as a sub-command' do
15
- plugins = subject.load_plugins
15
+ plugins = subject.init
16
16
  main = Kontena::MainCommand.new(File.basename($0))
17
17
  expect {
18
18
  main.run(['hello'])
@@ -31,7 +31,7 @@ describe Kontena::PluginManager do
31
31
  s.version = '0.1.0'
32
32
  s.add_runtime_dependency 'kontena-cli', '>= 0.16.0'
33
33
  end
34
- expect(subject.spec_has_valid_dependency?(spec)).to be_truthy
34
+ expect(subject.send(:spec_has_valid_dependency?, spec)).to be_truthy
35
35
  end
36
36
 
37
37
  it 'returns true if spec dependency > than MIN_CLI_VERSION and is prerelease' do
@@ -40,7 +40,7 @@ describe Kontena::PluginManager do
40
40
  s.version = '0.1.0'
41
41
  s.add_runtime_dependency 'kontena-cli', '>= 0.16.0.pre2'
42
42
  end
43
- expect(subject.spec_has_valid_dependency?(spec)).to be_truthy
43
+ expect(subject.send(:spec_has_valid_dependency?, spec)).to be_truthy
44
44
  end
45
45
 
46
46
  it 'returns false if spec dependency < than MIN_CLI_VERSION' do
@@ -49,7 +49,7 @@ describe Kontena::PluginManager do
49
49
  s.version = '0.1.0'
50
50
  s.add_runtime_dependency 'kontena-cli', '>= 0.15.0'
51
51
  end
52
- expect(subject.spec_has_valid_dependency?(spec)).to be_falsey
52
+ expect(subject.send(:spec_has_valid_dependency?, spec)).to be_falsey
53
53
  end
54
54
 
55
55
  it 'returns false if spec dependency < than MIN_CLI_VERSION and is prerelease' do
@@ -58,7 +58,7 @@ describe Kontena::PluginManager do
58
58
  s.version = '0.1.0'
59
59
  s.add_runtime_dependency 'kontena-cli', '>= 0.15.0.beta1'
60
60
  end
61
- expect(subject.spec_has_valid_dependency?(spec)).to be_falsey
61
+ expect(subject.send(:spec_has_valid_dependency?, spec)).to be_falsey
62
62
  end
63
63
  end
64
64
  end
data/spec/spec_helper.rb CHANGED
@@ -61,3 +61,4 @@ end
61
61
  require_relative 'support/client_helpers'
62
62
  require_relative 'support/requirements_helper'
63
63
  require_relative 'support/fixtures_helpers'
64
+ require_relative 'support/output_helpers'
@@ -0,0 +1,51 @@
1
+ module OutputHelpers
2
+ extend RSpec::Matchers::DSL
3
+
4
+ matcher :return_and_output do |expected, *lines|
5
+ supports_block_expectations
6
+
7
+ match do |block|
8
+ stdout = lines.flatten.join("\n") + "\n"
9
+
10
+ begin
11
+ expect{@return = block.call}.to output(stdout).to_stdout
12
+ rescue Exception => error
13
+ @error = error
14
+
15
+ return false
16
+ else
17
+ return values_match? expected, @return
18
+ end
19
+ end
20
+
21
+ failure_message do |block|
22
+ if @error
23
+ return @error
24
+ else
25
+ return "expected #{block} to return #{expected}, but returned #{@return}"
26
+ end
27
+ end
28
+ end
29
+
30
+ matcher :output_table do |lines|
31
+ supports_block_expectations
32
+
33
+ match do |block|
34
+ stdout = Regexp.new('^' + lines.map{|fields| fields.join('\s+')}.join('\n') + '\n$', Regexp::MULTILINE)
35
+
36
+ begin
37
+ expect{@return = block.call}.to output(stdout).to_stdout
38
+ rescue Exception => error
39
+ @error = error
40
+
41
+ return false
42
+ else
43
+ return true
44
+ end
45
+ end
46
+
47
+ failure_message do |block|
48
+ return @error
49
+ end
50
+ end
51
+ 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.0.6
4
+ version: 1.1.0.pre1
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-01-18 00:00:00.000000000 Z
11
+ date: 2017-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.7.1
61
+ version: '0.10'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.7.1
68
+ version: '0.10'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: clamp
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -218,6 +218,7 @@ files:
218
218
  - lib/kontena/callbacks/master/deploy/40_install_ssl_certificate_after_deploy.rb
219
219
  - lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb
220
220
  - lib/kontena/callbacks/master/deploy/55_create_initial_grid_after_deploy.rb
221
+ - lib/kontena/callbacks/master/deploy/56_set_server_provider_after_deploy.rb
221
222
  - lib/kontena/callbacks/master/deploy/60_configure_auth_provider_after_deploy.rb
222
223
  - lib/kontena/callbacks/master/deploy/70_invite_self_after_deploy.rb
223
224
  - lib/kontena/callbacks/master/deploy/90_proptip_after_deploy.rb
@@ -293,6 +294,7 @@ files:
293
294
  - lib/kontena/cli/grids/create_command.rb
294
295
  - lib/kontena/cli/grids/current_command.rb
295
296
  - lib/kontena/cli/grids/env_command.rb
297
+ - lib/kontena/cli/grids/health_command.rb
296
298
  - lib/kontena/cli/grids/list_command.rb
297
299
  - lib/kontena/cli/grids/logs_command.rb
298
300
  - lib/kontena/cli/grids/remove_command.rb
@@ -307,6 +309,7 @@ files:
307
309
  - lib/kontena/cli/grids/users/add_command.rb
308
310
  - lib/kontena/cli/grids/users/list_command.rb
309
311
  - lib/kontena/cli/grids/users/remove_command.rb
312
+ - lib/kontena/cli/helpers/health_helper.rb
310
313
  - lib/kontena/cli/helpers/log_helper.rb
311
314
  - lib/kontena/cli/localhost_web_server.rb
312
315
  - lib/kontena/cli/login_command.rb
@@ -343,6 +346,7 @@ files:
343
346
  - lib/kontena/cli/master/users_command.rb
344
347
  - lib/kontena/cli/master_command.rb
345
348
  - lib/kontena/cli/node_command.rb
349
+ - lib/kontena/cli/nodes/health_command.rb
346
350
  - lib/kontena/cli/nodes/label_command.rb
347
351
  - lib/kontena/cli/nodes/labels/add_command.rb
348
352
  - lib/kontena/cli/nodes/labels/list_command.rb
@@ -416,12 +420,15 @@ files:
416
420
  - lib/kontena/cli/stacks/yaml/custom_validators/hooks_validator.rb
417
421
  - lib/kontena/cli/stacks/yaml/custom_validators/secrets_validator.rb
418
422
  - lib/kontena/cli/stacks/yaml/opto/prompt_resolver.rb
423
+ - lib/kontena/cli/stacks/yaml/opto/service_instances_resolver.rb
419
424
  - lib/kontena/cli/stacks/yaml/opto/vault_resolver.rb
420
425
  - lib/kontena/cli/stacks/yaml/opto/vault_setter.rb
421
426
  - lib/kontena/cli/stacks/yaml/reader.rb
422
427
  - lib/kontena/cli/stacks/yaml/service_extender.rb
423
428
  - lib/kontena/cli/stacks/yaml/validations.rb
424
429
  - lib/kontena/cli/stacks/yaml/validator_v3.rb
430
+ - lib/kontena/cli/vault/export_command.rb
431
+ - lib/kontena/cli/vault/import_command.rb
425
432
  - lib/kontena/cli/vault/list_command.rb
426
433
  - lib/kontena/cli/vault/read_command.rb
427
434
  - lib/kontena/cli/vault/remove_command.rb
@@ -437,7 +444,9 @@ files:
437
444
  - lib/kontena/cli/whoami_command.rb
438
445
  - lib/kontena/client.rb
439
446
  - lib/kontena/command.rb
447
+ - lib/kontena/debug_instrumentor.rb
440
448
  - lib/kontena/errors.rb
449
+ - lib/kontena/light_prompt.rb
441
450
  - lib/kontena/machine/cert_helper.rb
442
451
  - lib/kontena/machine/cloud_config/cloudinit.yml
443
452
  - lib/kontena/machine/cloud_config/node_generator.rb
@@ -500,6 +509,7 @@ files:
500
509
  - spec/kontena/cli/common_spec.rb
501
510
  - spec/kontena/cli/containers/list_command_spec.rb
502
511
  - spec/kontena/cli/containers/logs_command_spec.rb
512
+ - spec/kontena/cli/grids/health_command_spec.rb
503
513
  - spec/kontena/cli/grids/trusted_subnets/add_command_spec.rb
504
514
  - spec/kontena/cli/grids/trusted_subnets/list_command_spec.rb
505
515
  - spec/kontena/cli/grids/trusted_subnets/remove_command_spec.rb
@@ -514,6 +524,8 @@ files:
514
524
  - spec/kontena/cli/master/users/remove_command_spec.rb
515
525
  - spec/kontena/cli/master/users/roles/add_command_spec.rb
516
526
  - spec/kontena/cli/master/users/roles/remove_command_spec.rb
527
+ - spec/kontena/cli/nodes/health_command_spec.rb
528
+ - spec/kontena/cli/nodes/list_command_spec.rb
517
529
  - spec/kontena/cli/services/containers_command_spec.rb
518
530
  - spec/kontena/cli/services/link_command_spec.rb
519
531
  - spec/kontena/cli/services/restart_command_spec.rb
@@ -534,6 +546,8 @@ files:
534
546
  - spec/kontena/cli/stacks/yaml/reader_spec.rb
535
547
  - spec/kontena/cli/stacks/yaml/service_extender_spec.rb
536
548
  - spec/kontena/cli/stacks/yaml/validator_v3_spec.rb
549
+ - spec/kontena/cli/vault/export_spec.rb
550
+ - spec/kontena/cli/vault/import_spec.rb
537
551
  - spec/kontena/cli/version_command_spec.rb
538
552
  - spec/kontena/cli/vpn/create_command_spec.rb
539
553
  - spec/kontena/client_spec.rb
@@ -542,6 +556,7 @@ files:
542
556
  - spec/spec_helper.rb
543
557
  - spec/support/client_helpers.rb
544
558
  - spec/support/fixtures_helpers.rb
559
+ - spec/support/output_helpers.rb
545
560
  - spec/support/requirements_helper.rb
546
561
  - tasks/release.rake
547
562
  - tasks/rspec.rake
@@ -560,9 +575,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
560
575
  version: 2.0.0
561
576
  required_rubygems_version: !ruby/object:Gem::Requirement
562
577
  requirements:
563
- - - ">="
578
+ - - ">"
564
579
  - !ruby/object:Gem::Version
565
- version: '0'
580
+ version: 1.3.1
566
581
  requirements: []
567
582
  rubyforge_project:
568
583
  rubygems_version: 2.5.1
@@ -617,6 +632,7 @@ test_files:
617
632
  - spec/kontena/cli/common_spec.rb
618
633
  - spec/kontena/cli/containers/list_command_spec.rb
619
634
  - spec/kontena/cli/containers/logs_command_spec.rb
635
+ - spec/kontena/cli/grids/health_command_spec.rb
620
636
  - spec/kontena/cli/grids/trusted_subnets/add_command_spec.rb
621
637
  - spec/kontena/cli/grids/trusted_subnets/list_command_spec.rb
622
638
  - spec/kontena/cli/grids/trusted_subnets/remove_command_spec.rb
@@ -631,6 +647,8 @@ test_files:
631
647
  - spec/kontena/cli/master/users/remove_command_spec.rb
632
648
  - spec/kontena/cli/master/users/roles/add_command_spec.rb
633
649
  - spec/kontena/cli/master/users/roles/remove_command_spec.rb
650
+ - spec/kontena/cli/nodes/health_command_spec.rb
651
+ - spec/kontena/cli/nodes/list_command_spec.rb
634
652
  - spec/kontena/cli/services/containers_command_spec.rb
635
653
  - spec/kontena/cli/services/link_command_spec.rb
636
654
  - spec/kontena/cli/services/restart_command_spec.rb
@@ -651,6 +669,8 @@ test_files:
651
669
  - spec/kontena/cli/stacks/yaml/reader_spec.rb
652
670
  - spec/kontena/cli/stacks/yaml/service_extender_spec.rb
653
671
  - spec/kontena/cli/stacks/yaml/validator_v3_spec.rb
672
+ - spec/kontena/cli/vault/export_spec.rb
673
+ - spec/kontena/cli/vault/import_spec.rb
654
674
  - spec/kontena/cli/version_command_spec.rb
655
675
  - spec/kontena/cli/vpn/create_command_spec.rb
656
676
  - spec/kontena/client_spec.rb
@@ -659,4 +679,5 @@ test_files:
659
679
  - spec/spec_helper.rb
660
680
  - spec/support/client_helpers.rb
661
681
  - spec/support/fixtures_helpers.rb
682
+ - spec/support/output_helpers.rb
662
683
  - spec/support/requirements_helper.rb