kontena-cli 1.1.6 → 1.2.0.dev1

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.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +1 -0
  3. data/VERSION +1 -1
  4. data/bin/kontena +8 -28
  5. data/kontena-cli.gemspec +2 -2
  6. data/lib/kontena/cli/app_command.rb +14 -27
  7. data/lib/kontena/cli/certificate_command.rb +4 -7
  8. data/lib/kontena/cli/cloud/master_command.rb +5 -12
  9. data/lib/kontena/cli/cloud_command.rb +4 -7
  10. data/lib/kontena/cli/container_command.rb +4 -9
  11. data/lib/kontena/cli/etcd/health_command.rb +1 -0
  12. data/lib/kontena/cli/etcd_command.rb +6 -13
  13. data/lib/kontena/cli/external_registry_command.rb +3 -7
  14. data/lib/kontena/cli/grid_command.rb +14 -29
  15. data/lib/kontena/cli/grids/cloud_config_command.rb +1 -0
  16. data/lib/kontena/cli/grids/common.rb +2 -0
  17. data/lib/kontena/cli/grids/create_command.rb +5 -0
  18. data/lib/kontena/cli/grids/trusted_subnet_command.rb +6 -8
  19. data/lib/kontena/cli/grids/user_command.rb +3 -6
  20. data/lib/kontena/cli/master/config_command.rb +6 -12
  21. data/lib/kontena/cli/master/token_command.rb +6 -11
  22. data/lib/kontena/cli/master/users/role_command.rb +2 -4
  23. data/lib/kontena/cli/master/users_command.rb +4 -8
  24. data/lib/kontena/cli/master_command.rb +14 -33
  25. data/lib/kontena/cli/node_command.rb +7 -15
  26. data/lib/kontena/cli/nodes/health_command.rb +1 -1
  27. data/lib/kontena/cli/nodes/label_command.rb +3 -9
  28. data/lib/kontena/cli/nodes/show_command.rb +1 -1
  29. data/lib/kontena/cli/nodes/ssh_command.rb +13 -4
  30. data/lib/kontena/cli/plugin_command.rb +5 -9
  31. data/lib/kontena/cli/registry_command.rb +2 -5
  32. data/lib/kontena/cli/service_command.rb +22 -45
  33. data/lib/kontena/cli/services/container_command.rb +2 -3
  34. data/lib/kontena/cli/services/env_command.rb +3 -6
  35. data/lib/kontena/cli/services/secret_command.rb +2 -4
  36. data/lib/kontena/cli/stack_command.rb +11 -24
  37. data/lib/kontena/cli/stacks/registry_command.rb +5 -12
  38. data/lib/kontena/cli/stacks/upgrade_command.rb +6 -0
  39. data/lib/kontena/cli/stacks/yaml/reader.rb +17 -2
  40. data/lib/kontena/cli/subcommand_loader.rb +82 -0
  41. data/lib/kontena/cli/vault_command.rb +7 -15
  42. data/lib/kontena/cli/version.rb +6 -1
  43. data/lib/kontena/cli/vpn_command.rb +3 -7
  44. data/lib/kontena/command.rb +28 -1
  45. data/lib/kontena/machine/cloud_config/cloudinit.yml +1 -1
  46. data/lib/kontena/main_command.rb +22 -38
  47. data/lib/kontena/scripts/completer +2 -233
  48. data/lib/kontena/scripts/completer.rb +230 -0
  49. data/lib/kontena/scripts/init +5 -8
  50. data/lib/kontena/scripts/kontena.bash +8 -0
  51. data/lib/kontena/scripts/kontena.zsh +11 -0
  52. data/lib/kontena_cli.rb +9 -1
  53. data/omnibus/wrappers/sh/kontena +1 -1
  54. data/spec/fixtures/stack-with-liquid-optional.yml +14 -0
  55. data/spec/fixtures/stack-with-liquid-undefined.yml +12 -0
  56. data/spec/kontena/cli/app/build_command_spec.rb +1 -2
  57. data/spec/kontena/cli/app/common_spec.rb +1 -2
  58. data/spec/kontena/cli/app/config_command_spec.rb +0 -1
  59. data/spec/kontena/cli/app/deploy_command_spec.rb +2 -3
  60. data/spec/kontena/cli/app/docker_helper_spec.rb +0 -1
  61. data/spec/kontena/cli/app/init_command_spec.rb +0 -1
  62. data/spec/kontena/cli/app/logs_command_spec.rb +0 -1
  63. data/spec/kontena/cli/app/scale_spec.rb +2 -3
  64. data/spec/kontena/cli/app/service_generator_spec.rb +1 -2
  65. data/spec/kontena/cli/app/service_generator_v2_spec.rb +0 -1
  66. data/spec/kontena/cli/app/yaml/reader_spec.rb +0 -1
  67. data/spec/kontena/cli/app/yaml/service_extender_spec.rb +0 -1
  68. data/spec/kontena/cli/app/yaml/validator_spec.rb +0 -1
  69. data/spec/kontena/cli/app/yaml/validator_v2_spec.rb +0 -1
  70. data/spec/kontena/cli/cloud/login_command_spec.rb +0 -1
  71. data/spec/kontena/cli/cloud/logout_command_spec.rb +0 -1
  72. data/spec/kontena/cli/cloud/master/add_command_spec.rb +0 -1
  73. data/spec/kontena/cli/common_spec.rb +0 -1
  74. data/spec/kontena/cli/containers/list_command_spec.rb +0 -1
  75. data/spec/kontena/cli/containers/logs_command_spec.rb +0 -1
  76. data/spec/kontena/cli/etcd/health_command_spec.rb +2 -0
  77. data/spec/kontena/cli/grids/trusted_subnets/add_command_spec.rb +0 -11
  78. data/spec/kontena/cli/grids/trusted_subnets/list_command_spec.rb +4 -13
  79. data/spec/kontena/cli/grids/trusted_subnets/remove_command_spec.rb +0 -11
  80. data/spec/kontena/cli/grids/use_command_spec.rb +0 -1
  81. data/spec/kontena/cli/helpers/log_helper_spec.rb +0 -1
  82. data/spec/kontena/cli/main_command_spec.rb +2 -3
  83. data/spec/kontena/cli/master/current_command_spec.rb +5 -15
  84. data/spec/kontena/cli/master/init_cloud_command_spec.rb +0 -1
  85. data/spec/kontena/cli/master/login_command_spec.rb +0 -1
  86. data/spec/kontena/cli/master/logout_command_spec.rb +0 -1
  87. data/spec/kontena/cli/master/use_command_spec.rb +0 -1
  88. data/spec/kontena/cli/master/users/invite_command_spec.rb +1 -5
  89. data/spec/kontena/cli/master/users/remove_command_spec.rb +2 -14
  90. data/spec/kontena/cli/master/users/roles/add_command_spec.rb +0 -1
  91. data/spec/kontena/cli/master/users/roles/remove_command_spec.rb +0 -1
  92. data/spec/kontena/cli/nodes/list_command_spec.rb +2 -0
  93. data/spec/kontena/cli/services/containers_command_spec.rb +0 -18
  94. data/spec/kontena/cli/services/exec_command_spec.rb +6 -4
  95. data/spec/kontena/cli/services/link_command_spec.rb +5 -19
  96. data/spec/kontena/cli/services/restart_command_spec.rb +0 -16
  97. data/spec/kontena/cli/services/secrets/link_command_spec.rb +0 -11
  98. data/spec/kontena/cli/services/secrets/unlink_command_spec.rb +1 -12
  99. data/spec/kontena/cli/services/services_helper_spec.rb +0 -1
  100. data/spec/kontena/cli/services/unlink_command_spec.rb +7 -21
  101. data/spec/kontena/cli/services/update_command_spec.rb +0 -15
  102. data/spec/kontena/cli/stacks/build_command_spec.rb +0 -1
  103. data/spec/kontena/cli/stacks/deploy_command_spec.rb +10 -13
  104. data/spec/kontena/cli/stacks/install_command_spec.rb +0 -15
  105. data/spec/kontena/cli/stacks/list_command_spec.rb +4 -10
  106. data/spec/kontena/cli/stacks/remove_command_spec.rb +1 -16
  107. data/spec/kontena/cli/stacks/service_generator_spec.rb +0 -1
  108. data/spec/kontena/cli/stacks/service_generator_v2_spec.rb +0 -1
  109. data/spec/kontena/cli/stacks/show_command_spec.rb +1 -14
  110. data/spec/kontena/cli/stacks/upgrade_command_spec.rb +19 -1
  111. data/spec/kontena/cli/stacks/yaml/reader_spec.rb +163 -130
  112. data/spec/kontena/cli/stacks/yaml/service_extender_spec.rb +0 -1
  113. data/spec/kontena/cli/stacks/yaml/validator_v3_spec.rb +0 -1
  114. data/spec/kontena/cli/vault/export_spec.rb +0 -1
  115. data/spec/kontena/cli/vault/import_spec.rb +4 -5
  116. data/spec/kontena/cli/version_command_spec.rb +8 -6
  117. data/spec/kontena/cli/vpn/create_command_spec.rb +3 -4
  118. data/spec/kontena/client_spec.rb +0 -1
  119. data/spec/kontena/config_spec.rb +0 -1
  120. data/spec/kontena/kontena_cli_spec.rb +1 -1
  121. data/spec/kontena/main_command_spec.rb +0 -1
  122. data/spec/kontena/plugin_manager_spec.rb +0 -1
  123. data/spec/spec_helper.rb +1 -0
  124. data/spec/support/client_helpers.rb +1 -1
  125. data/spec/support/exit_with_error_helper.rb +36 -0
  126. data/spec/support/fixtures_helpers.rb +5 -2
  127. metadata +18 -7
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require "kontena/cli/apps/service_generator_v2"
3
2
  require 'ruby_dig'
