fixtures

package
v2.11.0 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2025 License: Apache-2.0 Imports: 59 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// PrimaryID is the suffix for the primary FoundationDBCluster
	PrimaryID = "primary"
	// RemoteID is the suffix for the remote FoundationDBCluster
	RemoteID = "remote"
	// PrimarySatelliteID is the suffix for the primary satellite FoundationDBCluster
	PrimarySatelliteID = "primary-sat"
	// RemoteSatelliteID is the suffix for the remote satellite FoundationDBCluster
	RemoteSatelliteID = "remote-sat"
	// SatelliteID is the suffix for the satellite FoundationDBCluster
	SatelliteID = "sat"
)

This file contains fixtures to set up HA configurations.

View Source
const ChaosDurationForever = "998h"

ChaosDurationForever represents a very long duration if an experiment should run for the whole test duration.

Variables

This section is empty.

Functions

func CheckInvariant

func CheckInvariant(
	invariantName string,
	shutdownHooks *ShutdownHooks,
	threshold time.Duration,
	f func() error,
) error

CheckInvariant will test the invariant method provided and will return an error if the invariant returns an error

func FdbPrintable

func FdbPrintable(d []byte) string

FdbPrintable copied from foundationdb bindings/go/src/fdb/fdb.go func Printable(d []byte) string Printable returns a human readable version of a byte array. The bytes that correspond with ASCII printable characters [32-127) are passed through. Other bytes are replaced with \x followed by a two character zero-padded hex code for byte.

func FdbStrinc

func FdbStrinc(prefix []byte) ([]byte, error)

FdbStrinc returns the first key that would sort outside the range prefixed by // prefix, or an error if prefix is empty or contains only 0xFF bytes. Copied from foundationdb bindings/go/src/fdb/range.go func Strinc(prefix []byte) ([]byte, error)

func GenerateUpgradeTableEntries

func GenerateUpgradeTableEntries(options *FactoryOptions) []ginkgo.TableEntry

GenerateUpgradeTableEntries creates the ginkgo.TableEntry slice based of the provided options.

func GetBaseImageAndTag

func GetBaseImageAndTag(image string) (string, string)

GetBaseImageAndTag returns the base image and if present the tag.

func GetDcIDsFromConfig

func GetDcIDsFromConfig(databaseConfiguration fdbv1beta2.DatabaseConfiguration) []string

GetDcIDsFromConfig returns unique DC IDs from the current config. TODO (johscheuer): Should this be part of v1beta2?

func GetOperatorSelector

func GetOperatorSelector(namespace string) chaosmesh.PodSelectorSpec

GetOperatorSelector returns the operator Pod selector for chaos mesh.

func GetProcessClass

func GetProcessClass(pod corev1.Pod) fdbv1beta2.ProcessClass

GetProcessClass returns the Process class of this Pod.

func GetProcessGroupID

func GetProcessGroupID(pod corev1.Pod) fdbv1beta2.ProcessGroupID

GetProcessGroupID returns the Process Group ID class of this Pod.

func GetPvc

func GetPvc(pod *corev1.Pod) string

GetPvc returns the PVC name of this Pod.

func LoadControllerRuntimeFromContext

func LoadControllerRuntimeFromContext(
	context string,
	configScheme *runtime.Scheme,
) (client.Client, error)

LoadControllerRuntimeFromContext will load a client.Client from the provided context. The context must be existing in the kube config.

func PodSelector

func PodSelector(pod *corev1.Pod) chaosmesh.PodSelectorSpec

PodSelector returns the PodSelectorSpec for the provided Pod.

func PodsSelector

func PodsSelector(v1pods []corev1.Pod) chaosmesh.PodSelectorSpec

PodsSelector returns the PodSelectorSpec for the provided Pods.

func RunGinkgoTests

func RunGinkgoTests(t *testing.T, name string)

RunGinkgoTests sets up the current test suite to run Ginkgo tests, then invokes the tests. It should be invoked by each top level Test* function.

func SetTestSuiteName

func SetTestSuiteName(name string)

SetTestSuiteName will set the test suite name for the current test suite. You have to ensure that this test suite name is unique across all test suites.

func ToJSON

func ToJSON(v interface{}) string

ToJSON tries to convert any object to a string representing the struct as JSON.

func Unprintable

func Unprintable(val string) ([]byte, error)

Unprintable adapted from foundationdb fdbclient/NativeAPI.actor.cpp std::string unprintable(std::string const& val).

func VersionsAreProtocolCompatible

func VersionsAreProtocolCompatible(versionA string, versionB string) bool

VersionsAreProtocolCompatible returns true if versionA and versionB are protocol compatible e.g. a patch upgrade.

Types

type ChaosMeshExperiment

type ChaosMeshExperiment struct {
	// contains filtered or unexported fields
}

ChaosMeshExperiment is a wrapper around an actual chaos mesh experiment and should provide some useful abstractions, to make it easier to run experiments.

type ClusterConfig

type ClusterConfig struct {
	// If enabled we will use the performance setup.
	Performance bool
	// If enabled the debug images will be used for this test case.
	DebugSymbols bool
	// UseMaintenanceMode if enabled the FoundationDBCluster resource will enable the maintenance mode.
	UseMaintenanceMode bool
	// EnableTLS when set this value will be used to enable/disable TLS, the default is true.
	EnableTLS *bool
	// UseLocalityBasedExclusions if enabled the FoundationDBCluster resource will enable the locality based exclusions.
	UseLocalityBasedExclusions *bool
	// UseDNS if enabled the FoundationDBCluster resource will enable the DNS feature.
	UseDNS *bool
	// If enabled the cluster will be setup with the unified image.
	UseUnifiedImage *bool
	// ManagementAPI if set to true, the operator will make use of the management API.
	ManagementAPI *bool
	// SimulateCustomFaultDomainEnv will simulate the use case that a user has set a custom environment variable to
	// be used as zone ID.
	SimulateCustomFaultDomainEnv bool
	// CreationTracker if specified will be used to log the time between the creations steps.
	CreationTracker CreationTrackerLogger
	// Number of machines, this is used for calculating the number of Pods and is not correlated to the actual number
	// of machines that will be used.
	MachineCount int
	// This is also used for calculating the number of Pods.
	DisksPerMachine int
	// StorageServerPerPod defines the value that is set in the FoundationDBClusterSpec for this setting.
	StorageServerPerPod int
	// LogServersPerPod defines the value that is set in the FoundationDBClusterSpec for this setting.
	LogServersPerPod int
	// MemoryPerPodInGb defines the default memory for pods created by this cluster. If more than one process is running inside the
	// pod the memory size will be increased proportionally. If not set, will default to 8Gi
	MemoryPerPod string
	// CpusPerPod defines the default CPU size for pods created by this cluster. If more than one process is running inside the
	// pod the CPU size will be increased proportionally. If not set will default to 1.
	CpusPerPod string
	// VolumeSize the size of the volumes that should be created for stateful Pods.
	VolumeSize string
	// Namespace to create the cluster in, if empty will use a randomly generated namespace. The setup won't create the
	// namespace if it's not created.
	Namespace string
	// Name of the cluster to be created, if empty a random name will be used.
	Name string
	// TLSPeerVerification represents the TLS peer verification that should be used for the cluster.
	TLSPeerVerification string
	// Version used to create the FDB cluster with.
	Version *string

	// The storage engine that should be used to create the cluster
	StorageEngine fdbv1beta2.StorageEngine
	// NodeSelector of the cluster to be created.
	NodeSelector map[string]string
	// Defines the HA mode that will be used, per default this will point to HaModeNone.
	HaMode HaMode
	// CustomParameters allows to define the custom parameters that should be set during the cluster creation.
	CustomParameters map[fdbv1beta2.ProcessClass]fdbv1beta2.FoundationDBCustomParameters
	// CreationCallback allows to specify a method that will be called after the cluster was created.
	CreationCallback func(fdbCluster *FdbCluster)
	// RedundancyMode defines the redundancy mode that should be used. If undefined the default is triple, except for
	// the HaFourZoneDoubleSatRF4 configuration.
	RedundancyMode fdbv1beta2.RedundancyMode
	// SynchronizationMode defines the fdbv1beta2.SynchronizationMode if not set the default will be \"local\"
	SynchronizationMode fdbv1beta2.SynchronizationMode
	// contains filtered or unexported fields
}

ClusterConfig defines the target configuration for the FoundationDBCLuster.

func DefaultClusterConfig

func DefaultClusterConfig(debugSymbols bool) *ClusterConfig

DefaultClusterConfig returns the default cluster configuration with the HA Mode None.

func DefaultClusterConfigWithHaMode

func DefaultClusterConfigWithHaMode(haMode HaMode, debugSymbols bool) *ClusterConfig

DefaultClusterConfigWithHaMode returns the default cluster configuration with the provided HA Mode.

func (*ClusterConfig) CalculateRoleCounts

func (config *ClusterConfig) CalculateRoleCounts() fdbv1beta2.RoleCounts

CalculateRoleCounts attempt to scale role counts in a way that is reasonable for read-heavy OLTP-style workloads 1 disk will hold logs. The rest holds data.

func (*ClusterConfig) Copy

func (config *ClusterConfig) Copy() *ClusterConfig

Copy will return a new struct of the ClusterConfig.

func (*ClusterConfig) CreateDatabaseConfiguration

func (config *ClusterConfig) CreateDatabaseConfiguration() fdbv1beta2.DatabaseConfiguration

CreateDatabaseConfiguration returns the fdbv1beta2.DatabaseConfiguration based on the provided cluster configuration.

func (*ClusterConfig) GetRedundancyMode

