You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
DNS auto-registration on shared networks fires on VM deploy and NIC attach, but not on start of an existing stopped VM #14197
The DNS framework introduced in 4.23.0.0 (PR #12737) auto-registers VM DNS records on shared networks associated with a DNS zone. The registration hook fires when a VM is deployed and when a NIC is attached/detached, but does not fire when an existing stopped VM is simply started via startVirtualMachine — the record never gets created.
versions
Apache CloudStack 4.23.0.0 (upgraded from 4.22.1.1), KVM
Shared network with zone associated via associateDnsZoneToNetwork
PowerDNS auth 4.9 as provider (API integration)
The steps to reproduce the bug
Associate a DNS zone with a shared network
Deploy a VM on it → record created (works)
Stop the VM, delete the resulting record
Start the VM with startVirtualMachine
No DNS record created; nic_dns_view.nic_dns_name stays NULL for that NIC
Note: If there is an existing shared network with existing VM nics attached before the DNS framework was installed/configured for auto-registration, existing VM will also not auto register its IP, but new VM does.
What to do about it?
Expected
Starting an existing stopped VM on a network with an associated zone should register its A/AAAA record, same as fresh deploy.
Actual
No record. VM starts fine, gets DHCP IP, DNS registration silently skipped.
Root cause (from source, 4.23.0.0)
The subscriber in DnsProviderManagerImpl is wired to vm.lifecycle.state and handles case Running: handleVmCreateEvent(...) for any transition — intent is clearly to cover start of existing VMs. But the publisher UserVmManagerImpl.publishVmLifecycleMessageBus(...) is only called from the fresh-deploy path and the destroy path. A plain start of an existing Stopped VM never publishes, so the subscriber never fires.
Verified workaround
NIC detach + re-attach fires NIC lifecycle events (handleNicPlug) and registers the record correctly — registration logic is healthy, only the start trigger is missing.
Additional observations
Smoke test test_dns_framework_powerdns.py covers API CRUD only; zero coverage for VM auto-registration (any path) — which is why this ships unnoticed.
Fix directions: publish VM_LIFECYCLE_STATE from the generic Stopped→Running transition, or subscribe to vm.powerstate.
Activity
sudo87 commentedon Oct 5, 2026
thanks @chunkyen for trying out cloudstack dns integration.
Once user decides and deletes the DNS record, its user's responsibility to create the dns record as well, it wont be added back. Hence its not a bug.
I am not sure if these steps are part of some negative scenario testing, but outcome is expected one. Hope this clarifies
Note: Existing instance in the network wont be automatically registered into DNS server with Stop -> Start operation, refer to https://docs.cloudstack.apache.org/en/4.23.0.0/adminguide/networking/dns_framework.html
chunkyen commentedon Oct 6, 2026
@sudo87 ok I saw the note that existing VMs will not be added to the DNS zones in the documentation, thanks.