def test_no_known_registries():
    def execute_module(module_name=None, *_):
        if module_name == "command":
            return {
                'failed': True,
            }

        return {
            'changed': False,
        }

    def mock_known_docker_registries():
        return []

    dia = DockerImageAvailability(execute_module, task_vars=dict(
        openshift=dict(
            common=dict(
                service_type='origin',
                is_containerized=False,
                is_atomic=False,
            ),
            docker=dict(additional_registries=["docker.io"]),
        ),
        openshift_deployment_type="openshift-enterprise",
        openshift_image_tag='latest',
        group_names=['nodes', 'masters'],
    ))
    dia.known_docker_registries = mock_known_docker_registries
    actual = dia.run()
    assert actual['failed']
    assert "Unable to retrieve any docker registries." in actual['msg']
def test_docker_image_availability(task_vars, expected_result):
    def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
        return {'info': {}}  # TODO: this will vary depending on input parameters.

    check = DockerImageAvailability(execute_module=execute_module)
    result = check.run(tmp=None, task_vars=task_vars)
    assert result == expected_result
def test_all_images_available_remotely(available_locally):
    def execute_module(module_name, args, task_vars):
        if module_name == 'docker_image_facts':
            return {'images': [], 'failed': available_locally}
        return {'changed': False}

    result = DockerImageAvailability(execute_module=execute_module).run(
        tmp=None,
        task_vars=dict(
            openshift=dict(
                common=dict(
                    service_type='origin',
                    is_containerized=False,
                    is_atomic=False,
                ),
                docker=dict(additional_registries=[
                    "docker.io", "registry.access.redhat.com"
                ]),
            ),
            openshift_deployment_type='origin',
            openshift_release='3.4',
            openshift_image_tag='v3.4',
        ))

    assert not result.get('failed', False)
def test_no_known_registries():
    def execute_module(module_name=None, *_):
        if module_name == "command":
            return {
                'failed': True,
            }

        return {
            'changed': False,
        }

    def mock_known_docker_registries():
        return []

    dia = DockerImageAvailability(
        execute_module,
        task_vars=dict(
            openshift=dict(common=dict(
                service_type='origin',
                is_containerized=False,
                is_atomic=False,
            )),
            openshift_docker_additional_registries=["docker.io"],
            openshift_deployment_type="openshift-enterprise",
            openshift_image_tag='latest',
            group_names=['nodes', 'masters'],
        ))
    dia.known_docker_registries = mock_known_docker_registries
    actual = dia.run()
    assert actual['failed']
    assert "Unable to retrieve any docker registries." in actual['msg']
def test_all_images_available_locally(is_containerized, is_atomic):
    def execute_module(module_name, args, task_vars):
        if module_name == "yum":
            return {"changed": True}

        assert module_name == "docker_image_facts"
        assert 'name' in args
        assert args['name']
        return {
            'images': [args['name']],
        }

    result = DockerImageAvailability(execute_module=execute_module).run(
        tmp=None,
        task_vars=dict(
            openshift=dict(
                common=dict(
                    service_type='origin',
                    is_containerized=is_containerized,
                    is_atomic=is_atomic,
                ),
                docker=dict(additional_registries=["docker.io"]),
            ),
            openshift_deployment_type='origin',
            openshift_release='v3.4',
            openshift_image_tag='3.4',
        ))

    assert not result.get('failed', False)
def test_all_images_unavailable():
    def execute_module(module_name=None,
                       module_args=None,
                       tmp=None,
                       task_vars=None):
        if module_name == "command":
            return {
                'failed': True,
            }

        return {
            'changed': False,
        }

    check = DockerImageAvailability(execute_module=execute_module)
    actual = check.run(
        tmp=None,
        task_vars=dict(openshift=dict(
            common=dict(
                service_type='origin',
                is_containerized=False,
                is_atomic=False,
            ),
            docker=dict(additional_registries=["docker.io"]),
        ),
                       openshift_deployment_type="openshift-enterprise",
                       openshift_release=None,
                       openshift_image_tag='latest'))

    assert actual['failed']
    assert "required Docker images are not available" in actual['msg']