func (config *ClusterConfig) GetRedundancyMode() fdbv1beta2.RedundancyMode

GetRedundancyMode returns the redundancy mode based on the cluster configuration.

func (*ClusterConfig) GetUseUnifiedImage added in v2.10.0

func (config *ClusterConfig) GetUseUnifiedImage() bool

GetUseUnifiedImage returns true when the unified image should be used.

func (*ClusterConfig) GetVersion added in v2.10.0

func (config *ClusterConfig) GetVersion() string

GetVersion returns the version to create the cluster with.

func (*ClusterConfig) SetDefaults

func (config *ClusterConfig) SetDefaults(factory *Factory)

SetDefaults will set all unset fields to the default values.

func (*ClusterConfig) TLSEnabled added in v2.10.0

func (config *ClusterConfig) TLSEnabled() bool

TLSEnabled returns true when TLS should be enabled or false if TLS should be disabled.

type CreationTrackerLogger

type CreationTrackerLogger interface {
	// NewEntry adds an entry to the internal map.
	NewEntry() map[string]interface{}
	// Log will write the values in  the map directly to the logger.
	Log(values map[string]interface{}) error
	// Flush will write all values from the entry map to the logger.
	Flush() error
}

CreationTrackerLogger is an interface that can be used to log the time between different creation steps.

func NewDefaultCreationTrackerLogger

func NewDefaultCreationTrackerLogger() CreationTrackerLogger

NewDefaultCreationTrackerLogger creates a no-op logger which is not writing anything.

type DefaultCreationTrackerLogger

type DefaultCreationTrackerLogger struct{}

DefaultCreationTrackerLogger is an implementation of CreationTrackerLogger that is not printing any values.

func (*DefaultCreationTrackerLogger) Flush

func (logger *DefaultCreationTrackerLogger) Flush() error

Flush will write all values from the entry map to the logger.

func (*DefaultCreationTrackerLogger) Log

func (logger *DefaultCreationTrackerLogger) Log(_ map[string]interface{}) error

Log will write the values in the map directly to the logger.

func (*DefaultCreationTrackerLogger) NewEntry

func (logger *DefaultCreationTrackerLogger) NewEntry() map[string]interface{}

NewEntry adds an entry to the internal map.

type Factory

type Factory struct {
	// contains filtered or unexported fields
}

Factory is a helper struct to organize tests.

func CreateFactory

func CreateFactory(options *FactoryOptions) *Factory

CreateFactory will create a factory based on the provided options.

func (*Factory) AddShutdownHook

func (factory *Factory) AddShutdownHook(f func() error)

AddShutdownHook will add the provided shut down hook.

func (*Factory) ChaosTestsEnabled

func (factory *Factory) ChaosTestsEnabled() bool

ChaosTestsEnabled returns true if chaos tests should be executed.

func (*Factory) ChooseRandomPod

func (factory *Factory) ChooseRandomPod(pods *corev1.PodList) *corev1.Pod

ChooseRandomPod returns a random pod from the provided array, passing through the provided error. TODO(johscheuer): Should we merge ChooseRandomPod and RandomPickOnePod?

func (*Factory) CleanupChaosMeshExperiments

func (factory *Factory) CleanupChaosMeshExperiments() error

CleanupChaosMeshExperiments deletes any chaos experiments created by this handle. Invoked at shutdown. Tests that need to delete experiments should invoke Delete on their ChaosMeshExperiment objects.

func (*Factory) CreateBackupForCluster

func (factory *Factory) CreateBackupForCluster(
	fdbCluster *FdbCluster,
) *FdbBackup

CreateBackupForCluster will create a FoundationDBBackup for the provided cluster.

func (*Factory) CreateBlobstoreIfAbsent

func (factory *Factory) CreateBlobstoreIfAbsent(namespace string)

CreateBlobstoreIfAbsent creates the blobstore Deployment based on the template.

func (*Factory) CreateDataLoaderIfAbsent

func (factory *Factory) CreateDataLoaderIfAbsent(cluster *FdbCluster)

CreateDataLoaderIfAbsent will create the data loader for the provided cluster and load some random data into the cluster.

func (*Factory) CreateDataLoaderIfAbsentWithWait

func (factory *Factory) CreateDataLoaderIfAbsentWithWait(cluster *FdbCluster, wait bool)

CreateDataLoaderIfAbsentWithWait will create the data loader for the provided cluster and load some random data into the cluster. If wait is true, the method will wait until the data loader has finished.

func (*Factory) CreateExperiment

func (factory *Factory) CreateExperiment(chaos client.Object) *ChaosMeshExperiment

CreateExperiment creates a chaos experiment in the cluster with specified type, name and chaos object.

func (*Factory) CreateFDBOperatorIfAbsent

func (factory *Factory) CreateFDBOperatorIfAbsent(namespace string) error

CreateFDBOperatorIfAbsent creates the operator Deployment based on the template.

func (*Factory) CreateFdbCluster

func (factory *Factory) CreateFdbCluster(
	config *ClusterConfig,
) *FdbCluster

CreateFdbCluster creates a FDB cluster.

func (*Factory) CreateFdbClusterFromSpec

func (factory *Factory) CreateFdbClusterFromSpec(
	spec *fdbv1beta2.FoundationDBCluster,
	config *ClusterConfig,
) *FdbCluster

CreateFdbClusterFromSpec creates a FDB cluster. This method can be used in combination with the GenerateFDBClusterSpec method. In general this should only be used for special cases that are not covered by changing the ClusterOptions or the ClusterConfig.

func (*Factory) CreateFdbHaCluster

func (factory *Factory) CreateFdbHaCluster(
	config *ClusterConfig,
) *HaFdbCluster

CreateFdbHaCluster creates a HA FDB Cluster based on the cluster config and cluster options

func (*Factory) CreateIfAbsent

func (factory *Factory) CreateIfAbsent(object client.Object) error

CreateIfAbsent will create the provided resource if absent.

func (*Factory) CreateRestoreForCluster

func (factory *Factory) CreateRestoreForCluster(backup *FdbBackup)

CreateRestoreForCluster will create a FoundationDBRestore resource based on the provided backup resource. For more information how the backup system with the operator is working please look at the operator documentation: https://github.com/FoundationDB/fdb-kubernetes-operator/v2/blob/master/docs/manual/backup.md

func (*Factory) Delete

func (factory *Factory) Delete(object client.Object)

Delete will delete the provided resource if it exists.

func (*Factory) DeleteChaosMeshExperimentSafe

func (factory *Factory) DeleteChaosMeshExperimentSafe(experiment *ChaosMeshExperiment)

DeleteChaosMeshExperimentSafe will delete a running Chaos Mesh experiment.

func (*Factory) DeleteDataLoader

func (factory *Factory) DeleteDataLoader(cluster *FdbCluster)

DeleteDataLoader will delete the data loader job

func (*Factory) DeletePod

func (factory *Factory) DeletePod(pod *corev1.Pod)

DeletePod deletes the provided Pod

func (*Factory) DoesPodExist

func (factory *Factory) DoesPodExist(pod corev1.Pod) (bool, error)

DoesPodExist checks to see if Kubernetes still knows about this pod.

func (*Factory) DownloadFile

func (factory *Factory) DownloadFile(
	ctx context.Context,
	target *corev1.Pod,
	container string,
	src string,
	dst io.Writer) error

DownloadFile will download the file from the provided Pod/container into w.

func (*Factory) DumpState

func (factory *Factory) DumpState(fdbCluster *FdbCluster)

DumpState writes the state of the cluster to the log output. Useful for debugging test failures.

func (*Factory) DumpStateHaCluster

func (factory *Factory) DumpStateHaCluster(fdbCluster *HaFdbCluster)

DumpStateHaCluster can be used to dump the state of the HA cluster. This includes the Kubernetes custom resource information as well as the operator logs and the Pod state.

func (*Factory) DumpStateHaClusterWithLogsSince added in v2.10.0

func (factory *Factory) DumpStateHaClusterWithLogsSince(
	fdbCluster *HaFdbCluster,
	logsSinceSeconds *int64,
)

DumpStateHaClusterWithLogsSince can be used to dump the state of the HA cluster. This includes the Kubernetes custom resource information as well as the operator logs and the Pod state. The logsSinceSeconds is used for the manager logs from the operator.

func (*Factory) DumpStateWithLogsSince added in v2.10.0

func (factory *Factory) DumpStateWithLogsSince(fdbCluster *FdbCluster, logsSinceSeconds *int64)

DumpStateWithLogsSince writes the state of the cluster to the log output. Useful for debugging test failures. The logsSinceSeconds is used for the manager logs from the operator.

func (*Factory) ExecuteCmd

func (factory *Factory) ExecuteCmd(
	ctx context.Context,
	namespace string,
	name string,
	container string,
	command string,
	printOutput bool,
) (string, string, error)

ExecuteCmd executes command in the default container of a Pod with shell, returns stdout and stderr.

func (*Factory) ExecuteCmdOnPod

func (factory *Factory) ExecuteCmdOnPod(
	ctx context.Context,
	pod *corev1.Pod,
	container string,
	command string,
	printOutput bool,
) (string, string, error)

ExecuteCmdOnPod runs a command on the provided Pod. The command will be executed inside a bash -c ”.

func (*Factory) ExecuteCommandRaw

func (factory *Factory) ExecuteCommandRaw(
	ctx context.Context,
	namespace string,
	name string,
	container string,
	command []string,
	stdin io.Reader,
	stdout io.Writer,
	stderr io.Writer,
	isTty bool,
) error

ExecuteCommandRaw will run the command without putting it into a shell.

func (*Factory) GenerateCertificate

