kontena-cli 0.11.7 → 0.12.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.
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