https://fedorahosted.org/freeipa/ticket/5535
Patch attached.
From 8ef93485d61e8732166fb0c5b6c4559209740f3e Mon Sep 17 00:00:00 2001 From: Martin Basti <[email protected]> Date: Wed, 9 Dec 2015 18:53:35 +0100 Subject: [PATCH] Fix version comparison Use RPM library to compare vendor versions of IPA for redhat platform https://fedorahosted.org/freeipa/ticket/5535 --- freeipa.spec.in | 2 ++ ipaplatform/redhat/tasks.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/freeipa.spec.in b/freeipa.spec.in index 9f82b3695fb10c4db65cc31278364b3b34e26098..09feba7b8324f5e645da3e8010de86b6c3ee5ab9 100644 --- a/freeipa.spec.in +++ b/freeipa.spec.in @@ -166,6 +166,8 @@ Requires: %{etc_systemd_dir} Requires: gzip Requires: python-gssapi >= 1.1.0 Requires: custodia +Requires: rpm-python +Requires: rpmdevtools Provides: %{alt_name}-server = %{version} Conflicts: %{alt_name}-server diff --git a/ipaplatform/redhat/tasks.py b/ipaplatform/redhat/tasks.py index 94d2cb4e906965a20bcfdd55f38854005091c26f..0debae1f39924b608190ef7a7f9ba5ebe1b13dfc 100644 --- a/ipaplatform/redhat/tasks.py +++ b/ipaplatform/redhat/tasks.py @@ -30,11 +30,13 @@ import stat import socket import sys import base64 +import rpm from subprocess import CalledProcessError from nss.error import NSPRError from pyasn1.error import PyAsn1Error from six.moves import urllib +from rpmUtils.miscutils import stringToVersion from ipapython.ipa_log_manager import root_logger, log_mgr from ipapython import ipautil @@ -66,6 +68,16 @@ def selinux_enabled(): return False +class IPAVersion(object): + + def __init__(self, version): + self.version_tuple = stringToVersion(version) + + def __cmp__(self, other): + assert isinstance(other, IPAVersion) + return rpm.labelCompare(self.version_tuple, other.version_tuple) + + class RedHatTaskNamespace(BaseTaskNamespace): def restore_context(self, filepath, restorecon=paths.SBIN_RESTORECON): @@ -423,5 +435,12 @@ class RedHatTaskNamespace(BaseTaskNamespace): super(RedHatTaskNamespace, self).create_system_user(name, group, homedir, shell, uid, gid, comment, create_homedir) + def parse_ipa_version(self, version): + """ + :param version: textual version + :return: object implementing proper __cmp__ method for version compare + """ + return IPAVersion(version) + tasks = RedHatTaskNamespace() -- 2.5.0
-- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code
