kubert 0.0.1.pre.dev4 → 0.0.1.pre.dev5

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: 6fc9f4df72075bddeae828fd353ae45341da6a0b
4
- data.tar.gz: 75603110af406a922971b1e18c4aca40098d2f2f
3
+ metadata.gz: 502c0c47c579535db10030b1cfb5dabf820d860c
4
+ data.tar.gz: e182069a2f38088918f467bfa8b64f5f0588ed13
5
5
  SHA512:
6
- metadata.gz: fcc9294fd369a31d7413628aacb9f5d785ec72a9ea267ce824e8340c95de273a97b78baa7ecd345a6e01366051225cc71eaf138c0e5ca5512aefca048974a988
7
- data.tar.gz: 862c103ea6a185ec3e591867d44bbc9e63fe0508eb1efe956e0353df1ce348dae63994e90644f210ccdc37a0310093ded047bbb54c6e58f3c87a95e9fcccebe6
6
+ metadata.gz: 2ad31da5c06bc00a311088ce584219ea1565fa7cce4b08f478a6fa778e9d7499224e56e6738c4dab54d1e24c2b6827f6eab37f43a89b6b7fd1fd0d3b7c40afb4
7
+ data.tar.gz: 7b1ad5f9a64ba36c7b5bf5360c8f16187926ff10bbca4787e078f8722642517c2535c632727d169a11710a4c514bb58389c8b92b40e0cc3de1aa57d6f6744402
data/README.md CHANGED
@@ -1,9 +1,5 @@
1
1
  # Kubert
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/kubert`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
6
-
7
3
  ## Installation
8
4
 
9
5
  Add this line to your application's Gemfile:
data/kubert.gemspec CHANGED
@@ -30,6 +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
34
  spec.add_development_dependency 'pry', '~> 0.10'
34
35
  spec.add_development_dependency "bundler", "~> 1.13"
35
36
  spec.add_development_dependency "rake", "~> 10.0"
data/lib/kubert/cli.rb CHANGED
@@ -9,9 +9,41 @@ module Kubert
9
9
  puts Pods.list(pod_type, status)
10
10
  end
11
11
 
12
+ desc "context", "Print current kubectl current context"
13
+ def context
14
+ puts Kubert.kube_config.contexts.select {|c| Kubert.kube_config.context.api_endpoint.match(c) }
15
+ end
16
+
17
+ desc "sandbox", "Connect to a Rails console in sandbox that will wrap session in DB transaction and rollback when done"
18
+ def sandbox
19
+ execute("rails", "console", "--sandbox")
20
+ end
21
+
12
22
  desc "console", "Connect to a Rails console on a console pod"
13
23
  def console
14
- Pods.console
24
+ execute("rails", "console")
25
+ end
26
+
27
+ desc "execute command", "Connect to a pod run the specified command (with bundle exec prefix)"
28
+ def execute(*command)
29
+ Pods.execute(command)
30
+ end
31
+
32
+ desc "deploy", "Perform a deployment"
33
+ def deploy
34
+ Deployment.perform
35
+ end
36
+
37
+ desc "rollback", "Connect to a pod run the specified command (with bundle exec prefix)"
38
+ def rollback
39
+ Deployment.rollback
40
+ end
41
+
42
+ Kubert.contexts.each do |context_name, context_endpoint|
43
+ desc context_name, "Use kubernetes #{context_endpoint} for kubectl commands"
44
+ define_method(context_name) do
45
+ puts `kubectl config use-context #{context_endpoint}`
46
+ end
15
47
  end
16
48
 
17
49
  end
@@ -0,0 +1,23 @@
1
+ module Kubert
2
+ class Deployment
3
+ def self.perform
4
+ new.perform
5
+ end
6
+
7
+ def self.rollback
8
+ new.rollback
9
+ end
10
+
11
+ attr_reader :project_name, :deployments
12
+ def initialize(project_name= Kubert.configuration[:project_name])
13
+ @project_name = project_name
14
+ @deployments = []
15
+ end
16
+
17
+ def rollback
18
+ end
19
+
20
+ def perform
21
+ end
22
+ end
23
+ end
data/lib/kubert/pods.rb CHANGED
@@ -8,14 +8,18 @@ module Kubert
8
8
  new.console
