theforeman/foreman · error · Foreman::Exception
Duplicated inputs detected: %{duplicated_inputs}
Error message
Duplicated inputs detected: %{duplicated_inputs} What it means
Error "Duplicated inputs detected: %{duplicated_inputs}" thrown in theforeman/foreman.
Source
Thrown at app/models/template.rb:187
def render(renderer: Foreman::Renderer, host: nil, params: {}, variables: {}, mode: Foreman::Renderer::REAL_MODE, template_input_values: {}, source_klass: nil)
source = Foreman::Renderer.get_source(template: self, host: host, klass: source_klass)
scope = Foreman::Renderer.get_scope(host: host, params: params, variables: variables, mode: mode, template: self, source: source, template_input_values: template_input_values)
renderer.render(source, scope)
end
def dup
dup = super
template_inputs.each do |input|
dup.template_inputs.build input.attributes.except('template_id', 'id', 'created_at', 'updated_at')
end
dup
end
def validate_unique_inputs!
duplicated_inputs = template_inputs.group_by(&:name).values.select { |values| values.size > 1 }.map(&:first)
unless duplicated_inputs.empty?
raise Foreman::Exception.new(N_('Duplicated inputs detected: %{duplicated_inputs}'), :duplicated_inputs => duplicated_inputs.map(&:name))
end
end
def sync_inputs(inputs)
inputs ||= []
# Build a hash where keys are input names
inputs = inputs.inject({}) { |h, input| h.update(input['name'] => input) }
# Sync existing inputs
template_inputs.each do |existing_input|
if inputs.include?(existing_input.name)
existing_input.assign_attributes(inputs.delete(existing_input.name))
else
existing_input.mark_for_destruction
end
end
# Create new inputsView on GitHub (pinned to 6b05625475)
When it happens
Trigger: Thrown at app/models/template.rb:187 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of theforeman/foreman@6b05625475 (2026-08-23).
Data as JSON: /api/errors/3545e64f8153eb18.
Report an issue: GitHub.