kontena-cli 0.11.7 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/bin/kontena +2 -4
  4. data/kontena-cli.gemspec +1 -0
  5. data/lib/kontena/cli/app_command.rb +1 -1
  6. data/lib/kontena/cli/apps/common.rb +30 -3
  7. data/lib/kontena/cli/apps/deploy_command.rb +1 -0
  8. data/lib/kontena/cli/apps/list_command.rb +1 -0
  9. data/lib/kontena/cli/apps/logs_command.rb +9 -3
  10. data/lib/kontena/cli/apps/monitor_command.rb +1 -0
  11. data/lib/kontena/cli/apps/remove_command.rb +2 -0
  12. data/lib/kontena/cli/apps/scale_command.rb +2 -1
  13. data/lib/kontena/cli/apps/show_command.rb +1 -0
  14. data/lib/kontena/cli/apps/start_command.rb +1 -0
  15. data/lib/kontena/cli/apps/stop_command.rb +1 -0
  16. data/lib/kontena/cli/common.rb +5 -1
  17. data/lib/kontena/cli/containers/exec_command.rb +1 -0
  18. data/lib/kontena/cli/containers/inspect_command.rb +1 -0
  19. data/lib/kontena/cli/etcd/get_command.rb +2 -1
  20. data/lib/kontena/cli/etcd/list_command.rb +1 -0
  21. data/lib/kontena/cli/etcd/mkdir_command.rb +2 -1
  22. data/lib/kontena/cli/etcd/remove_command.rb +2 -1
  23. data/lib/kontena/cli/etcd/set_command.rb +2 -1
  24. data/lib/kontena/cli/etcd_command.rb +2 -2
  25. data/lib/kontena/cli/external_registries/add_command.rb +1 -0
  26. data/lib/kontena/cli/external_registries/delete_command.rb +2 -0
  27. data/lib/kontena/cli/external_registries/list_command.rb +1 -0
  28. data/lib/kontena/cli/external_registries/remove_command.rb +13 -0
  29. data/lib/kontena/cli/external_registry_command.rb +4 -3
  30. data/lib/kontena/cli/grid_command.rb +5 -1
  31. data/lib/kontena/cli/grid_options.rb +12 -0
  32. data/lib/kontena/cli/grids/add_user_command.rb +1 -0
  33. data/lib/kontena/cli/grids/cloud_config_command.rb +41 -0
  34. data/lib/kontena/cli/grids/common.rb +65 -4
  35. data/lib/kontena/cli/grids/logs_command.rb +9 -4
  36. data/lib/kontena/cli/grids/remove_user_command.rb +1 -0
  37. data/lib/kontena/cli/grids/update_command.rb +27 -0
  38. data/lib/kontena/cli/master/use_command.rb +12 -2
  39. data/lib/kontena/cli/master/users/add_role_command.rb +26 -0
  40. data/lib/kontena/cli/master/users/invite_command.rb +24 -0
  41. data/lib/kontena/cli/master/users/list_command.rb +18 -0
  42. data/lib/kontena/cli/master/users/remove_role_command.rb +26 -0
  43. data/lib/kontena/cli/master/users_command.rb +14 -0
  44. data/lib/kontena/cli/master_command.rb +2 -1
  45. data/lib/kontena/cli/node_command.rb +7 -1
  46. data/lib/kontena/cli/nodes/add_label_command.rb +19 -0
  47. data/lib/kontena/cli/nodes/aws/create_command.rb +2 -1
  48. data/lib/kontena/cli/nodes/aws/restart_command.rb +1 -0
  49. data/lib/kontena/cli/nodes/aws/terminate_command.rb +1 -0
  50. data/lib/kontena/cli/nodes/azure/create_command.rb +1 -0
  51. data/lib/kontena/cli/nodes/azure/restart_command.rb +1 -0
  52. data/lib/kontena/cli/nodes/azure/terminate_command.rb +1 -0
  53. data/lib/kontena/cli/nodes/digital_ocean/create_command.rb +1 -0
  54. data/lib/kontena/cli/nodes/digital_ocean/restart_command.rb +1 -0
  55. data/lib/kontena/cli/nodes/digital_ocean/terminate_command.rb +1 -0
  56. data/lib/kontena/cli/nodes/list_command.rb +10 -14
  57. data/lib/kontena/cli/nodes/remove_command.rb +1 -0
  58. data/lib/kontena/cli/nodes/remove_label_command.rb +23 -0
  59. data/lib/kontena/cli/nodes/show_command.rb +1 -0
  60. data/lib/kontena/cli/nodes/ssh_command.rb +1 -0
  61. data/lib/kontena/cli/nodes/update_command.rb +1 -0
  62. data/lib/kontena/cli/nodes/vagrant/create_command.rb +1 -0
  63. data/lib/kontena/cli/nodes/vagrant/restart_command.rb +1 -0
  64. data/lib/kontena/cli/nodes/vagrant/ssh_command.rb +1 -0
  65. data/lib/kontena/cli/nodes/vagrant/start_command.rb +1 -0
  66. data/lib/kontena/cli/nodes/vagrant/stop_command.rb +1 -0
  67. data/lib/kontena/cli/nodes/vagrant/terminate_command.rb +1 -0
  68. data/lib/kontena/cli/registry/create_command.rb +80 -30
  69. data/lib/kontena/cli/registry/delete_command.rb +3 -0
  70. data/lib/kontena/cli/registry/remove_command.rb +15 -0
  71. data/lib/kontena/cli/registry_command.rb +3 -1
  72. data/lib/kontena/cli/service_command.rb +20 -4
  73. data/lib/kontena/cli/services/add_env_command.rb +1 -0
  74. data/lib/kontena/cli/services/add_secret_command.rb +24 -0
  75. data/lib/kontena/cli/services/containers_command.rb +1 -0
  76. data/lib/kontena/cli/services/create_command.rb +3 -2
  77. data/lib/kontena/cli/services/delete_command.rb +2 -0
  78. data/lib/kontena/cli/services/deploy_command.rb +1 -0
  79. data/lib/kontena/cli/services/envs_command.rb +1 -0
  80. data/lib/kontena/cli/services/link_command.rb +26 -0
  81. data/lib/kontena/cli/services/list_command.rb +13 -10
  82. data/lib/kontena/cli/services/logs_command.rb +13 -5
  83. data/lib/kontena/cli/services/monitor_command.rb +1 -0
  84. data/lib/kontena/cli/services/remove_command.rb +17 -0
  85. data/lib/kontena/cli/services/remove_env_command.rb +1 -0
  86. data/lib/kontena/cli/services/remove_secret_command.rb +28 -0
  87. data/lib/kontena/cli/services/restart_command.rb +1 -0
  88. data/lib/kontena/cli/services/scale_command.rb +2 -1
  89. data/lib/kontena/cli/services/show_command.rb +1 -0
  90. data/lib/kontena/cli/services/start_command.rb +1 -0
  91. data/lib/kontena/cli/services/stats_command.rb +5 -4
  92. data/lib/kontena/cli/services/stop_command.rb +1 -0
  93. data/lib/kontena/cli/services/unlink_command.rb +25 -0
  94. data/lib/kontena/cli/services/update_command.rb +4 -3
  95. data/lib/kontena/cli/users_command.rb +15 -0
  96. data/lib/kontena/cli/vault/list_command.rb +1 -0
  97. data/lib/kontena/cli/vault/read_command.rb +1 -0
  98. data/lib/kontena/cli/vault/remove_command.rb +1 -0
  99. data/lib/kontena/cli/vault/write_command.rb +1 -0
  100. data/lib/kontena/cli/version_command.rb +9 -1
  101. data/lib/kontena/cli/vpn/config_command.rb +1 -0
  102. data/lib/kontena/cli/vpn/create_command.rb +1 -0
  103. data/lib/kontena/cli/vpn/delete_command.rb +2 -0
  104. data/lib/kontena/cli/vpn/remove_command.rb +15 -0
  105. data/lib/kontena/cli/vpn_command.rb +3 -1
  106. data/lib/kontena/machine/aws/node_destroyer.rb +1 -1
  107. data/lib/kontena/machine/cloud_config/cloudinit.yml +70 -0
  108. data/lib/kontena/machine/cloud_config/node_generator.rb +28 -0
  109. data/lib/kontena/machine/digital_ocean/cloudinit.yml +22 -0
  110. data/lib/kontena/machine/digital_ocean/node_destroyer.rb +4 -2
  111. data/lib/kontena/machine/random_name.rb +3 -3
  112. data/lib/kontena/scripts/completer +7 -3
  113. data/spec/fixtures/docker-compose.yml +8 -0
  114. data/spec/fixtures/kontena.yml +17 -0
  115. data/spec/fixtures/mysql.yml +3 -0
  116. data/spec/fixtures/wordpress-scaled.yml +3 -0
  117. data/spec/fixtures/wordpress.yml +2 -0
  118. data/spec/kontena/cli/app/common_spec.rb +42 -0
  119. data/spec/kontena/cli/app/deploy_command_spec.rb +4 -31
  120. data/spec/kontena/cli/app/scale_spec.rb +4 -23
  121. data/spec/kontena/cli/master/use_command_spec.rb +12 -3
  122. data/spec/kontena/cli/master/users/add_role_command_spec.rb +35 -0
  123. data/spec/kontena/cli/master/users/invite_command_spec.rb +35 -0
  124. data/spec/kontena/cli/master/users/remove_role_command_spec.rb +35 -0
  125. data/spec/kontena/cli/services/add_secret_command_spec.rb +61 -0
  126. data/spec/kontena/cli/services/link_command_spec.rb +43 -0
  127. data/spec/kontena/cli/services/remove_secret_command_spec.rb +48 -0
  128. data/spec/kontena/cli/services/restart_command_spec.rb +1 -23
  129. data/spec/kontena/cli/services/unlink_command_spec.rb +43 -0
  130. data/spec/kontena/cli/version_command_spec.rb +17 -0
  131. data/spec/spec_helper.rb +6 -1
  132. data/spec/support/client_helpers.rb +31 -0
  133. data/spec/support/fixtures_helpers.rb +7 -0
  134. metadata +67 -6
  135. data/lib/kontena/cli/deploy_command.rb +0 -164
  136. data/lib/kontena/cli/invite_command.rb +0 -13
  137. data/spec/kontena/cli/deploy_command_spec.rb +0 -239
