v1beta2

package
v1.7.0 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2022 License: Apache-2.0 Imports: 20 Imported by: 2

Documentation

Overview

Package v1beta2 contains API Schema definitions for the apps v1beta2 API group +kubebuilder:object:generate=true +groupName=apps.foundationdb.org

Index

Constants

View Source
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"

	// OutdatedConfigMapKey provides the annotation name we use to store the
	// timestamp when we saw an outdated config map.
	OutdatedConfigMapKey = "foundationdb.org/outdated-config-map-seen"

	// BackupDeploymentLabel provides the label we use to connect backup
	// deployments to a cluster.
	BackupDeploymentLabel = "foundationdb.org/backup-for"

	// 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"

	// 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"

	// 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"
)

Variables

View Source
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
)
View Source
var ProcessClasses = fieldNames(ProcessCounts{})

ProcessClasses provides a consistent ordered list of the supported process classes.

View Source
var VersionRegex = regexp.MustCompile(`(\d+)\.(\d+)\.(\d+)(-rc(\d+))?`)

VersionRegex describes the format of a FoundationDB version.

View Source
var Versions = struct {
	NextMajorVersion,
	NextPatchVersion,
	MinimumVersion,
	SupportsRocksDBV1,
	SupportsIsPresent,
	Default Version
}{
	Default:           Version{Major: 6, Minor: 2, Patch: 20},
	NextPatchVersion:  Version{Major: 6, Minor: 2, Patch: 21},
	NextMajorVersion:  Version{Major: 7, Minor: 0, Patch: 0},
	MinimumVersion:    Version{Major: 6, Minor: 2, Patch: 20},
	SupportsRocksDBV1: Version{Major: 7, Minor: 1, Patch: 0, ReleaseCandidate: 4},
	SupportsIsPresent: Version{Major: 7, Minor: 1, Patch: 4},
}

Versions provides a shorthand for known versions. This is only to be used in testing.

Functions

func ContainsProcessGroupID

func ContainsProcessGroupID(processGroups []*ProcessGroupStatus, processGroupID string) 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 FilterByCondition

func FilterByCondition(processGroupStatus []*ProcessGroupStatus, conditionType ProcessGroupConditionType, ignoreRemoved bool) []string

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) []string

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 GetProcessPort

func GetProcessPort(processNumber int, tls bool) int

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"`

	// FailureDetectionTimeSeconds controls how long a process must be
	// failed or missing before it is automatically replaced.
	// The default is 1800 seconds, or 30 minutes.
	FailureDetectionTimeSeconds *int `json:"failureDetectionTimeSeconds,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"`
}

AutomaticReplacementOptions controls options for automatically replacing failed processes.

func (*AutomaticReplacementOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutomaticReplacementOptions.

func (*AutomaticReplacementOptions) DeepCopyInto

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

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.
	// +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.
	// +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

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 []string `json:"noSchedule,omitempty"`

	// CrashLoops defines a list of process group IDs that should be put into a
	// crash looping state.
	CrashLoop []string `json:"crashLoop,omitempty"`

	// EmptyMonitorConf instructs the operator to update all of the fdbmonitor.conf
	// files to have zero fdbserver processes configured.
	EmptyMonitorConf bool `json:"emptyMonitorConf,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"`

	// DatabaseUnavailable provides the last generation that could not
	// 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

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoordinatorSelectionSetting.

func (*CoordinatorSelectionSetting) DeepCopyInto

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
	// +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-rocksdb-experimental;ssd-rocksdb-v1;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) DeepCopy

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) 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) 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 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.

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

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"`
}

FoundationDBBackupSpec describes the desired state of the backup for a cluster.

func (*FoundationDBBackupSpec) DeepCopy

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

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBBackupStatusBackupDetails.

func (*FoundationDBBackupStatusBackupDetails) DeepCopyInto

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) AddProcessGroupsToRemovalList added in v1.1.0

func (cluster *FoundationDBCluster) AddProcessGroupsToRemovalList(processGroupIDs []string)

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.

