From 65ddebc16cb0ad599bd279d672ce179a406139db Mon Sep 17 00:00:00 2001 From: sunilkumarn417 Date: Fri, 14 May 2021 14:38:31 +0530 Subject: [PATCH] task/internal/redhat.py: added container tool login support, this task is essential to access monitoring images from Red Hat registry source. Signed-off-by: sunilkumarn417 --- teuthology/run.py | 3 ++- teuthology/task/internal/__init__.py | 4 +++- teuthology/task/internal/redhat.py | 30 ++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/teuthology/run.py b/teuthology/run.py index 2eb0429fc9..00103a2d7a 100644 --- a/teuthology/run.py +++ b/teuthology/run.py @@ -250,7 +250,8 @@ def get_initial_tasks(lock, config, machine_type): {'internal.git_ignore_ssl': None}, {'internal.setup_cdn_repo': None}, {'internal.setup_base_repo': None}, - {'internal.setup_additional_repo': None} + {'internal.setup_additional_repo': None}, + {'internal.setup_container_registry': None} ]) # Install latest kernel task for redhat downstream runs if config.get('redhat').get('install_latest_rh_kernel', False): diff --git a/teuthology/task/internal/__init__.py b/teuthology/task/internal/__init__.py index e96a9ff8a6..2b3772e657 100644 --- a/teuthology/task/internal/__init__.py +++ b/teuthology/task/internal/__init__.py @@ -24,7 +24,9 @@ from teuthology.exceptions import ConfigError, VersionNotFoundError from teuthology.job_status import get_status, set_status from teuthology.orchestra import cluster, remote, run # the below import with noqa is to workaround run.py which does not support multilevel submodule import -from teuthology.task.internal.redhat import setup_cdn_repo, setup_base_repo, setup_additional_repo, setup_stage_cdn # noqa +from teuthology.task.internal.redhat import (setup_cdn_repo, setup_base_repo, # noqa + setup_additional_repo, # noqa + setup_stage_cdn, setup_container_registry) # noqa log = logging.getLogger(__name__) diff --git a/teuthology/task/internal/redhat.py b/teuthology/task/internal/redhat.py index 381b409898..2a1e5e97c7 100644 --- a/teuthology/task/internal/redhat.py +++ b/teuthology/task/internal/redhat.py @@ -88,6 +88,36 @@ def setup_cdn_repo(ctx, config): set_cdn_repo(ctx, config) yield +@contextlib.contextmanager +def setup_container_registry(ctx, config): + """ + setup container registry if setup_container_registry in config + + redhat: + setup_container_registry: # registry-name + """ + if ctx.config.get('redhat').get('setup_container_registry', None): + registry = ctx.config['redhat']['setup_container_registry'] + + # fetch credentials from teuth_config + creds = teuthconfig.get('registries', dict()).get(registry) + if not creds: + raise ConfigError("Registry not found....") + + # container-tool login + for remote in ctx.cluster.remotes.keys(): + container_tool = "podman" + if remote.os.version.startswith('7'): + container_tool = "docker" + + remote.run(args=[ + 'sudo', container_tool, + 'login', registry, + '--username', creds['username'], + '--password', creds['password'], + ] + ) + yield @contextlib.contextmanager def setup_additional_repo(ctx, config): -- 2.39.5