mirror of
https://github.com/open-cluster-management-io/ocm.git
synced 2026-08-19 12:16:46 +00:00
46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
package helpers
|
|
|
|
import (
|
|
"k8s.io/apimachinery/pkg/labels"
|
|
"k8s.io/apimachinery/pkg/util/sets"
|
|
|
|
clusterlister "open-cluster-management.io/api/client/cluster/listers/cluster/v1beta1"
|
|
clusterv1beta1 "open-cluster-management.io/api/cluster/v1beta1"
|
|
clustersdkv1beta1 "open-cluster-management.io/sdk-go/pkg/apis/cluster/v1beta1"
|
|
)
|
|
|
|
const (
|
|
// GcFinalizer is added to the managedCluster for resource cleanup, which maintained by gc controller.
|
|
GcFinalizer = "cluster.open-cluster-management.io/resource-cleanup"
|
|
)
|
|
|
|
type PlacementDecisionGetter struct {
|
|
Client clusterlister.PlacementDecisionLister
|
|
}
|
|
|
|
func (pdl PlacementDecisionGetter) List(selector labels.Selector, namespace string) ([]*clusterv1beta1.PlacementDecision, error) {
|
|
return pdl.Client.PlacementDecisions(namespace).List(selector)
|
|
}
|
|
|
|
// Get added and deleted clusters names
|
|
func GetClusterChanges(client clusterlister.PlacementDecisionLister, placement *clusterv1beta1.Placement,
|
|
existingClusters sets.Set[string]) (sets.Set[string], sets.Set[string], error) {
|
|
pdtracker := clustersdkv1beta1.NewPlacementDecisionClustersTracker(
|
|
placement, PlacementDecisionGetter{Client: client}, existingClusters)
|
|
|
|
return pdtracker.GetClusterChanges()
|
|
}
|
|
|
|
func HasFinalizer(finalizers []string, finalizer string) bool {
|
|
if len(finalizers) == 0 || len(finalizer) == 0 {
|
|
return false
|
|
}
|
|
|
|
for i := range finalizers {
|
|
if finalizers[i] == finalizer {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|