Browse Source

Merge pull request #7113 from mgugino-upstream-stage/fix-etcd-scaleup-sanity

Fix etcd scaleup plays
Michael Gugino 7 years ago
parent
commit
cf6d85fca0

+ 1 - 0
playbooks/openshift-etcd/scaleup.yml

@@ -45,6 +45,7 @@
   vars:
     skip_version: True
     l_init_fact_hosts: "oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config:oo_new_etcd_to_config"
+    l_sanity_check_hosts: "{{ groups['oo_new_etcd_to_config'] | union(groups['oo_masters_to_config']) | union(groups['oo_etcd_to_config']) }}"
     l_openshift_version_set_hosts: "all:!all"
     l_openshift_version_check_hosts: "all:!all"
   when:

+ 18 - 1
roles/lib_utils/action_plugins/sanity_checks.py

@@ -54,6 +54,12 @@ class ActionModule(ActionBase):
     def template_var(self, hostvars, host, varname):
         """Retrieve a variable from hostvars and template it.
            If undefined, return None type."""
+        # We will set the current host and variable checked for easy debugging
+        # if there are any unhandled exceptions.
+        # pylint: disable=W0201
+        self.last_checked_var = varname
+        # pylint: disable=W0201
+        self.last_checked_host = host
         res = hostvars[host].get(varname)
         if res is None:
             return None
@@ -156,6 +162,11 @@ class ActionModule(ActionBase):
         # pylint: disable=W0201
         self.task_vars = task_vars or {}
 
+        # pylint: disable=W0201
+        self.last_checked_host = "none"
+        # pylint: disable=W0201
+        self.last_checked_var = "none"
+
         # self._task.args holds task parameters.
         # check_hosts is a parameter to this plugin, and should provide
         # a list of hosts.
@@ -172,7 +183,13 @@ class ActionModule(ActionBase):
 
         # We loop through each host in the provided list check_hosts
         for host in check_hosts:
-            self.run_checks(hostvars, host)
+            try:
+                self.run_checks(hostvars, host)
+            except Exception as uncaught_e:
+                msg = "last_checked_host: {}, last_checked_var: {};"
+                msg = msg.format(self.last_checked_host, self.last_checked_var)
+                msg += str(uncaught_e)
+                raise errors.AnsibleModuleError(msg)
 
         result["changed"] = False
         result["failed"] = False