Esempio n. 1
0
def load_artifact_config(artman_config_path, artifact_name):
    artman_config = _read_artman_config(artman_config_path)
    artifact_config = Artifact()
    artifact_config.CopyFrom(artman_config.common)
    valid_values = []
    for artifact in artman_config.artifacts:
        valid_values.append(artifact.name)
        if artifact.name == artifact_name:
            artifact_config.MergeFrom(artifact)
            _validate_artifact_config(artifact_config)
            return _normalize_artifact_config(artifact_config,
                                              artman_config_path)

    raise ValueError(
        'No artifact with `%s` configured in artman yaml. Valid values are %s'
        % (artifact_name, valid_values))
Esempio n. 2
0
def _compute_artifacts(legacy_config, legacy_common):
    result = []
    LANGS = ['java', 'python', 'php', 'ruby', 'go', 'csharp', 'nodejs']

    # Compute artifacts section
    common_git_repos = legacy_common.get('git_repos', {})

    for lang in LANGS:
        if lang not in legacy_config:
            continue
        legacy_artifact_config = legacy_config[lang]
        if legacy_artifact_config:
            artifact = Artifact(
                # Name the artifact as `{lang}_gapic`.
                name='%s_gapic' % lang,
                language=Artifact.Language.Value(lang.upper()),
            )

            if 'release_level' in legacy_artifact_config:
                artifact.release_level = Artifact.ReleaseLevel.Value(
                    legacy_artifact_config.get('release_level').upper())

            artifact.type = _compute_artifact_type(legacy_common)

            # Compute package version.
            if 'generated_package_version' in legacy_artifact_config:
                legacy_package_version = legacy_artifact_config.get(
                    'generated_package_version')
                if 'lower' in legacy_package_version:
                    artifact.package_version.grpc_dep_lower_bound = (
                        legacy_package_version.get('lower'))
                if 'upper' in legacy_package_version:
                    artifact.package_version.grpc_dep_upper_bound = (
                        legacy_package_version.get('upper'))

            # Compute publishing targets
            artifact.publish_targets.extend(
                _compute_publish_targets(
                    legacy_artifact_config.get('git_repos', {}),
                    common_git_repos))
            result.append(artifact)
    return result
Esempio n. 3
0
def _compute_artifacts(legacy_config, legacy_common):
    result = []
    LANGS = ['java', 'python', 'php', 'ruby', 'go', 'csharp', 'nodejs']

    # Compute artifacts section
    common_git_repos = legacy_common.get('git_repos', {})

    for lang in LANGS:
        if lang not in legacy_config:
            continue
        legacy_artifact_config = legacy_config[lang]
        if legacy_artifact_config:
            artifact = Artifact(
                # Name the artifact as `{lang}_gapic`.
                name='%s_gapic' % lang,
                language=Artifact.Language.Value(lang.upper()),
            )

            if 'release_level' in legacy_artifact_config:
                artifact.release_level = Artifact.ReleaseLevel.Value(
                    legacy_artifact_config.get('release_level').upper())

            artifact.type = _compute_artifact_type(legacy_common)

            # Compute package version.
            if 'generated_package_version' in legacy_artifact_config:
                legacy_package_version = legacy_artifact_config.get(
                    'generated_package_version')
                if 'lower' in legacy_package_version:
                    artifact.package_version.grpc_dep_lower_bound = (
                        legacy_package_version.get('lower'))
                if 'upper' in legacy_package_version:
                    artifact.package_version.grpc_dep_upper_bound = (
                        legacy_package_version.get('upper'))

            # Compute publishing targets
            artifact.publish_targets.extend(_compute_publish_targets(
                legacy_artifact_config.get('git_repos', {}),
                common_git_repos))
            result.append(artifact)
    return result