4
3
 
@@ -1,4 +1,3 @@
1
- require_relative '../../../../spec_helper'
2
1
  require 'kontena/cli/apps/yaml/reader'
3
2
 
4
3
  describe Kontena::Cli::Apps::YAML::Reader do
@@ -1,4 +1,3 @@
1
- require_relative '../../../../spec_helper'
2
1
  require 'kontena/cli/apps/yaml/service_extender'
3
2
 
4
3
  describe Kontena::Cli::Apps::YAML::ServiceExtender do
@@ -1,4 +1,3 @@
1
- require_relative '../../../../spec_helper'
2
1
  require 'kontena/cli/apps/yaml/validator'
3
2
 
4
3
  describe Kontena::Cli::Apps::YAML::Validator do
@@ -1,4 +1,3 @@
1
- require_relative '../../../../spec_helper'
2
1
  require 'kontena/cli/apps/yaml/validator_v2'
3
2
 
4
3
  describe Kontena::Cli::Apps::YAML::ValidatorV2 do
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require 'kontena/cli/cloud/login_command'
3
2
  require 'kontena/cli/localhost_web_server'
4
3
  require 'launchy'
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require 'kontena/cli/cloud/logout_command'
3
2
 
4
3
  describe Kontena::Cli::Cloud::LogoutCommand do
