kontena-cli 0.7.3 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/bin/kontena +64 -2
  4. data/kontena-cli.gemspec +4 -2
  5. data/lib/kontena/cli/app_command.rb +20 -0
  6. data/lib/kontena/cli/apps/common.rb +53 -0
  7. data/lib/kontena/cli/{stacks/stacks.rb → apps/deploy_command.rb} +17 -31
  8. data/lib/kontena/cli/apps/init_command.rb +101 -0
  9. data/lib/kontena/cli/apps/list_command.rb +41 -0
  10. data/lib/kontena/cli/apps/logs_command.rb +58 -0
  11. data/lib/kontena/cli/apps/remove_command.rb +64 -0
  12. data/lib/kontena/cli/apps/start_command.rb +38 -0
  13. data/lib/kontena/cli/apps/stop_command.rb +38 -0
  14. data/lib/kontena/cli/container_command.rb +9 -0
  15. data/lib/kontena/cli/containers/{containers.rb → exec_command.rb} +5 -5
  16. data/lib/kontena/cli/deploy_command.rb +159 -0
  17. data/lib/kontena/cli/external_registries/add_command.rb +22 -0
  18. data/lib/kontena/cli/external_registries/delete_command.rb +13 -0
  19. data/lib/kontena/cli/external_registries/list_command.rb +16 -0
  20. data/lib/kontena/cli/external_registry_command.rb +14 -0
  21. data/lib/kontena/cli/forgot_password_command.rb +13 -0
  22. data/lib/kontena/cli/grid_command.rb +27 -0
  23. data/lib/kontena/cli/grids/add_user_command.rb +17 -0
  24. data/lib/kontena/cli/grids/{audit_log.rb → audit_log_command.rb} +7 -6
  25. data/lib/kontena/cli/grids/common.rb +24 -0
  26. data/lib/kontena/cli/grids/create_command.rb +26 -0
  27. data/lib/kontena/cli/grids/current_command.rb +18 -0
  28. data/lib/kontena/cli/grids/list_command.rb +26 -0
  29. data/lib/kontena/cli/grids/list_users_command.rb +18 -0
  30. data/lib/kontena/cli/grids/remove_command.rb +26 -0
  31. data/lib/kontena/cli/grids/remove_user_command.rb +16 -0
  32. data/lib/kontena/cli/grids/show_command.rb +19 -0
  33. data/lib/kontena/cli/grids/use_command.rb +21 -0
  34. data/lib/kontena/cli/invite_command.rb +13 -0
  35. data/lib/kontena/cli/login_command.rb +114 -0
  36. data/lib/kontena/cli/logout_command.rb +8 -0
  37. data/lib/kontena/cli/node_command.rb +21 -0
  38. data/lib/kontena/cli/nodes/digital_ocean/create_command.rb +31 -0
  39. data/lib/kontena/cli/nodes/digital_ocean/restart_command.rb +26 -0
  40. data/lib/kontena/cli/nodes/digital_ocean/terminate_command.rb +18 -0
  41. data/lib/kontena/cli/nodes/digital_ocean_command.rb +15 -0
  42. data/lib/kontena/cli/nodes/list_command.rb +28 -0
  43. data/lib/kontena/cli/nodes/remove_command.rb +15 -0
  44. data/lib/kontena/cli/nodes/show_command.rb +31 -0
  45. data/lib/kontena/cli/nodes/update_command.rb +18 -0
  46. data/lib/kontena/cli/nodes/vagrant/create_command.rb +26 -0
  47. data/lib/kontena/cli/nodes/vagrant/restart_command.rb +25 -0
  48. data/lib/kontena/cli/nodes/vagrant/ssh_command.rb +20 -0
  49. data/lib/kontena/cli/nodes/vagrant/start_command.rb +25 -0
  50. data/lib/kontena/cli/nodes/vagrant/stop_command.rb +25 -0
  51. data/lib/kontena/cli/nodes/vagrant/terminate_command.rb +16 -0
  52. data/lib/kontena/cli/nodes/vagrant_command.rb +21 -0
  53. data/lib/kontena/cli/register_command.rb +21 -0
  54. data/lib/kontena/cli/{grids/registry.rb → registry/create_command.rb} +32 -35
  55. data/lib/kontena/cli/registry/delete_command.rb +15 -0
  56. data/lib/kontena/cli/registry_command.rb +11 -0
  57. data/lib/kontena/cli/reset_password_command.rb +17 -0
  58. data/lib/kontena/cli/service_command.rb +33 -0
  59. data/lib/kontena/cli/services/container_command.rb +9 -0
  60. data/lib/kontena/cli/services/containers_command.rb +31 -0
  61. data/lib/kontena/cli/services/create_command.rb +62 -0
  62. data/lib/kontena/cli/services/delete_command.rb +17 -0
  63. data/lib/kontena/cli/services/deploy_command.rb +23 -0
  64. data/lib/kontena/cli/services/list_command.rb +20 -0
  65. data/lib/kontena/cli/services/logs_command.rb +51 -0
  66. data/lib/kontena/cli/services/restart_command.rb +16 -0
  67. data/lib/kontena/cli/services/scale_command.rb +20 -0
  68. data/lib/kontena/cli/services/services_helper.rb +94 -0
  69. data/lib/kontena/cli/services/show_command.rb +17 -0
  70. data/lib/kontena/cli/services/start_command.rb +16 -0
  71. data/lib/kontena/cli/services/{stats.rb → stats_command.rb} +11 -10
  72. data/lib/kontena/cli/services/stop_command.rb +16 -0
  73. data/lib/kontena/cli/services/update_command.rb +51 -0
  74. data/lib/kontena/cli/verify_account_command.rb +13 -0
  75. data/lib/kontena/cli/version_command.rb +8 -0
  76. data/lib/kontena/cli/vpn/config_command.rb +12 -0
  77. data/lib/kontena/cli/{grids/vpn.rb → vpn/create_command.rb} +12 -29
  78. data/lib/kontena/cli/vpn/delete_command.rb +15 -0
  79. data/lib/kontena/cli/vpn_command.rb +13 -0
  80. data/lib/kontena/cli/whoami_command.rb +19 -0
  81. data/lib/kontena/client.rb +14 -11
  82. data/lib/kontena/machine/common.rb +17 -0
  83. data/lib/kontena/machine/digital_ocean.rb +11 -0
  84. data/lib/kontena/machine/digital_ocean/cloudinit.yml +66 -0
  85. data/lib/kontena/machine/digital_ocean/node_destroyer.rb +38 -0
  86. data/lib/kontena/machine/digital_ocean/node_provisioner.rb +74 -0
  87. data/lib/kontena/machine/random_name.rb +42 -0
  88. data/lib/kontena/machine/vagrant.rb +10 -0
  89. data/lib/kontena/machine/vagrant/Vagrantfile.coreos.rb.erb +32 -0
  90. data/lib/kontena/machine/vagrant/cloudinit.yml +65 -0
  91. data/lib/kontena/machine/vagrant/node_destroyer.rb +36 -0
  92. data/lib/kontena/machine/vagrant/node_provisioner.rb +68 -0
  93. data/lib/kontena/scripts/completer +5 -5
  94. data/spec/kontena/cli/app/deploy_command_spec.rb +227 -0
  95. data/spec/kontena/cli/deploy_command_spec.rb +213 -0
  96. data/spec/kontena/cli/login_command_spec.rb +22 -0
  97. data/spec/kontena/cli/register_command_spec.rb +57 -0
  98. data/spec/spec_helper.rb +5 -1
  99. metadata +132 -36
  100. data/lib/kontena/cli/commands.rb +0 -20
  101. data/lib/kontena/cli/containers/commands.rb +0 -12
  102. data/lib/kontena/cli/grids/commands.rb +0 -169
  103. data/lib/kontena/cli/grids/external_registries.rb +0 -40
  104. data/lib/kontena/cli/grids/grids.rb +0 -108
  105. data/lib/kontena/cli/grids/users.rb +0 -32
  106. data/lib/kontena/cli/nodes/commands.rb +0 -27
  107. data/lib/kontena/cli/nodes/nodes.rb +0 -64
  108. data/lib/kontena/cli/server/commands.rb +0 -69
  109. data/lib/kontena/cli/server/server.rb +0 -45
  110. data/lib/kontena/cli/server/user.rb +0 -174
  111. data/lib/kontena/cli/services/commands.rb +0 -138
  112. data/lib/kontena/cli/services/containers.rb +0 -24
  113. data/lib/kontena/cli/services/logs.rb +0 -44
  114. data/lib/kontena/cli/services/services.rb +0 -175
  115. data/lib/kontena/cli/stacks/commands.rb +0 -13
  116. data/spec/kontena/cli/server/user_spec.rb +0 -59
  117. data/spec/kontena/cli/stacks/stacks_spec.rb +0 -212