func (*FoundationDBCluster) AddProcessGroupsToRemovalWithoutExclusionList added in v1.1.0

func (cluster *FoundationDBCluster) AddProcessGroupsToRemovalWithoutExclusionList(processGroupIDs []string)

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.

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) 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) 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

func (*FoundationDBCluster) GetCrashLoopProcessGroups added in v1.5.0

func (cluster *FoundationDBCluster) GetCrashLoopProcessGroups() (map[string]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) GetDNSDomain

func (cluster *FoundationDBCluster) GetDNSDomain() string

GetDNSDomain gets the domain used when forming DNS names generated for a service.

func (*FoundationDBCluster) GetEnableAutomaticReplacements

func (cluster *FoundationDBCluster) GetEnableAutomaticReplacements() bool

GetEnableAutomaticReplacements returns cluster.Spec.AutomationOptions.Replacements.Enabled or if unset the default true

func (*FoundationDBCluster) GetFailureDetectionTimeSeconds

func (cluster *FoundationDBCluster) GetFailureDetectionTimeSeconds() int

GetFailureDetectionTimeSeconds returns cluster.Spec.AutomationOptions.Replacements.FailureDetectionTimeSeconds or if unset the default 1800

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) 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.

func (*FoundationDBCluster) GetLockPrefix

func (cluster *FoundationDBCluster) GetLockPrefix() string

GetLockPrefix gets the prefix for the keys where we store locking information.

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) GetMinimumUptimeSecondsForBounce

func (cluster *FoundationDBCluster) GetMinimumUptimeSecondsForBounce() int

GetMinimumUptimeSecondsForBounce returns the MinimumUptimeSecondsForBounce if set otherwise 600

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.

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) 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.

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) 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) GetUseUnifiedImage

func (cluster *FoundationDBCluster) GetUseUnifiedImage() bool

GetUseUnifiedImage returns cluster.Spec.UseUnifiedImage or if unset the default false

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) 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) 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 string) bool

ProcessGroupIsBeingRemoved determines if an instance is pending removal.

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 skip 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) 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.

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"`

	// 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.
	// 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"`

	// 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"`
}

FoundationDBClusterAutomationOptions provides flags for enabling or disabling operations that can be performed on a cluster.

func (*FoundationDBClusterAutomationOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBClusterAutomationOptions.

func (*FoundationDBClusterAutomationOptions) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBClusterFaultDomain.

func (*FoundationDBClusterFaultDomain) DeepCopyInto

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

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 []string `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 []string `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
	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"`

	// 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"`

	// UseUnifiedImage determines if we should use the unified image rather than
	// separate images for the main container and the sidecar container.
	UseUnifiedImage *bool `json:"useUnifiedImage,omitempty"`
}

FoundationDBClusterSpec defines the desired state of a cluster.

func (*FoundationDBClusterSpec) DeepCopy

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.
	StorageServersPerDisk []int `json:"storageServersPerDisk,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"`
}

FoundationDBClusterStatus defines the observed state of FoundationDBCluster

func (*FoundationDBClusterStatus) AddStorageServerPerDisk

func (clusterStatus *FoundationDBClusterStatus) AddStorageServerPerDisk(serversPerDisk int)

AddStorageServerPerDisk adds serverPerDisk to the status field to keep track which ConfigMaps should be kept

func (*FoundationDBClusterStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBClusterStatus.

func (*FoundationDBClusterStatus) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBCustomParameters.

func (FoundationDBCustomParameters) DeepCopyInto

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

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBLiveBackupStatus.

func (*FoundationDBLiveBackupStatus) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBLiveBackupStatusState.

func (*FoundationDBLiveBackupStatusState) DeepCopyInto

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

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

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBRestoreStatus.

func (*FoundationDBRestoreStatus) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusBackupInfo.

func (*FoundationDBStatusBackupInfo) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusBackupTag.

func (*FoundationDBStatusBackupTag) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusClientDBStatus.

func (*FoundationDBStatusClientDBStatus) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusClusterClientInfo.

func (*FoundationDBStatusClusterClientInfo) DeepCopyInto

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[string]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"`

	// 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"`

	// FaultTolerance provides information about the fault tolerance status
	// of the cluster.
	FaultTolerance FaultTolerance `json:"fault_tolerance,omitempty"`
}

