Project

General

Profile

« Previous | Next » 

Revision e0910b7e

Added by Michael Moll almost 6 years ago

Fixes #23857 - Fix Performance/InefficientHashSearch cop

View differences:

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