feat(dns): Implement DNS management functionality
- Added DnsManager and DnsEntry classes to handle DNS entries. - Introduced new interfaces for DNS entry requests and data structures. - Updated Cloudly class to include DnsManager instance. - Enhanced app state to manage DNS entries and actions for creating, updating, and deleting DNS records. - Created UI components for DNS management, including forms for adding and editing DNS entries. - Updated overview and services views to reflect DNS entries. - Added validation and formatting methods for DNS entries.
This commit is contained in:
93
ts_interfaces/requests/dns.ts
Normal file
93
ts_interfaces/requests/dns.ts
Normal file
@@ -0,0 +1,93 @@
|
||||
import * as plugins from '../plugins.js';
|
||||
import type { IDnsEntry } from '../data/dns.js';
|
||||
import type { IIdentity } from '../data/user.js';
|
||||
|
||||
export interface IRequest_Any_Cloudly_GetDnsEntries
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_GetDnsEntries
|
||||
> {
|
||||
method: 'getDnsEntries';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
zone?: string; // Optional filter by zone
|
||||
};
|
||||
response: {
|
||||
dnsEntries: IDnsEntry[];
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_GetDnsEntryById
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_GetDnsEntryById
|
||||
> {
|
||||
method: 'getDnsEntryById';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
dnsEntryId: string;
|
||||
};
|
||||
response: {
|
||||
dnsEntry: IDnsEntry;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_CreateDnsEntry
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_CreateDnsEntry
|
||||
> {
|
||||
method: 'createDnsEntry';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
dnsEntryData: IDnsEntry['data'];
|
||||
};
|
||||
response: {
|
||||
dnsEntry: IDnsEntry;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_UpdateDnsEntry
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_UpdateDnsEntry
|
||||
> {
|
||||
method: 'updateDnsEntry';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
dnsEntryId: string;
|
||||
dnsEntryData: IDnsEntry['data'];
|
||||
};
|
||||
response: {
|
||||
dnsEntry: IDnsEntry;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_DeleteDnsEntry
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_DeleteDnsEntry
|
||||
> {
|
||||
method: 'deleteDnsEntry';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
dnsEntryId: string;
|
||||
};
|
||||
response: {
|
||||
success: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_GetDnsZones
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_GetDnsZones
|
||||
> {
|
||||
method: 'getDnsZones';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
};
|
||||
response: {
|
||||
zones: string[];
|
||||
};
|
||||
}
|
99
ts_interfaces/requests/domain.ts
Normal file
99
ts_interfaces/requests/domain.ts
Normal file
@@ -0,0 +1,99 @@
|
||||
import * as plugins from '../plugins.js';
|
||||
import type { IDomain } from '../data/domain.js';
|
||||
import type { IIdentity } from '../data/user.js';
|
||||
|
||||
export interface IRequest_Any_Cloudly_GetDomains
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_GetDomains
|
||||
> {
|
||||
method: 'getDomains';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
};
|
||||
response: {
|
||||
domains: IDomain[];
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_GetDomainById
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_GetDomainById
|
||||
> {
|
||||
method: 'getDomainById';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
domainId: string;
|
||||
};
|
||||
response: {
|
||||
domain: IDomain;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_CreateDomain
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_CreateDomain
|
||||
> {
|
||||
method: 'createDomain';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
domainData: IDomain['data'];
|
||||
};
|
||||
response: {
|
||||
domain: IDomain;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_UpdateDomain
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_UpdateDomain
|
||||
> {
|
||||
method: 'updateDomain';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
domainId: string;
|
||||
domainData: IDomain['data'];
|
||||
};
|
||||
response: {
|
||||
domain: IDomain;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_DeleteDomain
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_DeleteDomain
|
||||
> {
|
||||
method: 'deleteDomain';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
domainId: string;
|
||||
};
|
||||
response: {
|
||||
success: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export interface IRequest_Any_Cloudly_VerifyDomain
|
||||
extends plugins.typedrequestInterfaces.implementsTR<
|
||||
plugins.typedrequestInterfaces.ITypedRequest,
|
||||
IRequest_Any_Cloudly_VerifyDomain
|
||||
> {
|
||||
method: 'verifyDomain';
|
||||
request: {
|
||||
identity: IIdentity;
|
||||
domainId: string;
|
||||
verificationMethod?: 'dns' | 'http' | 'email' | 'manual';
|
||||
};
|
||||
response: {
|
||||
domain: IDomain;
|
||||
verificationResult: {
|
||||
success: boolean;
|
||||
message?: string;
|
||||
details?: any;
|
||||
};
|
||||
};
|
||||
}
|
@@ -6,6 +6,8 @@ import * as certificateRequests from './certificate.js';
|
||||
import * as clusterRequests from './cluster.js';
|
||||
import * as configRequests from './config.js';
|
||||
import * as deploymentRequests from './deployment.js';
|
||||
import * as dnsRequests from './dns.js';
|
||||
import * as domainRequests from './domain.js';
|
||||
import * as externalRegistryRequests from './externalregistry.js';
|
||||
import * as identityRequests from './identity.js';
|
||||
import * as imageRequests from './image.js';
|
||||
@@ -29,6 +31,8 @@ export {
|
||||
clusterRequests as cluster,
|
||||
configRequests as config,
|
||||
deploymentRequests as deployment,
|
||||
dnsRequests as dns,
|
||||
domainRequests as domain,
|
||||
externalRegistryRequests as externalRegistry,
|
||||
identityRequests as identity,
|
||||
imageRequests as image,
|
||||
|
Reference in New Issue
Block a user