From 6bec6c885f4e3986bec85b21e49b537876cd732c Mon Sep 17 00:00:00 2001 From: Bogdan Dobrelya Date: Thu, 25 Oct 2018 14:00:57 +0200 Subject: [PATCH] Ensure unique containers names in docker-puppet Use paunch as a library to not duplicate code around. We'll need to add the logger once we have paunch 4.0.1 and rpm promoted with the recent logging fixes. Closes-Bug: #1799573 Change-Id: I4386b155a4bdba430dc350914db7a6b6fdf92ac0 Signed-off-by: Bogdan Dobrelya --- docker/docker-puppet.py | 16 +++++++++++++--- lower-constraints.txt | 1 + requirements.txt | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docker/docker-puppet.py b/docker/docker-puppet.py index 7035aa9080..bedacc5c27 100644 --- a/docker/docker-puppet.py +++ b/docker/docker-puppet.py @@ -28,6 +28,8 @@ import tempfile import time import multiprocessing +from paunch import runner as containers_runner + logger = None sh_script = '/var/lib/docker-puppet/docker-puppet.sh' container_cli = os.environ.get('CONTAINER_CLI', 'docker') @@ -63,6 +65,9 @@ if not os.path.exists(config_volume_prefix): if container_cli == 'docker': cli_dcmd = ['--volume', '/usr/share/openstack-puppet/modules/:/usr/share/openstack-puppet/modules/:ro,z'] env = {} + # FIXME: add log=log once we have paunch 4.0.1 in Pypi and promoted in RDO + RUNNER = containers_runner.DockerRunner( + 'docker-puppet', cont_cmd='docker') elif container_cli == 'podman': # podman doesn't allow relabeling content in /usr and # doesn't support named volumes @@ -70,6 +75,9 @@ elif container_cli == 'podman': '--volume', '/usr/share/openstack-puppet/modules/:/usr/share/openstack-puppet/modules/:ro'] # podman need to find dependent binaries that are in environment env = {'PATH': os.environ['PATH']} + # FIXME: add log=log once we have paunch 4.0.1 in Pypi and promoted in RDO + RUNNER = containers_runner.PodmanRunner( + 'docker-puppet', cont_cmd='podman') else: log.error('Invalid container_cli: %s' % container_cli) sys.exit(1) @@ -347,12 +355,14 @@ def mp_puppet_config(*args): man_file.write('include ::tripleo::packages\n') man_file.write(manifest) - rm_container('docker-puppet-%s' % config_volume) + uname = RUNNER.unique_container_name('docker-puppet-%s' % + config_volume) + rm_container(uname) pull_image(config_image) common_dcmd = [cli_cmd, 'run', '--user', 'root', - '--name', 'docker-puppet-%s' % config_volume, + '--name', uname, '--env', 'PUPPET_TAGS=%s' % puppet_tags, '--env', 'NAME=%s' % config_volume, '--env', 'HOSTNAME=%s' % short_hostname(), @@ -419,7 +429,7 @@ def mp_puppet_config(*args): if cmd_stderr: log.debug(cmd_stderr) # only delete successful runs, for debugging - rm_container('docker-puppet-%s' % config_volume) + rm_container(uname) log.info('Finished processing puppet configs for %s' % (config_volume)) return subproc.returncode diff --git a/lower-constraints.txt b/lower-constraints.txt index a6ee09cde0..dea3987f69 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -82,6 +82,7 @@ paramiko==2.0.0 passlib==1.7.0 Paste==2.0.2 PasteDeploy==1.5.0 +paunch==4.0.0 pbr==2.0.0 pecan==1.0.0 pika-pool==0.1.3 diff --git a/requirements.txt b/requirements.txt index bda47437c8..7f3177f7f4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,4 @@ PyYAML>=3.12 # MIT Jinja2>=2.10 # BSD License (3 clause) six>=1.10.0 # MIT tripleo-common>=7.1.0 # Apache-2.0 +paunch>=4.0.0 # Apache-2.0