@@ -3,33 +3,11 @@ require "kontena/cli/services/restart_command"
3
3
 
4
4
  describe Kontena::Cli::Services::RestartCommand do
5
5
 
6
- let(:subject) do
7
- described_class.new(File.basename($0))
8
- end
9
-
10
- let(:client) do
11
- double
12
- end
13
-
14
- let(:token) do
15
- '1234567'
16
- end
17
-
18
- let(:settings) do
19
- {'current_server' => 'alias',
20
- 'servers' => [
21
- {'name' => 'some_master', 'url' => 'some_master'},
22
- {'name' => 'alias', 'url' => 'someurl', 'token' => token}
23
- ]
24
- }
25
- end
6
+ include ClientHelpers
26
7
 
27
8
  describe '#execute' do
28
9
 
29
10
  before(:each) do
30
- allow(subject).to receive(:client).with(token).and_return(client)
31
- allow(subject).to receive(:current_grid).and_return('test-grid')
32
- allow(subject).to receive(:settings).and_return(settings)
33
11
  allow(subject).to receive(:restart_service).and_return({})
34
12
  end
35
13
 
@@ -0,0 +1,43 @@
1
+ require_relative "../../../spec_helper"
2
+ require "kontena/cli/services/unlink_command"
3
+
4
+ describe Kontena::Cli::Services::UnlinkCommand do
5
+
6
+ include ClientHelpers
7
+
8
+ describe '#execute' do
9
+ before(:each) do
10
+ allow(client).to receive(:get).and_return({
11
+ 'links' => [
12
+ {'alias' => 'service-b', 'grid_service_id' => "grid/service-b"}
13
+ ]
14
+ })
15
+ end
16
+
17
+ it 'requires api url' do
18
+ expect(subject).to receive(:require_api_url).once
19
+ subject.run(['service-a', 'service-b'])
20
+ end
21
+
22
+ it 'requires token' do
23
+ expect(subject).to receive(:require_token).and_return(token)
24
+ subject.run(['service-a', 'service-b'])
25
+ end
26
+
27
+ it 'aborts if service is not linked' do
28
+ allow(client).to receive(:get).and_return({
29
+ 'links' => []
30
+ })
31
+ expect {
32
+ subject.run(['service-a', 'service-b'])
33
+ }.to raise_error(SystemExit)
34
+ end
35
+
36
+ it 'sends link to master' do
37
+ expect(client).to receive(:put).with(
38
+ 'services/test-grid/service-a', {links: []}
39
+ )
40
+ subject.run(['service-a', 'service-b'])
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../../spec_helper"
2
+ require "kontena/cli/version_command"
3
+
4
+ describe Kontena::Cli::VersionCommand do
5
+
6
+ include ClientHelpers
7
+
8
+ describe '#execute' do
9
+ before(:each) do
10
+ allow(subject).to receive(:client).and_return(client)
11
+ end
12
+
13
+ it 'runs without errors' do
14
+ subject.run([])
15
+ end
16
+ end
17
+ end
data/spec/spec_helper.rb CHANGED
@@ -18,5 +18,10 @@ RSpec.configure do |config|
18
18
  # the seed, which is printed after each run.