func (factory *Factory) GenerateCertificate() (*corev1.Secret, error)

GenerateCertificate generates a Kubernetes Secret that contains a valid certificate, key and ca.pem. This method can be used to create e2e test FDB clusters.

func (*Factory) GenerateFDBClusterSpec

func (factory *Factory) GenerateFDBClusterSpec(
	config *ClusterConfig,
) *fdbv1beta2.FoundationDBCluster

GenerateFDBClusterSpec will generate a *fdbv1beta2.FoundationDBCluster based on the input ClusterConfig.

func (*Factory) GetAdditionalSidecarVersions

func (factory *Factory) GetAdditionalSidecarVersions() []fdbv1beta2.Version

GetAdditionalSidecarVersions returns all additional FoundationDB versions that should be added to the sidecars. This method make sure that the operator has all required client libraries.

func (*Factory) GetBackupSecretName

func (factory *Factory) GetBackupSecretName() string

GetBackupSecretName returns the name of the backup secret.

func (*Factory) GetChaosNamespace

func (factory *Factory) GetChaosNamespace() string

GetChaosNamespace returns the chaos namespace that was provided per command line.

func (*Factory) GetContext

func (factory *Factory) GetContext() string

GetContext returns the Kubernetes context provided via command line.

func (*Factory) GetControllerRuntimeClient

func (factory *Factory) GetControllerRuntimeClient() client.Client

GetControllerRuntimeClient returns the controller runtime client.

func (*Factory) GetDataLoaderImage

func (factory *Factory) GetDataLoaderImage() string

GetDataLoaderImage returns the dataloader image provided via command line. If a registry was defined the registry will be prepended.

func (*Factory) GetDefaultLabels

func (factory *Factory) GetDefaultLabels() map[string]string

GetDefaultLabels returns the default labels set to all resources.

func (*Factory) GetDefaultStorageClass

func (factory *Factory) GetDefaultStorageClass() string

GetDefaultStorageClass returns either the StorageClass provided by the command line or fetches the StorageClass passed on the default Annotation.

func (*Factory) GetDefaultUnavailableThreshold added in v2.9.0

func (factory *Factory) GetDefaultUnavailableThreshold() time.Duration

GetDefaultUnavailableThreshold returns the default unavailable threshold. If the cluster is unavailable for a longer period the test case will fail.

func (*Factory) GetFDBVersion

func (factory *Factory) GetFDBVersion() fdbv1beta2.Version

GetFDBVersion returns the parsed FDB version.

func (*Factory) GetFoundationDBImage

func (factory *Factory) GetFoundationDBImage() string

GetFoundationDBImage returns the FoundationDB image provided via command line. If a registry was defined the registry will be prepended.

func (*Factory) GetLogsForPod

func (factory *Factory) GetLogsForPod(pod *corev1.Pod, container string, since *int64) string

GetLogsForPod will fetch the logs for the specified Pod and container since the provided seconds.

func (*Factory) GetMainContainerOverrides

func (factory *Factory) GetMainContainerOverrides(
	config *ClusterConfig,
) fdbv1beta2.ContainerOverrides

GetMainContainerOverrides will return the main container overrides.

func (*Factory) GetNodeSelector added in v2.2.0

func (factory *Factory) GetNodeSelector() string

GetNodeSelector returns the node selector, which is an empty string or has the format key=value.

func (*Factory) GetOperatorImage

func (factory *Factory) GetOperatorImage() string

GetOperatorImage returns the operator image provided via command line. If a registry was defined the registry will be prepended.

func (*Factory) GetOperatorPods

func (factory *Factory) GetOperatorPods(namespace string) *corev1.PodList

GetOperatorPods returns the operator Pods in the provided namespace.

func (*Factory) GetOperatorPodsWithOptions added in v2.11.0

func (factory *Factory) GetOperatorPodsWithOptions(
	namespace string,
	options ...client.ListOption,
) *corev1.PodList

GetOperatorPodsWithOptions returns the operator Pods in the provided namespace with the additional list options. The default list options contain the namespace selector and the label selector for the operator pods.

func (*Factory) GetPod

func (factory *Factory) GetPod(namespace string, name string) (*corev1.Pod, error)

GetPod returns the Pod matching the namespace and name

func (*Factory) GetSecretName

func (factory *Factory) GetSecretName() string

GetSecretName returns the secret name that contains the certificates used for the current test run.

func (*Factory) GetSidecarConfigs

func (factory *Factory) GetSidecarConfigs() []SidecarConfig

GetSidecarConfigs returns the sidecar configs. The sidecar configs can be used to template applications that will use all provided sidecar versions to inject FDB client libraries.

func (*Factory) GetSidecarContainerOverrides

func (factory *Factory) GetSidecarContainerOverrides(
	config *ClusterConfig,
) fdbv1beta2.ContainerOverrides

GetSidecarContainerOverrides will return the sidecar container overrides. If the unified image should be used an empty container override will be returned.

func (*Factory) GetSidecarImage

func (factory *Factory) GetSidecarImage() string

GetSidecarImage returns the sidecar image provided via command line. If a registry was defined the registry will be prepended.

func (*Factory) GetStorageClasses

func (factory *Factory) GetStorageClasses(labels map[string]string) *storagev1.StorageClassList

GetStorageClasses returns all StorageClasses present in this Kubernetes cluster that have the label foundationdb.org/operator-testing=true.

func (*Factory) GetSynchronizationMode added in v2.3.0

func (factory *Factory) GetSynchronizationMode() fdbv1beta2.SynchronizationMode

GetSynchronizationMode returns the desired fdbv1beta2.SynchronizationMode if unset, the default will be fdbv1beta2.SynchronizationModeLocal.

func (*Factory) GetUnifiedFoundationDBImage

func (factory *Factory) GetUnifiedFoundationDBImage() string

GetUnifiedFoundationDBImage returns the unified FoundationDB image provided via command line. If a registry was defined the registry will be prepended.

func (*Factory) GetUpgradeVersions

func (factory *Factory) GetUpgradeVersions() []*UpgradeTestConfiguration

GetUpgradeVersions returns the upgrade versions as a string slice based on the command line flag. Each entry will be a FoundationDB version. This slice can contain duplicate entries. For upgrade tests it's expected that two versions form one test, e.g. where the odd number is the initial version and the even number is the

func (*Factory) InjectDiskFailure

func (factory *Factory) InjectDiskFailure(selector chaosmesh.PodSelectorSpec) *ChaosMeshExperiment

InjectDiskFailure injects a disk failure for all Pods selected by the selector.

func (*Factory) InjectDiskFailureWithDuration

func (factory *Factory) InjectDiskFailureWithDuration(
	selector chaosmesh.PodSelectorSpec,
	duration string,
) *ChaosMeshExperiment

InjectDiskFailureWithDuration injects a disk failure for all Pods selected by the selector for the specified duration.

func (*Factory) InjectDiskFailureWithPath

func (factory *Factory) InjectDiskFailureWithPath(
	selector chaosmesh.PodSelectorSpec,
	volumePath string,
	path string,
	methods []chaosmesh.IoMethod,
	containers []string,
) *ChaosMeshExperiment

InjectDiskFailureWithPath injects a disk failure for all Pods selected by the selector. volumePath and path can be used to specify the affected files and methods allow to specify the affected methods.

func (*Factory) InjectDiskFailureWithPathAndDuration

func (factory *Factory) InjectDiskFailureWithPathAndDuration(
	selector chaosmesh.PodSelectorSpec,
	volumePath string,
	path string,
	methods []chaosmesh.IoMethod,
	containers []string,
	duration string,
) *ChaosMeshExperiment

InjectDiskFailureWithPathAndDuration injects a disk failure for all Pods selected by the selector. volumePath and path can be used to specify the affected files and methods allow to specify the affected methods. duration will define how long the chaos is injected.

func (*Factory) InjectHTTPClientChaosWrongResultFdbMonitorConf

func (factory *Factory) InjectHTTPClientChaosWrongResultFdbMonitorConf(
	selector chaosmesh.PodSelectorSpec,
	namespace string,
) *ChaosMeshExperiment

InjectHTTPClientChaosWrongResultFdbMonitorConf this method can be used to simulate a bad response from the operator to the sidecar. Currently this method returns as body the value "wrong" when the operator does a request against the check_hash/fdbmonitor.conf endpoint, e.g. during upgrades.

func (*Factory) InjectIOLatency

func (factory *Factory) InjectIOLatency(
	selector chaosmesh.PodSelectorSpec,
	delay string,
) *ChaosMeshExperiment

InjectIOLatency injects IOLatency for single pod.

func (*Factory) InjectNetworkLatency

func (factory *Factory) InjectNetworkLatency(
	source chaosmesh.PodSelectorSpec,
	target chaosmesh.PodSelectorSpec,
	direction chaosmesh.Direction,
	delay *chaosmesh.DelaySpec,
) *ChaosMeshExperiment

InjectNetworkLatency injects network latency between the source and the target.

func (*Factory) InjectNetworkLoss

func (factory *Factory) InjectNetworkLoss(
	lossPercentage string,
	source chaosmesh.PodSelectorSpec,
	target chaosmesh.PodSelectorSpec,
	direction chaosmesh.Direction,
) *ChaosMeshExperiment

InjectNetworkLoss injects network loss between the source and the target.

func (*Factory) InjectNetworkLossBetweenPods

func (factory *Factory) InjectNetworkLossBetweenPods(
	pods []chaosmesh.PodSelectorSpec,
	loss string,
)

InjectNetworkLossBetweenPods Injects network loss b/w each combination of podGroups.

func (*Factory) InjectPartition

