예제 #1
0
    def test_pull_base_image(self, osbs, build_type, scratch,
                             base_image, expect_plugin):
        phase = 'prebuild_plugins'
        plugin = 'pull_base_image'
        additional_params = {
            'base_image': base_image,
        }
        if scratch:
            additional_params['scratch'] = True

        (params, build_json) = self.get_build_request(build_type,
                                                      osbs,
                                                      additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if not expect_plugin:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, phase, plugin)
        else:
            args = plugin_value_get(plugins, phase, plugin, 'args')

            allowed_args = set([
                'parent_registry',
                'parent_registry_insecure',
            ])
            assert set(args.keys()) <= allowed_args
예제 #2
0
    def test_add_filesystem_in_worker(self, osbs, base_image, scratch,
                                      expect_plugin):
        additional_params = {
            'base_image': base_image,
            'yum_repourls': ['https://example.com/my.repo'],
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_worker_build_request(
            osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if not expect_plugin:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'prebuild_plugins', 'add_filesystem')
        else:
            args = plugin_value_get(plugins, 'prebuild_plugins',
                                    'add_filesystem', 'args')
            allowed_args = set([
                'koji_hub',
                'repos',
                'from_task_id',
            ])
            assert set(args.keys()) <= allowed_args
            assert 'koji_hub' in args
            assert args['repos'] == params['yum_repourls']
            assert args['from_task_id'] == params['filesystem_koji_task_id']
예제 #3
0
    def test_koji_import(self, osbs, scratch):
        additional_params = {
            'base_image': 'fedora:latest',
            'koji_upload_dir': 'upload',
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_orchestrator_build_request(osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if scratch:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'exit_plugins', 'koji_import')
            return

        args = plugin_value_get(plugins, 'exit_plugins',
                                         'koji_import', 'args')

        match_args = {
            'koji_keytab': False,
            'kojihub': 'http://koji.example.com/kojihub',
            'url': '/',
            'use_auth': False,
            'verify_ssl': False
        }
        assert match_args == args
예제 #4
0
    def test_koji_upload(self, osbs, scratch):
        additional_params = {
            'base_image': 'fedora:latest',
            'koji_upload_dir': 'upload',
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_worker_build_request(
            osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if scratch:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'postbuild_plugins', 'koji_upload')
            return

        args = plugin_value_get(plugins, 'postbuild_plugins', 'koji_upload',
                                'args')

        match_args = {
            'blocksize': 10485760,
            'build_json_dir': 'inputs',
            'koji_keytab': False,
            'koji_principal': False,
            'koji_upload_dir': 'upload',
            'kojihub': 'http://koji.example.com/kojihub',
            'url': '/',
            'use_auth': False,
            'verify_ssl': False
        }
        assert match_args == args
예제 #5
0
    def test_koji_upload(self, osbs, scratch):
        additional_params = {
            'base_image': 'fedora:latest',
            'koji_upload_dir': 'upload',
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_worker_build_request(osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if scratch:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'postbuild_plugins', 'koji_upload')
            return

        args = plugin_value_get(plugins, 'postbuild_plugins',
                                         'koji_upload', 'args')

        match_args = {
            'blocksize': 10485760,
            'build_json_dir': 'inputs',
            'koji_keytab': False,
            'koji_principal': False,
            'koji_upload_dir': 'upload',
            'kojihub': 'http://koji.example.com/kojihub',
            'url': '/',
            'use_auth': False,
            'verify_ssl': False,
            'platform': 'x86_64',
        }
        assert match_args == args
예제 #6
0
    def test_koji_import(self, osbs, scratch):
        additional_params = {
            'base_image': 'fedora:latest',
            'koji_upload_dir': 'upload',
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_orchestrator_build_request(
            osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if scratch:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'exit_plugins', 'koji_import')
            return

        args = plugin_value_get(plugins, 'exit_plugins', 'koji_import', 'args')

        match_args = {
            'koji_keytab': False,
            'kojihub': 'http://koji.example.com/kojihub',
            'url': '/',
            'use_auth': False,
            'verify_ssl': False
        }
        assert match_args == args
예제 #7
0
    def test_add_filesystem_in_worker(self, osbs, base_image, scratch,
                                      expect_plugin):
        additional_params = {
            'base_image': base_image,
            'yum_repourls': ['https://example.com/my.repo'],
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_worker_build_request(osbs,
                                                           additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if not expect_plugin:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'prebuild_plugins', 'add_filesystem')
        else:
            args = plugin_value_get(plugins, 'prebuild_plugins',
                                    'add_filesystem', 'args')
            allowed_args = set([
                'koji_hub',
                'repos',
                'from_task_id',
            ])
            assert set(args.keys()) <= allowed_args
            assert 'koji_hub' in args
            assert args['repos'] == params['yum_repourls']
            assert args['from_task_id'] == params['filesystem_koji_task_id']
예제 #8
0
    def test_pull_base_image(self, osbs, build_type, scratch, base_image,
                             expect_plugin):
        phase = 'prebuild_plugins'
        plugin = 'pull_base_image'
        additional_params = {
            'base_image': base_image,
        }
        if scratch:
            additional_params['scratch'] = True

        (params, build_json) = self.get_build_request(build_type, osbs,
                                                      additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if not expect_plugin:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, phase, plugin)
        else:
            args = plugin_value_get(plugins, phase, plugin, 'args')

            allowed_args = set([
                'parent_registry',
                'parent_registry_insecure',
            ])
            assert set(args.keys()) <= allowed_args
예제 #9
0
    def test_check_and_set_rebuild(self, tmpdir, osbs, triggers):

        imagechange = [
            {
                "type": "ImageChange",
                "imageChange": {
                    "from": {
                        "kind": "ImageStreamTag",
                        "name": "{{BASE_IMAGE_STREAM}}"
                    }
                }
            }
        ]

        if triggers:
            orch_outer_temp = ORCHESTRATOR_INNER_TEMPLATE.format(
                arrangement_version=self.ARRANGEMENT_VERSION
            )
            for basename in [ORCHESTRATOR_OUTER_TEMPLATE, orch_outer_temp]:
                shutil.copy(os.path.join(INPUTS_PATH, basename),
                            os.path.join(str(tmpdir), basename))

            with open(os.path.join(str(tmpdir), ORCHESTRATOR_OUTER_TEMPLATE), 'r+') as orch_json:
                build_json = json.load(orch_json)
                build_json['spec']['triggers'] = imagechange

                orch_json.seek(0)
                json.dump(build_json, orch_json)
                orch_json.truncate()

            flexmock(osbs.os_conf, get_build_json_store=lambda: str(tmpdir))
            (flexmock(BuildRequest)
                .should_receive('adjust_for_repo_info')
                .and_return(True))

        additional_params = {
            'base_image': 'fedora:latest',
        }
        params, build_json = self.get_orchestrator_build_request(osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if not triggers:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'prebuild_plugins', 'check_and_set_rebuild')
            return

        args = plugin_value_get(plugins, 'prebuild_plugins',
                                         'check_and_set_rebuild', 'args')

        match_args = {
            "label_key": "is_autorebuild",
            "label_value": "true",
            "url": "/",
            "verify_ssl": False,
            'use_auth': False,
        }
        assert match_args == args
예제 #10
0
    def test_check_and_set_rebuild(self, tmpdir, osbs, triggers):

        imagechange = [{
            "type": "ImageChange",
            "imageChange": {
                "from": {
                    "kind": "ImageStreamTag",
                    "name": "{{BASE_IMAGE_STREAM}}"
                }
            }
        }]

        if triggers:
            orch_outer_temp = ORCHESTRATOR_INNER_TEMPLATE.format(
                arrangement_version=self.ARRANGEMENT_VERSION)
            for basename in [ORCHESTRATOR_OUTER_TEMPLATE, orch_outer_temp]:
                shutil.copy(os.path.join(INPUTS_PATH, basename),
                            os.path.join(str(tmpdir), basename))

            with open(os.path.join(str(tmpdir), ORCHESTRATOR_OUTER_TEMPLATE),
                      'r+') as orch_json:
                build_json = json.load(orch_json)
                build_json['spec']['triggers'] = imagechange

                orch_json.seek(0)
                json.dump(build_json, orch_json)
                orch_json.truncate()

            flexmock(osbs.os_conf, get_build_json_store=lambda: str(tmpdir))
            (flexmock(BuildRequest).should_receive(
                'adjust_for_repo_info').and_return(True))

        additional_params = {
            'base_image': 'fedora:latest',
        }
        params, build_json = self.get_orchestrator_build_request(
            osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if not triggers:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'prebuild_plugins',
                           'check_and_set_rebuild')
            return

        args = plugin_value_get(plugins, 'prebuild_plugins',
                                'check_and_set_rebuild', 'args')

        match_args = {
            "label_key": "is_autorebuild",
            "label_value": "true",
            "url": "/",
            "verify_ssl": False,
            'use_auth': False,
        }
        assert match_args == args
예제 #11
0
    def test_fetch_worker_metadata(self, osbs, scratch):
        additional_params = {
            'base_image': 'fedora:latest',
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_orchestrator_build_request(osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if scratch:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'postbuild_plugins', 'fetch_worker_metadata')
            return

        args = plugin_value_get(plugins, 'postbuild_plugins',
                                         'fetch_worker_metadata', 'args')

        match_args = {}
        assert match_args == args
    def test_koji_upload(self, osbs, osbs_with_pulp, scratch, use_pulp):
        additional_params = {
            'base_image': 'fedora:latest',
            'koji_upload_dir': 'upload',
        }
        if scratch:
            additional_params['scratch'] = True

        if use_pulp:
            client = osbs_with_pulp
        else:
            client = osbs

        params, build_json = self.get_worker_build_request(
            client, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if scratch:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'postbuild_plugins', 'koji_upload')
            return

        args = plugin_value_get(plugins, 'postbuild_plugins', 'koji_upload',
                                'args')

        match_args = {
            'blocksize': 10485760,
            'build_json_dir': 'inputs',
            'koji_keytab': False,
            'koji_principal': False,
            'koji_upload_dir': 'upload',
            'kojihub': 'http://koji.example.com/kojihub',
            'url': '/',
            'use_auth': False,
            'verify_ssl': False,
            'platform': 'x86_64',
        }

        if use_pulp:
            match_args['report_multiple_digests'] = True

        assert match_args == args
예제 #13
0
    def test_fetch_worker_metadata(self, osbs, scratch):
        additional_params = {
            'base_image': 'fedora:latest',
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_orchestrator_build_request(
            osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if scratch:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'postbuild_plugins',
                           'fetch_worker_metadata')
            return

        args = plugin_value_get(plugins, 'postbuild_plugins',
                                'fetch_worker_metadata', 'args')

        match_args = {}
        assert match_args == args
예제 #14
0
    def test_koji_parent_in_orchestrator(self, osbs, base_image, scratch,
                                         expect_plugin):
        additional_params = {
            'base_image': base_image,
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_orchestrator_build_request(osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if not expect_plugin:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'prebuild_plugins', 'koji_parent')
        else:
            args = plugin_value_get(plugins, 'prebuild_plugins',
                                    'koji_parent', 'args')
            allowed_args = set([
                'koji_hub',
            ])
            assert set(args.keys()) <= allowed_args
            assert 'koji_hub' in args
예제 #15
0
    def test_koji_parent_in_orchestrator(self, osbs, base_image, scratch,
                                         expect_plugin):
        additional_params = {
            'base_image': base_image,
        }
        if scratch:
            additional_params['scratch'] = True
        params, build_json = self.get_orchestrator_build_request(
            osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        if not expect_plugin:
            with pytest.raises(NoSuchPluginException):
                get_plugin(plugins, 'prebuild_plugins', 'koji_parent')
        else:
            args = plugin_value_get(plugins, 'prebuild_plugins', 'koji_parent',
                                    'args')
            allowed_args = set([
                'koji_hub',
            ])
            assert set(args.keys()) <= allowed_args
            assert 'koji_hub' in args
    def test_not_flatpak(self, osbs, worker):
        additional_params = {
            'base_image': 'fedora:latest',
        }
        if worker:
            params, build_json = self.get_worker_build_request(
                osbs, additional_params)
        else:
            params, build_json = self.get_orchestrator_build_request(
                osbs, additional_params)
        plugins = get_plugins_from_build_json(build_json)

        with pytest.raises(NoSuchPluginException):
            get_plugin(plugins, "prebuild_plugins", "resolve_module_compose")
        with pytest.raises(NoSuchPluginException):
            get_plugin(plugins, "prebuild_plugins",
                       "flatpak_create_dockerfile")
        with pytest.raises(NoSuchPluginException):
            get_plugin(plugins, "prepublish_plugins", "flatpak_create_oci")
예제 #17
0
 def assert_plugin_not_present(self, build_json, phase, name):
     plugins = get_plugins_from_build_json(build_json)
     with pytest.raises(NoSuchPluginException):
         get_plugin(plugins, phase, name)
예제 #18
0
 def assert_plugin_not_present(self, build_json, phase, name):
     plugins = get_plugins_from_build_json(build_json)
     with pytest.raises(NoSuchPluginException):
         get_plugin(plugins, phase, name)