Skip to content

[KVM] CloudStack infrastructure metadata is preserved in libvirt XML after unmanaged VM operation (introduced in PR #11061) #12126

@pavanaravapalli

Description

@pavanaravapalli

problem

When a KVM instance is marked as unmanaged, CloudStack leaves infrastructure metadata — zone, pod, cluster, and host details — inside the libvirt VM XML.

This behavior appears to have been introduced as part of the enhancement in PR: #11061.
As a result, operators must manually or programmatically remove these metadata entries.

versions

4.22.1, main

The steps to reproduce the bug

Steps to Reproduce

  1. Install CloudStack main branch.
  2. Deploy a VM on a KVM hypervisor.
  3. Trigger an "unmanage VM" operation in CloudStack.
  4. On the KVM host, inspect the libvirt XML for that VM: /etc/libvirt/qemu/.xml
  5. Observe that infrastructure metadata tags (zone, pod, cluster, host) remain intact.

Expected Behavior

  • When a VM is marked unmanaged:
    CloudStack-specific infrastructure metadata should be removed from the libvirt XML,

Actual Behavior

  • Metadata remains in the VM’s libvirt XML after the unmanage operation.
  • Users must manually remove or script the cleanup of zone/pod/cluster/host metadata.
  • This may cause confusion or inconsistent state if unmanaged VMs are later moved, repurposed, or reused.

** Impact **

  • Operational confusion: Unmanaged VMs still appear to reference CloudStack infrastructure.
  • Automation issues: Tools/scripts that rely on metadata may misinterpret the VM’s state.
  • Security & hygiene: Residual metadata may mislead audits or lifecycle operations.
  • Maintenance overhead: Users must clean up metadata manually or build custom scripts.

What to do about it?

Proposed Fix

Automatically remove CloudStack metadata (zone, pod, cluster, host) during the unmanage VM workflow on KVM.
Alternatively, add a new configuration variable (e.g., kvm.libvirt.xml.metadata.clean=true|false) so operators can opt in or out of automatic cleanup.

Metadata

Metadata

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions