Class: KubernetesTemplateRendering::ResourceSet
- Inherits:
-
Object
- Object
- KubernetesTemplateRendering::ResourceSet
- Defined in:
- lib/kubernetes_template_rendering/resource_set.rb
Instance Attribute Summary collapse
-
#colors ⇒ Object
readonly
Returns the value of attribute colors.
-
#definitions_path ⇒ Object
readonly
Returns the value of attribute definitions_path.
-
#deploy_group_config ⇒ Object
readonly
Returns the value of attribute deploy_group_config.
-
#kubernetes_cluster_type ⇒ Object
readonly
Returns the value of attribute kubernetes_cluster_type.
-
#omitted_resources ⇒ Object
readonly
Returns the value of attribute omitted_resources.
-
#output_directory ⇒ Object
readonly
Returns the value of attribute output_directory.
-
#regions ⇒ Object
readonly
Returns the value of attribute regions.
-
#source_repo ⇒ Object
readonly
Returns the value of attribute source_repo.
-
#spps ⇒ Object
readonly
Returns the value of attribute spps.
-
#target_output_directory ⇒ Object
readonly
Returns the value of attribute target_output_directory.
-
#template_directory ⇒ Object
readonly
Returns the value of attribute template_directory.
-
#variable_overrides ⇒ Object
readonly
Returns the value of attribute variable_overrides.
-
#variables ⇒ Object
readonly
Returns the value of attribute variables.
Instance Method Summary collapse
-
#initialize(config:, template_directory:, rendered_directory:, definitions_path:, kubernetes_cluster_type:, spp: false, spps: [], variable_overrides: {}, source_repo: nil) ⇒ ResourceSet
constructor
A new instance of ResourceSet.
- #normal_render(args) ⇒ Object
-
#reconcile_scopes ⇒ Object
Bounded reconcile scope roots for this entry, one per region × color.
- #render(args) ⇒ Object
- #render_create_directory(args, output_directory) ⇒ Object
Constructor Details
#initialize(config:, template_directory:, rendered_directory:, definitions_path:, kubernetes_cluster_type:, spp: false, spps: [], variable_overrides: {}, source_repo: nil) ⇒ ResourceSet
Returns a new instance of ResourceSet.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 22 def initialize(config:, template_directory:, rendered_directory:, definitions_path:, kubernetes_cluster_type:, spp: false, spps: [], variable_overrides: {}, source_repo: nil) @spp = spp @variables = config["variables"] || {} @deploy_group_config = config["deploy_groups"] @omitted_resources = config["omitted_resources"] @template_directory = template_directory @target_output_directory = resolve_target_output_directory(config["directory"], config["subdirectory"]) @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 = {} @spps = Array(spps) 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
#colors ⇒ Object (readonly)
Returns the value of attribute colors.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def colors @colors end |
#definitions_path ⇒ Object (readonly)
Returns the value of attribute definitions_path.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def definitions_path @definitions_path end |
#deploy_group_config ⇒ Object (readonly)
Returns the value of attribute deploy_group_config.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def deploy_group_config @deploy_group_config end |
#kubernetes_cluster_type ⇒ Object (readonly)
Returns the value of attribute kubernetes_cluster_type.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def kubernetes_cluster_type @kubernetes_cluster_type end |
#omitted_resources ⇒ Object (readonly)
Returns the value of attribute omitted_resources.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def omitted_resources @omitted_resources end |
#output_directory ⇒ Object (readonly)
Returns the value of attribute output_directory.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def output_directory @output_directory end |
#regions ⇒ Object (readonly)
Returns the value of attribute regions.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def regions @regions end |
#source_repo ⇒ Object (readonly)
Returns the value of attribute source_repo.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def source_repo @source_repo end |
#spps ⇒ Object (readonly)
Returns the value of attribute spps.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def spps @spps end |
#target_output_directory ⇒ Object (readonly)
Returns the value of attribute target_output_directory.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def target_output_directory @target_output_directory end |
#template_directory ⇒ Object (readonly)
Returns the value of attribute template_directory.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def template_directory @template_directory end |
#variable_overrides ⇒ Object (readonly)
Returns the value of attribute variable_overrides.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def variable_overrides @variable_overrides end |
#variables ⇒ Object (readonly)
Returns the value of attribute variables.
17 18 19 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 17 def variables @variables end |
Instance Method Details
#normal_render(args) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 45 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 |
#reconcile_scopes ⇒ Object
Bounded reconcile scope roots for this entry, one per region × color.
The sweep root is the parent directory of the entry's rendered output_directory, derived
from the actual directory: pattern rather than assuming a fixed layout. For a
.../<service> pattern that parent is the <region>/<cluster_type>/<color> base; for a
<region>/<service> pattern it is <region>. The parent is shared with sibling entries, so
leftovers from a deleted/renamed entry under it are swept. The renderer validates each
base_root stays within rendered_directory (out-of-prefix, full or relative, is a hard error).
Each scope also carries spp: (whether this entry is an SPP definition) and spp_base_root:
(the canonical <region>/<cluster_type>/<color>/spp/SPP-PLACEHOLDER prefix for that region ×
color) so the renderer can enforce the SPP layout guard before rendering.
87 88 89 90 91 92 93 94 95 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 87 def reconcile_scopes @regions.flat_map do |plain_region| @colors.map do |c| output_directory = File.join(@rendered_directory, format(@target_output_directory, plain_region: plain_region, color: c, type: @kubernetes_cluster_type)) spp_base_root = File.join(@rendered_directory, format(SPP_BASE_OUTPUT_DIRECTORY, plain_region: plain_region, color: c, type: @kubernetes_cluster_type)) { base_root: File.dirname(output_directory), output_directory: output_directory, spp: @spp, spp_base_root: spp_base_root } end end end |
#render(args) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 58 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
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/kubernetes_template_rendering/resource_set.rb', line 97 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 (args, output_directory) puts end |