mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Allow to override ipaplatform with env var
The ipaplatform provider module can now be overriden by setting IPAPLATFORM_OVERRIDE environment variable. Fixes: https://pagure.io/freeipa/issue/8401 Signed-off-by: Christian Heimes <cheimes@redhat.com> Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> Reviewed-By: Francois Cami <fcami@redhat.com>
This commit is contained in:
parent
5dd5669511
commit
eec5c9d820
@ -12,16 +12,23 @@ Known Linux distros with /etc/os-release
|
||||
- fedora
|
||||
- rhel
|
||||
- ubuntu (like debian)
|
||||
|
||||
The platform ids for ipaplatform providers are based on:
|
||||
|
||||
1) IPAPLATFORM_OVERRIDE env var
|
||||
2) ipaplatform.override.OVERRIDE value
|
||||
3) ID field of /etc/os-release (Linux)
|
||||
4) ID_LIKE fields of /etc/os-release (Linux)
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from collections.abc import Mapping
|
||||
import importlib
|
||||
import io
|
||||
import re
|
||||
import os
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
import six
|
||||
|
||||
import ipaplatform
|
||||
try:
|
||||
@ -30,13 +37,6 @@ except ImportError:
|
||||
OVERRIDE = None
|
||||
|
||||
|
||||
# pylint: disable=no-name-in-module, import-error
|
||||
if six.PY3:
|
||||
from collections.abc import Mapping
|
||||
else:
|
||||
from collections import Mapping
|
||||
# pylint: enable=no-name-in-module, import-error
|
||||
|
||||
_osrelease_line = re.compile(
|
||||
u"^(?!#)(?P<name>[a-zA-Z0-9_]+)="
|
||||
u"(?P<quote>[\"\']?)(?P<value>.+)(?P=quote)$"
|
||||
@ -49,7 +49,7 @@ def _parse_osrelease(filename='/etc/os-release'):
|
||||
https://www.freedesktop.org/software/systemd/man/os-release.html
|
||||
"""
|
||||
release = {}
|
||||
with io.open(filename, encoding='utf-8') as f:
|
||||
with open(filename) as f:
|
||||
for line in f:
|
||||
mo = _osrelease_line.match(line)
|
||||
if mo is not None:
|
||||
@ -186,10 +186,15 @@ class OSInfo(Mapping):
|
||||
"""Ordered tuple of detected platforms (including override)
|
||||
"""
|
||||
platforms = []
|
||||
if OVERRIDE is not None:
|
||||
# env var first
|
||||
env = os.environ.get("IPAPLATFORM_OVERRIDE")
|
||||
if env:
|
||||
platforms.append(env)
|
||||
# override from package definition
|
||||
if OVERRIDE is not None and OVERRIDE not in platforms:
|
||||
# allow RPM and Debian packages to override platform
|
||||
platforms.append(OVERRIDE)
|
||||
if OVERRIDE != self.id:
|
||||
if self.id not in platforms:
|
||||
platforms.append(self.id)
|
||||
platforms.extend(self.id_like)
|
||||
return tuple(platforms)
|
||||
|
Loading…
Reference in New Issue
Block a user