shared

package
v0.20.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 30, 2023 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NamespaceLocatorAnnotation = "kcp.io/namespace-locator"
	TenantIDLabel              = "kcp.io/tenant-id"
)
View Source
const (
	// SyncerFinalizerNamePrefix is the finalizer put onto resources by the syncer to claim ownership,
	// *before* a downstream object is created. It is only removed when the downstream object is deleted.
	SyncerFinalizerNamePrefix = "workload.kcp.io/syncer-"
)

Variables

View Source
var SyncableClusterScopedResources = sets.New[string](schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumes"}.String())

SyncableClusterScopedResources holds a set of cluster-wide GVR that are allowed to be synced.

Functions

func DeprecatedGetAssignedSyncTarget deprecated

func DeprecatedGetAssignedSyncTarget(labels map[string]string) string

DeprecatedGetAssignedSyncTarget returns one assigned sync target in Sync state. It will likely lead to broken behaviour when there is one of those labels on a resource.

Deprecated: use GetResourceState per cluster instead.

func EnsureUpstreamFinalizerRemoved

func EnsureUpstreamFinalizerRemoved(ctx context.Context, gvr schema.GroupVersionResource, upstreamLister cache.GenericLister, upstreamClient dynamic.Interface, upstreamNamespace, syncTargetKey string, resourceName string) error

func GetDNSID

func GetDNSID(clusterName logicalcluster.Name, syncTargetUID types.UID, syncTargetName string) string

GetDNSID returns a unique ID for DNS object derived from the sync target name, its UID and workspace. It's a valid DNS segment and can be used as namespace or object names.

func GetTenantID

func GetTenantID(l NamespaceLocator) (string, error)

GetTenantID encodes the KCP tenant to which the namespace designated by the given NamespaceLocator belongs. It is based on the NamespaceLocator, but with an empty namespace value. The value will be the same for all downstream namespaces originating from the same KCP workspace / SyncTarget. The encoding is repeatable.

func GetUpstreamResourceName

func GetUpstreamResourceName(downstreamResourceGVR schema.GroupVersionResource, downstreamResourceName string) string

GetUpstreamResourceName returns the name with which the resource is known upstream.

func PhysicalClusterNamespaceName

func PhysicalClusterNamespaceName(l NamespaceLocator) (string, error)

PhysicalClusterNamespaceName encodes the NamespaceLocator into a new namespace name for use on a physical cluster. The encoding is repeatable.

Types

type Cleaner

type Cleaner interface {
	// PlanCleaning adds the key to the list of keys to be cleaned up.
	// If the resource was already planned for cleaning the previous timestamp is kept.
	PlanCleaning(key string)
	// CancelCleaning removes the key from the list of keys to be cleaned up.
	// If it wasn't planned for deletion, it does nothing.
	CancelCleaning(key string)
}

Cleaner is an interface for cleaning up resources.

type NamespaceLocator

type NamespaceLocator struct {
	SyncTarget  SyncTargetLocator   `json:"syncTarget"`
	ClusterName logicalcluster.Name `json:"cluster,omitempty"`
	Namespace   string              `json:"namespace"`
}

NamespaceLocator stores a logical cluster and namespace and is used as the source for the mapped namespace name in a physical cluster.

func LocatorFromAnnotations

func LocatorFromAnnotations(annotations map[string]string) (*NamespaceLocator, bool, error)

func NewNamespaceLocator

func NewNamespaceLocator(workspace, syncTargetClusterName logicalcluster.Name, syncTargetUID types.UID, syncTargetName, upstreamNamespace string) NamespaceLocator

func NewNamespaceLocatorV060

func NewNamespaceLocatorV060(workspace, syncTargetClusterName logicalcluster.Name, syncTargetUID types.UID, syncTargetName, upstreamNamespace string) NamespaceLocator

type SyncTargetLocator

type SyncTargetLocator struct {
	ClusterName    string    `json:"cluster,omitempty"`
	DeprecatedPath string    `json:"path,omitempty"`
	Name           string    `json:"name"`
	UID            types.UID `json:"uid"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL