Revision e0910b7e
Added by Michael Moll almost 6 years ago
app/controllers/concerns/api/v2/lookup_keys_common_controller.rb | ||
---|---|---|
end
|
||
|
||
def smart_variable_id?
|
||
params.keys.include?('smart_variable_id') || controller_name.match(/smart_variables/)
|
||
params.key?('smart_variable_id') || controller_name.match(/smart_variables/)
|
||
end
|
||
|
||
def smart_class_parameter_id?
|
||
params.keys.include?('smart_class_parameter_id') || controller_name.match(/smart_class_parameters/)
|
||
params.key?('smart_class_parameter_id') || controller_name.match(/smart_class_parameters/)
|
||
end
|
||
|
||
[Puppetclass, Environment, Host::Base, Hostgroup].each do |model|
|
||
model_string = model.to_s.split('::').first.downcase
|
||
|
||
define_method("#{model_string}_id?") do
|
||
params.keys.include?("#{model_string}_id")
|
||
params.key?("#{model_string}_id")
|
||
end
|
||
|
||
define_method("find_#{model_string}") do
|
||
... | ... | |
end
|
||
|
||
def find_smart_variable
|
||
id = params.keys.include?('smart_variable_id') ? params['smart_variable_id'] : params['id']
|
||
id = params.key?('smart_variable_id') ? params['smart_variable_id'] : params['id']
|
||
@smart_variable = VariableLookupKey.authorized(:view_external_variables).smart_variables.find_by_id(id.to_i) if id.to_i > 0
|
||
@smart_variable ||= begin
|
||
puppet_cond = { :puppetclass_id => @puppetclass.id } if @puppetclass
|
||
... | ... | |
end
|
||
|
||
def find_smart_class_parameter
|
||
id = params.keys.include?('smart_class_parameter_id') ? params['smart_class_parameter_id'] : params['id']
|
||
id = params.key?('smart_class_parameter_id') ? params['smart_class_parameter_id'] : params['id']
|
||
@smart_class_parameter = PuppetclassLookupKey.authorized(:view_external_parameters).smart_class_parameters.find_by_id(id.to_i) if id.to_i > 0
|
||
@smart_class_parameter ||= begin
|
||
puppet_cond = { 'environment_classes.puppetclass_id'=> @puppetclass.id } if @puppetclass
|
||
... | ... | |
if (@smarts && @smart && !@smarts.find_by_id(@smart.id)) || (@smarts && !@smart)
|
||
obj = smart_variable_id? ? "Smart variable" : "Smart class parameter"
|
||
id = if smart_variable_id?
|
||
params.keys.include?('smart_variable_id') ? params['smart_variable_id'] : params['id']
|
||
params.key?('smart_variable_id') ? params['smart_variable_id'] : params['id']
|
||
else
|
||
params.keys.include?('smart_class_parameter_id') ? params['smart_variable_id'] : params['id']
|
||
params.key?('smart_class_parameter_id') ? params['smart_variable_id'] : params['id']
|
||
end
|
||
not_found "#{obj} not found by id '#{id}'"
|
||
end
|
Also available in: Unified diff
Fixes #23857 - Fix Performance/InefficientHashSearch cop