9
9
  end
10
10
 
11
- attr_reader :project, :pods
12
- def initialize(project= ENV['PROJECT'] || "connect")
13
- @project = project
11
+ def self.execute(command)
12
+ new.execute(command)
13
+ end
14
+
15
+ attr_reader :project_name, :pods
16
+ def initialize(project_name= Kubert.configuration[:project_name])
17
+ @project_name = project_name
14
18
  @pods = []
15
19
  end
16
20
 
17
21
  def all(pod_type)
18
- @pods = Kubert.client.get_pods(label_selector: "app=#{project}-#{pod_type}")
22
+ @pods = Kubert.client.get_pods(label_selector: "app=#{project_name}-#{pod_type}")
19
23
  self
20
24
  end
21
25
 
@@ -28,14 +32,15 @@ module Kubert
28
32
  pods.map(&:metadata).map(&:name)
29
33
  end
30
34
 
31
- def console
35
+ def execute(command)
32
36
  pod = all('console').status(:running).pods.sample
37
+ exec_command = "kubectl exec -n #{pod.metadata.namespace} #{pod.metadata.name} -it bundle exec #{command.join(' ')}"
38
+ puts "Executing command: \n#{exec_command}"
33
39
  Open3.popen3("bash") do
34
- exec "kubectl exec -n #{pod.metadata.namespace} #{pod.metadata.name} -it bundle exec rails c"
40
+ exec exec_command
35
41
  end
36
42
  puts "THIS WILL NEVER EXECUTE BECAUSE OF EXEC ABOVE"
37
43
  end
38
44
 
39
-
40
45
  end
41
46
  end
@@ -1,3 +1,3 @@
1
1
  module Kubert
2
- VERSION = "0.0.1-dev4"
2
+ VERSION = "0.0.1-dev5"
3
3
  end
data/lib/kubert.rb CHANGED
@@ -1,17 +1,32 @@
1
1
  require 'kubeclient'
2
+ require 'ky'
2
3
  require 'open3'
3
4
  require_relative "kubert/pods"
4
5
 
5
6
  module Kubert
7
+ def self.kube_config
8
+ @kube_config ||= Kubeclient::Config.read(File.expand_path('~/.kube/config'))
9
+ end
10
+
11
+ def self.contexts
12
+ configuration[:contexts] || []
13
+ end
14
+
15
+ def self.configuration
16
+ @config ||= begin
17
+ config = KY::Configuration.new
18
+ (config[:kubert] || {}).merge(project_name: config[:project_name])
19
+ end
20
+ end
21
+
6
22
  def self.client
7
23
  @client ||= begin
8
- kube_client_config = Kubeclient::Config.read(File.expand_path('~/.kube/config'))
9
24
  Kubeclient::Client.new(
10
- kube_client_config.context.api_endpoint,
11
- kube_client_config.context.api_version,
25
+ kube_config.context.api_endpoint,
26
+ kube_config.context.api_version,
12
27
  {
13
- ssl_options: kube_client_config.context.ssl_options,
14
- auth_options: kube_client_config.context.auth_options
28
+ ssl_options: kube_config.context.ssl_options,
29
+ auth_options: kube_config.context.auth_options
15
30
  }
16
31
  )
17
32
  end
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.dev4
4
+ version: 0.0.1.pre.dev5
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-24 00:00:00.000000000 Z
11
+ date: 2017-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ky
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.5'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.5'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: pry
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -117,6 +131,7 @@ files:
117
131
  - kubert.gemspec
118
132
  - lib/kubert.rb
119
133
  - lib/kubert/cli.rb
134
+ - lib/kubert/deployment.rb
120
135
  - lib/kubert/pods.rb
121
136
  - lib/kubert/version.rb
122
137
  homepage: