class Bosh::Director::Core::Templates::JobInstanceRenderer

Public Class Methods

new(templates, job_template_loader) click to toggle source
# File lib/bosh/director/core/templates/job_instance_renderer.rb, line 6
def initialize(templates, job_template_loader)
  @templates = templates
  @job_template_loader = job_template_loader
end

Public Instance Methods

render(spec) click to toggle source
# File lib/bosh/director/core/templates/job_instance_renderer.rb, line 11
def render(spec)
  errors = []

  rendered_templates = @templates.map do |template|
    job_template_renderer = job_template_renderers[template.name]

    begin
      job_template_renderer.render(spec)
    rescue Exception => e
      errors.push e
    end
  end

  if errors.length > 0
    message = "Unable to render jobs for instance group '#{spec['job']['name']}'. Errors are:"

    errors.each do |e|
      message = "#{message}\n   - #{e.message.gsub(/\n/, "\n  ")}"
    end

    raise message
  end

  RenderedJobInstance.new(rendered_templates)
end

Private Instance Methods

job_template_renderers() click to toggle source
# File lib/bosh/director/core/templates/job_instance_renderer.rb, line 39
def job_template_renderers
  @job_template_renderers ||= @templates.reduce({}) do |hash, template|
    hash[template.name] = @job_template_loader.process(template)
    hash
  end
end