mirror of
https://github.com/GlueOps/autoglue.git
synced 2026-04-17 19:49:23 +02:00
* feat: add cluster metadata key-value store
- Add ClusterMetadata model with ClusterID FK, key, value fields
- Add Metadata []ClusterMetadata relation to Cluster model
- Add CRUD handlers: List, Get, Create, Update, Delete cluster metadata
- Keys are forced to lowercase on create/update
- Values preserve case sensitivity
- Add metadata routes under /clusters/{clusterID}/metadata
- Include metadata in ClusterResponse DTO and clusterToDTO mapping
- Add Preload(Metadata) to all cluster queries
- Register ClusterMetadata in AutoMigrate
Closes: internal-GlueOps/issues#302
* feat: include cluster metadata in prepare payload
- Preload cluster Metadata in ClusterPrepareWorker
- Map cluster metadata into mapper.ClusterToDTO response payload
This ensures metadata key-value pairs are injected into the platform JSON payload used by prepare/bootstrap flows.
* feat: add cluster metadata UI section to configure dialog
* feat: simplify cluster metadata to map[string]string in response
* fix: address cluster metadata PR review feedback
Agent-Logs-Url: https://github.com/GlueOps/autoglue/sessions/f767d4b8-ecae-4cde-bb5c-f0845c5a7cdf
Co-authored-by: yesterdaysrebel <256862558+yesterdaysrebel@users.noreply.github.com>
* chore: finalize review feedback updates
Agent-Logs-Url: https://github.com/GlueOps/autoglue/sessions/f767d4b8-ecae-4cde-bb5c-f0845c5a7cdf
Co-authored-by: yesterdaysrebel <256862558+yesterdaysrebel@users.noreply.github.com>
* chore: revert unintended go.sum change
Agent-Logs-Url: https://github.com/GlueOps/autoglue/sessions/f767d4b8-ecae-4cde-bb5c-f0845c5a7cdf
Co-authored-by: yesterdaysrebel <256862558+yesterdaysrebel@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yesterdaysrebel <256862558+yesterdaysrebel@users.noreply.github.com>
75 lines
2.8 KiB
Go
75 lines
2.8 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type ClusterResponse struct {
|
|
ID uuid.UUID `json:"id"`
|
|
Name string `json:"name"`
|
|
BaseURL string `json:"base_url"`
|
|
CaptainDomain *DomainResponse `json:"captain_domain,omitempty"`
|
|
ControlPlaneRecordSet *RecordSetResponse `json:"control_plane_record_set,omitempty"`
|
|
ControlPlaneFQDN *string `json:"control_plane_fqdn,omitempty"`
|
|
AppsLoadBalancer *LoadBalancerResponse `json:"apps_load_balancer,omitempty"`
|
|
GlueOpsLoadBalancer *LoadBalancerResponse `json:"glueops_load_balancer,omitempty"`
|
|
BastionServer *ServerResponse `json:"bastion_server,omitempty"`
|
|
Provider string `json:"cluster_provider"`
|
|
Region string `json:"region"`
|
|
Status string `json:"status"`
|
|
LastError string `json:"last_error"`
|
|
RandomToken string `json:"random_token"`
|
|
CertificateKey string `json:"certificate_key"`
|
|
NodePools []NodePoolResponse `json:"node_pools,omitempty"`
|
|
Metadata map[string]string `json:"metadata,omitempty"`
|
|
DockerImage string `json:"docker_image"`
|
|
DockerTag string `json:"docker_tag"`
|
|
Kubeconfig *string `json:"kubeconfig,omitempty"`
|
|
OrgKey *string `json:"org_key,omitempty"`
|
|
OrgSecret *string `json:"org_secret,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type CreateClusterRequest struct {
|
|
Name string `json:"name"`
|
|
ClusterProvider string `json:"cluster_provider"`
|
|
Region string `json:"region"`
|
|
DockerImage string `json:"docker_image"`
|
|
DockerTag string `json:"docker_tag"`
|
|
}
|
|
|
|
type UpdateClusterRequest struct {
|
|
Name *string `json:"name,omitempty"`
|
|
ClusterProvider *string `json:"cluster_provider,omitempty"`
|
|
Region *string `json:"region,omitempty"`
|
|
DockerImage *string `json:"docker_image,omitempty"`
|
|
DockerTag *string `json:"docker_tag,omitempty"`
|
|
}
|
|
|
|
type AttachCaptainDomainRequest struct {
|
|
DomainID uuid.UUID `json:"domain_id"`
|
|
}
|
|
|
|
type AttachRecordSetRequest struct {
|
|
RecordSetID uuid.UUID `json:"record_set_id"`
|
|
}
|
|
|
|
type AttachLoadBalancerRequest struct {
|
|
LoadBalancerID uuid.UUID `json:"load_balancer_id"`
|
|
}
|
|
|
|
type AttachBastionRequest struct {
|
|
ServerID uuid.UUID `json:"server_id"`
|
|
}
|
|
|
|
type SetKubeconfigRequest struct {
|
|
Kubeconfig string `json:"kubeconfig"`
|
|
}
|
|
|
|
type AttachNodePoolRequest struct {
|
|
NodePoolID uuid.UUID `json:"node_pool_id"`
|
|
}
|