kontena-cli 0.11.3 → 0.11.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5baeda0d4df6a6196b0699b865a9d57540b93a1b
4
- data.tar.gz: 6960f65d1af20e840c4548fb681b140e86ff314a
3
+ metadata.gz: a146f1bd72f47a1f7805aaeb88ef87dda561a6d3
4
+ data.tar.gz: be7453435a084c1aedf71e571afabad1bf26b358
5
5
  SHA512:
6
- metadata.gz: 79f0ec2b76d58825a7ae8eb7ae273ab4a51405ce9369cda3803797649f0371746d12f808059b05f8a999d07a95963b22fff208f9454cb97976648e3e782dc7bb
7
- data.tar.gz: 344f40e9a1f3fc49efc2e11dd3a4eacb23f7facbbb976240745bae4cbe2345e6cdd6b2f932c2531a738af02e25fb17b26f4338e8cbb53ed7018507f88b7aafe0
6
+ metadata.gz: c8ef20d0fa01a285f9aba9868fd0ba46da56208e3e6965e3a59a3c583d69c7f3925188947a0a70494e24b32b7015cc6f1a42f62c6967a7042d0873c7c52da37c
7
+ data.tar.gz: 55a70a37241fbf825c0fe41b2d7198f74104884d6a8517c06dcc94789debdc0135bfb4db6a80ef836f6c9e0077a7ceacebcb1bba26c949674dd93956cc803eb2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.3
1
+ 0.11.4
@@ -3,6 +3,7 @@ require_relative 'apps/build_command'
3
3
  require_relative 'apps/deploy_command'
4
4
  require_relative 'apps/start_command'
5
5
  require_relative 'apps/stop_command'
6
+ require_relative 'apps/restart_command'
6
7
  require_relative 'apps/remove_command'
7
8
  require_relative 'apps/list_command'
8
9
  require_relative 'apps/logs_command'
@@ -18,6 +19,7 @@ class Kontena::Cli::AppCommand < Clamp::Command
18
19
  subcommand "scale", "Scale services", Kontena::Cli::Apps::ScaleCommand
19
20
  subcommand "start", "Start services", Kontena::Cli::Apps::StartCommand
20
21
  subcommand "stop", "Stop services", Kontena::Cli::Apps::StopCommand
22
+ subcommand "restart", "Restart services", Kontena::Cli::Apps::RestartCommand
21
23
  subcommand "show", "Show service details", Kontena::Cli::Apps::ShowCommand
22
24
  subcommand ["ps", "list"], "List services", Kontena::Cli::Apps::ListCommand
23
25
  subcommand ["logs"], "Show service logs", Kontena::Cli::Apps::LogsCommand
@@ -12,6 +12,7 @@ module Kontena::Cli::Apps
12
12
  option ['--no-build'], :flag, 'Don\'t build an image, even if it\'s missing', default: false
13
13
  option ['-p', '--project-name'], 'NAME', 'Specify an alternate project name (default: directory name)'
14
14
  option '--async', :flag, 'Run deploys async/parallel'
15
+ option '--force-deploy', :flag, 'Force deploy even if service does not have any changes'
15
16
 
16
17
  parameter "[SERVICE] ...", "Services to start"
17
18
 
@@ -31,12 +32,14 @@ module Kontena::Cli::Apps
31
32
 
32
33
  private
33
34
 
35
+ # @param [Hash] services
34
36
  def create_or_update_services(services)
35
37
  services.each do |name, config|
36
38
  create_or_update_service(name, config)
37
39
  end
38
40
  end
39
41
 
42
+ # @param [Array] queue
40
43
  def deploy_services(queue)
41
44
  queue.each do |service|
42
45
  name = service['id'].split('/').last
@@ -50,6 +53,8 @@ module Kontena::Cli::Apps
50
53
  end
51
54
  end
52
55
 
56
+ # @param [String] name
57
+ # @param [Hash] options
53
58
  def create_or_update_service(name, options)
54
59
  # skip if service is already processed or it's not present
55
60
  return nil if in_deploy_queue?(name) || !services.keys.include?(name)
@@ -75,10 +80,13 @@ module Kontena::Cli::Apps
75
80
  deploy_queue.push service
76
81
  end
77
82
 
83
+ # @param [String] name
78
84
  def find_service_by_name(name)
79
85
  get_service(token, prefixed_name(name)) rescue nil
80
86
  end
