Skip to content

CloudStack DNS framework - Integrate PowerDNS as first plugin#12737

Draft
sudo87 wants to merge 62 commits intoapache:mainfrom
shapeblue:dnsProviderFramework
Draft

CloudStack DNS framework - Integrate PowerDNS as first plugin#12737
sudo87 wants to merge 62 commits intoapache:mainfrom
shapeblue:dnsProviderFramework

Conversation

@sudo87
Copy link
Copy Markdown
Contributor

@sudo87 sudo87 commented Mar 3, 2026

Description

This PR introduces initial implementation for a plugin based DNS framework in Apache CloudStack. It enables both admin and end-users to manage DNS zones and record with external authoritative dns providers.

First supported DNS provider: PowerDNS

Github issue: #9958
Cwiki: https://cwiki.apache.org/confluence/display/CLOUDSTACK/DNS+Framework+and+Plugins
Doc PR: apache/cloudstack-documentation#646

Untitled Diagram drawio

Terminology:

  1. DNS Server: integration between CloudStack and DNS provider
  2. DNS Zone: Domain scope
  3. DNS Record: mapping entry with dns zones (e.g. mapping between names and ip)

API Changes

There are following APIs have been introduced to support DNS management from CloudStack and Instance auto registration:

  • [add/update/delete]DnsServer
  • [create/update/delete]DnsZone
  • [create/delete]DnsRecord
  • [associate/disassociate]DnsZoneToNetwork

UI changes
Screenshot 2026-04-27 at 4 38 42 PM
Screenshot 2026-04-27 at 4 38 49 PM
Screenshot 2026-04-27 at 4 38 57 PM
Screenshot 2026-04-27 at 4 39 21 PM

  • DNS Server subsection under Network
  • DNS Zone subsection under Network
  • DNS records management tab in the Dns Zone

Supported network for Auto Registration: Shared network

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

Screenshots (if appropriate):

How Has This Been Tested?

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

sudo87 added 22 commits February 9, 2026 10:52
2. added relevant changes in dao and vo
3. worked on creatednszone, integration with mgr
4. powerdns create zone api call
1. creatednszone
2. listdnszone
3. updatednszone
4. deletednszone
1. Add dns server
2. create zone
3. add records
4. verify in powerdns
5. verify using dig
1. Registerdnsrecordforvm api
2. removednsrecordforvm api
3. cleanup; fixed license, dao logic
1. refactored client
2. added exceptions
3. enhanced updateZone
4. ownership check for deleteDnsServer
1. port for dns_server
2. remove hard coded localhost for server_id
3. resolve and store server id if not passed in the api request
4. restrict public dns_server for domain admins and admins
…elete events

2. add dnsrecordurl in nic_details table
3. add dnsrecordurl in vm response
@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 3, 2026

Codecov Report

❌ Patch coverage is 74.83546% with 650 lines in your changes missing coverage. Please review.
✅ Project coverage is 18.33%. Comparing base (a73cc9a) to head (f0ecee7).
⚠️ Report is 9 commits behind head on main.

Files with missing lines Patch % Lines
.../apache/cloudstack/dns/DnsProviderManagerImpl.java 79.97% 108 Missing and 51 partials ⚠️
...g/apache/cloudstack/dns/dao/NicDnsJoinDaoImpl.java 0.00% 56 Missing ⚠️
...ava/org/apache/cloudstack/dns/DnsProviderUtil.java 60.29% 37 Missing and 17 partials ⚠️
...apache/cloudstack/dns/powerdns/PowerDnsClient.java 79.43% 23 Missing and 28 partials ⚠️
...rg/apache/cloudstack/dns/dao/DnsServerDaoImpl.java 56.86% 43 Missing and 1 partial ⚠️
...rg/apache/cloudstack/dns/vo/DnsServerDetailVO.java 0.00% 37 Missing ⚠️
...ava/org/apache/cloudstack/dns/vo/NicDnsJoinVO.java 0.00% 33 Missing ⚠️
...n/java/org/apache/cloudstack/dns/vo/DnsZoneVO.java 53.57% 24 Missing and 2 partials ⚠️
.../src/main/java/com/cloud/vm/UserVmManagerImpl.java 52.94% 23 Missing and 1 partial ⚠️
...pache/cloudstack/api/response/DnsZoneResponse.java 55.81% 18 Missing and 1 partial ⚠️
... and 35 more
Additional details and impacted files
@@             Coverage Diff              @@
##               main   #12737      +/-   ##
============================================
+ Coverage     18.03%   18.33%   +0.29%     
- Complexity    16648    17070     +422     
============================================
  Files          6035     6093      +58     
  Lines        542487   545399    +2912     
  Branches      66477    66785     +308     
