diff options
Diffstat (limited to 'roles')
12 files changed, 89 insertions, 125 deletions
| diff --git a/roles/ansible_service_broker/tasks/install.yml b/roles/ansible_service_broker/tasks/install.yml index 1bc1b5e43..f869b5fae 100644 --- a/roles/ansible_service_broker/tasks/install.yml +++ b/roles/ansible_service_broker/tasks/install.yml @@ -375,6 +375,11 @@                    secret:                      secretName: etcd-auth-secret +- name: set auth name and type facts if needed +  set_fact: +    ansible_service_broker_registry_auth_type: "secret" +    ansible_service_broker_registry_auth_name: "asb-registry-auth" +  when: ansible_service_broker_registry_user != "" and ansible_service_broker_registry_password != ""  # TODO: saw a oc_configmap in the library, but didn't understand how to get it to do the following:  - name: Create config map for ansible-service-broker @@ -402,6 +407,8 @@                  org:  {{ ansible_service_broker_registry_organization }}                  tag:  {{ ansible_service_broker_registry_tag }}                  white_list: {{  ansible_service_broker_registry_whitelist | to_yaml }} +                auth_type: "{{ ansible_service_broker_registry_auth_type | default("") }}" +                auth_name: "{{ ansible_service_broker_registry_auth_name | default("") }}"                - type: local_openshift                  name: localregistry                  namespaces: ['openshift'] @@ -447,6 +454,7 @@          data: "{{ ansible_service_broker_registry_user }}"        - path: password          data: "{{ ansible_service_broker_registry_password }}" +  when: ansible_service_broker_registry_user != "" and ansible_service_broker_registry_password != ""  - name: Create the Broker resource in the catalog    oc_obj: diff --git a/roles/container_runtime/tasks/package_docker.yml b/roles/container_runtime/tasks/package_docker.yml index d6e7e7fed..ed9a2709b 100644 --- a/roles/container_runtime/tasks/package_docker.yml +++ b/roles/container_runtime/tasks/package_docker.yml @@ -1,6 +1,17 @@  ---  - include_tasks: common/pre.yml +# In some cases, some services may be run as containers and docker may still +# be installed via rpm. +- include_tasks: common/atomic_proxy.yml +  when: +  - > +    (openshift_use_system_containers | default(False)) | bool +    or (openshift_use_etcd_system_container | default(False)) | bool +    or (openshift_use_openvswitch_system_container | default(False)) | bool +    or (openshift_use_node_system_container | default(False)) | bool +    or (openshift_use_master_system_container | default(False)) | bool +  - name: Get current installed Docker version    command: "{{ repoquery_installed }} --qf '%{version}' docker"    when: not openshift_is_atomic | bool diff --git a/roles/openshift_health_checker/openshift_checks/__init__.py b/roles/openshift_health_checker/openshift_checks/__init__.py index 83e551b5d..b9c41d1b4 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,38 @@ 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)) + +        # map major release version across releases to OCP major version +        components[0] = {1: 3}.get(components[0], components[0]) + +        return tuple(int(x) for x in components[:2]) + +    def get_required_version(self, name, version_map): +        """Return the correct required version(s) for the current (or nearest) OpenShift version.""" +        openshift_version = self.get_major_minor_version() + +        earliest = min(version_map) +        latest = max(version_map) +        if openshift_version < earliest: +            return version_map[earliest] +        if openshift_version > latest: +            return version_map[latest] -        if components[0] in openshift_major_release_version: -            components[0] = openshift_major_release_version[components[0]] +        required_version = version_map.get(openshift_version) +        if not required_version: +            msg = "There is no recommended version of {} for the current version of OpenShift ({})" +            raise OpenShiftCheckException(msg.format(name, ".".join(str(comp) for comp in openshift_version))) -        components = tuple(int(x) for x in components[:2]) -        return components +        return required_version      def find_ansible_mount(self, path):          """Return the mount point for path from ansible_mounts.""" diff --git a/roles/openshift_health_checker/openshift_checks/logging/kibana.py b/roles/openshift_health_checker/openshift_checks/logging/kibana.py index 3b1cf8baa..16ec3a7f6 100644 --- a/roles/openshift_health_checker/openshift_checks/logging/kibana.py +++ b/roles/openshift_health_checker/openshift_checks/logging/kibana.py @@ -5,12 +5,11 @@ Module for performing checks on a Kibana logging deployment  import json  import ssl -try: -    from urllib2 import HTTPError, URLError -    import urllib2 -except ImportError: -    from urllib.error import HTTPError, URLError -    import urllib.request as urllib2 +# pylint can't find the package when its installed in virtualenv +# pylint: disable=import-error,no-name-in-module +from ansible.module_utils.six.moves.urllib import request +# pylint: disable=import-error,no-name-in-module +from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError  from openshift_checks.logging.logging import LoggingCheck, OpenShiftCheckException @@ -65,7 +64,7 @@ class Kibana(LoggingCheck):          # Verify that the url is returning a valid response          try:              # We only care if the url connects and responds -            return_code = urllib2.urlopen(url, context=ctx).getcode() +            return_code = request.urlopen(url, context=ctx).getcode()          except HTTPError as httperr:              return httperr.reason          except URLError as urlerr: diff --git a/roles/openshift_health_checker/openshift_checks/ovs_version.py b/roles/openshift_health_checker/openshift_checks/ovs_version.py index 0cad19842..58a2692bd 100644 --- a/roles/openshift_health_checker/openshift_checks/ovs_version.py +++ b/roles/openshift_health_checker/openshift_checks/ovs_version.py @@ -3,7 +3,7 @@ Ansible module for determining if an installed version of Open vSwitch is incomp  currently installed version of OpenShift.  """ -from openshift_checks import OpenShiftCheck, OpenShiftCheckException +from openshift_checks import OpenShiftCheck  from openshift_checks.mixins import NotContainerizedMixin @@ -16,10 +16,12 @@ class OvsVersion(NotContainerizedMixin, OpenShiftCheck):      tags = ["health"]      openshift_to_ovs_version = { -        "3.7": ["2.6", "2.7", "2.8"], -        "3.6": ["2.6", "2.7", "2.8"], -        "3.5": ["2.6", "2.7"], -        "3.4": "2.4", +        (3, 4): "2.4", +        (3, 5): ["2.6", "2.7"], +        (3, 6): ["2.6", "2.7", "2.8"], +        (3, 7): ["2.6", "2.7", "2.8"], +        (3, 8): ["2.6", "2.7", "2.8"], +        (3, 9): ["2.6", "2.7", "2.8"],      }      def is_active(self): @@ -40,16 +42,5 @@ class OvsVersion(NotContainerizedMixin, OpenShiftCheck):          return self.execute_module("rpm_version", args)      def get_required_ovs_version(self): -        """Return the correct Open vSwitch version for the current OpenShift version""" -        openshift_version_tuple = self.get_major_minor_version(self.get_var("openshift_image_tag")) - -        if openshift_version_tuple < (3, 5): -            return self.openshift_to_ovs_version["3.4"] - -        openshift_version = ".".join(str(x) for x in openshift_version_tuple) -        ovs_version = self.openshift_to_ovs_version.get(openshift_version) -        if ovs_version: -            return self.openshift_to_ovs_version[openshift_version] - -        msg = "There is no recommended version of Open vSwitch for the current version of OpenShift: {}" -        raise OpenShiftCheckException(msg.format(openshift_version)) +        """Return the correct Open vSwitch version(s) for the current OpenShift version.""" +        return self.get_required_version("Open vSwitch", self.openshift_to_ovs_version) diff --git a/roles/openshift_health_checker/openshift_checks/package_version.py b/roles/openshift_health_checker/openshift_checks/package_version.py index f3a628e28..28aee8b35 100644 --- a/roles/openshift_health_checker/openshift_checks/package_version.py +++ b/roles/openshift_health_checker/openshift_checks/package_version.py @@ -1,8 +1,6 @@  """Check that available RPM packages match the required versions.""" -import re - -from openshift_checks import OpenShiftCheck, OpenShiftCheckException +from openshift_checks import OpenShiftCheck  from openshift_checks.mixins import NotContainerizedMixin @@ -18,6 +16,8 @@ class PackageVersion(NotContainerizedMixin, OpenShiftCheck):          (3, 5): ["2.6", "2.7"],          (3, 6): ["2.6", "2.7", "2.8"],          (3, 7): ["2.6", "2.7", "2.8"], +        (3, 8): ["2.6", "2.7", "2.8"], +        (3, 9): ["2.6", "2.7", "2.8"],      }      openshift_to_docker_version = { @@ -27,11 +27,9 @@ class PackageVersion(NotContainerizedMixin, OpenShiftCheck):          (3, 4): "1.12",          (3, 5): "1.12",          (3, 6): "1.12", -    } - -    # map major OpenShift release versions across releases to a common major version -    map_major_release_version = { -        1: 3, +        (3, 7): "1.12", +        (3, 8): "1.12", +        (3, 9): ["1.12", "1.13"],      }      def is_active(self): @@ -83,48 +81,8 @@ 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() - -        earliest = min(self.openshift_to_ovs_version) -        latest = max(self.openshift_to_ovs_version) -        if openshift_version < earliest: -            return self.openshift_to_ovs_version[earliest] -        if openshift_version > latest: -            return self.openshift_to_ovs_version[latest] - -        ovs_version = self.openshift_to_ovs_version.get(openshift_version) -        if not ovs_version: -            msg = "There is no recommended version of Open vSwitch for the current version of OpenShift: {}" -            raise OpenShiftCheckException(msg.format(".".join(str(comp) for comp in openshift_version))) - -        return ovs_version +        return self.get_required_version("Open vSwitch", self.openshift_to_ovs_version)      def get_required_docker_version(self):          """Return the correct Docker version(s) for the current OpenShift version.""" -        openshift_version = self.get_openshift_version_tuple() - -        earliest = min(self.openshift_to_docker_version) -        latest = max(self.openshift_to_docker_version) -        if openshift_version < earliest: -            return self.openshift_to_docker_version[earliest] -        if openshift_version > latest: -            return self.openshift_to_docker_version[latest] - -        docker_version = self.openshift_to_docker_version.get(openshift_version) -        if not docker_version: -            msg = "There is no recommended version of Docker for the current version of OpenShift: {}" -            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]) +        return self.get_required_version("Docker", self.openshift_to_docker_version) diff --git a/roles/openshift_health_checker/test/kibana_test.py b/roles/openshift_health_checker/test/kibana_test.py index 04a5e89c4..750d4b9e9 100644 --- a/roles/openshift_health_checker/test/kibana_test.py +++ b/roles/openshift_health_checker/test/kibana_test.py @@ -1,12 +1,10 @@  import pytest  import json -try: -    import urllib2 -    from urllib2 import HTTPError, URLError -except ImportError: -    from urllib.error import HTTPError, URLError -    import urllib.request as urllib2 +# pylint can't find the package when its installed in virtualenv +from ansible.module_utils.six.moves.urllib import request  # pylint: disable=import-error +# pylint: disable=import-error +from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError  from openshift_checks.logging.kibana import Kibana, OpenShiftCheckException @@ -202,7 +200,7 @@ def test_verify_url_external_failure(lib_result, expect, monkeypatch):          if type(lib_result) is int:              return _http_return(lib_result)          raise lib_result -    monkeypatch.setattr(urllib2, 'urlopen', urlopen) +    monkeypatch.setattr(request, 'urlopen', urlopen)      check = Kibana()      check._get_kibana_url = lambda: 'url' diff --git a/roles/openshift_health_checker/test/ovs_version_test.py b/roles/openshift_health_checker/test/ovs_version_test.py index 0238f49d5..80c7a0541 100644 --- a/roles/openshift_health_checker/test/ovs_version_test.py +++ b/roles/openshift_health_checker/test/ovs_version_test.py @@ -1,26 +1,7 @@  import pytest -from openshift_checks.ovs_version import OvsVersion, OpenShiftCheckException - - -def test_openshift_version_not_supported(): -    def execute_module(*_): -        return {} - -    openshift_release = '111.7.0' - -    task_vars = dict( -        openshift=dict(common=dict()), -        openshift_release=openshift_release, -        openshift_image_tag='v' + openshift_release, -        openshift_deployment_type='origin', -        openshift_service_type='origin' -    ) - -    with pytest.raises(OpenShiftCheckException) as excinfo: -        OvsVersion(execute_module, task_vars).run() - -    assert "no recommended version of Open vSwitch" in str(excinfo.value) +from openshift_checks.ovs_version import OvsVersion +from openshift_checks import OpenShiftCheckException  def test_invalid_openshift_release_format(): diff --git a/roles/openshift_health_checker/test/package_version_test.py b/roles/openshift_health_checker/test/package_version_test.py index d2916f617..868b4bd12 100644 --- a/roles/openshift_health_checker/test/package_version_test.py +++ b/roles/openshift_health_checker/test/package_version_test.py @@ -1,6 +1,7 @@  import pytest -from openshift_checks.package_version import PackageVersion, OpenShiftCheckException +from openshift_checks.package_version import PackageVersion +from openshift_checks import OpenShiftCheckException  def task_vars_for(openshift_release, deployment_type): @@ -18,7 +19,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() diff --git a/roles/openshift_node/defaults/main.yml b/roles/openshift_node/defaults/main.yml index c1fab4382..0b10413c5 100644 --- a/roles/openshift_node/defaults/main.yml +++ b/roles/openshift_node/defaults/main.yml @@ -48,6 +48,12 @@ openshift_node_kubelet_args_dict:      cloud-config:      - "{{ openshift_config_base ~ '/cloudprovider/gce.conf' }}"      node-labels: "{{ l_node_kubelet_node_labels }}" +  azure: +    cloud-provider: +    - azure +    cloud-config: +    - "{{ openshift_config_base ~ '/cloudprovider/azure.conf' }}" +    node-labels: "{{ l_node_kubelet_node_labels }}"    undefined:      node-labels: "{{ l_node_kubelet_node_labels }}" diff --git a/roles/openshift_web_console/vars/default_images.yml b/roles/openshift_web_console/vars/default_images.yml index 7adb8a0d0..42d331ac5 100644 --- a/roles/openshift_web_console/vars/default_images.yml +++ b/roles/openshift_web_console/vars/default_images.yml @@ -1,4 +1,4 @@  --- -__openshift_web_console_prefix: "docker.io/openshift/" +__openshift_web_console_prefix: "docker.io/openshift/origin-"  __openshift_web_console_version: "latest" -__openshift_web_console_image_name: "origin-web-console" +__openshift_web_console_image_name: "web-console" diff --git a/roles/openshift_web_console/vars/openshift-enterprise.yml b/roles/openshift_web_console/vars/openshift-enterprise.yml index 721ac1d27..375c22067 100644 --- a/roles/openshift_web_console/vars/openshift-enterprise.yml +++ b/roles/openshift_web_console/vars/openshift-enterprise.yml @@ -1,4 +1,4 @@  --- -__openshift_web_console_prefix: "registry.access.redhat.com/openshift3/" +__openshift_web_console_prefix: "registry.access.redhat.com/openshift3/ose-"  __openshift_web_console_version: "v3.9" -__openshift_web_console_image_name: "ose-web-console" +__openshift_web_console_image_name: "web-console" | 
