Fix exception in image cleanup

Fix the following Traceback:
Traceback (most recent call last):
  File "/opt/nodepool/lib/python3.11/site-packages/nodepool/builder.py", line 402, in _cleanup
    self._pruneLocalBuildFormats(
  File "/opt/nodepool/lib/python3.11/site-packages/nodepool/builder.py", line 434, in _pruneLocalBuildFormats
    if not diskimage.delete_after_upload:
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'delete_after_upload'

Change-Id: Idb6c9be905f12aa81fe309c88625b0efd4cbc8ad
This commit is contained in:
Dong Zhang 2025-03-05 12:41:55 +01:00
parent 454f1edb39
commit 58be304264

View File

@ -430,20 +430,25 @@ class CleanupWorker(BaseWorker):
''' '''
images_dir = self._config.images_dir images_dir = self._config.images_dir
diskimage = self._config.diskimages.get(image_name) diskimage = self._config.diskimages.get(image_name)
if not diskimage.delete_after_upload:
return # If the diskimage is not in the config, it can be deleted.
to_keep = set(diskimage.keep_image_types) if not diskimage:
# Examine the currently uploaded images and determine which to_keep = set()
# formats need to be kept for future uploads. else:
for provider in providers: if not diskimage.delete_after_upload:
if not provider.manage_images: return
continue to_keep = set(diskimage.keep_image_types)
if image_name not in provider.diskimages: # Examine the currently uploaded images and determine which
continue # formats need to be kept for future uploads.
upload = self._zk.getMostRecentBuildImageUploads( for provider in providers:
1, image_name, build_id, provider.name, zk.READY) if not provider.manage_images:
if not upload: continue
to_keep.add(provider.image_type) if image_name not in provider.diskimages:
continue
upload = self._zk.getMostRecentBuildImageUploads(
1, image_name, build_id, provider.name, zk.READY)
if not upload:
to_keep.add(provider.image_type)
base = "-".join([image_name, build_id]) base = "-".join([image_name, build_id])
files = DibImageFile.from_image_id(images_dir, base) files = DibImageFile.from_image_id(images_dir, base)