Class: KubernetesTemplateRendering::TemplateDirectoryRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/kubernetes_template_rendering/template_directory_renderer.rb

Constant Summary collapse

DEFINITIONS_FILENAME =
"definitions.yaml"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directories:, rendered_directory:, omitted_names: [], cluster_type: nil, region: nil, color: nil, variable_overrides: nil, source_repo: nil) ⇒ TemplateDirectoryRenderer

Returns a new instance of TemplateDirectoryRenderer.



18
19
20
21
22
23
24
25
26
27
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 18

def initialize(directories:, rendered_directory:, omitted_names: [], cluster_type: nil, region: nil, color: nil, variable_overrides: nil, source_repo: nil)
  @directories        = directories_with_definitions(Array(directories))
  @omitted_names      = Array(omitted_names)
  @rendered_directory = rendered_directory
  @cluster_type       = cluster_type
  @region             = region
  @color              = color
  @variable_overrides = variable_overrides || {}
  @source_repo        = source_repo
end

Instance Attribute Details

#cluster_typeObject (readonly)

Returns the value of attribute cluster_type.



16
17
18
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 16

def cluster_type
  @cluster_type
end

#colorObject (readonly)

Returns the value of attribute color.



16
17
18
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 16

def color
  @color
end

#directoriesObject (readonly)

Returns the value of attribute directories.



16
17
18
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 16

def directories
  @directories
end

#omitted_namesObject (readonly)

Returns the value of attribute omitted_names.



16
17
18
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 16

def omitted_names
  @omitted_names
end

#regionObject (readonly)

Returns the value of attribute region.



16
17
18
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 16

def region
  @region
end

#rendered_directoryObject (readonly)

Returns the value of attribute rendered_directory.



16
17
18
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 16

def rendered_directory
  @rendered_directory
end

#source_repoObject (readonly)

Returns the value of attribute source_repo.



16
17
18
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 16

def source_repo
  @source_repo
end

#variable_overridesObject (readonly)

Returns the value of attribute variable_overrides.



16
17
18
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 16

def variable_overrides
  @variable_overrides
end

Instance Method Details

#render(args) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/kubernetes_template_rendering/template_directory_renderer.rb', line 29

def render(args)
  child_pids = []
  failed_processes = [] # [[pid, status]]

  resource_sets.each do |name, resource_sets|
    puts "Rendering templates for definition #{Color.red(name)}..."
    resource_sets.each do |resource_set|
      if args.fork?
        if (pid = Process.fork)
          # this is the parent
          child_pids << pid
          wait_if_max_forked(child_pids, failed_processes)
        else
          # this is the child
          render_set(args, resource_set)
          Kernel.exit!(0) # skip at_exit handlers since parent will run those
        end
      else
        render_set(args, resource_set)
      end
    end
  end

  if args.fork?
    Process.waitall.each do |pid, status|
      status.success? or failed_processes << [pid, status]
    end

    if failed_processes.any?
      raise "Child process completed with non-zero status: #{failed_processes.inspect}"
    end
  end
end