func (factory *Factory) InjectPartition(selector chaosmesh.PodSelectorSpec) *ChaosMeshExperiment

InjectPartition injects a partition to the provided selector.

func (*Factory) InjectPartitionBetween

func (factory *Factory) InjectPartitionBetween(
	source chaosmesh.PodSelectorSpec,
	target chaosmesh.PodSelectorSpec,
) *ChaosMeshExperiment

InjectPartitionBetween injects a partition between the source and the target.

func (*Factory) InjectPartitionBetweenWithDirection

func (factory *Factory) InjectPartitionBetweenWithDirection(
	source chaosmesh.PodSelectorSpec,
	target chaosmesh.PodSelectorSpec,
	direction chaosmesh.Direction,
) *ChaosMeshExperiment

InjectPartitionBetweenWithDirection injects a partition between the source and the target for the specified direction.

func (*Factory) InjectPartitionOnSomeTargetPods

func (factory *Factory) InjectPartitionOnSomeTargetPods(
	source chaosmesh.PodSelectorSpec,
	target chaosmesh.PodSelectorSpec,
	fixedNumber int,
) *ChaosMeshExperiment

InjectPartitionOnSomeTargetPods injects a partition on some Pods instead of all Pods. It picks a specific number of pods randomly. If the specified "fixedNumber" is greater than the number of all targets, all targets will be chosen.

func (*Factory) InjectPartitionWithExternalTargets

func (factory *Factory) InjectPartitionWithExternalTargets(
	selector chaosmesh.PodSelectorSpec,
	externalTargets []string,
) *ChaosMeshExperiment

InjectPartitionWithExternalTargets injects a partition to the provided selector with the external targets

func (*Factory) InjectPodStress

func (factory *Factory) InjectPodStress(
	target chaosmesh.PodSelectorSpec,
	containerNames []string,
	memoryStressor *chaosmesh.MemoryStressor,
	cpuStressor *chaosmesh.CPUStressor,
) *ChaosMeshExperiment

InjectPodStress injects pod stress on the target.

func (*Factory) Intn

func (factory *Factory) Intn(n int) int

Intn wrapper around Intn with the current random generator of the factory.

func (*Factory) MultipleNamespaces

func (factory *Factory) MultipleNamespaces(config *ClusterConfig, dcIDs []string) []string

MultipleNamespaces creates multiple namespaces for HA testing.

func (*Factory) OperatorIsAtLeast

func (factory *Factory) OperatorIsAtLeast(version string) bool

OperatorIsAtLeast is a helper method to check is the running operator is at least in the specified version.

func (*Factory) PrependRegistry

func (factory *Factory) PrependRegistry(container string) string

PrependRegistry if a registry was provided as flag, the registry will be prepended.

func (*Factory) RandStringRunes

func (factory *Factory) RandStringRunes(n int) string

RandStringRunes randomly generates a string of length n.

func (*Factory) RandomPickCluster

func (factory *Factory) RandomPickCluster(input []*FdbCluster, count int) []*FdbCluster

RandomPickCluster randomly picks the number of FdbCluster from the slice. If the slice contains less than count FdbCluster, all FdbCluster will be returned in a random order.

func (*Factory) RandomPickOneCluster

func (factory *Factory) RandomPickOneCluster(input []*FdbCluster) *FdbCluster

RandomPickOneCluster will pick one FdbCluster randomly from the FdbCluster slice.

func (*Factory) RandomPickOnePod

func (factory *Factory) RandomPickOnePod(input []corev1.Pod) corev1.Pod

RandomPickOnePod will pick one Pods randomly from the Pod slice.

func (*Factory) RandomPickPod

func (factory *Factory) RandomPickPod(input []corev1.Pod, count int) []corev1.Pod

RandomPickPod randomly picks the number of Pods from the slice. If the slice contains less than count Pods, all Pods will be returned in a random order. This method will ensure that only a Pod with a non-zero deletion timestamp will be picked.

func (*Factory) RecreateOperatorPods

func (factory *Factory) RecreateOperatorPods(namespace string)

RecreateOperatorPods will recreate all operator Pods in the specified namespace and wait until the new Pods are up and running.

func (*Factory) ScheduleInjectPodKill

func (factory *Factory) ScheduleInjectPodKill(
	target chaosmesh.PodSelectorSpec,
	schedule string,
	mode chaosmesh.SelectorMode,
) *ChaosMeshExperiment

ScheduleInjectPodKill schedules a Pod Kill action.

func (*Factory) ScheduleInjectPodKillWithName

func (factory *Factory) ScheduleInjectPodKillWithName(
	target chaosmesh.PodSelectorSpec,
	schedule string,
	mode chaosmesh.SelectorMode,
	name string,
) *ChaosMeshExperiment

ScheduleInjectPodKillWithName schedules a Pod Kill action with the specified name.

func (*Factory) SetFinalizerForPod

func (factory *Factory) SetFinalizerForPod(pod *corev1.Pod, finalizers []string)

SetFinalizerForPod will set the provided finalizer slice for the Pods

func (*Factory) Shutdown

func (factory *Factory) Shutdown()

Shutdown executes all the shutdown handlers, usually called in afterSuite or afterTest depending on your scoping of the factory.

func (*Factory) SingleNamespace

func (factory *Factory) SingleNamespace() string

SingleNamespace returns a single namespace.

func (*Factory) StopInvariantCheck

func (factory *Factory) StopInvariantCheck()

StopInvariantCheck will stop the current invariant checker by triggering the shutdown hook and resetting the shutdown hooks.

func (*Factory) UploadFile

func (factory *Factory) UploadFile(
	ctx context.Context,
	target *corev1.Pod,
	container string,
	src io.Reader,
	dst string) error

UploadFile uploads a file from src into the Pod/container dst.

func (*Factory) UseUnifiedImage

func (factory *Factory) UseUnifiedImage() bool

UseUnifiedImage returns true if the e2e tests should use the unified image.

func (*Factory) WaitUntilDataLoaderIsDone

func (factory *Factory) WaitUntilDataLoaderIsDone(cluster *FdbCluster)

WaitUntilDataLoaderIsDone will wait until the data loader Job has finished.

func (*Factory) WaitUntilOperatorPodsRunning

func (factory *Factory) WaitUntilOperatorPodsRunning(namespace string)

WaitUntilOperatorPodsRunning waits until the Operator Pods are running.

type FactoryOptions

type FactoryOptions struct {
	// contains filtered or unexported fields
}

FactoryOptions defines the (command line) options that are support for the e2e test cases.

func InitFlags

func InitFlags() *FactoryOptions

InitFlags sets up the custom flags for this test suite and returns the parsed FactoryOptions struct. This method will take care of including the command line flags from Ginkgo and the testing framework.

func (*FactoryOptions) BindFlags

func (options *FactoryOptions) BindFlags(fs *flag.FlagSet)

BindFlags binds the FactoryOptions flags to the provided FlagSet. This can be used to extend the current test setup with custom/additional flags.

type FdbBackup

type FdbBackup struct {
	// contains filtered or unexported fields
}

FdbBackup represents a fdbv1beta2.FoundationDBBackup resource for doing backups of a FdbCluster.

func (*FdbBackup) GetBackupPod

func (fdbBackup *FdbBackup) GetBackupPod() *corev1.Pod

GetBackupPod returns a random backup Pod for the provided backup.

func (*FdbBackup) GetBackupPods

func (fdbBackup *FdbBackup) GetBackupPods() *corev1.PodList

GetBackupPods returns a *corev1.PodList, which contains all pods for the provided backup.

func (*FdbBackup) Pause

func (fdbBackup *FdbBackup) Pause()

Pause will pause the FdbBackup.

func (*FdbBackup) Start

func (fdbBackup *FdbBackup) Start()

Start will start the FdbBackup.

func (*FdbBackup) Stop

func (fdbBackup *FdbBackup) Stop()

Stop will stop the FdbBackup.

func (*FdbBackup) WaitForReconciliation

func (fdbBackup *FdbBackup) WaitForReconciliation()

WaitForReconciliation waits until the FdbBackup resource is fully reconciled.

func (*FdbBackup) WaitForRestorableVersion

func (fdbBackup *FdbBackup) WaitForRestorableVersion(version uint64)

WaitForRestorableVersion will wait until the back is restorable.

type FdbCluster

type FdbCluster struct {
	// contains filtered or unexported fields
}

FdbCluster is a fixture that allows tests to manipulate an FDB cluster with some name. Depending on how it was instantiated, the cluster may or may not exist, and may or may not be part of an HA configuration.

func (*FdbCluster) AllProcessGroupsHaveCondition

func (fdbCluster *FdbCluster) AllProcessGroupsHaveCondition(
	condition fdbv1beta2.ProcessGroupConditionType,
) bool

AllProcessGroupsHaveCondition returns true if all process groups have the specified condition. If allowOtherConditions is set to true only this condition is allowed.

func (*FdbCluster) BounceClusterWithoutWait

func (fdbCluster *FdbCluster) BounceClusterWithoutWait() error

BounceClusterWithoutWait will restart all fdberver processes in the current FoundationDBCluster without waiting for the cluster to become available again.

func (*FdbCluster) CheckPodIsDeleted

func (fdbCluster *FdbCluster) CheckPodIsDeleted(podName string) bool

CheckPodIsDeleted return true if Pod no longer exists at the executed time point

func (*FdbCluster) ClearBuggifyNoSchedule

func (fdbCluster *FdbCluster) ClearBuggifyNoSchedule(waitForReconcile bool) error

ClearBuggifyNoSchedule this will reset the NoSchedule setting for the current FoundationDBCluster.

