kontena-cli 0.7.3 → 0.8.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 (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