@@ -0,0 +1,213 @@
1
+ require_relative "../../spec_helper"
2
+ require "kontena/cli/deploy_command"
3
+
4
+ describe Kontena::Cli::DeployCommand do
5
+
6
+ let(:subject) do
7
+ described_class.new(File.basename($0))
8
+ end
9
+
10
+ let(:settings) do
11
+ {'server' => {'url' => 'http://kontena.test', 'token' => token}}
12
+ end
13
+
14
+ let(:token) do
15
+ '1234567'
16
+ end
17
+
18
+ let(:yml) do
19
+ yml_content = <<yml
20
+ wordpress:
21
+ image: wordpress:4.1
22
+ stateful: true
23
+ ports:
24
+ - 80:80
25
+ links:
26
+ - mysql:mysql
27
+ environment:
28
+ - WORDPRESS_DB_PASSWORD=%{prefix}_secret
29
+ instances: 2
30
+ deploy:
31
+ strategy: ha
32
+ mysql:
33
+ image: mysql:5.6
34
+ stateful: true
35
+ environment:
36
+ - MYSQL_ROOT_PASSWORD=%{prefix}_secret
37
+ yml
38
+ yml_content
39
+ end
40
+
41
+ let(:services) do
42
+ {
43
+ 'wordpress' => {
44
+ 'image' => 'wordpress:latest',
45
+ 'links' => ['mysql:db'],
46
+ 'ports' => ['80:80'],
47
+ 'instances' => 2,
48
+ 'deploy' => {
49
+ 'strategy' => 'ha'
50
+ }
51
+ },
52
+ 'mysql' => {
53
+ 'image' => 'mysql:5.6',
54
+ 'stateful' => true
55
+ }
56
+ }
57
+ end
58
+
59
+ let(:client) do
60
+ double
61
+ end
62
+
63
+ let(:options) do
64
+ double({prefix: false, file: false, service: nil})
65
+ end
66
+
67
+ let(:env_vars) do
68
+ ["#comment line", "TEST_ENV_VAR=test", "MYSQL_ADMIN_PASSWORD=abcdef"]
69
+ end
70
+
71
+ let(:dot_env) do
72
+ ["TEST_ENV_VAR=test2","", "TEST_ENV_VAR2=test3"]
73
+ end
74
+
75
+ describe '#deploy' do
76
+ context 'when api_url is nil' do
77
+ it 'raises error' do
78
+ allow(subject).to receive(:settings).and_return({'server' => {}})
79
+ expect{subject.run([])}.to raise_error(ArgumentError)
80
+ end
81
+ end
82
+
83
+ context 'when token is nil' do
84
+ it 'raises error' do
85
+ allow(subject).to receive(:settings).and_return({'server' => {'url' => 'http://kontena.test'}})
86
+ expect{subject.run([])}.to raise_error(ArgumentError)
87
+ end
88
+ end
89
+
90
+ context 'when api url and token are valid' do
91
+ before(:each) do
92
+ allow(subject).to receive(:settings).and_return(settings)
93
+ allow(File).to receive(:exists?).and_return(true)
94
+ allow(File).to receive(:read).and_return(yml)
95
+ allow(subject).to receive(:get_service).and_raise(Kontena::Errors::StandardError.new(404, 'Not Found'))
96
+ allow(subject).to receive(:create_service).and_return({'id' => 'kontena-test-mysql'},{'id' => 'kontena-test-wordpress'})
97
+ allow(subject).to receive(:current_grid).and_return('1')
98
+ allow(subject).to receive(:deploy_service).and_return(nil)
99
+ end
100
+
101
+ it 'reads ./kontena.yml file by default' do
102
+ allow(subject).to receive(:settings).and_return(settings)
103
+ expect(File).to receive(:read).with('./kontena.yml').and_return(yml)
104
+ subject.run([])
105
+ end
106
+
107
+ it 'reads given yml file' do
108
+ expect(subject).to receive(:file).once.and_return('custom.yml')
109
+ expect(File).to receive(:read).with('custom.yml').and_return(yml)
110
+ subject.run([])
111
+ end
112
+
113
+ it 'uses current directory as service name prefix by default' do
114
+ current_dir = '/kontena/tests/stacks'
115
+ allow(Dir).to receive(:getwd).and_return(current_dir)
116
+ expect(File).to receive(:basename).with(current_dir).and_return('stacks')
117
+ subject.run([])
118
+ end
119
+
120
+ context 'when yml file has multiple env files' do
121
+ it 'merges environment variables correctly' do
122
+ allow(subject).to receive(:current_dir).and_return("kontena-test")
123
+ allow(YAML).to receive(:load).and_return(services)
124
+ services['wordpress']['environment'] = ['MYSQL_ADMIN_PASSWORD=password']
125
+ services['wordpress']['env_file'] = %w(/path/to/env_file .env)
126
+
127
+ expect(File).to receive(:readlines).with('/path/to/env_file').and_return(env_vars)
128
+ expect(File).to receive(:readlines).with('.env').and_return(dot_env)
129
+
130
+ data = {
131
+ :name =>"kontena-test-wordpress",
132
+ :image=>"wordpress:latest",
133
+ :env=>["MYSQL_ADMIN_PASSWORD=password", "TEST_ENV_VAR=test", "TEST_ENV_VAR2=test3"],
134
+ :container_count=>2,
135
+ :stateful=>false,
136
+ :links=>[{:name=>"kontena-test-mysql", :alias=>"db"}],
137
+ :ports=>[{:container_port=>"80", :node_port=>"80", :protocol=>"tcp"}]
138
+ }
139
+
140
+ expect(subject).to receive(:create_service).with('1234567', '1', data)
141
+ subject.run([])
142
+ end
143
+ end
144
+
145
+ context 'when yml file has one env file' do
146
+ it 'merges environment variables correctly' do
147
+ allow(subject).to receive(:current_dir).and_return("kontena-test")
148
+ allow(YAML).to receive(:load).and_return(services)
149
+ services['wordpress']['environment'] = ['MYSQL_ADMIN_PASSWORD=password']
150
+ services['wordpress']['env_file'] = '/path/to/env_file'
151
+
152
+ expect(File).to receive(:readlines).with('/path/to/env_file').and_return(env_vars)
153
+
154
+ data = {
155
+ :name =>"kontena-test-wordpress",
156
+ :image=>"wordpress:latest",
157
+ :env=>["MYSQL_ADMIN_PASSWORD=password", "TEST_ENV_VAR=test"],
158
+ :container_count=>2,
159
+ :stateful=>false,
160
+ :links=>[{:name=>"kontena-test-mysql", :alias=>"db"}],
161
+ :ports=>[{:container_port=>"80", :node_port=>"80", :protocol=>"tcp"}]
162
+ }
163
+
164
+ expect(subject).to receive(:create_service).with('1234567', '1', data)
165
+ subject.run([])
166
+ end
167
+ end
168
+
169
+ it 'creates mysql service before wordpress' do
170
+ allow(subject).to receive(:current_dir).and_return("kontena-test")
171
+ data = {:name =>"kontena-test-mysql", :image=>'mysql:5.6', :env=>["MYSQL_ROOT_PASSWORD=kontena-test_secret"], :container_count=>nil, :stateful=>true}
172
+ expect(subject).to receive(:create_service).with('1234567', '1', data)
173
+
174
+ subject.run([])
175
+ end
176
+
177
+ it 'creates wordpress service' do
178
+ allow(subject).to receive(:current_dir).and_return("kontena-test")
179
+
180
+ data = {
181
+ :name =>"kontena-test-wordpress",
182
+ :image=>"wordpress:4.1",
183
+ :env=>["WORDPRESS_DB_PASSWORD=kontena-test_secret"],
184
+ :container_count=>2,
185
+ :stateful=>true,
186
+ :links=>[{:name=>"kontena-test-mysql", :alias=>"mysql"}],
187
+ :ports=>[{:container_port=>"80", :node_port=>"80", :protocol=>"tcp"}]
188
+ }
189
+ expect(subject).to receive(:create_service).with('1234567', '1', data)
190
+
191
+ subject.run([])
192
+ end
193
+
194
+ it 'deploys services' do
195
+ allow(subject).to receive(:current_dir).and_return("kontena-test")
196
+ expect(subject).to receive(:deploy_service).with('1234567', 'kontena-test-mysql', {})
197
+ expect(subject).to receive(:deploy_service).with('1234567', 'kontena-test-wordpress', {:strategy => 'ha'})
198
+ subject.run([])
199
+ end
200
+
201
+ context 'when giving service option' do
202
+ it 'deploys only given services' do
203
+ allow(subject).to receive(:current_dir).and_return("kontena-test")
204
+ allow(subject).to receive(:deploy_services).and_return({})
205
+ expect(subject).to receive(:create).once.with('wordpress', anything).and_return({})
206
+ expect(subject).not_to receive(:create).with('mysql', services['mysql'])
207
+
208
+ subject.run(['--service', 'wordpress'])
209
+ end
210
+ end
211
+ end
212
+ end
213
+ end
@@ -0,0 +1,22 @@
1
+ require_relative "../../spec_helper"
2
+ require "kontena/cli/login_command"
3
+
4
+ describe Kontena::Cli::LoginCommand do
5
+ describe '#register' do
6
+
7
+ let(:auth_client) do
8
+ double(Kontena::Client)
9
+ end
10
+
11
+ let(:subject) { described_class.new(File.basename($0)) }
12
+
13
+ it 'asks email and password' do
14
+ expect(subject).to receive(:ask).once.with('Email: ').and_return('john.doe@acme.io')
15
+ allow(subject).to receive(:ask).once.with('Password: ').and_return('secret')
16
+ allow(Kontena::Client).to receive(:new).and_return(auth_client)
17
+ allow(auth_client).to receive(:post)
18
+ allow(subject).to receive(:request_server_info).and_return(true)
19
+ subject.run(['http://localhost:8443'])
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,57 @@
1
+ require_relative "../../spec_helper"
2
+ require "kontena/cli/register_command"
3
+
4
+ describe Kontena::Cli::RegisterCommand do
5
+ describe '#register' do
6
+
7
+ let(:auth_client) do
8
+ double(Kontena::Client)
9
+ end
10
+
11
+ let(:subject) { described_class.new(File.basename($0)) }
12
+
13
+ it 'asks password twice' do
14
+ allow(subject).to receive(:ask).once.with('Email: ').and_return('john.doe@acme.io')
15
+ expect(subject).to receive(:password).once.with('Password: ').and_return('secret')
16
+ expect(subject).to receive(:password).once.with('Password again: ').and_return('secret')
17
+ allow(Kontena::Client).to receive(:new).and_return(auth_client)
18
+ allow(auth_client).to receive(:post)
19
+ subject.run([])
20
+ end
21
+
22
+ it 'validates given passwords' do
23
+ allow(subject).to receive(:ask).once.with('Email: ').and_return('john.doe@acme.io')
24
+ expect(subject).to receive(:password).once.with('Password: ').and_return('secret')
25
+ expect(subject).to receive(:password).once.with('Password again: ').and_return('secret2')
26
+ expect{subject.run([])}.to raise_error(SystemExit)
27
+ end
28
+
29
+ it 'uses https://auth.kontena.io as default auth provider' do
30
+ allow(subject).to receive(:ask).and_return('john.doe@acme.io')
31
+ allow(subject).to receive(:ask).once.with('Email: ').and_return('john.doe@acme.io')
32
+ expect(subject).to receive(:password).once.with('Password: ').and_return('secret')
33
+ expect(subject).to receive(:password).once.with('Password again: ').and_return('secret')
34
+ expect(Kontena::Client).to receive(:new).with('https://auth.kontena.io').and_return(auth_client)
35
+ allow(auth_client).to receive(:post)
36
+ subject.run([])
37
+ end
38
+
39
+ it 'uses given auth provider' do
40
+ allow(subject).to receive(:ask).and_return('john.doe@acme.io')
41
+ expect(subject).to receive(:password).once.with('Password: ').and_return('secret')
42
+ expect(subject).to receive(:password).once.with('Password again: ').and_return('secret')
43
+ expect(Kontena::Client).to receive(:new).with('http://custom.auth-provider.io').and_return(auth_client)
44
+ allow(auth_client).to receive(:post)
45
+ subject.run(['--auth-provider-url', 'http://custom.auth-provider.io'])
46
+ end
47
+
48
+ it 'sends register request to auth provider' do
49
+ allow(subject).to receive(:ask).and_return('john.doe@acme.io')
50
+ expect(subject).to receive(:password).once.with('Password: ').and_return('secret')
51
+ expect(subject).to receive(:password).once.with('Password again: ').and_return('secret')
52
+ allow(Kontena::Client).to receive(:new).with('https://auth.kontena.io').and_return(auth_client)
53
+ expect(auth_client).to receive(:post).with('users', {email: 'john.doe@acme.io', password: 'secret'})
54
+ subject.run([])
55
+ end
56
+ end
57
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,10 @@
5
5
  #