func (*FdbCluster) ClearProcessGroupsToRemove

func (fdbCluster *FdbCluster) ClearProcessGroupsToRemove() error

ClearProcessGroupsToRemove clears the InstancesToRemove list in the cluster spec.

func (*FdbCluster) ClearRange

func (fdbCluster *FdbCluster) ClearRange(prefixBytes []byte, timeout int)

ClearRange will delete the provided range.

func (*FdbCluster) Create

func (fdbCluster *FdbCluster) Create() error

Create asynchronously creates this FDB cluster.

func (*FdbCluster) CreateTesterDeployment

func (fdbCluster *FdbCluster) CreateTesterDeployment(replicas int) *appsv1.Deployment

CreateTesterDeployment will create a deployment that runs tester processes with the specified number of replicas.

func (*FdbCluster) Destroy

func (fdbCluster *FdbCluster) Destroy() error

Destroy will remove the underlying cluster.

func (*FdbCluster) EnsurePodIsDeleted

func (fdbCluster *FdbCluster) EnsurePodIsDeleted(podName string)

EnsurePodIsDeleted validates that a Pod is either not existing or is marked as deleted with a non-zero deletion timestamp.

func (*FdbCluster) EnsurePodIsDeletedWithCustomTimeout

func (fdbCluster *FdbCluster) EnsurePodIsDeletedWithCustomTimeout(
	podName string,
	timeoutMinutes int,
)

EnsurePodIsDeletedWithCustomTimeout validates that a Pod is either not existing or is marked as deleted with a non-zero deletion timestamp. It times out after timeoutMinutes.

func (*FdbCluster) EnsureTeamTrackersAreHealthy

func (fdbCluster *FdbCluster) EnsureTeamTrackersAreHealthy()

EnsureTeamTrackersAreHealthy will check if the machine-readable status suggest that the team trackers are healthy and all data is present.

func (*FdbCluster) EnsureTeamTrackersHaveMinReplicas

func (fdbCluster *FdbCluster) EnsureTeamTrackersHaveMinReplicas()

EnsureTeamTrackersHaveMinReplicas will check if the machine-readable status suggest that the team trackers min_replicas match the expected replicas.

func (*FdbCluster) ExecuteCmdOnPod

func (fdbCluster *FdbCluster) ExecuteCmdOnPod(
	pod corev1.Pod,
	container string,
	command string,
	printOutput bool,
) (string, string, error)

ExecuteCmdOnPod will run the provided command in a Shell.

func (*FdbCluster) ForceReconcile

func (fdbCluster *FdbCluster) ForceReconcile()

ForceReconcile will add an annotation with the current timestamp on the FoundationDBCluster resource to make sure the operator reconciliation loop is triggered. This is used to speed up some test cases.

func (*FdbCluster) GenerateRandomValues

func (fdbCluster *FdbCluster) GenerateRandomValues(
	n int,
	prefix byte,
) []KeyValue

GenerateRandomValues will generate n random values with the provided prefix.

func (*FdbCluster) GetAllPods

func (fdbCluster *FdbCluster) GetAllPods() *corev1.PodList

GetAllPods returns all pods, even if not running.

func (*FdbCluster) GetAutomationOptions

func (fdbCluster *FdbCluster) GetAutomationOptions() fdbv1beta2.FoundationDBClusterAutomationOptions

GetAutomationOptions return the fdbCluster's AutomationOptions

func (*FdbCluster) GetCachedCluster

func (fdbCluster *FdbCluster) GetCachedCluster() *fdbv1beta2.FoundationDBCluster

GetCachedCluster returns the current cluster definition stored in the fdbCluster struct. This could be outdated and if you need the most recent version of the definition you should use `GetCluster`. This method is useful if you want to inspect fields that are not changing.

func (*FdbCluster) GetCluster

func (fdbCluster *FdbCluster) GetCluster() *fdbv1beta2.FoundationDBCluster

GetCluster returns the FoundationDBCluster of the cluster. This will fetch the latest value from the Kubernetes API.

func (*FdbCluster) GetClusterSpec

func (fdbCluster *FdbCluster) GetClusterSpec() fdbv1beta2.FoundationDBClusterSpec

GetClusterSpec returns the current cluster spec.

func (*FdbCluster) GetClusterVersion

func (fdbCluster *FdbCluster) GetClusterVersion() uint64

GetClusterVersion returns the cluster's version

func (*FdbCluster) GetCommandlineForProcessesPerClass

func (fdbCluster *FdbCluster) GetCommandlineForProcessesPerClass() map[fdbv1beta2.ProcessClass][]string

GetCommandlineForProcessesPerClass fetches the commandline args for all processes except of the specified class.

func (*FdbCluster) GetCommandlineForProcessesPerClassWithStatus added in v2.3.0

func (fdbCluster *FdbCluster) GetCommandlineForProcessesPerClassWithStatus(
	status *fdbv1beta2.FoundationDBStatus,
) map[fdbv1beta2.ProcessClass][]string

GetCommandlineForProcessesPerClassWithStatus fetches the commandline args for all processes except of the specified class.

func (*FdbCluster) GetCoordinators

func (fdbCluster *FdbCluster) GetCoordinators() []corev1.Pod

GetCoordinators returns the Pods of the FoundationDBCluster that are having the coordinator role.

func (*FdbCluster) GetCoordinatorsOnLogProcesses added in v2.11.0

func (fdbCluster *FdbCluster) GetCoordinatorsOnLogProcesses() []corev1.Pod

GetCoordinatorsOnLogProcesses returns the Pods of the FoundationDBCluster that have the coordinator role and have the process class log.

func (*FdbCluster) GetCustomParameters

func (fdbCluster *FdbCluster) GetCustomParameters(
	processClass fdbv1beta2.ProcessClass,
) fdbv1beta2.FoundationDBCustomParameters

GetCustomParameters returns the current custom parameters for the specified process class.

func (*FdbCluster) GetFDBImage

func (fdbCluster *FdbCluster) GetFDBImage() string

GetFDBImage return the FDB image used for the current version, defined in the FoundationDBClusterSpec.

func (*FdbCluster) GetListOfUIDsFromVolumeClaims

func (fdbCluster *FdbCluster) GetListOfUIDsFromVolumeClaims(
	processClass fdbv1beta2.ProcessClass,
) []types.UID

GetListOfUIDsFromVolumeClaims will return of list of UIDs for the current volume claims for the provided processes class.

func (*FdbCluster) GetLogPods

func (fdbCluster *FdbCluster) GetLogPods() *corev1.PodList

GetLogPods returns all Pods of this cluster that have the process class log.

func (*FdbCluster) GetLogServersPerPod

func (fdbCluster *FdbCluster) GetLogServersPerPod() int

GetLogServersPerPod returns the current expected Log server per pod.

func (*FdbCluster) GetNode

func (fdbCluster *FdbCluster) GetNode(name string) *corev1.Node

GetNode return Node with the given name

func (*FdbCluster) GetPod

func (fdbCluster *FdbCluster) GetPod(name string) *corev1.Pod

GetPod returns the Pod with the given name that runs in the same namespace as the FoundationDBCluster.

func (*FdbCluster) GetPodIDs

func (fdbCluster *FdbCluster) GetPodIDs(
	processClass fdbv1beta2.ProcessClass,
) map[fdbv1beta2.ProcessGroupID]fdbv1beta2.None

GetPodIDs returns all the process group IDs for all Pods of this cluster that have the matching process class.

func (*FdbCluster) GetPodRoleMap

func (fdbCluster *FdbCluster) GetPodRoleMap() map[fdbv1beta2.ProcessGroupID][]RoleInfo

GetPodRoleMap returns a map with the process group ID as key and all associated roles.

func (*FdbCluster) GetPodTemplateSpec

func (fdbCluster *FdbCluster) GetPodTemplateSpec(
	processClass fdbv1beta2.ProcessClass,
) *corev1.PodSpec

GetPodTemplateSpec returns the current pod template spec for the specified process class.

func (*FdbCluster) GetPods

func (fdbCluster *FdbCluster) GetPods() *corev1.PodList

GetPods returns only running Pods.

func (*FdbCluster) GetPodsNames

func (fdbCluster *FdbCluster) GetPodsNames() []string

GetPodsNames GetS all Running Pods and return their names.

func (*FdbCluster) GetPodsWithRole

func (fdbCluster *FdbCluster) GetPodsWithRole(role fdbv1beta2.ProcessRole) []corev1.Pod

GetPodsWithRole returns all Pods that have the provided role.

func (*FdbCluster) GetProcessCount

func (fdbCluster *FdbCluster) GetProcessCount(targetRole fdbv1beta2.ProcessRole) int

GetProcessCount returns the number of processes having the specified role

func (*FdbCluster) GetProcessCountByProcessClass

func (fdbCluster *FdbCluster) GetProcessCountByProcessClass(pClass fdbv1beta2.ProcessClass) int

GetProcessCountByProcessClass returns the number of processes based on process class

func (*FdbCluster) GetProcessCounts

func (fdbCluster *FdbCluster) GetProcessCounts() (fdbv1beta2.ProcessCounts, error)

GetProcessCounts returns the process counts of the current FoundationDBCluster.

func (*FdbCluster) GetProcessSettings added in v2.11.0

func (fdbCluster *FdbCluster) GetProcessSettings(
	processClass fdbv1beta2.ProcessClass,
) *fdbv1beta2.ProcessSettings

GetProcessSettings returns the process settings for the process class. If no settings are defined for the specific process class the process settings for the general class will be returned.

func (*FdbCluster) GetRange

func (fdbCluster *FdbCluster) GetRange(
	prefixBytes []byte,
	limit int,
	timeout int,
) (keyValues []KeyValue)