def test_registry_availability(deployment_type, registries):
    def execute_module(module_name=None,
                       module_args=None,
                       tmp=None,
                       task_vars=None):
        return {
            'changed': False,
        }

    actual = DockerImageAvailability(execute_module=execute_module).run(
        tmp=None,
        task_vars=dict(
            openshift=dict(
                common=dict(
                    service_type='origin',
                    is_containerized=False,
                    is_atomic=False,
                ),
                docker=dict(additional_registries=registries),
            ),
            openshift_deployment_type=deployment_type,
            openshift_release='',
            openshift_image_tag='',
        ))

    assert not actual.get("failed", False)
def test_all_images_unavailable():
    def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
        if module_name == "command":
            return {
                'failed': True,
            }

        return {
            'changed': False,
        }

    check = DockerImageAvailability(execute_module=execute_module)
    actual = check.run(tmp=None, task_vars=dict(
        openshift=dict(
            common=dict(
                service_type='origin',
                is_containerized=False,
                is_atomic=False,
            ),
            docker=dict(additional_registries=["docker.io"]),
        ),
        openshift_deployment_type="openshift-enterprise",
        openshift_image_tag='latest',
        group_names=['nodes', 'masters'],
    ))

    assert actual['failed']
    assert "required Docker images are not available" in actual['msg']
def test_all_images_available_locally(is_containerized, is_atomic):
    def execute_module(module_name, module_args, task_vars):
        if module_name == "yum":
            return {"changed": True}

        assert module_name == "docker_image_facts"
        assert 'name' in module_args
        assert module_args['name']
        return {
            'images': [module_args['name']],
        }

    result = DockerImageAvailability(execute_module=execute_module).run(tmp=None, task_vars=dict(
        openshift=dict(
            common=dict(
                service_type='origin',
                is_containerized=is_containerized,
                is_atomic=is_atomic,
            ),
            docker=dict(additional_registries=["docker.io"]),
        ),
        openshift_deployment_type='origin',
        openshift_image_tag='3.4',
        group_names=['nodes', 'masters'],
    ))

    assert not result.get('failed', False)
Ejemplo n.º 10
0
def test_available_images():
    images = ['image1', 'image2']
    dia = DockerImageAvailability(task_vars={})

    with patch('openshift_checks.docker_image_availability.DockerImageAvailability.is_available_skopeo_image') as call_mock:
        call_mock.return_value = True

        images_available = dia.available_images(images)
        assert images_available == images
Ejemplo n.º 11
0
def test_docker_image_availability(task_vars, expected_result):
    def execute_module(module_name=None,
                       module_args=None,
                       tmp=None,
                       task_vars=None):
        return {
            'info': {}
        }  # TODO: this will vary depending on input parameters.

    check = DockerImageAvailability(execute_module=execute_module)
    result = check.run(tmp=None, task_vars=task_vars)
    assert result == expected_result
Ejemplo n.º 12
0
def test_all_images_available_remotely(task_vars, available_locally):
    def execute_module(module_name, *_):
        if module_name == 'docker_image_facts':
            return {'images': [], 'failed': available_locally}
        return {}

    task_vars['openshift_docker_additional_registries'] = ["docker.io", "registry.access.redhat.com"]
    task_vars['openshift_image_tag'] = 'v3.4'
    check = DockerImageAvailability(execute_module, task_vars)
    check._module_retry_interval = 0
    result = check.run()

    assert not result.get('failed', False)
def test_all_images_available_remotely(task_vars, available_locally):
    def execute_module(module_name, *_):
        if module_name == 'docker_image_facts':
            return {'images': [], 'failed': available_locally}
        return {}

    task_vars['openshift_docker_additional_registries'] = ["docker.io", "registry.access.redhat.com"]
    task_vars['openshift_image_tag'] = 'v3.4'
    check = DockerImageAvailability(execute_module, task_vars)
    check._module_retry_interval = 0
    result = check.run()

    assert not result.get('failed', False)