@@ -1,4 +1,3 @@
1
- require_relative "../../../../spec_helper"
2
1
  require 'kontena/cli/cloud/master/add_command'
3
2
 
4
3
  describe Kontena::Cli::Cloud::Master::AddCommand do
@@ -1,4 +1,3 @@
1
- require_relative "../../spec_helper"
2
1
  require "kontena/cli/common"
3
2
 
4
3
  describe Kontena::Cli::Common do
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require 'kontena/cli/grid_options'
3
2
  require "kontena/cli/containers/list_command"
4
3
 
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require 'kontena/cli/grid_options'
3
2
  require "kontena/cli/containers/logs_command"
4
3
 
@@ -1,3 +1,5 @@
1
+ require 'kontena/cli/etcd/health_command'
2
+
1
3
  describe Kontena::Cli::Etcd::HealthCommand do
2
4
  include ClientHelpers
3
5
  include OutputHelpers
@@ -1,4 +1,3 @@
1
- require_relative "../../../../spec_helper"
2
1
  require "kontena/cli/grids/trusted_subnet_command"
3
2
  require "kontena/cli/grids/trusted_subnets/add_command"
4
3
 
@@ -7,16 +6,6 @@ describe Kontena::Cli::Grids::TrustedSubnets::AddCommand do
7
6
  include ClientHelpers
