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}> - +