Class: KubernetesTemplateRendering::ResourceSet

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config:, template_directory:, rendered_directory:, definitions_path:, kubernetes_cluster_type:, variable_overrides: {}, source_repo: nil) ⇒ ResourceSet



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 18

def initialize(config:, template_directory:, rendered_directory:, definitions_path:, kubernetes_cluster_type:, variable_overrides: {}, source_repo: nil)
  @variables               = config["variables"] || {}
  @deploy_group_config     = config["deploy_groups"]
  @omitted_resources       = config["omitted_resources"]
  @template_directory      = template_directory
  @target_output_directory = config["directory"] or raise ArgumentError, "missing 'directory:' in #{config.inspect}"
  @regions                 = config["regions"] || []
  @colors                  = config["colors"] || []
  @rendered_directory      = rendered_directory
  @definitions_path        = definitions_path
  @kubernetes_cluster_type = kubernetes_cluster_type
  @variable_overrides      = variable_overrides
  @source_repo             = source_repo
  @resources               = {}

  if @kubernetes_cluster_type != "kube-platform"
    @target_output_directory.include?("%{plain_region}") or raise "#{@template_directory}: target_output_directory #{@target_output_directory} needs %{plain_region}"
  end
end

Instance Attribute Details

#colorsObject (readonly)

Returns the value of attribute colors.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def colors
  @colors
end

#definitions_pathObject (readonly)

Returns the value of attribute definitions_path.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def definitions_path
  @definitions_path
end

#deploy_group_configObject (readonly)

Returns the value of attribute deploy_group_config.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def deploy_group_config
  @deploy_group_config
end

#kubernetes_cluster_typeObject (readonly)

Returns the value of attribute kubernetes_cluster_type.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def kubernetes_cluster_type
  @kubernetes_cluster_type
end

#omitted_resourcesObject (readonly)

Returns the value of attribute omitted_resources.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def omitted_resources
  @omitted_resources
end

#output_directoryObject (readonly)

Returns the value of attribute output_directory.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def output_directory
  @output_directory
end

#regionsObject (readonly)

Returns the value of attribute regions.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def regions
  @regions
end

#source_repoObject (readonly)

Returns the value of attribute source_repo.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def source_repo
  @source_repo
end

#target_output_directoryObject (readonly)

Returns the value of attribute target_output_directory.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def target_output_directory
  @target_output_directory
end

#template_directoryObject (readonly)

Returns the value of attribute template_directory.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def template_directory
  @template_directory
end

#variable_overridesObject (readonly)

Returns the value of attribute variable_overrides.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def variable_overrides
  @variable_overrides
end

#variablesObject (readonly)

Returns the value of attribute variables.



13
14
15
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 13

def variables
  @variables
end

Instance Method Details

#normal_render(args) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 38

def normal_render(args)
  dynamic_output_directory? and raise "Directory must not be dynamic: #{target_output_directory}"

  variables["kubernetes_cluster_type"] = @kubernetes_cluster_type

  if (plain_region = variables["plain_region"])
    default_region_vars(plain_region)
  end

  output_directory = File.join(@rendered_directory, target_output_directory)
  render_create_directory(args, output_directory)
end

#render(args) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 51

def render(args)
  @regions.any? or raise "#{template_directory}: must have at least one region"
  @colors.any? or raise "#{template_directory}: must have at least one color"

  variables["kubernetes_cluster_type"] = @kubernetes_cluster_type

  @regions.each do |plain_region|
    default_region_vars(plain_region)

    @colors.each do |c|
      variables["color"] = c
      output_directory = File.join(@rendered_directory, format(@target_output_directory, plain_region: plain_region, color: c, type: @kubernetes_cluster_type))
      render_create_directory(args, output_directory)
    end
  end
end

#render_create_directory(args, output_directory) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 68

def render_create_directory(args, output_directory)
  prune_directory(output_directory) if args.prune?
  create_directory(output_directory)
  puts "Rendering templates to: #{Color.magenta(output_directory)}"
  puts "Variable assignments:"
  variables.each { |k, v| puts "\t#{Color.magenta(k)}=#{Color.blue(v)}" }
  puts
  if omitted_resources
    puts "Omitted resources:"
    omitted_resources.each { |ot| puts "\t#{ot}" }
  end
  puts
  resources(output_directory).each do |resource|
    resource.render(args)
  end
  puts
end