19
19
  # --seed 1234
20
20
  config.order = 'random'
21
-
21
+ config.before(:each) do
22
+ allow(Dir).to receive(:home).and_return('/tmp/')
23
+ end
22
24
  end
25
+
26
+ require_relative 'support/client_helpers'
27
+ require_relative 'support/fixtures_helpers'
@@ -0,0 +1,31 @@
1
+ module ClientHelpers
2
+
3
+ def self.included(base)
4
+ base.let(:subject) do
5
+ described_class.new(File.basename($0))
6
+ end
7
+
8
+ base.let(:client) do
9
+ spy(:client)
10
+ end
11
+
12
+ base.let(:token) do
13
+ '1234567'
14
+ end
15
+
16
+ base.let(:settings) do
17
+ {'current_server' => 'alias',
18
+ 'servers' => [
19
+ {'name' => 'some_master', 'url' => 'some_master'},
20
+ {'name' => 'alias', 'url' => 'someurl', 'token' => token}
21
+ ]
22
+ }
23
+ end
24
+
25
+ base.before(:each) do
26
+ allow(subject).to receive(:client).with(token).and_return(client)
27
+ allow(subject).to receive(:current_grid).and_return('test-grid')
28
+ allow(subject).to receive(:settings).and_return(settings)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,7 @@
1
+ module FixturesHelpers
2
+ FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/'
3
+
4
+ def fixture(file)
5
+ IO.read(FIXTURES_PATH+file)
6
+ end
7
+ 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.11.7
4
+ version: 0.12.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: 2016-03-08 00:00:00.000000000 Z
11
+ date: 2016-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: ruby_dig
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: Kontena command line tool
112
126
  email:
