module ForemanOpenscap::LookupKeyOverridesCommon

def missing_lookup_keys(hash)

def missing_lookup_keys(hash)
  return [] if hash.values.all?
  hash.reduce([]) do |memo, (key, value)|
    memo << key if value.blank?
    memo
  end
end

def override(config)

def override(config)
  return unless handle_config_not_available(config)
  override_required_params config
end

def override_param(handler, param_name, param, config, key_type, default_value = nil)

def override_param(handler, param_name, param, config, key_type, default_value = nil)
  param.override = true
  param.hidden_value = false
  param.key_type = key_type
  param.default_value = default_value
  send("handle_#{handler}_param_override", config, param)
end

def override_params(lookup_keys, config)

def override_params(lookup_keys, config)
  policies_param = lookup_keys.find_by :key => config.policies_param
  port_param = lookup_keys.find_by :key => config.port_param
  server_param = lookup_keys.find_by :key => config.server_param
  missing_keys = missing_lookup_keys(config.policies_param => policies_param,
                                     config.port_param => port_param,
                                     config.server_param => server_param)
  return unless handle_missing_lookup_keys config, missing_keys.compact.join(', ')
  override_policies_param(policies_param, config)
  override_port_param(port_param, config)
  override_server_param(server_param, config)
end

def override_policies_param(parameter, config)

def override_policies_param(parameter, config)
  override_param 'policies', config.policies_param, parameter, config, 'array', config.policies_param_default_value
end

def override_port_param(param, config)

def override_port_param(param, config)
  override_param 'port', config.port_param, param, config, 'integer'
end

def override_required_params(config)

def override_required_params(config)
  return unless config.managed_overrides?
  item = config.find_config_item
  return unless handle_config_item_not_available(config, item)
  override_params item.public_send(config.override_method_name), config
end

def override_server_param(param, config)

def override_server_param(param, config)
  override_param 'server', config.server_param, param, config, 'string'
end