ac7d03
From 9303e3d0912e60b2069f7c5bad6b816ed8b033ef Mon Sep 17 00:00:00 2001
ac7d03
From: Stanislav Laznicka <slaznick@redhat.com>
ac7d03
Date: Wed, 5 Apr 2017 09:57:44 +0200
ac7d03
Subject: [PATCH] replicainstall: better client install exception handling
ac7d03
ac7d03
The exception handling of client install inside replica installation
ac7d03
was rather promiscuous, hungrily eating any possible exception thrown
ac7d03
at it. Scoped down the try-except block and reduced its promiscuity.
ac7d03
This change should improve the future development experience debugging
ac7d03
this part of the code.
ac7d03
ac7d03
https://pagure.io/freeipa/issue/6183
ac7d03
ac7d03
Reviewed-By: Tomas Krizek <tkrizek@redhat.com>
ac7d03
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
ac7d03
---
ac7d03
 ipaserver/install/server/replicainstall.py | 83 +++++++++++++++---------------
ac7d03
 1 file changed, 41 insertions(+), 42 deletions(-)
ac7d03
ac7d03
diff --git a/ipaserver/install/server/replicainstall.py b/ipaserver/install/server/replicainstall.py
ac7d03
index 383932b39b9ee99a7a5ce3275a5a7e02581b85b7..aa8e67f60b8abe591d55a907c409b584c74d4541 100644
ac7d03
--- a/ipaserver/install/server/replicainstall.py
ac7d03
+++ b/ipaserver/install/server/replicainstall.py
ac7d03
@@ -895,52 +895,51 @@ def install_check(installer):
ac7d03
 
ac7d03
 
ac7d03
 def ensure_enrolled(installer):
ac7d03
-    # Call client install script
ac7d03
-    service.print_msg("Configuring client side components")
ac7d03
+    args = [paths.IPA_CLIENT_INSTALL, "--unattended", "--no-ntp"]
ac7d03
+    stdin = None
ac7d03
+    nolog = []
ac7d03
+
ac7d03
+    if installer.domain_name:
ac7d03
+        args.extend(["--domain", installer.domain_name])
ac7d03
+    if installer.server:
ac7d03
+        args.extend(["--server", installer.server])
ac7d03
+    if installer.realm_name:
ac7d03
+        args.extend(["--realm", installer.realm_name])
ac7d03
+    if installer.host_name:
ac7d03
+        args.extend(["--hostname", installer.host_name])
ac7d03
+
ac7d03
+    if installer.password:
ac7d03
+        args.extend(["--password", installer.password])
ac7d03
+        nolog.append(installer.password)
ac7d03
+    else:
ac7d03
+        if installer.admin_password:
ac7d03
+            # Always set principal if password was set explicitly,
ac7d03
+            # the password itself gets passed directly via stdin
ac7d03
+            args.extend(["--principal", installer.principal or "admin"])
ac7d03
+            stdin = installer.admin_password
ac7d03
+        if installer.keytab:
ac7d03
+            args.extend(["--keytab", installer.keytab])
ac7d03
+
ac7d03
+    if installer.no_dns_sshfp:
ac7d03
+        args.append("--no-dns-sshfp")
ac7d03
+    if installer.ssh_trust_dns:
ac7d03
+        args.append("--ssh-trust-dns")
ac7d03
+    if installer.no_ssh:
ac7d03
+        args.append("--no-ssh")
ac7d03
+    if installer.no_sshd:
ac7d03
+        args.append("--no-sshd")
ac7d03
+    if installer.mkhomedir:
ac7d03
+        args.append("--mkhomedir")
ac7d03
+    if installer.force_join:
ac7d03
+        args.append("--force-join")
ac7d03
+
ac7d03
     try:
ac7d03
+        # Call client install script
ac7d03
+        service.print_msg("Configuring client side components")
ac7d03
         installer._enrollment_performed = True
ac7d03
-
ac7d03
-        args = [paths.IPA_CLIENT_INSTALL, "--unattended", "--no-ntp"]
ac7d03
-        stdin = None
ac7d03
-        nolog = []
ac7d03
-
ac7d03
-        if installer.domain_name:
ac7d03
-            args.extend(["--domain", installer.domain_name])
ac7d03
-        if installer.server:
ac7d03
-            args.extend(["--server", installer.server])
ac7d03
-        if installer.realm_name:
ac7d03
-            args.extend(["--realm", installer.realm_name])
ac7d03
-        if installer.host_name:
ac7d03
-            args.extend(["--hostname", installer.host_name])
ac7d03
-
ac7d03
-        if installer.password:
ac7d03
-            args.extend(["--password", installer.password])
ac7d03
-            nolog.append(installer.password)
ac7d03
-        else:
ac7d03
-            if installer.admin_password:
ac7d03
-                # Always set principal if password was set explicitly,
ac7d03
-                # the password itself gets passed directly via stdin
ac7d03
-                args.extend(["--principal", installer.principal or "admin"])
ac7d03
-                stdin = installer.admin_password
ac7d03
-            if installer.keytab:
ac7d03
-                args.extend(["--keytab", installer.keytab])
ac7d03
-
ac7d03
-        if installer.no_dns_sshfp:
ac7d03
-            args.append("--no-dns-sshfp")
ac7d03
-        if installer.ssh_trust_dns:
ac7d03
-            args.append("--ssh-trust-dns")
ac7d03
-        if installer.no_ssh:
ac7d03
-            args.append("--no-ssh")
ac7d03
-        if installer.no_sshd:
ac7d03
-            args.append("--no-sshd")
ac7d03
-        if installer.mkhomedir:
ac7d03
-            args.append("--mkhomedir")
ac7d03
-        if installer.force_join:
ac7d03
-            args.append("--force-join")
ac7d03
-
ac7d03
         ipautil.run(args, stdin=stdin, nolog=nolog, redirect_output=True)
ac7d03
         print()
ac7d03
-    except Exception:
ac7d03
+    except ipautil.CalledProcessError:
ac7d03
         raise ScriptError("Configuration of client side components failed!")
ac7d03
 
ac7d03
 
ac7d03
-- 
ac7d03
2.12.2
ac7d03