GetRange will return the values of the provided range.

func (*FdbCluster) GetResourceLabels

func (fdbCluster *FdbCluster) GetResourceLabels() map[string]string

GetResourceLabels returns the resource labels for all created resources of the current FoundationDBCluster.

func (*FdbCluster) GetServices

func (fdbCluster *FdbCluster) GetServices() *corev1.ServiceList

GetServices returns the services associated with the current FoundationDBCluster.

func (*FdbCluster) GetSidecarImageForVersion

func (fdbCluster *FdbCluster) GetSidecarImageForVersion(version string) string

GetSidecarImageForVersion return the sidecar image used for the specified version.

func (*FdbCluster) GetStatelessPods

func (fdbCluster *FdbCluster) GetStatelessPods() *corev1.PodList

GetStatelessPods returns all Pods of this cluster that have the process class stateless.

func (*FdbCluster) GetStatus

func (fdbCluster *FdbCluster) GetStatus() *fdbv1beta2.FoundationDBStatus

GetStatus returns fdb status queried from a random operator Pod in this clusters namespace.

func (*FdbCluster) GetStoragePods

func (fdbCluster *FdbCluster) GetStoragePods() *corev1.PodList

GetStoragePods returns all Pods of this cluster that have the process class storage.

func (*FdbCluster) GetStorageServerPerPod

func (fdbCluster *FdbCluster) GetStorageServerPerPod() int

GetStorageServerPerPod returns the current expected storage server per pod.

func (*FdbCluster) GetTransactionPods

func (fdbCluster *FdbCluster) GetTransactionPods() *corev1.PodList

GetTransactionPods returns all Pods of this cluster that have the process class transaction.

func (*FdbCluster) GetVolumeClaimsForProcesses

func (fdbCluster *FdbCluster) GetVolumeClaimsForProcesses(
	processClass fdbv1beta2.ProcessClass,
) *corev1.PersistentVolumeClaimList

GetVolumeClaimsForProcesses returns a list of volume claims belonging to this cluster and the specific process class.

func (*FdbCluster) GetVolumeSize

func (fdbCluster *FdbCluster) GetVolumeSize(
	processClass fdbv1beta2.ProcessClass,
) resource.Quantity

GetVolumeSize returns the volume size for the specified process class.

func (*FdbCluster) HasHeadlessService

func (fdbCluster *FdbCluster) HasHeadlessService() bool

HasHeadlessService returns true if the cluster has a headless service.

func (*FdbCluster) HasTLSEnabled

func (fdbCluster *FdbCluster) HasTLSEnabled() bool

HasTLSEnabled returns true if the cluster is running with TLS enabled.

func (*FdbCluster) InvariantClusterStatusAvailable

func (fdbCluster *FdbCluster) InvariantClusterStatusAvailable() error

InvariantClusterStatusAvailable checks if the cluster is available the whole test with the default unavailable threshold.

func (*FdbCluster) InvariantClusterStatusAvailableWithThreshold

func (fdbCluster *FdbCluster) InvariantClusterStatusAvailableWithThreshold(
	availabilityThreshold time.Duration,
) error

InvariantClusterStatusAvailableWithThreshold checks if the database is at a maximum unavailable for the provided threshold.

func (*FdbCluster) IsAvailable

func (fdbCluster *FdbCluster) IsAvailable() bool

IsAvailable returns true if the database is available.

func (*FdbCluster) Name

func (fdbCluster *FdbCluster) Name() string

Name returns the name for the FoundationDBCluster.

func (*FdbCluster) Namespace

func (fdbCluster *FdbCluster) Namespace() string

Namespace returns the namespace for the FoundationDBCluster.

func (*FdbCluster) ReplacePod

func (fdbCluster *FdbCluster) ReplacePod(pod corev1.Pod, waitForReconcile bool)

ReplacePod replaces the provided Pod if it's part of the FoundationDBCluster.

func (*FdbCluster) ReplacePods

func (fdbCluster *FdbCluster) ReplacePods(pods []corev1.Pod, waitForReconcile bool)

ReplacePods replaces the provided Pods in the current FoundationDBCluster.

func (*FdbCluster) RunFdbCliCommandInOperator

func (fdbCluster *FdbCluster) RunFdbCliCommandInOperator(
	command string,
	printOutput bool,
	timeout int,
) (string, string)

RunFdbCliCommandInOperator allows to run a command with fdbcli in the operator Pod.

func (*FdbCluster) RunFdbCliCommandInOperatorWithoutRetry

func (fdbCluster *FdbCluster) RunFdbCliCommandInOperatorWithoutRetry(
	command string,
	printOutput bool,
	timeout int,
) (string, string, error)

RunFdbCliCommandInOperatorWithoutRetry allows to run a command with fdbcli in the operator Pod without doing any retries.

func (*FdbCluster) SetAutoReplacements

func (fdbCluster *FdbCluster) SetAutoReplacements(enabled bool, detectionTime time.Duration) error

SetAutoReplacements will enabled or disable the auto replacement feature and allows to specify the detection time for a replacement.

func (*FdbCluster) SetAutoReplacementsWithWait

func (fdbCluster *FdbCluster) SetAutoReplacementsWithWait(
	enabled bool,
	detectionTime time.Duration,
	wait bool,
) error

SetAutoReplacementsWithWait set the auto replacement setting on the operator and only waits for the cluster to reconcile if wait is set to true.

func (*FdbCluster) SetBuggifyBlockRemoval

func (fdbCluster *FdbCluster) SetBuggifyBlockRemoval(blockRemovals []fdbv1beta2.ProcessGroupID)

SetBuggifyBlockRemoval will set the provided list of process group IDs to be blocked for removal.

func (*FdbCluster) SetClusterTaintConfig

func (fdbCluster *FdbCluster) SetClusterTaintConfig(
	taintOption []fdbv1beta2.TaintReplacementOption,
	taintReplacementTimeSeconds *int,
)

SetClusterTaintConfig set fdbCluster's TaintReplacementOptions

func (*FdbCluster) SetCrashLoopContainers

func (fdbCluster *FdbCluster) SetCrashLoopContainers(
	crashLoopContainers []fdbv1beta2.CrashLoopContainerObject,
	waitForReconcile bool,
)

SetCrashLoopContainers sets the crashLoopContainers of the FoundationDBCluster spec.

func (*FdbCluster) SetCustomParameters

func (fdbCluster *FdbCluster) SetCustomParameters(
	customParameters map[fdbv1beta2.ProcessClass]fdbv1beta2.FoundationDBCustomParameters,
	waitForReconcile bool,
) error

SetCustomParameters allows to set the custom parameters of the provided process class.

func (*FdbCluster) SetDatabaseConfiguration

func (fdbCluster *FdbCluster) SetDatabaseConfiguration(
	config fdbv1beta2.DatabaseConfiguration,
	waitForReconcile bool,
) error

SetDatabaseConfiguration sets the provided DatabaseConfiguration for the FoundationDBCluster.

func (*FdbCluster) SetFinalizerForPvc

func (fdbCluster *FdbCluster) SetFinalizerForPvc(
	finalizers []string,
	pvc corev1.PersistentVolumeClaim,
) error

SetFinalizerForPvc allows to set the finalizers for the provided PVC.

func (*FdbCluster) SetIgnoreDuringRestart

func (fdbCluster *FdbCluster) SetIgnoreDuringRestart(processes []fdbv1beta2.ProcessGroupID)

SetIgnoreDuringRestart sets the buggify option for the operator.

func (*FdbCluster) SetIgnoreMissingProcessesSeconds

func (fdbCluster *FdbCluster) SetIgnoreMissingProcessesSeconds(duration time.Duration)

SetIgnoreMissingProcessesSeconds sets the IgnoreMissingProcessesSeconds setting.

func (*FdbCluster) SetKillProcesses

func (fdbCluster *FdbCluster) SetKillProcesses(allowKill bool, wait bool)

SetKillProcesses sets the automation option to allow the operator to restart processes or not.

func (*FdbCluster) SetLogServersPerPod

func (fdbCluster *FdbCluster) SetLogServersPerPod(
	serverPerPod int,
	waitForReconcile bool,
) error

SetLogServersPerPod set the LogServersPerPod field in the cluster spec.

func (*FdbCluster) SetPodAsUnschedulable

func (fdbCluster *FdbCluster) SetPodAsUnschedulable(pod corev1.Pod)

SetPodAsUnschedulable sets the provided Pod on the NoSchedule list of the current FoundationDBCluster. This will make sure that the Pod is stuck in Pending.

func (*FdbCluster) SetPodTemplateSpec

func (fdbCluster *FdbCluster) SetPodTemplateSpec(
	processClass fdbv1beta2.ProcessClass,
	podTemplateSpec *corev1.PodSpec,
	waitForReconcile bool,
) error

SetPodTemplateSpec allows to set the pod template spec of the provided process class.

func (*FdbCluster) SetProcessGroupPrefix

func (fdbCluster *FdbCluster) SetProcessGroupPrefix(prefix string) error

SetProcessGroupPrefix will set the process group prefix setting.

func (*FdbCluster) SetProcessGroupsAsUnschedulable

func (fdbCluster *FdbCluster) SetProcessGroupsAsUnschedulable(
	processGroups []fdbv1beta2.ProcessGroupID,
)

SetProcessGroupsAsUnschedulable sets the provided process groups on the NoSchedule list of the current FoundationDBCluster. This will make sure that the Pod is stuck in Pending.

func (*FdbCluster) SetPublicIPSource

func (fdbCluster *FdbCluster) SetPublicIPSource(publicIPSource fdbv1beta2.PublicIPSource) error

