kubert 0.0.1.pre.dev5 → 0.0.1.pre.dev6

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: 502c0c47c579535db10030b1cfb5dabf820d860c
4
- data.tar.gz: e182069a2f38088918f467bfa8b64f5f0588ed13
3
+ metadata.gz: df48773e44f09c65f555a75fe4303e33ad1c597c
4
+ data.tar.gz: ba0e595e8f60e62f6b6f0340d7c9629430157108
5
5
  SHA512:
6
- metadata.gz: 2ad31da5c06bc00a311088ce584219ea1565fa7cce4b08f478a6fa778e9d7499224e56e6738c4dab54d1e24c2b6827f6eab37f43a89b6b7fd1fd0d3b7c40afb4
7
- data.tar.gz: 7b1ad5f9a64ba36c7b5bf5360c8f16187926ff10bbca4787e078f8722642517c2535c632727d169a11710a4c514bb58389c8b92b40e0cc3de1aa57d6f6744402
6
+ metadata.gz: b2e861857520e53524f27dfd461e5d058e4ba4e7f011bc9945f1f3ef9a995f8e3493e2713a5a692480b6d4afdc4db6fb57b855cf20cfb6ec61fd5bf7cd527a26
7
+ data.tar.gz: 969626a019d04a92f3a70f168f07ba8328cd565da3489afbdc7fea797ac5212a06d8b8e1c3e7b68e0ce7fc430d1b8147f1f9c9ac58e940623a6103f5776d92a1
data/kubert.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.require_paths = ["lib"]
31
31
  spec.add_runtime_dependency 'thor', '~> 0.19'
32
32
  spec.add_runtime_dependency 'kubeclient', '~> 2'
33
- spec.add_runtime_dependency 'ky', '~> 0.5'
33
+ spec.add_runtime_dependency 'ky', '~> 0.5.2.pre1'
34
34
  spec.add_development_dependency 'pry', '~> 0.10'
35
35
  spec.add_development_dependency "bundler", "~> 1.13"
36
36
  spec.add_development_dependency "rake", "~> 10.0"
data/lib/kubert/cli.rb CHANGED
@@ -11,7 +11,7 @@ module Kubert
11
11
 
12
12
  desc "context", "Print current kubectl current context"
13
13
  def context
14
- puts Kubert.kube_config.contexts.select {|c| Kubert.kube_config.context.api_endpoint.match(c) }
14
+ puts Kubert.context
15
15
  end
16
16
 
17
17
  desc "sandbox", "Connect to a Rails console in sandbox that will wrap session in DB transaction and rollback when done"
@@ -30,13 +30,25 @@ module Kubert
30
30
  end
31
31
 
32
32
  desc "deploy", "Perform a deployment"
33
+ method_option :namespace, type: :string, aliases: "-n"
34
+ method_option :environment, type: :string, aliases: "-e"
35
+ method_option :image_tag, type: :string, aliases: "-t"
36
+ method_option :configmap_path, type: :string, aliases: "-c"
37
+ method_option :secrets_path, type: :string, aliases: "-s"
38
+ method_option :output_dir, type: :string, aliases: "-o"
33
39
  def deploy
34
- Deployment.perform
40
+ Deployment.perform(options)
35
41
  end
36
42
 
37
43
  desc "rollback", "Connect to a pod run the specified command (with bundle exec prefix)"
44
+ method_option :namespace, type: :string, aliases: "-n"
45
+ method_option :environment, type: :string, aliases: "-e"
46
+ method_option :image_tag, type: :string, aliases: "-t"
47
+ method_option :configmap_path, type: :string, aliases: "-c"
48
+ method_option :secrets_path, type: :string, aliases: "-s"
49
+ method_option :output_dir, type: :string, aliases: "-o"
38
50
  def rollback
39
- Deployment.rollback
51
+ Deployment.rollback(options)
40
52
  end
41
53
 
