tools/miq_config_sssd_ldap/auth_establish.rb
require 'awesome_spawn'
require 'miqldap_configuration'
module MiqConfigSssdLdap
class AuthEstablishError < StandardError; end
class AuthEstablish
attr_reader :initial_settings
def initialize(initial_settings)
@initial_settings = initial_settings
end
def run_auth_establish
authselect_found? ? run_auth_select : run_auth_config
end
private
def authselect_found?
ENV['PATH'].split(':').any? { |dir| File.exist?("#{dir}/authselect") }
end
def run_auth_select
LOGGER.debug("Invoked #{self.class}##{__method__}")
result = AwesomeSpawn.run("authselect select sssd --force")
LOGGER.debug("Ran command: #{result.command_line}")
if result.failure?
error_message = "authselect failed with: #{result.error}"
LOGGER.fatal(error_message)
raise AuthEstablishError, error_message
end
end
def run_auth_config
LOGGER.debug("Invoked #{self.class}##{__method__}")
ldapserver = "#{initial_settings[:mode]}://#{initial_settings[:ldaphost][0]}:#{initial_settings[:ldapport]}"
params = {
:ldapserver= => ldapserver,
:ldapbasedn= => initial_settings[:basedn],
:enablesssd => nil,
:enablesssdauth => nil,
:enablelocauthorize => nil,
:enableldap => nil,
:enableldapauth => nil,
:disableldaptls => nil,
:enablerfc2307bis => nil,
:enablecachecreds => nil,
:update => nil
}
result = AwesomeSpawn.run("authconfig", :params => params)
LOGGER.debug("Ran command: #{result.command_line}")
if result.failure?
error_message = "authconfig failed with: #{result.error}"
LOGGER.fatal(error_message)
raise AuthEstablishError, error_message
end
end
end
end