コード例 #1
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_label_mismatch(self):
        config = Configuration()
        osbs = OSBS(config, config)

        build_json = {
            'apiVersion': osbs.os_conf.get_openshift_api_version(),
            'metadata': {
                'name': 'build',
                'labels': {
                    'git-repo-name': 'reponame',
                    'git-branch': 'branch',
                },
            },
        }

        existing_build_json = copy.deepcopy(build_json)
        existing_build_json['metadata']['name'] = 'build'
        existing_build_json['metadata']['labels'][
            'git-repo-name'] = 'reponame2'
        existing_build_json['metadata']['labels']['git-branch'] = 'branch2'

        build_request = flexmock(render=lambda: build_json,
                                 is_auto_instantiated=lambda: False)

        (flexmock(osbs).should_receive('_get_existing_build_config').once().
         and_return(existing_build_json))

        with pytest.raises(OsbsValidationException) as exc:
            osbs._create_build_config_and_build(build_request)

        assert 'Git labels collide' in str(exc.value)
コード例 #2
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_already_running(self):
        config = Configuration()
        osbs = OSBS(config, config)

        build_json = {
            'apiVersion': osbs.os_conf.get_openshift_api_version(),
            'metadata': {
                'name': 'build',
                'labels': {
                    'git-repo-name': 'reponame',
                    'git-branch': 'branch',
                },
            },
        }

        existing_build_json = copy.deepcopy(build_json)
        existing_build_json['metadata']['name'] = 'existing-build'

        build_request = flexmock(render=lambda: build_json,
                                 is_auto_instantiated=lambda: False)

        (flexmock(osbs).should_receive('_get_existing_build_config').once().
         and_return(existing_build_json))

        (flexmock(osbs).should_receive(
            '_get_running_builds_for_build_config').once().and_return([
                flexmock(status='Running', get_build_name=lambda: 'build-1'),
            ]))

        with pytest.raises(OsbsException):
            osbs._create_build_config_and_build(build_request)
コード例 #3
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_label_mismatch(self):
        config = Configuration()
        osbs = OSBS(config, config)

        build_json = {
            'apiVersion': osbs.os_conf.get_openshift_api_version(),
            'metadata': {
                'name': 'build',
                'labels': {
                    'git-repo-name': 'reponame',
                    'git-branch': 'branch',
                },
            },
        }

        existing_build_json = copy.deepcopy(build_json)
        existing_build_json['metadata']['name'] = 'build'
        existing_build_json['metadata']['labels']['git-repo-name'] = 'reponame2'
        existing_build_json['metadata']['labels']['git-branch'] = 'branch2'

        build_request = flexmock(
            render=lambda: build_json,
            is_auto_instantiated=lambda: False)

        (flexmock(osbs)
            .should_receive('_get_existing_build_config')
            .once()
            .and_return(existing_build_json))

        with pytest.raises(OsbsValidationException) as exc:
            osbs._create_build_config_and_build(build_request)

        assert 'Git labels collide' in str(exc.value)
コード例 #4
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_bad_version(self):
        config = Configuration()
        osbs = OSBS(config, config)
        build_json = {'apiVersion': 'spam'}
        build_request = flexmock(render=lambda: build_json,
                                 is_auto_instantiated=lambda: False)

        with pytest.raises(OsbsValidationException):
            osbs._create_build_config_and_build(build_request)
コード例 #5
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_bad_version(self):
        config = Configuration()
        osbs = OSBS(config, config)
        build_json = {'apiVersion': 'spam'}
        build_request = flexmock(
            render=lambda: build_json,
            is_auto_instantiated=lambda: False)

        with pytest.raises(OsbsValidationException):
            osbs._create_build_config_and_build(build_request)
コード例 #6
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_create(self):
        config = Configuration()
        osbs = OSBS(config, config)

        build_json = {
            'apiVersion': osbs.os_conf.get_openshift_api_version(),
            'metadata': {
                'name': 'build',
                'labels': {
                    'git-repo-name': 'reponame',
                    'git-branch': 'branch',
                },
            },
        }

        build_request = flexmock(render=lambda: build_json,
                                 is_auto_instantiated=lambda: False)

        (flexmock(osbs).should_receive(
            '_get_existing_build_config').once().and_return(None))

        (flexmock(osbs.os).should_receive('create_build_config').with_args(
            json.dumps(build_json)).once().and_return(
                flexmock(json=lambda: {'spam': 'maps'})))

        (flexmock(osbs.os).should_receive(
            'start_build').with_args('build').once().and_return(
                flexmock(json=lambda: {'spam': 'maps'})))

        build_response = osbs._create_build_config_and_build(build_request)
        assert build_response.json == {'spam': 'maps'}