Esempio n. 4
0
def load_artifact_config(artman_config_path, artifact_name, aspect=None):
    artman_config = _read_artman_config(artman_config_path)
    artifact_config = Artifact()
    artifact_config.CopyFrom(artman_config.common)

    if artifact_name not in ARTIFACT_MAPPING:
        raise ValueError(
            'Artifact type `%s` not supported. Valid values are %s'
            % (artifact_name, ARTIFACT_MAPPING.keys()))
    loaded_artifact = Artifact(**ARTIFACT_MAPPING[artifact_name])

    for artifact in artman_config.artifacts:
        if artifact.name == artifact_name:
            loaded_artifact.MergeFrom(artifact)
            break

    if aspect:
        loaded_artifact.aspect = Artifact.Aspect.Value(aspect)

    artifact_config.MergeFrom(loaded_artifact)
    _validate_artifact_config(artifact_config)
    return _normalize_artifact_config(
        artifact_config, artman_config_path)
Esempio n. 5
0
def _compute_publish_targets(git_repos, common_git_repos):
    # Merge the individual git_repos config with the common ones.
    for k, v in common_git_repos.items():
        if k in git_repos:
            merged_entry = v.copy()
            merged_entry.update(git_repos[k])
            git_repos[k] = merged_entry

    result = []
    for k, v in git_repos.items():
        target = Artifact.PublishTarget(
            name=k,
            location=v.get('location', ''),
            type=Artifact.PublishTarget.GITHUB,
            directory_mappings=_compute_directory_mappings(v.get('paths', [])))

        result.append(target)
    return result
Esempio n. 6
0
def load_artifact_config(artman_config_path, artifact_name, aspect=None):
    artman_config = _read_artman_config(artman_config_path)
    artifact_config = Artifact()
    artifact_config.CopyFrom(artman_config.common)

    if artifact_name not in ARTIFACT_MAPPING:
        raise ValueError(
            'Artifact type `%s` not supported. Valid values are %s' %
            (artifact_name, ARTIFACT_MAPPING.keys()))
    loaded_artifact = Artifact(**ARTIFACT_MAPPING[artifact_name])

    for artifact in artman_config.artifacts:
        if artifact.name == artifact_name:
            loaded_artifact.MergeFrom(artifact)
            break

    if aspect:
        loaded_artifact.aspect = Artifact.Aspect.Value(aspect)

    artifact_config.MergeFrom(loaded_artifact)
    _validate_artifact_config(artifact_config)
    return _normalize_artifact_config(artifact_config, artman_config_path)
Esempio n. 7
0
def _convert(legacy_config):
    # Compute common section
    result = Config()
    if 'common' not in legacy_config:
        sys.exit('`common` field is a required field in the legacy config.')
    legacy_common = legacy_config.get('common')
    result.common.api_name = legacy_common.get('api_name', 'unspecified')
    result.common.api_version = legacy_common.get('api_version', 'unspecified')
    result.common.organization_name = legacy_common.get(
        'organization_name', 'unspecified')

    # Python dict#get(key, default=value) doesn't well support list-type field.
    # Instead of using defaultdict, simply do the if checking here.
    if legacy_common.get('gapic_api_yaml'):
        result.common.gapic_yaml = _sanitize_repl_var(
            legacy_common.get('gapic_api_yaml')[0])
    if legacy_common.get('service_yaml'):
        result.common.service_yaml = _sanitize_repl_var(
            legacy_common.get('service_yaml')[0])
    if legacy_common.get('proto_deps'):
        result.common.proto_deps.extend(
            _compute_deps(legacy_common.get('proto_deps')))
    if legacy_common.get('proto_test_deps'):
        result.common.test_proto_deps.extend(
            _compute_deps(legacy_common.get('proto_test_deps')))
    if legacy_common.get('src_proto_path'):
        result.common.src_proto_paths.extend(
            _compute_src_proto_paths(legacy_common.get('src_proto_path')))

    artifacts = _compute_artifacts(legacy_config, legacy_common)
    # Append a gapic_config artifact.
    artifacts.append(
        Artifact(
            name='gapic_config',
            type=Artifact.GAPIC_CONFIG,
        ))
    result.artifacts.extend(artifacts)

    return result
Esempio n. 8
0
def _compute_deps(proto_deps):
    result = []
    for dep in proto_deps:
        result.append(Artifact.ProtoDependency(name=dep))
    return result