FoundationDBStatusClusterInfo describes the "cluster" portion of the cluster status

func (*FoundationDBStatusClusterInfo) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusClusterInfo.

func (*FoundationDBStatusClusterInfo) DeepCopyInto

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 string `json:"log_group,omitempty"`
}

FoundationDBStatusConnectedClient provides information about a client that is connected to the database.

func (*FoundationDBStatusConnectedClient) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusConnectedClient.

func (*FoundationDBStatusConnectedClient) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusCoordinator.

func (*FoundationDBStatusCoordinator) DeepCopyInto

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"`
}

FoundationDBStatusCoordinatorInfo contains information about the client's connection to the coordinators.

func (*FoundationDBStatusCoordinatorInfo) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusCoordinatorInfo.

func (*FoundationDBStatusCoordinatorInfo) DeepCopyInto

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"`
}

FoundationDBStatusDataState provides information about the state of data distribution.

func (*FoundationDBStatusDataState) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusDataState.

func (*FoundationDBStatusDataState) DeepCopyInto

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"`
}

FoundationDBStatusDataStatistics provides information about the data in the database

func (*FoundationDBStatusDataStatistics) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusDataStatistics.

func (*FoundationDBStatusDataStatistics) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusLayerInfo.

func (*FoundationDBStatusLayerInfo) DeepCopyInto

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"`
}

FoundationDBStatusLocalClientInfo contains information about the client connection from the process getting the status.

func (*FoundationDBStatusLocalClientInfo) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusLocalClientInfo.

func (*FoundationDBStatusLocalClientInfo) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusMovingData.

func (*FoundationDBStatusMovingData) DeepCopyInto

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"`

	// 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"`
}

FoundationDBStatusProcessInfo describes the "processes" portion of the cluster status

func (*FoundationDBStatusProcessInfo) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusProcessInfo.

func (*FoundationDBStatusProcessInfo) DeepCopyInto

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"`
}

FoundationDBStatusProcessRoleInfo contains the minimal information from the process status roles.

func (*FoundationDBStatusProcessRoleInfo) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusProcessRoleInfo.

func (*FoundationDBStatusProcessRoleInfo) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FoundationDBStatusSupportedVersion.

func (*FoundationDBStatusSupportedVersion) DeepCopyInto

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 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

func (in *None) DeepCopy() *None

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new None.

func (*None) DeepCopyInto

func (in *None) DeepCopyInto(out *None)

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"
)

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 is part of the transaction system.

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"`
	Tester            int `json:"tester,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.

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

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.

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"
)

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 ProcessGroupStatus

type ProcessGroupStatus struct {
	// ProcessGroupID represents the ID of the process group
	ProcessGroupID string `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"`
	// ExcludedTimestamp 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"`
}

ProcessGroupStatus represents the status of a ProcessGroup.

func FindProcessGroupByID

func FindProcessGroupByID(processGroups []*ProcessGroupStatus, processGroupID string) *ProcessGroupStatus

FindProcessGroupByID finds a process group status for a given processGroupID.

func MarkProcessGroupForRemoval

func MarkProcessGroupForRemoval(processGroups []*ProcessGroupStatus, processGroupID string, 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 string, 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(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) 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) 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) MarkForRemoval

func (processGroupStatus *ProcessGroupStatus) MarkForRemoval()

MarkForRemoval marks a process group for removal

func (*ProcessGroupStatus) NeedsReplacement

func (processGroupStatus *ProcessGroupStatus) NeedsReplacement(failureTime int) (bool, int64)

NeedsReplacement checks if the ProcessGroupStatus has conditions so that it should be removed

func (*ProcessGroupStatus) SetExclude

func (processGroupStatus *ProcessGroupStatus) SetExclude()

SetExclude marks a process group as excluded

func (*ProcessGroupStatus) UpdateCondition

