def test_parent_image_inspect(insecure, parents_pulled, tmpdir, source_params):
    provided_image = "test-build:test_tag"
    if MOCK:
        mock_docker(provided_image_repotags=provided_image)

    source_params.update({'tmpdir': str(tmpdir)})
    s = get_source_instance_for(source_params)
    b = InsideBuilder(s, provided_image)
    b.tasker.build_method = default_build_method
    b.parents_pulled = parents_pulled

    provided_imagename = ImageName.parse(provided_image)
    registry_name = "registry.example.com"
    provided_imagename.registry = registry_name
    b.pull_registries = {
        registry_name: {
            'insecure': insecure,
            'dockercfg_path': str(tmpdir)
        }
    }

    if not parents_pulled:
        (flexmock(atomic_reactor.util).should_receive(
            'get_inspect_for_image').with_args(
                provided_imagename, provided_imagename.registry, insecure,
                str(tmpdir)).and_return({'Id': 123}))

    built_inspect = b.parent_image_inspect(provided_imagename)

    assert built_inspect is not None
    assert built_inspect["Id"] is not None
示例#2
0
def test_parent_image_inspect(parents_pulled, tmpdir, source_params):
    provided_image = "test-build:test_tag"
    if MOCK:
        mock_docker(provided_image_repotags=provided_image)

    source_params.update({'tmpdir': str(tmpdir)})
    s = get_source_instance_for(source_params)
    b = InsideBuilder(s, provided_image)
    b.parents_pulled = parents_pulled

    if not parents_pulled:
        (flexmock(atomic_reactor.util)
         .should_receive('get_inspect_for_image')
         .and_return({'Id': 123}))

    built_inspect = b.parent_image_inspect(provided_image)

    assert built_inspect is not None
    assert built_inspect["Id"] is not None
def test_parent_image_inspect(parents_pulled, tmpdir, source_params):
    provided_image = "test-build:test_tag"
    if MOCK:
        mock_docker(provided_image_repotags=provided_image)

    source_params.update({'tmpdir': str(tmpdir)})
    s = get_source_instance_for(source_params)
    b = InsideBuilder(s, provided_image)
    b.parents_pulled = parents_pulled

    if not parents_pulled:
        (flexmock(atomic_reactor.util)
         .should_receive('get_inspect_for_image')
         .and_return({'Id': 123}))

    built_inspect = b.parent_image_inspect(provided_image)

    assert built_inspect is not None
    assert built_inspect["Id"] is not None
示例#4
0
def test_base_image_inspect(tmpdir, source_params, parents_pulled,
                            base_exist):
    if MOCK:
        mock_docker()

    source_params.update({'tmpdir': str(tmpdir)})
    s = get_source_instance_for(source_params)
    b = InsideBuilder(s, '')
    b.parents_pulled = parents_pulled
    if b.base_from_scratch:
        base_exist = True

    if base_exist:
        if b.base_from_scratch:
            built_inspect = b.base_image_inspect
            assert built_inspect == {}
        else:
            if not parents_pulled:
                (flexmock(atomic_reactor.util)
                 .should_receive('get_inspect_for_image')
                 .and_return({'Id': 123}))

            built_inspect = b.base_image_inspect

            assert built_inspect is not None
            assert built_inspect["Id"] is not None
    else:
        if parents_pulled or b.custom_base_image:
            response = flexmock(content="not found", status_code=404)
            (flexmock(docker.APIClient)
             .should_receive('inspect_image')
             .and_raise(docker.errors.NotFound, "xyz", response))
            with pytest.raises(KeyError):
                b.base_image_inspect
        else:
            (flexmock(atomic_reactor.util)
             .should_receive('get_inspect_for_image')
             .and_raise(NotImplementedError))
            with pytest.raises(NotImplementedError):
                b.base_image_inspect
def test_base_image_inspect(tmpdir, source_params, parents_pulled,
                            base_exist):
    if MOCK:
        mock_docker()

    source_params.update({'tmpdir': str(tmpdir)})
    s = get_source_instance_for(source_params)
    b = InsideBuilder(s, '')
    b.parents_pulled = parents_pulled
    if b.base_from_scratch:
        base_exist = True

    if base_exist:
        if b.base_from_scratch:
            built_inspect = b.base_image_inspect
            assert built_inspect == {}
        else:
            if not parents_pulled:
                (flexmock(atomic_reactor.util)
                 .should_receive('get_inspect_for_image')
                 .and_return({'Id': 123}))

            built_inspect = b.base_image_inspect

            assert built_inspect is not None
            assert built_inspect["Id"] is not None
    else:
        if parents_pulled or b.custom_base_image:
            response = flexmock(content="not found", status_code=404)
            (flexmock(docker.APIClient)
             .should_receive('inspect_image')
             .and_raise(docker.errors.NotFound, "xyz", response))
            with pytest.raises(KeyError):
                b.base_image_inspect
        else:
            (flexmock(atomic_reactor.util)
             .should_receive('get_inspect_for_image')
             .and_raise(NotImplementedError))
            with pytest.raises(NotImplementedError):
                b.base_image_inspect
def test_base_image_inspect(tmpdir, source_params, parents_pulled, insecure,
                            base_exist):
    if MOCK:
        mock_docker()

    source_params.update({'tmpdir': str(tmpdir)})
    s = get_source_instance_for(source_params)
    b = InsideBuilder(s, '')
    b.tasker.build_method = default_build_method
    b.parents_pulled = parents_pulled
    if b.dockerfile_images.base_from_scratch:
        base_exist = True
    registry_name = "registry.example.com"

    original_parents = b.dockerfile_images.original_parents
    new_parents = []
    for parent in original_parents:
        if parent == 'scratch':
            new_parents.append(parent)
        else:
            mod_parent = ImageName.parse(parent)
            mod_parent.registry = registry_name
            new_parents.append(mod_parent.to_str())

    b.dockerfile_images = DockerfileImages(new_parents)
    b.pull_registries = {
        registry_name: {
            'insecure': insecure,
            'dockercfg_path': str(tmpdir)
        }
    }

    if base_exist:
        if b.dockerfile_images.base_from_scratch:
            built_inspect = b.base_image_inspect
            assert built_inspect == {}
        else:
            if not parents_pulled:
                (flexmock(atomic_reactor.util).should_receive(
                    'get_inspect_for_image').with_args(
                        b.dockerfile_images.base_image,
                        b.dockerfile_images.base_image.registry, insecure,
                        str(tmpdir)).and_return({'Id': 123}))

            built_inspect = b.base_image_inspect

            assert built_inspect is not None
            assert built_inspect["Id"] is not None
    else:
        if parents_pulled or b.dockerfile_images.custom_base_image:
            response = flexmock(content="not found", status_code=404)
            (flexmock(
                docker.APIClient).should_receive('inspect_image').and_raise(
                    docker.errors.NotFound, "xyz", response))
            with pytest.raises(KeyError):
                b.base_image_inspect  # pylint: disable=pointless-statement; is a property
        else:
            (flexmock(atomic_reactor.util).should_receive(
                'get_inspect_for_image').and_raise(NotImplementedError))
            with pytest.raises(NotImplementedError):
                b.base_image_inspect  # pylint: disable=pointless-statement; is a property