81
87
 
88
+ # @param [String] name
89
+ # @param [Hash] options
82
90
  def create(name, options)
83
91
  puts "creating #{name.colorize(:cyan)}"
84
92
  name = prefixed_name(name)
@@ -87,17 +95,22 @@ module Kontena::Cli::Apps
87
95
  create_service(token, current_grid, data)
88
96
  end
89
97
 
98
+ # @param [String] id
99
+ # @param [Hash] options
90
100
  def update(id, options)
91
101
  puts "updating #{id.colorize(:cyan)}"
92
102
  id = prefixed_name(id)
93
103
  data = parse_data(options)
94
104
  update_service(token, id, data)
105
+ deploy_service(token, id, {force: true}) if force_deploy?
95
106
  end
96
107
 
108
+ # @param [String] name
97
109
  def in_deploy_queue?(name)
98
110
  deploy_queue.find {|service| service['name'] == prefixed_name(name)} != nil
99
111
  end
100
112
 
113
+ # @param [Hash] options
101
114
  def merge_env_vars(options)
102
115
  return unless options['env_file']
103
116
 
@@ -111,6 +124,7 @@ module Kontena::Cli::Apps
111
124
  options['environment'].uniq! {|s| s.split('=').first}
112
125
  end
113
126
 
127
+ # @param [Hash] options
114
128
  def merge_external_links(options)
115
129
  if options['external_links']
116
130
  options['links'] ||= []
@@ -119,6 +133,7 @@ module Kontena::Cli::Apps
119
133
  end
120
134
  end
121
135
 
136
+ # @param [String] path
122
137
  def read_env_file(path)
123
138
  File.readlines(path).delete_if { |line| line.start_with?('#') || line.empty? }
124
139
  end
@@ -145,6 +160,7 @@ module Kontena::Cli::Apps
145
160
  data[:cap_add] = options['cap_add'] if options['cap_add']
146
161
  data[:cap_drop] = options['cap_drop'] if options['cap_drop']
147
162
  data[:net] = options['net'] if options['net']
163
+ data[:pid] = options['pid'] if options['pid']
148
164
  data[:log_driver] = options['log_driver'] if options['log_driver']
149
165
  data[:log_opts] = options['log_opt'] if options['log_opt'] && !options['log_opt'].empty?
150
166
 
@@ -162,6 +178,5 @@ module Kontena::Cli::Apps
162
178
 
163
179
  data
164
180
  end
165
-
166
181
  end
167
182
  end
@@ -0,0 +1,39 @@
1
+ require_relative 'common'
2
+
3
+ module Kontena::Cli::Apps
4
+ class RestartCommand < Clamp::Command
5
+ include Kontena::Cli::Common
6
+ include Common
7
+
8
+ option ['-f', '--file'], 'FILE', 'Specify an alternate Kontena compose file', attribute_name: :filename, default: 'kontena.yml'
9
+ option ['-p', '--project-name'], 'NAME', 'Specify an alternate project name (default: directory name)'
10
+
11
+ parameter "[SERVICE] ...", "Services to start"
12
+
13
+ attr_reader :services, :service_prefix
14
+
15
+ def execute
16
+ require_config_file(filename)
17
+
18
+ @service_prefix = project_name || current_dir
19
+ @services = load_services(filename, service_list, service_prefix)
20
+ if services.size > 0
21
+ restart_services(services)
22
+ elsif !service_list.empty?
23
+ puts "No such service: #{service_list.join(', ')}".colorize(:red)
24
+ end
25
+
26
+ end
27
+
28
+ def restart_services(services)
29
+ services.each do |service_name, opts|
30
+ if service_exists?(service_name)
31
+ puts "restarting #{prefixed_name(service_name)}"
32
+ restart_service(token, prefixed_name(service_name))
33
+ else
34
+ puts "No such service: #{service_name}".colorize(:red)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -6,12 +6,15 @@ module Kontena::Cli::Services
6
6
  include ServicesHelper
7
7
 
8
8
  parameter "NAME", "Service name"
9
+ option '--force-deploy', :flag, 'Force deploy even if service does not have any changes'
9
10
 
10
11
  def execute
11
12
  require_api_url
12
13
  token = require_token
13
14
  service_id = name
14
- deploy_service(token, service_id, {})
15
+ data = {}
16
+ data[:force] = true if force_deploy?
17
+ deploy_service(token, service_id, data)
15
18
  end