6
6
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
7
 
8
+ require 'clamp'
9
+ require 'kontena/cli/common'
10
+ require 'kontena/client'
11
+
8
12
  RSpec.configure do |config|
9
13
  config.run_all_when_everything_filtered = true
10
14
  config.filter_run :focus
@@ -15,4 +19,4 @@ RSpec.configure do |config|
15
19
  # --seed 1234
16
20
  config.order = 'random'
17
21
 
18
- end
22
+ 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.7.3
4
+ version: 0.8.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: 2015-07-26 00:00:00.000000000 Z
11
+ date: 2015-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -39,21 +39,21 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: httpclient
42
+ name: excon
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '2.3'
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '2.3'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: commander
56
+ name: colorize
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,35 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: colorize
70
+ name: clamp
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: highline
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: shell-spinner
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - ">="
@@ -98,38 +126,104 @@ files:
98
126
  - bin/kontena
99
127
  - kontena-cli.gemspec
100
128
  - kontena-docker.sh
101
- - lib/kontena/cli/commands.rb
129
+ - lib/kontena/cli/app_command.rb
130
+ - lib/kontena/cli/apps/common.rb
131
+ - lib/kontena/cli/apps/deploy_command.rb
132
+ - lib/kontena/cli/apps/init_command.rb
133
+ - lib/kontena/cli/apps/list_command.rb
134
+ - lib/kontena/cli/apps/logs_command.rb
135
+ - lib/kontena/cli/apps/remove_command.rb
136
+ - lib/kontena/cli/apps/start_command.rb
137
+ - lib/kontena/cli/apps/stop_command.rb
102
138
  - lib/kontena/cli/common.rb