SetPublicIPSource will set the public IP source of the current FoundationDBCluster to the provided IP source.

func (*FdbCluster) SetSkipReconciliation

func (fdbCluster *FdbCluster) SetSkipReconciliation(skip bool)

SetSkipReconciliation will set the skip setting for the current FoundationDBCluster. This setting will make sure that the operator is not taking any actions on this cluster.

func (*FdbCluster) SetStorageServerPerPod

func (fdbCluster *FdbCluster) SetStorageServerPerPod(serverPerPod int) error

SetStorageServerPerPod set the SetStorageServerPerPod field in the cluster spec.

func (*FdbCluster) SetTLS

func (fdbCluster *FdbCluster) SetTLS(
	enableMainContainerTLS bool,
	enableSidecarContainerTLS bool,
) error

SetTLS will enabled or disable the TLS setting in the current FoundationDBCluster.

func (*FdbCluster) SetTransactionServerPerPod

func (fdbCluster *FdbCluster) SetTransactionServerPerPod(
	serverPerPod int,
	processCount int,
	waitForReconcile bool,
) error

SetTransactionServerPerPod set the LogServersPerPod field in the cluster spec and changes log Pods to transaction Pods.

func (*FdbCluster) SetUseDNSInClusterFile

func (fdbCluster *FdbCluster) SetUseDNSInClusterFile(useDNSInClusterFile bool) error

SetUseDNSInClusterFile enables DNS in the cluster file. Enable this setting to use DNS instead of IP addresses in the connection string.

func (*FdbCluster) SetVolumeSize

func (fdbCluster *FdbCluster) SetVolumeSize(
	processClass fdbv1beta2.ProcessClass,
	size resource.Quantity,
) error

SetVolumeSize updates the volume size for the specified process class.

func (*FdbCluster) StatusInvariantChecker

func (fdbCluster *FdbCluster) StatusInvariantChecker(
	name string,
	threshold time.Duration,
	f func(status *fdbv1beta2.FoundationDBStatus) error,
) error

StatusInvariantChecker provides a way to check an invariant for the cluster status. nolint:nilerr

func (*FdbCluster) Update

func (fdbCluster *FdbCluster) Update() error

Update asynchronously updates this FDB cluster definition.

func (*FdbCluster) UpdateAnnotationsAndLabels

func (fdbCluster *FdbCluster) UpdateAnnotationsAndLabels(
	annotations map[string]string,
	labels map[string]string,
)

UpdateAnnotationsAndLabels will update the annotations and labels to the provided values. Example usage:

annotations := fdbCluster.GetCachedCluster().GetAnnotations()
if annotations == nil {
   annotations = map[string]string{}
}

annotations["foundationdb.org/testing"] = "awesome"
labels := fdbCluster.GetCachedCluster().GetLabels()
fdbCluster.UpdateAnnotationsAndLabels(annotations, labels)

func (*FdbCluster) UpdateClusterSpec

func (fdbCluster *FdbCluster) UpdateClusterSpec()

UpdateClusterSpec ensures that the FoundationDBCluster will be updated in Kubernetes. This method has a retry mechanism implemented and ensures that the provided (local) Spec matches the Spec in Kubernetes.

func (*FdbCluster) UpdateClusterSpecWithSpec

func (fdbCluster *FdbCluster) UpdateClusterSpecWithSpec(
	desiredSpec *fdbv1beta2.FoundationDBClusterSpec,
)

UpdateClusterSpecWithSpec ensures that the FoundationDBCluster will be updated in Kubernetes. This method has a retry mechanism implemented and ensures that the provided (local) Spec matches the Spec in Kubernetes. You must make sure that you call fdbCluster.GetCluster() before updating the spec, to make sure you are not overwriting the current state with an outdated state. An example on how to update a field with this method:

spec := fdbCluster.GetCluster().Spec.DeepCopy() // Fetch the current Spec.
spec.Version = "7.1.27" // Make your changes.

fdbCluster.UpdateClusterSpecWithSpec(spec) // Update the spec.

func (*FdbCluster) UpdateClusterStatus

func (fdbCluster *FdbCluster) UpdateClusterStatus()

UpdateClusterStatus updates the FoundationDBCluster status. This method allows to modify the status sub-resource of the FoundationDBCluster resource.

func (*FdbCluster) UpdateClusterStatusWithStatus

func (fdbCluster *FdbCluster) UpdateClusterStatusWithStatus(
	desiredStatus *fdbv1beta2.FoundationDBClusterStatus,
)

UpdateClusterStatusWithStatus ensures that the FoundationDBCluster status will be updated in Kubernetes. This method has a retry mechanism implemented and ensures that the provided (local) Status matches the status in Kubernetes. You must make sure that you call fdbCluster.GetCluster() before updating the status, to make sure you are not overwriting the current state with an outdated state. An example on how to update a field with this method:

	// Make sure the operator doesn't modify the status.
	fdbCluster.SetSkipReconciliation(true)
	status := fdbCluster.GetCluster().Status.DeepCopy() // Fetch the current status.
    // Create a new process group.
	processGroupID = cluster.GetNextRandomProcessGroupID(fdbv1beta2.ProcessClassStateless, processGroupIDs[fdbv1beta2.ProcessClassStateless])
	status.ProcessGroups = append(status.ProcessGroups, fdbv1beta2.NewProcessGroupStatus(processGroupID, fdbv1beta2.ProcessClassStateless, nil))
	fdbCluster.UpdateClusterStatusWithStatus(status)

	// Make sure the operator picks up the work again
	fdbCluster.SetSkipReconciliation(false)

func (*FdbCluster) UpdateConnectionString

func (fdbCluster *FdbCluster) UpdateConnectionString(connectionString string)

UpdateConnectionString will update the connection string in the ConfigMap and the SeedConnectionString of the custer.

func (*FdbCluster) UpdateContainerImage

func (fdbCluster *FdbCluster) UpdateContainerImage(
	pod *corev1.Pod,
	containerName string,
	image string,
)

UpdateContainerImage sets the image for the provided Pod for the provided container.

func (*FdbCluster) UpdateCoordinatorSelection

func (fdbCluster *FdbCluster) UpdateCoordinatorSelection(
	setting []fdbv1beta2.CoordinatorSelectionSetting,
) error

UpdateCoordinatorSelection allows to update the coordinator selection for the current FoundationDBCluster.

func (*FdbCluster) UpdateLogProcessCount

func (fdbCluster *FdbCluster) UpdateLogProcessCount(newLogProcessCount int) error

UpdateLogProcessCount updates the log process count in the cluster spec.

func (*FdbCluster) UpdateNode

func (fdbCluster *FdbCluster) UpdateNode(node *corev1.Node)

UpdateNode update node definition

func (*FdbCluster) UpdateStorageClass

func (fdbCluster *FdbCluster) UpdateStorageClass(
	storageClass string,
	processClass fdbv1beta2.ProcessClass,
) error

UpdateStorageClass this will set the StorageClass for the provided process class of the current FoundationDBCluster.

func (*FdbCluster) UpgradeAndVerify

func (fdbCluster *FdbCluster) UpgradeAndVerify(version string)

UpgradeAndVerify will upgrade the cluster to the new version and perform a check at the end that the running version matched the new version.

func (*FdbCluster) UpgradeCluster

func (fdbCluster *FdbCluster) UpgradeCluster(version string, waitForReconciliation bool) error

UpgradeCluster will upgrade the cluster to the specified version. If waitForReconciliation is set to true this method will block until the cluster is fully upgraded and all Pods are running the new image version.

func (*FdbCluster) ValidateProcessesCount

func (fdbCluster *FdbCluster) ValidateProcessesCount(
	processClass fdbv1beta2.ProcessClass,
	countProcessGroups int,
	countServer int,
)

ValidateProcessesCount will make sure that the cluster has the expected count of ProcessGroups and processes running with the provided ProcessClass.

func (*FdbCluster) VerifyVersion

func (fdbCluster *FdbCluster) VerifyVersion(version string)

VerifyVersion Checks if cluster is running at the expectedVersion. This is done by checking the status of the FoundationDBCluster status. Before that we checked the cluster status json by checking the reported version of all processes. This approach only worked for version compatible upgrades, since incompatible processes won't be part of the cluster anyway. To simplify the check we verify the reported running version from the operator.

func (*FdbCluster) WaitForPodRemoval

func (fdbCluster *FdbCluster) WaitForPodRemoval(pod *corev1.Pod)

WaitForPodRemoval will wait until the specified Pod is deleted.

func (*FdbCluster) WaitForReconciliation

func (fdbCluster *FdbCluster) WaitForReconciliation(options ...func(*ReconciliationOptions)) error

WaitForReconciliation waits for the cluster to be reconciled based on the provided options.

func (*FdbCluster) WaitUntilAvailable

func (fdbCluster *FdbCluster) WaitUntilAvailable()

WaitUntilAvailable waits until the cluster is available.

func (*FdbCluster) WaitUntilExists

func (fdbCluster *FdbCluster) WaitUntilExists()

WaitUntilExists synchronously waits until the cluster exists. Usually called after Create().

func (*FdbCluster) WaitUntilWithForceReconcile

func (fdbCluster *FdbCluster) WaitUntilWithForceReconcile(
	pollTimeInSeconds int,
	timeOutInSeconds int,
	checkMethod func(cluster *fdbv1beta2.FoundationDBCluster) bool,
) error

WaitUntilWithForceReconcile will wait either until the checkMethod returns true or until the timeout is hit.

func (*FdbCluster) WriteKeyValue

func (fdbCluster *FdbCluster) WriteKeyValue(
	keyValue KeyValue,
	timeout int,
)

