mirror of
https://github.com/siderolabs/omni.git
synced 2025-08-12 04:26:59 +02:00
Omni is source-available under BUSL. Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com> Co-Authored-By: Artem Chernyshev <artem.chernyshev@talos-systems.com> Co-Authored-By: Utku Ozdemir <utku.ozdemir@siderolabs.com> Co-Authored-By: Dmitriy Matrenichev <dmitry.matrenichev@siderolabs.com> Co-Authored-By: Philipp Sauter <philipp.sauter@siderolabs.com> Co-Authored-By: Noel Georgi <git@frezbo.dev> Co-Authored-By: evgeniybryzh <evgeniybryzh@gmail.com> Co-Authored-By: Tim Jones <tim.jones@siderolabs.com> Co-Authored-By: Andrew Rynhard <andrew@rynhard.io> Co-Authored-By: Spencer Smith <spencer.smith@talos-systems.com> Co-Authored-By: Christian Rolland <christian.rolland@siderolabs.com> Co-Authored-By: Gerard de Leeuw <gdeleeuw@leeuwit.nl> Co-Authored-By: Steve Francis <67986293+steverfrancis@users.noreply.github.com> Co-Authored-By: Volodymyr Mazurets <volodymyrmazureets@gmail.com>
37 lines
1015 B
Go
37 lines
1015 B
Go
// Copyright (c) 2024 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)
|
|
}
|
|
}
|