diff options
| -rw-r--r-- | roles/openshift_health_checker/openshift_checks/docker_image_availability.py | 21 | ||||
| -rw-r--r-- | roles/openshift_health_checker/test/docker_image_availability_test.py | 39 | 
2 files changed, 47 insertions, 13 deletions
| diff --git a/roles/openshift_health_checker/openshift_checks/docker_image_availability.py b/roles/openshift_health_checker/openshift_checks/docker_image_availability.py index d298fbab2..145b82491 100644 --- a/roles/openshift_health_checker/openshift_checks/docker_image_availability.py +++ b/roles/openshift_health_checker/openshift_checks/docker_image_availability.py @@ -171,16 +171,21 @@ class DockerImageAvailability(DockerHostMixin, OpenShiftCheck):                  required.add(self._registry_console_image(image_tag, image_info))          # images for containerized components -        if self.get_var("openshift_is_containerized"): -            components = set() +        def add_var_or_default_img(var_name, comp_name): +            """Returns: default image from comp_name, overridden by var_name in task_vars""" +            default = "{}/{}:{}".format(image_info["namespace"], comp_name, image_tag) +            required.add(self.template_var(self.get_var(var_name, default=default))) + +        if self.get_var("openshift_is_containerized", convert=bool):              if 'oo_nodes_to_config' in host_groups: -                components.update(["node", "openvswitch"]) +                add_var_or_default_img("osn_image", "node") +                add_var_or_default_img("osn_ovs_image", "openvswitch")              if 'oo_masters_to_config' in host_groups:  # name is "origin" or "ose" -                components.add(image_info["name"]) -            for component in components: -                required.add("{}/{}:{}".format(image_info["namespace"], component, image_tag)) -            if 'oo_etcd_to_config' in host_groups:  # special case, note it is the same for origin/enterprise -                required.add("registry.access.redhat.com/rhel7/etcd")  # and no image tag +                add_var_or_default_img("osm_image", image_info["name"]) +            if 'oo_etcd_to_config' in host_groups: +                # special case, note default is the same for origin/enterprise and has no image tag +                etcd_img = self.get_var("osm_etcd_image", default="registry.access.redhat.com/rhel7/etcd") +                required.add(self.template_var(etcd_img))          return required diff --git a/roles/openshift_health_checker/test/docker_image_availability_test.py b/roles/openshift_health_checker/test/docker_image_availability_test.py index 9fd6e049d..d31f263dd 100644 --- a/roles/openshift_health_checker/test/docker_image_availability_test.py +++ b/roles/openshift_health_checker/test/docker_image_availability_test.py @@ -276,11 +276,40 @@ def test_registry_console_image(task_vars, expected):      assert expected == DockerImageAvailability(task_vars=task_vars)._registry_console_image(tag, info) -def test_containerized_etcd(): -    task_vars = dict( +@pytest.mark.parametrize("task_vars, expected", [ +    ( +        dict( +            group_names=['oo_nodes_to_config'], +            osn_ovs_image='spam/ovs', +            openshift_image_tag="veggs", +        ), +        set([ +            'spam/ovs', 'openshift/node:veggs', 'cockpit/kubernetes:latest', +            'openshift/origin-haproxy-router:veggs', 'openshift/origin-deployer:veggs', +            'openshift/origin-docker-registry:veggs', 'openshift/origin-pod:veggs', +        ]), +    ), ( +        dict( +            group_names=['oo_masters_to_config'], +        ), +        set(['openshift/origin:latest']), +    ), ( +        dict( +            group_names=['oo_etcd_to_config'], +        ), +        set(['registry.access.redhat.com/rhel7/etcd']), +    ), ( +        dict( +            group_names=['oo_etcd_to_config'], +            osm_etcd_image='spam/etcd', +        ), +        set(['spam/etcd']), +    ), +]) +def test_containerized(task_vars, expected): +    task_vars.update(dict(          openshift_is_containerized=True,          openshift_deployment_type="origin", -        group_names=['oo_etcd_to_config'], -    ) -    expected = set(['registry.access.redhat.com/rhel7/etcd']) +    )) +      assert expected == DockerImageAvailability(task_vars=task_vars).required_images() | 