16
19
  end
17
20
  end
@@ -10,7 +10,7 @@ module Kontena::Cli::Services
10
10
  def execute
11
11
  require_api_url
12
12
  token = require_token
13
- result = client(token).post("services/#{parse_service_id(name)}/restart", {})
13
+ restart_service(token, name, {})
14
14
  end
15
15
  end
16
16
  end
@@ -209,6 +209,13 @@ module Kontena
209
209
  client(token).post("services/#{param}/stop", {})
210
210
  end
211
211
 
212
+ # @param [String] token
213
+ # @param [String] service_id
214
+ def restart_service(token, service_id)
215
+ param = parse_service_id(service_id)
216
+ client(token).post("services/#{param}/restart", {})
217
+ end
218
+
212
219
  # @param [String] token
213
220
  # @param [String] service_id
214
221
  def delete_service(token, service_id)
@@ -10,7 +10,7 @@ module Kontena::Cli::Services
10
10
  def execute
11
11
  require_api_url
12
12
  token = require_token
13
- result = client(token).post("services/#{parse_service_id(name)}/start", {})
13
+ start_service(token, name)
14
14
  end
15
15
  end
16
16
  end
@@ -10,7 +10,7 @@ module Kontena::Cli::Services
10
10
  def execute
11
11
  require_api_url
12
12
  token = require_token
13
- result = client(token).post("services/#{parse_service_id(name)}/stop", {})
13
+ stop_service(token, name)
14
14
  end
15
15
  end
16
16
  end
@@ -0,0 +1,20 @@
1
+ module Kontena::Cli::Vault
2
+ class UpdateCommand < Clamp::Command
3
+ include Kontena::Cli::Common
4
+
5
+ parameter 'NAME', 'Secret name'
6
+ parameter '[VALUE]', 'Secret value'
7
+
8
+ def execute
9
+ require_api_url
10
+ token = require_token
11
+ secret = value
12
+ if secret.to_s == ''
13
+ secret = STDIN.read
14
+ end
15
+ abort('No value provided') if secret.to_s == ''
16
+ data = {value: secret}
17
+ client(token).put("grids/#{current_grid}/secrets/#{name}", data)
18
+ end
19
+ end
20
+ end
@@ -2,12 +2,14 @@ require_relative 'vault/write_command'
2
2
  require_relative 'vault/list_command'
3
3
  require_relative 'vault/read_command'
4
4
  require_relative 'vault/remove_command'
5
+ require_relative 'vault/update_command'
5
6
 
6
7
  class Kontena::Cli::VaultCommand < Clamp::Command
7
8
 
8
- subcommand "write", "Write a secret", Kontena::Cli::Vault::WriteCommand
9
9
  subcommand ["list", "ls"], "List secrets", Kontena::Cli::Vault::ListCommand
10
+ subcommand "write", "Write a secret", Kontena::Cli::Vault::WriteCommand
10
11
  subcommand "read", "Read secret", Kontena::Cli::Vault::ReadCommand
12
+ subcommand "update", "Update secret", Kontena::Cli::Vault::UpdateCommand
11
13
  subcommand ["remove", "rm"], "Remove secret", Kontena::Cli::Vault::RemoveCommand
12
14
 
13
15
  def execute
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.3
4
+ version: 0.11.4
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-02-01 00:00:00.000000000 Z
11
+ date: 2016-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -139,6 +139,7 @@ files:
139
139
  - lib/kontena/cli/apps/logs_command.rb
140
140
  - lib/kontena/cli/apps/monitor_command.rb
141
141
  - lib/kontena/cli/apps/remove_command.rb
142
+ - lib/kontena/cli/apps/restart_command.rb
142
143
  - lib/kontena/cli/apps/scale_command.rb
143
144
  - lib/kontena/cli/apps/show_command.rb
144
145
  - lib/kontena/cli/apps/start_command.rb
@@ -246,6 +247,7 @@ files:
246
247
  - lib/kontena/cli/vault/list_command.rb
247
248
  - lib/kontena/cli/vault/read_command.rb
248
249
  - lib/kontena/cli/vault/remove_command.rb
250
+ - lib/kontena/cli/vault/update_command.rb
249
251
  - lib/kontena/cli/vault/write_command.rb
250
252
  - lib/kontena/cli/vault_command.rb
251
253
  - lib/kontena/cli/verify_account_command.rb