Files

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
}