Exemplo n.º 1
0
def build_all_images_for_lang(lang):
    """Build all docker images for a language across releases and runtimes."""
    if not args.git_checkout:
        if args.release != 'master':
            print(
                'Cannot use --release without also enabling --git_checkout.\n')
            sys.exit(1)
        releases = [args.release]
    else:
        if args.release == 'all':
            releases = client_matrix.get_release_tags(lang)
        else:
            # Build a particular release.
            if args.release not in ['master'
                                    ] + client_matrix.get_release_tags(lang):
                jobset.message('SKIPPED',
                               '%s for %s is not defined' %
                               (args.release, lang),
                               do_newline=True)
                return []
            releases = [args.release]

    images = []
    for release in releases:
        images += build_all_images_for_release(lang, release)
    jobset.message('SUCCESS',
                   'All docker images built for %s at %s.' % (lang, releases),
                   do_newline=True)
    return images
Exemplo n.º 2
0
def _get_test_images_for_lang(lang, release_arg, image_path_prefix):
    """Find docker images for a language across releases and runtimes.

  Returns dictionary of list of (<tag>, <image-full-path>) keyed by runtime.
  """
    if release_arg == 'all':
        # Use all defined releases for given language
        releases = client_matrix.get_release_tags(lang)
    else:
        # Look for a particular release.
        if release_arg not in client_matrix.get_release_tags(lang):
            jobset.message('SKIPPED',
                           'release %s for %s is not defined' %
                           (release_arg, lang),
                           do_newline=True)
            return {}
        releases = [release_arg]

    # Image tuples keyed by runtime.
    images = {}
    for tag in releases:
        for runtime in client_matrix.get_runtimes_for_lang_release(lang, tag):
            image_name = '%s/grpc_interop_%s:%s' % (image_path_prefix, runtime,
                                                    tag)
            image_tuple = (tag, image_name)

            if not images.has_key(runtime):
                images[runtime] = []
            images[runtime].append(image_tuple)
    return images
Exemplo n.º 3
0
def build_all_images_for_lang(lang):
    """Build all docker images for a language across releases and runtimes."""
    if not args.git_checkout:
        if args.release != 'master':
            print('WARNING: --release is set but will be ignored\n')
        releases = ['master']
    else:
        if args.release == 'all':
            releases = client_matrix.get_release_tags(lang)
        else:
            # Build a particular release.
            if args.release not in ['master'] + client_matrix.get_release_tags(
                    lang):
                jobset.message(
                    'SKIPPED',
                    '%s for %s is not defined' % (args.release, lang),
                    do_newline=True)
                return []
            releases = [args.release]

    images = []
    for release in releases:
        images += build_all_images_for_release(lang, release)
    jobset.message(
        'SUCCESS',
        'All docker images built for %s at %s.' % (lang, releases),
        do_newline=True)
    return images
Exemplo n.º 4
0
def _get_test_images_for_lang(lang, release_arg, image_path_prefix):
    """Find docker images for a language across releases and runtimes.

  Returns dictionary of list of (<tag>, <image-full-path>) keyed by runtime.
  """
    if release_arg == 'all':
        # Use all defined releases for given language
        releases = client_matrix.get_release_tags(lang)
    else:
        # Look for a particular release.
        if release_arg not in client_matrix.get_release_tags(lang):
            jobset.message(
                'SKIPPED',
                'release %s for %s is not defined' % (release_arg, lang),
                do_newline=True)
            return {}
        releases = [release_arg]

    # Image tuples keyed by runtime.
    images = {}
    for tag in releases:
        for runtime in client_matrix.get_runtimes_for_lang_release(lang, tag):
            image_name = '%s/grpc_interop_%s:%s' % (image_path_prefix, runtime,
                                                    tag)
            image_tuple = (tag, image_name)

            if not images.has_key(runtime):
                images[runtime] = []
            images[runtime].append(image_tuple)
    return images
Exemplo n.º 5
0
def find_all_images_for_lang(lang):
    """Find docker images for a language across releases and runtimes.

  Returns dictionary of list of (<tag>, <image-full-path>) keyed by runtime.
  """
    # Find all defined releases.
    if args.release == 'all':
        releases = ['master'] + client_matrix.get_release_tags(lang)
    else:
        # Look for a particular release.
        if args.release not in ['master'
                               ] + client_matrix.get_release_tags(lang):
            jobset.message(
                'SKIPPED',
                '%s for %s is not defined' % (args.release, lang),
                do_newline=True)
            return {}
        releases = [args.release]

    # TODO(jtattermusch): why do we need to query the existing images/tags?
    # From LANG_RUNTIME_MATRIX and LANG_RELEASE_MATRIX it should be obvious
    # which tags we want to test - and it should be an error if they are
    # missing.
    # Images tuples keyed by runtime.
    images = {}
    for runtime in client_matrix.LANG_RUNTIME_MATRIX[lang]:
        image_path = '%s/grpc_interop_%s' % (args.gcr_path, runtime)
        output = subprocess.check_output([
            'gcloud', 'beta', 'container', 'images', 'list-tags',
            '--format=json', image_path
        ])
        docker_image_list = json.loads(output)
        # All images should have a single tag or no tag.
        # TODO(adelez): Remove tagless images.
        tags = [i['tags'][0] for i in docker_image_list if i['tags']]
        jobset.message(
            'START',
            'Found images for %s: %s' % (image_path, tags),
            do_newline=True)
        skipped = len(docker_image_list) - len(tags)
        jobset.message(
            'SKIPPED',
            'Skipped images (no-tag/unknown-tag): %d' % skipped,
            do_newline=True)
        # Filter tags based on the releases.
        images[runtime] = [(tag, '%s:%s' % (image_path, tag))
                           for tag in tags
                           if tag in releases]
    return images
Exemplo n.º 6
0
def find_all_images_for_lang(lang):
    """Find docker images for a language across releases and runtimes.

  Returns dictionary of list of (<tag>, <image-full-path>) keyed by runtime.
  """
    # Find all defined releases.
    if args.release == 'all':
        releases = ['master'] + client_matrix.get_release_tags(lang)
    else:
        # Look for a particular release.
        if args.release not in ['master'
                                ] + client_matrix.get_release_tags(lang):
            jobset.message('SKIPPED',
                           '%s for %s is not defined' % (args.release, lang),
                           do_newline=True)
            return {}
        releases = [args.release]

    # TODO(jtattermusch): why do we need to query the existing images/tags?
    # From LANG_RUNTIME_MATRIX and LANG_RELEASE_MATRIX it should be obvious
    # which tags we want to test - and it should be an error if they are
    # missing.
    # Images tuples keyed by runtime.
    images = {}
    for runtime in client_matrix.LANG_RUNTIME_MATRIX[lang]:
        image_path = '%s/grpc_interop_%s' % (args.gcr_path, runtime)
        output = subprocess.check_output([
            'gcloud', 'beta', 'container', 'images', 'list-tags',
            '--format=json', image_path
        ])
        docker_image_list = json.loads(output)
        # All images should have a single tag or no tag.
        # TODO(adelez): Remove tagless images.
        tags = [i['tags'][0] for i in docker_image_list if i['tags']]
        jobset.message('START',
                       'Found images for %s: %s' % (image_path, tags),
                       do_newline=True)
        skipped = len(docker_image_list) - len(tags)
        jobset.message('SKIPPED',
                       'Skipped images (no-tag/unknown-tag): %d' % skipped,
                       do_newline=True)
        # Filter tags based on the releases.
        images[runtime] = [(tag, '%s:%s' % (image_path, tag)) for tag in tags
                           if tag in releases]
    return images