113
127
  - info@kontena.io
@@ -148,7 +162,6 @@ files:
148
162
  - lib/kontena/cli/container_command.rb
149
163
  - lib/kontena/cli/containers/exec_command.rb
150
164
  - lib/kontena/cli/containers/inspect_command.rb
151
- - lib/kontena/cli/deploy_command.rb
152
165
  - lib/kontena/cli/etcd/common.rb
153
166
  - lib/kontena/cli/etcd/get_command.rb
154
167
  - lib/kontena/cli/etcd/list_command.rb
@@ -159,11 +172,14 @@ files:
159
172
  - lib/kontena/cli/external_registries/add_command.rb
160
173
  - lib/kontena/cli/external_registries/delete_command.rb
161
174
  - lib/kontena/cli/external_registries/list_command.rb
175
+ - lib/kontena/cli/external_registries/remove_command.rb
162
176
  - lib/kontena/cli/external_registry_command.rb
163
177
  - lib/kontena/cli/forgot_password_command.rb
164
178
  - lib/kontena/cli/grid_command.rb
179
+ - lib/kontena/cli/grid_options.rb
165
180
  - lib/kontena/cli/grids/add_user_command.rb
166
181
  - lib/kontena/cli/grids/audit_log_command.rb
182
+ - lib/kontena/cli/grids/cloud_config_command.rb
167
183
  - lib/kontena/cli/grids/common.rb
