summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorChristian Heimes <cheimes@redhat.com>2017-10-11 12:09:30 +0200
committerChristian Heimes <cheimes@redhat.com>2017-11-15 14:17:24 +0100
commita48f6511f6f463488452c320dc1370b0ac620646 (patch)
treeb0dfd6b5553424cbef37d9b4bfea8a4e78a51eb4 /ipalib
parentf6adf4f3a86e4ed5e444c9e14bb98031a2f603a2 (diff)
downloadfreeipa-a48f6511f6f463488452c320dc1370b0ac620646.tar.gz
freeipa-a48f6511f6f463488452c320dc1370b0ac620646.tar.xz
freeipa-a48f6511f6f463488452c320dc1370b0ac620646.zip
Use namespace-aware meta importer for ipaplatform
Instead of symlinks and build-time configuration the ipaplatform module is now able to auto-detect platforms on import time. The meta importer uses the platform 'ID' from /etc/os-releases. It falls back to 'ID_LIKE' on platforms like CentOS, which has ID=centos and ID_LIKE="rhel fedora". The meta importer is able to handle namespace packages and the ipaplatform package has been turned into a namespace package in order to support external platform specifications. https://fedorahosted.org/freeipa/ticket/6474 Signed-off-by: Christian Heimes <cheimes@redhat.com> Reviewed-By: Rob Crittenden <rcritten@redhat.com>
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/config.py13
-rw-r--r--ipalib/setup.py1
-rw-r--r--ipalib/util.py7
3 files changed, 8 insertions, 13 deletions
diff --git a/ipalib/config.py b/ipalib/config.py
index 151c4b4a8..b6c17fa1b 100644
--- a/ipalib/config.py
+++ b/ipalib/config.py
@@ -28,6 +28,7 @@ of the process.
For the per-request thread-local information, see `ipalib.request`.
"""
+from __future__ import absolute_import
import os
from os import path
@@ -39,6 +40,7 @@ from six.moves.urllib.parse import urlparse, urlunparse
from six.moves.configparser import RawConfigParser, ParsingError
# pylint: enable=import-error
+from ipaplatform.tasks import tasks
from ipapython.dn import DN
from ipalib.base import check_name
from ipalib.constants import (
@@ -47,12 +49,6 @@ from ipalib.constants import (
TLS_VERSIONS
)
from ipalib import errors
-try:
- # pylint: disable=ipa-forbidden-import
- from ipaplatform.tasks import tasks
- # pylint: enable=ipa-forbidden-import
-except ImportError:
- tasks = None
if six.PY3:
unicode = str
@@ -451,10 +447,7 @@ class Env(object):
self.script = path.abspath(sys.argv[0])
self.bin = path.dirname(self.script)
self.home = os.environ.get('HOME', None)
-
- # Set fips_mode only if ipaplatform module was loaded
- if tasks is not None:
- self.fips_mode = tasks.is_fips_enabled()
+ self.fips_mode = tasks.is_fips_enabled()
# Merge in overrides:
self._merge(**overrides)
diff --git a/ipalib/setup.py b/ipalib/setup.py
index cdbd61c01..722fcebd3 100644
--- a/ipalib/setup.py
+++ b/ipalib/setup.py
@@ -37,6 +37,7 @@ if __name__ == '__main__':
"ipalib.install",
],
install_requires=[
+ "ipaplatform",
"ipapython",
"netaddr",
"pyasn1",
diff --git a/ipalib/util.py b/ipalib/util.py
index 65b3eceda..a02be89f3 100644
--- a/ipalib/util.py
+++ b/ipalib/util.py
@@ -55,6 +55,7 @@ from ipalib.constants import (
TLS_VERSIONS, TLS_VERSION_MINIMAL, TLS_HIGH_CIPHERS
)
from ipalib.text import _
+from ipaplatform.paths import paths
from ipapython.ssh import SSHPublicKey
from ipapython.dn import DN, RDN
from ipapython.dnsutil import DNSName
@@ -1101,9 +1102,9 @@ def check_client_configuration():
"""
Check if IPA client is configured on the system.
"""
- if (not os.path.isfile(_IPA_DEFAULT_CONF) or
- not os.path.isdir(_IPA_CLIENT_SYSRESTORE) or
- not os.listdir(_IPA_CLIENT_SYSRESTORE)):
+ if (not os.path.isfile(paths.IPA_DEFAULT_CONF) or
+ not os.path.isdir(paths.IPA_CLIENT_SYSRESTORE) or
+ not os.listdir(paths.IPA_CLIENT_SYSRESTORE)):
raise ScriptError('IPA client is not configured on this system')