PR508: Fixed linter errors

Line too long and too many blank line errors and a trailing whitespace have
been fixed.
This commit is contained in:
Thomas Woerner
2021-05-11 17:37:44 +02:00
parent 5f15227f79
commit 6a5f1277f5
4 changed files with 80 additions and 102 deletions

View File

@@ -25,12 +25,13 @@
__all__ = ["gssapi", "netaddr", "api", "ipalib_errors", "Env", __all__ = ["gssapi", "netaddr", "api", "ipalib_errors", "Env",
"DEFAULT_CONFIG", "LDAP_GENERALIZED_TIME_FORMAT", "DEFAULT_CONFIG", "LDAP_GENERALIZED_TIME_FORMAT",
"kinit_password", "kinit_keytab", "run", "DN", "VERSION", "kinit_password", "kinit_keytab", "run", "DN", "VERSION",
"paths", "get_credentials_if_valid", "Encoding", "paths", "get_credentials_if_valid", "Encoding",
"load_pem_x509_certificate"] "load_pem_x509_certificate"]
import sys import sys
# HACK: workaround for Ansible 2.9 https://github.com/ansible/ansible/issues/68361 # HACK: workaround for Ansible 2.9
# https://github.com/ansible/ansible/issues/68361
if 'ansible.executor' in sys.modules: if 'ansible.executor' in sys.modules:
for attr in __all__: for attr in __all__:
setattr(sys.modules[__name__], attr, None) setattr(sys.modules[__name__], attr, None)
@@ -104,11 +105,9 @@ else:
except ImportError: except ImportError:
from collections import Mapping # noqa from collections import Mapping # noqa
if six.PY3: if six.PY3:
unicode = str unicode = str
def valid_creds(module, principal): # noqa def valid_creds(module, principal): # noqa
"""Get valid credentials matching the princial, try GSSAPI first.""" """Get valid credentials matching the princial, try GSSAPI first."""
if "KRB5CCNAME" in os.environ: if "KRB5CCNAME" in os.environ:
@@ -146,7 +145,6 @@ else:
return True return True
return False return False
def temp_kinit(principal, password): def temp_kinit(principal, password):
"""Kinit with password using a temporary ccache.""" """Kinit with password using a temporary ccache."""
if not password: if not password:
@@ -165,7 +163,6 @@ else:
os.environ["KRB5CCNAME"] = ccache_name os.environ["KRB5CCNAME"] = ccache_name
return ccache_dir, ccache_name return ccache_dir, ccache_name
def temp_kdestroy(ccache_dir, ccache_name): def temp_kdestroy(ccache_dir, ccache_name):
"""Destroy temporary ticket and remove temporary ccache.""" """Destroy temporary ticket and remove temporary ccache."""
if ccache_name is not None: if ccache_name is not None:
@@ -174,7 +171,6 @@ else:
if ccache_dir is not None: if ccache_dir is not None:
shutil.rmtree(ccache_dir, ignore_errors=True) shutil.rmtree(ccache_dir, ignore_errors=True)
def api_connect(context=None): def api_connect(context=None):
""" """
Initialize IPA API with the provided context. Initialize IPA API with the provided context.
@@ -188,7 +184,9 @@ else:
env._bootstrap() env._bootstrap()
env._finalize_core(**dict(DEFAULT_CONFIG)) env._finalize_core(**dict(DEFAULT_CONFIG))
# available contexts are 'server', 'ansible-freeipa' and 'cli_installer' # available contexts are 'server', 'ansible-freeipa' and
# 'cli_installer'
if context is None: if context is None:
context = 'server' context = 'server'
@@ -203,27 +201,22 @@ else:
if not backend.isconnected(): if not backend.isconnected():
backend.connect(ccache=os.environ.get('KRB5CCNAME', None)) backend.connect(ccache=os.environ.get('KRB5CCNAME', None))
def api_command(module, command, name, args): def api_command(module, command, name, args):
"""Call ipa.Command.""" """Call ipa.Command."""
return api.Command[command](name, **args) return api.Command[command](name, **args)
def api_command_no_name(module, command, args): def api_command_no_name(module, command, args):
"""Call ipa.Command without a name.""" """Call ipa.Command without a name."""
return api.Command[command](**args) return api.Command[command](**args)
def api_check_command(command): def api_check_command(command):
"""Return if command exists in command list.""" """Return if command exists in command list."""
return command in api.Command return command in api.Command
def api_check_param(command, name): def api_check_param(command, name):
"""Check if param exists in command param list.""" """Check if param exists in command param list."""
return name in api.Command[command].params return name in api.Command[command].params
def api_check_ipa_version(oper, requested_version): def api_check_ipa_version(oper, requested_version):
""" """
Compare the installed IPA version against a requested version. Compare the installed IPA version against a requested version.
@@ -241,8 +234,8 @@ else:
operation = oper_map.get(oper) operation = oper_map.get(oper)
if not(operation): if not(operation):
raise NotImplementedError("Invalid operator: %s" % oper) raise NotImplementedError("Invalid operator: %s" % oper)
return operation(version.parse(VERSION), version.parse(requested_version)) return operation(version.parse(VERSION),
version.parse(requested_version))
def execute_api_command(module, principal, password, command, name, args): def execute_api_command(module, principal, password, command, name, args):
""" """
@@ -265,7 +258,6 @@ else:
finally: finally:
temp_kdestroy(ccache_dir, ccache_name) temp_kdestroy(ccache_dir, ccache_name)
def date_format(value): def date_format(value):
accepted_date_formats = [ accepted_date_formats = [
LDAP_GENERALIZED_TIME_FORMAT, # generalized time LDAP_GENERALIZED_TIME_FORMAT, # generalized time
@@ -283,7 +275,6 @@ else:
pass pass
raise ValueError("Invalid date '%s'" % value) raise ValueError("Invalid date '%s'" % value)
def compare_args_ipa(module, args, ipa): # noqa def compare_args_ipa(module, args, ipa): # noqa
"""Compare IPA obj attrs with the command args. """Compare IPA obj attrs with the command args.
@@ -305,7 +296,8 @@ else:
if args is None or ipa is None: if args is None or ipa is None:
module.debug( module.debug(
base_debug_msg + "args is%s None an ipa is%s None" % ( base_debug_msg + "args is%s None an ipa is%s None" % (
"" if args is None else " not", "" if ipa is None else " not", "" if args is None else " not",
"" if ipa is None else " not",
) )
) )
return False return False
@@ -340,7 +332,8 @@ else:
return False return False
if isinstance(ipa_arg[0], str) and isinstance(arg[0], int): if isinstance(ipa_arg[0], str) and isinstance(arg[0], int):
arg = [to_text(_arg) for _arg in arg] arg = [to_text(_arg) for _arg in arg]
if isinstance(ipa_arg[0], unicode) and isinstance(arg[0], int): if isinstance(ipa_arg[0], unicode) \
and isinstance(arg[0], int):
arg = [to_text(_arg) for _arg in arg] arg = [to_text(_arg) for _arg in arg]
try: try:
arg_set = set(arg) arg_set = set(arg)
@@ -362,13 +355,13 @@ else:
return False return False
return True return True
def _afm_convert(value): def _afm_convert(value):
if value is not None: if value is not None:
if isinstance(value, list): if isinstance(value, list):
return [_afm_convert(x) for x in value] return [_afm_convert(x) for x in value]
elif isinstance(value, dict): elif isinstance(value, dict):
return {_afm_convert(k): _afm_convert(v) for k, v in value.items()} return {_afm_convert(k): _afm_convert(v)
for k, v in value.items()}
elif isinstance(value, str): elif isinstance(value, str):
return to_text(value) return to_text(value)
else: else:
@@ -376,15 +369,12 @@ else:
else: else:
return value return value
def module_params_get(module, name): def module_params_get(module, name):
return _afm_convert(module.params.get(name)) return _afm_convert(module.params.get(name))
def api_get_realm(): def api_get_realm():
return api.env.realm return api.env.realm
def gen_add_del_lists(user_list, res_list): def gen_add_del_lists(user_list, res_list):
"""Generate the lists for the addition and removal of members.""" """Generate the lists for the addition and removal of members."""
# The user list is None, therefore the parameter should not be touched # The user list is None, therefore the parameter should not be touched
@@ -396,7 +386,6 @@ else:
return add_list, del_list return add_list, del_list
def encode_certificate(cert): def encode_certificate(cert):
""" """
Encode a certificate using base64. Encode a certificate using base64.
@@ -411,7 +400,6 @@ else:
encoded = encoded.decode('ascii') encoded = encoded.decode('ascii')
return encoded return encoded
def load_cert_from_str(cert): def load_cert_from_str(cert):
cert = cert.strip() cert = cert.strip()
if not cert.startswith("-----BEGIN CERTIFICATE-----"): if not cert.startswith("-----BEGIN CERTIFICATE-----"):
@@ -425,7 +413,6 @@ else:
cert = load_certificate(cert.encode('utf-8')) cert = load_certificate(cert.encode('utf-8'))
return cert return cert
def DN_x500_text(text): def DN_x500_text(text):
if hasattr(DN, "x500_text"): if hasattr(DN, "x500_text"):
return DN(text).x500_text() return DN(text).x500_text()
@@ -435,7 +422,6 @@ else:
dn.rdns = reversed(dn.rdns) dn.rdns = reversed(dn.rdns)
return str(dn) return str(dn)
def is_valid_port(port): def is_valid_port(port):
if not isinstance(port, int): if not isinstance(port, int):
return False return False
@@ -445,7 +431,6 @@ else:
return False return False
def is_ip_address(ipaddr): def is_ip_address(ipaddr):
"""Test if given IP address is a valid IPv4 or IPv6 address.""" """Test if given IP address is a valid IPv4 or IPv6 address."""
try: try:
@@ -454,7 +439,6 @@ else:
return False return False
return True return True
def is_ip_network_address(ipaddr): def is_ip_network_address(ipaddr):
"""Test if given IP address is a valid IPv4 or IPv6 address.""" """Test if given IP address is a valid IPv4 or IPv6 address."""
try: try:
@@ -463,7 +447,6 @@ else:
return False return False
return True return True
def is_ipv4_addr(ipaddr): def is_ipv4_addr(ipaddr):
"""Test if given IP address is a valid IPv4 address.""" """Test if given IP address is a valid IPv4 address."""
try: try:
@@ -472,7 +455,6 @@ else:
return False return False
return True return True
def is_ipv6_addr(ipaddr): def is_ipv6_addr(ipaddr):
"""Test if given IP address is a valid IPv6 address.""" """Test if given IP address is a valid IPv6 address."""
try: try:
@@ -481,7 +463,6 @@ else:
return False return False
return True return True
def exit_raw_json(module, **kwargs): def exit_raw_json(module, **kwargs):
""" """
Print the raw parameters in JSON format, without masking. Print the raw parameters in JSON format, without masking.
@@ -501,7 +482,6 @@ else:
print(jsonify(kwargs)) print(jsonify(kwargs))
sys.exit(0) sys.exit(0)
class AnsibleFreeIPAParams(Mapping): class AnsibleFreeIPAParams(Mapping):
def __init__(self, ansible_module): def __init__(self, ansible_module):
self.mapping = ansible_module.params self.mapping = ansible_module.params
@@ -525,7 +505,6 @@ else:
def __getattr__(self, name): def __getattr__(self, name):
return self.get(name) return self.get(name)
class FreeIPABaseModule(AnsibleModule): class FreeIPABaseModule(AnsibleModule):
""" """
Base class for FreeIPA Ansible modules. Base class for FreeIPA Ansible modules.
@@ -540,7 +519,8 @@ else:
2. Implement the method ``define_ipa_commands()`` 2. Implement the method ``define_ipa_commands()``
3. Implement the method ``check_ipa_params()`` (optional) 3. Implement the method ``check_ipa_params()`` (optional)
After instantiating the class the method ``ipa_run()`` should be called. After instantiating the class the method ``ipa_run()`` should be
called.
Example (ansible-freeipa/plugins/modules/ipasomemodule.py): Example (ansible-freeipa/plugins/modules/ipasomemodule.py):
@@ -560,7 +540,8 @@ else:
# Validate your params here # Validate your params here
# Example: # Example:
if not self.ipa_params.module_param in VALID_OPTIONS: if not self.ipa_params.module_param in VALID_OPTIONS:
self.fail_json(msg="Invalid value for argument module_param") self.fail_json(
msg="Invalid value for argument module_param")
def define_ipa_commands(self): def define_ipa_commands(self):
args = self.get_ipa_command_args() args = self.get_ipa_command_args()
@@ -624,7 +605,8 @@ else:
""" """
Return a dict to be passed to an IPA command. Return a dict to be passed to an IPA command.
The keys of ``ipa_param_mapping`` are also the keys of the return dict. The keys of ``ipa_param_mapping`` are also the keys of the return
dict.
The values of ``ipa_param_mapping`` needs to be either: The values of ``ipa_param_mapping`` needs to be either:
* A str with the name of a defined method; or * A str with the name of a defined method; or
@@ -658,8 +640,8 @@ else:
else: else:
self.fail_json( self.fail_json(
msg=( msg=(
"Couldn't get a value for '%s'. Option '%s' is not " "Couldn't get a value for '%s'. Option '%s' is "
"a module argument neither a defined method." "not a module argument neither a defined method."
) )
% (ipa_param_name, param_name) % (ipa_param_name, param_name)
) )
@@ -770,7 +752,8 @@ else:
try: try:
result = self.api_command(command, name, args) result = self.api_command(command, name, args)
except Exception as excpt: except Exception as excpt:
self.fail_json(msg="%s: %s: %s" % (command, name, str(excpt))) self.fail_json(msg="%s: %s: %s" % (command, name,
str(excpt)))
else: else:
self.process_command_result(name, command, args, result) self.process_command_result(name, command, args, result)
self.get_command_errors(command, result) self.get_command_errors(command, result)
@@ -779,7 +762,8 @@ else:
""" """
Process an API command result. Process an API command result.
This method can be overriden in subclasses, and change self.exit_values This method can be overriden in subclasses, and
change self.exit_values
to return data in the result for the controller. to return data in the result for the controller.
""" """
if "completed" in result: if "completed" in result:

View File

@@ -47,7 +47,8 @@ __all__ = ["gssapi", "version", "ipadiscovery", "api", "errors", "x509",
import sys import sys
# HACK: workaround for Ansible 2.9 https://github.com/ansible/ansible/issues/68361 # HACK: workaround for Ansible 2.9
# https://github.com/ansible/ansible/issues/68361
if 'ansible.executor' in sys.modules: if 'ansible.executor' in sys.modules:
for attr in __all__: for attr in __all__:
setattr(sys.modules[__name__], attr, None) setattr(sys.modules[__name__], attr, None)
@@ -57,12 +58,12 @@ else:
if NUM_VERSION < 30201: if NUM_VERSION < 30201:
# See ipapython/version.py # See ipapython/version.py
IPA_MAJOR, IPA_MINOR, IPA_RELEASE = [int(x) for x in VERSION.split(".", 2)] IPA_MAJOR, IPA_MINOR, IPA_RELEASE = [int(x) for x in
VERSION.split(".", 2)]
IPA_PYTHON_VERSION = IPA_MAJOR*10000 + IPA_MINOR*100 + IPA_RELEASE IPA_PYTHON_VERSION = IPA_MAJOR*10000 + IPA_MINOR*100 + IPA_RELEASE
else: else:
IPA_PYTHON_VERSION = NUM_VERSION IPA_PYTHON_VERSION = NUM_VERSION
class installer_obj(object): class installer_obj(object):
def __init__(self): def __init__(self):
pass pass
@@ -84,14 +85,14 @@ else:
# return getattr(self, attr) # return getattr(self, attr)
# def __setattr__(self, attr, value): # def __setattr__(self, attr, value):
# logger.debug(" --> Setting installer.%s to %s" % (attr, repr(value))) # logger.debug(" --> Setting installer.%s to %s" %
# (attr, repr(value)))
# return super(installer_obj, self).__setattr__(attr, value) # return super(installer_obj, self).__setattr__(attr, value)
def knobs(self): def knobs(self):
for name in self.__dict__: for name in self.__dict__:
yield self, name yield self, name
# Initialize installer settings # Initialize installer settings
installer = installer_obj() installer = installer_obj()
# Create options # Create options
@@ -155,9 +156,11 @@ else:
from ipaclient.install.client import configure_krb5_conf, \ from ipaclient.install.client import configure_krb5_conf, \
get_ca_certs, SECURE_PATH, get_server_connection_interface, \ get_ca_certs, SECURE_PATH, get_server_connection_interface, \
disable_ra, client_dns, \ disable_ra, client_dns, \
configure_certmonger, update_ssh_keys, configure_openldap_conf, \ configure_certmonger, update_ssh_keys, \
configure_openldap_conf, \
hardcode_ldap_server, get_certs_from_ldap, save_state, \ hardcode_ldap_server, get_certs_from_ldap, save_state, \
create_ipa_nssdb, configure_ssh_config, configure_sshd_config, \ create_ipa_nssdb, configure_ssh_config, \
configure_sshd_config, \
configure_automount, configure_firefox, configure_nisdomain, \ configure_automount, configure_firefox, configure_nisdomain, \
CLIENT_INSTALL_ERROR, is_ipa_client_installed, \ CLIENT_INSTALL_ERROR, is_ipa_client_installed, \
CLIENT_ALREADY_CONFIGURED, nssldap_exists, remove_file, \ CLIENT_ALREADY_CONFIGURED, nssldap_exists, remove_file, \
@@ -190,7 +193,8 @@ else:
shutil.rmtree(temp_dir, ignore_errors=True) shutil.rmtree(temp_dir, ignore_errors=True)
sys.path.remove(temp_dir) sys.path.remove(temp_dir)
argspec = inspect.getargspec(ipa_client_install.configure_krb5_conf) argspec = inspect.getargspec(
ipa_client_install.configure_krb5_conf)
if argspec.keywords is None: if argspec.keywords is None:
def configure_krb5_conf( def configure_krb5_conf(
cli_realm, cli_domain, cli_server, cli_kdc, dnsok, cli_realm, cli_domain, cli_server, cli_kdc, dnsok,
@@ -200,8 +204,8 @@ else:
options.force = force options.force = force
options.sssd = configure_sssd options.sssd = configure_sssd
return ipa_client_install.configure_krb5_conf( return ipa_client_install.configure_krb5_conf(
cli_realm, cli_domain, cli_server, cli_kdc, dnsok, options, cli_realm, cli_domain, cli_server, cli_kdc, dnsok,
filename, client_domain, client_hostname) options, filename, client_domain, client_hostname)
else: else:
configure_krb5_conf = ipa_client_install.configure_krb5_conf configure_krb5_conf = ipa_client_install.configure_krb5_conf
if NUM_VERSION < 40100: if NUM_VERSION < 40100:
@@ -219,19 +223,22 @@ else:
client_dns = ipa_client_install.client_dns client_dns = ipa_client_install.client_dns
configure_certmonger = ipa_client_install.configure_certmonger configure_certmonger = ipa_client_install.configure_certmonger
update_ssh_keys = ipa_client_install.update_ssh_keys update_ssh_keys = ipa_client_install.update_ssh_keys
configure_openldap_conf = ipa_client_install.configure_openldap_conf configure_openldap_conf = \
ipa_client_install.configure_openldap_conf
hardcode_ldap_server = ipa_client_install.hardcode_ldap_server hardcode_ldap_server = ipa_client_install.hardcode_ldap_server
get_certs_from_ldap = ipa_client_install.get_certs_from_ldap get_certs_from_ldap = ipa_client_install.get_certs_from_ldap
save_state = ipa_client_install.save_state save_state = ipa_client_install.save_state
create_ipa_nssdb = certdb.create_ipa_nssdb create_ipa_nssdb = certdb.create_ipa_nssdb
argspec = inspect.getargspec(ipa_client_install.configure_nisdomain) argspec = \
inspect.getargspec(ipa_client_install.configure_nisdomain)
if len(argspec.args) == 3: if len(argspec.args) == 3:
configure_nisdomain = ipa_client_install.configure_nisdomain configure_nisdomain = ipa_client_install.configure_nisdomain
else: else:
def configure_nisdomain(options, domain, statestore=None): def configure_nisdomain(options, domain, statestore=None):
return ipa_client_install.configure_nisdomain(options, domain) return ipa_client_install.configure_nisdomain(options,
domain)
configure_ldap_conf = ipa_client_install.configure_ldap_conf configure_ldap_conf = ipa_client_install.configure_ldap_conf
configure_nslcd_conf = ipa_client_install.configure_nslcd_conf configure_nslcd_conf = ipa_client_install.configure_nslcd_conf

View File

@@ -47,7 +47,8 @@ __all__ = ["contextlib", "dnsexception", "dnsresolver", "dnsreversename",
import sys import sys
# HACK: workaround for Ansible 2.9 https://github.com/ansible/ansible/issues/68361 # HACK: workaround for Ansible 2.9
# https://github.com/ansible/ansible/issues/68361
if 'ansible.executor' in sys.modules: if 'ansible.executor' in sys.modules:
for attr in __all__: for attr in __all__:
setattr(sys.modules[__name__], attr, None) setattr(sys.modules[__name__], attr, None)
@@ -55,17 +56,16 @@ else:
import logging import logging
from contextlib import contextmanager as contextlib_contextmanager from contextlib import contextmanager as contextlib_contextmanager
from ipapython.version import NUM_VERSION, VERSION from ipapython.version import NUM_VERSION, VERSION
if NUM_VERSION < 30201: if NUM_VERSION < 30201:
# See ipapython/version.py # See ipapython/version.py
IPA_MAJOR, IPA_MINOR, IPA_RELEASE = [int(x) for x in VERSION.split(".", 2)] IPA_MAJOR, IPA_MINOR, IPA_RELEASE = [int(x) for x in
VERSION.split(".", 2)]
IPA_PYTHON_VERSION = IPA_MAJOR*10000 + IPA_MINOR*100 + IPA_RELEASE IPA_PYTHON_VERSION = IPA_MAJOR*10000 + IPA_MINOR*100 + IPA_RELEASE
else: else:
IPA_PYTHON_VERSION = NUM_VERSION IPA_PYTHON_VERSION = NUM_VERSION
if NUM_VERSION >= 40600: if NUM_VERSION >= 40600:
# IPA version >= 4.6 # IPA version >= 4.6
@@ -83,7 +83,8 @@ else:
from ipapython.ipautil import ipa_generate_password from ipapython.ipautil import ipa_generate_password
from ipalib.install.kinit import kinit_keytab from ipalib.install.kinit import kinit_keytab
from ipapython import ipaldap, ipautil, kernel_keyring from ipapython import ipaldap, ipautil, kernel_keyring
from ipapython.certdb import IPA_CA_TRUST_FLAGS, EXTERNAL_CA_TRUST_FLAGS from ipapython.certdb import IPA_CA_TRUST_FLAGS, \
EXTERNAL_CA_TRUST_FLAGS
from ipapython.dn import DN from ipapython.dn import DN
from ipapython.admintool import ScriptError from ipapython.admintool import ScriptError
from ipapython.ipa_log_manager import standard_logging_setup from ipapython.ipa_log_manager import standard_logging_setup
@@ -95,7 +96,8 @@ else:
from ipalib.util import ( from ipalib.util import (
validate_domain_name, validate_domain_name,
no_matching_interface_for_ip_address_warning) no_matching_interface_for_ip_address_warning)
from ipaclient.install.client import configure_krb5_conf, purge_host_keytab from ipaclient.install.client import configure_krb5_conf, \
purge_host_keytab
from ipaserver.install import ( from ipaserver.install import (
adtrust, bindinstance, ca, certs, dns, dsinstance, httpinstance, adtrust, bindinstance, ca, certs, dns, dsinstance, httpinstance,
installutils, kra, krbinstance, installutils, kra, krbinstance,
@@ -117,7 +119,8 @@ else:
from ipaserver.install.server.replicainstall import ( from ipaserver.install.server.replicainstall import (
make_pkcs12_info, install_replica_ds, install_krb, install_ca_cert, make_pkcs12_info, install_replica_ds, install_krb, install_ca_cert,
install_http, install_dns_records, create_ipa_conf, check_dirsrv, install_http, install_dns_records, create_ipa_conf, check_dirsrv,
check_dns_resolution, configure_certmonger, remove_replica_info_dir, check_dns_resolution, configure_certmonger,
remove_replica_info_dir,
# common_cleanup, # common_cleanup,
preserve_enrollment_state, uninstall_client, preserve_enrollment_state, uninstall_client,
promote_sssd, promote_openldap_conf, rpc_client, promote_sssd, promote_openldap_conf, rpc_client,
@@ -142,23 +145,19 @@ else:
from ipaserver.install import ntpinstance from ipaserver.install import ntpinstance
time_service = "ntpd" time_service = "ntpd"
else: else:
# IPA version < 4.6 # IPA version < 4.6
raise Exception("freeipa version '%s' is too old" % VERSION) raise Exception("freeipa version '%s' is too old" % VERSION)
logger = logging.getLogger("ipa-server-install") logger = logging.getLogger("ipa-server-install")
def setup_logging(): def setup_logging():
# logger.setLevel(logging.DEBUG) # logger.setLevel(logging.DEBUG)
standard_logging_setup( standard_logging_setup(
paths.IPAREPLICA_INSTALL_LOG, verbose=False, debug=False, paths.IPAREPLICA_INSTALL_LOG, verbose=False, debug=False,
filemode='a', console_format='%(message)s') filemode='a', console_format='%(message)s')
@contextlib_contextmanager @contextlib_contextmanager
def redirect_stdout(f): def redirect_stdout(f):
sys.stdout = f sys.stdout = f
@@ -167,7 +166,6 @@ else:
finally: finally:
sys.stdout = sys.__stdout__ sys.stdout = sys.__stdout__
class AnsibleModuleLog(): class AnsibleModuleLog():
def __init__(self, module): def __init__(self, module):
self.module = module self.module = module
@@ -201,7 +199,6 @@ else:
self.module.debug(msg) self.module.debug(msg)
# self.module.warn(msg) # self.module.warn(msg)
class installer_obj(object): class installer_obj(object):
def __init__(self): def __init__(self):
# CompatServerReplicaInstall # CompatServerReplicaInstall
@@ -240,7 +237,8 @@ else:
# value = super(installer_obj, self).__getattribute__(attr) # value = super(installer_obj, self).__getattribute__(attr)
# if not attr.startswith("--") and not attr.endswith("--"): # if not attr.startswith("--") and not attr.endswith("--"):
# logger.debug( # logger.debug(
# " <-- Accessing installer.%s (%s)" % (attr, repr(value))) # " <-- Accessing installer.%s (%s)" %
# (attr, repr(value)))
# return value # return value
def __getattr__(self, attr): def __getattr__(self, attr):
@@ -249,14 +247,14 @@ else:
return getattr(self, attr) return getattr(self, attr)
# def __setattr__(self, attr, value): # def __setattr__(self, attr, value):
# logger.debug(" --> Setting installer.%s to %s" % (attr, repr(value))) # logger.debug(" --> Setting installer.%s to %s" %
# (attr, repr(value)))
# return super(installer_obj, self).__setattr__(attr, value) # return super(installer_obj, self).__setattr__(attr, value)
def knobs(self): def knobs(self):
for name in self.__dict__: for name in self.__dict__:
yield self, name yield self, name
installer = installer_obj() installer = installer_obj()
options = installer options = installer
@@ -274,7 +272,6 @@ else:
options.subject_base = None options.subject_base = None
options.ca_subject = None options.ca_subject = None
def gen_env_boostrap_finalize_core(etc_ipa, default_config): def gen_env_boostrap_finalize_core(etc_ipa, default_config):
env = Env() env = Env()
# env._bootstrap(context='installer', confdir=paths.ETC_IPA, log=None) # env._bootstrap(context='installer', confdir=paths.ETC_IPA, log=None)
@@ -283,10 +280,10 @@ else:
env._finalize_core(**dict(default_config)) env._finalize_core(**dict(default_config))
return env return env
def api_bootstrap_finalize(env): def api_bootstrap_finalize(env):
# pylint: disable=no-member # pylint: disable=no-member
xmlrpc_uri = 'https://{}/ipa/xml'.format(ipautil.format_netloc(env.host)) xmlrpc_uri = \
'https://{}/ipa/xml'.format(ipautil.format_netloc(env.host))
api.bootstrap(in_server=True, api.bootstrap(in_server=True,
context='installer', context='installer',
confdir=paths.ETC_IPA, confdir=paths.ETC_IPA,
@@ -295,14 +292,14 @@ else:
# pylint: enable=no-member # pylint: enable=no-member
api.finalize() api.finalize()
def gen_ReplicaConfig(): def gen_ReplicaConfig():
class ExtendedReplicaConfig(ReplicaConfig): class ExtendedReplicaConfig(ReplicaConfig):
def __init__(self, top_dir=None): def __init__(self, top_dir=None):
super(ExtendedReplicaConfig, self).__init__(top_dir) super(ExtendedReplicaConfig, self).__init__(top_dir)
# def __getattribute__(self, attr): # def __getattribute__(self, attr):
# value = super(ExtendedReplicaConfig, self).__getattribute__(attr) # value = super(ExtendedReplicaConfig, self).__getattribute__(
# attr)
# if attr not in ["__dict__", "knobs"]: # if attr not in ["__dict__", "knobs"]:
# logger.debug(" <== Accessing config.%s (%s)" % # logger.debug(" <== Accessing config.%s (%s)" %
# (attr, repr(value))) # (attr, repr(value)))
@@ -314,8 +311,10 @@ else:
return getattr(self, attr) return getattr(self, attr)
# def __setattr__(self, attr, value): # def __setattr__(self, attr, value):
# logger.debug(" ==> Setting config.%s to %s" % (attr, repr(value))) # logger.debug(" ==> Setting config.%s to %s" %
# return super(ExtendedReplicaConfig, self).__setattr__(attr, value) # (attr, repr(value)))
# return super(ExtendedReplicaConfig, self).__setattr__(attr,
# value)
def knobs(self): def knobs(self):
for name in self.__dict__: for name in self.__dict__:
@@ -338,7 +337,6 @@ else:
return config return config
def replica_ds_init_info(ansible_log, def replica_ds_init_info(ansible_log,
config, options, ca_is_configured, remote_api, config, options, ca_is_configured, remote_api,
ds_ca_subject, ca_file, ds_ca_subject, ca_file,
@@ -358,7 +356,8 @@ else:
# if ca_is_configured: # if ca_is_configured:
# ca_subject = ca.lookup_ca_subject(_api, config.subject_base) # ca_subject = ca.lookup_ca_subject(_api, config.subject_base)
# else: # else:
# ca_subject = installutils.default_ca_subject_dn(config.subject_base) # ca_subject = installutils.default_ca_subject_dn(
# config.subject_base)
ca_subject = ds_ca_subject ca_subject = ds_ca_subject
ds = dsinstance.DsInstance( ds = dsinstance.DsInstance(
@@ -403,7 +402,6 @@ else:
return ds return ds
def ansible_module_get_parsed_ip_addresses(ansible_module, def ansible_module_get_parsed_ip_addresses(ansible_module,
param='ip_addresses'): param='ip_addresses'):
ip_addrs = [] ip_addrs = []
@@ -411,11 +409,11 @@ else:
try: try:
ip_parsed = ipautil.CheckedIPAddress(ip) ip_parsed = ipautil.CheckedIPAddress(ip)
except Exception as e: except Exception as e:
ansible_module.fail_json(msg="Invalid IP Address %s: %s" % (ip, e)) ansible_module.fail_json(
msg="Invalid IP Address %s: %s" % (ip, e))
ip_addrs.append(ip_parsed) ip_addrs.append(ip_parsed)
return ip_addrs return ip_addrs
def gen_remote_api(master_host_name, etc_ipa): def gen_remote_api(master_host_name, etc_ipa):
ldapuri = 'ldaps://%s' % ipautil.format_netloc(master_host_name) ldapuri = 'ldaps://%s' % ipautil.format_netloc(master_host_name)
xmlrpc_uri = 'https://{}/ipa/xml'.format( xmlrpc_uri = 'https://{}/ipa/xml'.format(

View File

@@ -42,7 +42,8 @@ __all__ = ["IPAChangeConf", "certmonger", "sysrestore", "root_logger",
import sys import sys
# HACK: workaround for Ansible 2.9 https://github.com/ansible/ansible/issues/68361 # HACK: workaround for Ansible 2.9
# https://github.com/ansible/ansible/issues/68361
if 'ansible.executor' in sys.modules: if 'ansible.executor' in sys.modules:
for attr in __all__: for attr in __all__:
setattr(sys.modules[__name__], attr, None) setattr(sys.modules[__name__], attr, None)
@@ -54,17 +55,16 @@ else:
import six import six
import base64 import base64
from ipapython.version import NUM_VERSION, VERSION from ipapython.version import NUM_VERSION, VERSION
if NUM_VERSION < 30201: if NUM_VERSION < 30201:
# See ipapython/version.py # See ipapython/version.py
IPA_MAJOR, IPA_MINOR, IPA_RELEASE = [int(x) for x in VERSION.split(".", 2)] IPA_MAJOR, IPA_MINOR, IPA_RELEASE = [int(x) for x in
VERSION.split(".", 2)]
IPA_PYTHON_VERSION = IPA_MAJOR*10000 + IPA_MINOR*100 + IPA_RELEASE IPA_PYTHON_VERSION = IPA_MAJOR*10000 + IPA_MINOR*100 + IPA_RELEASE
else: else:
IPA_PYTHON_VERSION = NUM_VERSION IPA_PYTHON_VERSION = NUM_VERSION
if NUM_VERSION >= 40500: if NUM_VERSION >= 40500:
# IPA version >= 4.5 # IPA version >= 4.5
@@ -180,17 +180,14 @@ else:
raise Exception("freeipa version '%s' is too old" % VERSION) raise Exception("freeipa version '%s' is too old" % VERSION)
logger = logging.getLogger("ipa-server-install") logger = logging.getLogger("ipa-server-install")
def setup_logging(): def setup_logging():
# logger.setLevel(logging.DEBUG) # logger.setLevel(logging.DEBUG)
standard_logging_setup( standard_logging_setup(
paths.IPASERVER_INSTALL_LOG, verbose=False, debug=False, paths.IPASERVER_INSTALL_LOG, verbose=False, debug=False,
filemode='a', console_format='%(message)s') filemode='a', console_format='%(message)s')
@contextlib_contextmanager @contextlib_contextmanager
def redirect_stdout(f): def redirect_stdout(f):
sys.stdout = f sys.stdout = f
@@ -199,7 +196,6 @@ else:
finally: finally:
sys.stdout = sys.__stdout__ sys.stdout = sys.__stdout__
class AnsibleModuleLog(): class AnsibleModuleLog():
def __init__(self, module): def __init__(self, module):
self.module = module self.module = module
@@ -233,7 +229,6 @@ else:
self.module.debug(msg) self.module.debug(msg)
# self.module.warn(msg) # self.module.warn(msg)
class options_obj(object): class options_obj(object):
def __init__(self): def __init__(self):
self._replica_install = False self._replica_install = False
@@ -257,7 +252,6 @@ else:
for name in self.__dict__: for name in self.__dict__:
yield self, name yield self, name
options = options_obj() options = options_obj()
installer = options installer = options
@@ -265,7 +259,6 @@ else:
options.add_sids = True options.add_sids = True
options.add_agents = False options.add_agents = False
# Installable # Installable
options.uninstalling = False options.uninstalling = False
@@ -303,7 +296,6 @@ else:
options.ignore_topology_disconnect = False options.ignore_topology_disconnect = False
options.ignore_last_of_role = False options.ignore_last_of_role = False
def api_Backend_ldap2(host_name, setup_ca, connect=False): def api_Backend_ldap2(host_name, setup_ca, connect=False):
# we are sure we have the configuration file ready. # we are sure we have the configuration file ready.
cfg = dict(context='installer', confdir=paths.ETC_IPA, in_server=True, cfg = dict(context='installer', confdir=paths.ETC_IPA, in_server=True,
@@ -317,7 +309,6 @@ else:
if connect: if connect:
api.Backend.ldap2.connect() api.Backend.ldap2.connect()
def ds_init_info(ansible_log, fstore, domainlevel, dirsrv_config_file, def ds_init_info(ansible_log, fstore, domainlevel, dirsrv_config_file,
realm_name, host_name, domain_name, dm_password, realm_name, host_name, domain_name, dm_password,
idstart, idmax, subject_base, ca_subject, idstart, idmax, subject_base, ca_subject,
@@ -349,7 +340,6 @@ else:
return ds return ds
def ansible_module_get_parsed_ip_addresses(ansible_module, def ansible_module_get_parsed_ip_addresses(ansible_module,
param='ip_addresses'): param='ip_addresses'):
ip_addrs = [] ip_addrs = []
@@ -357,11 +347,11 @@ else:
try: try:
ip_parsed = ipautil.CheckedIPAddress(ip) ip_parsed = ipautil.CheckedIPAddress(ip)
except Exception as e: except Exception as e:
ansible_module.fail_json(msg="Invalid IP Address %s: %s" % (ip, e)) ansible_module.fail_json(
msg="Invalid IP Address %s: %s" % (ip, e))
ip_addrs.append(ip_parsed) ip_addrs.append(ip_parsed)
return ip_addrs return ip_addrs
def encode_certificate(cert): def encode_certificate(cert):
""" """
Encode a certificate using base64. Encode a certificate using base64.
@@ -376,13 +366,12 @@ else:
encoded = encoded.decode('ascii') encoded = encoded.decode('ascii')
return encoded return encoded
def decode_certificate(cert): def decode_certificate(cert):
""" """
Decode a certificate using base64. Decode a certificate using base64.
It also takes FreeIPA versions into account and returns a IPACertificate It also takes FreeIPA versions into account and returns a
for newer IPA versions. IPACertificate for newer IPA versions.
""" """
if hasattr(x509, "IPACertificate"): if hasattr(x509, "IPACertificate"):
cert = cert.strip() cert = cert.strip()