168
184
  - lib/kontena/cli/grids/create_command.rb
169
185
  - lib/kontena/cli/grids/current_command.rb
@@ -174,8 +190,8 @@ files:
174
190
  - lib/kontena/cli/grids/remove_command.rb
175
191
  - lib/kontena/cli/grids/remove_user_command.rb
176
192
  - lib/kontena/cli/grids/show_command.rb
193
+ - lib/kontena/cli/grids/update_command.rb
177
194
  - lib/kontena/cli/grids/use_command.rb
178
- - lib/kontena/cli/invite_command.rb
179
195
  - lib/kontena/cli/login_command.rb
180
196
  - lib/kontena/cli/logout_command.rb
181
197
  - lib/kontena/cli/master/aws/create_command.rb
@@ -186,6 +202,11 @@ files:
186
202
  - lib/kontena/cli/master/digital_ocean_command.rb
187
203
  - lib/kontena/cli/master/list_command.rb
188
204
  - lib/kontena/cli/master/use_command.rb
205
+ - lib/kontena/cli/master/users/add_role_command.rb
206
+ - lib/kontena/cli/master/users/invite_command.rb
207
+ - lib/kontena/cli/master/users/list_command.rb
208
+ - lib/kontena/cli/master/users/remove_role_command.rb
209
+ - lib/kontena/cli/master/users_command.rb
189
210
  - lib/kontena/cli/master/vagrant/create_command.rb
190
211
  - lib/kontena/cli/master/vagrant/restart_command.rb
191
212
  - lib/kontena/cli/master/vagrant/ssh_command.rb
@@ -195,6 +216,7 @@ files:
195
216
  - lib/kontena/cli/master/vagrant_command.rb
196
217
  - lib/kontena/cli/master_command.rb
197
218
  - lib/kontena/cli/node_command.rb
219
+ - lib/kontena/cli/nodes/add_label_command.rb
198
220
  - lib/kontena/cli/nodes/aws/create_command.rb
199
221
  - lib/kontena/cli/nodes/aws/restart_command.rb
200
222
  - lib/kontena/cli/nodes/aws/terminate_command.rb
@@ -209,6 +231,7 @@ files:
209
231
  - lib/kontena/cli/nodes/digital_ocean_command.rb
210
232
  - lib/kontena/cli/nodes/list_command.rb
211
233
  - lib/kontena/cli/nodes/remove_command.rb
234
+ - lib/kontena/cli/nodes/remove_label_command.rb
212
235
  - lib/kontena/cli/nodes/show_command.rb
213
236
  - lib/kontena/cli/nodes/ssh_command.rb
214
237
  - lib/kontena/cli/nodes/update_command.rb
@@ -222,20 +245,25 @@ files:
222
245
  - lib/kontena/cli/register_command.rb
223
246
  - lib/kontena/cli/registry/create_command.rb
224
247
  - lib/kontena/cli/registry/delete_command.rb
248
+ - lib/kontena/cli/registry/remove_command.rb
225
249
  - lib/kontena/cli/registry_command.rb
226
250
  - lib/kontena/cli/reset_password_command.rb
227
251
  - lib/kontena/cli/service_command.rb
228
252
  - lib/kontena/cli/services/add_env_command.rb
253
+ - lib/kontena/cli/services/add_secret_command.rb
229
254
  - lib/kontena/cli/services/container_command.rb
230
255
  - lib/kontena/cli/services/containers_command.rb
231
256
  - lib/kontena/cli/services/create_command.rb
232
257
  - lib/kontena/cli/services/delete_command.rb
233
258
  - lib/kontena/cli/services/deploy_command.rb
234
259
  - lib/kontena/cli/services/envs_command.rb
260
+ - lib/kontena/cli/services/link_command.rb
235
261
  - lib/kontena/cli/services/list_command.rb
236
262
  - lib/kontena/cli/services/logs_command.rb