def test_registry_availability(image, registries, connection_test_failed, skopeo_failed,
                               expect_success, expect_registries_reached):
    def execute_module(module_name=None, *_):
        if module_name == "wait_for":
            return dict(msg="msg", failed=connection_test_failed)
        elif module_name == "command":
            return dict(msg="msg", failed=skopeo_failed)

    check = DockerImageAvailability(execute_module, task_vars())
    check._module_retry_interval = 0

    available = check.is_available_skopeo_image(image, registries)
    assert available == expect_success
    assert expect_registries_reached == check.reachable_registries
def test_registry_availability(image, registries, connection_test_failed,
                               skopeo_failed, expect_success,
                               expect_registries_reached):
    def execute_module(module_name=None, *_):
        if module_name == "wait_for":
            return dict(msg="msg", failed=connection_test_failed)
        elif module_name == "command":
            return dict(msg="msg", failed=skopeo_failed)

    check = DockerImageAvailability(execute_module, task_vars())
    check._module_retry_interval = 0

    available = check.is_available_skopeo_image(image, registries)
    assert available == expect_success
    assert expect_registries_reached == check.reachable_registries
def test_skopeo_update_failure(message, extra_words):
    def execute_module(module_name=None,
                       module_args=None,
                       tmp=None,
                       task_vars=None):
        if module_name == "yum":
            return {
                "failed": True,
                "msg": message,
                "changed": False,
            }

        return {'changed': False}

    actual = DockerImageAvailability(execute_module=execute_module).run(
        tmp=None,
        task_vars=dict(
            openshift=dict(
                common=dict(
                    service_type='origin',
                    is_containerized=False,
                    is_atomic=False,
                ),
                docker=dict(additional_registries=["unknown.io"]),
            ),
            openshift_deployment_type="openshift-enterprise",
            openshift_release='',
            openshift_image_tag='',
        ))

    assert actual["failed"]
    for word in extra_words:
        assert word in actual["msg"]
Ejemplo n.º 17
0
def test_all_images_available_locally(task_vars, openshift_is_atomic):
    def execute_module(module_name, module_args, *_):
        if module_name == "yum":
            return {}

        assert module_name == "docker_image_facts"
        assert 'name' in module_args
        assert module_args['name']
        return {
            'images': [module_args['name']],
        }

    task_vars['openshift_is_atomic'] = openshift_is_atomic
    result = DockerImageAvailability(execute_module, task_vars).run()

    assert not result.get('failed', False)
def test_is_active(deployment_type, is_containerized, group_names, expect_active):
    task_vars = dict(
        openshift=dict(common=dict(is_containerized=is_containerized)),
        openshift_deployment_type=deployment_type,
        group_names=group_names,
    )
    assert DockerImageAvailability.is_active(task_vars=task_vars) == expect_active
def test_all_images_available_locally(task_vars, openshift_is_atomic):
    def execute_module(module_name, module_args, *_):
        if module_name == "yum":
            return {}

        assert module_name == "docker_image_facts"
        assert 'name' in module_args
        assert module_args['name']
        return {
            'images': [module_args['name']],
        }

    task_vars['openshift_is_atomic'] = openshift_is_atomic
    result = DockerImageAvailability(execute_module, task_vars).run()

    assert not result.get('failed', False)
Ejemplo n.º 20
0
def test_is_active(task_vars, deployment_type, openshift_is_atomic,
                   group_names, expect_active):
    task_vars['openshift_deployment_type'] = deployment_type
    task_vars['openshift_is_atomic'] = openshift_is_atomic
    task_vars['group_names'] = group_names
    assert DockerImageAvailability(None,
                                   task_vars).is_active() == expect_active
def test_containerized(task_vars, expected):
    task_vars.update(dict(
        openshift_is_containerized=True,
        openshift_deployment_type="origin",
    ))

    assert expected == DockerImageAvailability(task_vars=task_vars).required_images()
def test_is_active(task_vars, deployment_type, is_containerized, group_names,
                   expect_active):
    task_vars['openshift_deployment_type'] = deployment_type
    task_vars['openshift']['common']['is_containerized'] = is_containerized
    task_vars['group_names'] = group_names
    assert DockerImageAvailability(None,
                                   task_vars).is_active() == expect_active
