pgreco / rpms / ipa

Forked from forks/areguera/rpms/ipa 4 years ago
Clone

Blame SOURCES/0024-Fix_authselect_invocations_to_work_with_1.0.2_rhbz#1654291.patch

6d47df
From 05c5be1b1c5ae63c5547d248d926b3411bff2733 Mon Sep 17 00:00:00 2001
6d47df
From: Adam Williamson <awilliam@redhat.com>
6d47df
Date: Nov 29 2018 15:58:38 +0000
6d47df
Subject: Fix authselect invocations to work with 1.0.2
6d47df
6d47df
6d47df
Since authselect 1.0.2, invoking an authselect command sequence
6d47df
like this:
6d47df
6d47df
['authselect', 'sssd', '', '--force']
6d47df
6d47df
does not work: authselect barfs on the empty string arg and
6d47df
errors out. We must only pass a features arg if we actually have
6d47df
some text to go in it.
6d47df
6d47df
This broke uninstallation.
6d47df
6d47df
In all cases, features are now passed as separate arguments instead of one
6d47df
argument separated by space.
6d47df
6d47df
Fixes: https://pagure.io/freeipa/issue/7776
6d47df
Signed-off-by: Adam Williamson <awilliam@redhat.com>
6d47df
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
6d47df
6d47df
---
6d47df
6d47df
diff --git a/ipaplatform/redhat/authconfig.py b/ipaplatform/redhat/authconfig.py
6d47df
index 77ccc36..58cf7df 100644
6d47df
--- a/ipaplatform/redhat/authconfig.py
6d47df
+++ b/ipaplatform/redhat/authconfig.py
6d47df
@@ -158,15 +158,26 @@ class RedHatAuthSelect(RedHatAuthToolBase):
6d47df
                 " ".join(args))
6d47df
 
6d47df
             profile = 'sssd'
6d47df
-            features = ''
6d47df
+            features = []
6d47df
         else:
6d47df
-            profile = \
6d47df
-                statestore.restore_state('authselect', 'profile') or 'sssd'
6d47df
-            features = \
6d47df
-                statestore.restore_state('authselect', 'features_list') or ''
6d47df
+            profile = statestore.restore_state('authselect', 'profile')
6d47df
+            if not profile:
6d47df
+                profile = 'sssd'
6d47df
+            features_state = statestore.restore_state(
6d47df
+                'authselect', 'features_list'
6d47df
+            )
6d47df
             statestore.delete_state('authselect', 'mkhomedir')
6d47df
+            # only non-empty features, https://pagure.io/freeipa/issue/7776
6d47df
+            if features_state is not None:
6d47df
+                features = [
6d47df
+                    f.strip() for f in features_state.split(' ') if f.strip()
6d47df
+                ]
6d47df
+            else:
6d47df
+                features = []
6d47df
 
6d47df
-        cmd = [paths.AUTHSELECT, "select", profile, features, "--force"]
6d47df
+        cmd = [paths.AUTHSELECT, "select", profile]
6d47df
+        cmd.extend(features)
6d47df
+        cmd.append("--force")
6d47df
         ipautil.run(cmd)
6d47df
 
6d47df
     def backup(self, path):
6d47df
@@ -186,10 +197,9 @@ class RedHatAuthSelect(RedHatAuthToolBase):
6d47df
 
6d47df
         if cfg:
6d47df
             profile = cfg[0]
6d47df
-
6d47df
-            cmd = [
6d47df
-                paths.AUTHSELECT, "select", profile,
6d47df
-                " ".join(cfg[1]), "--force"]
6d47df
+            cmd = [paths.AUTHSELECT, "select", profile]
6d47df
+            cmd.extend(cfg[1])
6d47df
+            cmd.append("--force")
6d47df
             ipautil.run(cmd)
6d47df
 
6d47df
     def set_nisdomain(self, nisdomain):
6d47df