diff options
author | Christian Heimes <cheimes@redhat.com> | 2016-10-18 09:14:31 +0200 |
---|---|---|
committer | David Kupka <dkupka@redhat.com> | 2016-10-20 10:42:00 +0200 |
commit | 8f98fa1bd5f1da207fab6f89b75e0cdc19d00797 (patch) | |
tree | cbddaeadb21accf30fcb136ea91b15cb511f5631 | |
parent | a42059228018839ae2656c27f5b00d96bc935ee3 (diff) | |
download | freeipa-8f98fa1bd5f1da207fab6f89b75e0cdc19d00797.tar.gz freeipa-8f98fa1bd5f1da207fab6f89b75e0cdc19d00797.tar.xz freeipa-8f98fa1bd5f1da207fab6f89b75e0cdc19d00797.zip |
Replace ipaplatform's symlinks with a meta importer
Signed-off-by: Christian Heimes <cheimes@redhat.com>
Reviewed-By: Petr Spacek <pspacek@redhat.com>
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | Makefile | 5 | ||||
-rw-r--r-- | ipaplatform/__init__.py.in | 18 | ||||
-rw-r--r-- | ipaplatform/base/services.py | 5 | ||||
-rw-r--r-- | ipaserver/dcerpc.py | 2 | ||||
-rw-r--r-- | pylint_plugins.py | 20 |
6 files changed, 37 insertions, 17 deletions
diff --git a/.gitignore b/.gitignore index 61054de30..9b1547569 100644 --- a/.gitignore +++ b/.gitignore @@ -77,7 +77,3 @@ freeipa2-dev-doc /ipaplatform/__init__.py /ipaplatform/setup.py -/ipaplatform/tasks.py -/ipaplatform/services.py -/ipaplatform/paths.py -/ipaplatform/constants.py @@ -197,11 +197,6 @@ version-update: release-update if [ "$(SUPPORTED_PLATFORM)" != "" ]; then \ sed -e s/__PLATFORM__/$(SUPPORTED_PLATFORM)/ \ ipaplatform/__init__.py.in > ipaplatform/__init__.py; \ - rm -f ipaplatform/paths.py ipaplatform/services.py ipaplatform/tasks.py ipaplatform/constants.py; \ - ln -s $(SUPPORTED_PLATFORM)/paths.py ipaplatform/paths.py; \ - ln -s $(SUPPORTED_PLATFORM)/services.py ipaplatform/services.py; \ - ln -s $(SUPPORTED_PLATFORM)/tasks.py ipaplatform/tasks.py; \ - ln -s $(SUPPORTED_PLATFORM)/constants.py ipaplatform/constants.py; \ fi if [ "$(SKIP_API_VERSION_CHECK)" != "yes" ]; then \ diff --git a/ipaplatform/__init__.py.in b/ipaplatform/__init__.py.in index 61f6f3c4a..9821bf62a 100644 --- a/ipaplatform/__init__.py.in +++ b/ipaplatform/__init__.py.in @@ -1,12 +1,20 @@ # # Copyright (C) 2015 FreeIPA Contributors see COPYING for license # +"""Module containing platform-specific functionality. + +ipaplatform.constants +ipaplatform.paths +ipaplatform.services +ipaplatform.tasks +""" +import os -''' -Module containing platform-specific functionality for every platform. -''' NAME = "__PLATFORM__" -# FIXME: too much cyclic dependencies -# from __PLATFORM__ import paths, tasks, services +# Create an alias for platform specific modulues, e.g. +# 'import ipaplatform.paths' loads 'ipaplatform/NAME/paths.py'. + +__path__.append( + os.path.join(os.path.dirname(os.path.abspath(__file__)), NAME)) diff --git a/ipaplatform/base/services.py b/ipaplatform/base/services.py index 750d97953..ec38b28a8 100644 --- a/ipaplatform/base/services.py +++ b/ipaplatform/base/services.py @@ -483,7 +483,10 @@ class SystemdService(PlatformService): # Objects below are expected to be exported by platform module -service = None +def base_service_class_factory(name): + raise NotImplementedError + +service = base_service_class_factory knownservices = None # System may support more time&date services. FreeIPA supports ntpd only, other diff --git a/ipaserver/dcerpc.py b/ipaserver/dcerpc.py index bd1d8c1ca..a6d10db0f 100644 --- a/ipaserver/dcerpc.py +++ b/ipaserver/dcerpc.py @@ -58,7 +58,7 @@ from dns.exception import DNSException import pysss_nss_idmap import pysss import six -from ipaplatform.paths import paths +from ipaplatform.paths import paths # pylint: disable=import-error from ldap.filter import escape_filter_chars from time import sleep diff --git a/pylint_plugins.py b/pylint_plugins.py index bf357737c..6273d2c84 100644 --- a/pylint_plugins.py +++ b/pylint_plugins.py @@ -6,9 +6,11 @@ from __future__ import print_function import copy import sys +import textwrap -from astroid import MANAGER +from astroid import MANAGER, register_module_extender from astroid import scoped_nodes +from astroid.builder import AstroidBuilder def register(linter): @@ -255,3 +257,19 @@ def fix_ipa_classes(cls): fake_class(cls, ipa_class_members[class_name_with_module]) MANAGER.register_transform(scoped_nodes.Class, fix_ipa_classes) + + +def ipaplatform_transform(): + """Module aliases for IpaPlatformImporter + """ + return AstroidBuilder(MANAGER).string_build(textwrap.dedent( + """ + from ipaplatform.base import constants + from ipaplatform.base import paths + from ipaplatform.base import services + from ipaplatform.base import tasks + """ + )) + + +register_module_extender(MANAGER, 'ipaplatform', ipaplatform_transform) |