From 58be3042648ee8902d2b5c57245ee58ee2acdb85 Mon Sep 17 00:00:00 2001 From: Dong Zhang Date: Wed, 5 Mar 2025 12:41:55 +0100 Subject: [PATCH] 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 --- nodepool/builder.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/nodepool/builder.py b/nodepool/builder.py index af3fb1f89..e2629a823 100644 --- a/nodepool/builder.py +++ b/nodepool/builder.py @@ -430,20 +430,25 @@ class CleanupWorker(BaseWorker): ''' images_dir = self._config.images_dir diskimage = self._config.diskimages.get(image_name) - if not diskimage.delete_after_upload: - return - to_keep = set(diskimage.keep_image_types) - # Examine the currently uploaded images and determine which - # formats need to be kept for future uploads. - for provider in providers: - if not provider.manage_images: - continue - 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) + + # If the diskimage is not in the config, it can be deleted. + if not diskimage: + to_keep = set() + else: + if not diskimage.delete_after_upload: + return + to_keep = set(diskimage.keep_image_types) + # Examine the currently uploaded images and determine which + # formats need to be kept for future uploads. + for provider in providers: + if not provider.manage_images: + continue + 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]) files = DibImageFile.from_image_id(images_dir, base)