Module: ForemanPuppet::Extensions::ProvisioningTemplate::PrependedClassMethods

Defined in:
app/models/concerns/foreman_puppet/extensions/provisioning_template.rb

Instance Method Summary collapse

Instance Method Details

#template_includesObject



41
42
43
44
45
46
47
# File 'app/models/concerns/foreman_puppet/extensions/provisioning_template.rb', line 41

def template_includes
  includes = super
  tc_include = includes.detect { |i| i.key?(:template_combinations) }
  tc_include ||= includes << {}
  tc_include[:template_combinations] = i[hostgroup environment]
  includes
end

#templates_by_template_combinations(templates, hosts_or_conditions) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/models/concerns/foreman_puppet/extensions/provisioning_template.rb', line 25

def templates_by_template_combinations(templates, hosts_or_conditions)
  if hosts_or_conditions.is_a?(Hash)
    conditions = hosts_or_conditions
    conditions[:hostgroup_id] = Array.wrap(conditions[:hostgroup_id]) | [nil]
    conditions[:environment_id] = Array.wrap(conditions[:environment_id]) | [nil]
  else
    conditions = {}
    conditions[:hostgroup_id] = hosts_or_conditions.pluck(:hostgroup_id) | [nil]
    conditions[:environment_id] = hosts_or_conditions.pluck(:environment_id) | [nil]
  end
  at = TemplateCombination.arel_table
  arel = at[:hostgroup_id].in(conditions[:hostgroup_id])
  arel = arel.and(at[:environment_id].in(conditions[:environment_id]))
  templates.joins(:template_combinations).where(arel).distinct
end