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