diff --git a/ts/manager.dns/classes.dnsmanager.ts b/ts/manager.dns/classes.dnsmanager.ts
index 4bf248e..24e6e7c 100644
--- a/ts/manager.dns/classes.dnsmanager.ts
+++ b/ts/manager.dns/classes.dnsmanager.ts
@@ -69,6 +69,16 @@ export class DnsManager {
this.cloudlyRef.authManager.validIdentityGuard,
]);
+ // Validate domain exists if domainId is provided
+ if (reqArg.dnsEntryData.domainId) {
+ const domain = await this.cloudlyRef.domainManager.CDomain.getDomainById(reqArg.dnsEntryData.domainId);
+ if (!domain) {
+ throw new Error(`Domain with id ${reqArg.dnsEntryData.domainId} not found`);
+ }
+ // Set the zone from the domain name
+ reqArg.dnsEntryData.zone = domain.data.name;
+ }
+
const dnsEntry = await this.CDnsEntry.createDnsEntry(reqArg.dnsEntryData);
return {
@@ -87,6 +97,16 @@ export class DnsManager {
this.cloudlyRef.authManager.validIdentityGuard,
]);
+ // Validate domain exists if domainId is provided
+ if (reqArg.dnsEntryData.domainId) {
+ const domain = await this.cloudlyRef.domainManager.CDomain.getDomainById(reqArg.dnsEntryData.domainId);
+ if (!domain) {
+ throw new Error(`Domain with id ${reqArg.dnsEntryData.domainId} not found`);
+ }
+ // Set the zone from the domain name
+ reqArg.dnsEntryData.zone = domain.data.name;
+ }
+
const dnsEntry = await this.CDnsEntry.updateDnsEntry(
reqArg.dnsEntryId,
reqArg.dnsEntryData
diff --git a/ts_web/elements/cloudly-view-dns.ts b/ts_web/elements/cloudly-view-dns.ts
index 6b570ce..04a8a56 100644
--- a/ts_web/elements/cloudly-view-dns.ts
+++ b/ts_web/elements/cloudly-view-dns.ts
@@ -19,6 +19,7 @@ export class CloudlyViewDns extends DeesElement {
secretGroups: [],
secretBundles: [],
dnsEntries: [],
+ domains: [],
};
constructor() {
@@ -31,6 +32,12 @@ export class CloudlyViewDns extends DeesElement {
this.rxSubscriptions.push(subscription);
}
+ async connectedCallback() {
+ super.connectedCallback();
+ // Load all data including domains and DNS entries
+ await appstate.dataState.dispatchAction(appstate.getAllDataAction, {});
+ }
+
public static styles = [
cssManager.defaultStyles,
shared.viewHostCss,
@@ -120,12 +127,15 @@ export class CloudlyViewDns extends DeesElement {
.value=${'A'}
.required=${true}>
- ({
+ key: domain.id,
+ option: domain.data.name
+ })) || []}
.required=${true}>
-
+
- ({
+ key: domain.id,
+ option: domain.data.name
+ })) || []}
+ .value=${dnsEntry.data.domainId || ''}
.required=${true}>
-
+