103
- - lib/kontena/cli/containers/commands.rb
104
- - lib/kontena/cli/containers/containers.rb
105
- - lib/kontena/cli/grids/audit_log.rb
106
- - lib/kontena/cli/grids/commands.rb
107
- - lib/kontena/cli/grids/external_registries.rb
108
- - lib/kontena/cli/grids/grids.rb
109
- - lib/kontena/cli/grids/registry.rb
110
- - lib/kontena/cli/grids/users.rb
111
- - lib/kontena/cli/grids/vpn.rb
112
- - lib/kontena/cli/nodes/commands.rb
113
- - lib/kontena/cli/nodes/nodes.rb
114
- - lib/kontena/cli/server/commands.rb
115
- - lib/kontena/cli/server/server.rb
116
- - lib/kontena/cli/server/user.rb
117
- - lib/kontena/cli/services/commands.rb
118
- - lib/kontena/cli/services/containers.rb
119
- - lib/kontena/cli/services/logs.rb
120
- - lib/kontena/cli/services/services.rb
139
+ - lib/kontena/cli/container_command.rb
140
+ - lib/kontena/cli/containers/exec_command.rb
141
+ - lib/kontena/cli/deploy_command.rb
142
+ - lib/kontena/cli/external_registries/add_command.rb
143
+ - lib/kontena/cli/external_registries/delete_command.rb
144
+ - lib/kontena/cli/external_registries/list_command.rb
145
+ - lib/kontena/cli/external_registry_command.rb
146
+ - lib/kontena/cli/forgot_password_command.rb
147
+ - lib/kontena/cli/grid_command.rb
148
+ - lib/kontena/cli/grids/add_user_command.rb
149
+ - lib/kontena/cli/grids/audit_log_command.rb
150
+ - lib/kontena/cli/grids/common.rb
151
+ - lib/kontena/cli/grids/create_command.rb
152
+ - lib/kontena/cli/grids/current_command.rb
153
+ - lib/kontena/cli/grids/list_command.rb
154
+ - lib/kontena/cli/grids/list_users_command.rb
155
+ - lib/kontena/cli/grids/remove_command.rb
156
+ - lib/kontena/cli/grids/remove_user_command.rb
157
+ - lib/kontena/cli/grids/show_command.rb
158
+ - lib/kontena/cli/grids/use_command.rb
159
+ - lib/kontena/cli/invite_command.rb
160
+ - lib/kontena/cli/login_command.rb
161
+ - lib/kontena/cli/logout_command.rb
162
+ - lib/kontena/cli/node_command.rb
163
+ - lib/kontena/cli/nodes/digital_ocean/create_command.rb
164
+ - lib/kontena/cli/nodes/digital_ocean/restart_command.rb
165
+ - lib/kontena/cli/nodes/digital_ocean/terminate_command.rb
166
+ - lib/kontena/cli/nodes/digital_ocean_command.rb
167
+ - lib/kontena/cli/nodes/list_command.rb
168
+ - lib/kontena/cli/nodes/remove_command.rb
169
+ - lib/kontena/cli/nodes/show_command.rb
170
+ - lib/kontena/cli/nodes/update_command.rb
171
+ - lib/kontena/cli/nodes/vagrant/create_command.rb
172
+ - lib/kontena/cli/nodes/vagrant/restart_command.rb
173
+ - lib/kontena/cli/nodes/vagrant/ssh_command.rb
174
+ - lib/kontena/cli/nodes/vagrant/start_command.rb
175
+ - lib/kontena/cli/nodes/vagrant/stop_command.rb
176
+ - lib/kontena/cli/nodes/vagrant/terminate_command.rb
177
+ - lib/kontena/cli/nodes/vagrant_command.rb
178
+ - lib/kontena/cli/register_command.rb
179
+ - lib/kontena/cli/registry/create_command.rb
180
+ - lib/kontena/cli/registry/delete_command.rb
181
+ - lib/kontena/cli/registry_command.rb
182
+ - lib/kontena/cli/reset_password_command.rb
183
+ - lib/kontena/cli/service_command.rb
184
+ - lib/kontena/cli/services/container_command.rb
185
+ - lib/kontena/cli/services/containers_command.rb
186
+ - lib/kontena/cli/services/create_command.rb
187
+ - lib/kontena/cli/services/delete_command.rb
188
+ - lib/kontena/cli/services/deploy_command.rb
189
+ - lib/kontena/cli/services/list_command.rb
190
+ - lib/kontena/cli/services/logs_command.rb
191
+ - lib/kontena/cli/services/restart_command.rb
192
+ - lib/kontena/cli/services/scale_command.rb
121
193
  - lib/kontena/cli/services/services_helper.rb
