From 5c909793655e182619e1b1ac0c75ace47bc2fe71 Mon Sep 17 00:00:00 2001 From: David Vallee Delisle <me@dvd.dev> Date: Thu, 24 Mar 2022 10:50:51 -0400 Subject: [PATCH] build_catalog should loop deeper than one level There's some scenarios where our catalog is nested under more than one layer of folder. build_catalog should take this into account. Closes-bug: 1966222 Change-Id: Ibdeb5741b32f8060c14ca79d2300886dee68555f --- tripleo_common/image/image_export.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/tripleo_common/image/image_export.py b/tripleo_common/image/image_export.py index 687ee1ef8..133f4c528 100644 --- a/tripleo_common/image/image_export.py +++ b/tripleo_common/image/image_export.py @@ -375,20 +375,15 @@ def build_tags_list(image): def build_catalog(): catalog_path = os.path.join(IMAGE_EXPORT_DIR, 'v2', '_catalog') catalog_entries = [] - LOG.debug('Rebuilding %s' % catalog_path) images_path = os.path.join(IMAGE_EXPORT_DIR, 'v2') metadata_set = set(['blobs', 'manifests', 'tags']) - - for namespace in os.listdir(images_path): - namespace_path = os.path.join(images_path, namespace) - if not os.path.isdir(namespace_path): - continue - contents_set = set(os.listdir(namespace_path)) - # handle containers with no namespaces + LOG.debug(f'Rebuilding {catalog_path} Based on images_path {images_path}') + metadata_set = set(['blobs', 'manifests', 'tags']) + for folder, contents_set, files in os.walk(images_path): if metadata_set.issubset(contents_set): - catalog_entries.append(namespace) - for image in list(contents_set - metadata_set): - catalog_entries.append('%s/%s' % (namespace, image)) + image = folder.replace(f'{images_path}/', '') + LOG.debug(f'Adding image {image} to catalog') + catalog_entries.append(image) catalog = {'repositories': catalog_entries} with open(catalog_path, 'w+b') as f: