Skip to content

Fix Kubernetes cluster deletion with expunged nodes - #14595

Open
zheng1771 wants to merge 1 commit into
apache:4.22from
zheng1771:fix/14489-external-cluster-deletion
Open

zheng1771 wants to merge 1 commit into
apache:4.22from
zheng1771:fix/14489-external-cluster-deletion

Conversation

@zheng1771

Copy link
Copy Markdown

Description

Fixes: #14489

Deleting an externally managed Kubernetes cluster fails with NPE if its
VMs were already expunged.

The VM lookup returns null for expunged VMs, but the backup offering
check still tries to read them. Add a null check to skip missing VMs.
Existing VMs with a backup offering still block deletion.

To reproduce:

  1. Create an externally managed Kubernetes cluster and attach VMs.
  2. Destroy and expunge the attached VMs.
  3. Delete the cluster with cleanup or expunge enabled.

Added four regression tests for missing VMs, mixed VM lists, and an
empty list.

Types of changes

  • Breaking change (fix or feature that would cause existing functionality to change)
  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (improves an existing feature and functionality)
  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • Build/CI
  • Test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity

Feature/Enhancement Scale

  • Major
  • Minor

Bug Severity

  • BLOCKER
  • Critical
  • Major
  • Minor
  • Trivial

The error prevents deletion of affected clusters.

Screenshots (if appropriate):

Not applicable.

How Has This Been Tested?

Tested with OpenJDK 17 and Maven 3.8.7.

All 33 KubernetesClusterManagerImplTest tests passed, including the four
new regression tests. Required modules compiled and Maven checks passed.

Full project build and live-cloud testing were not run.

How did you try to break this feature and the system with this change?

Regression tests passed for:

  • All mapped VMs missing.
  • Missing VMs mixed with a VM without a backup offering.
  • A missing VM followed by a VM with a backup offering. The check still
    detects the backup offering and keeps the deletion restriction.
  • An empty VM list.

@boring-cyborg

boring-cyborg Bot commented Nov 6, 2026

Copy link
Copy Markdown

Congratulations on your first Pull Request and welcome to the Apache CloudStack community! If you have any issues or are unsure about any anything please check our Contribution Guide (https://github.com/apache/cloudstack/blob/main/CONTRIBUTING.md)
Here are some useful points:

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant