Class: Seira::Util::ResourceRenderer

Inherits:
Object
  • Object
show all
Includes:
ERB::Util
Defined in:
lib/seira/util/resource_renderer.rb

Constant Summary collapse

DEFAULT_JOB_PARALELLISM =
1

Instance Method Summary collapse

Constructor Details

#initialize(template:, context:, locals:) ⇒ ResourceRenderer

Returns a new instance of ResourceRenderer.



8
9
10
11
12
13
# File 'lib/seira/util/resource_renderer.rb', line 8

def initialize(template:, context:, locals:)
  @template = template
  @context = context
  @locals = locals
  @summary = {}
end

Instance Method Details

#current_replica_count(deployment) ⇒ Object

BEGIN ERB templating methods and variables



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/seira/util/resource_renderer.rb', line 30

def current_replica_count(deployment)
  count = Seira::Helpers.get_current_replicas(deployment: deployment, context: @context)
  @summary["#{deployment}-replicas"] = count

  # Validate a sane count so that we don't accidentally deploy 0 replicas
  unless count && count.is_a?(Integer)
    fail "Received invalid value for replica count for Deployment #{deployment} '#{count}'"
  end

  count
end

#get_secret(secret_name) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'lib/seira/util/resource_renderer.rb', line 42

def get_secret(secret_name)
  secret_value = Seira::Helpers.get_secret(key: secret_name, context: @context)
  @summary[secret_name] = 'fetched'

  # Validate we actually get something back
  fail "Missing value for secret #{secret_name}" unless secret_value

  secret_value
end

#job_parallelism(parallelism) ⇒ Object



52
53
54
55
56
# File 'lib/seira/util/resource_renderer.rb', line 52

def job_parallelism(parallelism)
  rv = parallelism || DEFAULT_JOB_PARALELLISM
  @summary['parallelism'] = rv
  rv
end

#renderObject

“binding” is a special method every ruby object has to expose its instance variables ruby-doc.org/core-2.2.0/Binding.html



18
19
20
21
22
23
24
25
26
27
# File 'lib/seira/util/resource_renderer.rb', line 18

def render
  result = ERB.new(@template).result(binding)

  puts "Rendered with following ERB variables:"
  @summary.each do |key, value|
    puts "#{key}: #{value}"
  end

  result
end

#restarted_at_valueObject



64
65
66
67
68
# File 'lib/seira/util/resource_renderer.rb', line 64

def restarted_at_value
  rv = @locals['RESTARTED_AT_VALUE']
  @summary["restarted_at_value"] = rv
  rv
end

#target_revisionObject



58
59
60
61
62
# File 'lib/seira/util/resource_renderer.rb', line 58

def target_revision
  rv = @locals['REVISION']
  @summary["revision"] = rv
  rv
end