diff options
author | Michael Gugino <mgugino@redhat.com> | 2018-02-12 12:22:32 -0500 |
---|---|---|
committer | Michael Gugino <mgugino@redhat.com> | 2018-02-12 12:22:32 -0500 |
commit | a043ba9e9951d091f66d00ed88ad05b66c3f3c63 (patch) | |
tree | 790a014325faca3096fac0045e341e584455760c | |
parent | b7cc4a8414f7aa51fab0898ec23cefa7717b62b2 (diff) | |
download | openshift-a043ba9e9951d091f66d00ed88ad05b66c3f3c63.tar.gz openshift-a043ba9e9951d091f66d00ed88ad05b66c3f3c63.tar.bz2 openshift-a043ba9e9951d091f66d00ed88ad05b66c3f3c63.tar.xz openshift-a043ba9e9951d091f66d00ed88ad05b66c3f3c63.zip |
Fix etcd scaleup plays
This commit ensures that only the proper host groups
have sanity checks run during etcd scaleup.
This commit also adds additional debugging statements
to sanity_checks.py to make it easier to debug when
an error occurs.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1543771
-rw-r--r-- | playbooks/openshift-etcd/scaleup.yml | 1 | ||||
-rw-r--r-- | roles/lib_utils/action_plugins/sanity_checks.py | 19 |
2 files changed, 19 insertions, 1 deletions
diff --git a/playbooks/openshift-etcd/scaleup.yml b/playbooks/openshift-etcd/scaleup.yml index 3e2fca8d4..1b2229baa 100644 --- a/playbooks/openshift-etcd/scaleup.yml +++ b/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: diff --git a/roles/lib_utils/action_plugins/sanity_checks.py b/roles/lib_utils/action_plugins/sanity_checks.py index 09ce55e8f..ce54debc2 100644 --- a/roles/lib_utils/action_plugins/sanity_checks.py +++ b/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 |