コード例 #7
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_already_running(self):
        config = Configuration()
        osbs = OSBS(config, config)

        build_json = {
            'apiVersion': osbs.os_conf.get_openshift_api_version(),
            'metadata': {
                'name': 'build',
                'labels': {
                    'git-repo-name': 'reponame',
                    'git-branch': 'branch',
                },
            },
        }

        existing_build_json = copy.deepcopy(build_json)
        existing_build_json['metadata']['name'] = 'existing-build'

        build_request = flexmock(
            render=lambda: build_json,
            is_auto_instantiated=lambda: False)

        (flexmock(osbs)
            .should_receive('_get_existing_build_config')
            .once()
            .and_return(existing_build_json))

        (flexmock(osbs)
            .should_receive('_get_running_builds_for_build_config')
            .once()
            .and_return([
                flexmock(status='Running', get_build_name=lambda: 'build-1'),
            ]))

        with pytest.raises(OsbsException):
            osbs._create_build_config_and_build(build_request)
コード例 #8
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_auto_start(self):
        config = Configuration()
        osbs = OSBS(config, config)

        build_json = {
            'apiVersion': osbs.os_conf.get_openshift_api_version(),
            'metadata': {
                'name': 'build',
                'labels': {
                    'git-repo-name': 'reponame',
                    'git-branch': 'branch',
                },
            },
        }

        build_request = flexmock(
            render=lambda: build_json,
            is_auto_instantiated=lambda: True)

        (flexmock(osbs)
            .should_receive('_get_existing_build_config')
            .once()
            .and_return(None))

        (flexmock(osbs.os)
            .should_receive('create_build_config')
            .with_args(json.dumps(build_json))
            .once()
            .and_return(flexmock(json=lambda: {
                'status': {'lastVersion': 'lastVersion'}}
            )))

        (flexmock(osbs.os)
            .should_receive('wait_for_new_build_config_instance')
            .with_args('build', 'lastVersion')
            .once()
            .and_return('build-id'))

        (flexmock(osbs.os)
            .should_receive('get_build')
            .with_args('build-id')
            .once()
            .and_return(flexmock(json=lambda: {'spam': 'maps'})))

        build_response = osbs._create_build_config_and_build(build_request)
        assert build_response.json == {'spam': 'maps'}
コード例 #9
0
ファイル: test_api.py プロジェクト: lcarva/osbs-client
    def test_create_build_config_update(self):
        config = Configuration()
        osbs = OSBS(config, config)

        build_json = {
            'apiVersion': osbs.os_conf.get_openshift_api_version(),
            'metadata': {
                'name': 'build',
                'labels': {
                    'git-repo-name': 'reponame',
                    'git-branch': 'branch',
                },
            },
        }

        existing_build_json = copy.deepcopy(build_json)
        existing_build_json['metadata']['name'] = 'existing-build'
        existing_build_json['metadata']['labels']['new-label'] = 'new-value'

        build_request = flexmock(
            render=lambda: build_json,
            is_auto_instantiated=lambda: False)

        (flexmock(osbs)
            .should_receive('_get_existing_build_config')
            .once()
            .and_return(existing_build_json))

        (flexmock(osbs)
            .should_receive('_get_running_builds_for_build_config')
            .once()
            .and_return([]))

        (flexmock(osbs.os)
            .should_receive('update_build_config')
            .with_args('existing-build', json.dumps(existing_build_json))
            .once())

        (flexmock(osbs.os)
            .should_receive('start_build')
            .with_args('existing-build')
            .once()
            .and_return(flexmock(json=lambda: {'spam': 'maps'})))

        build_response = osbs._create_build_config_and_build(build_request)
        assert build_response.json == {'spam': 'maps'}
コード例 #10
0
    def test_create_build_config_update(self):
        config = Configuration()
        osbs = OSBS(config, config)

        build_json = {
            'apiVersion': osbs.os_conf.get_openshift_api_version(),
            'metadata': {
                'name': 'build',
                'labels': {
                    'git-repo-name': 'reponame',
                    'git-branch': 'branch',
                },
            },
        }

        existing_build_json = copy.deepcopy(build_json)
        existing_build_json['metadata']['name'] = 'existing-build'
        existing_build_json['metadata']['labels']['new-label'] = 'new-value'

        build_request = flexmock(render=lambda: build_json,
                                 is_auto_instantiated=lambda: False,
                                 scratch=False)

        (flexmock(osbs).should_receive('_get_existing_build_config').once().
         and_return(existing_build_json))

        (flexmock(osbs).should_receive(
            '_get_running_builds_for_build_config').once().and_return([]))

        (flexmock(osbs.os).should_receive('update_build_config').with_args(
            'existing-build', json.dumps(existing_build_json)).once())

        (flexmock(osbs.os).should_receive('start_build').with_args(
            'existing-build').once().and_return(
                flexmock(json=lambda: {'spam': 'maps'})))

        build_response = osbs._create_build_config_and_build(build_request)
        assert build_response.json == {'spam': 'maps'}