mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
ticket 2022 - modify codebase to utilize IPALogManager, obsoletes logging
change default_logger_level to debug in configure_standard_logging add new ipa_log_manager module, move log_mgr there, also export root_logger from log_mgr. change all log_manager imports to ipa_log_manager and change log_manager.root_logger to root_logger. add missing import for parse_log_level()
This commit is contained in:
committed by
Martin Kosek
parent
730f1228a9
commit
56401c1abe
@@ -25,7 +25,7 @@ try:
|
||||
import os
|
||||
import time
|
||||
import socket
|
||||
import logging
|
||||
from ipapython.ipa_log_manager import *
|
||||
import tempfile
|
||||
import getpass
|
||||
from ipaclient import ipadiscovery
|
||||
@@ -128,33 +128,14 @@ def parse_options():
|
||||
return safe_opts, options
|
||||
|
||||
def logging_setup(options):
|
||||
# Always log everything (i.e., DEBUG) to the log
|
||||
# file.
|
||||
|
||||
log_file = "/var/log/ipaclient-install.log"
|
||||
if options.uninstall:
|
||||
log_file = "/var/log/ipaclient-uninstall.log"
|
||||
|
||||
old_umask = os.umask(077)
|
||||
logging.basicConfig(level=logging.DEBUG,
|
||||
format='%(asctime)s %(levelname)s %(message)s',
|
||||
filename=log_file,
|
||||
filemode='w')
|
||||
os.umask(old_umask)
|
||||
|
||||
console = logging.StreamHandler()
|
||||
# If the debug option is set, also log debug messages to the console
|
||||
if options.debug:
|
||||
console.setLevel(logging.DEBUG)
|
||||
else:
|
||||
# Otherwise, log critical and error messages
|
||||
console.setLevel(logging.ERROR)
|
||||
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
|
||||
console.setFormatter(formatter)
|
||||
logging.getLogger('').addHandler(console)
|
||||
standard_logging_setup(log_file, debug=options.debug)
|
||||
|
||||
def log_service_error(name, action, error):
|
||||
logging.error("%s failed to %s: %s" % (name, action, str(error)))
|
||||
root_logger.error("%s failed to %s: %s" % (name, action, str(error)))
|
||||
|
||||
def nickname_exists(nickname):
|
||||
(sout, serr, returncode) = run(["/usr/bin/certutil", "-L", "-d", "/etc/pki/nssdb", "-n", nickname], raiseonerr=False)
|
||||
@@ -237,7 +218,7 @@ def uninstall(options, env, quiet=False):
|
||||
try:
|
||||
certmonger.stop_tracking('/etc/pki/nssdb', nickname=client_nss_nickname)
|
||||
except (CalledProcessError, RuntimeError), e:
|
||||
logging.error("%s failed to stop tracking certificate: %s" % (cmonger.service_name, str(e)))
|
||||
root_logger.error("%s failed to stop tracking certificate: %s" % (cmonger.service_name, str(e)))
|
||||
|
||||
if nickname_exists(client_nss_nickname):
|
||||
try:
|
||||
@@ -257,7 +238,7 @@ def uninstall(options, env, quiet=False):
|
||||
cmonger.disable()
|
||||
except Exception, e:
|
||||
emit_quiet(quiet, "Failed to disable automatic startup of the %s service" % (cmonger.service_name))
|
||||
logging.error("Failed to disable automatic startup of the %s service: %s" % (cmonger.service_name, str(e)))
|
||||
root_logger.error("Failed to disable automatic startup of the %s service: %s" % (cmonger.service_name, str(e)))
|
||||
|
||||
if not options.on_master and os.path.exists('/etc/ipa/default.conf'):
|
||||
emit_quiet(quiet, "Unenrolling client from IPA server")
|
||||
@@ -277,7 +258,7 @@ def uninstall(options, env, quiet=False):
|
||||
run(["/usr/sbin/ipa-rmkeytab", "-k", "/etc/krb5.keytab", "-r", realm])
|
||||
except Exception, e:
|
||||
emit_quiet(quiet, "Failed to clean up /etc/krb5.keytab")
|
||||
logging.debug("Failed to remove Kerberos service principals: %s" % str(e))
|
||||
root_logger.debug("Failed to remove Kerberos service principals: %s" % str(e))
|
||||
|
||||
emit_quiet(quiet, "Disabling client Kerberos and LDAP configurations")
|
||||
was_sssd_installed = False
|
||||
@@ -334,7 +315,7 @@ def uninstall(options, env, quiet=False):
|
||||
emit_quiet(quiet, "Failed to configure automatic startup of the %s daemon" % (nscd.service_name))
|
||||
else:
|
||||
# this is optional service, just log
|
||||
logging.info("%s daemon is not installed, skip configuration" % (nscd.service_name))
|
||||
root_logger.info("%s daemon is not installed, skip configuration" % (nscd.service_name))
|
||||
|
||||
nslcd = ipaservices.knownservices.nslcd
|
||||
if nslcd.is_installed():
|
||||
@@ -349,7 +330,7 @@ def uninstall(options, env, quiet=False):
|
||||
emit_quiet(quiet, "Failed to disable automatic startup of the %s daemon" % (nslcd.service_name))
|
||||
else:
|
||||
# this is optional service, just log
|
||||
logging.info("%s daemon is not installed, skip configuration" % (nslcd.service_name))
|
||||
root_logger.info("%s daemon is not installed, skip configuration" % (nslcd.service_name))
|
||||
|
||||
ntp_configured = statestore.has_state('ntp')
|
||||
if ntp_configured:
|
||||
@@ -519,9 +500,9 @@ def configure_nslcd_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server,
|
||||
nslcd.enable()
|
||||
except Exception, e:
|
||||
print "Failed to configure automatic startup of the %s daemon" % (nslcd.service_name)
|
||||
logging.error("Failed to enable automatic startup of the %s daemon: %s" % (nslcd.service_name, str(e)))
|
||||
root_logger.error("Failed to enable automatic startup of the %s daemon: %s" % (nslcd.service_name, str(e)))
|
||||
else:
|
||||
logging.debug("%s daemon is not installed, skip configuration" % (nslcd.service_name))
|
||||
root_logger.debug("%s daemon is not installed, skip configuration" % (nslcd.service_name))
|
||||
return (0, None, None)
|
||||
|
||||
return (0, 'NSLCD', '/etc/nslcd.conf')
|
||||
@@ -598,7 +579,7 @@ def configure_krb5_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, c
|
||||
opts.append({'name':'domain_realm', 'type':'section', 'value':dropts})
|
||||
opts.append({'name':'empty', 'type':'empty'})
|
||||
|
||||
logging.debug("Writing Kerberos configuration to %s:\n%s"
|
||||
root_logger.debug("Writing Kerberos configuration to %s:\n%s"
|
||||
% (filename, krbconf.dump(opts)))
|
||||
|
||||
krbconf.newConf(filename, opts)
|
||||
@@ -647,7 +628,7 @@ def configure_certmonger(fstore, subject_base, cli_realm, hostname, options):
|
||||
except Exception, e:
|
||||
print "Failed to configure automatic startup of the %s daemon" % (cmonger.service_name)
|
||||
print "Automatic certificate management will not be available"
|
||||
logging.error("Failed to disable automatic startup of the %s daemon: %s" % (cmonger.service_name, str(e)))
|
||||
root_logger.error("Failed to disable automatic startup of the %s daemon: %s" % (cmonger.service_name, str(e)))
|
||||
|
||||
# Request our host cert
|
||||
if started:
|
||||
@@ -669,7 +650,7 @@ def configure_sssd_conf(fstore, cli_realm, cli_domain, cli_server, options):
|
||||
# This all means we can't use it and have to bail out
|
||||
print "SSSD config exists but cannot be parsed: %s" % (str(e))
|
||||
print "Correct errors in /etc/sssd/sssd.conf and re-run installation"
|
||||
logging.error("Failed to parse SSSD configuration and was instructed to preserve existing SSSD config: %s" % (str(e)))
|
||||
root_logger.error("Failed to parse SSSD configuration and was instructed to preserve existing SSSD config: %s" % (str(e)))
|
||||
return 1
|
||||
|
||||
# SSSD configuration does not exist or we are not asked to preserve it, create new one
|
||||
@@ -684,8 +665,8 @@ def configure_sssd_conf(fstore, cli_realm, cli_domain, cli_server, options):
|
||||
# It was not IOError so it must have been parsing error
|
||||
print "Unable to parse existing SSSD config. As option --preserve-sssd was not specified, new config will override the old one."
|
||||
print "The old /etc/sssd/sssd.conf is backed up and will be restored during uninstall."
|
||||
logging.error("Unable to parse existing SSSD config and --preserve-sssd was not specified: %s" % (str(e)))
|
||||
logging.info("New SSSD config will be created")
|
||||
root_logger.error("Unable to parse existing SSSD config and --preserve-sssd was not specified: %s" % (str(e)))
|
||||
root_logger.info("New SSSD config will be created")
|
||||
del sssdconfig
|
||||
sssdconfig = SSSDConfig.SSSDConfig()
|
||||
sssdconfig.new_config()
|
||||
@@ -695,7 +676,7 @@ def configure_sssd_conf(fstore, cli_realm, cli_domain, cli_server, options):
|
||||
except SSSDConfig.DomainAlreadyExistsError:
|
||||
print "Domain %s is already configured in existing SSSD config, creating a new one." % cli_domain
|
||||
print "The old /etc/sssd/sssd.conf is backed up and will be restored during uninstall."
|
||||
logging.debug("Domain %s is already configured in existing SSSD config, creating a new one." % cli_domain)
|
||||
root_logger.debug("Domain %s is already configured in existing SSSD config, creating a new one." % cli_domain)
|
||||
del sssdconfig
|
||||
sssdconfig = SSSDConfig.SSSDConfig()
|
||||
sssdconfig.new_config()
|
||||
@@ -804,7 +785,7 @@ def update_dns(server, hostname):
|
||||
|
||||
update_txt = ipautil.template_str(template, sub_dict)
|
||||
|
||||
logging.debug("Writing nsupdate commands to %s:\n%s"
|
||||
root_logger.debug("Writing nsupdate commands to %s:\n%s"
|
||||
% (UPDATE_FILE, update_txt))
|
||||
|
||||
update_fd = file(UPDATE_FILE, "w")
|
||||
@@ -884,7 +865,7 @@ def install(options, env, fstore, statestore):
|
||||
return CLIENT_INSTALL_ERROR
|
||||
if ret in (ipadiscovery.NO_LDAP_SERVER, ipadiscovery.NOT_IPA_SERVER) \
|
||||
or not ds.getDomainName():
|
||||
logging.debug("Domain not found")
|
||||
root_logger.debug("Domain not found")
|
||||
if options.domain:
|
||||
cli_domain = options.domain
|
||||
elif options.unattended:
|
||||
@@ -893,19 +874,19 @@ def install(options, env, fstore, statestore):
|
||||
else:
|
||||
print "DNS discovery failed to determine your DNS domain"
|
||||
cli_domain = user_input("Provide the domain name of your IPA server (ex: example.com)", allow_empty = False)
|
||||
logging.debug("will use domain: %s\n", cli_domain)
|
||||
root_logger.debug("will use domain: %s\n", cli_domain)
|
||||
ret = ds.search(domain=cli_domain, server=options.server, hostname=hostname)
|
||||
|
||||
if not cli_domain:
|
||||
if ds.getDomainName():
|
||||
cli_domain = ds.getDomainName()
|
||||
logging.debug("will use domain: %s\n", cli_domain)
|
||||
root_logger.debug("will use domain: %s\n", cli_domain)
|
||||
|
||||
client_domain = hostname[hostname.find(".")+1:]
|
||||
|
||||
if ret in (ipadiscovery.NO_LDAP_SERVER, ipadiscovery.NOT_IPA_SERVER) \
|
||||
or not ds.getServerName():
|
||||
logging.debug("IPA Server not found")
|
||||
root_logger.debug("IPA Server not found")
|
||||
if options.server:
|
||||
cli_server = options.server
|
||||
elif options.unattended:
|
||||
@@ -914,14 +895,14 @@ def install(options, env, fstore, statestore):
|
||||
else:
|
||||
print "DNS discovery failed to find the IPA Server"
|
||||
cli_server = user_input("Provide your IPA server name (ex: ipa.example.com)", allow_empty = False)
|
||||
logging.debug("will use server: %s\n", cli_server)
|
||||
root_logger.debug("will use server: %s\n", cli_server)
|
||||
ret = ds.search(domain=cli_domain, server=cli_server, hostname=hostname)
|
||||
else:
|
||||
dnsok = True
|
||||
if not cli_server:
|
||||
if ds.getServerName():
|
||||
cli_server = ds.getServerName()
|
||||
logging.debug("will use server: %s\n", cli_server)
|
||||
root_logger.debug("will use server: %s\n", cli_server)
|
||||
|
||||
if ret == ipadiscovery.NOT_IPA_SERVER:
|
||||
print >>sys.stderr, "%s is not an IPA v2 Server." % cli_server
|
||||
@@ -962,9 +943,9 @@ def install(options, env, fstore, statestore):
|
||||
return CLIENT_INSTALL_ERROR
|
||||
|
||||
cli_realm = ds.getRealmName()
|
||||
logging.debug("will use cli_realm: %s\n", cli_realm)
|
||||
root_logger.debug("will use cli_realm: %s\n", cli_realm)
|
||||
cli_basedn = ds.getBaseDN()
|
||||
logging.debug("will use cli_basedn: %s\n", cli_basedn)
|
||||
root_logger.debug("will use cli_basedn: %s\n", cli_basedn)
|
||||
subject_base = "O=%s" % ds.getRealmName()
|
||||
|
||||
print "Hostname: "+hostname
|
||||
@@ -986,7 +967,7 @@ def install(options, env, fstore, statestore):
|
||||
if not options.unattended:
|
||||
if options.principal is None and options.password is None and options.prompt_password is False:
|
||||
options.principal = user_input("User authorized to enroll computers", allow_empty=False)
|
||||
logging.debug("will use principal: %s\n", options.principal)
|
||||
root_logger.debug("will use principal: %s\n", options.principal)
|
||||
|
||||
# Get the CA certificate
|
||||
try:
|
||||
@@ -1162,7 +1143,7 @@ def install(options, env, fstore, statestore):
|
||||
else:
|
||||
# this is optional service, just log
|
||||
if not options.sssd:
|
||||
logging.info("%s daemon is not installed, skip configuration" % (nscd.service_name))
|
||||
root_logger.info("%s daemon is not installed, skip configuration" % (nscd.service_name))
|
||||
|
||||
retcode, conf, filename = (0, None, None)
|
||||
# Modify nsswitch/pam stack
|
||||
@@ -1253,8 +1234,8 @@ def main():
|
||||
if not os.getegid() == 0:
|
||||
sys.exit("\nYou must be root to run ipa-client-install.\n")
|
||||
logging_setup(options)
|
||||
logging.debug('%s was invoked with options: %s' % (sys.argv[0], safe_options))
|
||||
logging.debug("missing options might be asked for interactively later\n")
|
||||
root_logger.debug('%s was invoked with options: %s' % (sys.argv[0], safe_options))
|
||||
root_logger.debug("missing options might be asked for interactively later\n")
|
||||
|
||||
env={"PATH":"/bin:/sbin:/usr/kerberos/bin:/usr/kerberos/sbin:/usr/bin:/usr/sbin"}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user