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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/bin/kontena +2 -4
- data/kontena-cli.gemspec +1 -0
- data/lib/kontena/cli/app_command.rb +1 -1
- data/lib/kontena/cli/apps/common.rb +30 -3
- data/lib/kontena/cli/apps/deploy_command.rb +1 -0
- data/lib/kontena/cli/apps/list_command.rb +1 -0
- data/lib/kontena/cli/apps/logs_command.rb +9 -3
- data/lib/kontena/cli/apps/monitor_command.rb +1 -0
- data/lib/kontena/cli/apps/remove_command.rb +2 -0
- data/lib/kontena/cli/apps/scale_command.rb +2 -1
- data/lib/kontena/cli/apps/show_command.rb +1 -0
- data/lib/kontena/cli/apps/start_command.rb +1 -0
- data/lib/kontena/cli/apps/stop_command.rb +1 -0
- data/lib/kontena/cli/common.rb +5 -1
- data/lib/kontena/cli/containers/exec_command.rb +1 -0
- data/lib/kontena/cli/containers/inspect_command.rb +1 -0
- data/lib/kontena/cli/etcd/get_command.rb +2 -1
- data/lib/kontena/cli/etcd/list_command.rb +1 -0
- data/lib/kontena/cli/etcd/mkdir_command.rb +2 -1
- data/lib/kontena/cli/etcd/remove_command.rb +2 -1
- data/lib/kontena/cli/etcd/set_command.rb +2 -1
- data/lib/kontena/cli/etcd_command.rb +2 -2
- data/lib/kontena/cli/external_registries/add_command.rb +1 -0
- data/lib/kontena/cli/external_registries/delete_command.rb +2 -0
- data/lib/kontena/cli/external_registries/list_command.rb +1 -0
- data/lib/kontena/cli/external_registries/remove_command.rb +13 -0
- data/lib/kontena/cli/external_registry_command.rb +4 -3
- data/lib/kontena/cli/grid_command.rb +5 -1
- data/lib/kontena/cli/grid_options.rb +12 -0
- data/lib/kontena/cli/grids/add_user_command.rb +1 -0
- data/lib/kontena/cli/grids/cloud_config_command.rb +41 -0
- data/lib/kontena/cli/grids/common.rb +65 -4
- data/lib/kontena/cli/grids/logs_command.rb +9 -4
- data/lib/kontena/cli/grids/remove_user_command.rb +1 -0
- data/lib/kontena/cli/grids/update_command.rb +27 -0
- data/lib/kontena/cli/master/use_command.rb +12 -2
- data/lib/kontena/cli/master/users/add_role_command.rb +26 -0
- data/lib/kontena/cli/master/users/invite_command.rb +24 -0
- data/lib/kontena/cli/master/users/list_command.rb +18 -0
- data/lib/kontena/cli/master/users/remove_role_command.rb +26 -0
- data/lib/kontena/cli/master/users_command.rb +14 -0
- data/lib/kontena/cli/master_command.rb +2 -1
- data/lib/kontena/cli/node_command.rb +7 -1
- data/lib/kontena/cli/nodes/add_label_command.rb +19 -0
- data/lib/kontena/cli/nodes/aws/create_command.rb +2 -1
- data/lib/kontena/cli/nodes/aws/restart_command.rb +1 -0
- data/lib/kontena/cli/nodes/aws/terminate_command.rb +1 -0
- data/lib/kontena/cli/nodes/azure/create_command.rb +1 -0
- data/lib/kontena/cli/nodes/azure/restart_command.rb +1 -0
- data/lib/kontena/cli/nodes/azure/terminate_command.rb +1 -0
- data/lib/kontena/cli/nodes/digital_ocean/create_command.rb +1 -0
- data/lib/kontena/cli/nodes/digital_ocean/restart_command.rb +1 -0
- data/lib/kontena/cli/nodes/digital_ocean/terminate_command.rb +1 -0
- data/lib/kontena/cli/nodes/list_command.rb +10 -14
- data/lib/kontena/cli/nodes/remove_command.rb +1 -0
- data/lib/kontena/cli/nodes/remove_label_command.rb +23 -0
- data/lib/kontena/cli/nodes/show_command.rb +1 -0
- data/lib/kontena/cli/nodes/ssh_command.rb +1 -0
- data/lib/kontena/cli/nodes/update_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/create_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/restart_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/ssh_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/start_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/stop_command.rb +1 -0
- data/lib/kontena/cli/nodes/vagrant/terminate_command.rb +1 -0
- data/lib/kontena/cli/registry/create_command.rb +80 -30
- data/lib/kontena/cli/registry/delete_command.rb +3 -0
- data/lib/kontena/cli/registry/remove_command.rb +15 -0
- data/lib/kontena/cli/registry_command.rb +3 -1
- data/lib/kontena/cli/service_command.rb +20 -4
- data/lib/kontena/cli/services/add_env_command.rb +1 -0
- data/lib/kontena/cli/services/add_secret_command.rb +24 -0
- data/lib/kontena/cli/services/containers_command.rb +1 -0
- data/lib/kontena/cli/services/create_command.rb +3 -2
- data/lib/kontena/cli/services/delete_command.rb +2 -0
- data/lib/kontena/cli/services/deploy_command.rb +1 -0
- data/lib/kontena/cli/services/envs_command.rb +1 -0
- data/lib/kontena/cli/services/link_command.rb +26 -0
- data/lib/kontena/cli/services/list_command.rb +13 -10
- data/lib/kontena/cli/services/logs_command.rb +13 -5
- data/lib/kontena/cli/services/monitor_command.rb +1 -0
- data/lib/kontena/cli/services/remove_command.rb +17 -0
- data/lib/kontena/cli/services/remove_env_command.rb +1 -0
- data/lib/kontena/cli/services/remove_secret_command.rb +28 -0
- data/lib/kontena/cli/services/restart_command.rb +1 -0
- data/lib/kontena/cli/services/scale_command.rb +2 -1
- data/lib/kontena/cli/services/show_command.rb +1 -0
- data/lib/kontena/cli/services/start_command.rb +1 -0
- data/lib/kontena/cli/services/stats_command.rb +5 -4
- data/lib/kontena/cli/services/stop_command.rb +1 -0
- data/lib/kontena/cli/services/unlink_command.rb +25 -0
- data/lib/kontena/cli/services/update_command.rb +4 -3
- data/lib/kontena/cli/users_command.rb +15 -0
- data/lib/kontena/cli/vault/list_command.rb +1 -0
- data/lib/kontena/cli/vault/read_command.rb +1 -0
- data/lib/kontena/cli/vault/remove_command.rb +1 -0
- data/lib/kontena/cli/vault/write_command.rb +1 -0
- data/lib/kontena/cli/version_command.rb +9 -1
- data/lib/kontena/cli/vpn/config_command.rb +1 -0
- data/lib/kontena/cli/vpn/create_command.rb +1 -0
- data/lib/kontena/cli/vpn/delete_command.rb +2 -0
- data/lib/kontena/cli/vpn/remove_command.rb +15 -0
- data/lib/kontena/cli/vpn_command.rb +3 -1
- data/lib/kontena/machine/aws/node_destroyer.rb +1 -1
- data/lib/kontena/machine/cloud_config/cloudinit.yml +70 -0
- data/lib/kontena/machine/cloud_config/node_generator.rb +28 -0
- data/lib/kontena/machine/digital_ocean/cloudinit.yml +22 -0
- data/lib/kontena/machine/digital_ocean/node_destroyer.rb +4 -2
- data/lib/kontena/machine/random_name.rb +3 -3
- data/lib/kontena/scripts/completer +7 -3
- data/spec/fixtures/docker-compose.yml +8 -0
- data/spec/fixtures/kontena.yml +17 -0
- data/spec/fixtures/mysql.yml +3 -0
- data/spec/fixtures/wordpress-scaled.yml +3 -0
- data/spec/fixtures/wordpress.yml +2 -0
- data/spec/kontena/cli/app/common_spec.rb +42 -0
- data/spec/kontena/cli/app/deploy_command_spec.rb +4 -31
- data/spec/kontena/cli/app/scale_spec.rb +4 -23
- data/spec/kontena/cli/master/use_command_spec.rb +12 -3
- data/spec/kontena/cli/master/users/add_role_command_spec.rb +35 -0
- data/spec/kontena/cli/master/users/invite_command_spec.rb +35 -0
- data/spec/kontena/cli/master/users/remove_role_command_spec.rb +35 -0
- data/spec/kontena/cli/services/add_secret_command_spec.rb +61 -0
- data/spec/kontena/cli/services/link_command_spec.rb +43 -0
- data/spec/kontena/cli/services/remove_secret_command_spec.rb +48 -0
- data/spec/kontena/cli/services/restart_command_spec.rb +1 -23
- data/spec/kontena/cli/services/unlink_command_spec.rb +43 -0
- data/spec/kontena/cli/version_command_spec.rb +17 -0
- data/spec/spec_helper.rb +6 -1
- data/spec/support/client_helpers.rb +31 -0
- data/spec/support/fixtures_helpers.rb +7 -0
- metadata +67 -6
- data/lib/kontena/cli/deploy_command.rb +0 -164
- data/lib/kontena/cli/invite_command.rb +0 -13
- 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
|
-
|
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
|
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.
|
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-
|
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
|