Blob Blame History Raw
From 03b38736eef95a430e74298642cec3701cabc8d7 Mon Sep 17 00:00:00 2001
From: Tomas Jelinek <tojeline@redhat.com>
Date: Tue, 2 Dec 2014 14:58:44 +0100
Subject: [PATCH] Improve error messages for scoped cib operations

---
 pcs/cluster.py | 11 +++++++++++
 pcs/utils.py   |  5 ++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/pcs/cluster.py b/pcs/cluster.py
index 8879316..9730e55 100644
--- a/pcs/cluster.py
+++ b/pcs/cluster.py
@@ -17,6 +17,7 @@ import tempfile
 import datetime
 import commands
 import json
+import xml.dom.minidom
 
 pcs_dir = os.path.dirname(os.path.realpath(__file__))
 COROSYNC_CONFIG_TEMPLATE = pcs_dir + "/corosync.conf.template"
@@ -667,6 +668,16 @@ def cluster_push(argv):
         usage.cluster(["cib-push"])
         sys.exit(1)
 
+    try:
+        new_cib_dom = xml.dom.minidom.parse(filename)
+        if scope and not new_cib_dom.getElementsByTagName(scope):
+            utils.err(
+                "unable to push cib, scope '%s' not present in new cib"
+                % scope
+            )
+    except (EnvironmentError, xml.parsers.expat.ExpatError) as e:
+        utils.err("unable to parse new cib: %s" % e)
+
     command = ["cibadmin", "--replace", "--xml-file", filename]
     if scope:
         command.append("--scope=%s" % scope)
diff --git a/pcs/utils.py b/pcs/utils.py
index 531b837..0e6c70c 100644
--- a/pcs/utils.py
+++ b/pcs/utils.py
@@ -1520,7 +1520,10 @@ def get_cib(scope=None):
         command.append("--scope=%s" % scope)
     output, retval = run(command)
     if retval != 0:
-        err("unable to get cib")
+        if retval == 6 and scope:
+            err("unable to get cib, scope '%s' not present in cib" % scope)
+        else:
+            err("unable to get cib")
     return output
 
 def get_cib_dom():
-- 
1.9.1