237
263
  - lib/kontena/cli/services/monitor_command.rb
264
+ - lib/kontena/cli/services/remove_command.rb
238
265
  - lib/kontena/cli/services/remove_env_command.rb
266
+ - lib/kontena/cli/services/remove_secret_command.rb
239
267
  - lib/kontena/cli/services/restart_command.rb
240
268
  - lib/kontena/cli/services/scale_command.rb
241
269
  - lib/kontena/cli/services/services_helper.rb
@@ -243,7 +271,9 @@ files:
243
271
  - lib/kontena/cli/services/start_command.rb
244
272
  - lib/kontena/cli/services/stats_command.rb
245
273
  - lib/kontena/cli/services/stop_command.rb
274
+ - lib/kontena/cli/services/unlink_command.rb
246
275
  - lib/kontena/cli/services/update_command.rb
276
+ - lib/kontena/cli/users_command.rb
247
277
  - lib/kontena/cli/vault/list_command.rb
248
278
  - lib/kontena/cli/vault/read_command.rb
249
279
  - lib/kontena/cli/vault/remove_command.rb
@@ -256,6 +286,7 @@ files:
256
286
  - lib/kontena/cli/vpn/config_command.rb
257
287
  - lib/kontena/cli/vpn/create_command.rb
258
288
  - lib/kontena/cli/vpn/delete_command.rb
289
+ - lib/kontena/cli/vpn/remove_command.rb
259
290
  - lib/kontena/cli/vpn_command.rb
260
291
  - lib/kontena/cli/whoami_command.rb
261
292
  - lib/kontena/client.rb
@@ -274,6 +305,8 @@ files:
274
305
  - lib/kontena/machine/azure/master_provisioner.rb
275
306
  - lib/kontena/machine/azure/node_destroyer.rb
276
307
  - lib/kontena/machine/azure/node_provisioner.rb
308
+ - lib/kontena/machine/cloud_config/cloudinit.yml
309
+ - lib/kontena/machine/cloud_config/node_generator.rb
277
310
  - lib/kontena/machine/common.rb
278
311
  - lib/kontena/machine/digital_ocean.rb
279
312
  - lib/kontena/machine/digital_ocean/cloudinit.yml
@@ -292,18 +325,32 @@ files:
292
325
  - lib/kontena/machine/vagrant/node_provisioner.rb
293
326
  - lib/kontena/scripts/completer
294
327
  - lib/kontena/scripts/init
328
+ - spec/fixtures/docker-compose.yml
329
+ - spec/fixtures/kontena.yml
330
+ - spec/fixtures/mysql.yml
331
+ - spec/fixtures/wordpress-scaled.yml
332
+ - spec/fixtures/wordpress.yml
295
333
  - spec/kontena/cli/app/common_spec.rb
296
334
  - spec/kontena/cli/app/deploy_command_spec.rb
297
335
  - spec/kontena/cli/app/docker_helper_spec.rb
298
336
  - spec/kontena/cli/app/scale_spec.rb
299
337
  - spec/kontena/cli/common_spec.rb
300
- - spec/kontena/cli/deploy_command_spec.rb
301
338
  - spec/kontena/cli/login_command_spec.rb
302
339
  - spec/kontena/cli/master/use_command_spec.rb
340
+ - spec/kontena/cli/master/users/add_role_command_spec.rb
341
+ - spec/kontena/cli/master/users/invite_command_spec.rb
342
+ - spec/kontena/cli/master/users/remove_role_command_spec.rb
303
343
  - spec/kontena/cli/register_command_spec.rb
344
+ - spec/kontena/cli/services/add_secret_command_spec.rb
345
+ - spec/kontena/cli/services/link_command_spec.rb
346
+ - spec/kontena/cli/services/remove_secret_command_spec.rb
304
347
  - spec/kontena/cli/services/restart_command_spec.rb
305
348
  - spec/kontena/cli/services/services_helper_spec.rb
349
+ - spec/kontena/cli/services/unlink_command_spec.rb
350
+ - spec/kontena/cli/version_command_spec.rb
306
351
  - spec/spec_helper.rb
