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:
2025-09-09 15:08:28 +00:00
parent 38e8b4086d
commit 766191899c
19 changed files with 2174 additions and 99 deletions

View File

@@ -120,21 +120,21 @@ export class CloudlyViewServices extends DeesElement {
<dees-input-dropdown
.key=${'serviceCategory'}
.label=${'Service Category'}
.options=${['base', 'distributed', 'workload']}
.options=${[{key: 'base', option: 'Base'}, {key: 'distributed', option: 'Distributed'}, {key: 'workload', option: 'Workload'}]}
.value=${'workload'}
.required=${true}>
</dees-input-dropdown>
<dees-input-dropdown
.key=${'deploymentStrategy'}
.label=${'Deployment Strategy'}
.options=${['all-nodes', 'limited-replicas', 'custom']}
.options=${[{key: 'all-nodes', option: 'All Nodes'}, {key: 'limited-replicas', option: 'Limited Replicas'}, {key: 'custom', option: 'Custom'}]}
.value=${'custom'}
.required=${true}>
</dees-input-dropdown>
<dees-input-text
.key=${'maxReplicas'}
.label=${'Max Replicas (for distributed services)'}
.value=${'3'}
.value=${'1'}
.type=${'number'}>
</dees-input-text>
<dees-input-checkbox
@@ -154,7 +154,7 @@ export class CloudlyViewServices extends DeesElement {
<dees-input-dropdown
.key=${'balancingStrategy'}
.label=${'Balancing Strategy'}
.options=${['round-robin', 'least-connections']}
.options=${[{key: 'round-robin', option: 'Round Robin'}, {key: 'least-connections', option: 'Least Connections'}]}
.value=${'round-robin'}
.required=${true}>
</dees-input-dropdown>
@@ -223,14 +223,14 @@ export class CloudlyViewServices extends DeesElement {
<dees-input-dropdown
.key=${'serviceCategory'}
.label=${'Service Category'}
.options=${['base', 'distributed', 'workload']}
.options=${[{key: 'base', option: 'Base'}, {key: 'distributed', option: 'Distributed'}, {key: 'workload', option: 'Workload'}]}
.value=${service.data.serviceCategory || 'workload'}
.required=${true}>
</dees-input-dropdown>
<dees-input-dropdown
.key=${'deploymentStrategy'}
.label=${'Deployment Strategy'}
.options=${['all-nodes', 'limited-replicas', 'custom']}
.options=${[{key: 'all-nodes', option: 'All Nodes'}, {key: 'limited-replicas', option: 'Limited Replicas'}, {key: 'custom', option: 'Custom'}]}
.value=${service.data.deploymentStrategy || 'custom'}
.required=${true}>
</dees-input-dropdown>
@@ -256,7 +256,7 @@ export class CloudlyViewServices extends DeesElement {
<dees-input-dropdown
.key=${'balancingStrategy'}
.label=${'Balancing Strategy'}
.options=${['round-robin', 'least-connections']}
.options=${[{key: 'round-robin', option: 'Round Robin'}, {key: 'least-connections', option: 'Least Connections'}]}
.value=${service.data.balancingStrategy}
.required=${true}>
</dees-input-dropdown>