8
7
 
9
8
  describe '#execute' do
10
- it 'requires api url' do
11
- expect(subject).to receive(:require_api_url).once
12
- subject.run(['grid', 'subnet'])
13
- end
14
-
15
- it 'requires token' do
16
- expect(subject).to receive(:require_token).and_return(token)
17
- subject.run(['grid', 'subnet'])
18
- end
19
-
20
9
  it 'requires grid as param' do
21
10
  expect {
22
11
  subject.run([])
@@ -1,4 +1,3 @@
1
- require_relative "../../../../spec_helper"
2
1
  require "kontena/cli/grids/trusted_subnet_command"
3
2
  require "kontena/cli/grids/trusted_subnets/list_command"
4
3
 
@@ -7,16 +6,6 @@ describe Kontena::Cli::Grids::TrustedSubnets::ListCommand do
7
6
  include ClientHelpers
8
7
 
9
8
  describe '#execute' do
10
- it 'requires api url' do
11
- expect(subject).to receive(:require_api_url).once
12
- subject.run(['grid'])
13
- end
14
-
15
- it 'requires token' do
16
- expect(subject).to receive(:require_token).and_return(token)
17
- subject.run(['grid'])
18
- end
19
-
20
9
  it 'requires grid as param' do
21
10
  expect {
22
11
  subject.run([])
@@ -24,8 +13,10 @@ describe Kontena::Cli::Grids::TrustedSubnets::ListCommand do
24
13
  end
25
14
 
26
15
  it 'requests grid details from master' do
27
- expect(client).to receive(:get).with("grids/test-grid")
28
- subject.run(['test-grid'])
16
+ expect(client).to receive(:get).with("grids/test-grid").and_return('trusted_subnets' => [
17
+ '192.168.0.1/24',
18
+ ])
19
+ expect{subject.run(['test-grid'])}.to output("192.168.0.1/24\n").to_stdout
29
20
  end
30
21
  end
31
22
  end
@@ -1,4 +1,3 @@
1
- require_relative "../../../../spec_helper"
2
1
  require "kontena/cli/grids/trusted_subnet_command"
3
2
  require "kontena/cli/grids/trusted_subnets/remove_command"
4
3
 
@@ -7,16 +6,6 @@ describe Kontena::Cli::Grids::TrustedSubnets::RemoveCommand do
7
6
  include ClientHelpers
8
7
 
9
8
  describe '#execute' do
10
- it 'requires api url' do
11
- expect(subject).to receive(:require_api_url).once
12
- subject.run(['--force', 'grid', 'subnet'])
13
- end
14
-
15
- it 'requires token' do
16
- expect(subject).to receive(:require_token).and_return(token)
17
- subject.run(['--force', 'grid', 'subnet'])
18
- end
19
-
20
9
  it 'requires grid as param' do
21
10
  expect {
22
11
  subject.run([])
@@ -1,5 +1,4 @@
1
1
 
2
- require_relative "../../../spec_helper"
3
2
  require 'kontena/cli/grids/use_command'
4
3
 
5
4
  describe Kontena::Cli::Grids::UseCommand do
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require "kontena/cli/helpers/log_helper"
3
2
 
4
3
  describe Kontena::Cli::Helpers::LogHelper do
@@ -1,4 +1,3 @@
1
- require_relative "../../spec_helper"
2
1
  require "kontena/main_command"
3
2
 
4
3
  describe Kontena::MainCommand do
@@ -7,8 +6,8 @@ describe Kontena::MainCommand do
7
6
  describe '#subcommand_missing' do
8
7
  it 'suggests plugin install for known plugin commands' do
9
8
  expect(subject).to receive(:known_plugin_subcommand?).with('testplugin').and_return(true)
10
- expect(subject).to receive(:exit_with_error).with(/plugin has not been installed/).and_raise(StandardError)
11
- expect{subject.run(['testplugin', 'master', 'create'])}.to raise_error(StandardError)
9
+ expect(subject).to receive(:exit_with_error).with(/plugin has not been installed/).and_call_original
10
+ expect{subject.run(['testplugin', 'master', 'create'])}.to exit_with_error
12
11
  end
13
12
 
14
13
  it 'runs normal error handling for unknown sub commands' do
@@ -1,36 +1,26 @@
1
- require_relative "../../../spec_helper"
2
1
  require 'kontena/cli/master/current_command'
3
2
 
4
3
  describe Kontena::Cli::Master::CurrentCommand do
5
4
  include ClientHelpers
6
-
5
+
7
6
  let(:subject) { described_class.new(File.basename($0)) }
8
7
 
9
8
  describe '#execute' do
10
9
  it 'puts master name and URL' do
11
- expect {
12
- subject.run([])
13
- }.to output(/alias.*someurl/).to_stdout
10
+ expect{subject.run([])}.to output(/alias.*someurl/).to_stdout
14
11
  end
15
12
 
16
13
  it 'only outputs name if name-flag is set' do
17
- expect {
18
- subject.run(['--name'])
19
- }.to output("alias\n").to_stdout
14
+ expect{subject.run(['--name'])}.to output("alias\n").to_stdout
20
15
  end
21
16
 
22
17
  it 'does not raise error when logged in' do
23
- expect {
24
- subject.run([])
25
- }.to_not raise_error
18
+ expect{subject.run([])}.not_to exit_with_error
26
19
  end
27
20
 
28
21
  it 'raises error when not logged in' do
29
22
  expect(subject.config).to receive(:current_master).and_return(nil)
30
-
31
- expect {
32
- subject.run([])
33
- }.to raise_error(ArgumentError)
23
+ expect{subject.run([])}.to exit_with_error
34
24
  end
35
25
  end
36
26
  end
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require "kontena/cli/master/init_cloud_command"
3
2
 
4
3
  describe Kontena::Cli::Master::InitCloudCommand do
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require 'kontena/cli/master/login_command'
3
2
  require 'kontena/cli/localhost_web_server'
4
3
  require 'launchy'
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require 'kontena/cli/master/logout_command'
3
2
 
4
3
  describe Kontena::Cli::Master::LogoutCommand do
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require 'kontena/cli/master/use_command'
3
2
 
4
3
  describe Kontena::Cli::Master::UseCommand do
@@ -1,4 +1,3 @@
1
- require_relative "../../../../spec_helper"
2
1
  require 'kontena/cli/master/users_command'
3
2
  require 'kontena/cli/master/users/invite_command'
4
3
 
@@ -6,13 +5,10 @@ describe Kontena::Cli::Master::Users::InviteCommand do
6
5
 
7
6
  include ClientHelpers
8
7
 
9
- let(:subject) do
10
- described_class.new(File.basename($0))
11
- end
12
-
13
8
  describe "#invite" do
14
9
  it 'makes invitation request for all given users' do
15
10
  expect(client).to receive(:post).with("/oauth2/authorize", {email: 'john@example.org', external_id: nil, response_type: "invite"}).once
11
+ expect(client).to receive(:post).with("/oauth2/authorize", {email: 'jane@example.org', external_id: nil, response_type: "invite"}).once
16
12
 
17
13
  subject.run(['john@example.org', 'jane@example.org'])
18
14
  end
@@ -1,4 +1,3 @@
1
- require_relative "../../../../spec_helper"
2
1
  require 'kontena/cli/master/users_command'
3
2
  require "kontena/cli/master/users/remove_command"
4
3
 
@@ -12,25 +11,14 @@ describe Kontena::Cli::Master::Users::RemoveCommand do
12
11
  allow(subject).to receive(:confirm).and_return(true)
13
12
  end
14
13
 
15
- it 'requires api url' do
16
- expect(subject).to receive(:require_api_url).once
17
- subject.run(['john@domain.com'])
18
- end
19
-
20
14
  it 'it requires confirmation' do
21
15
  expect(subject).to receive(:confirm).once
22
- subject.run(['john@domain.com'])
23
- end
24
-
25
- it 'requires token' do
26
- expect(subject).to receive(:require_token).and_return(token)
16
+ expect(client).to receive(:delete).with('users/john@domain.com')
27
17
  subject.run(['john@domain.com'])
28
18
  end
29
19
 
30
20
  it 'sends email to master' do
31
- expect(client).to receive(:delete).with(
32
- 'users/john@domain.com'
33
- )
21
+ expect(client).to receive(:delete).with('users/john@domain.com')
34
22
  subject.run(['john@domain.com'])
35
23
  end
36
24
  end
@@ -1,4 +1,3 @@
1
- require_relative "../../../../../spec_helper"
2
1
  require 'kontena/cli/master/users_command'
3
2
  require 'kontena/cli/master/users/roles/add_command'
4
3
 
@@ -1,4 +1,3 @@
1
- require_relative "../../../../../spec_helper"
2
1
  require 'kontena/cli/master/users_command'
3
2
  require 'kontena/cli/master/users/roles/remove_command'
4
3
 
@@ -1,3 +1,5 @@
1
+ require 'kontena/cli/nodes/list_command'
2
+
1
3
  describe Kontena::Cli::Nodes::ListCommand do
2
4
  include ClientHelpers
3
5
  include OutputHelpers
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require "kontena/cli/services/containers_command"
3
2
 
4
3
  describe Kontena::Cli::Services::ContainersCommand do
@@ -6,23 +5,6 @@ describe Kontena::Cli::Services::ContainersCommand do
6
5
  include ClientHelpers
7
6
 
8
7
  describe '#execute' do
9
-
10
- before(:each) do
11
- allow(client).to receive(:get).and_return({
12
- 'containers' => []
13
- })
14
- end
15
-
16
- it 'requires api url' do
17
- expect(subject).to receive(:require_api_url).once
18
- subject.run(['service-a'])
19
- end
20
-
21
- it 'requires token' do
22
- expect(subject).to receive(:require_token).and_return(token)
23
- subject.run(['service-a'])
24
- end
25
-
26
8
  it 'to not throw on missing "overlay_cidr" property' do
27
9
  allow(client).to receive(:get).and_return({
28
10
  'containers' => [
@@ -1,3 +1,5 @@
1
+ require 'kontena/cli/services/exec_command'
2
+
1
3
  describe Kontena::Cli::Services::ExecCommand do
2
4
  include ClientHelpers
3
5
  include OutputHelpers
@@ -98,7 +100,7 @@ describe Kontena::Cli::Services::ExecCommand do
98
100
  it "Errors on a nonexistant container if given" do
99
101
  expect(client).to receive(:get).with('services/test-grid/null/test-service/containers').and_return(service_containers)
100
102
 
101
- expect{subject.run(['--instance=4', 'test-service', 'test'])}.to output(/Service test-service does not have container instance 4/).to_stderr.and raise_error(SystemExit)
103
+ expect{subject.run(['--instance=4', 'test-service', 'test'])}.to exit_with_error.and output(/Service test-service does not have container instance 4/).to_stderr
102
104
  end
103
105
 
104
106
  it "Executes on each running container" do
@@ -114,7 +116,7 @@ describe Kontena::Cli::Services::ExecCommand do
114
116
  expect(client).to receive(:get).with('services/test-grid/null/test-service/containers').and_return(service_containers)
115
117
  expect(client).to receive(:post).with('containers/test-grid/host/test-service.container-1/exec', { cmd: ['test'] }).and_return(exec_fail)
116
118
 
117
- expect{subject.run(['--silent', '--all', 'test-service', 'test'])}.to output("error\n").to_stderr.and raise_error(SystemExit)
119
+ expect{subject.run(['--silent', '--all', 'test-service', 'test'])}.to exit_with_error.and output("error\n").to_stderr
118
120
  end
119
121
 
120
122
  it "Stops if the second container fails" do
@@ -122,7 +124,7 @@ describe Kontena::Cli::Services::ExecCommand do
122
124
  expect(client).to receive(:post).with('containers/test-grid/host/test-service.container-1/exec', { cmd: ['test'] }).and_return(exec_ok)
123
125
  expect(client).to receive(:post).with('containers/test-grid/host/test-service.container-2/exec', { cmd: ['test'] }).and_return(exec_fail)
124
126
 
125
- expect{subject.run(['--silent', '--all', 'test-service', 'test'])}.to output("ok\n").to_stdout.and output("error\n").to_stderr.and raise_error(SystemExit)
127
+ expect{subject.run(['--silent', '--all', 'test-service', 'test'])}.to exit_with_error.and output("ok\n").to_stdout.and output("error\n").to_stderr
126
128
  end
127
129
 
128
130
  it "Keeps going if the second container fails when using --skip" do
@@ -131,7 +133,7 @@ describe Kontena::Cli::Services::ExecCommand do
131
133
  expect(client).to receive(:post).with('containers/test-grid/host/test-service.container-2/exec', { cmd: ['test'] }).and_return(exec_fail)
132
134
  expect(client).to receive(:post).with('containers/test-grid/host/test-service.container-3/exec', { cmd: ['test'] }).and_return(exec_ok)
133
135
 
134
- expect{subject.run(['--silent', '--all', '--skip', 'test-service', 'test'])}.to output("ok\nok\n").to_stdout.and output("error\n").to_stderr.and raise_error(SystemExit)
136
+ expect{subject.run(['--silent', '--all', '--skip', 'test-service', 'test'])}.to exit_with_error.and output("ok\nok\n").to_stdout.and output("error\n").to_stderr
135
137
  end
136
138
  end
137
139
  end
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require "kontena/cli/services/link_command"
3
2
 
4
3
  describe Kontena::Cli::Services::LinkCommand do
@@ -6,34 +5,21 @@ describe Kontena::Cli::Services::LinkCommand do
6
5
  include ClientHelpers
7
6
 
8
7
  describe '#execute' do
9
- before(:each) do
10
- allow(client).to receive(:get).and_return({
11
- 'links' => []
12
- })
13
- end
14
-
15
- it 'requires api url' do
16
- expect(subject).to receive(:require_api_url).once
17
- subject.run(['service-a', 'service-b'])
18
- end
19
-
20
- it 'requires token' do
21
- expect(subject).to receive(:require_token).and_return(token)
22
- subject.run(['service-a', 'service-b'])
23
- end
24
-
25
8
  it 'aborts if service is already linked' do
26
- allow(client).to receive(:get).and_return({
9
+ expect(client).to receive(:get).with('services/test-grid/null/service-a').and_return({
27
10
  'links' => [
28
11
  {'alias' => 'service-b', 'id' => "grid/null/service-b"}
29
12
  ]
30
13
  })
31
14
  expect {
32
15
  subject.run(['service-a', 'service-b'])
33
- }.to raise_error(SystemExit)
16
+ }.to exit_with_error
34
17
  end
35
18
 
36
19
  it 'sends link to master' do
20
+ expect(client).to receive(:get).with('services/test-grid/null/service-a').and_return({
21
+ 'links' => []
22
+ })
37
23
  expect(client).to receive(:put).with(
38
24
  'services/test-grid/null/service-a', {links: [{name: 'null/service-b', alias: 'service-b'}]}
39
25
  )
@@ -1,4 +1,3 @@
1
- require_relative "../../../spec_helper"
2
1
  require "kontena/cli/services/restart_command"
3
2
 
4
3
  describe Kontena::Cli::Services::RestartCommand do
@@ -6,21 +5,6 @@ describe Kontena::Cli::Services::RestartCommand do
6
5
  include ClientHelpers
7
6
 
8
7
  describe '#execute' do
9
-
10
- before(:each) do
11
- allow(subject).to receive(:restart_service).and_return({})
12
- end
13
-
14
- it 'requires api url' do
15
- expect(subject).to receive(:require_api_url).once
16
- subject.run(['service'])
17
- end
18
-
19
- it 'requires token' do
20
- expect(subject).to receive(:require_token).once
21
- subject.run(['service'])
22
- end
23
-
24
8
  it 'triggers restart command' do
25
9
  expect(subject).to receive(:restart_service)
26
10
  subject.run(['service'])