Documentation ¶
Overview ¶
Package v1beta2 contains API Schema definitions for the apps v1beta2 API group +kubebuilder:object:generate=true +groupName=apps.foundationdb.org
Index ¶
- Constants
- Variables
- func ContainsProcessGroupID(processGroups []*ProcessGroupStatus, processGroupID ProcessGroupID) bool
- func DesiredFaultTolerance(redundancyMode RedundancyMode) int
- func GetProcessPort(processNumber int, tls bool) int
- func MinimumFaultDomains(redundancyMode RedundancyMode) int
- func ProcessAddressesString(pAddrs []ProcessAddress, sep string) string
- func ProcessAddressesStringWithoutFlags(pAddrs []ProcessAddress, sep string) string
- type AutomaticReplacementOptions
- type BackupGenerationStatus
- type BackupState
- type BlobStoreConfiguration
- type BuggifyConfig
- type ClusterGenerationStatus
- type ClusterHealth
- type ConnectionString
- func (in *ConnectionString) DeepCopy() *ConnectionString
- func (in *ConnectionString) DeepCopyInto(out *ConnectionString)
- func (str *ConnectionString) GenerateNewGenerationID() error
- func (str *ConnectionString) HasCoordinators(coordinators []ProcessAddress) bool
- func (str *ConnectionString) String() string
- type ContainerOverrides
- type CoordinatorSelectionSetting
- type CrashLoopContainerObject
- type DataCenter
- type DatabaseConfiguration
- func (configuration DatabaseConfiguration) AreSeparatedProxiesConfigured() bool
- func (configuration *DatabaseConfiguration) CountUniqueDataCenters() int
- func (in *DatabaseConfiguration) DeepCopy() *DatabaseConfiguration
- func (in *DatabaseConfiguration) DeepCopyInto(out *DatabaseConfiguration)
- func (configuration *DatabaseConfiguration) FailOver() DatabaseConfiguration
- func (configuration *DatabaseConfiguration) FillInDefaultVersionFlags(liveConfiguration DatabaseConfiguration)deprecated
- func (configuration DatabaseConfiguration) FillInDefaultsFromStatus() DatabaseConfigurationdeprecated
- func (configuration DatabaseConfiguration) GetConfigurationString(version string) (string, error)
- func (configuration DatabaseConfiguration) GetMainDCsAndSatellites() (map[string]None, map[string]None)
- func (configuration DatabaseConfiguration) GetNextConfigurationChange(finalConfiguration DatabaseConfiguration) DatabaseConfiguration
- func (configuration DatabaseConfiguration) GetPrimaryDCID() string
- func (configuration DatabaseConfiguration) GetProxiesString(version Version) string
- func (configuration *DatabaseConfiguration) GetRoleCountsWithDefaults(version Version, faultTolerance int) RoleCounts
- func (configuration DatabaseConfiguration) NormalizeConfiguration() DatabaseConfiguration
- func (configuration DatabaseConfiguration) NormalizeConfigurationWithSeparatedProxies(version string, areSeparatedProxiesConfigured bool) DatabaseConfiguration
- type ExcludedServers
- type FaultDomain
- type FaultTolerance
- type FoundationDBBackup
- func (backup *FoundationDBBackup) BackupName() string
- func (backup *FoundationDBBackup) BackupURL() string
- func (backup *FoundationDBBackup) Bucket() string
- func (backup *FoundationDBBackup) CheckReconciliation() (bool, error)
- func (in *FoundationDBBackup) DeepCopy() *FoundationDBBackup
- func (in *FoundationDBBackup) DeepCopyInto(out *FoundationDBBackup)
- func (in *FoundationDBBackup) DeepCopyObject() runtime.Object
- func (backup *FoundationDBBackup) GetDesiredAgentCount() int
- func (backup *FoundationDBBackup) ShouldBePaused() bool
- func (backup *FoundationDBBackup) ShouldRun() bool
- func (backup *FoundationDBBackup) SnapshotPeriodSeconds() int
- func (backup *FoundationDBBackup) UseUnifiedImage() bool
- type FoundationDBBackupList
- type FoundationDBBackupSpec
- type FoundationDBBackupStatus
- type FoundationDBBackupStatusBackupDetails
- type FoundationDBBounceImpact
- type FoundationDBCluster
- func (cluster *FoundationDBCluster) AddProcessGroupsToCrashLoopContainerList(processGroupIDs []ProcessGroupID, containerName string)
- func (cluster *FoundationDBCluster) AddProcessGroupsToCrashLoopList(processGroupIDs []ProcessGroupID)
- func (cluster *FoundationDBCluster) AddProcessGroupsToNoScheduleList(processGroupIDs []ProcessGroupID)
- func (cluster *FoundationDBCluster) AddProcessGroupsToRemovalList(processGroupIDs []ProcessGroupID)
- func (cluster *FoundationDBCluster) AddProcessGroupsToRemovalWithoutExclusionList(processGroupIDs []ProcessGroupID)
- func (cluster *FoundationDBCluster) CacheDatabaseStatusForReconciliation(defaultValue bool) bool
- func (cluster *FoundationDBCluster) CheckReconciliation(log logr.Logger) (bool, error)
- func (cluster *FoundationDBCluster) ClearMissingVersionFlags(configuration *DatabaseConfiguration)
- func (in *FoundationDBCluster) DeepCopy() *FoundationDBCluster
- func (in *FoundationDBCluster) DeepCopyInto(out *FoundationDBCluster)
- func (in *FoundationDBCluster) DeepCopyObject() runtime.Object
- func (cluster *FoundationDBCluster) DefineDNSLocalityFields() bool
- func (cluster *FoundationDBCluster) DesiredCoordinatorCount() int
- func (cluster *FoundationDBCluster) DesiredDatabaseConfiguration() DatabaseConfiguration
- func (cluster *FoundationDBCluster) DesiredFaultTolerance() int
- func (cluster *FoundationDBCluster) DesiredImageType() ImageType
- func (cluster *FoundationDBCluster) FaultDomainBasedReplacements() bool
- func (cluster *FoundationDBCluster) GetClassCandidatePriority(pClass ProcessClass) int
- func (cluster *FoundationDBCluster) GetCrashLoopContainerProcessGroups() map[string]map[ProcessGroupID]None
- func (cluster *FoundationDBCluster) GetCrashLoopProcessGroups() (map[ProcessGroupID]None, bool)
- func (cluster *FoundationDBCluster) GetCurrentProcessGroupsAndProcessCounts() (map[ProcessClass]int, map[ProcessClass]map[int]bool, error)
- func (cluster *FoundationDBCluster) GetDNSDomain() string
- func (cluster *FoundationDBCluster) GetDesiredServersPerPod(pClass ProcessClass) int
- func (cluster *FoundationDBCluster) GetEligibleCandidateClasses() []ProcessClass
- func (cluster *FoundationDBCluster) GetEnableAutomaticReplacements() bool
- func (cluster *FoundationDBCluster) GetFailedPodDuration() time.Duration
- func (cluster *FoundationDBCluster) GetFailureDetectionTimeSeconds() int
- func (cluster *FoundationDBCluster) GetFullAddress(address string, processNumber int) ProcessAddress
- func (cluster *FoundationDBCluster) GetFullAddressList(address string, primaryOnly bool, processNumber int) []ProcessAddress
- func (cluster *FoundationDBCluster) GetIgnoreLogGroupsForUpgrade() []LogGroup
- func (cluster *FoundationDBCluster) GetIgnoreMissingProcessesSeconds() time.Duration
- func (cluster *FoundationDBCluster) GetIgnorePendingPodsDuration() time.Duration
- func (cluster *FoundationDBCluster) GetIgnoreTerminatingPodsSeconds() int
- func (cluster *FoundationDBCluster) GetLockDuration() time.Duration
- func (cluster *FoundationDBCluster) GetLockID() string
- func (cluster *FoundationDBCluster) GetLockPrefix() string
- func (cluster *FoundationDBCluster) GetLogGroup() string
- func (cluster *FoundationDBCluster) GetLogServersPerPod() int
- func (cluster *FoundationDBCluster) GetMaintenaceModeTimeoutSeconds() int
- func (cluster *FoundationDBCluster) GetMaintenancePrefix() string
- func (cluster *FoundationDBCluster) GetMatchLabels() map[string]string
- func (cluster *FoundationDBCluster) GetMaxConcurrentAutomaticReplacements() int
- func (cluster *FoundationDBCluster) GetMaxConcurrentReplacements() int
- func (cluster *FoundationDBCluster) GetMaxFaultDomainsWithTaintedProcessGroups(faultDomainCnt int) (int, error)
- func (cluster *FoundationDBCluster) GetMaxZonesWithUnavailablePods() int
- func (cluster *FoundationDBCluster) GetMinimumUptimeSecondsForBounce() int
- func (cluster *FoundationDBCluster) GetNextProcessGroupID(processClass ProcessClass, processGroupIDs map[int]bool, idNum int) (ProcessGroupID, int)
- func (cluster *FoundationDBCluster) GetNextRandomProcessGroupID(processClass ProcessClass, processGroupIDs map[int]bool) ProcessGroupID
- func (cluster *FoundationDBCluster) GetProcessClassLabel() string
- func (cluster *FoundationDBCluster) GetProcessClassLabels() []string
- func (cluster *FoundationDBCluster) GetProcessCountsWithDefaults() (ProcessCounts, error)
- func (cluster *FoundationDBCluster) GetProcessGroupID(processClass ProcessClass, idNum int) (string, ProcessGroupID)
- func (cluster *FoundationDBCluster) GetProcessGroupIDLabel() string
- func (cluster *FoundationDBCluster) GetProcessGroupIDLabels() []string
- func (cluster *FoundationDBCluster) GetProcessGroupsToRemove(processGroupIDs []ProcessGroupID) []ProcessGroupID
- func (cluster *FoundationDBCluster) GetProcessGroupsToRemoveWithoutExclusion(processGroupIDs []ProcessGroupID) []ProcessGroupID
- func (cluster *FoundationDBCluster) GetProcessSettings(processClass ProcessClass) ProcessSettings
- func (cluster *FoundationDBCluster) GetPublicIPSource() PublicIPSource
- func (cluster *FoundationDBCluster) GetRemovalMode() PodUpdateMode
- func (cluster *FoundationDBCluster) GetResourceLabels() map[string]string
- func (cluster *FoundationDBCluster) GetRoleCountsWithDefaults() RoleCounts
- func (cluster *FoundationDBCluster) GetRunningVersion() string
- func (cluster *FoundationDBCluster) GetSidecarContainerEnableLivenessProbe() bool
- func (cluster *FoundationDBCluster) GetSidecarContainerEnableReadinessProbe() bool
- func (cluster *FoundationDBCluster) GetStorageServersPerPod() int
- func (cluster *FoundationDBCluster) GetTaintReplacementTimeSeconds() int
- func (cluster *FoundationDBCluster) GetUseExplicitListenAddress() bool
- func (cluster *FoundationDBCluster) GetUseNonBlockingExcludes() bool
- func (cluster *FoundationDBCluster) GetWaitBetweenRemovalsSeconds() int
- func (cluster *FoundationDBCluster) IsBeingUpgraded() bool
- func (cluster *FoundationDBCluster) IsBeingUpgradedWithVersionIncompatibleVersion() bool
- func (cluster *FoundationDBCluster) IsEligibleAsCandidate(pClass ProcessClass) bool
- func (cluster *FoundationDBCluster) IsPodIPFamily6() bool
- func (cluster *FoundationDBCluster) IsTaintFeatureDisabled() bool
- func (cluster *FoundationDBCluster) MinimumFaultDomains() int
- func (cluster *FoundationDBCluster) NeedsExplicitListenAddress() bool
- func (cluster *FoundationDBCluster) NeedsHeadlessService() bool
- func (cluster *FoundationDBCluster) NeedsReplacement(processGroup *ProcessGroupStatus) bool
- func (cluster *FoundationDBCluster) ProcessGroupIsBeingRemoved(processGroupID ProcessGroupID) bool
- func (cluster *FoundationDBCluster) ProcessSharesDC(process FoundationDBStatusProcessInfo) bool
- func (cluster *FoundationDBCluster) RemoveProcessGroupsFromCrashLoopContainerList(processGroupIDs []ProcessGroupID, containerName string)
- func (cluster *FoundationDBCluster) RemoveProcessGroupsFromCrashLoopList(processGroupIDs []ProcessGroupID)
- func (cluster *FoundationDBCluster) RemoveProcessGroupsFromNoScheduleList(processGroupIDs []ProcessGroupID)
- func (cluster *FoundationDBCluster) ResetMaintenanceMode() bool
- func (cluster *FoundationDBCluster) ShouldFilterOnOwnerReferences() bool
- func (cluster *FoundationDBCluster) ShouldUseLocks() bool
- func (cluster *FoundationDBCluster) SkipProcessGroup(processGroup *ProcessGroupStatus) bool
- func (cluster *FoundationDBCluster) UseDNSInClusterFile() bool
- func (cluster *FoundationDBCluster) UseLocalitiesForExclusion() bool
- func (cluster *FoundationDBCluster) UseMaintenaceMode() bool
- func (cluster *FoundationDBCluster) UseManagementAPI() bool
- func (cluster *FoundationDBCluster) UseUnifiedImage() bool
- func (cluster *FoundationDBCluster) Validate() error
- func (cluster *FoundationDBCluster) VersionCompatibleUpgradeInProgress() bool
- type FoundationDBClusterAutomationOptions
- type FoundationDBClusterFaultDomain
- type FoundationDBClusterList
- type FoundationDBClusterSpec
- type FoundationDBClusterStatus
- func (clusterStatus *FoundationDBClusterStatus) AddServersPerDisk(serversPerDisk int, pClass ProcessClass)
- func (in *FoundationDBClusterStatus) DeepCopy() *FoundationDBClusterStatus
- func (in *FoundationDBClusterStatus) DeepCopyInto(out *FoundationDBClusterStatus)
- func (clusterStatus FoundationDBClusterStatus) ProcessGroupsByProcessClass(processClass ProcessClass) []*ProcessGroupStatus
- type FoundationDBCustomParameter
- type FoundationDBCustomParameters
- func (in FoundationDBCustomParameters) DeepCopy() FoundationDBCustomParameters
- func (in FoundationDBCustomParameters) DeepCopyInto(out *FoundationDBCustomParameters)
- func (customParameters FoundationDBCustomParameters) GetKnobsForCLI() []string
- func (customParameters FoundationDBCustomParameters) ValidateCustomParameters() error
- type FoundationDBKeyRange
- type FoundationDBLiveBackupStatus
- type FoundationDBLiveBackupStatusState
- type FoundationDBRestore
- func (restore *FoundationDBRestore) BackupName() string
- func (restore *FoundationDBRestore) BackupURL() string
- func (in *FoundationDBRestore) DeepCopy() *FoundationDBRestore
- func (in *FoundationDBRestore) DeepCopyInto(out *FoundationDBRestore)
- func (in *FoundationDBRestore) DeepCopyObject() runtime.Object
- type FoundationDBRestoreList
- type FoundationDBRestoreSpec
- type FoundationDBRestoreStatus
- type FoundationDBStatus
- type FoundationDBStatusBackupInfo
- type FoundationDBStatusBackupTag
- type FoundationDBStatusClientDBStatus
- type FoundationDBStatusClusterClientInfo
- type FoundationDBStatusClusterInfo
- type FoundationDBStatusConnectedClient
- type FoundationDBStatusCoordinator
- type FoundationDBStatusCoordinatorInfo
- type FoundationDBStatusDataState
- type FoundationDBStatusDataStatistics
- type FoundationDBStatusLagInfo
- type FoundationDBStatusLayerInfo
- type FoundationDBStatusLocalClientInfo
- type FoundationDBStatusLogInfo
- type FoundationDBStatusMessage
- type FoundationDBStatusMovingData
- type FoundationDBStatusProcessInfo
- type FoundationDBStatusProcessMessage
- type FoundationDBStatusProcessRoleInfo
- type FoundationDBStatusQosInfo
- type FoundationDBStatusSupportedVersion
- type FoundationDBStatusTeamTracker
- type FoundationDBUnreachableProcess
- type ImageConfig
- type ImageType
- type LabelConfig
- type LockDenyListEntry
- type LockOptions
- type LockSystemStatus
- type LogGroup
- type MaintenanceModeInfo
- type MaintenanceModeOptions
- type None
- type PodUpdateMode
- type PodUpdateStrategy
- type ProcessAddress
- func GetFullAddressList(address string, primaryOnly bool, processNumber int, requireTLS bool, ...) []ProcessAddress
- func NewProcessAddress(address net.IP, stringAddress string, port int, flags map[string]bool) ProcessAddress
- func ParseProcessAddress(address string) (ProcessAddress, error)
- func ParseProcessAddressesFromCmdline(cmdline string) ([]ProcessAddress, error)
- func (in *ProcessAddress) DeepCopy() *ProcessAddress
- func (in *ProcessAddress) DeepCopyInto(out *ProcessAddress)
- func (address ProcessAddress) Equal(addressB ProcessAddress) bool
- func (address ProcessAddress) IsEmpty() bool
- func (address ProcessAddress) MachineAddress() string
- func (address ProcessAddress) MarshalJSON() ([]byte, error)
- func (address ProcessAddress) SortedFlags() []string
- func (address ProcessAddress) String() string
- func (address ProcessAddress) StringWithoutFlags() string
- func (address *ProcessAddress) UnmarshalJSON(data []byte) error
- type ProcessClass
- func (pClass ProcessClass) GetProcessClassForPodName() string
- func (pClass ProcessClass) GetServersPerPodEnvName() string
- func (pClass ProcessClass) IsLogProcess() bool
- func (pClass ProcessClass) IsStateful() bool
- func (pClass ProcessClass) IsTransaction() bool
- func (pClass ProcessClass) SupportsMultipleLogServers() bool
- type ProcessCounts
- func (counts ProcessCounts) CountsAreSatisfied(currentCounts ProcessCounts) bool
- func (counts *ProcessCounts) DecreaseCount(name ProcessClass, amount int)
- func (in *ProcessCounts) DeepCopy() *ProcessCounts
- func (in *ProcessCounts) DeepCopyInto(out *ProcessCounts)
- func (counts ProcessCounts) Diff(currentCounts ProcessCounts) map[ProcessClass]int64
- func (counts *ProcessCounts) IncreaseCount(name ProcessClass, amount int)
- func (counts ProcessCounts) Map() map[ProcessClass]int
- func (counts ProcessCounts) Total() int
- type ProcessGroupCondition
- type ProcessGroupConditionType
- type ProcessGroupID
- type ProcessGroupStatus
- func FindProcessGroupByID(processGroups []*ProcessGroupStatus, processGroupID ProcessGroupID) *ProcessGroupStatus
- func MarkProcessGroupForRemoval(processGroups []*ProcessGroupStatus, processGroupID ProcessGroupID, ...) (bool, *ProcessGroupStatus)
- func NewProcessGroupStatus(processGroupID ProcessGroupID, processClass ProcessClass, addresses []string) *ProcessGroupStatus
- func (processGroupStatus *ProcessGroupStatus) AddAddresses(addresses []string, includeOldAddresses bool)
- func (processGroupStatus *ProcessGroupStatus) AllAddressesExcluded(logger logr.Logger, remainingMap map[string]bool) (bool, error)
- func (in *ProcessGroupStatus) DeepCopy() *ProcessGroupStatus
- func (in *ProcessGroupStatus) DeepCopyInto(out *ProcessGroupStatus)
- func (processGroupStatus *ProcessGroupStatus) GetCondition(conditionType ProcessGroupConditionType) *ProcessGroupCondition
- func (processGroupStatus *ProcessGroupStatus) GetConditionTime(conditionType ProcessGroupConditionType) *int64
- func (processGroupStatus *ProcessGroupStatus) GetExclusionString() string
- func (processGroupStatus *ProcessGroupStatus) GetPodName(cluster *FoundationDBCluster) string
- func (processGroupStatus *ProcessGroupStatus) IsExcluded() bool
- func (processGroupStatus *ProcessGroupStatus) IsMarkedForRemoval() bool
- func (processGroupStatus *ProcessGroupStatus) IsUnderMaintenance(maintenanceZone FaultDomain) bool
- func (processGroupStatus *ProcessGroupStatus) MarkForRemoval()
- func (processGroupStatus *ProcessGroupStatus) MatchesConditions(conditionRules map[ProcessGroupConditionType]bool) bool
- func (processGroupStatus *ProcessGroupStatus) NeedsReplacement(failureTime int, taintReplacementTime int) (ProcessGroupConditionType, int64)
- func (processGroupStatus *ProcessGroupStatus) SetExclude()
- func (processGroupStatus *ProcessGroupStatus) String() string
- func (processGroupStatus *ProcessGroupStatus) UpdateCondition(conditionType ProcessGroupConditionType, set bool)
- func (processGroupStatus *ProcessGroupStatus) UpdateConditionTime(conditionType ProcessGroupConditionType, newTime int64)
- type ProcessRole
- type ProcessSettings
- type PublicIPSource
- type RecoveryState
- type RedundancyMode
- type Region
- type RequiredAddressSet
- type RoleCounts
- type RoutingConfig
- type StorageEngine
- type TaintReplacementOption
- type TimeoutError
- type URLParameter
- type Version
- func (version Version) AutomaticallyRemovesDeadTesterProcesses() bool
- func (in *Version) DeepCopy() *Version
- func (in *Version) DeepCopyInto(out *Version)
- func (version Version) Equal(other Version) bool
- func (version Version) HasNonBlockingExcludes(useNonBlockingExcludes bool) bool
- func (version Version) HasSeparatedProxies() bool
- func (version Version) IsAtLeast(other Version) bool
- func (version Version) IsProtocolCompatible(other Version) bool
- func (version Version) IsReleaseCandidate() bool
- func (version Version) IsStorageEngineSupported(storageEngine StorageEngine) bool
- func (version Version) IsSupported() bool
- func (version Version) NextMajorVersion() Version
- func (version Version) NextMinorVersion() Version
- func (version Version) NextPatchVersion() Version
- func (version Version) SupportsDNSInClusterFile() bool
- func (version Version) SupportsIsPresent() bool
- func (version Version) SupportsLocalityBasedExclusions() bool
- func (version Version) SupportsRecoveryState() bool
- func (version Version) SupportsVersionChange(other Version) bool
- type VersionFlags
Constants ¶
const ( // MainContainerName represents the container name of the main FoundationDB container. MainContainerName = "foundationdb" // SidecarContainerName represents the container name of the sidecar container. SidecarContainerName = "foundationdb-kubernetes-sidecar" // InitContainerName represents the container name of the init container. InitContainerName = "foundationdb-kubernetes-init" // NoneFaultDomainKey represents the none fault domain, where every Pod is a fault domain. NoneFaultDomainKey = "foundationdb.org/none" // FoundationDBBaseImage represents the default foundationdb base image used with ImageTypeSplit for the main container. FoundationDBBaseImage = "foundationdb/foundationdb" // FoundationDBSidecarBaseImage represents the default foundationdb sidecar base image used with ImageTypeSplit for the sidecar container. FoundationDBSidecarBaseImage = "foundationdb/foundationdb-kubernetes-sidecar" // FoundationDBKubernetesBaseImage represents the default foundationdb base image used with ImageTypeUnified for the main and sidecar container. FoundationDBKubernetesBaseImage = "foundationdb/fdb-kubernetes-monitor" // ClusterFileKey defines the key name in the ConfigMap whose value is the content of the cluster file, the connection string. ClusterFileKey = "cluster-file" // CaFileKey defines the key name in the ConfigMap whose value contains the trusted certificate authority PEM CaFileKey = "ca-file" // SidecarConfKey defines the key name in the ConfigMap whose value contains the configuration for the sidecar SidecarConfKey = "sidecar-conf" // RunningVersionKey defines the key name in the ConfigMap whose value is the FDB version that the cluster is currently running. RunningVersionKey = "running-version" )
const ( // EnvNameDNSName specifies the DNS locality (identifies the pod when using DNS) EnvNameDNSName = "FDB_DNS_NAME" // EnvNameMachineID specifies the Machine ID locality. EnvNameMachineID = "FDB_MACHINE_ID" // EnvNameZoneID specifies Zone ID locality. // The current default value of EnvNameZoneID is the hostname EnvNameZoneID = "FDB_ZONE_ID" // EnvNameClusterFile specifies the path to the cluster file. EnvNameClusterFile = "FDB_CLUSTER_FILE" // EnvNameBinaryDir specifies the path of the FDB binary's directory EnvNameBinaryDir = "BINARY_DIR" // EnvNameAdditionalEnvFile if specified for the `foundationdb-kubernetes-sidecar` and `foundationdb-kubernetes-init` // containers, its content will be sourced before any container command runs, and you can override or define there // any other environment variable; this can be used for example to inject environment variables using a shared volume EnvNameAdditionalEnvFile = "ADDITIONAL_ENV_FILE" // EnvNameTLSCaFile specifies the path to the certificate authority file for TLS connections EnvNameTLSCaFile = "FDB_TLS_CA_FILE" // EnvNameTLSCert specifies the path to the certificate file for TLS connections EnvNameTLSCert = "FDB_TLS_CERTIFICATE_FILE" // EnvNameTLSKeyFile specifies the path to the key file for TLS connections EnvNameTLSKeyFile = "FDB_TLS_KEY_FILE" // EnvNameTLSVerifyPeers specifies the peer verification rules for incoming TLS connections to the split-image sidecar. // See https://apple.github.io/foundationdb/tls.html#peer-verification for the format EnvNameTLSVerifyPeers = "FDB_TLS_VERIFY_PEERS" // EnvNameFDBIgnoreExternalClientFailures specifies whether to ignore the failure to initialize some of the external clients // TODO FDB 7.3 adds a check for loading external client library, which doesn't work with 6.3. // Consider remove this option once 6.3 is no longer being used. EnvNameFDBIgnoreExternalClientFailures = "FDB_NETWORK_OPTION_IGNORE_EXTERNAL_CLIENT_FAILURES" // EnvNameFDBTraceLogGroup sets the 'LogGroup' attribute with the specified value for all events in the trace output files; default value is 'default' EnvNameFDBTraceLogGroup = "FDB_NETWORK_OPTION_TRACE_LOG_GROUP" // EnvNameFDBTraceLogDirPath enables trace logs output to a file in the given directory EnvNameFDBTraceLogDirPath = "FDB_NETWORK_OPTION_TRACE_ENABLE" // EnvNameFDBExternalClientDir specifies path to search for dynamic libraries and adds them to the list of client // libraries for use by the multi-version client API. Must be set before setting up the network. EnvNameFDBExternalClientDir = "FDB_NETWORK_OPTION_EXTERNAL_CLIENT_DIRECTORY" // EnvNameClientThreadsPerVersion specifies the number of client threads to be spawned. Each cluster will be // serviced by a single client thread. Spawns multiple worker threads for each version of the client that is loaded. // Setting this to a number greater than one implies disable_local_client. EnvNameClientThreadsPerVersion = "FDB_NETWORK_OPTION_CLIENT_THREADS_PER_VERSION" // EnvNamePublicIP will be used to set the public address of the started fdbserver process EnvNamePublicIP = "FDB_PUBLIC_IP" // EnvNamePodIP will be used to set the listen address of the started fdbserver process EnvNamePodIP = "FDB_POD_IP" // EnvNamePodName tells the unified FDB kubernetes monitor the name of its pod EnvNamePodName = "FDB_POD_NAME" // EnvNamePodNamespace tells the unified FDB kubernetes monitor the K8s namespace it is running in EnvNamePodNamespace = "FDB_POD_NAMESPACE" // EnvNameNodeName tells the unified FDB kubernetes monitor the K8s node it is running on EnvNameNodeName = "FDB_NODE_NAME" // EnvNameInstanceID specifies the instance ID to the split-image-sidecar or unified FDB kubernetes monitor EnvNameInstanceID = "FDB_INSTANCE_ID" )
const ( // LastSpecKey provides the annotation name we use to store the hash of the // pod spec. LastSpecKey = "foundationdb.org/last-applied-spec" // LastConfigMapKey provides the annotation name we use to store the hash of the // config map. LastConfigMapKey = "foundationdb.org/last-applied-config-map" // BackupDeploymentLabel provides the label we use to connect backup // deployments to a cluster. BackupDeploymentLabel = "foundationdb.org/backup-for" // BackupDeploymentPodLabel provides the label to select Pods for a specific Backup deployment. BackupDeploymentPodLabel = "foundationdb.org/deployment-name" // PublicIPSourceAnnotation is an annotation key that specifies where a pod // gets its public IP from. PublicIPSourceAnnotation = "foundationdb.org/public-ip-source" // PublicIPAnnotation is an annotation key that specifies the current public // IP for a pod. PublicIPAnnotation = "foundationdb.org/public-ip" // IsolateProcessGroupAnnotation is the annotation that defines if the current Pod should be isolated. Isolated // process groups will shutdown the fdbserver instance but keep the Pod and other Kubernetes resources running // for debugging purpose. IsolateProcessGroupAnnotation = "foundationdb.org/isolate-process-group" // NodeAnnotation is an annotation key that specifies where a Pod is currently running on. // The information is fetched from Pod.Spec.NodeName of the Pod resource. NodeAnnotation = "foundationdb.org/current-node" // ImageTypeAnnotation is an annotation key that specifies the image type of the Pod. ImageTypeAnnotation = "foundationdb.org/image-type" // FDBProcessGroupIDLabel represents the label that is used to represent a instance ID FDBProcessGroupIDLabel = "foundationdb.org/fdb-process-group-id" // FDBProcessClassLabel represents the label that is used to represent the process class FDBProcessClassLabel = "foundationdb.org/fdb-process-class" // FDBClusterLabel represents the label that is used to represent the cluster of an instance FDBClusterLabel = "foundationdb.org/fdb-cluster-name" // NodeSelectorNoScheduleLabel is a label used when adding node selectors to block scheduling. NodeSelectorNoScheduleLabel = "foundationdb.org/no-schedule-allowed" // FDBLocalityInstanceIDKey represents the key in the locality map that // holds the instance ID. FDBLocalityInstanceIDKey = "instance_id" // FDBLocalityZoneIDKey represents the key in the locality map that holds // the zone ID. FDBLocalityZoneIDKey = "zoneid" // FDBLocalityMachineIDKey represents the key in the locality map that holds // the machine ID. FDBLocalityMachineIDKey = "machineid" // FDBLocalityDCIDKey represents the key in the locality map that holds // the DC ID. FDBLocalityDCIDKey = "dcid" // FDBLocalityDNSNameKey represents the key in the locality map that holds // the DNS name for the pod. FDBLocalityDNSNameKey = "dns_name" // FDBLocalityProcessIDKey represents the key in the locality map that // holds the process ID. FDBLocalityProcessIDKey = "process_id" // FDBLocalityExclusionPrefix represents the exclusion prefix for locality based exclusions. FDBLocalityExclusionPrefix = "locality_instance_id" // FDBLocalityDataHallKey represents the key in the locality map that holds // the data hall. FDBLocalityDataHallKey = "data_hall" )
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "apps.foundationdb.org", Version: "v1beta2"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
var ProcessClasses = fieldNames(ProcessCounts{})
ProcessClasses provides a consistent ordered list of the supported process classes.
var Versions = struct { NextMajorVersion, NextPatchVersion, MinimumVersion, SupportsRocksDBV1, SupportsIsPresent, SupportsShardedRocksDB, SupportsRedwood1Experimental, SupportsRedwood1, IncompatibleVersion, PreviousPatchVersion, SupportsRecoveryState, SupportsDNSInClusterFile, SupportsLocalityBasedExclusions71, SupportsLocalityBasedExclusions, Default Version }{ Default: Version{api.Version{Major: 6, Minor: 2, Patch: 21}}, IncompatibleVersion: Version{api.Version{Major: 6, Minor: 1, Patch: 0}}, PreviousPatchVersion: Version{api.Version{Major: 6, Minor: 2, Patch: 20}}, NextPatchVersion: Version{api.Version{Major: 6, Minor: 2, Patch: 22}}, NextMajorVersion: Version{api.Version{Major: 7, Minor: 0, Patch: 0}}, MinimumVersion: Version{api.Version{Major: 6, Minor: 2, Patch: 20}}, SupportsRocksDBV1: Version{api.Version{Major: 7, Minor: 1, Patch: 0, ReleaseCandidate: 4}}, SupportsIsPresent: Version{api.Version{Major: 7, Minor: 1, Patch: 4}}, SupportsShardedRocksDB: Version{api.Version{Major: 7, Minor: 2, Patch: 0}}, SupportsRedwood1Experimental: Version{api.Version{Major: 7, Minor: 0, Patch: 0}}, SupportsRedwood1: Version{api.Version{Major: 7, Minor: 3, Patch: 0}}, SupportsRecoveryState: Version{api.Version{Major: 7, Minor: 1, Patch: 22}}, SupportsDNSInClusterFile: Version{api.Version{Major: 7, Minor: 0, Patch: 0}}, SupportsLocalityBasedExclusions71: Version{api.Version{Major: 7, Minor: 1, Patch: 42}}, SupportsLocalityBasedExclusions: Version{api.Version{Major: 7, Minor: 3, Patch: 26}}, }
Versions provides a shorthand for known versions. This is only to be used in testing.
Functions ¶
func ContainsProcessGroupID ¶
func ContainsProcessGroupID(processGroups []*ProcessGroupStatus, processGroupID ProcessGroupID) bool
ContainsProcessGroupID evaluates if the ProcessGroupStatus contains a given processGroupID.
func DesiredFaultTolerance ¶
func DesiredFaultTolerance(redundancyMode RedundancyMode) int
DesiredFaultTolerance returns the number of replicas we should be able to lose given a redundancy mode.
func GetProcessPort ¶
GetProcessPort returns the expected port for a given process number and the tls setting.
func MinimumFaultDomains ¶
func MinimumFaultDomains(redundancyMode RedundancyMode) int
MinimumFaultDomains returns the number of fault domains given a redundancy mode.
func ProcessAddressesString ¶
func ProcessAddressesString(pAddrs []ProcessAddress, sep string) string
ProcessAddressesString converts a slice of ProcessAddress into a string joined by the separator
func ProcessAddressesStringWithoutFlags ¶
func ProcessAddressesStringWithoutFlags(pAddrs []ProcessAddress, sep string) string
ProcessAddressesStringWithoutFlags converts a slice of ProcessAddress into a string joined by the separator without the flags
Types ¶
type AutomaticReplacementOptions ¶
type AutomaticReplacementOptions struct { // Enabled controls whether automatic replacements are enabled. // The default is false. Enabled *bool `json:"enabled,omitempty"` // FaultDomainBasedReplacements controls whether automatic replacements are targeting all failed process groups // in a fault domain or only specific Process Groups. If this setting is enabled, the number of different fault // domains that can have all their failed process groups replaced at the same time will be equal to MaxConcurrentReplacements. // e.g. MaxConcurrentReplacements = 2 would mean that at most 2 different fault domains can have // their failed process groups replaced at the same time. // The default is false. FaultDomainBasedReplacements *bool `json:"faultDomainBasedReplacements,omitempty"` // FailureDetectionTimeSeconds controls how long a process must be // failed or missing before it is automatically replaced. // The default is 7200 seconds, or 2 hours. FailureDetectionTimeSeconds *int `json:"failureDetectionTimeSeconds,omitempty"` // TaintReplacementTimeSeconds controls how long a pod stays in NodeTaintReplacing condition // before it is automatically replaced. // The default is 1800 seconds, i.e., 30min TaintReplacementTimeSeconds *int `json:"taintReplacementTimeSeconds,omitempty"` // MaxConcurrentReplacements controls how many automatic replacements are allowed to take part. // This will take the list of current replacements and then calculate the difference between // maxConcurrentReplacements and the size of the list. e.g. if currently 3 replacements are // queued (e.g. in the processGroupsToRemove list) and maxConcurrentReplacements is 5 the operator // is allowed to replace at most 2 process groups. Setting this to 0 will basically disable the automatic // replacements. // +kubebuilder:default:=1 // +kubebuilder:validation:Minimum=0 MaxConcurrentReplacements *int `json:"maxConcurrentReplacements,omitempty"` // TaintReplacementOption controls which taint label the operator will react to. // +kubebuilder:validation:MaxItems=32 TaintReplacementOptions []TaintReplacementOption `json:"taintReplacementOptions,omitempty"` // MaxFaultDomainsWithTaintedProcessGroups defines how many fault domains in the cluster can have process groups // with the NodeTaintReplacing condition and still allow the operator to automatically replace those process groups. // If more fault domains contain process groups with the NodeTaintReplacing condition, the operator will not // automatically replace those process groups. This is a safeguard in addition to MaxConcurrentReplacements to make // sure the operator is not replacing too many process groups if a large number of nodes are tainted. A absolute number // of fault domains or a percentage can be provided. // Defaults to 10% of the fault domains or at least 1. // +kubebuilder:validation:XIntOrString MaxFaultDomainsWithTaintedProcessGroups *intstr.IntOrString `json:"maxFaultDomainsWithTaintedProcessGroups,omitempty"` }
AutomaticReplacementOptions controls options for automatically replacing failed processes.
func (*AutomaticReplacementOptions) DeepCopy ¶
func (in *AutomaticReplacementOptions) DeepCopy() *AutomaticReplacementOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutomaticReplacementOptions.
func (*AutomaticReplacementOptions) DeepCopyInto ¶
func (in *AutomaticReplacementOptions) DeepCopyInto(out *AutomaticReplacementOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BackupGenerationStatus ¶
type BackupGenerationStatus struct { // Reconciled provides the last generation that was fully reconciled. Reconciled int64 `json:"reconciled,omitempty"` // NeedsBackupAgentUpdate provides the last generation that could not // complete reconciliation because the backup agent deployment needs to be // updated. NeedsBackupAgentUpdate int64 `json:"needsBackupAgentUpdate,omitempty"` // NeedsBackupStart provides the last generation that could not complete // reconciliation because we need to start a backup. NeedsBackupStart int64 `json:"needsBackupStart,omitempty"` // NeedsBackupStart provides the last generation that could not complete // reconciliation because we need to stop a backup. NeedsBackupStop int64 `json:"needsBackupStop,omitempty"` // NeedsBackupPauseToggle provides the last generation that needs to have // a backup paused or resumed. NeedsBackupPauseToggle int64 `json:"needsBackupPauseToggle,omitempty"` // NeedsBackupReconfiguration provides the last generation that could not // complete reconciliation because we need to modify backup parameters. NeedsBackupReconfiguration int64 `json:"needsBackupModification,omitempty"` }
BackupGenerationStatus stores information on which generations have reached different stages in reconciliation for the backup.
func (*BackupGenerationStatus) DeepCopy ¶
func (in *BackupGenerationStatus) DeepCopy() *BackupGenerationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupGenerationStatus.
func (*BackupGenerationStatus) DeepCopyInto ¶
func (in *BackupGenerationStatus) DeepCopyInto(out *BackupGenerationStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BackupState ¶
type BackupState string
BackupState defines the desired state of a backup
const ( // BackupStateRunning defines the running state BackupStateRunning BackupState = "Running" // BackupStatePaused defines the paused state BackupStatePaused BackupState = "Paused" // BackupStateStopped defines the stopped state BackupStateStopped BackupState = "Stopped" )
type BlobStoreConfiguration ¶
type BlobStoreConfiguration struct { // The name for the backup. // If empty defaults to .metadata.name. // +kubebuilder:validation:MaxLength=1024 BackupName string `json:"backupName,omitempty"` // The account name to use with the backup destination. // If no port is included, it will default to 443, // or 80 if secure_connection URL Parameter is set to 0. // +kubebuilder:validation:MaxLength=100 // +kubebuilder:validation:Required AccountName string `json:"accountName"` // The backup bucket to write to. // The default is "fdb-backups". // +kubebuilder:validation:MinLength=3 // +kubebuilder:validation:MaxLength=63 Bucket string `json:"bucket,omitempty"` // Additional URL parameters passed to the blobstore URL. // See: https://apple.github.io/foundationdb/backups.html#backup-urls // +kubebuilder:validation:MaxItems=100 URLParameters []URLParameter `json:"urlParameters,omitempty"` }
BlobStoreConfiguration describes the blob store configuration.
func (*BlobStoreConfiguration) BucketName ¶
func (configuration *BlobStoreConfiguration) BucketName() string
BucketName gets the bucket this backup will use. This will fill in a default value if the bucket in the spec is empty.
func (*BlobStoreConfiguration) DeepCopy ¶
func (in *BlobStoreConfiguration) DeepCopy() *BlobStoreConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlobStoreConfiguration.
func (*BlobStoreConfiguration) DeepCopyInto ¶
func (in *BlobStoreConfiguration) DeepCopyInto(out *BlobStoreConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BuggifyConfig ¶
type BuggifyConfig struct { // NoSchedule defines a list of process group IDs that should fail to schedule. NoSchedule []ProcessGroupID `json:"noSchedule,omitempty"` // CrashLoops defines a list of process group IDs that should be put into a // crash looping state. // Deprecated: use CrashLoopContainers instead. CrashLoop []ProcessGroupID `json:"crashLoop,omitempty"` // CrashLoopContainers defines a list of process group IDs and containers // that should be put into a crash looping state. // +kubebuilder:validation:MinItems=0 // +kubebuilder:validation:MaxItems=8 CrashLoopContainers []CrashLoopContainerObject `json:"crashLoopContainers,omitempty"` // EmptyMonitorConf instructs the operator to update all of the fdbmonitor.conf // files to have zero fdbserver processes configured. EmptyMonitorConf bool `json:"emptyMonitorConf,omitempty"` // IgnoreDuringRestart instructs the operator to ignore the provided process groups IDs during the // restart command. This can be useful to simulate cases where the kill command is not restarting all // processes. IgnoreDuringRestart does not support the wildcard option to ignore all of this specific cluster processes. // +kubebuilder:validation:MaxItems=1000 IgnoreDuringRestart []ProcessGroupID `json:"ignoreDuringRestart,omitempty"` // BlockRemoval defines a list of process group IDs that will not be removed, even if they are marked for removal. // The operator will trigger the exclusion but the removal of the resources will be blocked until they are removed // from this list. This setting can be used to simulate cases where a process group is marked for removal but the // resources are not yet removed. // +kubebuilder:validation:MaxItems=1000 BlockRemoval []ProcessGroupID `json:"blockRemoval,omitempty"` }
BuggifyConfig provides options for injecting faults into a cluster for testing.
func (*BuggifyConfig) DeepCopy ¶
func (in *BuggifyConfig) DeepCopy() *BuggifyConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BuggifyConfig.
func (*BuggifyConfig) DeepCopyInto ¶
func (in *BuggifyConfig) DeepCopyInto(out *BuggifyConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterGenerationStatus ¶
type ClusterGenerationStatus struct { // Reconciled provides the last generation that was fully reconciled. Reconciled int64 `json:"reconciled,omitempty"` // NeedsConfigurationChange provides the last generation that is pending // a change to configuration. NeedsConfigurationChange int64 `json:"needsConfigurationChange,omitempty"` // NeedsCoordinatorChange provides the last generation that is pending // a change to its coordinators. NeedsCoordinatorChange int64 `json:"needsCoordinatorChange,omitempty"` // NeedsBounce provides the last generation that is pending a bounce of // fdbserver. NeedsBounce int64 `json:"needsBounce,omitempty"` // NeedsPodDeletion provides the last generation that is pending pods being // deleted and recreated. NeedsPodDeletion int64 `json:"needsPodDeletion,omitempty"` // NeedsShrink provides the last generation that is pending pods being // excluded and removed. NeedsShrink int64 `json:"needsShrink,omitempty"` // NeedsGrow provides the last generation that is pending pods being // added. NeedsGrow int64 `json:"needsGrow,omitempty"` // NeedsMonitorConfUpdate provides the last generation that needs an update // through the fdbmonitor conf. NeedsMonitorConfUpdate int64 `json:"needsMonitorConfUpdate,omitempty"` // complete reconciliation due to the database being unavailable. DatabaseUnavailable int64 `json:"missingDatabaseStatus,omitempty"` // HasExtraListeners provides the last generation that could not // complete reconciliation because it has more listeners than it is supposed // to. HasExtraListeners int64 `json:"hasExtraListeners,omitempty"` // NeedsServiceUpdate provides the last generation that needs an update // to the service config. NeedsServiceUpdate int64 `json:"needsServiceUpdate,omitempty"` // HasPendingRemoval provides the last generation that has pods that have // been excluded but are pending being removed. // // A cluster in this state is considered reconciled, but we track this in // the status to allow users of the operator to track when the removal // is fully complete. HasPendingRemoval int64 `json:"hasPendingRemoval,omitempty"` // HasUnhealthyProcess provides the last generation that has at least one // process group with a negative condition. HasUnhealthyProcess int64 `json:"hasUnhealthyProcess,omitempty"` // NeedsLockConfigurationChanges provides the last generation that is // pending a change to the configuration of the locking system. NeedsLockConfigurationChanges int64 `json:"needsLockConfigurationChanges,omitempty"` }
ClusterGenerationStatus stores information on which generations have reached different stages in reconciliation for the cluster.
func (*ClusterGenerationStatus) DeepCopy ¶
func (in *ClusterGenerationStatus) DeepCopy() *ClusterGenerationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterGenerationStatus.
func (*ClusterGenerationStatus) DeepCopyInto ¶
func (in *ClusterGenerationStatus) DeepCopyInto(out *ClusterGenerationStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterHealth ¶
type ClusterHealth struct { // Available reports whether the database is accepting reads and writes. Available bool `json:"available,omitempty"` // Healthy reports whether the database is in a fully healthy state. Healthy bool `json:"healthy,omitempty"` // FullReplication reports whether all data are fully replicated according // to the current replication policy. FullReplication bool `json:"fullReplication,omitempty"` // DataMovementPriority reports the priority of the highest-priority data // movement in the cluster. DataMovementPriority int `json:"dataMovementPriority,omitempty"` }
ClusterHealth represents different views into health in the cluster status.
func (*ClusterHealth) DeepCopy ¶
func (in *ClusterHealth) DeepCopy() *ClusterHealth
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterHealth.
func (*ClusterHealth) DeepCopyInto ¶
func (in *ClusterHealth) DeepCopyInto(out *ClusterHealth)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ConnectionString ¶
type ConnectionString struct { // DatabaseName provides an identifier for the database which persists // across coordinator changes. DatabaseName string `json:"databaseName,omitempty"` // GenerationID provides a unique ID for the current generation of // coordinators. GenerationID string `json:"generationID,omitempty"` // Coordinators provides the addresses of the current coordinators. Coordinators []string `json:"coordinators,omitempty"` }
ConnectionString models the contents of a cluster file in a structured way
func ParseConnectionString ¶
func ParseConnectionString(str string) (ConnectionString, error)
ParseConnectionString parses a connection string from its string representation
func (*ConnectionString) DeepCopy ¶
func (in *ConnectionString) DeepCopy() *ConnectionString
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionString.
func (*ConnectionString) DeepCopyInto ¶
func (in *ConnectionString) DeepCopyInto(out *ConnectionString)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ConnectionString) GenerateNewGenerationID ¶
func (str *ConnectionString) GenerateNewGenerationID() error
GenerateNewGenerationID builds a new generation ID
func (*ConnectionString) HasCoordinators ¶
func (str *ConnectionString) HasCoordinators(coordinators []ProcessAddress) bool
HasCoordinators checks whether this connection string matches a set of coordinators.
func (*ConnectionString) String ¶
func (str *ConnectionString) String() string
String formats a connection string as a string
type ContainerOverrides ¶
type ContainerOverrides struct { // EnableLivenessProbe defines if the sidecar should have a livenessProbe. // This setting will be ignored on the main container. EnableLivenessProbe *bool `json:"enableLivenessProbe,omitempty"` // EnableReadinessProbe defines if the sidecar should have a readinessProbe. // This setting will be ignored on the main container. // Deprecated: Will be removed in the next major release. EnableReadinessProbe *bool `json:"enableReadinessProbe,omitempty"` // EnableTLS controls whether we should be listening on a TLS connection. EnableTLS bool `json:"enableTls,omitempty"` // PeerVerificationRules provides the rules for what client certificates // the process should accept. // +kubebuilder:validation:MaxLength=10000 PeerVerificationRules string `json:"peerVerificationRules,omitempty"` // ImageConfigs allows customizing the image that we use for // a container. // +kubebuilder:validation:MaxItems=100 ImageConfigs []ImageConfig `json:"imageConfigs,omitempty"` }
ContainerOverrides provides options for customizing a container created by the operator.
func (*ContainerOverrides) DeepCopy ¶
func (in *ContainerOverrides) DeepCopy() *ContainerOverrides
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerOverrides.
func (*ContainerOverrides) DeepCopyInto ¶
func (in *ContainerOverrides) DeepCopyInto(out *ContainerOverrides)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CoordinatorSelectionSetting ¶
type CoordinatorSelectionSetting struct { // ProcessClass defines the process class to associate with priority with. ProcessClass ProcessClass `json:"processClass,omitempty"` // Priority defines the ordering of different process classes. Priority int `json:"priority,omitempty"` }
CoordinatorSelectionSetting defines the process class and the priority of it. A higher priority means that the process class is preferred over another.
func (*CoordinatorSelectionSetting) DeepCopy ¶
func (in *CoordinatorSelectionSetting) DeepCopy() *CoordinatorSelectionSetting
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoordinatorSelectionSetting.
func (*CoordinatorSelectionSetting) DeepCopyInto ¶
func (in *CoordinatorSelectionSetting) DeepCopyInto(out *CoordinatorSelectionSetting)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CrashLoopContainerObject ¶ added in v1.13.0
type CrashLoopContainerObject struct { // Name of the target container. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=253 ContainerName string `json:"containerName,omitempty"` // Target processes to kill inside the container. // +kubebuilder:validation:MinItems=0 // +kubebuilder:validation:MaxItems=10000 Targets []ProcessGroupID `json:"targets,omitempty"` }
CrashLoopContainerObject specifies crash-loop target for specific container.
func (*CrashLoopContainerObject) DeepCopy ¶ added in v1.13.0
func (in *CrashLoopContainerObject) DeepCopy() *CrashLoopContainerObject
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CrashLoopContainerObject.
func (*CrashLoopContainerObject) DeepCopyInto ¶ added in v1.13.0
func (in *CrashLoopContainerObject) DeepCopyInto(out *CrashLoopContainerObject)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DataCenter ¶
type DataCenter struct { // The ID of the data center. This must match the dcid locality field. ID string `json:"id,omitempty"` // The priority of this data center when we have to choose a location. // Higher priorities are preferred over lower priorities. Priority int `json:"priority,omitempty"` // Satellite indicates whether the data center is serving as a satellite for // the region. A value of 1 indicates that it is a satellite, and a value of // 0 indicates that it is not a satellite. // +kubebuilder:validation:Minimum=0 // +kubebuilder:validation:Maximum=1 Satellite int `json:"satellite,omitempty"` }
DataCenter represents a data center in the region configuration
func (*DataCenter) DeepCopy ¶
func (in *DataCenter) DeepCopy() *DataCenter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataCenter.
func (*DataCenter) DeepCopyInto ¶
func (in *DataCenter) DeepCopyInto(out *DataCenter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DatabaseConfiguration ¶
type DatabaseConfiguration struct { // RedundancyMode defines the core replication factor for the database. // +kubebuilder:validation:Optional // +kubebuilder:validation:Enum=single;double;triple;three_data_hall // +kubebuilder:default:double RedundancyMode RedundancyMode `json:"redundancy_mode,omitempty"` // StorageEngine defines the storage engine the database uses. // +kubebuilder:validation:Optional // +kubebuilder:validation:Enum=ssd;ssd-1;ssd-2;memory;memory-1;memory-2;ssd-redwood-1-experimental;ssd-redwood-1;ssd-rocksdb-experimental;ssd-rocksdb-v1;ssd-sharded-rocksdb;memory-radixtree-beta;custom // +kubebuilder:default:=ssd-2 StorageEngine StorageEngine `json:"storage_engine,omitempty"` // UsableRegions defines how many regions the database should store data in. UsableRegions int `json:"usable_regions,omitempty"` // Regions defines the regions that the database can replicate in. Regions []Region `json:"regions,omitempty"` // ExcludedServers defines the list of excluded servers form the database. // +kubebuilder:validation:MaxItems=1024 ExcludedServers []ExcludedServers `json:"excluded_servers,omitempty"` // RoleCounts defines how many processes the database should recruit for // each role. RoleCounts `json:""` // VersionFlags defines internal flags for testing new features in the // database. VersionFlags `json:""` }
DatabaseConfiguration represents the configuration of the database
func (DatabaseConfiguration) AreSeparatedProxiesConfigured ¶ added in v1.1.0
func (configuration DatabaseConfiguration) AreSeparatedProxiesConfigured() bool
AreSeparatedProxiesConfigured returns true if grv_proxies and commit_proxies are greater than 0 (explicitly set) and Proxies is set to 0
func (*DatabaseConfiguration) CountUniqueDataCenters ¶ added in v1.27.0
func (configuration *DatabaseConfiguration) CountUniqueDataCenters() int
CountUniqueDataCenters returns the number of unique data centers based on the desired DatabaseConfiguration.
func (*DatabaseConfiguration) DeepCopy ¶
func (in *DatabaseConfiguration) DeepCopy() *DatabaseConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseConfiguration.
func (*DatabaseConfiguration) DeepCopyInto ¶
func (in *DatabaseConfiguration) DeepCopyInto(out *DatabaseConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DatabaseConfiguration) FailOver ¶
func (configuration *DatabaseConfiguration) FailOver() DatabaseConfiguration
FailOver returns a new DatabaseConfiguration that switches the priority for the main and remote DC
func (*DatabaseConfiguration) FillInDefaultVersionFlags
deprecated
func (configuration *DatabaseConfiguration) FillInDefaultVersionFlags(liveConfiguration DatabaseConfiguration)
FillInDefaultVersionFlags adds in missing version flags so they match the running configuration.
Deprecated: Use ClearMissingVersionFlags instead on the live configuration instead.
func (DatabaseConfiguration) FillInDefaultsFromStatus
deprecated
func (configuration DatabaseConfiguration) FillInDefaultsFromStatus() DatabaseConfiguration
FillInDefaultsFromStatus adds in missing fields from the database configuration in the database status to make sure they match the fields that will appear in the cluster spec.
Deprecated: Use NormalizeConfiguration instead.
func (DatabaseConfiguration) GetConfigurationString ¶
func (configuration DatabaseConfiguration) GetConfigurationString(version string) (string, error)
GetConfigurationString gets the CLI command for configuring a database.
func (DatabaseConfiguration) GetMainDCsAndSatellites ¶ added in v1.41.0
func (configuration DatabaseConfiguration) GetMainDCsAndSatellites() (map[string]None, map[string]None)
GetMainDCsAndSatellites will return a set of main dcs and a set of satellites. If a dc is a main dc and a satellite it will only be counted as a main dc.
func (DatabaseConfiguration) GetNextConfigurationChange ¶
func (configuration DatabaseConfiguration) GetNextConfigurationChange(finalConfiguration DatabaseConfiguration) DatabaseConfiguration
GetNextConfigurationChange produces the next marginal change that should be made to transform this configuration into another configuration.
If there are multiple changes between the two configurations that can not be made simultaneously, this will produce a subset of the changes that move in the correct direction. Applying this method repeatedly will eventually converge on the final configuration.
func (DatabaseConfiguration) GetPrimaryDCID ¶ added in v1.41.0
func (configuration DatabaseConfiguration) GetPrimaryDCID() string
GetPrimaryDCID will return the DC ID of the primary data center. The primary data center is the one with the highest priority in the region configuration. See: https://github.com/apple/foundationdb/wiki/Multi-Region-Replication#concepts
func (DatabaseConfiguration) GetProxiesString ¶ added in v1.1.0
func (configuration DatabaseConfiguration) GetProxiesString(version Version) string
GetProxiesString returns a string that contains the correct fdbcli commands for use inside the database `configure` command.
If the version argument supports the separate grv/commit proxy roles and they have been configured as decided by AreSeparatedProxiesConfigured(), then this function will return the string "commit_proxies=%d grv_proxies=%d", otherwise just "proxies=%d" using the correct counts of the configuration object.
func (*DatabaseConfiguration) GetRoleCountsWithDefaults ¶ added in v1.1.0
func (configuration *DatabaseConfiguration) GetRoleCountsWithDefaults(version Version, faultTolerance int) RoleCounts
GetRoleCountsWithDefaults gets the role counts from the cluster spec and fills in default values for any role counts that are 0.
The default Storage value will be 2F + 1, where F is the cluster's fault tolerance.
The default Logs value will be 3.
The default Proxies value will be 3.
The default Resolvers value will be 1.
The default RemoteLogs value will be equal to the Logs value when the UsableRegions is greater than 1. It will be equal to -1 when the UsableRegions is less than or equal to 1.
The default LogRouters value will be equal to 3 times the Logs value when the UsableRegions is greater than 1. It will be equal to -1 when the UsableRegions is less than or equal to 1.
func (DatabaseConfiguration) NormalizeConfiguration ¶
func (configuration DatabaseConfiguration) NormalizeConfiguration() DatabaseConfiguration
NormalizeConfiguration ensures a standardized format and defaults when comparing database configuration in the cluster spec with database configuration in the cluster status.
This will fill in defaults of -1 for some fields that have a default of 0, and will ensure that the region configuration is ordered consistently.
func (DatabaseConfiguration) NormalizeConfigurationWithSeparatedProxies ¶ added in v1.3.1
func (configuration DatabaseConfiguration) NormalizeConfigurationWithSeparatedProxies(version string, areSeparatedProxiesConfigured bool) DatabaseConfiguration
NormalizeConfigurationWithSeparatedProxies ensures a standardized format and defaults when comparing database configuration in the cluster spec with database configuration in the cluster status, taking into account if the current running version of FDB supports them and if we need them configured.
This will fill in defaults of -1 for some fields that have a default of 0, and will ensure that the region configuration is ordered consistently.
type ExcludedServers ¶ added in v1.4.1
type ExcludedServers struct { // The Address of the excluded server. // +kubebuilder:validation:MaxLength=48 Address string `json:"address,omitempty"` // The Locality of the excluded server. // +kubebuilder:validation:MaxLength=200 Locality string `json:"locality,omitempty"` }
ExcludedServers represents the excluded servers in the database configuration
func (*ExcludedServers) DeepCopy ¶ added in v1.4.1
func (in *ExcludedServers) DeepCopy() *ExcludedServers
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExcludedServers.
func (*ExcludedServers) DeepCopyInto ¶ added in v1.4.1
func (in *ExcludedServers) DeepCopyInto(out *ExcludedServers)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FaultDomain ¶ added in v1.18.0
type FaultDomain string
FaultDomain represents the FaultDomain of a process group +kubebuilder:validation:MaxLength=512
type FaultTolerance ¶
type FaultTolerance struct { // MaxZoneFailuresWithoutLosingData defines the maximum number of zones that can fail before losing data. MaxZoneFailuresWithoutLosingData int `json:"max_zone_failures_without_losing_data,omitempty"` // MaxZoneFailuresWithoutLosingAvailability defines the maximum number of zones that can fail before losing availability. MaxZoneFailuresWithoutLosingAvailability int `json:"max_zone_failures_without_losing_availability,omitempty"` }
FaultTolerance provides information about the fault tolerance status of the cluster.
func (*FaultTolerance) DeepCopy ¶
func (in *FaultTolerance) DeepCopy() *FaultTolerance
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FaultTolerance.
func (*FaultTolerance) DeepCopyInto ¶
func (in *FaultTolerance) DeepCopyInto(out *FaultTolerance)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBBackup ¶
type FoundationDBBackup struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec FoundationDBBackupSpec `json:"spec,omitempty"` Status FoundationDBBackupStatus `json:"status,omitempty"` }
FoundationDBBackup is the Schema for the foundationdbbackups API
func (*FoundationDBBackup) BackupName ¶
func (backup *FoundationDBBackup) BackupName() string
BackupName gets the name of the backup in the destination. This will fill in a default value if the backup name in the spec is empty.
func (*FoundationDBBackup) BackupURL ¶
func (backup *FoundationDBBackup) BackupURL() string
BackupURL gets the destination url of the backup.
func (*FoundationDBBackup) Bucket ¶
func (backup *FoundationDBBackup) Bucket() string
Bucket gets the bucket this backup will use. This will fill in a default value if the bucket in the spec is empty.
func (*FoundationDBBackup) CheckReconciliation ¶
func (backup *FoundationDBBackup) CheckReconciliation() (bool, error)
CheckReconciliation compares the spec and the status to determine if reconciliation is complete.
func (*FoundationDBBackup) DeepCopy ¶
func (in *FoundationDBBackup) DeepCopy() *FoundationDBBackup
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBBackup.
func (*FoundationDBBackup) DeepCopyInto ¶
func (in *FoundationDBBackup) DeepCopyInto(out *FoundationDBBackup)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FoundationDBBackup) DeepCopyObject ¶
func (in *FoundationDBBackup) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*FoundationDBBackup) GetDesiredAgentCount ¶
func (backup *FoundationDBBackup) GetDesiredAgentCount() int
GetDesiredAgentCount determines how many backup agents we should run for a cluster.
func (*FoundationDBBackup) ShouldBePaused ¶
func (backup *FoundationDBBackup) ShouldBePaused() bool
ShouldBePaused determines whether the backups should be paused.
func (*FoundationDBBackup) ShouldRun ¶
func (backup *FoundationDBBackup) ShouldRun() bool
ShouldRun determines whether a backup should be running.
func (*FoundationDBBackup) SnapshotPeriodSeconds ¶
func (backup *FoundationDBBackup) SnapshotPeriodSeconds() int
SnapshotPeriodSeconds gets the period between snapshots for a backup.
func (*FoundationDBBackup) UseUnifiedImage ¶ added in v1.39.0
func (backup *FoundationDBBackup) UseUnifiedImage() bool
UseUnifiedImage returns true if the unified image should be used.
type FoundationDBBackupList ¶
type FoundationDBBackupList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []FoundationDBBackup `json:"items"` }
FoundationDBBackupList contains a list of FoundationDBBackup objects
func (*FoundationDBBackupList) DeepCopy ¶
func (in *FoundationDBBackupList) DeepCopy() *FoundationDBBackupList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBBackupList.
func (*FoundationDBBackupList) DeepCopyInto ¶
func (in *FoundationDBBackupList) DeepCopyInto(out *FoundationDBBackupList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FoundationDBBackupList) DeepCopyObject ¶
func (in *FoundationDBBackupList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type FoundationDBBackupSpec ¶
type FoundationDBBackupSpec struct { // The version of FoundationDB that the backup agents should run. Version string `json:"version"` // The cluster this backup is for. ClusterName string `json:"clusterName"` // +kubebuilder:validation:Enum=Running;Stopped;Paused // The desired state of the backup. // The default is Running. BackupState BackupState `json:"backupState,omitempty"` // AgentCount defines the number of backup agents to run. // The default is run 2 agents. AgentCount *int `json:"agentCount,omitempty"` // The time window between new snapshots. // This is measured in seconds. The default is 864,000, or 10 days. SnapshotPeriodSeconds *int `json:"snapshotPeriodSeconds,omitempty"` // BackupDeploymentMetadata allows customizing labels and annotations on the // deployment for the backup agents. BackupDeploymentMetadata *metav1.ObjectMeta `json:"backupDeploymentMetadata,omitempty"` // PodTemplateSpec allows customizing the pod template for the backup // agents. PodTemplateSpec *corev1.PodTemplateSpec `json:"podTemplateSpec,omitempty"` // CustomParameters defines additional parameters to pass to the backup // agents. CustomParameters FoundationDBCustomParameters `json:"customParameters,omitempty"` // This setting defines if a user provided image can have it's own tag // rather than getting the provided version appended. // You have to ensure that the specified version in the Spec is compatible // with the given version in your custom image. // +kubebuilder:default:=false // Deprecated: use ImageConfigs instead. AllowTagOverride *bool `json:"allowTagOverride,omitempty"` // This is the configuration of the target blobstore for this backup. BlobStoreConfiguration *BlobStoreConfiguration `json:"blobStoreConfiguration,omitempty"` // MainContainer defines customization for the foundationdb container. MainContainer ContainerOverrides `json:"mainContainer,omitempty"` // SidecarContainer defines customization for the // foundationdb-kubernetes-sidecar container. SidecarContainer ContainerOverrides `json:"sidecarContainer,omitempty"` // ImageType defines the image type that should be used for the FoundationDBCluster deployment. When the type // is set to "unified" the deployment will use the new fdb-kubernetes-monitor. Otherwise the main container and // the sidecar container will use different images. // Default: split // +kubebuilder:validation:Optional // +kubebuilder:validation:Enum=split;unified // +kubebuilder:default:=split ImageType *ImageType `json:"imageType,omitempty"` }
FoundationDBBackupSpec describes the desired state of the backup for a cluster.
func (*FoundationDBBackupSpec) DeepCopy ¶
func (in *FoundationDBBackupSpec) DeepCopy() *FoundationDBBackupSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBBackupSpec.
func (*FoundationDBBackupSpec) DeepCopyInto ¶
func (in *FoundationDBBackupSpec) DeepCopyInto(out *FoundationDBBackupSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FoundationDBBackupSpec) GetAllowTagOverride ¶
func (foundationDBBackupSpec *FoundationDBBackupSpec) GetAllowTagOverride() bool
GetAllowTagOverride returns the bool value for AllowTagOverride
type FoundationDBBackupStatus ¶
type FoundationDBBackupStatus struct { // AgentCount provides the number of agents that are up-to-date, ready, // and not terminated. AgentCount int `json:"agentCount,omitempty"` // DeploymentConfigured indicates whether the deployment is correctly // configured. DeploymentConfigured bool `json:"deploymentConfigured,omitempty"` // BackupDetails provides information about the state of the backup in the // cluster. BackupDetails *FoundationDBBackupStatusBackupDetails `json:"backupDetails,omitempty"` // Generations provides information about the latest generation to be // reconciled, or to reach other stages in reconciliation. Generations BackupGenerationStatus `json:"generations,omitempty"` }
FoundationDBBackupStatus describes the current status of the backup for a cluster.
func (*FoundationDBBackupStatus) DeepCopy ¶
func (in *FoundationDBBackupStatus) DeepCopy() *FoundationDBBackupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBBackupStatus.
func (*FoundationDBBackupStatus) DeepCopyInto ¶
func (in *FoundationDBBackupStatus) DeepCopyInto(out *FoundationDBBackupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBBackupStatusBackupDetails ¶
type FoundationDBBackupStatusBackupDetails struct { URL string `json:"url,omitempty"` Running bool `json:"running,omitempty"` Paused bool `json:"paused,omitempty"` SnapshotPeriodSeconds int `json:"snapshotTime,omitempty"` }
FoundationDBBackupStatusBackupDetails provides information about the state of the backup in the cluster.
func (*FoundationDBBackupStatusBackupDetails) DeepCopy ¶
func (in *FoundationDBBackupStatusBackupDetails) DeepCopy() *FoundationDBBackupStatusBackupDetails
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBBackupStatusBackupDetails.
func (*FoundationDBBackupStatusBackupDetails) DeepCopyInto ¶
func (in *FoundationDBBackupStatusBackupDetails) DeepCopyInto(out *FoundationDBBackupStatusBackupDetails)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBBounceImpact ¶ added in v1.32.0
type FoundationDBBounceImpact struct {
CanCleanBounce *bool `json:"can_clean_bounce,omitempty"`
}
FoundationDBBounceImpact represents the bounce_impact part of the machine-readable status.
func (*FoundationDBBounceImpact) DeepCopy ¶ added in v1.32.0
func (in *FoundationDBBounceImpact) DeepCopy() *FoundationDBBounceImpact
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBBounceImpact.
func (*FoundationDBBounceImpact) DeepCopyInto ¶ added in v1.32.0
func (in *FoundationDBBounceImpact) DeepCopyInto(out *FoundationDBBounceImpact)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBCluster ¶
type FoundationDBCluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec FoundationDBClusterSpec `json:"spec,omitempty"` Status FoundationDBClusterStatus `json:"status,omitempty"` }
FoundationDBCluster is the Schema for the foundationdbclusters API
func (*FoundationDBCluster) AddProcessGroupsToCrashLoopContainerList ¶ added in v1.17.0
func (cluster *FoundationDBCluster) AddProcessGroupsToCrashLoopContainerList(processGroupIDs []ProcessGroupID, containerName string)
AddProcessGroupsToCrashLoopContainerList adds the provided process group IDs to the crash-loop list. If a process group ID is already present on that list it won't be added a second time.
func (*FoundationDBCluster) AddProcessGroupsToCrashLoopList ¶ added in v1.8.1
func (cluster *FoundationDBCluster) AddProcessGroupsToCrashLoopList(processGroupIDs []ProcessGroupID)
AddProcessGroupsToCrashLoopList adds the provided process group IDs to the crash-loop list. If a process group ID is already present on that list or all the processes are set into crash-loop it won't be added a second time.
func (*FoundationDBCluster) AddProcessGroupsToNoScheduleList ¶ added in v1.8.1
func (cluster *FoundationDBCluster) AddProcessGroupsToNoScheduleList(processGroupIDs []ProcessGroupID)
AddProcessGroupsToNoScheduleList adds the provided process group IDs to the no-schedule list. If a process group ID is already present on that list it won't be added a second time.
func (*FoundationDBCluster) AddProcessGroupsToRemovalList ¶ added in v1.1.0
func (cluster *FoundationDBCluster) AddProcessGroupsToRemovalList(processGroupIDs []ProcessGroupID)
AddProcessGroupsToRemovalList adds the provided process group IDs to the remove list. If a process group ID is already present on that list it won't be added a second time. Deprecated: Use GetProcessGroupsToRemove instead and set the cluster.Spec.ProcessGroupsToRemove value to the return value.
func (*FoundationDBCluster) AddProcessGroupsToRemovalWithoutExclusionList ¶ added in v1.1.0
func (cluster *FoundationDBCluster) AddProcessGroupsToRemovalWithoutExclusionList(processGroupIDs []ProcessGroupID)
AddProcessGroupsToRemovalWithoutExclusionList adds the provided process group IDs to the remove without exclusion list. If a process group ID is already present on that list it won't be added a second time. Deprecated: Use GetProcessGroupsToRemoveWithoutExclusion instead and set the cluster.Spec.ProcessGroupsToRemoveWithoutExclusion value to the return value.
func (*FoundationDBCluster) CacheDatabaseStatusForReconciliation ¶ added in v1.19.0
func (cluster *FoundationDBCluster) CacheDatabaseStatusForReconciliation(defaultValue bool) bool
CacheDatabaseStatusForReconciliation returns if the sub-reconcilers should use a cached machine-readable status. If enabled the machine-readable status will be fetched only once per reconciliation loop and not multiple times. If the value is unset the provided default value will be returned.
func (*FoundationDBCluster) CheckReconciliation ¶
func (cluster *FoundationDBCluster) CheckReconciliation(log logr.Logger) (bool, error)
CheckReconciliation compares the spec and the status to determine if reconciliation is complete.
func (*FoundationDBCluster) ClearMissingVersionFlags ¶
func (cluster *FoundationDBCluster) ClearMissingVersionFlags(configuration *DatabaseConfiguration)
ClearMissingVersionFlags clears any version flags in the given configuration that are not set in the configuration in the cluster spec.
This allows us to compare the spec to the live configuration while ignoring version flags that are unset in the spec.
func (*FoundationDBCluster) DeepCopy ¶
func (in *FoundationDBCluster) DeepCopy() *FoundationDBCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBCluster.
func (*FoundationDBCluster) DeepCopyInto ¶
func (in *FoundationDBCluster) DeepCopyInto(out *FoundationDBCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FoundationDBCluster) DeepCopyObject ¶
func (in *FoundationDBCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*FoundationDBCluster) DefineDNSLocalityFields ¶ added in v1.17.0
func (cluster *FoundationDBCluster) DefineDNSLocalityFields() bool
DefineDNSLocalityFields determines whether we need to put DNS entries in the pod spec and process locality.
func (*FoundationDBCluster) DesiredCoordinatorCount ¶
func (cluster *FoundationDBCluster) DesiredCoordinatorCount() int
DesiredCoordinatorCount returns the number of coordinators to recruit for a cluster.
func (*FoundationDBCluster) DesiredDatabaseConfiguration ¶
func (cluster *FoundationDBCluster) DesiredDatabaseConfiguration() DatabaseConfiguration
DesiredDatabaseConfiguration builds the database configuration for the cluster based on its spec.
func (*FoundationDBCluster) DesiredFaultTolerance ¶
func (cluster *FoundationDBCluster) DesiredFaultTolerance() int
DesiredFaultTolerance returns the number of replicas we should be able to lose when the cluster is at full replication health.
func (*FoundationDBCluster) DesiredImageType ¶ added in v1.41.0
func (cluster *FoundationDBCluster) DesiredImageType() ImageType
DesiredImageType returns the desired image type that should be used.
func (*FoundationDBCluster) FaultDomainBasedReplacements ¶ added in v1.34.0
func (cluster *FoundationDBCluster) FaultDomainBasedReplacements() bool
FaultDomainBasedReplacements returns true if the operator is allowed to replace all failed process groups of a fault domain. Default is false
func (*FoundationDBCluster) GetClassCandidatePriority ¶
func (cluster *FoundationDBCluster) GetClassCandidatePriority(pClass ProcessClass) int
GetClassCandidatePriority returns the priority for a class. This will be used to sort the processes for coordinator selection. If not setting is configured, the default will be 0.
func (*FoundationDBCluster) GetCrashLoopContainerProcessGroups ¶ added in v1.13.0
func (cluster *FoundationDBCluster) GetCrashLoopContainerProcessGroups() map[string]map[ProcessGroupID]None
GetCrashLoopContainerProcessGroups returns the process group IDs in containers that are marked for crash looping. Returns map[ContainerName](map[ProcessGroupID]None).
func (*FoundationDBCluster) GetCrashLoopProcessGroups ¶ added in v1.5.0
func (cluster *FoundationDBCluster) GetCrashLoopProcessGroups() (map[ProcessGroupID]None, bool)
GetCrashLoopProcessGroups returns the process group IDs that are marked for crash looping. The second return value indicates if all process group IDs in a cluster should be crash looping.
func (*FoundationDBCluster) GetCurrentProcessGroupsAndProcessCounts ¶ added in v1.23.0
func (cluster *FoundationDBCluster) GetCurrentProcessGroupsAndProcessCounts() (map[ProcessClass]int, map[ProcessClass]map[int]bool, error)
GetCurrentProcessGroupsAndProcessCounts will return the process counts of Process Groups, that are not marked for removal based on the FoundationDBClusterStatus and will return all used ProcessGroupIDs
func (*FoundationDBCluster) GetDNSDomain ¶
func (cluster *FoundationDBCluster) GetDNSDomain() string
GetDNSDomain gets the domain used when forming DNS names generated for a service.
func (*FoundationDBCluster) GetDesiredServersPerPod ¶ added in v1.21.0
func (cluster *FoundationDBCluster) GetDesiredServersPerPod(pClass ProcessClass) int
GetDesiredServersPerPod will return the expected server per Pod for the provided process class.
func (*FoundationDBCluster) GetEligibleCandidateClasses ¶ added in v1.15.0
func (cluster *FoundationDBCluster) GetEligibleCandidateClasses() []ProcessClass
GetEligibleCandidateClasses returns process classes that are eligible to become coordinators.
func (*FoundationDBCluster) GetEnableAutomaticReplacements ¶
func (cluster *FoundationDBCluster) GetEnableAutomaticReplacements() bool
GetEnableAutomaticReplacements returns cluster.Spec.AutomationOptions.Replacements.Enabled or if unset the default true
func (*FoundationDBCluster) GetFailedPodDuration ¶ added in v1.12.0
func (cluster *FoundationDBCluster) GetFailedPodDuration() time.Duration
GetFailedPodDuration returns the value of FailedPodDuration or 5 minutes if unset.
func (*FoundationDBCluster) GetFailureDetectionTimeSeconds ¶
func (cluster *FoundationDBCluster) GetFailureDetectionTimeSeconds() int
GetFailureDetectionTimeSeconds returns cluster.Spec.AutomationOptions.Replacements.FailureDetectionTimeSeconds or if unset the default 7200
func (*FoundationDBCluster) GetFullAddress ¶
func (cluster *FoundationDBCluster) GetFullAddress(address string, processNumber int) ProcessAddress
GetFullAddress gets the full public address we should use for a process. This will include the IP address, the port, and any additional flags.
func (*FoundationDBCluster) GetFullAddressList ¶
func (cluster *FoundationDBCluster) GetFullAddressList(address string, primaryOnly bool, processNumber int) []ProcessAddress
GetFullAddressList gets the full list of public addresses we should use for a process.
This will include the IP address, the port, and any additional flags.
If a process needs multiple addresses, this will include all of them, separated by commas. If you pass false for primaryOnly, this will return only the primary address.
func (*FoundationDBCluster) GetIgnoreLogGroupsForUpgrade ¶ added in v1.20.0
func (cluster *FoundationDBCluster) GetIgnoreLogGroupsForUpgrade() []LogGroup
GetIgnoreLogGroupsForUpgrade will return the IgnoreLogGroupsForUpgrade, if the value is not set it will include the default `fdb-kubernetes-operator` LogGroup.
func (*FoundationDBCluster) GetIgnoreMissingProcessesSeconds ¶ added in v1.9.0
func (cluster *FoundationDBCluster) GetIgnoreMissingProcessesSeconds() time.Duration
GetIgnoreMissingProcessesSeconds returns the value of IgnoreMissingProcessesSecond or 30 seconds if unset.
func (*FoundationDBCluster) GetIgnorePendingPodsDuration ¶
func (cluster *FoundationDBCluster) GetIgnorePendingPodsDuration() time.Duration
GetIgnorePendingPodsDuration returns the value of IgnorePendingPodsDuration or 5 minutes if unset.
func (*FoundationDBCluster) GetIgnoreTerminatingPodsSeconds ¶
func (cluster *FoundationDBCluster) GetIgnoreTerminatingPodsSeconds() int
GetIgnoreTerminatingPodsSeconds returns the value of IgnoreTerminatingPodsSeconds or defaults to 10 minutes.
func (*FoundationDBCluster) GetLockDuration ¶
func (cluster *FoundationDBCluster) GetLockDuration() time.Duration
GetLockDuration determines how long we hold locks for.
func (*FoundationDBCluster) GetLockID ¶
func (cluster *FoundationDBCluster) GetLockID() string
GetLockID gets the identifier for this instance of the operator when taking locks. This is the `ProcessGroupIDPrefix` defined for this cluster.
func (*FoundationDBCluster) GetLockPrefix ¶
func (cluster *FoundationDBCluster) GetLockPrefix() string
GetLockPrefix gets the prefix for the keys where we store locking information.
func (*FoundationDBCluster) GetLogGroup ¶ added in v1.41.0
func (cluster *FoundationDBCluster) GetLogGroup() string
GetLogGroup returns the cluster's logGroup for use in trace logs
func (*FoundationDBCluster) GetLogServersPerPod ¶ added in v1.21.0
func (cluster *FoundationDBCluster) GetLogServersPerPod() int
GetLogServersPerPod returns the TLog processes per Pod.
func (*FoundationDBCluster) GetMaintenaceModeTimeoutSeconds ¶ added in v1.10.0
func (cluster *FoundationDBCluster) GetMaintenaceModeTimeoutSeconds() int
GetMaintenaceModeTimeoutSeconds returns the timeout for maintenance zone after which it will be reset.
func (*FoundationDBCluster) GetMaintenancePrefix ¶ added in v1.35.0
func (cluster *FoundationDBCluster) GetMaintenancePrefix() string
GetMaintenancePrefix returns the prefix that is used by the operator to store and read maintenance related information. The prefix will be the provided GetLockPrefix appended by "maintenance".
func (*FoundationDBCluster) GetMatchLabels ¶
func (cluster *FoundationDBCluster) GetMatchLabels() map[string]string
GetMatchLabels returns the match labels for all created resources
func (*FoundationDBCluster) GetMaxConcurrentAutomaticReplacements ¶
func (cluster *FoundationDBCluster) GetMaxConcurrentAutomaticReplacements() int
GetMaxConcurrentAutomaticReplacements returns the cluster setting for MaxConcurrentReplacements, defaults to 1 if unset.
func (*FoundationDBCluster) GetMaxConcurrentReplacements ¶
func (cluster *FoundationDBCluster) GetMaxConcurrentReplacements() int
GetMaxConcurrentReplacements returns the maxConcurrentReplacements or defaults to math.MaxInt64
func (*FoundationDBCluster) GetMaxFaultDomainsWithTaintedProcessGroups ¶ added in v1.38.0
func (cluster *FoundationDBCluster) GetMaxFaultDomainsWithTaintedProcessGroups(faultDomainCnt int) (int, error)
GetMaxFaultDomainsWithTaintedProcessGroups returns the maximum fault domains that can hold pods on tainted nodes to still allow the operator to automatically replace those pods on the tainted nodes automatically.
func (*FoundationDBCluster) GetMaxZonesWithUnavailablePods ¶ added in v1.19.0
func (cluster *FoundationDBCluster) GetMaxZonesWithUnavailablePods() int
GetMaxZonesWithUnavailablePods returns the maximum number of zones that can have unavailable pods.
func (*FoundationDBCluster) GetMinimumUptimeSecondsForBounce ¶
func (cluster *FoundationDBCluster) GetMinimumUptimeSecondsForBounce() int
GetMinimumUptimeSecondsForBounce returns the MinimumUptimeSecondsForBounce if set otherwise 600
func (*FoundationDBCluster) GetNextProcessGroupID ¶ added in v1.23.0
func (cluster *FoundationDBCluster) GetNextProcessGroupID(processClass ProcessClass, processGroupIDs map[int]bool, idNum int) (ProcessGroupID, int)
GetNextProcessGroupID will return the next unused ProcessGroupID and the ID number based on the provided ProcessClass and the mapping of used ProcessGroupID. Deprecated: This method shouldn't be used anymore and GetNextRandomProcessGroupID is favoured.
func (*FoundationDBCluster) GetNextRandomProcessGroupID ¶ added in v1.42.0
func (cluster *FoundationDBCluster) GetNextRandomProcessGroupID(processClass ProcessClass, processGroupIDs map[int]bool) ProcessGroupID
GetNextRandomProcessGroupID will return a randomly picked ProcessGroupID, the ID number will be between 1 and maxProcessGroupIDNum. This method makes sure that the returned ProcessGroupID is not in use and not marked to be removed. Using a randomized ProcessGroupID will reduce the risk of reusing the same ProcessGroupID for different process groups, see: https://github.com/FoundationDB/fdb-kubernetes-operator/issues/2071
func (*FoundationDBCluster) GetProcessClassLabel ¶
func (cluster *FoundationDBCluster) GetProcessClassLabel() string
GetProcessClassLabel provides the label that this cluster is using for the process class when identifying resources.
func (*FoundationDBCluster) GetProcessClassLabels ¶
func (cluster *FoundationDBCluster) GetProcessClassLabels() []string
GetProcessClassLabels returns the process class labels
func (*FoundationDBCluster) GetProcessCountsWithDefaults ¶
func (cluster *FoundationDBCluster) GetProcessCountsWithDefaults() (ProcessCounts, error)
GetProcessCountsWithDefaults gets the process counts from the cluster spec and fills in default values for any counts that are 0. The number of storage processes will only reflect the number of Pods that will be created to host storage server processes. If storageServersPerPod is set the total amount of storage server processes will be the storage process count multiplied by storageServersPerPod.
func (*FoundationDBCluster) GetProcessGroupID ¶ added in v1.23.0
func (cluster *FoundationDBCluster) GetProcessGroupID(processClass ProcessClass, idNum int) (string, ProcessGroupID)
GetProcessGroupID generates a ProcessGroupID for a process group.
This will return the Pod name and the ProcessGroupID.
func (*FoundationDBCluster) GetProcessGroupIDLabel ¶
func (cluster *FoundationDBCluster) GetProcessGroupIDLabel() string
GetProcessGroupIDLabel provides the label that this cluster is using for the process group ID when identifying resources.
func (*FoundationDBCluster) GetProcessGroupIDLabels ¶
func (cluster *FoundationDBCluster) GetProcessGroupIDLabels() []string
GetProcessGroupIDLabels returns the process group ID labels
func (*FoundationDBCluster) GetProcessGroupsToRemove ¶ added in v1.18.0
func (cluster *FoundationDBCluster) GetProcessGroupsToRemove(processGroupIDs []ProcessGroupID) []ProcessGroupID
GetProcessGroupsToRemove will return the list of Process Group IDs that must be added to the ProcessGroupsToRemove it will filter out all Process Group IDs that are already marked for removal to make sure those are clean up. If a provided process group ID doesn't exit it will be ignored.
func (*FoundationDBCluster) GetProcessGroupsToRemoveWithoutExclusion ¶ added in v1.18.0
func (cluster *FoundationDBCluster) GetProcessGroupsToRemoveWithoutExclusion(processGroupIDs []ProcessGroupID) []ProcessGroupID
GetProcessGroupsToRemoveWithoutExclusion will returns the list of Process Group IDs that must be added to the ProcessGroupsToRemove it will filter out all Process Group IDs that are already marked for removal and are marked as excluded to make sure those are clean up. If a provided process group ID doesn't exit it will be ignored.
func (*FoundationDBCluster) GetProcessSettings ¶
func (cluster *FoundationDBCluster) GetProcessSettings(processClass ProcessClass) ProcessSettings
GetProcessSettings gets settings for a process.
func (*FoundationDBCluster) GetPublicIPSource ¶
func (cluster *FoundationDBCluster) GetPublicIPSource() PublicIPSource
GetPublicIPSource returns the set PublicIPSource or the default PublicIPSourcePod
func (*FoundationDBCluster) GetRemovalMode ¶
func (cluster *FoundationDBCluster) GetRemovalMode() PodUpdateMode
GetRemovalMode returns the removal mode of the cluster or default to PodUpdateModeZone if unset.
func (*FoundationDBCluster) GetResourceLabels ¶
func (cluster *FoundationDBCluster) GetResourceLabels() map[string]string
GetResourceLabels returns the resource labels for all created resources
func (*FoundationDBCluster) GetRoleCountsWithDefaults ¶
func (cluster *FoundationDBCluster) GetRoleCountsWithDefaults() RoleCounts
GetRoleCountsWithDefaults gets the role counts from the cluster spec and fills in default values for any role counts that are 0.
The default Storage value will be 2F + 1, where F is the cluster's fault tolerance.
The default Logs value will be 3 or 4 for three_data_hall.
The default Proxies value will be 3.
The default Resolvers value will be 1.
The default RemoteLogs value will be equal to the Logs value when the UsableRegions is greater than 1. It will be equal to -1 when the UsableRegions is less than or equal to 1.
The default LogRouters value will be equal to 3 times the Logs value when the UsableRegions is greater than 1. It will be equal to -1 when the UsableRegions is less than or equal to 1.
func (*FoundationDBCluster) GetRunningVersion ¶ added in v1.4.0
func (cluster *FoundationDBCluster) GetRunningVersion() string
GetRunningVersion returns the running version of the cluster defined in the cluster status or if not defined the version defined in the cluster spec.
func (*FoundationDBCluster) GetSidecarContainerEnableLivenessProbe ¶
func (cluster *FoundationDBCluster) GetSidecarContainerEnableLivenessProbe() bool
GetSidecarContainerEnableLivenessProbe returns cluster.Spec.SidecarContainer.EnableLivenessProbe or if unset the default true
func (*FoundationDBCluster) GetSidecarContainerEnableReadinessProbe ¶
func (cluster *FoundationDBCluster) GetSidecarContainerEnableReadinessProbe() bool
GetSidecarContainerEnableReadinessProbe returns cluster.Spec.SidecarContainer.EnableReadinessProbe or if unset the default false
func (*FoundationDBCluster) GetStorageServersPerPod ¶
func (cluster *FoundationDBCluster) GetStorageServersPerPod() int
GetStorageServersPerPod returns the StorageServer per Pod.
func (*FoundationDBCluster) GetTaintReplacementTimeSeconds ¶ added in v1.18.0
func (cluster *FoundationDBCluster) GetTaintReplacementTimeSeconds() int
GetTaintReplacementTimeSeconds returns cluster.Spec.AutomationOptions.Replacements.TaintReplacementTimeSeconds or if unset the default 1800
func (*FoundationDBCluster) GetUseExplicitListenAddress ¶
func (cluster *FoundationDBCluster) GetUseExplicitListenAddress() bool
GetUseExplicitListenAddress returns the UseExplicitListenAddress or if unset the default true
func (*FoundationDBCluster) GetUseNonBlockingExcludes ¶
func (cluster *FoundationDBCluster) GetUseNonBlockingExcludes() bool
GetUseNonBlockingExcludes returns the value of useNonBlockingExcludes or false if unset.
func (*FoundationDBCluster) GetWaitBetweenRemovalsSeconds ¶
func (cluster *FoundationDBCluster) GetWaitBetweenRemovalsSeconds() int
GetWaitBetweenRemovalsSeconds returns the WaitDurationBetweenRemovals if set or defaults to 60s.
func (*FoundationDBCluster) IsBeingUpgraded ¶
func (cluster *FoundationDBCluster) IsBeingUpgraded() bool
IsBeingUpgraded determines whether the cluster has a pending upgrade.
func (*FoundationDBCluster) IsBeingUpgradedWithVersionIncompatibleVersion ¶ added in v1.15.0
func (cluster *FoundationDBCluster) IsBeingUpgradedWithVersionIncompatibleVersion() bool
IsBeingUpgradedWithVersionIncompatibleVersion determines whether the cluster has a pending upgrade to a version incompatible version.
func (*FoundationDBCluster) IsEligibleAsCandidate ¶
func (cluster *FoundationDBCluster) IsEligibleAsCandidate(pClass ProcessClass) bool
IsEligibleAsCandidate checks if the given process has the right process class to be considered a valid coordinator. This method will always return false for non stateful process classes.
func (*FoundationDBCluster) IsPodIPFamily6 ¶ added in v1.23.0
func (cluster *FoundationDBCluster) IsPodIPFamily6() bool
IsPodIPFamily6 determines whether the podIPFamily setting in cluster is set to use the IPv6 family.
func (*FoundationDBCluster) IsTaintFeatureDisabled ¶ added in v1.18.0
func (cluster *FoundationDBCluster) IsTaintFeatureDisabled() bool
IsTaintFeatureDisabled return true if operator is configured to not replace Pods tainted Nodes OR if operator's TaintReplacementOptions is not set.
func (*FoundationDBCluster) MinimumFaultDomains ¶
func (cluster *FoundationDBCluster) MinimumFaultDomains() int
MinimumFaultDomains returns the number of fault domains the cluster needs to function.
func (*FoundationDBCluster) NeedsExplicitListenAddress ¶
func (cluster *FoundationDBCluster) NeedsExplicitListenAddress() bool
NeedsExplicitListenAddress determines whether we pass a listen address parameter to fdbserver.
func (*FoundationDBCluster) NeedsHeadlessService ¶
func (cluster *FoundationDBCluster) NeedsHeadlessService() bool
NeedsHeadlessService determines whether we need to create a headless service for this cluster.
func (*FoundationDBCluster) NeedsReplacement ¶
func (cluster *FoundationDBCluster) NeedsReplacement(processGroup *ProcessGroupStatus) bool
NeedsReplacement returns true if the Pod should be replaced if the Pod spec has changed
func (*FoundationDBCluster) ProcessGroupIsBeingRemoved ¶
func (cluster *FoundationDBCluster) ProcessGroupIsBeingRemoved(processGroupID ProcessGroupID) bool
ProcessGroupIsBeingRemoved determines if an instance is pending removal.
func (*FoundationDBCluster) ProcessSharesDC ¶ added in v1.38.0
func (cluster *FoundationDBCluster) ProcessSharesDC(process FoundationDBStatusProcessInfo) bool
ProcessSharesDC returns true if the process's locality matches the cluster's Datacenter. If there is insufficient cluster information, it will return true to avoid filtering when there is insufficient data
func (*FoundationDBCluster) RemoveProcessGroupsFromCrashLoopContainerList ¶ added in v1.17.0
func (cluster *FoundationDBCluster) RemoveProcessGroupsFromCrashLoopContainerList(processGroupIDs []ProcessGroupID, containerName string)
RemoveProcessGroupsFromCrashLoopContainerList removes the provided process group IDs from the crash-loop container list.
func (*FoundationDBCluster) RemoveProcessGroupsFromCrashLoopList ¶ added in v1.8.1
func (cluster *FoundationDBCluster) RemoveProcessGroupsFromCrashLoopList(processGroupIDs []ProcessGroupID)
RemoveProcessGroupsFromCrashLoopList removes the provided process group IDs from the crash-loop list.
func (*FoundationDBCluster) RemoveProcessGroupsFromNoScheduleList ¶ added in v1.8.1
func (cluster *FoundationDBCluster) RemoveProcessGroupsFromNoScheduleList(processGroupIDs []ProcessGroupID)
RemoveProcessGroupsFromNoScheduleList removes the provided process group IDs from the no-schedule list.
func (*FoundationDBCluster) ResetMaintenanceMode ¶ added in v1.35.0
func (cluster *FoundationDBCluster) ResetMaintenanceMode() bool
ResetMaintenanceMode returns true if the operator should reset the maintenance mode once all processes in the fault domain have been restarted. This method will return true if either ResetMaintenanceMode or UseMaintenaceMode is set to true.
func (*FoundationDBCluster) ShouldFilterOnOwnerReferences ¶
func (cluster *FoundationDBCluster) ShouldFilterOnOwnerReferences() bool
ShouldFilterOnOwnerReferences determines if we should check owner references when determining if a resource is related to this cluster.
func (*FoundationDBCluster) ShouldUseLocks ¶
func (cluster *FoundationDBCluster) ShouldUseLocks() bool
ShouldUseLocks determine whether we should use locks to coordinator global operations.
func (*FoundationDBCluster) SkipProcessGroup ¶
func (cluster *FoundationDBCluster) SkipProcessGroup(processGroup *ProcessGroupStatus) bool
SkipProcessGroup checks if a ProcessGroupStatus should be skipped during reconciliation.
func (*FoundationDBCluster) UseDNSInClusterFile ¶
func (cluster *FoundationDBCluster) UseDNSInClusterFile() bool
UseDNSInClusterFile determines whether we need to use DNS entries in the cluster file for this cluster.
func (*FoundationDBCluster) UseLocalitiesForExclusion ¶ added in v1.4.1
func (cluster *FoundationDBCluster) UseLocalitiesForExclusion() bool
UseLocalitiesForExclusion returns the value of UseLocalitiesForExclusion or false if unset.
func (*FoundationDBCluster) UseMaintenaceMode ¶ added in v1.10.0
func (cluster *FoundationDBCluster) UseMaintenaceMode() bool
UseMaintenaceMode returns true if UseMaintenanceModeChecker is set.
func (*FoundationDBCluster) UseManagementAPI ¶ added in v1.8.0
func (cluster *FoundationDBCluster) UseManagementAPI() bool
UseManagementAPI returns the value of UseManagementAPI or false if unset.
func (*FoundationDBCluster) UseUnifiedImage ¶ added in v1.41.0
func (cluster *FoundationDBCluster) UseUnifiedImage() bool
UseUnifiedImage returns true if the unified image should be used.
func (*FoundationDBCluster) Validate ¶ added in v1.7.0
func (cluster *FoundationDBCluster) Validate() error
Validate checks if all settings in the cluster are valid, if not and error will be returned. If multiple issues are found all of them will be returned in a single error.
func (*FoundationDBCluster) VersionCompatibleUpgradeInProgress ¶ added in v1.13.0
func (cluster *FoundationDBCluster) VersionCompatibleUpgradeInProgress() bool
VersionCompatibleUpgradeInProgress returns true if the cluster is currently being upgraded and the upgrade is to a version compatible version.
type FoundationDBClusterAutomationOptions ¶
type FoundationDBClusterAutomationOptions struct { // ConfigureDatabase defines whether the operator is allowed to reconfigure // the database. ConfigureDatabase *bool `json:"configureDatabase,omitempty"` // KillProcesses defines whether the operator is allowed to bounce fdbserver // processes. KillProcesses *bool `json:"killProcesses,omitempty"` // CacheDatabaseStatusForReconciliation defines whether the operator is using the same FoundationDB machine-readable // status for all sub-reconcilers or if the machine-readable status should be fetched by ever sub-reconciler if // required. Enabling this setting might improve the operator reconciliation speed for large clusters. CacheDatabaseStatusForReconciliation *bool `json:"cacheDatabaseStatusForReconciliation,omitempty"` // Replacements contains options for automatically replacing failed // processes. Replacements AutomaticReplacementOptions `json:"replacements,omitempty"` // IgnorePendingPodsDuration defines how long a Pod has to be in the Pending Phase before // ignore it during reconciliation. This prevents Pod that are stuck in Pending to block // further reconciliation. IgnorePendingPodsDuration time.Duration `json:"ignorePendingPodsDuration,omitempty"` // UseNonBlockingExcludes defines whether the operator is allowed to use non blocking exclude commands. // The default is false. UseNonBlockingExcludes *bool `json:"useNonBlockingExcludes,omitempty"` // UseLocalitiesForExclusion defines whether the exclusions are done using localities instead of IP addresses. This // feature requires at least FDB 7.1.42 or 7.3.26. // The default is false. UseLocalitiesForExclusion *bool `json:"useLocalitiesForExclusion,omitempty"` // IgnoreTerminatingPodsSeconds defines how long a Pod has to be in the Terminating Phase before // we ignore it during reconciliation. This prevents Pod that are stuck in Terminating to block // further reconciliation. IgnoreTerminatingPodsSeconds *int `json:"ignoreTerminatingPodsSeconds,omitempty"` // IgnoreMissingProcessesSeconds defines how long a process group has to be in the MissingProcess condition until // it will be ignored during reconciliation. This prevents that a process will block reconciliation. IgnoreMissingProcessesSeconds *int `json:"ignoreMissingProcessesSeconds,omitempty"` // FailedPodDurationSeconds defines the duration a Pod can stay in the deleted state (deletionTimestamp != 0) before // it gets marked as PodFailed. This is important in cases where a fdbserver process is still reporting but the // Pod resource is marked for deletion. This can happen when the kubelet or a node fails. Setting this condition // will ensure that the operator is replacing affected Pods. FailedPodDurationSeconds *int `json:"failedPodDurationSeconds,omitempty"` // MaxConcurrentReplacements defines how many process groups can be concurrently // replaced if they are misconfigured. If the value will be set to 0 this will block replacements // and these misconfigured Pods must be replaced manually or by another process. For each reconcile // loop the operator calculates the maximum number of possible replacements by taken this value as the // upper limit and removes all ongoing replacements that have not finished. Which means if the value is // set to 5 and we have 4 ongoing replacements (process groups marked with remove but not excluded) the // operator is allowed to replace on further process group. // +kubebuilder:validation:Minimum=0 MaxConcurrentReplacements *int `json:"maxConcurrentReplacements,omitempty"` // DeletionMode defines the deletion mode for this cluster. This can be // PodUpdateModeNone, PodUpdateModeAll, PodUpdateModeZone or PodUpdateModeProcessGroup. The // DeletionMode defines how Pods are deleted in order to update them or // when they are removed. // +kubebuilder:validation:Optional // +kubebuilder:validation:Enum=All;Zone;ProcessGroup;None // +kubebuilder:default:=Zone DeletionMode PodUpdateMode `json:"deletionMode,omitempty"` // RemovalMode defines the removal mode for this cluster. This can be // PodUpdateModeNone, PodUpdateModeAll, PodUpdateModeZone or PodUpdateModeProcessGroup. The // RemovalMode defines how process groups are deleted in order when they // are marked for removal. // +kubebuilder:validation:Optional // +kubebuilder:validation:Enum=All;Zone;ProcessGroup;None // +kubebuilder:default:=Zone RemovalMode PodUpdateMode `json:"removalMode,omitempty"` // WaitBetweenRemovalsSeconds defines how long to wait between the last removal and the next removal. This is only an // upper limit if the process group and the according resources are deleted faster than the provided duration the // operator will move on with the next removal. The idea is to prevent a race condition were the operator deletes // a resource but the Kubernetes API is slower to trigger the actual deletion, and we are running into a situation // where the fault tolerance check still includes the already deleted processes. // Defaults to 60. WaitBetweenRemovalsSeconds *int `json:"waitBetweenRemovalsSeconds,omitempty"` // PodUpdateStrategy defines how Pod spec changes are rolled out either by replacing Pods or by deleting Pods. // The default for this is ReplaceTransactionSystem. // +kubebuilder:validation:Optional // +kubebuilder:validation:Enum=Replace;ReplaceTransactionSystem;Delete // +kubebuilder:default:=ReplaceTransactionSystem PodUpdateStrategy PodUpdateStrategy `json:"podUpdateStrategy,omitempty"` // UseManagementAPI defines if the operator should make use of the management API instead of // using fdbcli to interact with the FoundationDB cluster. UseManagementAPI *bool `json:"useManagementAPI,omitempty"` // MaintenanceModeOptions contains options for maintenance mode related settings. MaintenanceModeOptions MaintenanceModeOptions `json:"maintenanceModeOptions,omitempty"` // IgnoreLogGroupsForUpgrade defines the list of LogGroups that should be ignored during fdb version upgrade. // The default is a list that includes "fdb-kubernetes-operator". // +kubebuilder:validation:MaxItems=10 IgnoreLogGroupsForUpgrade []LogGroup `json:"ignoreLogGroupsForUpgrade,omitempty"` }
FoundationDBClusterAutomationOptions provides flags for enabling or disabling operations that can be performed on a cluster.
func (*FoundationDBClusterAutomationOptions) DeepCopy ¶
func (in *FoundationDBClusterAutomationOptions) DeepCopy() *FoundationDBClusterAutomationOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBClusterAutomationOptions.
func (*FoundationDBClusterAutomationOptions) DeepCopyInto ¶
func (in *FoundationDBClusterAutomationOptions) DeepCopyInto(out *FoundationDBClusterAutomationOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBClusterFaultDomain ¶
type FoundationDBClusterFaultDomain struct { // Key provides a topology key for the fault domain to replicate across. Key string `json:"key,omitempty"` // Value provides a harcoded value to use for the zoneid for the pods. Value string `json:"value,omitempty"` // ValueFrom provides a field selector to use as the source of the fault // domain. ValueFrom string `json:"valueFrom,omitempty"` // ZoneCount provides the number of fault domains in the data center where // these processes are running. This is only used in the // `kubernetes-cluster` fault domain strategy. ZoneCount int `json:"zoneCount,omitempty"` // ZoneIndex provides the index of this Kubernetes cluster in the list of // KCs in the data center. This is only used in the `kubernetes-cluster` // fault domain strategy. ZoneIndex int `json:"zoneIndex,omitempty"` }
FoundationDBClusterFaultDomain describes the fault domain that a cluster is replicated across.
func (*FoundationDBClusterFaultDomain) DeepCopy ¶
func (in *FoundationDBClusterFaultDomain) DeepCopy() *FoundationDBClusterFaultDomain
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBClusterFaultDomain.
func (*FoundationDBClusterFaultDomain) DeepCopyInto ¶
func (in *FoundationDBClusterFaultDomain) DeepCopyInto(out *FoundationDBClusterFaultDomain)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBClusterList ¶
type FoundationDBClusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []FoundationDBCluster `json:"items"` }
FoundationDBClusterList contains a list of FoundationDBCluster objects
func (*FoundationDBClusterList) DeepCopy ¶
func (in *FoundationDBClusterList) DeepCopy() *FoundationDBClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBClusterList.
func (*FoundationDBClusterList) DeepCopyInto ¶
func (in *FoundationDBClusterList) DeepCopyInto(out *FoundationDBClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FoundationDBClusterList) DeepCopyObject ¶
func (in *FoundationDBClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type FoundationDBClusterSpec ¶
type FoundationDBClusterSpec struct { // Version defines the version of FoundationDB the cluster should run. // +kubebuilder:validation:Pattern:=(\d+)\.(\d+)\.(\d+) Version string `json:"version"` // DatabaseConfiguration defines the database configuration. DatabaseConfiguration DatabaseConfiguration `json:"databaseConfiguration,omitempty"` // Processes defines process-level settings. Processes map[ProcessClass]ProcessSettings `json:"processes,omitempty"` // ProcessCounts defines the number of processes to configure for each // process class. You can generally omit this, to allow the operator to // infer the process counts based on the database configuration. ProcessCounts ProcessCounts `json:"processCounts,omitempty"` // SeedConnectionString provides a connection string for the initial // reconciliation. // // After the initial reconciliation, this will not be used. SeedConnectionString string `json:"seedConnectionString,omitempty"` // PartialConnectionString provides a way to specify part of the // connection string (e.g. the database name and coordinator generation) // without specifying the entire string. This does not allow for setting // the coordinator IPs. If `SeedConnectionString` is set, // `PartialConnectionString` will have no effect. They cannot be used // together. PartialConnectionString ConnectionString `json:"partialConnectionString,omitempty"` // FaultDomain defines the rules for what fault domain to replicate across. FaultDomain FoundationDBClusterFaultDomain `json:"faultDomain,omitempty"` // ProcessGroupsToRemove defines the process groups that we should remove from the // cluster. This list contains the process group IDs. // +kubebuilder:validation:MinItems=0 // +kubebuilder:validation:MaxItems=500 ProcessGroupsToRemove []ProcessGroupID `json:"processGroupsToRemove,omitempty"` // ProcessGroupsToRemoveWithoutExclusion defines the process groups that we should // remove from the cluster without excluding them. This list contains the // process group IDs. // // This should be used for cases where a pod does not have an IP address and // you want to remove it and destroy its volume without confirming the data // is fully replicated. // +kubebuilder:validation:MinItems=0 // +kubebuilder:validation:MaxItems=500 ProcessGroupsToRemoveWithoutExclusion []ProcessGroupID `json:"processGroupsToRemoveWithoutExclusion,omitempty"` // ConfigMap allows customizing the config map the operator creates. ConfigMap *corev1.ConfigMap `json:"configMap,omitempty"` // MainContainer defines customization for the foundationdb container. MainContainer ContainerOverrides `json:"mainContainer,omitempty"` // SidecarContainer defines customization for the // foundationdb-kubernetes-sidecar container. SidecarContainer ContainerOverrides `json:"sidecarContainer,omitempty"` // TrustedCAs defines a list of root CAs the cluster should trust, in PEM // format. TrustedCAs []string `json:"trustedCAs,omitempty"` // SidecarVariables defines Custom variables that the sidecar should make // available for substitution in the monitor conf file. SidecarVariables []string `json:"sidecarVariables,omitempty"` // LogGroup defines the log group to use for the trace logs for the cluster. LogGroup string `json:"logGroup,omitempty"` // DataCenter defines the data center where these processes are running. DataCenter string `json:"dataCenter,omitempty"` // DataHall defines the data hall where these processes are running. DataHall string `json:"dataHall,omitempty"` // AutomationOptions defines customization for enabling or disabling certain // operations in the operator. AutomationOptions FoundationDBClusterAutomationOptions `json:"automationOptions,omitempty"` // ProcessGroupIDPrefix defines a prefix to append to the process group IDs in the // locality fields. // // This must be a valid Kubernetes label value. See // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set // for more details on that. // +kubebuilder:validation:MaxLength=43 // +kubebuilder:validation:Pattern:=^[a-z0-9A-Z]([\-._a-z0-9A-Z])*[a-z0-9A-Z]$ ProcessGroupIDPrefix string `json:"processGroupIDPrefix,omitempty"` // LockOptions allows customizing how we manage locks for global operations. LockOptions LockOptions `json:"lockOptions,omitempty"` // Routing defines the configuration for routing to our pods. Routing RoutingConfig `json:"routing,omitempty"` // IgnoreUpgradabilityChecks determines whether we should skip the check for // client compatibility when performing an upgrade. IgnoreUpgradabilityChecks bool `json:"ignoreUpgradabilityChecks,omitempty"` // Buggify defines settings for injecting faults into a cluster for testing. Buggify BuggifyConfig `json:"buggify,omitempty"` // StorageServersPerPod defines how many Storage Servers should run in // a single process group (Pod). This number defines the number of processes running // in one Pod whereas the ProcessCounts defines the number of Pods created. // This means that you end up with ProcessCounts["storage"] * StorageServersPerPod // storage processes. StorageServersPerPod int `json:"storageServersPerPod,omitempty"` // LogServersPerPod defines how many Log Servers should run in // a single process group (Pod). This number defines the number of processes running // in one Pod whereas the ProcessCounts defines the number of Pods created. // This means that you end up with ProcessCounts["Log"] * LogServersPerPod // log processes. This also affects processes with the transaction class. LogServersPerPod int `json:"logServersPerPod,omitempty"` // MinimumUptimeSecondsForBounce defines the minimum time, in seconds, that the // processes in the cluster must have been up for before the operator can // execute a bounce. // +kubebuilder:validation:Minimum=1 // +kubebuilder:default:=600 MinimumUptimeSecondsForBounce int `json:"minimumUptimeSecondsForBounce,omitempty"` // ReplaceInstancesWhenResourcesChange defines if an instance should be replaced // when the resource requirements are increased. This can be useful with the combination of // local storage. // +kubebuilder:default:=false ReplaceInstancesWhenResourcesChange *bool `json:"replaceInstancesWhenResourcesChange,omitempty"` // Skip defines if the cluster should be skipped for reconciliation. This can be useful for // investigating in issues or if the environment is unstable. // +kubebuilder:default:=false Skip bool `json:"skip,omitempty"` // CoordinatorSelection defines which process classes are eligible for coordinator selection. // If empty all stateful processes classes are equally eligible. // A higher priority means that a process class is preferred over another process class. // If the FoundationDB cluster is spans across multiple Kubernetes clusters or DCs the // CoordinatorSelection must match in all FoundationDB cluster resources otherwise // the coordinator selection process could conflict. CoordinatorSelection []CoordinatorSelectionSetting `json:"coordinatorSelection,omitempty"` // LabelConfig allows customizing labels used by the operator. LabelConfig LabelConfig `json:"labels,omitempty"` // UseExplicitListenAddress determines if we should add a listen address // that is separate from the public address. // Deprecated: This setting will be removed in the next major release. UseExplicitListenAddress *bool `json:"useExplicitListenAddress,omitempty"` // ImageType defines the image type that should be used for the FoundationDBCluster deployment. When the type // is set to "unified" the deployment will use the new fdb-kubernetes-monitor. Otherwise the main container and // the sidecar container will use different images. // Default: split // +kubebuilder:validation:Optional // +kubebuilder:validation:Enum=split;unified // +kubebuilder:default:=split ImageType *ImageType `json:"imageType,omitempty"` // When unset, there is no limit to the number of zones with unavailable pods. MaxZonesWithUnavailablePods *int `json:"maxZonesWithUnavailablePods,omitempty"` }
FoundationDBClusterSpec defines the desired state of a cluster.
func (*FoundationDBClusterSpec) DeepCopy ¶
func (in *FoundationDBClusterSpec) DeepCopy() *FoundationDBClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBClusterSpec.
func (*FoundationDBClusterSpec) DeepCopyInto ¶
func (in *FoundationDBClusterSpec) DeepCopyInto(out *FoundationDBClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBClusterStatus ¶
type FoundationDBClusterStatus struct { // DatabaseConfiguration provides the running configuration of the database. DatabaseConfiguration DatabaseConfiguration `json:"databaseConfiguration,omitempty"` // Generations provides information about the latest generation to be // reconciled, or to reach other stages at which reconciliation can halt. Generations ClusterGenerationStatus `json:"generations,omitempty"` // Health provides information about the health of the database. Health ClusterHealth `json:"health,omitempty"` // RequiredAddresses define that addresses that we need to enable for the // processes in the cluster. RequiredAddresses RequiredAddressSet `json:"requiredAddresses,omitempty"` // HasIncorrectConfigMap indicates whether the latest config map is out // of date with the cluster spec. HasIncorrectConfigMap bool `json:"hasIncorrectConfigMap,omitempty"` // HasIncorrectServiceConfig indicates whether the cluster has service // config that is out of date with the cluster spec. HasIncorrectServiceConfig bool `json:"hasIncorrectServiceConfig,omitempty"` // NeedsNewCoordinators indicates whether the cluster needs to recruit // new coordinators to fulfill its fault tolerance requirements. NeedsNewCoordinators bool `json:"needsNewCoordinators,omitempty"` // RunningVersion defines the version of FoundationDB that the cluster is // currently running. RunningVersion string `json:"runningVersion,omitempty"` // ConnectionString defines the contents of the cluster file. ConnectionString string `json:"connectionString,omitempty"` // Configured defines whether we have configured the database yet. Configured bool `json:"configured,omitempty"` // HasListenIPsForAllPods defines whether every pod has an environment // variable for its listen address. HasListenIPsForAllPods bool `json:"hasListenIPsForAllPods,omitempty"` // StorageServersPerDisk defines the storageServersPerPod observed in the cluster. // If there are more than one value in the slice the reconcile phase is not finished. // +kubebuilder:validation:MaxItems=5 StorageServersPerDisk []int `json:"storageServersPerDisk,omitempty"` // LogServersPerDisk defines the LogServersPerDisk observed in the cluster. // If there are more than one value in the slice the reconcile phase is not finished. // +kubebuilder:validation:MaxItems=5 LogServersPerDisk []int `json:"logServersPerDisk,omitempty"` // ImageTypes defines the kinds of images that are in use in the cluster. // If there is more than one value in the slice the reconcile phase is not // finished. // +kubebuilder:validation:MaxItems=10 ImageTypes []ImageType `json:"imageTypes,omitempty"` // ProcessGroups contain information about a process group. // This information is used in multiple places to trigger the according action. ProcessGroups []*ProcessGroupStatus `json:"processGroups,omitempty"` // Locks contains information about the locking system. Locks LockSystemStatus `json:"locks,omitempty"` // MaintenenanceModeInfo contains information regarding process groups in maintenance mode // Deprecated: This setting is not used anymore. MaintenanceModeInfo MaintenanceModeInfo `json:"maintenanceModeInfo,omitempty"` // DesiredProcessGroups reflects the number of expected running process groups. DesiredProcessGroups int `json:"desiredProcessGroups,omitempty"` // ReconciledProcessGroups reflects the number of process groups that have no condition and are not marked for removal. ReconciledProcessGroups int `json:"reconciledProcessGroups,omitempty"` }
FoundationDBClusterStatus defines the observed state of FoundationDBCluster
func (*FoundationDBClusterStatus) AddServersPerDisk ¶ added in v1.21.0
func (clusterStatus *FoundationDBClusterStatus) AddServersPerDisk(serversPerDisk int, pClass ProcessClass)
AddServersPerDisk adds serverPerDisk to the status field to keep track which ConfigMaps should be kept
func (*FoundationDBClusterStatus) DeepCopy ¶
func (in *FoundationDBClusterStatus) DeepCopy() *FoundationDBClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBClusterStatus.
func (*FoundationDBClusterStatus) DeepCopyInto ¶
func (in *FoundationDBClusterStatus) DeepCopyInto(out *FoundationDBClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (FoundationDBClusterStatus) ProcessGroupsByProcessClass ¶
func (clusterStatus FoundationDBClusterStatus) ProcessGroupsByProcessClass(processClass ProcessClass) []*ProcessGroupStatus
ProcessGroupsByProcessClass returns a slice of all Process Groups that contains a given process class.
type FoundationDBCustomParameter ¶
type FoundationDBCustomParameter string
FoundationDBCustomParameter defines a single custom knob +kubebuilder:validation:MaxLength=100
type FoundationDBCustomParameters ¶
type FoundationDBCustomParameters []FoundationDBCustomParameter
FoundationDBCustomParameters defines a slice of custom knobs +kubebuilder:validation:MaxItems=100
func (FoundationDBCustomParameters) DeepCopy ¶
func (in FoundationDBCustomParameters) DeepCopy() FoundationDBCustomParameters
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBCustomParameters.
func (FoundationDBCustomParameters) DeepCopyInto ¶
func (in FoundationDBCustomParameters) DeepCopyInto(out *FoundationDBCustomParameters)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (FoundationDBCustomParameters) GetKnobsForCLI ¶
func (customParameters FoundationDBCustomParameters) GetKnobsForCLI() []string
GetKnobsForCLI returns the list of knobs that should be provided to the commandline when running an command over the admin client.
func (FoundationDBCustomParameters) ValidateCustomParameters ¶
func (customParameters FoundationDBCustomParameters) ValidateCustomParameters() error
ValidateCustomParameters ensures that no duplicate values are set and that no protected/forbidden parameters are set. Theoretically we could also check if FDB supports the given parameter.
type FoundationDBKeyRange ¶
type FoundationDBKeyRange struct { // Start provides the beginning of the key range. // +kubebuilder:validation:Pattern:=^[A-Za-z0-9\/\\-]+$ Start string `json:"start"` // End provides the end of the key range. // +kubebuilder:validation:Pattern:=^[A-Za-z0-9\/\\-]+$ End string `json:"end"` }
FoundationDBKeyRange describes a range of keys for a command.
The keys in the key range must match the following pattern: `^[A-Za-z0-9\/\\-]+$`. All other characters can be escaped with `\xBB`, where `BB` is the hexadecimal value of the byte.
func (*FoundationDBKeyRange) DeepCopy ¶
func (in *FoundationDBKeyRange) DeepCopy() *FoundationDBKeyRange
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBKeyRange.
func (*FoundationDBKeyRange) DeepCopyInto ¶
func (in *FoundationDBKeyRange) DeepCopyInto(out *FoundationDBKeyRange)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBLiveBackupStatus ¶
type FoundationDBLiveBackupStatus struct { // DestinationURL provides the URL that the backup is being written to. DestinationURL string `json:"DestinationURL,omitempty"` // SnapshotIntervalSeconds provides the interval of the snapshots. SnapshotIntervalSeconds int `json:"SnapshotIntervalSeconds,omitempty"` // Status provides the current state of the backup. Status FoundationDBLiveBackupStatusState `json:"Status,omitempty"` // BackupAgentsPaused describes whether the backup agents are paused. BackupAgentsPaused bool `json:"BackupAgentsPaused,omitempty"` }
FoundationDBLiveBackupStatus describes the live status of the backup for a cluster, as provided by the backup status command.
func (*FoundationDBLiveBackupStatus) DeepCopy ¶
func (in *FoundationDBLiveBackupStatus) DeepCopy() *FoundationDBLiveBackupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBLiveBackupStatus.
func (*FoundationDBLiveBackupStatus) DeepCopyInto ¶
func (in *FoundationDBLiveBackupStatus) DeepCopyInto(out *FoundationDBLiveBackupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBLiveBackupStatusState ¶
type FoundationDBLiveBackupStatusState struct { // Running determines whether the backup is currently running. Running bool `json:"Running,omitempty"` }
FoundationDBLiveBackupStatusState provides the state of a backup in the backup status.
func (*FoundationDBLiveBackupStatusState) DeepCopy ¶
func (in *FoundationDBLiveBackupStatusState) DeepCopy() *FoundationDBLiveBackupStatusState
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBLiveBackupStatusState.
func (*FoundationDBLiveBackupStatusState) DeepCopyInto ¶
func (in *FoundationDBLiveBackupStatusState) DeepCopyInto(out *FoundationDBLiveBackupStatusState)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBRestore ¶
type FoundationDBRestore struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec FoundationDBRestoreSpec `json:"spec,omitempty"` Status FoundationDBRestoreStatus `json:"status,omitempty"` }
FoundationDBRestore is the Schema for the foundationdbrestores API
func (*FoundationDBRestore) BackupName ¶
func (restore *FoundationDBRestore) BackupName() string
BackupName gets the name of the backup for the source backup. This will fill in a default value if the backup name in the spec is empty.
func (*FoundationDBRestore) BackupURL ¶
func (restore *FoundationDBRestore) BackupURL() string
BackupURL gets the destination url of the backup.
func (*FoundationDBRestore) DeepCopy ¶
func (in *FoundationDBRestore) DeepCopy() *FoundationDBRestore
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBRestore.
func (*FoundationDBRestore) DeepCopyInto ¶
func (in *FoundationDBRestore) DeepCopyInto(out *FoundationDBRestore)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FoundationDBRestore) DeepCopyObject ¶
func (in *FoundationDBRestore) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type FoundationDBRestoreList ¶
type FoundationDBRestoreList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []FoundationDBRestore `json:"items"` }
FoundationDBRestoreList contains a list of FoundationDBRestore objects
func (*FoundationDBRestoreList) DeepCopy ¶
func (in *FoundationDBRestoreList) DeepCopy() *FoundationDBRestoreList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBRestoreList.
func (*FoundationDBRestoreList) DeepCopyInto ¶
func (in *FoundationDBRestoreList) DeepCopyInto(out *FoundationDBRestoreList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FoundationDBRestoreList) DeepCopyObject ¶
func (in *FoundationDBRestoreList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type FoundationDBRestoreSpec ¶
type FoundationDBRestoreSpec struct { // DestinationClusterName provides the name of the cluster that the data is // being restored into. DestinationClusterName string `json:"destinationClusterName"` // The key ranges to restore. KeyRanges []FoundationDBKeyRange `json:"keyRanges,omitempty"` // This is the configuration of the target blobstore for this backup. BlobStoreConfiguration *BlobStoreConfiguration `json:"blobStoreConfiguration,omitempty"` // CustomParameters defines additional parameters to pass to the backup // agents. CustomParameters FoundationDBCustomParameters `json:"customParameters,omitempty"` }
FoundationDBRestoreSpec describes the desired state of the backup for a cluster.
func (*FoundationDBRestoreSpec) DeepCopy ¶
func (in *FoundationDBRestoreSpec) DeepCopy() *FoundationDBRestoreSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBRestoreSpec.
func (*FoundationDBRestoreSpec) DeepCopyInto ¶
func (in *FoundationDBRestoreSpec) DeepCopyInto(out *FoundationDBRestoreSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBRestoreStatus ¶
type FoundationDBRestoreStatus struct { // Running describes whether the restore is currently running. Running bool `json:"running,omitempty"` }
FoundationDBRestoreStatus describes the current status of the restore for a cluster.
func (*FoundationDBRestoreStatus) DeepCopy ¶
func (in *FoundationDBRestoreStatus) DeepCopy() *FoundationDBRestoreStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBRestoreStatus.
func (*FoundationDBRestoreStatus) DeepCopyInto ¶
func (in *FoundationDBRestoreStatus) DeepCopyInto(out *FoundationDBRestoreStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatus ¶
type FoundationDBStatus struct { // Client provides the client section of the status. Client FoundationDBStatusLocalClientInfo `json:"client,omitempty"` // Cluster provides the cluster section of the status. Cluster FoundationDBStatusClusterInfo `json:"cluster,omitempty"` }
FoundationDBStatus describes the status of the cluster as provided by FoundationDB itself.
func (*FoundationDBStatus) DeepCopy ¶
func (in *FoundationDBStatus) DeepCopy() *FoundationDBStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatus.
func (*FoundationDBStatus) DeepCopyInto ¶
func (in *FoundationDBStatus) DeepCopyInto(out *FoundationDBStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusBackupInfo ¶
type FoundationDBStatusBackupInfo struct { // Paused tells whether the backups are paused. Paused bool `json:"paused,omitempty"` // Tags provides information about specific backups. Tags map[string]FoundationDBStatusBackupTag `json:"tags,omitempty"` }
FoundationDBStatusBackupInfo provides information about backups that have been started.
func (*FoundationDBStatusBackupInfo) DeepCopy ¶
func (in *FoundationDBStatusBackupInfo) DeepCopy() *FoundationDBStatusBackupInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusBackupInfo.
func (*FoundationDBStatusBackupInfo) DeepCopyInto ¶
func (in *FoundationDBStatusBackupInfo) DeepCopyInto(out *FoundationDBStatusBackupInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusBackupTag ¶
type FoundationDBStatusBackupTag struct { CurrentContainer string `json:"current_container,omitempty"` RunningBackup bool `json:"running_backup,omitempty"` Restorable bool `json:"running_backup_is_restorable,omitempty"` }
FoundationDBStatusBackupTag provides information about a backup under a tag in the cluster status.
func (*FoundationDBStatusBackupTag) DeepCopy ¶
func (in *FoundationDBStatusBackupTag) DeepCopy() *FoundationDBStatusBackupTag
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusBackupTag.
func (*FoundationDBStatusBackupTag) DeepCopyInto ¶
func (in *FoundationDBStatusBackupTag) DeepCopyInto(out *FoundationDBStatusBackupTag)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusClientDBStatus ¶
type FoundationDBStatusClientDBStatus struct { // Available indicates whether the database is accepting traffic. Available bool `json:"available,omitempty"` // Healthy indicates whether the database is fully healthy. Healthy bool `json:"healthy,omitempty"` }
FoundationDBStatusClientDBStatus represents the databaseStatus field in the JSON database status
func (*FoundationDBStatusClientDBStatus) DeepCopy ¶
func (in *FoundationDBStatusClientDBStatus) DeepCopy() *FoundationDBStatusClientDBStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusClientDBStatus.
func (*FoundationDBStatusClientDBStatus) DeepCopyInto ¶
func (in *FoundationDBStatusClientDBStatus) DeepCopyInto(out *FoundationDBStatusClientDBStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusClusterClientInfo ¶
type FoundationDBStatusClusterClientInfo struct { // Count provides the number of clients connected to the database. Count int `json:"count,omitempty"` // SupportedVersions provides information about the versions supported by // the connected clients. SupportedVersions []FoundationDBStatusSupportedVersion `json:"supported_versions,omitempty"` }
FoundationDBStatusClusterClientInfo represents the connected client details in the cluster status.
func (*FoundationDBStatusClusterClientInfo) DeepCopy ¶
func (in *FoundationDBStatusClusterClientInfo) DeepCopy() *FoundationDBStatusClusterClientInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusClusterClientInfo.
func (*FoundationDBStatusClusterClientInfo) DeepCopyInto ¶
func (in *FoundationDBStatusClusterClientInfo) DeepCopyInto(out *FoundationDBStatusClusterClientInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusClusterInfo ¶
type FoundationDBStatusClusterInfo struct { // DatabaseConfiguration describes the current configuration of the // database. DatabaseConfiguration DatabaseConfiguration `json:"configuration,omitempty"` // Processes provides details on the processes that are reporting to the // cluster. Processes map[ProcessGroupID]FoundationDBStatusProcessInfo `json:"processes,omitempty"` // Data provides information about the data in the database. Data FoundationDBStatusDataStatistics `json:"data,omitempty"` // FullReplication indicates whether the database is fully replicated. FullReplication bool `json:"full_replication,omitempty"` // Generation indicates the current generation of this database. Generation int `json:"generation,omitempty"` // MaintenanceZone contains current zone under maintenance, if any. MaintenanceZone FaultDomain `json:"maintenance_zone,omitempty"` // Clients provides information about clients that are connected to the // database. Clients FoundationDBStatusClusterClientInfo `json:"clients,omitempty"` // Layers provides information about layers that are running against the // cluster. Layers FoundationDBStatusLayerInfo `json:"layers,omitempty"` // Logs provides information about log processes running in the cluster. Logs []FoundationDBStatusLogInfo `json:"logs,omitempty"` // Qos provides information about various qos metrics of the cluster. Qos FoundationDBStatusQosInfo `json:"qos,omitempty"` // FaultTolerance provides information about the fault tolerance status // of the cluster. FaultTolerance FaultTolerance `json:"fault_tolerance,omitempty"` // IncompatibleConnections provides information about processes that try to connect to the cluster with an // incompatible version. IncompatibleConnections []string `json:"incompatible_connections,omitempty"` // RecoveryState represents the recovery state. RecoveryState RecoveryState `json:"recovery_state,omitempty"` // ConnectionString represents the connection string in the cluster status json output. ConnectionString string `json:"connection_string,omitempty"` // Messages represents the possible messages that are part of the cluster information. Messages []FoundationDBStatusMessage `json:"messages,omitempty"` // BounceImpact represents the bounce_impact part of the machine-readable status. BounceImpact FoundationDBBounceImpact `json:"bounce_impact,omitempty"` }
FoundationDBStatusClusterInfo describes the "cluster" portion of the cluster status
func (*FoundationDBStatusClusterInfo) DeepCopy ¶
func (in *FoundationDBStatusClusterInfo) DeepCopy() *FoundationDBStatusClusterInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusClusterInfo.
func (*FoundationDBStatusClusterInfo) DeepCopyInto ¶
func (in *FoundationDBStatusClusterInfo) DeepCopyInto(out *FoundationDBStatusClusterInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusConnectedClient ¶
type FoundationDBStatusConnectedClient struct { // Address provides the address the client is connecting from. Address string `json:"address,omitempty"` // LogGroup provides the trace log group the client has set. LogGroup LogGroup `json:"log_group,omitempty"` }
FoundationDBStatusConnectedClient provides information about a client that is connected to the database.
func (*FoundationDBStatusConnectedClient) DeepCopy ¶
func (in *FoundationDBStatusConnectedClient) DeepCopy() *FoundationDBStatusConnectedClient
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusConnectedClient.
func (*FoundationDBStatusConnectedClient) DeepCopyInto ¶
func (in *FoundationDBStatusConnectedClient) DeepCopyInto(out *FoundationDBStatusConnectedClient)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (FoundationDBStatusConnectedClient) Description ¶
func (client FoundationDBStatusConnectedClient) Description() string
Description returns a string description of the a connected client.
type FoundationDBStatusCoordinator ¶
type FoundationDBStatusCoordinator struct { // Address provides the coordinator's address. Address ProcessAddress `json:"address,omitempty"` // Reachable indicates whether the coordinator is reachable. Reachable bool `json:"reachable,omitempty"` }
FoundationDBStatusCoordinator contains information about one of the coordinators.
func (*FoundationDBStatusCoordinator) DeepCopy ¶
func (in *FoundationDBStatusCoordinator) DeepCopy() *FoundationDBStatusCoordinator
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusCoordinator.
func (*FoundationDBStatusCoordinator) DeepCopyInto ¶
func (in *FoundationDBStatusCoordinator) DeepCopyInto(out *FoundationDBStatusCoordinator)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusCoordinatorInfo ¶
type FoundationDBStatusCoordinatorInfo struct { // Coordinators provides a list with coordinator details. Coordinators []FoundationDBStatusCoordinator `json:"coordinators,omitempty"` // QuorumReachable provides a summary if a quorum of the coordinators are reachable QuorumReachable bool `json:"quorum_reachable,omitempty"` }
FoundationDBStatusCoordinatorInfo contains information about the client's connection to the coordinators.
func (*FoundationDBStatusCoordinatorInfo) DeepCopy ¶
func (in *FoundationDBStatusCoordinatorInfo) DeepCopy() *FoundationDBStatusCoordinatorInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusCoordinatorInfo.
func (*FoundationDBStatusCoordinatorInfo) DeepCopyInto ¶
func (in *FoundationDBStatusCoordinatorInfo) DeepCopyInto(out *FoundationDBStatusCoordinatorInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusDataState ¶
type FoundationDBStatusDataState struct { // Description provides a human-readable description of the data // distribution. Description string `json:"description,omitempty"` // Healthy determines if the data distribution is healthy. Healthy bool `json:"healthy,omitempty"` // Name provides a machine-readable identifier for the data distribution // state. Name string `json:"name,omitempty"` // MinReplicasRemaining provides the number of replicas remaining in the // highest priority team. MinReplicasRemaining int `json:"min_replicas_remaining,omitempty"` }
FoundationDBStatusDataState provides information about the state of data distribution.
func (*FoundationDBStatusDataState) DeepCopy ¶
func (in *FoundationDBStatusDataState) DeepCopy() *FoundationDBStatusDataState
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusDataState.
func (*FoundationDBStatusDataState) DeepCopyInto ¶
func (in *FoundationDBStatusDataState) DeepCopyInto(out *FoundationDBStatusDataState)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusDataStatistics ¶
type FoundationDBStatusDataStatistics struct { // KVBytes provides the total Key Value Bytes in the database. KVBytes int `json:"total_kv_size_bytes,omitempty"` // MovingData provides information about the current data movement. MovingData FoundationDBStatusMovingData `json:"moving_data,omitempty"` // State provides a summary of the state of data distribution. State FoundationDBStatusDataState `json:"state,omitempty"` // TeamTrackers provides information about (highest priority) teams. TeamTrackers []FoundationDBStatusTeamTracker `json:"team_trackers,omitempty"` }
FoundationDBStatusDataStatistics provides information about the data in the database
func (*FoundationDBStatusDataStatistics) DeepCopy ¶
func (in *FoundationDBStatusDataStatistics) DeepCopy() *FoundationDBStatusDataStatistics
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusDataStatistics.
func (*FoundationDBStatusDataStatistics) DeepCopyInto ¶
func (in *FoundationDBStatusDataStatistics) DeepCopyInto(out *FoundationDBStatusDataStatistics)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusLagInfo ¶ added in v1.20.0
type FoundationDBStatusLagInfo struct { Seconds float64 `json:"seconds,omitempty"` Versions int64 `json:"versions,omitempty"` }
FoundationDBStatusLagInfo provides information about the lag being experienced by a storage server in the cluster.
func (*FoundationDBStatusLagInfo) DeepCopy ¶ added in v1.20.0
func (in *FoundationDBStatusLagInfo) DeepCopy() *FoundationDBStatusLagInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusLagInfo.
func (*FoundationDBStatusLagInfo) DeepCopyInto ¶ added in v1.20.0
func (in *FoundationDBStatusLagInfo) DeepCopyInto(out *FoundationDBStatusLagInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusLayerInfo ¶
type FoundationDBStatusLayerInfo struct { // Backup provides information about backups that have been started. Backup FoundationDBStatusBackupInfo `json:"backup,omitempty"` // The error from the layer status. Error string `json:"_error,omitempty"` }
FoundationDBStatusLayerInfo provides information about layers that are running against the cluster.
func (*FoundationDBStatusLayerInfo) DeepCopy ¶
func (in *FoundationDBStatusLayerInfo) DeepCopy() *FoundationDBStatusLayerInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusLayerInfo.
func (*FoundationDBStatusLayerInfo) DeepCopyInto ¶
func (in *FoundationDBStatusLayerInfo) DeepCopyInto(out *FoundationDBStatusLayerInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusLocalClientInfo ¶
type FoundationDBStatusLocalClientInfo struct { // Coordinators provides information about the cluster's coordinators. Coordinators FoundationDBStatusCoordinatorInfo `json:"coordinators,omitempty"` // DatabaseStatus provides a summary of the database's health. DatabaseStatus FoundationDBStatusClientDBStatus `json:"database_status,omitempty"` // Messages represents the possible messages that are part of the client information. Messages []FoundationDBStatusMessage `json:"messages,omitempty"` }
FoundationDBStatusLocalClientInfo contains information about the client connection from the process getting the status.
func (*FoundationDBStatusLocalClientInfo) DeepCopy ¶
func (in *FoundationDBStatusLocalClientInfo) DeepCopy() *FoundationDBStatusLocalClientInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusLocalClientInfo.
func (*FoundationDBStatusLocalClientInfo) DeepCopyInto ¶
func (in *FoundationDBStatusLocalClientInfo) DeepCopyInto(out *FoundationDBStatusLocalClientInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusLogInfo ¶ added in v1.20.0
type FoundationDBStatusLogInfo struct { Current bool `json:"current,omitempty"` LogFaultTolerance int `json:"log_fault_tolerance,omitempty"` LogReplicationFactor int `json:"log_replication_factor,omitempty"` RemoteLogFaultTolerance int `json:"remote_log_fault_tolerance,omitempty"` RemoteLogReplicationFactor int `json:"remote_log_replication_factor,omitempty"` SatelliteLogFaultTolerance int `json:"satellite_log_fault_tolerance,omitempty"` SatelliteLogReplicationFactor int `json:"satellite_log_replication_factor,omitempty"` }
FoundationDBStatusLogInfo provides information about the fault tolerance metrics of log processes in the cluster.
func (*FoundationDBStatusLogInfo) DeepCopy ¶ added in v1.20.0
func (in *FoundationDBStatusLogInfo) DeepCopy() *FoundationDBStatusLogInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusLogInfo.
func (*FoundationDBStatusLogInfo) DeepCopyInto ¶ added in v1.20.0
func (in *FoundationDBStatusLogInfo) DeepCopyInto(out *FoundationDBStatusLogInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusMessage ¶ added in v1.22.0
type FoundationDBStatusMessage struct { // Name represents the name of the message, e.g. "inconsistent_cluster_file" Name string `json:"name,omitempty"` // Description contains a human friendly description of the message. Description string `json:"description,omitempty"` // UnreachableProcesses contains the unreachable processes. This value is only set for unreachable_processes messages. UnreachableProcesses []FoundationDBUnreachableProcess `json:"unreachable_processes,omitempty"` }
FoundationDBStatusMessage represents a message in the machine-readable status. See: https://apple.github.io/foundationdb/mr-status.html#message-components
func (*FoundationDBStatusMessage) DeepCopy ¶ added in v1.22.0
func (in *FoundationDBStatusMessage) DeepCopy() *FoundationDBStatusMessage
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusMessage.
func (*FoundationDBStatusMessage) DeepCopyInto ¶ added in v1.22.0
func (in *FoundationDBStatusMessage) DeepCopyInto(out *FoundationDBStatusMessage)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusMovingData ¶
type FoundationDBStatusMovingData struct { // HighestPriority provides the priority of the highest-priority data // movement. HighestPriority int `json:"highest_priority,omitempty"` // InFlightBytes provides how many bytes are being actively moved. InFlightBytes int `json:"in_flight_bytes,omitempty"` // InQueueBytes provides how many bytes are pending data movement. InQueueBytes int `json:"in_queue_bytes,omitempty"` }
FoundationDBStatusMovingData provides information about the current data movement
func (*FoundationDBStatusMovingData) DeepCopy ¶
func (in *FoundationDBStatusMovingData) DeepCopy() *FoundationDBStatusMovingData
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusMovingData.
func (*FoundationDBStatusMovingData) DeepCopyInto ¶
func (in *FoundationDBStatusMovingData) DeepCopyInto(out *FoundationDBStatusMovingData)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusProcessInfo ¶
type FoundationDBStatusProcessInfo struct { // Address provides the address of the process. Address ProcessAddress `json:"address,omitempty"` // ProcessClass provides the process class the process has been given. ProcessClass ProcessClass `json:"class_type,omitempty"` // CommandLine provides the command-line invocation for the process. CommandLine string `json:"command_line,omitempty"` // Excluded indicates whether the process has been excluded. Excluded bool `json:"excluded,omitempty"` // Indicates that the process is in maintenance zone. UnderMaintenance bool `json:"under_maintenance,omitempty"` // The locality information for the process. Locality map[string]string `json:"locality,omitempty"` // The version of FoundationDB the process is running. Version string `json:"version,omitempty"` // The time that the process has been up for. UptimeSeconds float64 `json:"uptime_seconds,omitempty"` // Roles contains a slice of all roles of the process Roles []FoundationDBStatusProcessRoleInfo `json:"roles,omitempty"` // Messages contains error messages from that fdbserver process instance Messages []FoundationDBStatusProcessMessage `json:"messages,omitempty"` }
FoundationDBStatusProcessInfo describes the "processes" portion of the cluster status
func (*FoundationDBStatusProcessInfo) DeepCopy ¶
func (in *FoundationDBStatusProcessInfo) DeepCopy() *FoundationDBStatusProcessInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusProcessInfo.
func (*FoundationDBStatusProcessInfo) DeepCopyInto ¶
func (in *FoundationDBStatusProcessInfo) DeepCopyInto(out *FoundationDBStatusProcessInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusProcessMessage ¶ added in v1.12.0
type FoundationDBStatusProcessMessage struct { // Time when the error was observed Time float64 `json:"time,omitempty"` // The name of the error Name string `json:"name,omitempty"` // The type of the error Type string `json:"type,omitempty"` }
FoundationDBStatusProcessMessage represents an error message in the status json
func (*FoundationDBStatusProcessMessage) DeepCopy ¶ added in v1.12.0
func (in *FoundationDBStatusProcessMessage) DeepCopy() *FoundationDBStatusProcessMessage
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusProcessMessage.
func (*FoundationDBStatusProcessMessage) DeepCopyInto ¶ added in v1.12.0
func (in *FoundationDBStatusProcessMessage) DeepCopyInto(out *FoundationDBStatusProcessMessage)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusProcessRoleInfo ¶
type FoundationDBStatusProcessRoleInfo struct { // Role defines the role a process currently has Role string `json:"role,omitempty"` // StoredBytes defines the number of bytes that are currently stored for this process. StoredBytes int `json:"stored_bytes,omitempty"` // ID represent the role ID. ID string `json:"id,omitempty"` }
FoundationDBStatusProcessRoleInfo contains the minimal information from the process status roles.
func (*FoundationDBStatusProcessRoleInfo) DeepCopy ¶
func (in *FoundationDBStatusProcessRoleInfo) DeepCopy() *FoundationDBStatusProcessRoleInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusProcessRoleInfo.
func (*FoundationDBStatusProcessRoleInfo) DeepCopyInto ¶
func (in *FoundationDBStatusProcessRoleInfo) DeepCopyInto(out *FoundationDBStatusProcessRoleInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusQosInfo ¶ added in v1.20.0
type FoundationDBStatusQosInfo struct { LimitingDurabilityLagStorageServer FoundationDBStatusLagInfo `json:"limiting_durability_lag_storage_server,omitempty"` WorstDataLagStorageServer FoundationDBStatusLagInfo `json:"worst_data_lag_storage_server,omitempty"` WorstDurabilityLagStorageServer FoundationDBStatusLagInfo `json:"worst_durability_lag_storage_server,omitempty"` }
FoundationDBStatusQosInfo provides information about various qos metrics of the cluster.
func (*FoundationDBStatusQosInfo) DeepCopy ¶ added in v1.20.0
func (in *FoundationDBStatusQosInfo) DeepCopy() *FoundationDBStatusQosInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusQosInfo.
func (*FoundationDBStatusQosInfo) DeepCopyInto ¶ added in v1.20.0
func (in *FoundationDBStatusQosInfo) DeepCopyInto(out *FoundationDBStatusQosInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusSupportedVersion ¶
type FoundationDBStatusSupportedVersion struct { // ClientVersion provides the version of FDB the client is connecting // through. ClientVersion string `json:"client_version,omitempty"` // ConnectedClient provides the clients that are using this version. ConnectedClients []FoundationDBStatusConnectedClient `json:"connected_clients"` // MaxProtocolClients provides the clients that are using this version as // their highest supported protocol version. MaxProtocolClients []FoundationDBStatusConnectedClient `json:"max_protocol_clients"` // ProtocolVersion is the version of the wire protocol the client is using. ProtocolVersion string `json:"protocol_version,omitempty"` // SourceVersion is the version of the source code that the client library // was built from. SourceVersion string `json:"source_version,omitempty"` }
FoundationDBStatusSupportedVersion provides information about a version of FDB supported by the connected clients.
func (*FoundationDBStatusSupportedVersion) DeepCopy ¶
func (in *FoundationDBStatusSupportedVersion) DeepCopy() *FoundationDBStatusSupportedVersion
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusSupportedVersion.
func (*FoundationDBStatusSupportedVersion) DeepCopyInto ¶
func (in *FoundationDBStatusSupportedVersion) DeepCopyInto(out *FoundationDBStatusSupportedVersion)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBStatusTeamTracker ¶ added in v1.20.0
type FoundationDBStatusTeamTracker struct { // Primary indicates whether the team is in the primary region or not. Primary bool `json:"primary,omitempty"` // FoundationDBStatusDataState provides information about the state of the // highest priority team. State FoundationDBStatusDataState `json:"state,omitempty"` }
FoundationDBStatusTeamTracker provides information about the highest priority team.
func (*FoundationDBStatusTeamTracker) DeepCopy ¶ added in v1.20.0
func (in *FoundationDBStatusTeamTracker) DeepCopy() *FoundationDBStatusTeamTracker
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusTeamTracker.
func (*FoundationDBStatusTeamTracker) DeepCopyInto ¶ added in v1.20.0
func (in *FoundationDBStatusTeamTracker) DeepCopyInto(out *FoundationDBStatusTeamTracker)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FoundationDBUnreachableProcess ¶ added in v1.32.0
type FoundationDBUnreachableProcess struct { // Address provides the address of the unreachable process Address string `json:"address,omitempty"` }
FoundationDBUnreachableProcess provides information about an unreachable process
func (*FoundationDBUnreachableProcess) DeepCopy ¶ added in v1.32.0
func (in *FoundationDBUnreachableProcess) DeepCopy() *FoundationDBUnreachableProcess
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBUnreachableProcess.
func (*FoundationDBUnreachableProcess) DeepCopyInto ¶ added in v1.32.0
func (in *FoundationDBUnreachableProcess) DeepCopyInto(out *FoundationDBUnreachableProcess)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ImageConfig ¶
type ImageConfig struct { // Version is the version of FoundationDB this policy applies to. If this is // blank, the policy applies to all FDB versions. // +kubebuilder:validation:MaxLength=20 Version string `json:"version,omitempty"` // BaseImage specifies the part of the image before the tag. // +kubebuilder:validation:MaxLength=200 BaseImage string `json:"baseImage,omitempty"` // Tag specifies a full image tag. // +kubebuilder:validation:MaxLength=100 Tag string `json:"tag,omitempty"` // TagSuffix specifies a suffix that will be added after the version to form // the full tag. // +kubebuilder:validation:MaxLength=50 TagSuffix string `json:"tagSuffix,omitempty"` }
ImageConfig provides a policy for customizing an image.
When multiple image configs are provided, they will be merged into a single config that will be used to define the final image. For each field, we select the value from the first entry in the config list that defines a value for that field, and matches the version of FoundationDB the image is for. Any config that specifies a different version than the one under consideration will be ignored for the purposes of defining that image.
func SelectImageConfig ¶
func SelectImageConfig(allConfigs []ImageConfig, versionString string) ImageConfig
SelectImageConfig selects image configs that apply to a version of FDB and merges them into a single config.
func (*ImageConfig) DeepCopy ¶
func (in *ImageConfig) DeepCopy() *ImageConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageConfig.
func (*ImageConfig) DeepCopyInto ¶
func (in *ImageConfig) DeepCopyInto(out *ImageConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ImageConfig) Image ¶
func (config ImageConfig) Image() string
Image generates an image using a config.
type ImageType ¶
type ImageType string
ImageType defines a single kind of images used in the cluster. +kubebuilder:validation:MaxLength=1024
type LabelConfig ¶
type LabelConfig struct { // MatchLabels provides the labels that the operator should use to identify // resources owned by the cluster. These will automatically be applied to // all resources the operator creates. MatchLabels map[string]string `json:"matchLabels,omitempty"` // ResourceLabels provides additional labels that the operator should apply to // resources it creates. ResourceLabels map[string]string `json:"resourceLabels,omitempty"` // ProcessGroupIDLabels provides the labels that we use for the process group ID // field. The first label will be used by the operator when filtering // resources. // +kubebuilder:validation:MaxItems=100 ProcessGroupIDLabels []string `json:"processGroupIDLabels,omitempty"` // ProcessClassLabels provides the labels that we use for the process class // field. The first label will be used by the operator when filtering // resources. // +kubebuilder:validation:MaxItems=100 ProcessClassLabels []string `json:"processClassLabels,omitempty"` // FilterOnOwnerReferences determines whether we should check that resources // are owned by the cluster object, in addition to the constraints provided // by the match labels. // Deprecated: This setting will be removed in the next major release. FilterOnOwnerReferences *bool `json:"filterOnOwnerReference,omitempty"` }
LabelConfig allows customizing labels used by the operator.
func (*LabelConfig) DeepCopy ¶
func (in *LabelConfig) DeepCopy() *LabelConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelConfig.
func (*LabelConfig) DeepCopyInto ¶
func (in *LabelConfig) DeepCopyInto(out *LabelConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LockDenyListEntry ¶
type LockDenyListEntry struct { // The ID of the operator instance this entry is targeting. ID string `json:"id,omitempty"` // Whether the instance is allowed to take locks. Allow bool `json:"allow,omitempty"` }
LockDenyListEntry models an entry in the deny list for the locking system.
func (*LockDenyListEntry) DeepCopy ¶
func (in *LockDenyListEntry) DeepCopy() *LockDenyListEntry
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LockDenyListEntry.
func (*LockDenyListEntry) DeepCopyInto ¶
func (in *LockDenyListEntry) DeepCopyInto(out *LockDenyListEntry)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LockOptions ¶
type LockOptions struct { // DisableLocks determines whether we should disable locking entirely. DisableLocks *bool `json:"disableLocks,omitempty"` // LockKeyPrefix provides a custom prefix for the keys in the database we // use to store locks. LockKeyPrefix string `json:"lockKeyPrefix,omitempty"` // LockDurationMinutes determines the duration that locks should be valid // for. LockDurationMinutes *int `json:"lockDurationMinutes,omitempty"` // DenyList manages configuration for whether an instance of the operator // should be denied from taking locks. DenyList []LockDenyListEntry `json:"denyList,omitempty"` }
LockOptions provides customization for locking global operations.
func (*LockOptions) DeepCopy ¶
func (in *LockOptions) DeepCopy() *LockOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LockOptions.
func (*LockOptions) DeepCopyInto ¶
func (in *LockOptions) DeepCopyInto(out *LockOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LockSystemStatus ¶
type LockSystemStatus struct { // DenyList contains a list of operator instances that are prevented // from taking locks. DenyList []string `json:"lockDenyList,omitempty"` }
LockSystemStatus provides a summary of the status of the locking system.
func (*LockSystemStatus) DeepCopy ¶
func (in *LockSystemStatus) DeepCopy() *LockSystemStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LockSystemStatus.
func (*LockSystemStatus) DeepCopyInto ¶
func (in *LockSystemStatus) DeepCopyInto(out *LockSystemStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LogGroup ¶ added in v1.17.0
type LogGroup string
LogGroup represents a LogGroup used by a FoundationDB process to log trace events. The LogGroup can be used to filter clients during an upgrade. +kubebuilder:validation:MaxLength=256
type MaintenanceModeInfo ¶ added in v1.10.0
type MaintenanceModeInfo struct { // StartTimestamp provides the timestamp when this zone is put into maintenance mode // Deprecated: This setting is not used anymore. StartTimestamp *metav1.Time `json:"startTimestamp,omitempty"` // ZoneID that is placed in maintenance mode // Deprecated: This setting is not used anymore. ZoneID FaultDomain `json:"zoneID,omitempty"` // ProcessGroups that are placed in maintenance mode // +kubebuilder:validation:MaxItems=200 // Deprecated: This setting is not used anymore. ProcessGroups []string `json:"processGroups,omitempty"` }
MaintenanceModeInfo contains information regarding the zone and process groups that are put into maintenance mode by the operator
func (*MaintenanceModeInfo) DeepCopy ¶ added in v1.10.0
func (in *MaintenanceModeInfo) DeepCopy() *MaintenanceModeInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceModeInfo.
func (*MaintenanceModeInfo) DeepCopyInto ¶ added in v1.10.0
func (in *MaintenanceModeInfo) DeepCopyInto(out *MaintenanceModeInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MaintenanceModeOptions ¶ added in v1.10.0
type MaintenanceModeOptions struct { // UseMaintenanceModeChecker defines whether the operator is allowed to use maintenance mode before updating pods. // If this setting is set to true the operator will set and reset the maintenance mode when updating pods. If this // setting is set to true, then ResetMaintenanceMode will also be enabled to make sure the operator is able to // reset the maintenance mode again. // Default is false. UseMaintenanceModeChecker *bool `json:"UseMaintenanceModeChecker,omitempty"` // ResetMaintenanceMode defines whether the operator should reset the maintenance mode if all storage processes // under the maintenance zone have been restarted. The default is false. For more details see: // https://github.com/FoundationDB/fdb-kubernetes-operator/blob/improve-maintenance-mode-integration/docs/manual/operations.md#maintenance // Default is false. ResetMaintenanceMode *bool `json:"resetMaintenanceMode,omitempty"` // MaintenanceModeTimeSeconds provides the duration for the zone to be in maintenance. It will automatically be switched off after the time elapses. // Default is 600. MaintenanceModeTimeSeconds *int `json:"maintenanceModeTimeSeconds,omitempty"` }
MaintenanceModeOptions controls options for placing zones in maintenance mode.
func (*MaintenanceModeOptions) DeepCopy ¶ added in v1.10.0
func (in *MaintenanceModeOptions) DeepCopy() *MaintenanceModeOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceModeOptions.
func (*MaintenanceModeOptions) DeepCopyInto ¶ added in v1.10.0
func (in *MaintenanceModeOptions) DeepCopyInto(out *MaintenanceModeOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type None ¶
type None struct{}
None is a simple struct to create a set to indicate the value of the map has no meaning.
func (*None) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new None.
func (*None) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodUpdateMode ¶
type PodUpdateMode string
PodUpdateMode defines the deletion mode for the cluster
const ( // PodUpdateModeAll deletes all process groups at once PodUpdateModeAll PodUpdateMode = "All" // PodUpdateModeZone deletes process groups in the same zone at the same time PodUpdateModeZone PodUpdateMode = "Zone" // PodUpdateModeProcessGroup deletes one process group at a time PodUpdateModeProcessGroup PodUpdateMode = "ProcessGroup" // PodUpdateModeNone defines that the operator is not allowed to update/delete any Pods. PodUpdateModeNone PodUpdateMode = "None" )
type PodUpdateStrategy ¶
type PodUpdateStrategy string
PodUpdateStrategy defines how Pod spec changes should be applied.
const ( // PodUpdateStrategyReplacement replace all Pods if there is a spec change. PodUpdateStrategyReplacement PodUpdateStrategy = "Replace" // PodUpdateStrategyTransactionReplacement replace all transaction system Pods if there is a spec change. PodUpdateStrategyTransactionReplacement PodUpdateStrategy = "ReplaceTransactionSystem" // PodUpdateStrategyDelete delete all Pods if there is a spec change. PodUpdateStrategyDelete PodUpdateStrategy = "Delete" )
type ProcessAddress ¶
type ProcessAddress struct { IPAddress net.IP `json:"address,omitempty"` StringAddress string `json:"stringAddress,omitempty"` Port int `json:"port,omitempty"` Flags map[string]bool `json:"flags,omitempty"` FromHostname bool `json:"fromHostname,omitempty"` }
ProcessAddress provides a structured address for a process.
func GetFullAddressList ¶
func GetFullAddressList(address string, primaryOnly bool, processNumber int, requireTLS bool, requireNonTLS bool) []ProcessAddress
GetFullAddressList gets the full list of public addresses we should use for a process.
This will include the IP address, the port, and any additional flags.
If a process needs multiple addresses, this will include all of them, separated by commas. If you pass false for primaryOnly, this will return only the primary address.
func NewProcessAddress ¶
func NewProcessAddress(address net.IP, stringAddress string, port int, flags map[string]bool) ProcessAddress
NewProcessAddress creates a new ProcessAddress if the provided string address is a valid IP address it will be set as IPAddress.
func ParseProcessAddress ¶
func ParseProcessAddress(address string) (ProcessAddress, error)
ParseProcessAddress parses a structured address from its string representation.
func ParseProcessAddressesFromCmdline ¶
func ParseProcessAddressesFromCmdline(cmdline string) ([]ProcessAddress, error)
ParseProcessAddressesFromCmdline returns the ProcessAddress slice parsed from the commandline of the process.
func (*ProcessAddress) DeepCopy ¶
func (in *ProcessAddress) DeepCopy() *ProcessAddress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessAddress.
func (*ProcessAddress) DeepCopyInto ¶
func (in *ProcessAddress) DeepCopyInto(out *ProcessAddress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ProcessAddress) Equal ¶
func (address ProcessAddress) Equal(addressB ProcessAddress) bool
Equal checks if two ProcessAddress are the same
func (ProcessAddress) IsEmpty ¶
func (address ProcessAddress) IsEmpty() bool
IsEmpty returns true if a ProcessAddress is not set
func (ProcessAddress) MachineAddress ¶
func (address ProcessAddress) MachineAddress() string
MachineAddress returns the machine address, this is the address without any ports.
func (ProcessAddress) MarshalJSON ¶
func (address ProcessAddress) MarshalJSON() ([]byte, error)
MarshalJSON defines the parsing method for the ProcessAddress field from struct to JSON
func (ProcessAddress) SortedFlags ¶
func (address ProcessAddress) SortedFlags() []string
SortedFlags returns a list of flags on an address, sorted lexographically.
func (ProcessAddress) String ¶
func (address ProcessAddress) String() string
String gets the string representation of an address.
func (ProcessAddress) StringWithoutFlags ¶
func (address ProcessAddress) StringWithoutFlags() string
StringWithoutFlags gets the string representation of an address without flags.
func (*ProcessAddress) UnmarshalJSON ¶
func (address *ProcessAddress) UnmarshalJSON(data []byte) error
UnmarshalJSON defines the parsing method for the ProcessAddress field from JSON to struct
type ProcessClass ¶
type ProcessClass string
ProcessClass models the class of a pod
const ( // ProcessClassStorage model for FDB class storage ProcessClassStorage ProcessClass = "storage" // ProcessClassLog model for FDB class log ProcessClassLog ProcessClass = "log" // ProcessClassTransaction model for FDB class transaction ProcessClassTransaction ProcessClass = "transaction" // ProcessClassStateless model for FDB stateless processes ProcessClassStateless ProcessClass = "stateless" // ProcessClassGeneral model for FDB general processes ProcessClassGeneral ProcessClass = "general" // ProcessClassClusterController model for FDB class cluster_controller ProcessClassClusterController ProcessClass = "cluster_controller" // ProcessClassTest model for FDB class test ProcessClassTest ProcessClass = "test" // ProcessClassCoordinator model for FDB class coordinator ProcessClassCoordinator ProcessClass = "coordinator" // ProcessClassProxy model for FDB proxy processes ProcessClassProxy ProcessClass = "proxy" // ProcessClassCommitProxy model for FDB commit_proxy processes ProcessClassCommitProxy ProcessClass = "commit_proxy" // ProcessClassGrvProxy model for FDB grv_proxy processes ProcessClassGrvProxy ProcessClass = "grv_proxy" )
func (ProcessClass) GetProcessClassForPodName ¶ added in v1.23.0
func (pClass ProcessClass) GetProcessClassForPodName() string
GetProcessClassForPodName will return the process class name where the underscore is replaced with a hyphen, as underscores are not allowed in Kubernetes resources names.
func (ProcessClass) GetServersPerPodEnvName ¶ added in v1.21.0
func (pClass ProcessClass) GetServersPerPodEnvName() string
GetServersPerPodEnvName returns the environment variable name for the servers per Pod. TODO (johscheuer): Revisit this decision: Shouldn't this be an annotation?
func (ProcessClass) IsLogProcess ¶ added in v1.28.0
func (pClass ProcessClass) IsLogProcess() bool
IsLogProcess returns true if the process class is either log or transaction.
func (ProcessClass) IsStateful ¶
func (pClass ProcessClass) IsStateful() bool
IsStateful determines whether a process class should store data.
func (ProcessClass) IsTransaction ¶
func (pClass ProcessClass) IsTransaction() bool
IsTransaction determines whether a process class could be part of the transaction system.
func (ProcessClass) SupportsMultipleLogServers ¶ added in v1.21.0
func (pClass ProcessClass) SupportsMultipleLogServers() bool
SupportsMultipleLogServers determines whether a process class supports multiple log servers. This includes the log class and the transaction class.
type ProcessCounts ¶
type ProcessCounts struct { Unset int `json:"unset,omitempty"` Storage int `json:"storage,omitempty"` Transaction int `json:"transaction,omitempty"` Resolution int `json:"resolution,omitempty"` // Deprecated: This setting will be removed in the next major release. // use Test Tester int `json:"tester,omitempty"` Test int `json:"test,omitempty"` Proxy int `json:"proxy,omitempty"` CommitProxy int `json:"commit_proxy,omitempty"` GrvProxy int `json:"grv_proxy,omitempty"` Master int `json:"master,omitempty"` Stateless int `json:"stateless,omitempty"` Log int `json:"log,omitempty"` ClusterController int `json:"cluster_controller,omitempty"` LogRouter int `json:"router,omitempty"` FastRestore int `json:"fast_restore,omitempty"` DataDistributor int `json:"data_distributor,omitempty"` Coordinator int `json:"coordinator,omitempty"` Ratekeeper int `json:"ratekeeper,omitempty"` StorageCache int `json:"storage_cache,omitempty"` BackupWorker int `json:"backup,omitempty"` }
ProcessCounts represents the number of processes we have for each valid process class.
If one of the counts in the spec is set to 0, we will infer the process count for that class from the role counts. If one of the counts in the spec is set to -1, we will not create any processes for that class. See GetProcessCountsWithDefaults for more information on the rules for inferring process counts.
func CreateProcessCountsFromProcessGroupStatus ¶
func CreateProcessCountsFromProcessGroupStatus(processGroupStatus []*ProcessGroupStatus, includeRemovals bool) ProcessCounts
CreateProcessCountsFromProcessGroupStatus creates a ProcessCounts struct from the current ProcessGroupStatus.
func (ProcessCounts) CountsAreSatisfied ¶
func (counts ProcessCounts) CountsAreSatisfied(currentCounts ProcessCounts) bool
CountsAreSatisfied checks whether the current counts of processes satisfy a desired set of counts.
func (*ProcessCounts) DecreaseCount ¶
func (counts *ProcessCounts) DecreaseCount(name ProcessClass, amount int)
DecreaseCount adds to one of the process counts based on the name.
func (*ProcessCounts) DeepCopy ¶
func (in *ProcessCounts) DeepCopy() *ProcessCounts
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessCounts.
func (*ProcessCounts) DeepCopyInto ¶
func (in *ProcessCounts) DeepCopyInto(out *ProcessCounts)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ProcessCounts) Diff ¶
func (counts ProcessCounts) Diff(currentCounts ProcessCounts) map[ProcessClass]int64
Diff gets the Diff between two sets of process counts.
func (*ProcessCounts) IncreaseCount ¶
func (counts *ProcessCounts) IncreaseCount(name ProcessClass, amount int)
IncreaseCount adds to one of the process counts based on the name.
func (ProcessCounts) Map ¶
func (counts ProcessCounts) Map() map[ProcessClass]int
Map returns a map from process classes to the number of processes with that class.
func (ProcessCounts) Total ¶ added in v1.10.0
func (counts ProcessCounts) Total() int
Total gets the total number of processes for the cluster configuration.
type ProcessGroupCondition ¶
type ProcessGroupCondition struct { // Name of the condition ProcessGroupConditionType ProcessGroupConditionType `json:"type,omitempty"` // Timestamp when the Condition was observed Timestamp int64 `json:"timestamp,omitempty"` }
ProcessGroupCondition represents a degraded condition that a process group is in.
func NewProcessGroupCondition ¶
func NewProcessGroupCondition(conditionType ProcessGroupConditionType) *ProcessGroupCondition
NewProcessGroupCondition creates a new ProcessGroupCondition of the given time with the current timestamp.
func (*ProcessGroupCondition) DeepCopy ¶
func (in *ProcessGroupCondition) DeepCopy() *ProcessGroupCondition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessGroupCondition.
func (*ProcessGroupCondition) DeepCopyInto ¶
func (in *ProcessGroupCondition) DeepCopyInto(out *ProcessGroupCondition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ProcessGroupCondition) String ¶ added in v1.26.0
func (condition *ProcessGroupCondition) String() string
String returns the string representation for the condition.
type ProcessGroupConditionType ¶
type ProcessGroupConditionType string
ProcessGroupConditionType represents a concrete ProcessGroupCondition.
const ( // IncorrectPodSpec represents a process group that has an incorrect Pod spec. IncorrectPodSpec ProcessGroupConditionType = "IncorrectPodSpec" // IncorrectConfigMap represents a process group that has an incorrect ConfigMap. IncorrectConfigMap ProcessGroupConditionType = "IncorrectConfigMap" // IncorrectCommandLine represents a process group that has an incorrect commandline configuration. IncorrectCommandLine ProcessGroupConditionType = "IncorrectCommandLine" // PodFailing represents a process group which Pod keeps failing. PodFailing ProcessGroupConditionType = "PodFailing" // MissingPod represents a process group that doesn't have a Pod assigned. MissingPod ProcessGroupConditionType = "MissingPod" // MissingPVC represents a process group that doesn't have a PVC assigned. MissingPVC ProcessGroupConditionType = "MissingPVC" // MissingService represents a process group that doesn't have a Service assigned. MissingService ProcessGroupConditionType = "MissingService" // MissingProcesses represents a process group that misses a process. MissingProcesses ProcessGroupConditionType = "MissingProcesses" // ResourcesTerminating represents a process group whose resources are being // terminated. ResourcesTerminating ProcessGroupConditionType = "ResourcesTerminating" // SidecarUnreachable represents a process group where the sidecar is not reachable // because of networking or TLS issues. SidecarUnreachable ProcessGroupConditionType = "SidecarUnreachable" // PodPending represents a process group where the pod is in a pending state. PodPending ProcessGroupConditionType = "PodPending" // ReadyCondition is currently only used in the metrics. ReadyCondition ProcessGroupConditionType = "Ready" // NodeTaintDetected represents a Pod's node is tainted but not long enough for operator to replace it. // If a node is tainted with a taint that shouldn't trigger replacements, NodeTaintDetected won't be added to the pod NodeTaintDetected ProcessGroupConditionType = "NodeTaintDetected" // NodeTaintReplacing represents a Pod whose node has been tainted and the operator should replace the Pod NodeTaintReplacing ProcessGroupConditionType = "NodeTaintReplacing" // ProcessIsMarkedAsExcluded represents a process group where at least one process is excluded. ProcessIsMarkedAsExcluded ProcessGroupConditionType = "ProcessIsMarkedAsExcluded" // ProcessHasIOError represents a process group that has an I/O error. ProcessHasIOError ProcessGroupConditionType = "ProcessHasIOError" )
func AllProcessGroupConditionTypes ¶
func AllProcessGroupConditionTypes() []ProcessGroupConditionType
AllProcessGroupConditionTypes returns all ProcessGroupConditionType
func GetProcessGroupConditionType ¶
func GetProcessGroupConditionType(processGroupConditionType string) (ProcessGroupConditionType, error)
GetProcessGroupConditionType returns the ProcessGroupConditionType for the matching string or an error
type ProcessGroupID ¶ added in v1.15.0
type ProcessGroupID string
ProcessGroupID represents the ID of the process group +kubebuilder:validation:MaxLength=63 +kubebuilder:validation:Pattern:=^(([\w-]+)-(\d+)|\*)$
func FilterByCondition ¶
func FilterByCondition(processGroupStatus []*ProcessGroupStatus, conditionType ProcessGroupConditionType, ignoreRemoved bool) []ProcessGroupID
FilterByCondition returns a string slice of all ProcessGroupIDs that contains a condition with the given type.
func FilterByConditions ¶
func FilterByConditions(processGroupStatus []*ProcessGroupStatus, conditionRules map[ProcessGroupConditionType]bool, ignoreRemoved bool) []ProcessGroupID
FilterByConditions returns a string slice of all ProcessGroupIDs whose conditions match a set of rules.
If a condition is mapped to true in the conditionRules map, only process groups with that condition will be returned. If a condition is mapped to false in the conditionRules map, only process groups without that condition will be returned.
func (ProcessGroupID) GetIDNumber ¶ added in v1.19.0
func (processGroupID ProcessGroupID) GetIDNumber() (int, error)
GetIDNumber returns the ID number of the provided process group ID. This will be the suffix number, e.g. for the process group ID "testing-storage-12" this will return 12.
type ProcessGroupStatus ¶
type ProcessGroupStatus struct { // ProcessGroupID represents the ID of the process group ProcessGroupID ProcessGroupID `json:"processGroupID,omitempty"` // ProcessClass represents the class the process group has. ProcessClass ProcessClass `json:"processClass,omitempty"` // Addresses represents the list of addresses the process group has been known to have. Addresses []string `json:"addresses,omitempty"` // RemoveTimestamp if not empty defines when the process group was marked for removal. RemovalTimestamp *metav1.Time `json:"removalTimestamp,omitempty"` // ExclusionTimestamp defines when the process group has been fully excluded. // This is only used within the reconciliation process, and should not be considered authoritative. ExclusionTimestamp *metav1.Time `json:"exclusionTimestamp,omitempty"` // ExclusionSkipped determines if exclusion has been skipped for a process, which will allow the process group to be removed without exclusion. ExclusionSkipped bool `json:"exclusionSkipped,omitempty"` // ProcessGroupConditions represents a list of degraded conditions that the process group is in. ProcessGroupConditions []*ProcessGroupCondition `json:"processGroupConditions,omitempty"` // FaultDomain represents the last seen fault domain from the cluster status. This can be used if a Pod or process // is not running and would be missing in the cluster status. FaultDomain FaultDomain `json:"faultDomain,omitempty"` }
ProcessGroupStatus represents the status of a ProcessGroup.
func FindProcessGroupByID ¶
func FindProcessGroupByID(processGroups []*ProcessGroupStatus, processGroupID ProcessGroupID) *ProcessGroupStatus
FindProcessGroupByID finds a process group status for a given processGroupID.
func MarkProcessGroupForRemoval ¶
func MarkProcessGroupForRemoval(processGroups []*ProcessGroupStatus, processGroupID ProcessGroupID, processClass ProcessClass, address string) (bool, *ProcessGroupStatus)
MarkProcessGroupForRemoval sets the remove flag for the given process and ensures that the address is added.
func NewProcessGroupStatus ¶
func NewProcessGroupStatus(processGroupID ProcessGroupID, processClass ProcessClass, addresses []string) *ProcessGroupStatus
NewProcessGroupStatus returns a new GroupStatus for the given processGroupID and processClass.
func (*ProcessGroupStatus) AddAddresses ¶
func (processGroupStatus *ProcessGroupStatus) AddAddresses(addresses []string, includeOldAddresses bool)
AddAddresses adds the new address to the ProcessGroupStatus and removes duplicates and old addresses if the process group is not marked as removal.
func (*ProcessGroupStatus) AllAddressesExcluded ¶
func (processGroupStatus *ProcessGroupStatus) AllAddressesExcluded(logger logr.Logger, remainingMap map[string]bool) (bool, error)
AllAddressesExcluded checks if the process group is excluded or if there are still addresses included in the remainingMap. This will return true if the process group skips exclusion or has no remaining addresses.
func (*ProcessGroupStatus) DeepCopy ¶
func (in *ProcessGroupStatus) DeepCopy() *ProcessGroupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessGroupStatus.
func (*ProcessGroupStatus) DeepCopyInto ¶
func (in *ProcessGroupStatus) DeepCopyInto(out *ProcessGroupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ProcessGroupStatus) GetCondition ¶ added in v1.18.0
func (processGroupStatus *ProcessGroupStatus) GetCondition(conditionType ProcessGroupConditionType) *ProcessGroupCondition
GetCondition returns the ProcessGroupStatus's ProcessGroupCondition that matches the conditionType; It returns nil if the ProcessGroupStatus doesn't have a matching condition
func (*ProcessGroupStatus) GetConditionTime ¶
func (processGroupStatus *ProcessGroupStatus) GetConditionTime(conditionType ProcessGroupConditionType) *int64
GetConditionTime returns the timestamp when we detected a condition on a process group. If there is no matching condition this will return nil.
func (*ProcessGroupStatus) GetExclusionString ¶ added in v1.4.1
func (processGroupStatus *ProcessGroupStatus) GetExclusionString() string
GetExclusionString returns the exclusion string
func (*ProcessGroupStatus) GetPodName ¶ added in v1.18.0
func (processGroupStatus *ProcessGroupStatus) GetPodName(cluster *FoundationDBCluster) string
GetPodName returns the Pod name for the associated Process Group.
func (*ProcessGroupStatus) IsExcluded ¶
func (processGroupStatus *ProcessGroupStatus) IsExcluded() bool
IsExcluded returns if a process group is excluded
func (*ProcessGroupStatus) IsMarkedForRemoval ¶
func (processGroupStatus *ProcessGroupStatus) IsMarkedForRemoval() bool
IsMarkedForRemoval returns if a process group is marked for removal
func (*ProcessGroupStatus) IsUnderMaintenance ¶ added in v1.21.0
func (processGroupStatus *ProcessGroupStatus) IsUnderMaintenance(maintenanceZone FaultDomain) bool
IsUnderMaintenance checks if the process is in maintenance zone.
func (*ProcessGroupStatus) MarkForRemoval ¶
func (processGroupStatus *ProcessGroupStatus) MarkForRemoval()
MarkForRemoval marks a process group for removal. If the RemovalTimestamp is already set it won't be changed.
func (*ProcessGroupStatus) MatchesConditions ¶ added in v1.13.0
func (processGroupStatus *ProcessGroupStatus) MatchesConditions(conditionRules map[ProcessGroupConditionType]bool) bool
MatchesConditions checks if the provided conditionRules matches in the process group's conditions
If a condition is mapped to true in the conditionRules map, this condition must be present in the process group. If a condition is mapped to false in the conditionRules map, the condition must be absent in the process group.
func (*ProcessGroupStatus) NeedsReplacement ¶
func (processGroupStatus *ProcessGroupStatus) NeedsReplacement(failureTime int, taintReplacementTime int) (ProcessGroupConditionType, int64)
NeedsReplacement checks if the ProcessGroupStatus has conditions that require a replacement of the failed Process Group. The method will return the failure condition and the timestamp. If no failure is detected an empty condition and a 0 will be returned.
func (*ProcessGroupStatus) SetExclude ¶
func (processGroupStatus *ProcessGroupStatus) SetExclude()
SetExclude marks a process group as excluded and will reset the process group conditions to only include the ResourcesTerminating if already set, otherwise the conditions will be an empty slice. This reflects the operator behaviour that process groups that are marked for removal and are fully excluded will only have the ResourcesTerminating condition.
func (*ProcessGroupStatus) String ¶ added in v1.26.0
func (processGroupStatus *ProcessGroupStatus) String() string
String returns string representation.
func (*ProcessGroupStatus) UpdateCondition ¶
func (processGroupStatus *ProcessGroupStatus) UpdateCondition(conditionType ProcessGroupConditionType, set bool)
UpdateCondition will add or remove a condition in the ProcessGroupStatus.
func (*ProcessGroupStatus) UpdateConditionTime ¶ added in v1.18.0
func (processGroupStatus *ProcessGroupStatus) UpdateConditionTime(conditionType ProcessGroupConditionType, newTime int64)
UpdateConditionTime will update the conditionType's condition time to newTime If the conditionType does not exist, the function is no-op
type ProcessRole ¶
type ProcessRole string
ProcessRole models the role of a pod.
const ( // ProcessRoleCoordinator model for FDB coordinator role. ProcessRoleCoordinator ProcessRole = "coordinator" // ProcessRoleClusterController model for FDB cluster_controller role ProcessRoleClusterController ProcessRole = "cluster_controller" // ProcessRoleStorage model for FDB storage role ProcessRoleStorage ProcessRole = "storage" // ProcessRoleLog model for FDB log role ProcessRoleLog ProcessRole = "log" // ProcessRoleSequencer model for FDB sequencer role ProcessRoleSequencer ProcessRole = "sequencer" // ProcessRoleMaster model for FDB master role ProcessRoleMaster ProcessRole = "master" // ProcessRoleProxy model for FDB proxy role ProcessRoleProxy ProcessRole = "proxy" // ProcessRoleGrvProxy model for FDB grv_proxy role ProcessRoleGrvProxy ProcessRole = "grv_proxy" // ProcessRoleCommitProxy model for FDB commit_proxy role ProcessRoleCommitProxy ProcessRole = "commit_proxy" // ProcessRoleResolver model for FDB resolver role ProcessRoleResolver ProcessRole = "resolver" // ProcessRoleDataDistributor model for FDB data_distributor role ProcessRoleDataDistributor ProcessRole = "data_distributor" // ProcessRoleRatekeeper model for FDB ratekeeper role ProcessRoleRatekeeper ProcessRole = "ratekeeper" )
type ProcessSettings ¶
type ProcessSettings struct { // PodTemplate allows customizing the pod. If a container image with a tag is specified the operator // will throw an error and stop processing the cluster. PodTemplate *corev1.PodTemplateSpec `json:"podTemplate,omitempty"` // VolumeClaimTemplate allows customizing the persistent volume claim for the // pod. This will be ignored by the operator for stateless processes. VolumeClaimTemplate *corev1.PersistentVolumeClaim `json:"volumeClaimTemplate,omitempty"` // CustomParameters defines additional parameters to pass to the fdbserver // process. Only parameters for the [fdbserver] section are supported. Parameters // from the [general] and [fdbmonitor] section are not supported. For more Information // see: https://apple.github.io/foundationdb/configuration.html#general-section CustomParameters FoundationDBCustomParameters `json:"customParameters,omitempty"` }
ProcessSettings defines process-level settings.
func (*ProcessSettings) DeepCopy ¶
func (in *ProcessSettings) DeepCopy() *ProcessSettings
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessSettings.
func (*ProcessSettings) DeepCopyInto ¶
func (in *ProcessSettings) DeepCopyInto(out *ProcessSettings)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PublicIPSource ¶
type PublicIPSource string
PublicIPSource models options for how a pod gets its public IP.
const ( // PublicIPSourcePod specifies that a pod gets its IP from the pod IP. PublicIPSourcePod PublicIPSource = "pod" // PublicIPSourceService specifies that a pod gets its IP from a service. PublicIPSourceService PublicIPSource = "service" )
type RecoveryState ¶ added in v1.9.0
type RecoveryState struct { // ActiveGenerations represent the current active generations. ActiveGenerations int `json:"active_generations,omitempty"` // Name represent the name of the current recovery state. Name string `json:"name,omitempty"` // SecondsSinceLastRecovered represents the seconds since the last recovery. SecondsSinceLastRecovered float64 `json:"seconds_since_last_recovered,omitempty"` }
RecoveryState represents the recovery state from the FDB cluster json.
func (*RecoveryState) DeepCopy ¶ added in v1.9.0
func (in *RecoveryState) DeepCopy() *RecoveryState
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecoveryState.
func (*RecoveryState) DeepCopyInto ¶ added in v1.9.0
func (in *RecoveryState) DeepCopyInto(out *RecoveryState)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RedundancyMode ¶
type RedundancyMode string
RedundancyMode defines the core replication factor for the database +kubebuilder:validation:MaxLength=100
const ( // RedundancyModeSingle defines the replication factor 1. RedundancyModeSingle RedundancyMode = "single" // RedundancyModeDouble defines the replication factor 2. RedundancyModeDouble RedundancyMode = "double" // RedundancyModeTriple defines the replication factor 3. RedundancyModeTriple RedundancyMode = "triple" // RedundancyModeThreeDataHall defines the replication factor three_data_hall. RedundancyModeThreeDataHall RedundancyMode = "three_data_hall" // RedundancyModeOneSatelliteSingle defines the replication factor one_satellite_single. RedundancyModeOneSatelliteSingle RedundancyMode = "one_satellite_single" // RedundancyModeOneSatelliteDouble defines the replication factor one_satellite_double. RedundancyModeOneSatelliteDouble RedundancyMode = "one_satellite_double" // RedundancyModeUnset defines the replication factor unset. RedundancyModeUnset RedundancyMode = "" )
type Region ¶
type Region struct { // The data centers in this region. DataCenters []DataCenter `json:"datacenters,omitempty"` // The number of satellite logs that we should recruit. SatelliteLogs int `json:"satellite_logs,omitempty"` // The replication strategy for satellite logs. SatelliteRedundancyMode RedundancyMode `json:"satellite_redundancy_mode,omitempty"` }
Region represents a region in the database configuration
func (*Region) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Region.
func (*Region) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RequiredAddressSet ¶
type RequiredAddressSet struct { // TLS defines whether we need to listen on a TLS address. TLS bool `json:"tls,omitempty"` // NonTLS defines whether we need to listen on a non-TLS address. NonTLS bool `json:"nonTLS,omitempty"` }
RequiredAddressSet provides settings for which addresses we need to listen on.
func (*RequiredAddressSet) DeepCopy ¶
func (in *RequiredAddressSet) DeepCopy() *RequiredAddressSet
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequiredAddressSet.
func (*RequiredAddressSet) DeepCopyInto ¶
func (in *RequiredAddressSet) DeepCopyInto(out *RequiredAddressSet)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RoleCounts ¶
type RoleCounts struct { Storage int `json:"storage,omitempty"` Logs int `json:"logs,omitempty"` Proxies int `json:"proxies,omitempty"` CommitProxies int `json:"commit_proxies,omitempty"` GrvProxies int `json:"grv_proxies,omitempty"` Resolvers int `json:"resolvers,omitempty"` LogRouters int `json:"log_routers,omitempty"` RemoteLogs int `json:"remote_logs,omitempty"` }
RoleCounts represents the roles whose counts can be customized.
func (*RoleCounts) DeepCopy ¶
func (in *RoleCounts) DeepCopy() *RoleCounts
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleCounts.
func (*RoleCounts) DeepCopyInto ¶
func (in *RoleCounts) DeepCopyInto(out *RoleCounts)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (RoleCounts) Map ¶
func (counts RoleCounts) Map() map[ProcessClass]int
Map returns a map from process classes to the desired count for that role
type RoutingConfig ¶
type RoutingConfig struct { // Headless determines whether we want to run a headless service for the // cluster. HeadlessService *bool `json:"headlessService,omitempty"` // PublicIPSource specifies what source a process should use to get its // public IPs. // // This supports the values `pod` and `service`. PublicIPSource *PublicIPSource `json:"publicIPSource,omitempty"` // PodIPFamily tells the pod which family of IP addresses to use. // You can use 4 to represent IPv4, and 6 to represent IPv6. // This feature is only supported in FDB 7.0 or later, and requires // dual-stack support in your Kubernetes environment. PodIPFamily *int `json:"podIPFamily,omitempty"` // UseDNSInClusterFile determines whether to use DNS names rather than IP // addresses to identify coordinators in the cluster file. This requires // FoundationDB 7.0+. UseDNSInClusterFile *bool `json:"useDNSInClusterFile,omitempty"` // DefineDNSLocalityFields determines whether to define pod DNS names on pod // specs and provide them in the locality arguments to fdbserver. // // This is ignored if UseDNSInCluster is true. DefineDNSLocalityFields *bool `json:"defineDNSLocalityFields,omitempty"` // DNSDomain defines the cluster domain used in a DNS name generated for a // service. // The default is `cluster.local`. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=253 DNSDomain *string `json:"dnsDomain,omitempty"` }
RoutingConfig allows configuring routing to our pods, and services that sit in front of them.
func (*RoutingConfig) DeepCopy ¶
func (in *RoutingConfig) DeepCopy() *RoutingConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingConfig.
func (*RoutingConfig) DeepCopyInto ¶
func (in *RoutingConfig) DeepCopyInto(out *RoutingConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type StorageEngine ¶
type StorageEngine string
StorageEngine defines the storage engine for the database +kubebuilder:validation:MaxLength=100
const ( // StorageEngineSSD defines the storage engine ssd. StorageEngineSSD StorageEngine = "ssd" // StorageEngineSSD2 defines the storage engine ssd-2. StorageEngineSSD2 StorageEngine = "ssd-2" // StorageEngineMemory defines the storage engine memory. StorageEngineMemory StorageEngine = "memory" // StorageEngineMemory2 defines the storage engine memory-2. StorageEngineMemory2 StorageEngine = "memory-2" // StorageEngineRocksDbExperimental defines the storage engine ssd-rocksdb-experimental. StorageEngineRocksDbExperimental StorageEngine = "ssd-rocksdb-experimental" // StorageEngineRocksDbV1 defines the storage engine ssd-rocksdb-v1. StorageEngineRocksDbV1 StorageEngine = "ssd-rocksdb-v1" // StorageEngineShardedRocksDB defines the storage engine ssd-sharded-rocksdb. StorageEngineShardedRocksDB StorageEngine = "ssd-sharded-rocksdb" // StorageEngineRedwood1Experimental defines the storage engine ssd-redwood-1-experimental. StorageEngineRedwood1Experimental StorageEngine = "ssd-redwood-1-experimental" // StorageEngineRedwood1 defines the storage engine ssd-redwood-1. StorageEngineRedwood1 StorageEngine = "ssd-redwood-1" )
type TaintReplacementOption ¶ added in v1.18.0
type TaintReplacementOption struct { // Tainted key // +kubebuilder:validation:MaxLength=256 // +kubebuilder:validation:Pattern:=^([\-._\/a-z0-9A-Z\*])*$ // +kubebuilder:validation:Required Key *string `json:"key,omitempty"` // The tainted key must be present for DurationInSeconds before operator replaces pods on the node with this taint; // DurationInSeconds cannot be a negative number. // +kubebuilder:validation:Required // +kubebuilder:validation:Minimum=0 DurationInSeconds *int64 `json:"durationInSeconds,omitempty"` }
TaintReplacementOption defines the taint key and taint duration the operator will react to a tainted node Example of TaintReplacementOption
- key: "example.org/maintenance" durationInSeconds: 7200 # Ensure the taint is present for at least 2 hours before replacing Pods on a node with this taint.
- key: "*" # The wildcard would allow to define a catch all configuration durationInSeconds: 3600 # Ensure the taint is present for at least 1 hour before replacing Pods on a node with this taint
Setting durationInSeconds to the maximum of int64 will practically disable the taint key. When a Node taint key matches both an exact TaintReplacementOption key and a wildcard key, the exact matched key will be used.
func (*TaintReplacementOption) DeepCopy ¶ added in v1.18.0
func (in *TaintReplacementOption) DeepCopy() *TaintReplacementOption
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaintReplacementOption.
func (*TaintReplacementOption) DeepCopyInto ¶ added in v1.18.0
func (in *TaintReplacementOption) DeepCopyInto(out *TaintReplacementOption)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TimeoutError ¶ added in v1.8.1
type TimeoutError struct {
Err error
}
TimeoutError represents a timeout for either the fdb client library or fdbcli +k8s:deepcopy-gen=false
func (TimeoutError) Error ¶ added in v1.8.1
func (timeoutErr TimeoutError) Error() string
Error returns the error message of the internal timeout error.
type URLParameter ¶
type URLParameter string
URLParameter defines a single URL parameter to pass to the blobstore. +kubebuilder:validation:MaxLength=1024
type Version ¶
Version represents a version of FoundationDB.
This provides convenience methods for checking features available in different versions.
func ParseFdbVersion ¶
ParseFdbVersion parses a version from its string representation.
func (Version) AutomaticallyRemovesDeadTesterProcesses ¶ added in v1.34.0
AutomaticallyRemovesDeadTesterProcesses returns true if the FDB version automatically removes old tester processes from the list of processes.
func (*Version) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Version.
func (*Version) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (Version) HasNonBlockingExcludes ¶
HasNonBlockingExcludes determines if a version has support for non-blocking exclude commands.
func (Version) HasSeparatedProxies ¶ added in v1.1.0
HasSeparatedProxies determines if a version has support for separate grv/commit proxies
func (Version) IsAtLeast ¶
IsAtLeast determines if a version is greater than or equal to another version.
func (Version) IsProtocolCompatible ¶
IsProtocolCompatible determines whether two versions of FDB are protocol compatible.
func (Version) IsReleaseCandidate ¶
IsReleaseCandidate returns true if the version is a release candidate or not
func (Version) IsStorageEngineSupported ¶ added in v1.2.0
func (version Version) IsStorageEngineSupported(storageEngine StorageEngine) bool
IsStorageEngineSupported return true if storage engine is supported by FDB version.
func (Version) IsSupported ¶
IsSupported defines the minimum supported FDB version.
func (Version) NextMajorVersion ¶
NextMajorVersion returns the next major version of FoundationDB.
func (Version) NextMinorVersion ¶
NextMinorVersion returns the next minor version of FoundationDB.
func (Version) NextPatchVersion ¶
NextPatchVersion returns the next patch version of FoundationDB.
func (Version) SupportsDNSInClusterFile ¶ added in v1.26.0
SupportsDNSInClusterFile returns true if the version of FDB supports the usage of DNS names in the cluster file.
func (Version) SupportsIsPresent ¶ added in v1.4.0
SupportsIsPresent returns true if the sidecar of this version supports the is_present endpoint
func (Version) SupportsLocalityBasedExclusions ¶ added in v1.28.0
SupportsLocalityBasedExclusions returns true if the current version supports locality based exclusions.
func (Version) SupportsRecoveryState ¶ added in v1.9.0
SupportsRecoveryState returns true if the version of FDB supports the recovered since field.
func (Version) SupportsVersionChange ¶ added in v1.27.0
SupportsVersionChange returns true if the current version can be downgraded or upgraded to provided other version.
type VersionFlags ¶
type VersionFlags struct { LogSpill int `json:"log_spill,omitempty"` LogVersion int `json:"log_version,omitempty"` }
VersionFlags defines internal flags for new features in the database.
func (*VersionFlags) DeepCopy ¶
func (in *VersionFlags) DeepCopy() *VersionFlags
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VersionFlags.
func (*VersionFlags) DeepCopyInto ¶
func (in *VersionFlags) DeepCopyInto(out *VersionFlags)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (VersionFlags) Map ¶
func (flags VersionFlags) Map() map[string]int
Map returns a map from process classes to the desired count for that role
Source Files ¶
- foundationdb_constants.go
- foundationdb_custom_parameter.go
- foundationdb_database_configuration.go
- foundationdb_env_variables.go
- foundationdb_errors.go
- foundationdb_labels.go
- foundationdb_process_address.go
- foundationdb_process_class.go
- foundationdb_status.go
- foundationdb_version.go
- foundationdbbackup_types.go
- foundationdbcluster_types.go
- foundationdbrestore_types.go
- groupversion_info.go
- image_config.go
- none.go
- zz_generated.deepcopy.go