122
- - lib/kontena/cli/services/stats.rb
123
- - lib/kontena/cli/stacks/commands.rb
124
- - lib/kontena/cli/stacks/stacks.rb
194
+ - lib/kontena/cli/services/show_command.rb
195
+ - lib/kontena/cli/services/start_command.rb
196
+ - lib/kontena/cli/services/stats_command.rb
197
+ - lib/kontena/cli/services/stop_command.rb
198
+ - lib/kontena/cli/services/update_command.rb
199
+ - lib/kontena/cli/verify_account_command.rb
125
200
  - lib/kontena/cli/version.rb
201
+ - lib/kontena/cli/version_command.rb
202
+ - lib/kontena/cli/vpn/config_command.rb
203
+ - lib/kontena/cli/vpn/create_command.rb
204
+ - lib/kontena/cli/vpn/delete_command.rb
205
+ - lib/kontena/cli/vpn_command.rb
206
+ - lib/kontena/cli/whoami_command.rb
126
207
  - lib/kontena/client.rb
127
208
  - lib/kontena/errors.rb
209
+ - lib/kontena/machine/common.rb
210
+ - lib/kontena/machine/digital_ocean.rb
211
+ - lib/kontena/machine/digital_ocean/cloudinit.yml
212
+ - lib/kontena/machine/digital_ocean/node_destroyer.rb
213
+ - lib/kontena/machine/digital_ocean/node_provisioner.rb
214
+ - lib/kontena/machine/random_name.rb
215
+ - lib/kontena/machine/vagrant.rb
216
+ - lib/kontena/machine/vagrant/Vagrantfile.coreos.rb.erb
217
+ - lib/kontena/machine/vagrant/cloudinit.yml
218
+ - lib/kontena/machine/vagrant/node_destroyer.rb
219
+ - lib/kontena/machine/vagrant/node_provisioner.rb
128
220
  - lib/kontena/scripts/completer
