summaryrefslogtreecommitdiffstats
path: root/roles/openshift_health_checker/openshift_checks/package_version.py
diff options
context:
space:
mode:
authorRodolfo Carvalho <rhcarvalho@gmail.com>2017-01-30 18:29:06 +0100
committerRodolfo Carvalho <rhcarvalho@gmail.com>2017-02-10 14:46:40 +0100
commitbb38413fcec7fb2640939782d57e494b40e3b41e (patch)
tree89e589859935e059d899a8bc357206c6891901b2 /roles/openshift_health_checker/openshift_checks/package_version.py
parentc6ef283bbcd1ab31934fb245d0c8ffacfd05bce1 (diff)
downloadopenshift-bb38413fcec7fb2640939782d57e494b40e3b41e.tar.gz
openshift-bb38413fcec7fb2640939782d57e494b40e3b41e.tar.bz2
openshift-bb38413fcec7fb2640939782d57e494b40e3b41e.tar.xz
openshift-bb38413fcec7fb2640939782d57e494b40e3b41e.zip
Replace multi-role checks with action plugin
This approach should make it easier to add new checks without having to write lots of YAML and doing things against Ansible (e.g. ignore_errors). A single action plugin determines what checks to run per each host, including arguments to the check. A check is implemented as a class with a run method, with the same signature as an action plugin and module, and is normally backed by a regular Ansible module. Each check is implemented as a separate Python file. This allows whoever adds a new check to focus solely in a single Python module, and potentially an Ansible module within library/ too. All checks are automatically loaded, and only active checks that are requested by the playbook get executed.
Diffstat (limited to 'roles/openshift_health_checker/openshift_checks/package_version.py')
-rw-r--r--roles/openshift_health_checker/openshift_checks/package_version.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/roles/openshift_health_checker/openshift_checks/package_version.py b/roles/openshift_health_checker/openshift_checks/package_version.py
new file mode 100644
index 000000000..a473119f3
--- /dev/null
+++ b/roles/openshift_health_checker/openshift_checks/package_version.py
@@ -0,0 +1,25 @@
+# pylint: disable=missing-docstring
+from openshift_checks import OpenShiftCheck, OpenShiftCheckException
+from openshift_checks.mixins import NotContainerized
+
+
+class PackageVersion(NotContainerized, OpenShiftCheck):
+ """Check that available RPM packages match the required versions."""
+
+ name = "package_version"
+
+ @classmethod
+ def is_active(cls, task_vars):
+ return (
+ super(PackageVersion, cls).is_active(task_vars)
+ and task_vars.get("deployment_type") == "openshift-enterprise"
+ )
+
+ def run(self, tmp, task_vars):
+ try:
+ openshift_release = task_vars["openshift_release"]
+ except (KeyError, TypeError):
+ raise OpenShiftCheckException("'openshift_release' is undefined")
+
+ args = {"version": openshift_release}
+ return self.module_executor("aos_version", args, tmp, task_vars)