func (processGroupStatus *ProcessGroupStatus) UpdateCondition(conditionType ProcessGroupConditionType, set bool, oldProcessGroups []*ProcessGroupStatus, processGroupID string)

UpdateCondition will add or remove a condition in the ProcessGroupStatus. If the old ProcessGroupStatus already contains the condition, and the condition is being set, the condition is reused to contain the same timestamp.

type ProcessRole

type ProcessRole string

ProcessRole models the role of a pod

const (
	// ProcessRoleCoordinator model for FDB coordinator role
	ProcessRoleCoordinator ProcessRole = "coordinator"
)

TODO (johscheuer): add more roles to this list

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.
	VolumeClaimTemplate *corev1.PersistentVolumeClaim `json:"volumeClaimTemplate,omitempty"`

	// CustomParameters defines additional parameters to pass to the fdbserver
	// process.
	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 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"
	// 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

func (in *Region) DeepCopy() *Region

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Region.

func (*Region) DeepCopyInto

func (in *Region) DeepCopyInto(out *Region)

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.
	// NOTE: This is an experimental feature, and is not supported in the
	// latest stable version of FoundationDB.
	UseDNSInClusterFile *bool `json:"useDNSInClusterFile,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"
)

type URLParameter

type URLParameter string

URLParameter defines a single URL parameter to pass to the blobstore. +kubebuilder:validation:MaxLength=1024

type Version

type Version struct {
	// Major is the major version
	Major int

	// Minor is the minor version
	Minor int

	// Patch is the patch version
	Patch int

	// ReleaseCandidate is the number from the `-rc\d+` suffix version
	// of the version if it exists
	ReleaseCandidate int
}

Version represents a version of FoundationDB.

This provides convenience methods for checking features available in different versions.

func ParseFdbVersion

func ParseFdbVersion(version string) (Version, error)

ParseFdbVersion parses a version from its string representation.

func (Version) Compact

func (version Version) Compact() string

Compact prints the version in the major.minor format.

func (*Version) DeepCopy

func (in *Version) DeepCopy() *Version

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Version.

func (*Version) DeepCopyInto

func (in *Version) DeepCopyInto(out *Version)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (Version) Equal

func (version Version) Equal(other Version) bool

Equal checks if two Version are the same.

func (Version) GetBinaryVersion

func (version Version) GetBinaryVersion() string

GetBinaryVersion Returns a version string compatible with the log implemented in the sidecars

func (Version) HasNonBlockingExcludes

func (version Version) HasNonBlockingExcludes(useNonBlockingExcludes bool) bool

HasNonBlockingExcludes determines if a version has support for non-blocking exclude commands.

func (Version) HasSeparatedProxies added in v1.1.0

func (version Version) HasSeparatedProxies() bool

HasSeparatedProxies determines if a version has support for separate grv/commit proxies

func (Version) IsAtLeast

func (version Version) IsAtLeast(other Version) bool

IsAtLeast determines if a version is greater than or equal to another version.

func (Version) IsProtocolCompatible

func (version Version) IsProtocolCompatible(other Version) bool

IsProtocolCompatible determines whether two versions of FDB are protocol compatible.

func (Version) IsReleaseCandidate

func (version Version) IsReleaseCandidate() bool

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

func (version Version) IsSupported() bool

IsSupported defines the minimum supported FDB version.

func (Version) NextMajorVersion

func (version Version) NextMajorVersion() Version

NextMajorVersion returns the next major version of FoundationDB.

func (Version) NextMinorVersion

func (version Version) NextMinorVersion() Version

NextMinorVersion returns the next minor version of FoundationDB.

func (Version) NextPatchVersion

func (version Version) NextPatchVersion() Version

NextPatchVersion returns the next patch version of FoundationDB.

func (Version) String

func (version Version) String() string

String gets the string representation of an FDB version.

func (Version) SupportsIsPresent added in v1.4.0

func (version Version) SupportsIsPresent() bool

SupportsIsPresent returns true if the sidecar of this version supports the is_present endpoint

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

Jump to

Keyboard shortcuts

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