129
221
  - lib/kontena/scripts/init
130
- - spec/kontena/cli/server/user_spec.rb
222
+ - spec/kontena/cli/app/deploy_command_spec.rb
223
+ - spec/kontena/cli/deploy_command_spec.rb
224
+ - spec/kontena/cli/login_command_spec.rb
225
+ - spec/kontena/cli/register_command_spec.rb
131
226
  - spec/kontena/cli/services/services_helper_spec.rb
132
- - spec/kontena/cli/stacks/stacks_spec.rb
133
227
  - spec/spec_helper.rb
134
228
  - tasks/rspec.rake
135
229
  homepage: http://www.kontena.io
@@ -152,12 +246,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
246
  version: '0'
153
247
  requirements: []
154
248
  rubyforge_project:
155
- rubygems_version: 2.2.2
249
+ rubygems_version: 2.4.8
156
250
  signing_key:
157
251
  specification_version: 4
158
252
  summary: Kontena command line tool
159
253
  test_files:
160
- - spec/kontena/cli/server/user_spec.rb
254
+ - spec/kontena/cli/app/deploy_command_spec.rb
255
+ - spec/kontena/cli/deploy_command_spec.rb
256
+ - spec/kontena/cli/login_command_spec.rb
257
+ - spec/kontena/cli/register_command_spec.rb
161
258
  - spec/kontena/cli/services/services_helper_spec.rb
162
- - spec/kontena/cli/stacks/stacks_spec.rb
163
259
  - spec/spec_helper.rb