From 9f461f2ad2b11ca87ef1ce6ee381ccf31b703fc8 Mon Sep 17 00:00:00 2001
From: Luke Meyer <lmeyer@redhat.com>
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