Ejemplo n.º 23
0
def test_containerized_etcd():
    task_vars = 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()
def test_containerized(task_vars, expected):
    task_vars.update(dict(
        openshift_is_atomic=True,
        oreg_url="docker.io/openshift/origin-${component}:${version}",
        openshift_deployment_type="origin",
    ))

    assert expected == DockerImageAvailability(task_vars=task_vars).required_images()
def test_is_active(deployment_type, is_containerized, group_names,
                   expect_active):
    task_vars = dict(
        openshift=dict(common=dict(is_containerized=is_containerized)),
        openshift_deployment_type=deployment_type,
        group_names=group_names,
    )
    assert DockerImageAvailability.is_active(
        task_vars=task_vars) == expect_active
def test_all_images_unavailable(task_vars):
    def execute_module(module_name=None, *args):
        if module_name == "wait_for":
            return {}
        elif module_name == "command":
            return {'failed': True}

        return {}  # docker_image_facts failure

    task_vars['openshift_docker_additional_registries'] = ["docker.io"]
    task_vars['openshift_deployment_type'] = "openshift-enterprise"
    task_vars['openshift_image_tag'] = 'latest'
    check = DockerImageAvailability(execute_module, task_vars)
    check._module_retry_interval = 0
    actual = check.run()

    assert actual['failed']
    assert "required container images are not available" in actual['msg']
Ejemplo n.º 27
0
def test_all_images_unavailable(task_vars):
    def execute_module(module_name=None, *args):
        if module_name == "wait_for":
            return {}
        elif module_name == "command":
            return {'failed': True}

        return {}  # docker_image_facts failure

    task_vars['openshift_docker_additional_registries'] = ["docker.io"]
    task_vars['openshift_deployment_type'] = "openshift-enterprise"
    task_vars['openshift_image_tag'] = 'latest'
    check = DockerImageAvailability(execute_module, task_vars)
    check._module_retry_interval = 0
    actual = check.run()

    assert actual['failed']
    assert "required container images are not available" in actual['msg']
def test_skopeo_update_failure(task_vars, message, extra_words):
    def execute_module(module_name=None, *_):
        if module_name == "yum":
            return {
                "failed": True,
                "msg": message,
            }

        return {}

    task_vars['openshift_docker_additional_registries'] = ["unknown.io"]
    task_vars['openshift_deployment_type'] = "openshift-enterprise"
    check = DockerImageAvailability(execute_module, task_vars)
    check._module_retry_interval = 0
    actual = check.run()

    assert actual["failed"]
    for word in extra_words:
        assert word in actual["msg"]
Ejemplo n.º 29
0
def test_skopeo_update_failure(task_vars, message, extra_words):
    def execute_module(module_name=None, *_):
        if module_name == "yum":
            return {
                "failed": True,
                "msg": message,
            }

        return {}

    task_vars['openshift_docker_additional_registries'] = ["unknown.io"]
    task_vars['openshift_deployment_type'] = "openshift-enterprise"
    check = DockerImageAvailability(execute_module, task_vars)
    check._module_retry_interval = 0
    actual = check.run()

    assert actual["failed"]
    for word in extra_words:
        assert word in actual["msg"]
def test_required_images(deployment_type, openshift_is_atomic, groups, oreg_url, expected):
    task_vars = dict(
        openshift_is_atomic=openshift_is_atomic,
        openshift_deployment_type=deployment_type,
        group_names=groups,
        oreg_url=oreg_url,
        openshift_image_tag='vtest',
        osn_image='registry.access.redhat.com/openshift3/ose-node:vtest',
    )

    assert expected == DockerImageAvailability(task_vars=task_vars).required_images()
Ejemplo n.º 31
0
def test_required_images(deployment_type, openshift_is_containerized, groups, oreg_url, expected):
    task_vars = dict(
        openshift_is_containerized=openshift_is_containerized,
        openshift_is_atomic=False,
        openshift_deployment_type=deployment_type,
        group_names=groups,
        oreg_url=oreg_url,
        openshift_image_tag='vtest',
    )

    assert expected == DockerImageAvailability(task_vars=task_vars).required_images()
