mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2026-10-12 16:32:01 -05:00
test_integration.config: Use a more declarative approach to test-wide settings
The list of options was duplicated too many times. Consolidate. Part of the work for: https://fedorahosted.org/freeipa/ticket/3938 Reviewed-By: Tomas Babej <tbabej@redhat.com>
This commit is contained in:
1 parent
8e2bceffa3
commit
e1b73c18e3
1 file changed
+50
-57
@@ -32,29 +32,57 @@ from ipatests.test_integration.host import BaseHost, Host
|
|||||||
TESTHOST_PREFIX = 'TESTHOST_'
|
TESTHOST_PREFIX = 'TESTHOST_'
|
||||||
|
|
||||||
|
|
||||||
|
_SettingInfo = collections.namedtuple('Setting', 'name var_name default')
|
||||||
|
_setting_infos = (
|
||||||
|
# Directory on which test-specific files will be stored,
|
||||||
|
_SettingInfo('test_dir', 'IPATEST_DIR', '/root/ipatests'),
|
||||||
|
|
||||||
|
# File with root's private RSA key for SSH (default: ~/.ssh/id_rsa)
|
||||||
|
_SettingInfo('root_ssh_key_filename', 'IPA_ROOT_SSH_KEY', None),
|
||||||
|
|
||||||
|
# SSH password for root (used if root_ssh_key_filename is not set)
|
||||||
|
_SettingInfo('root_password', 'IPA_ROOT_SSH_PASSWORD', None),
|
||||||
|
|
||||||
|
_SettingInfo('admin_name', 'ADMINID', 'admin'),
|
||||||
|
_SettingInfo('admin_password', 'ADMINPW', 'Secret123'),
|
||||||
|
_SettingInfo('dirman_dn', 'ROOTDN', 'cn=Directory Manager'),
|
||||||
|
_SettingInfo('dirman_password', 'ROOTDNPWD', None),
|
||||||
|
|
||||||
|
# 8.8.8.8 is probably the best-known public DNS
|
||||||
|
_SettingInfo('dns_forwarder', 'DNSFORWARD', '8.8.8.8'),
|
||||||
|
_SettingInfo('nis_domain', 'NISDOMAIN', 'ipatest'),
|
||||||
|
_SettingInfo('ntp_server', 'NTPSERVER', None),
|
||||||
|
_SettingInfo('ad_admin_name', 'ADADMINID', 'Administrator'),
|
||||||
|
_SettingInfo('ad_admin_password', 'ADADMINPW', 'Secret123'),
|
||||||
|
|
||||||
|
_SettingInfo('ipv6', 'IPv6SETUP', False),
|
||||||
|
_SettingInfo('debug', 'IPADEBUG', False),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Config(object):
|
class Config(object):
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
self.log = log_mgr.get_logger(self)
|
self.log = log_mgr.get_logger(self)
|
||||||
|
|
||||||
admin_password = kwargs.get('admin_password') or 'Secret123'
|
admin_password = kwargs.get('admin_password') or 'Secret123'
|
||||||
|
|
||||||
|
# This unfortunately duplicates information in _setting_infos,
|
||||||
|
# but is left here for the sake of static analysis.
|
||||||
self.test_dir = kwargs.get('test_dir', '/root/ipatests')
|
self.test_dir = kwargs.get('test_dir', '/root/ipatests')
|
||||||
self.root_password = kwargs.get('root_password')
|
|
||||||
self.root_ssh_key_filename = kwargs.get('root_ssh_key_filename')
|
self.root_ssh_key_filename = kwargs.get('root_ssh_key_filename')
|
||||||
self.ipv6 = bool(kwargs.get('ipv6', False))
|
self.root_password = kwargs.get('root_password')
|
||||||
self.debug = bool(kwargs.get('debug', False))
|
|
||||||
self.admin_name = kwargs.get('admin_name') or 'admin'
|
self.admin_name = kwargs.get('admin_name') or 'admin'
|
||||||
self.admin_password = admin_password
|
self.admin_password = admin_password
|
||||||
self.dirman_dn = DN(kwargs.get('dirman_dn') or 'cn=Directory Manager')
|
self.dirman_dn = DN(kwargs.get('dirman_dn') or 'cn=Directory Manager')
|
||||||
self.dirman_password = kwargs.get('dirman_password') or admin_password
|
self.dirman_password = kwargs.get('dirman_password') or admin_password
|
||||||
self.admin_name = kwargs.get('admin_name') or 'admin'
|
|
||||||
# 8.8.8.8 is probably the best-known public DNS
|
|
||||||
self.dns_forwarder = kwargs.get('dns_forwarder') or '8.8.8.8'
|
self.dns_forwarder = kwargs.get('dns_forwarder') or '8.8.8.8'
|
||||||
self.nis_domain = kwargs.get('nis_domain') or 'ipatest'
|
self.nis_domain = kwargs.get('nis_domain') or 'ipatest'
|
||||||
self.ntp_server = kwargs.get('ntp_server') or (
|
self.ntp_server = kwargs.get('ntp_server') or (
|
||||||
'%s.pool.ntp.org' % random.randint(0, 3))
|
'%s.pool.ntp.org' % random.randint(0, 3))
|
||||||
self.ad_admin_name = kwargs.get('ad_admin_name') or 'Administrator'
|
self.ad_admin_name = kwargs.get('ad_admin_name') or 'Administrator'
|
||||||
self.ad_admin_password = kwargs.get('ad_admin_password') or 'Secret123'
|
self.ad_admin_password = kwargs.get('ad_admin_password') or 'Secret123'
|
||||||
|
self.ipv6 = bool(kwargs.get('ipv6', False))
|
||||||
|
self.debug = bool(kwargs.get('debug', False))
|
||||||
|
|
||||||
if not self.root_password and not self.root_ssh_key_filename:
|
if not self.root_password and not self.root_ssh_key_filename:
|
||||||
self.root_ssh_key_filename = '~/.ssh/id_rsa'
|
self.root_ssh_key_filename = '~/.ssh/id_rsa'
|
||||||
@@ -71,25 +99,7 @@ class Config(object):
|
|||||||
|
|
||||||
Input variables:
|
Input variables:
|
||||||
|
|
||||||
DOMAIN: the domain to install in
|
See _setting_infos for test-wide settings
|
||||||
IPATEST_DIR: Directory on which test-specific files will be stored,
|
|
||||||
by default /root/ipatests
|
|
||||||
IPv6SETUP: "TRUE" if setting up with IPv6
|
|
||||||
IPADEBUG: non-empty if debugging is turned on
|
|
||||||
IPA_ROOT_SSH_KEY: File with root's private RSA key for SSH
|
|
||||||
(default: ~/.ssh/id_rsa)
|
|
||||||
IPA_ROOT_SSH_PASSWORD: SSH password for root
|
|
||||||
(used if IPA_ROOT_SSH_KEY is not set)
|
|
||||||
|
|
||||||
ADMINID: Administrator username
|
|
||||||
ADMINPW: Administrator password
|
|
||||||
ROOTDN: Directory Manager DN
|
|
||||||
ROOTDNPWD: Directory Manager password
|
|
||||||
ADADMINID: Active Directory Administrator username
|
|
||||||
ADADMINPW: Active Directory Administrator password
|
|
||||||
DNSFORWARD: DNS forwarder
|
|
||||||
NISDOMAIN
|
|
||||||
NTPSERVER
|
|
||||||
|
|
||||||
MASTER_env1: FQDN of the master
|
MASTER_env1: FQDN of the master
|
||||||
REPLICA_env1: space-separated FQDNs of the replicas
|
REPLICA_env1: space-separated FQDNs of the replicas
|
||||||
@@ -115,21 +125,14 @@ class Config(object):
|
|||||||
"""
|
"""
|
||||||
env_normalize(env)
|
env_normalize(env)
|
||||||
|
|
||||||
self = cls(test_dir=env.get('IPATEST_DIR') or '/root/ipatests',
|
kwargs = {s.name: env.get(s.var_name, s.default)
|
||||||
ipv6=(env.get('IPv6SETUP') == 'TRUE'),
|
for s in _setting_infos}
|
||||||
debug=env.get('IPADEBUG'),
|
|
||||||
root_password=env.get('IPA_ROOT_SSH_PASSWORD'),
|
# $IPv6SETUP needs to be 'TRUE' to enable ipv6
|
||||||
root_ssh_key_filename=env.get('IPA_ROOT_SSH_KEY'),
|
if isinstance(kwargs['ipv6'], basestring):
|
||||||
admin_name=env.get('ADMINID'),
|
kwargs['ipv6'] = (kwargs['ipv6'].upper() == 'TRUE')
|
||||||
admin_password=env.get('ADMINPW'),
|
|
||||||
dirman_dn=env.get('ROOTDN'),
|
self = cls(**kwargs)
|
||||||
dirman_password=env.get('ROOTDNPWD'),
|
|
||||||
dns_forwarder=env.get('DNSFORWARD'),
|
|
||||||
nis_domain=env.get('NISDOMAIN'),
|
|
||||||
ntp_server=env.get('NTPSERVER'),
|
|
||||||
ad_admin_name=env.get('ADADMINID'),
|
|
||||||
ad_admin_password=env.get('ADADMINPW'),
|
|
||||||
)
|
|
||||||
|
|
||||||
# Either IPA master or AD can define a domain
|
# Either IPA master or AD can define a domain
|
||||||
|
|
||||||
@@ -156,24 +159,14 @@ class Config(object):
|
|||||||
# Older Python versions
|
# Older Python versions
|
||||||
env = {}
|
env = {}
|
||||||
|
|
||||||
env['IPATEST_DIR'] = self.test_dir
|
for setting in _setting_infos:
|
||||||
env['IPv6SETUP'] = 'TRUE' if self.ipv6 else ''
|
value = getattr(self, setting.name)
|
||||||
env['IPADEBUG'] = 'TRUE' if self.debug else ''
|
if value in (None, False):
|
||||||
env['IPA_ROOT_SSH_PASSWORD'] = self.root_password or ''
|
env[setting.var_name] = ''
|
||||||
env['IPA_ROOT_SSH_KEY'] = self.root_ssh_key_filename or ''
|
elif value is True:
|
||||||
|
env[setting.var_name] = 'TRUE'
|
||||||
env['ADMINID'] = self.admin_name
|
else:
|
||||||
env['ADMINPW'] = self.admin_password
|
env[setting.var_name] = str(value)
|
||||||
|
|
||||||
env['ROOTDN'] = str(self.dirman_dn)
|
|
||||||
env['ROOTDNPWD'] = self.dirman_password
|
|
||||||
|
|
||||||
env['ADADMINID'] = self.ad_admin_name
|
|
||||||
env['ADADMINPW'] = self.ad_admin_password
|
|
||||||
|
|
||||||
env['DNSFORWARD'] = self.dns_forwarder
|
|
||||||
env['NISDOMAIN'] = self.nis_domain
|
|
||||||
env['NTPSERVER'] = self.ntp_server
|
|
||||||
|
|
||||||
for domain in self.domains:
|
for domain in self.domains:
|
||||||
env['DOMAIN%s' % domain._env] = domain.name
|
env['DOMAIN%s' % domain._env] = domain.name
|
||||||
|
|||||||
Reference in new issue
Block a user