352
+ - spec/support/client_helpers.rb
353
+ - spec/support/fixtures_helpers.rb
307
354
  - tasks/rspec.rake
308
355
  homepage: http://www.kontena.io
309
356
  licenses:
@@ -330,15 +377,29 @@ signing_key:
330
377
  specification_version: 4
331
378
  summary: Kontena command line tool
332
379
  test_files:
380
+ - spec/fixtures/docker-compose.yml
381
+ - spec/fixtures/kontena.yml
382
+ - spec/fixtures/mysql.yml
383
+ - spec/fixtures/wordpress-scaled.yml
384
+ - spec/fixtures/wordpress.yml
333
385
  - spec/kontena/cli/app/common_spec.rb
334
386
  - spec/kontena/cli/app/deploy_command_spec.rb
335
387
  - spec/kontena/cli/app/docker_helper_spec.rb
336
388
  - spec/kontena/cli/app/scale_spec.rb
337
389
  - spec/kontena/cli/common_spec.rb
338
- - spec/kontena/cli/deploy_command_spec.rb
339
390
  - spec/kontena/cli/login_command_spec.rb
340
391
  - spec/kontena/cli/master/use_command_spec.rb
392
+ - spec/kontena/cli/master/users/add_role_command_spec.rb
393
+ - spec/kontena/cli/master/users/invite_command_spec.rb
394
+ - spec/kontena/cli/master/users/remove_role_command_spec.rb
341
395
  - spec/kontena/cli/register_command_spec.rb
396
+ - spec/kontena/cli/services/add_secret_command_spec.rb
397
+ - spec/kontena/cli/services/link_command_spec.rb
398
+ - spec/kontena/cli/services/remove_secret_command_spec.rb
342
399
  - spec/kontena/cli/services/restart_command_spec.rb
343
400
  - spec/kontena/cli/services/services_helper_spec.rb
401
+ - spec/kontena/cli/services/unlink_command_spec.rb
402
+ - spec/kontena/cli/version_command_spec.rb
344
403
  - spec/spec_helper.rb