def test_registry_availability(deployment_type, registries):
    def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
        return {
            'changed': False,
        }

    actual = DockerImageAvailability(execute_module=execute_module).run(tmp=None, task_vars=dict(
        openshift=dict(
            common=dict(
                service_type='origin',
                is_containerized=False,
                is_atomic=False,
            ),
            docker=dict(additional_registries=registries),
        ),
        openshift_deployment_type=deployment_type,
        openshift_image_tag='',
        group_names=['nodes', 'masters'],
    ))

    assert not actual.get("failed", False)
def test_all_images_available_remotely(available_locally):
    def execute_module(module_name, module_args, task_vars):
        if module_name == 'docker_image_facts':
            return {'images': [], 'failed': available_locally}
        return {'changed': False}

    result = DockerImageAvailability(execute_module=execute_module).run(tmp=None, task_vars=dict(
        openshift=dict(
            common=dict(
                service_type='origin',
                is_containerized=False,
                is_atomic=False,
            ),
            docker=dict(additional_registries=["docker.io", "registry.access.redhat.com"]),
        ),
        openshift_deployment_type='origin',
        openshift_image_tag='v3.4',
        group_names=['nodes', 'masters'],
    ))

    assert not result.get('failed', False)
def test_is_available_skopeo_image():
    result = {'rc': 0}
    # test unauth secure and insecure
    openshift_docker_insecure_registries = ['insecure.redhat.io']
    task_vars = {
        'openshift_docker_insecure_registries':
        openshift_docker_insecure_registries
    }
    dia = DockerImageAvailability(task_vars=task_vars)
    with patch.object(DockerImageAvailability,
                      'execute_module_with_retries') as m1:
        m1.return_value = result
        assert dia.is_available_skopeo_image(
            'registry.redhat.io/openshift3/ose-pod') is True
        m1.assert_called_with(
            'command', {
                '_uses_shell':
                True,
                '_raw_params':
                ' timeout 30 skopeo --debug inspect --tls-verify=true  docker://registry.redhat.io/openshift3/ose-pod'
            })
        assert dia.is_available_skopeo_image(
            'insecure.redhat.io/openshift3/ose-pod') is True
        m1.assert_called_with(
            'command', {
                '_uses_shell':
                True,
                '_raw_params':
                ' timeout 30 skopeo --debug inspect --tls-verify=false  docker://insecure.redhat.io/openshift3/ose-pod'
            })

    # test auth
    task_vars = {
        'oreg_auth_user': '******',
        'oreg_auth_password': '******'
    }
    dia = DockerImageAvailability(task_vars=task_vars)
    with patch.object(DockerImageAvailability,
                      'execute_module_with_retries') as m1:
        m1.return_value = result
        assert dia.is_available_skopeo_image(
            'registry.redhat.io/openshift3/ose-pod') is True
        m1.assert_called_with(
            'command', {
                '_uses_shell':
                True,
                '_raw_params':
                ' timeout 30 skopeo --debug inspect --tls-verify=true --creds=test_user:test_pass docker://registry.redhat.io/openshift3/ose-pod'
            })
def test_is_active(deployment_type, is_active):
    task_vars = dict(
        openshift_deployment_type=deployment_type,
    )
    assert DockerImageAvailability.is_active(task_vars=task_vars) == is_active
def test_is_active(deployment_type, is_active):
    task_vars = dict(openshift_deployment_type=deployment_type, )
    assert DockerImageAvailability.is_active(task_vars=task_vars) == is_active
Ejemplo n.º 37
0
def test_registry_console_image(task_vars, expected):
    info = DEPLOYMENT_IMAGE_INFO[task_vars["openshift_deployment_type"]]
    tag = task_vars["openshift_image_tag"]
    assert expected == DockerImageAvailability(task_vars=task_vars)._registry_console_image(tag, info)