diff options
| author | Christian Heimes <cheimes@redhat.com> | 2017-03-20 11:26:45 +0100 |
|---|---|---|
| committer | Tomas Krizek <tkrizek@redhat.com> | 2017-03-22 13:42:04 +0100 |
| commit | 2895e3931d0b4a9e20e1b211ef5a76f79fc73c9d (patch) | |
| tree | bd25440f3f1af77b63a9e47a8699375e46e9c316 /ipatests/pytest_plugins | |
| parent | dde71ec4a9669a155456a8e8912ed3a0503b8704 (diff) | |
| download | freeipa-2895e3931d0b4a9e20e1b211ef5a76f79fc73c9d.tar.gz freeipa-2895e3931d0b4a9e20e1b211ef5a76f79fc73c9d.tar.xz freeipa-2895e3931d0b4a9e20e1b211ef5a76f79fc73c9d.zip | |
Move config module to ipatests.pytest_plugins.integration.config
https://pagure.io/freeipa/issue/6798
Signed-off-by: Christian Heimes <cheimes@redhat.com>
Reviewed-By: Milan Kubik <mkubik@redhat.com>
Diffstat (limited to 'ipatests/pytest_plugins')
| -rw-r--r-- | ipatests/pytest_plugins/integration/__init__.py | 2 | ||||
| -rw-r--r-- | ipatests/pytest_plugins/integration/config.py | 163 |
2 files changed, 164 insertions, 1 deletions
diff --git a/ipatests/pytest_plugins/integration/__init__.py b/ipatests/pytest_plugins/integration/__init__.py index ae94dbcb1..142406dc8 100644 --- a/ipatests/pytest_plugins/integration/__init__.py +++ b/ipatests/pytest_plugins/integration/__init__.py @@ -30,6 +30,7 @@ from pytest_multihost import make_multihost_fixture from ipapython import ipautil from ipapython.ipa_log_manager import log_mgr +from .config import Config log = log_mgr.get_logger(__name__) @@ -154,7 +155,6 @@ def mh(request, class_integration_logs): """ # TODO: cleanup modules from ipatests.test_integration import tasks - from ipatests.test_integration.config import Config from ipatests.test_integration.env_config import get_global_config cls = request.cls diff --git a/ipatests/pytest_plugins/integration/config.py b/ipatests/pytest_plugins/integration/config.py new file mode 100644 index 000000000..0e4ac1f1d --- /dev/null +++ b/ipatests/pytest_plugins/integration/config.py @@ -0,0 +1,163 @@ +# Authors: +# Petr Viktorin <pviktori@redhat.com> +# Tomas Babej <tbabej@redhat.com> +# +# Copyright (C) 2013 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""Utilities for configuration of multi-master tests""" + +import random + +import pytest_multihost.config + +from ipapython.dn import DN +from ipapython.ipa_log_manager import log_mgr +from ipalib.constants import MAX_DOMAIN_LEVEL + + +class Config(pytest_multihost.config.Config): + extra_init_args = { + 'admin_name', + 'admin_password', + 'dirman_dn', + 'dirman_password', + 'nis_domain', + 'ntp_server', + 'ad_admin_name', + 'ad_admin_password', + 'dns_forwarder', + 'domain_level', + } + + def __init__(self, **kwargs): + kwargs.setdefault('test_dir', '/root/ipatests') + super(Config, self).__init__(**kwargs) + + admin_password = kwargs.get('admin_password') or 'Secret123' + + self.admin_name = kwargs.get('admin_name') or 'admin' + self.admin_password = admin_password + self.dirman_dn = DN(kwargs.get('dirman_dn') or 'cn=Directory Manager') + self.dirman_password = kwargs.get('dirman_password') or admin_password + self.nis_domain = kwargs.get('nis_domain') or 'ipatest' + self.ntp_server = str(kwargs.get('ntp_server') or ( + '%s.pool.ntp.org' % random.randint(0, 3))) + self.ad_admin_name = kwargs.get('ad_admin_name') or 'Administrator' + self.ad_admin_password = kwargs.get('ad_admin_password') or 'Secret123' + self.domain_level = kwargs.get('domain_level', MAX_DOMAIN_LEVEL) + # 8.8.8.8 is probably the best-known public DNS + self.dns_forwarder = kwargs.get('dns_forwarder') or '8.8.8.8' + self.debug = False + if self.domain_level is None: + self.domain_level = MAX_DOMAIN_LEVEL + + def get_domain_class(self): + return Domain + + def get_logger(self, name): + return log_mgr.get_logger(name) + + @property + def ad_domains(self): + return [d for d in self.domains if d.type == 'AD'] + + def get_all_hosts(self): + for domain in self.domains: + for host in domain.hosts: + yield host + + def to_dict(self): + extra_args = self.extra_init_args - {'dirman_dn'} + result = super(Config, self).to_dict(extra_args) + result['dirman_dn'] = str(self.dirman_dn) + return result + + @classmethod + def from_env(cls, env): + from ipatests.test_integration.env_config import config_from_env + return config_from_env(env) + + def to_env(self, **kwargs): + from ipatests.test_integration.env_config import config_to_env + return config_to_env(self, **kwargs) + + +class Domain(pytest_multihost.config.Domain): + """Configuration for an IPA / AD domain""" + def __init__(self, config, name, domain_type): + self.type = str(domain_type) + + self.config = config + self.name = str(name) + self.hosts = [] + + assert domain_type in ('IPA', 'AD') + self.realm = self.name.upper() + self.basedn = DN(*(('dc', p) for p in name.split('.'))) + + @property + def static_roles(self): + # Specific roles for each domain type are hardcoded + if self.type == 'IPA': + return ('master', 'replica', 'client', 'other') + elif self.type == 'AD': + return ('ad',) + else: + raise LookupError(self.type) + + def get_host_class(self, host_dict): + from ipatests.test_integration.host import Host, WinHost + + if self.type == 'IPA': + return Host + elif self.type == 'AD': + return WinHost + else: + raise LookupError(self.type) + + @property + def master(self): + return self.host_by_role('master') + + @property + def masters(self): + return self.hosts_by_role('master') + + @property + def replicas(self): + return self.hosts_by_role('replica') + + @property + def clients(self): + return self.hosts_by_role('client') + + @property + def ads(self): + return self.hosts_by_role('ad') + + @property + def other_hosts(self): + return self.hosts_by_role('other') + + @classmethod + def from_env(cls, env, config, index, domain_type): + from ipatests.test_integration.env_config import domain_from_env + return domain_from_env(env, config, index, domain_type) + + def to_env(self, **kwargs): + from ipatests.test_integration.env_config import domain_to_env + return domain_to_env(self, **kwargs) |
