seira 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/helpers.rb +5 -0
- data/lib/seira.rb +1 -0
- data/lib/seira/app.rb +11 -2
- data/lib/seira/util/resource_renderer.rb +50 -0
- data/lib/seira/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d7dd4175a2ca8716b7226970d47d7273024ef9d
|
4
|
+
data.tar.gz: 9fbc31ace33e51e8eaccacbeb928a2ff7ba48a32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c161b97c31a7798c21b7c76076082c53984be70ce9570faa683306b5018225ad6718c7b17deec62e67479e0187012c79c6f3a1142d16e1192cf8e143883ef77
|
7
|
+
data.tar.gz: f09128aed8bb270c446110192ce94de26bc51fd2f91a098a90df5b7de0894e083ec77b3daafe2d0b061260ffc374ddf79621ca0e5e942c15e5284047c151b420
|
data/lib/helpers.rb
CHANGED
@@ -30,6 +30,11 @@ module Seira
|
|
30
30
|
Secrets.new(app: context[:app], action: 'get', args: [], context: context).get(key)
|
31
31
|
end
|
32
32
|
|
33
|
+
def get_current_replicas(deployment:, context:)
|
34
|
+
output = Seira::Commands.kubectl("get deployment #{deployment} -o json", context: context, return_output: true)
|
35
|
+
JSON.parse(output)['spec']['replicas']
|
36
|
+
end
|
37
|
+
|
33
38
|
def shell_username
|
34
39
|
`whoami`
|
35
40
|
rescue
|
data/lib/seira.rb
CHANGED
@@ -20,6 +20,7 @@ require 'seira/secrets'
|
|
20
20
|
require 'seira/settings'
|
21
21
|
require 'seira/setup'
|
22
22
|
require 'seira/node_pools'
|
23
|
+
require 'seira/util/resource_renderer'
|
23
24
|
|
24
25
|
# A base runner class that does base checks and then delegates the actual
|
25
26
|
# work for the command to a class in lib/seira folder.
|
data/lib/seira/app.rb
CHANGED
@@ -206,12 +206,21 @@ module Seira
|
|
206
206
|
# If we have run into a directory item, skip it
|
207
207
|
next if File.directory?("#{source}/#{item}")
|
208
208
|
|
209
|
-
# Skip any manifest file that has "seira-skip.yaml"
|
209
|
+
# Skip any manifest file that has "seira-skip.yaml" in the file name (ERB or not). Common use case is for Job definitions
|
210
210
|
# to be used in "seira staging <app> jobs run"
|
211
|
-
next if item.
|
211
|
+
next if item.include?("seira-skip.yaml")
|
212
212
|
|
213
213
|
text = File.read("#{source}/#{item}")
|
214
214
|
|
215
|
+
# First run it through ERB if it should be
|
216
|
+
if item.end_with?('.erb')
|
217
|
+
locals = {}.merge(replacement_hash)
|
218
|
+
renderer = Seira::Util::ResourceRenderer.new(template: text, context: context, locals: locals)
|
219
|
+
text = renderer.render
|
220
|
+
end
|
221
|
+
|
222
|
+
# Then run through old basic find/replace tempalating.
|
223
|
+
# TODO: Do deprecation process for old home-made templating
|
215
224
|
new_contents = text
|
216
225
|
replacement_hash.each do |key, value|
|
217
226
|
new_contents.gsub!(key, value)
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Seira
|
2
|
+
module Util
|
3
|
+
class ResourceRenderer
|
4
|
+
include ERB::Util
|
5
|
+
|
6
|
+
def initialize(template:, context:, locals:)
|
7
|
+
@template = template
|
8
|
+
@context = context
|
9
|
+
@locals = locals
|
10
|
+
@summary = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
# "binding" is a special method every ruby object has to expose its
|
14
|
+
# instance variables
|
15
|
+
# https://ruby-doc.org/core-2.2.0/Binding.html
|
16
|
+
def render
|
17
|
+
result = ERB.new(@template).result(binding)
|
18
|
+
|
19
|
+
puts "Rendered with following ERB variables:"
|
20
|
+
@summary.each do |key, value|
|
21
|
+
puts "#{key}: #{value}"
|
22
|
+
end
|
23
|
+
|
24
|
+
result
|
25
|
+
end
|
26
|
+
|
27
|
+
# BEGIN ERB templating methods and variables
|
28
|
+
def current_replica_count(deployment)
|
29
|
+
count = Seira::Helpers.get_current_replicas(deployment: deployment, context: @context)
|
30
|
+
@summary["#{deployment}-replicas"] = count
|
31
|
+
|
32
|
+
# Validate a sane count so that we don't accidentally deploy 0 replicas
|
33
|
+
unless count && count.is_a?(Integer)
|
34
|
+
fail "Received invalid value for replica count for Deployment #{deployment} '#{count}'"
|
35
|
+
end
|
36
|
+
|
37
|
+
count
|
38
|
+
end
|
39
|
+
|
40
|
+
def target_revision
|
41
|
+
@locals['REVISION']
|
42
|
+
end
|
43
|
+
|
44
|
+
def restarted_at_value
|
45
|
+
@locals['RESTARTED_AT_VALUE']
|
46
|
+
end
|
47
|
+
# END ERB templating methods and variables
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/seira/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seira
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Ringwelski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -135,6 +135,7 @@ files:
|
|
135
135
|
- lib/seira/secrets.rb
|
136
136
|
- lib/seira/settings.rb
|
137
137
|
- lib/seira/setup.rb
|
138
|
+
- lib/seira/util/resource_renderer.rb
|
138
139
|
- lib/seira/version.rb
|
139
140
|
- seira.gemspec
|
140
141
|
homepage: https://github.com/joinhandshake/seira
|