WriteKeyValue writes a single key value pair into FDB.

func (*FdbCluster) WriteKeyValues

func (fdbCluster *FdbCluster) WriteKeyValues(keyValues []KeyValue)

WriteKeyValues writes multiples key values into FDB.

func (*FdbCluster) WriteKeyValuesWithTimeout

func (fdbCluster *FdbCluster) WriteKeyValuesWithTimeout(keyValues []KeyValue, timeout int)

WriteKeyValuesWithTimeout writes multiples key values into FDB with the specified timeout.

type HaFdbCluster

type HaFdbCluster struct {
	// contains filtered or unexported fields
}

HaFdbCluster is a struct around handling HA FoundationDBClusters.

func (*HaFdbCluster) Delete

func (haFDBCluster *HaFdbCluster) Delete()

Delete removes all Clusters associated FoundationDBClusters.

func (*HaFdbCluster) DumpState

func (haFDBCluster *HaFdbCluster) DumpState()

DumpState logs the current state of all FoundationDBClusters.

func (*HaFdbCluster) GetAllClusters

func (haFDBCluster *HaFdbCluster) GetAllClusters() []*FdbCluster

GetAllClusters Returns all FoundationDBClusters that span this HA cluster.

func (*HaFdbCluster) GetCluster

func (haFDBCluster *HaFdbCluster) GetCluster(suffix string) *FdbCluster

GetCluster returns the FoundationDBCluster with the provided suffix.

func (*HaFdbCluster) GetNamespaceSelector

func (haFDBCluster *HaFdbCluster) GetNamespaceSelector() chaosmesh.PodSelectorSpec

GetNamespaceSelector returns the chaos mesh selector for this FDB HA cluster and all associated Pods.

func (*HaFdbCluster) GetNamespaces

func (haFDBCluster *HaFdbCluster) GetNamespaces() []string

GetNamespaces returns the namespaces where all FoundationDBClusters are running in.

func (*HaFdbCluster) GetPrimary

func (haFDBCluster *HaFdbCluster) GetPrimary() *FdbCluster

GetPrimary returns the FoundationDBCluster matching the suffix from PrimaryID.

func (*HaFdbCluster) GetPrimarySatellite

func (haFDBCluster *HaFdbCluster) GetPrimarySatellite() *FdbCluster

GetPrimarySatellite returns the FoundationDBCluster matching the suffix from PrimarySatelliteID. This function is only valid for HA clusters using 2 satellites.

func (*HaFdbCluster) GetRemote

func (haFDBCluster *HaFdbCluster) GetRemote() *FdbCluster

GetRemote returns the FoundationDBCluster matching the suffix from RemoteID.

func (*HaFdbCluster) GetRemoteSatellite

func (haFDBCluster *HaFdbCluster) GetRemoteSatellite() *FdbCluster

GetRemoteSatellite returns the FoundationDBCluster matching the suffix from RemoteSatelliteID. This function is only valid for HA clusters using 2 satellites.

func (*HaFdbCluster) GetSatellite

func (haFDBCluster *HaFdbCluster) GetSatellite() *FdbCluster

GetSatellite this is only for threeZoneDoubleSat config, where `satellite` is primary satellite for both regions.

func (*HaFdbCluster) SetCustomParameters

func (haFDBCluster *HaFdbCluster) SetCustomParameters(
	customParameters map[fdbv1beta2.ProcessClass]fdbv1beta2.FoundationDBCustomParameters,
	waitForReconcile bool,
) error

SetCustomParameters sets the custom parameters for the provided process class.

func (*HaFdbCluster) SetDatabaseConfiguration

func (haFDBCluster *HaFdbCluster) SetDatabaseConfiguration(
	config fdbv1beta2.DatabaseConfiguration,
)

SetDatabaseConfiguration sets the new DatabaseConfiguration, without waiting for reconciliation.

func (*HaFdbCluster) UpgradeCluster

func (haFDBCluster *HaFdbCluster) UpgradeCluster(version string, waitForReconciliation bool) error

UpgradeCluster upgrades the HA FoundationDBCluster to the specified version.

func (*HaFdbCluster) UpgradeClusterWithTimeout

func (haFDBCluster *HaFdbCluster) UpgradeClusterWithTimeout(
	version string,
	waitForReconciliation bool,
	timeout int,
) error

UpgradeClusterWithTimeout upgrades the HA FoundationDBCluster to the specified version with the provided timeout.

func (*HaFdbCluster) VerifyVersion

func (haFDBCluster *HaFdbCluster) VerifyVersion(version string)

VerifyVersion Checks if cluster is running at the expectedVersion. This is done by checking the status of the FoundationDBCluster status. Before that we checked the cluster status json by checking the reported version of all processes. This approach only worked for version compatible upgrades, since incompatible processes won't be part of the cluster anyway. To simplify the check we verify the reported running version from the operator.

func (*HaFdbCluster) WaitForReconciliation

func (haFDBCluster *HaFdbCluster) WaitForReconciliation(
	options ...func(*ReconciliationOptions),
) error

WaitForReconciliation waits for all associated FoundationDBClusters to be reconciled

type HaMode

type HaMode int

HaMode represents the targeted HA mode for the created cluster.

const (
	// HaModeNone refers to a single namespace without HA.
	HaModeNone HaMode = iota
	// HaFourZoneSingleSat refers to a cluster running in 4 namespaces and the DB config has only one satellite.
	HaFourZoneSingleSat
	// HaFourZoneDoubleSat refers to a cluster running in 4 namespaces and the DB config has two satellites.
	HaFourZoneDoubleSat
	// HaThreeZoneDoubleSat refers to a cluster running in 3 namespaces and the DB config has two satellites (triplet configuration).
	HaThreeZoneDoubleSat
	// HaFourZoneDoubleSatRF4 same as HaFourZoneDoubleSat but with the RedundancyModeDouble.
	HaFourZoneDoubleSatRF4
)

type KeyValue

type KeyValue struct {
	Key   []byte
	Value []byte
}

KeyValue represents a key and value that can be stored in FDB.

func (*KeyValue) GetKey

func (keyValue *KeyValue) GetKey() string

GetKey returns all the printable characters of the key.

func (*KeyValue) GetValue

func (keyValue *KeyValue) GetValue() string

GetValue returns all printable characters of the value.

type ReconciliationOption

type ReconciliationOption func(*ReconciliationOptions)

ReconciliationOption defines the reconciliation option.

func CreationTrackerLoggerOption

func CreationTrackerLoggerOption(creationTrackerLogger CreationTrackerLogger) ReconciliationOption

CreationTrackerLoggerOption sets the creation tracker that will printout the time for the different creation stages.

func MinimumGenerationOption

func MinimumGenerationOption(minimumGeneration int64) ReconciliationOption

MinimumGenerationOption specifies the minimum generation to be reconciled too.

func PollTimeInSecondsOption

func PollTimeInSecondsOption(pollTimeInSeconds int) ReconciliationOption

PollTimeInSecondsOption defines the polling time for the reconciliation. If not set the default is 10 seconds

func SoftReconcileOption

func SoftReconcileOption(enable bool) ReconciliationOption

SoftReconcileOption specifies that the reconciliation is completed as soon as the Status.Generations.Reconciled reaches the expected generation. Independent of other possible generations, e.g. it could be still the case that the operator has to delete additional Process Groups.

func TimeOutInSecondsOption

func TimeOutInSecondsOption(timeOutInSeconds int) ReconciliationOption

TimeOutInSecondsOption defines the timeout for the reconciliation. If not set the default is 4800 seconds

type ReconciliationOptions

type ReconciliationOptions struct {
	// contains filtered or unexported fields
}

ReconciliationOptions defines the different reconciliation options.

func MakeReconciliationOptionsStruct

func MakeReconciliationOptionsStruct(
	options ...func(*ReconciliationOptions),
) *ReconciliationOptions

MakeReconciliationOptionsStruct applies the provided options to the ReconciliationOptions.

type RoleInfo

type RoleInfo struct {
	Role string
	ID   string
}

RoleInfo stores information for one particular worker role.

type ShutdownHooks

type ShutdownHooks struct {
	// contains filtered or unexported fields
}

ShutdownHooks allows fixtures to register a handler to be run at exit. Handlers run regardless of any preceding errors, and run in reverse order of registration.

func (*ShutdownHooks) Defer

func (shutdown *ShutdownHooks) Defer(f func() error)

Defer execution of func until after the test completes.

func (*ShutdownHooks) InvokeShutdownHandlers

func (shutdown *ShutdownHooks) InvokeShutdownHandlers()

InvokeShutdownHandlers in reverse order of registration.

type SidecarConfig

type SidecarConfig struct {
	// Image the image reference with the tag.
	Image string
	// FDBVersion represents the FoundationDB version for this config.
	FDBVersion fdbv1beta2.Version
	// ImagePullPolicy represents the pull policy for the sidecar.
	ImagePullPolicy corev1.PullPolicy
	// CopyAsPrimary if true the version should be copied as primary library.
	CopyAsPrimary bool
}

SidecarConfig represents the configuration for a sidecar. This can be used for templating.

type UpgradeTestConfiguration

type UpgradeTestConfiguration struct {
	// InitialVersion represents the version before the upgrade.
	InitialVersion fdbv1beta2.Version
	// TargetVersion represents the version to upgrade to.
	TargetVersion fdbv1beta2.Version
}

UpgradeTestConfiguration represents the configuration for an upgrade test. This includes the initial FoundationDB version and the target FoundationDB version to upgrade or downgrade the cluster to.

Jump to

Keyboard shortcuts

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