Revision acfbc458
Added by Marek Hulán about 10 years ago
app/controllers/concerns/api/v2/lookup_keys_common_controller.rb | ||
---|---|---|
end
|
||
|
||
def find_puppetclass
|
||
@puppetclass = Puppetclass.find_by_id(params['puppetclass_id'].to_i) if params['puppetclass_id'].to_i > 0
|
||
@puppetclass ||= Puppetclass.find_by_name(params['puppetclass_id'])
|
||
@puppetclass = Puppetclass.authorized(:view_puppetclasses).find_by_id(params['puppetclass_id'].to_i) if params['puppetclass_id'].to_i > 0
|
||
@puppetclass ||= Puppetclass.authorized(:view_puppetclasses).find_by_name(params['puppetclass_id'])
|
||
@puppetclass
|
||
end
|
||
|
||
def find_environment
|
||
@environment = Environment.find_by_id(params['environment_id'].to_i) if params['environment_id'].to_i > 0
|
||
@environment ||= Environment.find_by_name(params['environment_id'])
|
||
@environment = Environment.authorized(:view_environments).find_by_id(params['environment_id'].to_i) if params['environment_id'].to_i > 0
|
||
@environment ||= Environment.authorized(:view_environments).find_by_name(params['environment_id'])
|
||
@environment
|
||
end
|
||
|
||
def find_host
|
||
@host = Host::Base.find_by_id(params['host_id'].to_i) if params['host_id'].to_i > 0
|
||
@host ||= Host::Base.find_by_name(params['host_id'])
|
||
@host = Host::Base.authorized(:view_hosts).find_by_id(params['host_id'].to_i) if params['host_id'].to_i > 0
|
||
@host ||= Host::Base.authorized(:view_hosts).find_by_name(params['host_id'])
|
||
@host
|
||
end
|
||
|
||
def find_hostgroup
|
||
@hostgroup = Hostgroup.find_by_id(params['hostgroup_id'].to_i) if params['hostgroup_id'].to_i > 0
|
||
@hostgroup ||= Hostgroup.find_by_name(params['hostgroup_id'])
|
||
@hostgroup = Hostgroup.authorized(:view_hostgroups).find_by_id(params['hostgroup_id'].to_i) if params['hostgroup_id'].to_i > 0
|
||
@hostgroup ||= Hostgroup.authorized(:view_hostgroups).find_by_name(params['hostgroup_id'])
|
||
@hostgroup
|
||
end
|
||
|
||
def find_smart_variable
|
||
id = params.keys.include?('smart_variable_id') ? params['smart_variable_id'] : params['id']
|
||
@smart_variable = LookupKey.smart_variables.find_by_id(id.to_i) if id.to_i > 0
|
||
@smart_variable = LookupKey.authorized(:view_external_variables).smart_variables.find_by_id(id.to_i) if id.to_i > 0
|
||
@smart_variable ||= (puppet_cond = { :puppetclass_id => @puppetclass.id } if @puppetclass
|
||
LookupKey.smart_variables.where(puppet_cond).find_by_key(id)
|
||
LookupKey.authorized(:view_external_variables).smart_variables.where(puppet_cond).find_by_key(id)
|
||
)
|
||
@smart_variable
|
||
end
|
||
... | ... | |
end
|
||
|
||
def smart_variables_resource_scope
|
||
return LookupKey.smart_variables unless (@puppetclass || @host || @hostgroup)
|
||
return LookupKey.authorized(:view_external_variables).smart_variables unless (@puppetclass || @host || @hostgroup)
|
||
puppetclass_ids = @puppetclass.id if @puppetclass
|
||
puppetclass_ids ||= @hostgroup.all_puppetclasses.map(&:id) if @hostgroup
|
||
puppetclass_ids ||= @host.all_puppetclasses.map(&:id) if @host
|
||
LookupKey.global_parameters_for_class(puppetclass_ids)
|
||
LookupKey.authorized(:view_external_variables).global_parameters_for_class(puppetclass_ids)
|
||
end
|
||
|
||
def find_smart_class_parameter
|
||
id = params.keys.include?('smart_class_parameter_id') ? params['smart_class_parameter_id'] : params['id']
|
||
@smart_class_parameter = LookupKey.smart_class_parameters.find_by_id(id.to_i) if id.to_i > 0
|
||
@smart_class_parameter = LookupKey.authorized(:view_external_variables).smart_class_parameters.find_by_id(id.to_i) if id.to_i > 0
|
||
@smart_class_parameter ||= (puppet_cond = { 'environment_classes.puppetclass_id'=> @puppetclass.id } if @puppetclass
|
||
env_cond = { 'environment_classes.environment_id' => @environment.id } if @environment
|
||
LookupKey.smart_class_parameters.where(puppet_cond).where(env_cond).where(:key => id).first
|
||
LookupKey.authorized(:view_external_variables).smart_class_parameters.where(puppet_cond).where(env_cond).where(:key => id).first
|
||
)
|
||
@smart_class_parameter
|
||
end
|
||
... | ... | |
end
|
||
|
||
def smart_class_parameters_resource_scope
|
||
return LookupKey.smart_class_parameters unless (@puppetclass || @environment || @host || @hostgroup)
|
||
base = LookupKey.authorized(:view_external_variables)
|
||
return base.smart_class_parameters unless (@puppetclass || @environment || @host || @hostgroup)
|
||
if @puppetclass && @environment
|
||
LookupKey.smart_class_parameters_for_class(@puppetclass.id, @environment.id)
|
||
base.smart_class_parameters_for_class(@puppetclass.id, @environment.id)
|
||
elsif @puppetclass && !@environment
|
||
environment_ids = @puppetclass.environment_classes.pluck(:environment_id).uniq
|
||
LookupKey.smart_class_parameters_for_class(@puppetclass.id, environment_ids)
|
||
base.smart_class_parameters_for_class(@puppetclass.id, environment_ids)
|
||
elsif !@puppetclass && @environment
|
||
puppetclass_ids = @environment.environment_classes.pluck(:puppetclass_id).uniq
|
||
LookupKey.smart_class_parameters_for_class(puppetclass_ids, @environment.id)
|
||
base.smart_class_parameters_for_class(puppetclass_ids, @environment.id)
|
||
elsif @host || @hostgroup
|
||
puppetclass_ids = (@host || @hostgroup).all_puppetclasses.map(&:id)
|
||
environment_id = (@host || @hostgroup).environment_id
|
||
# scope :parameters_for_class uses .override
|
||
LookupKey.parameters_for_class(puppetclass_ids, environment_id)
|
||
base.parameters_for_class(puppetclass_ids, environment_id)
|
||
end
|
||
end
|
||
|
Also available in: Unified diff
fixes #812 - new permissions model, user group role and nest support, role filters for better granularity
Contributions from: