[WIP] DNS provider framework - PowerDNS plugin#12737
[WIP] DNS provider framework - PowerDNS plugin#12737sudo87 wants to merge 39 commits intoapache:mainfrom
Conversation
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
…n svc and handle dot version in client
…elete events 2. add dnsrecordurl in nic_details table 3. add dnsrecordurl in vm response
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #12737 +/- ##
============================================
+ Coverage 18.00% 18.24% +0.23%
- Complexity 16455 16811 +356
============================================
Files 5976 6029 +53
Lines 537582 540234 +2652
Branches 66006 66325 +319
============================================
+ Hits 96784 98548 +1764
- Misses 429885 430665 +780
- Partials 10913 11021 +108
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch. |
|
This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch. |
… zone and cleanup methods for dns server and zone
…k response changes
e9de026 to
981bb64
Compare
…and ownership issue for associate/disassociate dnsZoneToNetwork
a6e812b to
bde9fd9
Compare
1. Remove usage of in-memory eventBus for VM lifecycle events 2. Publish event for VM, NIC and DNS record delete events into messageBus 3. Introducer subscribers for above topics
|
@blueorangutan package |
|
@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. |
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 17245 |
|
This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch. |
1. new messageSubscriber to handle dns record create/delete event 2. instance dns record registration uses hostname, prepend random 3 char if conflict
|
@blueorangutan package |
|
@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 package |
|
@weizhouapache 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. |
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 17395 |
weizhouapache
left a comment
There was a problem hiding this comment.
technically it looks fine overall.
left some minor comments
| @Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "Record name") | ||
| private String name; | ||
|
|
||
| @Parameter(name = ApiConstants.TYPE, type = CommandType.STRING, required = true, description = "Record type (A, CNAME)") |
There was a problem hiding this comment.
@sudo87
It looks like more record types are supported, right ?
if so, can you update the description ?
| <maven.compiler.source>11</maven.compiler.source> | ||
| <maven.compiler.target>11</maven.compiler.target> | ||
| <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
| </properties> |
| -- ====================================================================== | ||
|
|
||
| -- DNS Server Table (Stores DNS Server Configurations) | ||
| CREATE TABLE `cloud`.`dns_server` ( |
There was a problem hiding this comment.
CREATE TABLE IF NOT EXISTS ?
other tables too
|
|
||
| -- Set default limit to 10 DNS zones for standard Accounts | ||
| INSERT INTO `cloud`.`configuration` (`category`, `instance`, `component`, `name`, `value`, `description`, `default_value`) | ||
| VALUES ('Advanced', 'DEFAULT', 'ResourceLimitManager', 'max.account.dns_zones', '10', 'The default maximum number of DNS zones that can be created by an Account', '10'); |
There was a problem hiding this comment.
what about projects and domains ?
|
|
||
| @Encrypt | ||
| @Column(name = "api_key") | ||
| private String apiKey; |
There was a problem hiding this comment.
the API parameter is credentials, but database column name is api_key
what if there are multiple secrets ? for example both credentials and apikey (just an example) ?
can they be stored in the same column with a separator ?
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. PowerDNS is the first provider for initial implementation.
Github issue: #9958
Cwiki: https://cwiki.apache.org/confluence/display/CLOUDSTACK/DNS+Framework+and+Plugins
Types of changes
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
Bug Severity
Screenshots (if appropriate):
How Has This Been Tested?
How did you try to break this feature and the system with this change?