From 9f461f2ad2b11ca87ef1ce6ee381ccf31b703fc8 Mon Sep 17 00:00:00 2001 From: Luke Meyer Date: Wed, 17 Jan 2018 09:18:36 -0500 Subject: package_version check: reuse get_major_minor_version --- .../openshift_checks/__init__.py | 25 ++++++++-------------- .../openshift_checks/package_version.py | 23 ++------------------ .../test/package_version_test.py | 2 +- 3 files changed, 12 insertions(+), 38 deletions(-) (limited to 'roles/openshift_health_checker') diff --git a/roles/openshift_health_checker/openshift_checks/__init__.py b/roles/openshift_health_checker/openshift_checks/__init__.py index 83e551b5d..8c3d71ca9 100644 --- a/roles/openshift_health_checker/openshift_checks/__init__.py +++ b/roles/openshift_health_checker/openshift_checks/__init__.py @@ -5,6 +5,7 @@ Health checks for OpenShift clusters. import json import operator import os +import re import time import collections @@ -309,28 +310,20 @@ class OpenShiftCheck(object): name_list = name_list.split(',') return [name.strip() for name in name_list if name.strip()] - @staticmethod - def get_major_minor_version(openshift_image_tag): + def get_major_minor_version(self, openshift_image_tag=None): """Parse and return the deployed version of OpenShift as a tuple.""" - if openshift_image_tag and openshift_image_tag[0] == 'v': - openshift_image_tag = openshift_image_tag[1:] - # map major release versions across releases - # to a common major version - openshift_major_release_version = { - "1": "3", - } + version = openshift_image_tag or self.get_var("openshift_image_tag") + components = [int(component) for component in re.findall(r'\d+', version)] - components = openshift_image_tag.split(".") - if not components or len(components) < 2: + if len(components) < 2: msg = "An invalid version of OpenShift was found for this host: {}" - raise OpenShiftCheckException(msg.format(openshift_image_tag)) + raise OpenShiftCheckException(msg.format(version)) - if components[0] in openshift_major_release_version: - components[0] = openshift_major_release_version[components[0]] + # map major release version across releases to OCP major version + components[0] = {1: 3}.get(components[0], components[0]) - components = tuple(int(x) for x in components[:2]) - return components + return tuple(int(x) for x in components[:2]) def find_ansible_mount(self, path): """Return the mount point for path from ansible_mounts.""" diff --git a/roles/openshift_health_checker/openshift_checks/package_version.py b/roles/openshift_health_checker/openshift_checks/package_version.py index f3a628e28..5417a383a 100644 --- a/roles/openshift_health_checker/openshift_checks/package_version.py +++ b/roles/openshift_health_checker/openshift_checks/package_version.py @@ -1,7 +1,5 @@ """Check that available RPM packages match the required versions.""" -import re - from openshift_checks import OpenShiftCheck, OpenShiftCheckException from openshift_checks.mixins import NotContainerizedMixin @@ -29,11 +27,6 @@ class PackageVersion(NotContainerizedMixin, OpenShiftCheck): (3, 6): "1.12", } - # map major OpenShift release versions across releases to a common major version - map_major_release_version = { - 1: 3, - } - def is_active(self): """Skip hosts that do not have package requirements.""" group_names = self.get_var("group_names", default=[]) @@ -83,7 +76,7 @@ class PackageVersion(NotContainerizedMixin, OpenShiftCheck): def get_required_ovs_version(self): """Return the correct Open vSwitch version(s) for the current OpenShift version.""" - openshift_version = self.get_openshift_version_tuple() + openshift_version = self.get_major_minor_version() earliest = min(self.openshift_to_ovs_version) latest = max(self.openshift_to_ovs_version) @@ -101,7 +94,7 @@ class PackageVersion(NotContainerizedMixin, OpenShiftCheck): def get_required_docker_version(self): """Return the correct Docker version(s) for the current OpenShift version.""" - openshift_version = self.get_openshift_version_tuple() + openshift_version = self.get_major_minor_version() earliest = min(self.openshift_to_docker_version) latest = max(self.openshift_to_docker_version) @@ -116,15 +109,3 @@ class PackageVersion(NotContainerizedMixin, OpenShiftCheck): raise OpenShiftCheckException(msg.format(".".join(str(comp) for comp in openshift_version))) return docker_version - - def get_openshift_version_tuple(self): - """Return received image tag as a normalized (X, Y) minor version tuple.""" - version = self.get_var("openshift_image_tag") - comps = [int(component) for component in re.findall(r'\d+', version)] - - if len(comps) < 2: - msg = "An invalid version of OpenShift was found for this host: {}" - raise OpenShiftCheckException(msg.format(version)) - - comps[0] = self.map_major_release_version.get(comps[0], comps[0]) - return tuple(comps[0:2]) diff --git a/roles/openshift_health_checker/test/package_version_test.py b/roles/openshift_health_checker/test/package_version_test.py index d2916f617..8fcf9927d 100644 --- a/roles/openshift_health_checker/test/package_version_test.py +++ b/roles/openshift_health_checker/test/package_version_test.py @@ -18,7 +18,7 @@ def task_vars_for(openshift_release, deployment_type): def test_openshift_version_not_supported(): check = PackageVersion(None, task_vars_for("1.2.3", 'origin')) - check.get_openshift_version_tuple = lambda: (3, 4, 1) # won't be in the dict + check.get_major_minor_version = lambda: (3, 4, 1) # won't be in the dict with pytest.raises(OpenShiftCheckException) as excinfo: check.get_required_ovs_version() -- cgit v1.2.3