Blame SOURCES/bz1284404-01-web-UI-fix-creating-a-new-cluster.patch

f778fe
From e0496566d2634ee6e37939a7fd9b2ee25539df46 Mon Sep 17 00:00:00 2001
f778fe
From: Ondrej Mular <omular@redhat.com>
f778fe
Date: Tue, 30 May 2017 16:46:48 +0200
f778fe
Subject: [PATCH] web UI: fix creating a new cluster
f778fe
f778fe
---
f778fe
 pcs/cli/common/parse_args.py |  2 +-
f778fe
 pcs/cluster.py               |  5 ++++-
f778fe
 pcs/pcsd.py                  | 12 +++++++++---
f778fe
 pcs/utils.py                 |  1 +
f778fe
 pcsd/pcs.rb                  |  3 ++-
f778fe
 pcsd/remote.rb               |  4 ++--
f778fe
 6 files changed, 19 insertions(+), 8 deletions(-)
f778fe
f778fe
diff --git a/pcs/cli/common/parse_args.py b/pcs/cli/common/parse_args.py
f778fe
index 465cb96..e2250c7 100644
f778fe
--- a/pcs/cli/common/parse_args.py
f778fe
+++ b/pcs/cli/common/parse_args.py
f778fe
@@ -17,7 +17,7 @@ PCS_SHORT_OPTIONS = "hf:p:u:V"
f778fe
 PCS_LONG_OPTIONS = [
f778fe
     "debug", "version", "help", "fullhelp",
f778fe
     "force", "skip-offline", "autocorrect", "interactive", "autodelete",
f778fe
-    "all", "full", "groups", "local", "wait", "config",
f778fe
+    "all", "full", "groups", "local", "wait", "config", "async",
f778fe
     "start", "enable", "disabled", "off", "request-timeout=",
f778fe
     "pacemaker", "corosync",
f778fe
     "no-default-ops", "defaults", "nodesc",
f778fe
diff --git a/pcs/cluster.py b/pcs/cluster.py
f778fe
index b47db4a..0fc5e2c 100644
f778fe
--- a/pcs/cluster.py
f778fe
+++ b/pcs/cluster.py
f778fe
@@ -298,6 +298,7 @@ def cluster_certkey(argv):
f778fe
 
f778fe
 
f778fe
 def cluster_setup(argv):
f778fe
+    modifiers = utils.get_modificators()
f778fe
     if len(argv) < 2:
f778fe
         usage.cluster(["setup"])
f778fe
         sys.exit(1)
f778fe
@@ -515,7 +516,9 @@ def cluster_setup(argv):
f778fe
 
f778fe
         # sync certificates as the last step because it restarts pcsd
f778fe
         print()
f778fe
-        pcsd.pcsd_sync_certs([], exit_after_error=False)
f778fe
+        pcsd.pcsd_sync_certs(
f778fe
+            [], exit_after_error=False, async_restart=modifiers["async"]
f778fe
+        )
f778fe
         if wait:
f778fe
             print()
f778fe
             wait_for_nodes_started(primary_addr_list, wait_timeout)
f778fe
diff --git a/pcs/pcsd.py b/pcs/pcsd.py
f778fe
index 629b4c0..7f7c660 100644
f778fe
--- a/pcs/pcsd.py
f778fe
+++ b/pcs/pcsd.py
f778fe
@@ -79,7 +79,7 @@ def pcsd_certkey(argv):
f778fe
 
f778fe
     print("Certificate and key updated, you may need to restart pcsd (service pcsd restart) for new settings to take effect")
f778fe
 
f778fe
-def pcsd_sync_certs(argv, exit_after_error=True):
f778fe
+def pcsd_sync_certs(argv, exit_after_error=True, async_restart=False):
f778fe
     error = False
f778fe
     nodes_sync = argv if argv else utils.getNodesFromCorosyncConf()
f778fe
     nodes_restart = []
f778fe
@@ -117,7 +117,9 @@ def pcsd_sync_certs(argv, exit_after_error=True):
f778fe
         return
f778fe
 
f778fe
     print("Restarting pcsd on the nodes in order to reload the certificates...")
f778fe
-    pcsd_restart_nodes(nodes_restart, exit_after_error)
f778fe
+    pcsd_restart_nodes(
f778fe
+        nodes_restart, exit_after_error, async_restart=async_restart
f778fe
+    )
f778fe
 
f778fe
 def pcsd_clear_auth(argv):
f778fe
     output = []
f778fe
@@ -148,7 +150,7 @@ def pcsd_clear_auth(argv):
f778fe
             print("Error: " + o)
f778fe
         sys.exit(1)
f778fe
 
f778fe
-def pcsd_restart_nodes(nodes, exit_after_error=True):
f778fe
+def pcsd_restart_nodes(nodes, exit_after_error=True, async_restart=False):
f778fe
     pcsd_data = {
f778fe
         "nodes": nodes,
f778fe
     }
f778fe
@@ -188,6 +190,10 @@ def pcsd_restart_nodes(nodes, exit_after_error=True):
f778fe
         utils.err("Unable to restart pcsd", exit_after_error)
f778fe
         return
f778fe
 
f778fe
+    if async_restart:
f778fe
+        print("Not waiting for restart of pcsd on all nodes.")
f778fe
+        return
f778fe
+
f778fe
     # check if the restart was performed already
f778fe
     error = False
f778fe
     for _ in range(5):
f778fe
diff --git a/pcs/utils.py b/pcs/utils.py
f778fe
index 4753b87..6515e5f 100644
f778fe
--- a/pcs/utils.py
f778fe
+++ b/pcs/utils.py
f778fe
@@ -2870,6 +2870,7 @@ def get_modificators():
f778fe
     return {
f778fe
         "after": pcs_options.get("--after", None),
f778fe
         "all": "--all" in pcs_options,
f778fe
+        "async": "--async" in pcs_options,
f778fe
         "autocorrect": "--autocorrect" in pcs_options,
f778fe
         "autodelete": "--autodelete" in pcs_options,
f778fe
         "before": pcs_options.get("--before", None),
f778fe
diff --git a/pcsd/pcs.rb b/pcsd/pcs.rb
f778fe
index 930b4a0..9764a43 100644
f778fe
--- a/pcsd/pcs.rb
f778fe
+++ b/pcsd/pcs.rb
f778fe
@@ -1034,7 +1034,8 @@ def pcsd_restart()
f778fe
   # request
f778fe
   fork {
f778fe
     # let us send the response to the restart request
f778fe
-    sleep(3)
f778fe
+    # we need little bit more time to finish some things when setting up cluster
f778fe
+    sleep(10)
f778fe
     if ISSYSTEMCTL
f778fe
       exec("systemctl", "restart", "pcsd")
f778fe
     else
f778fe
diff --git a/pcsd/remote.rb b/pcsd/remote.rb
f778fe
index 005d45e..f353980 100644
f778fe
--- a/pcsd/remote.rb
f778fe
+++ b/pcsd/remote.rb
f778fe
@@ -965,8 +965,8 @@ def setup_cluster(params, request, auth_user)
f778fe
   nodes_options = nodes + options
f778fe
   nodes_options += options_udp if transport_udp
f778fe
   stdout, stderr, retval = run_cmd(
f778fe
-    auth_user, PCS, "cluster", "setup", "--enable", "--start",
f778fe
-    "--name", params[:clustername], *nodes_options
f778fe
+    auth_user, PCS, "cluster", "setup", "--enable", "--start", "--async",
f778fe
+    "--name",  params[:clustername], *nodes_options
f778fe
   )
f778fe
   if retval != 0
f778fe
     return [
f778fe
-- 
f778fe
1.8.3.1
f778fe