============================================
+ Hits          97854   100010    +2156     
- Misses       433612   434259     +647     
- Partials      11021    11130     +109     
Flag Coverage Δ
uitests 3.49% <ø> (-0.04%) ⬇️
unittests 19.52% <74.83%> (+0.33%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@winterhazel winterhazel added this to the 4.23.0 milestone Mar 3, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 9, 2026

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

@sudo87 sudo87 force-pushed the dnsProviderFramework branch 2 times, most recently from 741a410 to 8e9fe78 Compare April 29, 2026 17:24
@sudo87 sudo87 force-pushed the dnsProviderFramework branch from 8e9fe78 to 8d365cb Compare April 29, 2026 18:21
@apache apache deleted a comment from blueorangutan Apr 30, 2026
@apache apache deleted a comment from blueorangutan Apr 30, 2026
@github-actions
Copy link
Copy Markdown

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

@sudo87 sudo87 marked this pull request as draft April 30, 2026 09:35
@sudo87
Copy link
Copy Markdown
Contributor Author

sudo87 commented Apr 30, 2026

@blueorangutan package

@blueorangutan
Copy link
Copy Markdown

@sudo87 a [SL] Jenkins job has been kicked to build packages. It will be bundled with no SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link
Copy Markdown

Packaging result [SF]: ✖️ el8 ✖️ el9 ✔️ debian ✖️ suse15. SL-JID 17671

@blueorangutan
Copy link
Copy Markdown

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 17674

@sudo87
Copy link
Copy Markdown
Contributor Author

sudo87 commented May 1, 2026

Hi @weizhouapache, there are new params introduced in following commands apart from minor fixes:

  1. deleteDnsServerCmd
  • unmanage: removes associated Dns zones only from ACS, not from provider
  1. deleteDnsZoneCmd
  • unmanage: removes associated Dns zones only from ACS, not from provider
  1. createDnsZoneCmd
  • existing: imports DNS zone from provider
delete_dns_server create_dns_zone delete_dns_zone

Please review and share your feedback.

@sudo87
Copy link
Copy Markdown
Contributor Author

sudo87 commented May 1, 2026

@blueorangutan package

@blueorangutan
Copy link
Copy Markdown

@sudo87 a [SL] Jenkins job has been kicked to build packages. It will be bundled with no SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link
Copy Markdown

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 17682

@blueorangutan
Copy link
Copy Markdown

[SF] Trillian test result (tid-15994)
Environment: kvm-ol8 (x2), zone: Advanced Networking with Mgmt server ol8
Total time taken: 49540 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr12737-t15994-kvm-ol8.zip
Smoke tests completed. 152 look OK, 0 have errors, 0 did not run
Only failed and skipped tests results shown below:

Test Result Time (s) Test File

Copy link
Copy Markdown
Member

@weizhouapache weizhouapache left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code lgtm

@sureshanaparti sureshanaparti requested a review from Copilot May 4, 2026 12:00
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

This PR introduces a new plugin-based DNS framework to CloudStack, adds initial PowerDNS support, and exposes DNS server/zone/record management via new APIs plus UI integration.

Changes:

  • Added new DNS management APIs, response types, and server-side persistence (DAOs/VOs) for DNS servers/zones and network associations.
  • Implemented UI views/actions for managing DNS zones/servers and surfaced NIC DNS names.
  • Added schema migrations and SQL views to persist and query DNS integration data, plus a PowerDNS plugin module.

Reviewed changes

Copilot reviewed 131 out of 132 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
ui/src/views/network/dns/UpdateDnsZone.vue UI modal/form to update DNS zone metadata (description).
ui/src/views/network/dns/DeleteDnsZone.vue UI confirmation flow to delete/unmanage a DNS zone.
ui/src/views/network/NicsTable.vue Displays NIC DNS name in NIC details.
ui/src/components/view/ListView.vue Adjusts list rendering for DNS server list and enables list-view routing for dnsserver/dnszone.
ui/src/components/view/DetailsTab.vue Adds explicit provider rendering for DNS server details.
tools/apidoc/gen_toc.py Adds “Dns” section label for API documentation TOC generation.
server/src/test/java/org/apache/cloudstack/dns/vo/DnsZoneJoinVOTest.java Unit tests for DNS zone join view VO getters/defaults.
server/src/test/java/org/apache/cloudstack/dns/vo/DnsServerVOTest.java Unit tests for DNS server VO behavior (masking, parsing, constructors).
server/src/test/java/org/apache/cloudstack/dns/vo/DnsServerJoinVOTest.java Unit tests for DNS server join view VO getters/defaults.
server/src/test/java/org/apache/cloudstack/dns/dao/DnsZoneNetworkMapDaoImplTest.java Unit tests for DNS zone ↔ network mapping DAO methods.
server/src/test/java/org/apache/cloudstack/dns/dao/DnsZoneDaoImplTest.java Unit tests for DNS zone DAO queries and search.
server/src/test/java/org/apache/cloudstack/dns/dao/DnsServerDaoImplTest.java Unit tests for DNS server DAO queries and search.
server/src/main/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml Registers the DNS provider manager in server core Spring context.
server/src/main/java/org/apache/cloudstack/dns/vo/NicDnsJoinVO.java Adds DB view VO for NIC DNS data joined with zone/network mapping.
server/src/main/java/org/apache/cloudstack/dns/vo/DnsZoneVO.java Adds DNS zone persistence model and implements DnsZone interface.
server/src/main/java/org/apache/cloudstack/dns/vo/DnsZoneNetworkMapVO.java Adds persistence model for zone ↔ network association and subdomain.
server/src/main/java/org/apache/cloudstack/dns/vo/DnsZoneJoinVO.java Adds query view VO for DNS zone listing/details.
server/src/main/java/org/apache/cloudstack/dns/vo/DnsServerJoinVO.java Adds query view VO for DNS server listing/details.
server/src/main/java/org/apache/cloudstack/dns/vo/DnsServerDetailVO.java Adds details table VO for DNS server key/value details.
server/src/main/java/org/apache/cloudstack/dns/dao/NicDnsJoinDaoImpl.java Implements DAO for querying NIC DNS join view for collision/sync logic.
server/src/main/java/org/apache/cloudstack/dns/dao/NicDnsJoinDao.java DAO contract for NIC DNS join view queries used by DNS workflows.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsZoneNetworkMapDaoImpl.java Implements DAO for zone ↔ network mappings.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsZoneNetworkMapDao.java DAO interface for zone ↔ network mapping operations.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsZoneJoinDaoImpl.java Adds join DAO impl for DNS zone view.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsZoneJoinDao.java Adds join DAO interface for DNS zone view.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsZoneDaoImpl.java Implements DNS zone DAO queries and search.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsZoneDao.java DAO interface for DNS zone persistence queries.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsServerJoinDaoImpl.java Adds join DAO impl for DNS server view.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsServerJoinDao.java Adds join DAO interface for DNS server view.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsServerDetailsDaoImpl.java Implements details DAO for DNS server details.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsServerDetailsDao.java DAO interface for DNS server details.
server/src/main/java/org/apache/cloudstack/dns/dao/DnsServerDao.java DNS server DAO interface (search, details load/save, etc.).
server/src/main/java/com/cloud/user/AccountManagerImpl.java Extends access-check exclusions for DNS entities.
server/src/main/java/com/cloud/network/firewall/FirewallManagerImpl.java Fixes indentation/formatting in firewall rule listing query builder.
server/src/main/java/com/cloud/api/query/vo/UserVmJoinVO.java Adds nic_dns_name projection to VM join view VO.
server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java Populates NIC response with nicDnsName from join VO.
server/src/main/java/com/cloud/api/ApiResponseHelper.java Adds DNS zone/subdomain fields to network response.
server/src/main/java/com/cloud/api/ApiDBUtils.java Adds DB utils wiring and lookup for DNS zone by network ID.
server/src/main/java/com/cloud/acl/DomainChecker.java Adds DNS entities permission checks via DnsProviderManager.
plugins/pom.xml Registers new PowerDNS plugin module under plugins build.
plugins/dns/powerdns/src/test/java/org/apache/cloudstack/dns/DnsProviderUtilTest.java Adds parameterized tests for DNS provider utility normalization/suffix logic.
plugins/dns/powerdns/src/main/resources/META-INF/cloudstack/powerdns/spring-dns-powerdns-context.xml Defines PowerDNS provider Spring bean.
plugins/dns/powerdns/src/main/resources/META-INF/cloudstack/powerdns/module.properties Declares PowerDNS plugin module metadata.
plugins/dns/powerdns/pom.xml Adds Maven module POM for PowerDNS plugin artifact.
engine/schema/src/main/resources/META-INF/db/views/nic_dns_view.sql Adds DB view to join NICs with DNS mapping and NIC DNS detail.
engine/schema/src/main/resources/META-INF/db/views/cloud.user_vm_view.sql Extends VM view to include nic_dns_name via nic_details join.
engine/schema/src/main/resources/META-INF/db/views/cloud.dns_zone_view.sql Adds DNS zone query view combining zones, servers, accounts, domains.
engine/schema/src/main/resources/META-INF/db/views/cloud.dns_server_view.sql Adds DNS server query view combining servers, accounts, domains.
engine/schema/src/main/resources/META-INF/db/schema-42210to42300.sql Adds DNS server/zone/network mapping tables and details table.
engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml Registers DNS DAOs and join DAOs in schema Spring context.
engine/schema/src/main/java/com/cloud/vm/dao/NicDetailsDaoImpl.java Adds bulk removal method for NIC details by NIC IDs and name.
engine/schema/src/main/java/com/cloud/vm/dao/NicDetailsDao.java Adds DAO API for bulk NIC detail removal.
engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java Adds new VM event topics for lifecycle/action messaging.
core/src/main/resources/META-INF/cloudstack/dns/spring-core-lifecycle-dns-context-inheritable.xml Adds lifecycle registry wiring for DNS providers registry.
core/src/main/resources/META-INF/cloudstack/dns/module.properties Declares core “dns” module metadata.
core/src/main/resources/META-INF/cloudstack/core/spring-core-registry-core-context.xml Adds dnsProvidersRegistry to core registry context.
client/pom.xml Adds PowerDNS plugin artifact as a client dependency.
api/src/test/java/org/apache/cloudstack/dns/DnsRecordTest.java Tests DnsRecord model and RecordType parsing behavior.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/BaseDnsCmdTest.java Adds shared unit test base for DNS API commands.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/AddDnsServerCmdTest.java Unit tests for addDnsServer API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/UpdateDnsServerCmdTest.java Unit tests for updateDnsServer API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/DeleteDnsServerCmdTest.java Unit tests for deleteDnsServer API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/ListDnsServersCmdTest.java Unit tests for listDnsServers API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/CreateDnsRecordCmdTest.java Unit tests for createDnsRecord API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/DeleteDnsRecordCmdTest.java Unit tests for deleteDnsRecord API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/ListDnsRecordsCmdTest.java Unit tests for listDnsRecords API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/ListDnsProvidersCmdTest.java Unit tests for listDnsProviders API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/CreateDnsZoneCmdTest.java Tests for create/provision DNS zone API command flow (allocation/provision).
api/src/test/java/org/apache/cloudstack/api/command/user/dns/UpdateDnsZoneCmdTest.java Unit tests for updateDnsZone API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/DeleteDnsZoneCmdTest.java Unit tests for deleteDnsZone API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/ListDnsZonesCmdTest.java Unit tests for listDnsZones API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/AssociateDnsZoneToNetworkCmdTest.java Unit tests for associate DNS zone to network API command.
api/src/test/java/org/apache/cloudstack/api/command/user/dns/DisassociateDnsZoneFromNetworkCmdTest.java Unit tests for disassociate DNS zone from network API command.
api/src/main/java/org/apache/cloudstack/dns/exception/DnsProviderException.java Adds base checked exception type for provider failures.
api/src/main/java/org/apache/cloudstack/dns/exception/DnsTransportException.java Adds provider exception for transport/network IO failures.
api/src/main/java/org/apache/cloudstack/dns/exception/DnsOperationException.java Adds provider exception for unexpected provider-side operation failures.
api/src/main/java/org/apache/cloudstack/dns/exception/DnsNotFoundException.java Adds provider exception for missing zone/record conditions.
api/src/main/java/org/apache/cloudstack/dns/exception/DnsConflictException.java Adds provider exception for zone/record already-exists conditions.
api/src/main/java/org/apache/cloudstack/dns/exception/DnsAuthenticationException.java Adds provider exception for authentication failures.
api/src/main/java/org/apache/cloudstack/dns/DnsZone.java Adds core DNS zone interface contract.
api/src/main/java/org/apache/cloudstack/dns/DnsServer.java Adds core DNS server interface contract.
api/src/main/java/org/apache/cloudstack/dns/DnsRecord.java Adds DNS record model and type parsing helper.
api/src/main/java/org/apache/cloudstack/dns/DnsProviderType.java Adds supported DNS provider type enum (PowerDNS).
api/src/main/java/org/apache/cloudstack/dns/DnsProvider.java Adds DNS provider plugin interface contract.
api/src/main/java/org/apache/cloudstack/dns/DnsProviderManager.java Adds manager interface for DNS CRUD, plugin operations, and access checks.
api/src/main/java/org/apache/cloudstack/api/response/DnsServerResponse.java Adds API response DTO for DNS server.
api/src/main/java/org/apache/cloudstack/api/response/DnsZoneResponse.java Adds API response DTO for DNS zone.
api/src/main/java/org/apache/cloudstack/api/response/DnsRecordResponse.java Adds API response DTO for DNS record.
api/src/main/java/org/apache/cloudstack/api/response/DnsProviderResponse.java Adds API response DTO for listing DNS providers.
api/src/main/java/org/apache/cloudstack/api/response/DnsZoneNetworkMapResponse.java Adds API response DTO for zone-to-network association.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/AddDnsServerCmd.java Adds API command to register a DNS server integration.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/UpdateDnsServerCmd.java Adds API command to update DNS server integration.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/DeleteDnsServerCmd.java Adds API command to delete DNS server integration.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/ListDnsServersCmd.java Adds API command to list DNS servers.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/CreateDnsZoneCmd.java Adds API command to allocate/provision/import a DNS zone.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/UpdateDnsZoneCmd.java Adds API command to update DNS zone metadata.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/DeleteDnsZoneCmd.java Adds API command to delete/unmanage DNS zone.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/ListDnsZonesCmd.java Adds API command to list DNS zones.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/CreateDnsRecordCmd.java Adds API command to create DNS records.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/DeleteDnsRecordCmd.java Adds API command to delete DNS records.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/ListDnsRecordsCmd.java Adds API command to list DNS records.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/ListDnsProvidersCmd.java Adds API command to list installed DNS provider plugins.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/AssociateDnsZoneToNetworkCmd.java Adds API command to associate DNS zone to a network.
api/src/main/java/org/apache/cloudstack/api/command/user/dns/DisassociateDnsZoneFromNetworkCmd.java Adds API command to remove association of a DNS zone from a network.
api/src/main/java/org/apache/cloudstack/api/ApiConstants.java Adds DNS-related API constants used across UI/API/DAOs.
api/src/main/java/org/apache/cloudstack/api/BaseCmd.java Injects DnsProviderManager into API command base class.
api/src/main/java/org/apache/cloudstack/api/response/NicResponse.java Adds nicDnsName to NIC response payload.
api/src/main/java/org/apache/cloudstack/api/response/NetworkResponse.java Adds dnsZone and dnsSubdomain fields to network response payload.
api/src/main/java/com/cloud/vm/Nic.java Adds NIC lifecycle event topic constant.
api/src/main/java/com/cloud/user/ResourceLimitService.java Adds default DNS zone limit config key for accounts.
api/src/main/java/com/cloud/event/EventTypes.java Adds DNS-related event type constants and entity event mappings.
Comments suppressed due to low confidence (6)

server/src/main/java/com/cloud/api/ApiDBUtils.java:1

  • dnsZoneVO can be null (e.g., mapping exists but zone was deleted/removed or lookup fails), which will NPE at dnsZoneVO.getName(). Add a null check for dnsZoneVO before dereferencing and return (null, null) (or just the subdomain) accordingly.
    ui/src/components/view/ListView.vue:1
  • This new v-if is not mutually exclusive with the other v-if templates below (e.g., column.key === 'gpu'), so multiple templates can render for the same cell on /dnsserver routes, causing duplicated content. Convert this to v-else-if in the existing chain (or otherwise ensure exclusivity) so only one renderer applies per cell.
    engine/schema/src/main/resources/META-INF/db/schema-42210to42300.sql:1
  • The unique constraint name uc_dns_zone__uuid is already used earlier for the dns_zone table. In MySQL/InnoDB, constraint names must be unique within the schema, so this migration can fail. Rename this constraint to something table-specific (e.g., uc_dns_zone_network_map__uuid) to avoid DDL errors.
    server/src/main/java/org/apache/cloudstack/dns/dao/DnsZoneNetworkMapDao.java:1
  • The findByZoneId method parameter is named networkId, which is misleading and contradicts both the method name and implementation usage. Rename the parameter to dnsZoneId to avoid confusion and accidental misuse.
    ui/src/views/network/dns/DeleteDnsZone.vue:1
  • Two issues here: (1) v-html should be avoided unless strictly necessary because it renders raw HTML (and makes translations harder to reason about safely); prefer plain interpolation and style via components. (2) The confirmation text is hard-coded in English; convert it to an i18n string so it’s localizable like the rest of the UI.
    server/src/test/java/org/apache/cloudstack/dns/vo/DnsServerVOTest.java:1
  • There is a commented-out assertion left in the test. Either remove it or replace it with a real assertion that matches the current API/behavior to keep tests clean and avoid confusion about intended getDetail() behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread api/src/main/java/com/cloud/user/ResourceLimitService.java Outdated
Comment thread api/src/main/java/com/cloud/event/EventTypes.java
@sudo87
Copy link
Copy Markdown
Contributor Author

sudo87 commented May 4, 2026

@blueorangutan package

@blueorangutan
Copy link
Copy Markdown

@sudo87 a [SL] Jenkins job has been kicked to build packages. It will be bundled with no SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link
Copy Markdown

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 17706

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.

DNS Provider for CloudStack

5 participants