omni/internal/backend/runtime/kubernetes/cleanup.go
Artem Chernyshev ed946b30a6
feat: display OMNI_ENDPOINT in the service account creation UI
Fixes: https://github.com/siderolabs/omni/issues/858

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2025-01-29 15:27:36 +03:00

37 lines
1015 B
Go

// Copyright (c) 2025 Sidero Labs, Inc.
//
// Use of this software is governed by the Business Source License
// included in the LICENSE file.
package kubernetes
import "sync"
// ClusterCleanuper is an interface for cleaning up clusters when they are being removed.
type ClusterCleanuper interface {
ClusterRemove(clusterName string)
}
// cleanuperTracker tracks registered ClusterCleanupers.
type cleanuperTracker struct {
cleanupers []ClusterCleanuper
cleanupersMu sync.Mutex
}
// RegisterCleanuper adds a cleanup handler to the list so that it gets called when cluster is removed.
func (cleanuper *cleanuperTracker) RegisterCleanuper(c ClusterCleanuper) {
cleanuper.cleanupersMu.Lock()
defer cleanuper.cleanupersMu.Unlock()
cleanuper.cleanupers = append(cleanuper.cleanupers, c)
}
func (cleanuper *cleanuperTracker) triggerCleanupers(cluster string) {
cleanuper.cleanupersMu.Lock()
defer cleanuper.cleanupersMu.Unlock()
for _, c := range cleanuper.cleanupers {
c.ClusterRemove(cluster)
}
}