Documentation
¶
Index ¶
- Constants
- Variables
- func ComposePredicates(predicates ...predicate.Predicate) predicate.Predicate
- func ContainsPeerRef(slice []multiclusterv1alpha1.PeerRef, peerRef *multiclusterv1alpha1.PeerRef) bool
- func ContainsString(slice []string, s string) bool
- func ContainsSubject(slice []rbacv1.Subject, subject *rbacv1.Subject) bool
- func ContainsSuffix(slice []string, s string) bool
- func CreateDestinationSecret(secretNameAndNamespace types.NamespacedName, ...) *corev1.Secret
- func CreateOrUpdateManagedClusterView(ctx context.Context, client ctrlClient.Client, resourceToFindName string, ...) (*viewv1beta1.ManagedClusterView, controllerutil.OperationResult, error)
- func CreateOrUpdateManifestWork(ctx context.Context, c client.Client, name string, namespace string, ...) (controllerutil.OperationResult, error)
- func CreateOrUpdateObjectBucketClaim(ctx context.Context, c client.Client, bucketName, bucketNamespace string, ...) (controllerutil.OperationResult, error)
- func CreatePeerRefFromSecret(secret *corev1.Secret) (multiclusterv1alpha1.PeerRef, error)
- func CreateSourceSecret(secretNameAndNamespace types.NamespacedName, ...) *corev1.Secret
- func CreateUniqueName(params ...string) string
- func CreateUniqueReplicationId(clusterFSIDs map[string]string) (string, error)
- func CreateUniqueSecretName(managedCluster, storageClusterNamespace, storageClusterName string, ...) string
- func CreateUniqueSecretNameForClient(providerKey, clientKey1, clientKey2 string) string
- func DecodeConfigMap(objJson []byte) (*corev1.ConfigMap, error)
- func DoesAnotherMirrorPeerPointToPeerRef(ctx context.Context, rc client.Client, peerRef *multiclusterv1alpha1.PeerRef) (bool, error)
- func FetchAllCephClusters(ctx context.Context, client client.Client) (*rookv1.CephClusterList, error)
- func FetchAllMirrorPeers(ctx context.Context, rc client.Client) ([]multiclusterv1alpha1.MirrorPeer, error)
- func FetchAllSecretsWithLabel(ctx context.Context, rc client.Client, namespace string, ...) ([]corev1.Secret, error)
- func FetchConfigMap(ctx context.Context, c client.Client, name, namespace string) (*corev1.ConfigMap, error)
- func FetchMirrorPeerByName(ctx context.Context, rc client.Client, name string) (*multiclusterv1alpha1.MirrorPeer, error)
- func FetchSecretWithName(ctx context.Context, rc client.Client, secretName types.NamespacedName) (*corev1.Secret, error)
- func FindMatchingSecretWithPeerRef(peerRef multiclusterv1alpha1.PeerRef, secrets []corev1.Secret) *corev1.Secret
- func FnvHash(s string) uint32
- func GenerateBucketName(mirrorPeer multiclusterv1alpha1.MirrorPeer, hasStorageClientRef bool) string
- func GenerateUniqueIdForMirrorPeer(mirrorPeer multiclusterv1alpha1.MirrorPeer, hasStorageClientRef bool) string
- func GetCurrentStorageClusterRef(mp *multiclusterv1alpha1.MirrorPeer, spokeClusterName string) (*multiclusterv1alpha1.StorageClusterRef, error)
- func GetEnv(key, defaultValue string) string
- func GetKey(clusterName, clientName string) string
- func GetLogger(zapL *zap.Logger) *slog.Logger
- func GetManagedClusterById(ctx context.Context, c client.Client, clusterId string) (*clusterv1.ManagedCluster, error)
- func GetManagedClusterView(client ctrlClient.Client, name, namespace string) (*viewv1beta1.ManagedClusterView, error)
- func GetManagedClusterViewName(clusterName string) string
- func GetManifestWork(ctx context.Context, c client.Client, manifestWorkName string, ...) (*workv1.ManifestWork, error)
- func GetNamespacedNameForClusterInfo(managedCluster clusterv1.ManagedCluster) (types.NamespacedName, error)
- func GetODFInfoConfigMap(ctx context.Context, c client.Client, namespace string) (*corev1.ConfigMap, error)
- func GetObjectBucketClaim(ctx context.Context, c client.Client, bucketName, bucketNamespace string) (*obv1alpha1.ObjectBucketClaim, error)
- func GetPeerRefForSpokeCluster(mp *multiclusterv1alpha1.MirrorPeer, spokeClusterName string) (*multiclusterv1alpha1.PeerRef, error)
- func GetSecretNameByPeerRef(pr multiclusterv1alpha1.PeerRef, prefix ...string) string
- func GetStorageClusterFromCurrentNamespace(ctx context.Context, c client.Client, namespace string) (*ocsv1.StorageCluster, error)
- func GetZapLogger(dev bool) *zap.Logger
- func HasHubRecoveryLabels(secret *corev1.Secret) bool
- func HasRequiredODFKey(mc *clusterv1.ManagedCluster) bool
- func IsSecretDestination(obj client.Object) bool
- func IsSecretInternal(obj client.Object) bool
- func IsSecretSource(obj client.Object) bool
- func IsStorageClientType(ctx context.Context, c client.Client, ...) (bool, error)
- func RemoveMirrorPeer(slice []multiclusterv1alpha1.MirrorPeer, ...) (result []multiclusterv1alpha1.MirrorPeer)
- func RemoveString(slice []string, s string) (result []string)
- func ScaleDeployment(ctx context.Context, client client.Client, deploymentName string, ...) (bool, error)
- func SplitKeyForNamespacedName(key string) types.NamespacedName
- func ValidateDestinationSecret(sourceSecret *corev1.Secret) error
- func ValidateInternalSecret(internalSecret *corev1.Secret, expectedLabel SecretLabelType) error
- func ValidateS3Secret(data map[string][]byte) bool
- func ValidateSourceSecret(sourceSecret *corev1.Secret) error
- type ClusterType
- type HubToken
- type PeerRefType
- type RookToken
- type RookTokenExternal
- type S3Token
- type SecretLabelType
Constants ¶
const ( ODFInfoConfigMapName = "odf-info" ConfigMapResourceType = "ConfigMap" ClientInfoConfigMapName = "odf-client-info" StorageClusterPeerNameAnnotationKey = "ocs.openshift.io/storage-cluster-peer" )
const ( BucketGenerateName = "odrbucket" // s3 S3ProfilePrefix = "s3profile" S3Endpoint = "s3CompatibleEndpoint" S3BucketName = "s3Bucket" S3ProfileName = "s3ProfileName" S3Region = "s3Region" AwsAccessKeyId = "AWS_ACCESS_KEY_ID" AwsSecretAccessKey = "AWS_SECRET_ACCESS_KEY" // ramen RamenHubOperatorConfigName = "ramen-hub-operator-config" //handlers RookSecretHandlerName = "rook" S3SecretHandlerName = "s3" DRModeAnnotationKey = "multicluster.openshift.io/mode" MirrorPeerNameAnnotationKey = "multicluster.odf.openshift.io/mirrorpeer" )
const ( SourceLabel SecretLabelType = "BLUE" DestinationLabel SecretLabelType = "GREEN" InternalLabel SecretLabelType = "INTERNAL" IgnoreLabel SecretLabelType = "IGNORE" ProviderLabel SecretLabelType = "PROVIDER" SecretLabelTypeKey = "multicluster.odf.openshift.io/secret-type" CreatedByLabelKey = "multicluster.odf.openshift.io/created-by" NamespaceKey = "namespace" StorageClusterNameKey = "storage-cluster-name" SecretDataKey = "secret-data" SecretOriginKey = "secret-origin" MirrorPeerSecret = "mirrorpeersecret" RookTokenKey = "token" ClusterTypeKey = "cluster_type" HubRecoveryLabel = "cluster.open-cluster-management.io/backup" )
const MCVLabelKey = "multicluster.odf.openshift.io/cluster"
const MCVNameTemplate = "odf-multicluster-mcv-%s"
const (
OdfInfoClusterClaimNamespacedName = "odfinfo.odf.openshift.io"
)
Variables ¶
var OriginMap = map[string]string{"RookOrigin": "rook", "S3Origin": "S3"}
var SourceOrDestinationPredicate = predicate.Funcs{ CreateFunc: func(e event.CreateEvent) bool { return IsSecretSource(e.Object) || IsSecretInternal(e.Object) }, DeleteFunc: func(e event.DeleteEvent) bool { return IsSecretSource(e.Object) || IsSecretDestination(e.Object) }, UpdateFunc: func(e event.UpdateEvent) bool { return (IsSecretSource(e.ObjectOld) && IsSecretSource(e.ObjectNew)) || (IsSecretDestination(e.ObjectOld) && IsSecretDestination(e.ObjectNew)) || IsSecretInternal(e.ObjectOld) && IsSecretInternal(e.ObjectNew) }, GenericFunc: func(_ event.GenericEvent) bool { return false }, }
SourceOrDestinationPredicate is a predicate that matches events that check whether a secret has required source or destination labels or not.
Functions ¶
func ComposePredicates ¶
ComposePredicates will compose a variable number of predicates and return a predicate that will allow events that are allowed by any of the given predicates.
func ContainsPeerRef ¶
func ContainsPeerRef(slice []multiclusterv1alpha1.PeerRef, peerRef *multiclusterv1alpha1.PeerRef) bool
ContainsPeerRef checks if a slice of PeerRef contains the provided PeerRef
func ContainsString ¶
ContainsString checks if a slice of strings contains the provided string
func ContainsSuffix ¶
func CreateDestinationSecret ¶
func CreateDestinationSecret(secretNameAndNamespace types.NamespacedName, storageClusterNameAndNamespace types.NamespacedName, secretData []byte, secretOrigin string) *corev1.Secret
CreateDestinationSecret creates a destination secret
func CreateOrUpdateManagedClusterView ¶
func CreateOrUpdateManagedClusterView(ctx context.Context, client ctrlClient.Client, resourceToFindName string, resourceToFindNamespace string, resourceToFindType string, clusterName string, ownerRef *metav1.OwnerReference) (*viewv1beta1.ManagedClusterView, controllerutil.OperationResult, error)
func CreateOrUpdateManifestWork ¶
func CreateOrUpdateManifestWork(ctx context.Context, c client.Client, name string, namespace string, objJson []byte, ownerRef metav1.OwnerReference) (controllerutil.OperationResult, error)
func CreateOrUpdateObjectBucketClaim ¶
func CreateOrUpdateObjectBucketClaim(ctx context.Context, c client.Client, bucketName, bucketNamespace string, annotations map[string]string) (controllerutil.OperationResult, error)
func CreatePeerRefFromSecret ¶
func CreatePeerRefFromSecret(secret *corev1.Secret) (multiclusterv1alpha1.PeerRef, error)
CreatePeerRefFromSecret function creates a 'PeerRef' object from the internal secret details
func CreateSourceSecret ¶
func CreateSourceSecret(secretNameAndNamespace types.NamespacedName, storageClusterNameAndNamespace types.NamespacedName, secretData []byte, SecretOrigin string) *corev1.Secret
CreateSourceSecret creates a source secret
func CreateUniqueName ¶
CreateUniqueName function creates a sha512 hex sum from the given parameters
func CreateUniqueSecretName ¶
func CreateUniqueSecretName(managedCluster, storageClusterNamespace, storageClusterName string, prefix ...string) string
CreateUniqueSecretName function creates a name of 40 chars using sha512 hex sum from the given parameters
func DoesAnotherMirrorPeerPointToPeerRef ¶
func DoesAnotherMirrorPeerPointToPeerRef(ctx context.Context, rc client.Client, peerRef *multiclusterv1alpha1.PeerRef) (bool, error)
DoesAnotherMirrorPeerPointToPeerRef checks if another mirrorpeer is pointing to the provided peer ref
func FetchAllCephClusters ¶
func FetchAllMirrorPeers ¶
func FetchAllMirrorPeers(ctx context.Context, rc client.Client) ([]multiclusterv1alpha1.MirrorPeer, error)
func FetchAllSecretsWithLabel ¶
func FetchAllSecretsWithLabel(ctx context.Context, rc client.Client, namespace string, secretLabelType SecretLabelType) ([]corev1.Secret, error)
FetchAllSecretsWithLabel will get all the internal secrets in the namespace and with the provided label if the namespace is empty, it will fetch from all the namespaces if the label type is 'Ignore', it will fetch all the internal secrets (both source and destination)
func FetchConfigMap ¶
func FetchConfigMap(ctx context.Context, c client.Client, name, namespace string) (*corev1.ConfigMap, error)
FetchConfigMap fetches a ConfigMap with a given name from a given namespace
func FetchMirrorPeerByName ¶
func FetchMirrorPeerByName(ctx context.Context, rc client.Client, name string) (*multiclusterv1alpha1.MirrorPeer, error)
func FetchSecretWithName ¶
func FnvHash ¶
fnv64a is a 64-bit non-cryptographic hash algorithm with a low collision and a high distribution rate. https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function
func GenerateBucketName ¶
func GenerateBucketName(mirrorPeer multiclusterv1alpha1.MirrorPeer, hasStorageClientRef bool) string
func GenerateUniqueIdForMirrorPeer ¶
func GenerateUniqueIdForMirrorPeer(mirrorPeer multiclusterv1alpha1.MirrorPeer, hasStorageClientRef bool) string
func GetCurrentStorageClusterRef ¶
func GetCurrentStorageClusterRef(mp *multiclusterv1alpha1.MirrorPeer, spokeClusterName string) (*multiclusterv1alpha1.StorageClusterRef, error)
func GetManagedClusterById ¶
func GetManagedClusterById(ctx context.Context, c client.Client, clusterId string) (*clusterv1.ManagedCluster, error)
GetManagedClusterById fetches a ManagedCluster by its cluster ID label
func GetManagedClusterView ¶
func GetManagedClusterView(client ctrlClient.Client, name, namespace string) (*viewv1beta1.ManagedClusterView, error)
func GetManifestWork ¶
func GetNamespacedNameForClusterInfo ¶
func GetNamespacedNameForClusterInfo(managedCluster clusterv1.ManagedCluster) (types.NamespacedName, error)
func GetODFInfoConfigMap ¶
func GetODFInfoConfigMap(ctx context.Context, c client.Client, namespace string) (*corev1.ConfigMap, error)
GetODFInfoConfigMap fetches the odf-info ConfigMap from the given namespace. This will only work on the managed cluster
func GetObjectBucketClaim ¶
func GetObjectBucketClaim(ctx context.Context, c client.Client, bucketName, bucketNamespace string) (*obv1alpha1.ObjectBucketClaim, error)
func GetPeerRefForSpokeCluster ¶
func GetPeerRefForSpokeCluster(mp *multiclusterv1alpha1.MirrorPeer, spokeClusterName string) (*multiclusterv1alpha1.PeerRef, error)
GetPeerRefForSpokeCluster returns the peer ref for the cluster name
func GetSecretNameByPeerRef ¶
func GetSecretNameByPeerRef(pr multiclusterv1alpha1.PeerRef, prefix ...string) string
func GetZapLogger ¶
func HasHubRecoveryLabels ¶
func HasRequiredODFKey ¶
func HasRequiredODFKey(mc *clusterv1.ManagedCluster) bool
func IsSecretDestination ¶
IsSecretDestination returns true if the provided object is a secret with Destination label
func IsSecretInternal ¶
IsSecretInternal returns true if the provided object is a secret with Inernal label
func IsSecretSource ¶
IsSecretSource returns true if the provided object is a secret with Source label
func IsStorageClientType ¶
func IsStorageClientType(ctx context.Context, c client.Client, mirrorPeer multiclusterv1alpha1.MirrorPeer, isManagedCluster bool) (bool, error)
IsStorageClientType checks if peerRefs on MirrorPeer is of type StorageClient or StorageCluster
func RemoveMirrorPeer ¶
func RemoveMirrorPeer(slice []multiclusterv1alpha1.MirrorPeer, mirrorPeer multiclusterv1alpha1.MirrorPeer) (result []multiclusterv1alpha1.MirrorPeer)
RemoveMirrorPeer removes the given mirrorPeer from the slice and returns the new slice
func RemoveString ¶
RemoveString removes a given string from a slice and returns the new slice
func ScaleDeployment ¶
func SplitKeyForNamespacedName ¶
func SplitKeyForNamespacedName(key string) types.NamespacedName
func ValidateDestinationSecret ¶
ValidateDestinationSecret validates whether the given secret is a Destination type
func ValidateInternalSecret ¶
func ValidateInternalSecret(internalSecret *corev1.Secret, expectedLabel SecretLabelType) error
func ValidateS3Secret ¶
func ValidateSourceSecret ¶
ValidateSourceSecret validates whether the given secret is a Source type
Types ¶
type ClusterType ¶
type ClusterType string
const ( CONVERGED ClusterType = "Converged" EXTERNAL ClusterType = "External" UNKNOWN ClusterType = "Unknown" CephClusterReplicationIdLabel = "replicationid.multicluster.openshift.io" )
func GetClusterType ¶
type PeerRefType ¶
type PeerRefType string
const ( // PeerRefTypeStorageClient represents a storage client PeerRefTypeStorageClient PeerRefType = "StorageClient" // PeerRefTypeStorageCluster represents a storage cluster PeerRefTypeStorageCluster PeerRefType = "StorageCluster" // PeerRefTypeUnknown represents an unknown type PeerRefTypeUnknown PeerRefType = "Unknown" )
type RookToken ¶
type RookTokenExternal ¶
type RookTokenExternal struct { CephSecret string `json:"ceph-secret,omitempty"` CephUsername string `json:"ceph-username,omitempty"` FSID string `json:"fsid"` MonSecret string `json:"mon-secret,omitempty"` }
func UnmarshalRookSecretExternal ¶
func UnmarshalRookSecretExternal(rookSecret *corev1.Secret) (*RookTokenExternal, error)
type S3Token ¶
type SecretLabelType ¶
type SecretLabelType string
func GetInternalLabel ¶
func GetInternalLabel(secret *corev1.Secret) SecretLabelType