404
+ - spec/support/client_helpers.rb
405
+ - spec/support/fixtures_helpers.rb
@@ -1,164 +0,0 @@
1
- require 'yaml'
2
- require_relative 'services/services_helper'
3
-
4
- class Kontena::Cli::DeployCommand < Clamp::Command
5
- include Kontena::Cli::Common
6
- include Kontena::Cli::Services::ServicesHelper
7
-
8
- option ['-f', '--file'], 'FILE', 'Path to kontena.yml file, default: current directory'
9
- option ['-p', '--prefix'], 'PREFIX', 'Prefix of service names, default: name of the current directory'
10
- option ['-s', '--service'], 'SERVICE', 'Services to deploy', multivalued: true
11
-
12
- attr_reader :services, :service_prefix
13
-
14
- def execute
15
- puts "DEPRECATION WARNING: Support for 'kontena deploy' will be dropped. Use 'kontena app deploy' instead.".colorize(:red)
16
- require_api_url
17
- require_token
18
-
19
- filename = file || './kontena.yml'
20
- @service_prefix = prefix || current_dir
21
-
22
- abort("File #{filename} does not exist") unless File.exists?(filename)
23
-
24
- @services = YAML.load(File.read(filename) % {prefix: service_prefix})
25
- @services = @services.delete_if { |name, service| !service_list.include?(name)} unless service_list.empty?
26
-
27
- Dir.chdir(File.dirname(filename))
28
- init_services(services)
29
- deploy_services(deploy_queue)
30
- end
31
-
32
- private
33
-
34
- def init_services(services)
35
- services.each do |name, config|
36
- create_or_update_service(name, config)
37
- end
38
- end
39
-
40
- def deploy_services(queue)
41
- queue.each do |service|
42
- puts "deploying #{service['id']}"
43
- data = {}
44
- if service['deploy']
45
- data[:strategy] = service['deploy']['strategy'] if service['deploy']['strategy']
46
- data[:wait_for_port] = service['deploy']['wait_for_port'] if service['deploy']['wait_for_port']
47
- end
48
- deploy_service(token, service['id'].split('/').last, data)
49
- end
50
- end
51
-
52
- def create_or_update_service(name, options)
53
-
54
- # skip if service is already created or updated or it's not present
55
- return nil if in_deploy_queue?(name) || !services.keys.include?(name)
56
-
57
- # create/update linked services recursively before continuing
58
- unless options['links'].nil?
59
- parse_links(options['links']).each_with_index do |linked_service, index|
60
- # change prefixed service name also to links options
61
- options['links'][index] = "#{prefixed_name(linked_service[:name])}:#{linked_service[:alias]}"
62
-
63
- create_or_update_service(linked_service[:name], services[linked_service[:name]]) unless in_deploy_queue?(linked_service[:name])
64
- end
65
- end
66
-
67
- merge_env_vars(options)
68
-
69
- if find_service_by_name(name)
70
- service = update(name, options)
71
- else
72
- service = create(name, options)
73
- end
74
-
75
- # add deploy options to service
76
- service['deploy'] = options['deploy']
77
-
78
- deploy_queue.push service
79
- end
80
-
81
- def find_service_by_name(name)
82
- get_service(token, prefixed_name(name)) rescue nil
83
- end
84
-
85
- def create(name, options)
86
- name = prefixed_name(name)
87
- puts "creating #{name}"
88
- data = {name: name}
89
- data.merge!(parse_data(options))
90
- create_service(token, current_grid, data)
91
- end
92
-
93
- def update(id, options)
94
- id = prefixed_name(id)
95
- data = parse_data(options)
96
- puts "updating #{id}"
97
- update_service(token, id, data)
98
- end
99
-
100
- def in_deploy_queue?(name)
101
- deploy_queue.find {|service| service['id'] == prefixed_name(name)} != nil
102
- end
103
-
104
- def prefixed_name(name)
105
- return name if service_prefix.strip == ""
106
-
107
- "#{service_prefix}-#{name}"
108
- end
109
-
110
- def current_dir
111
- File.basename(Dir.getwd)
112
- end
113
-
114
- def merge_env_vars(options)
115
- return unless options['env_file']
116
-
117
- options['env_file'] = [options['env_file']] if options['env_file'].is_a?(String)
118
- options['environment'] = [] unless options['environment']
119
-
120
- options['env_file'].each do |env_file|
121
- options['environment'].concat(read_env_file(env_file))
122
- end
123
-
124
- options['environment'].uniq! {|s| s.split('=').first}
125
- end
126
-
127
- def read_env_file(path)
128
- File.readlines(path).delete_if { |line| line.start_with?('#') || line.empty? }
129
- end
130
-
131
- ##
132
- # @param [Hash] options
133
- def parse_data(options)
134
- data = {}
135
- data[:image] = options['image']
136
- data[:env] = options['environment']
137
- data[:container_count] = options['instances']
138
- data[:links] = parse_links(options['links']) if options['links']
139
- data[:ports] = parse_ports(options['ports']) if options['ports']
140
- data[:memory] = parse_memory(options['mem_limit']) if options['mem_limit']
141
- data[:memory_swap] = parse_memory(options['memswap_limit']) if options['memswap_limit']
142
- data[:cpu_shares] = options['cpu_shares'] if options['cpu_shares']
143
- data[:volumes] = options['volumes'] if options['volumes']
144
- data[:volumes_from] = options['volumes_from'] if options['volumes_from']
145
- data[:cmd] = options['command'].split(" ") if options['command']
146
- data[:affinity] = options['affinity'] if options['affinity']
147
- data[:user] = options['user'] if options['user']
148
- data[:stateful] = options['stateful'] == true
149
- data[:cap_add] = options['cap_add'] if options['cap_add']
150
- data[:cap_drop] = options['cap_drop'] if options['cap_drop']
151
- data[:log_driver] = options['log_driver'] if options['log_driver']
152
- data[:log_opts] = options['log_opt'] if options['log_opt'] && !options['log_opt'].empty?
153
-
154
- data
155
- end
156
-
157
- def token
158
- @token ||= require_token
159
- end
160
-
161
- def deploy_queue
162
- @deploy_queue ||= []
163
- end
164
- end