diff --git a/tools/auditancestry.py b/tools/auditancestry.py index 920719880..c9c350a79 100644 --- a/tools/auditancestry.py +++ b/tools/auditancestry.py @@ -96,6 +96,16 @@ def resolve_or_create(repo, docker_image_id, new_ancestry): raise RuntimeError() +def all_ancestors_exist(ancestors): + if not ancestors: + return True + + found_count = len(list(Image + .select() + .where(Image.id << ancestors))) + return found_count == len(ancestors) + + cant_fix = [] for img in query: try: @@ -111,7 +121,7 @@ for img in query: ancestor_dbids = [int(anc_id) for anc_id in img.ancestors.split('/')[1:-1]] - if len(full_ancestry) != len(ancestor_dbids): + if len(full_ancestry) != len(ancestor_dbids) or not all_ancestors_exist(ancestor_dbids): logger.error('Image has incomplete ancestry: %s, %s, %s, %s' % (img.id, img.docker_image_id, full_ancestry, ancestor_dbids))