42
54
  Kubert.contexts.each do |context_name, context_endpoint|
@@ -1,23 +1,62 @@
1
1
  module Kubert
2
2
  class Deployment
3
- def self.perform
4
- new.perform
3
+ def self.perform(options)
4
+ new(options).perform
5
5
  end
6
6
 
7
- def self.rollback
8
- new.rollback
7
+ def self.rollback(options)
8
+ new(options).rollback
9
9
  end
10
10
 
11
- attr_reader :project_name, :deployments
12
- def initialize(project_name= Kubert.configuration[:project_name])
11
+ attr_reader :project_name, :deployments, :options
12
+ def initialize(options, project_name= Kubert.configuration[:project_name])
13
13
  @project_name = project_name
14
14
  @deployments = []
15
+ @options = options
15
16
  end
16
17
 
17
18
  def rollback
19
+ confirm "rollback" do
20
+ compilation.deploy_generation.proc_commands.keys.each do |deployment_name|
21
+ `kubectl rollout status deployment/#{deployment_name} #{namespace_flag}` unless excluded?(deployment_name)
22
+ end
23
+ end
18
24
  end
19
25
 
20
26
  def perform
27
+ confirm "deploy" do
28
+ compilation.deploy_generation.to_h.each do |deployment_file, _template_hash|
29
+ `kubectl apply -f #{deployment_file}` unless excluded?(deployment_file)
30
+ end
31
+ end
32
+ end
33
+
34
+ def compilation
35
+ @compilation ||= KY::API.compile(options[:configmap_path], options[:secrets_path], options[:output_dir], options_with_defaults)
36
+ end
37
+
38
+ private
39
+
40
+ def confirm(action)
41
+ unless ENV['SKIP_CONFIRMATION']
42
+ puts "Press any key to confirm, ctl-c to abort: #{action.upcase} on #{Kubert.context}"
43
+ confirmation = $stdin.gets
44
+ end
45
+ yield
46
+ end
47
+
48
+ def options_with_defaults
49
+ (options[:environment] ? options : options.merge(environment: Kubert.default_environment)).with_indifferent_access
50
+ end
51
+
52
+
53
+ def namespace_flag
54
+ return unless compilation.configuration[:environment]
55
+ "-n #{compilation.configuration[:environment]} "
56
+ end
57
+
58
+ def excluded?(deployment_info)
59
+ Kubert.excluded_deployments.any? {|deploy| deployment_info.match(deploy) }
21
60
  end
22
61
  end
23
62
  end
@@ -1,3 +1,3 @@
1
1
  module Kubert
2
- VERSION = "0.0.1-dev5"
2
+ VERSION = "0.0.1-dev6"
3
3
  end
data/lib/kubert.rb CHANGED
@@ -2,6 +2,7 @@ require 'kubeclient'
2
2
  require 'ky'
3
3
  require 'open3'
4
4
  require_relative "kubert/pods"
5
+ require_relative "kubert/deployment"
5
6
 
6
7
  module Kubert
7
8
  def self.kube_config
@@ -12,6 +13,18 @@ module Kubert
12
13
  configuration[:contexts] || []
13
14
  end
14
15
 
16
+ def self.default_environment
17
+ configuration[:default_environment]
18
+ end
19
+
20
+ def self.context
21
+ kube_config.contexts.select {|c| kube_config.context.api_endpoint.match(c) }
22
+ end
23
+
24
+ def self.excluded_deployments
25
+ configuration[:excluded_deployments] || []
26
+ end
27
+
15
28
  def self.configuration
16
29
  @config ||= begin
17
30
  config = KY::Configuration.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kubert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre.dev5
4
+ version: 0.0.1.pre.dev6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Glusman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-26 00:00:00.000000000 Z
11
+ date: 2017-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.5'
47
+ version: 0.5.2.pre1
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: '0.5'
54
+ version: 0.5.2.pre1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement