Documentation ¶
Index ¶
- func AllowAlterRfDuringRangeMovement(dcConfig *DatacenterConfig)
- func ApplySystemReplication(dcConfig *DatacenterConfig, replication SystemReplication)
- func CompareReplications(actualReplication map[string]string, desiredReplication map[string]int) bool
- func ComputeReplication(maxReplicationPerDc int, datacenters ...api.CassandraDatacenterTemplate) map[string]int
- func CreateJsonConfig(config *api.CassandraConfig, cassandraVersion string) ([]byte, error)
- func DatacenterReady(dc *cassdcapi.CassandraDatacenter) bool
- func DatacenterStopped(dc *cassdcapi.CassandraDatacenter) bool
- func DatacenterStopping(dc *cassdcapi.CassandraDatacenter) bool
- func DatacenterUpdatedAfter(t time.Time, dc *cassdcapi.CassandraDatacenter) bool
- func IsCassandra3(version string) bool
- func NewDatacenter(klusterKey types.NamespacedName, template *DatacenterConfig) (*cassdcapi.CassandraDatacenter, error)
- func UpdateCassandraContainer(p *corev1.PodTemplateSpec, f func(c *corev1.Container))
- type DCConfigIncomplete
- type DatacenterConfig
- type ManagementApiFacade
- type ManagementApiFactory
- type SystemReplication
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllowAlterRfDuringRangeMovement ¶
func AllowAlterRfDuringRangeMovement(dcConfig *DatacenterConfig)
func ApplySystemReplication ¶
func ApplySystemReplication(dcConfig *DatacenterConfig, replication SystemReplication)
ApplySystemReplication adds system properties to configure replication of system keyspaces.
func CompareReplications ¶
func ComputeReplication ¶
func ComputeReplication(maxReplicationPerDc int, datacenters ...api.CassandraDatacenterTemplate) map[string]int
func CreateJsonConfig ¶
func CreateJsonConfig(config *api.CassandraConfig, cassandraVersion string) ([]byte, error)
CreateJsonConfig parses dcConfig into a raw JSON base64-encoded string. If config is nil then nil, nil is returned
func DatacenterReady ¶
func DatacenterReady(dc *cassdcapi.CassandraDatacenter) bool
func DatacenterStopped ¶
func DatacenterStopped(dc *cassdcapi.CassandraDatacenter) bool
func DatacenterStopping ¶
func DatacenterStopping(dc *cassdcapi.CassandraDatacenter) bool
func DatacenterUpdatedAfter ¶
func DatacenterUpdatedAfter(t time.Time, dc *cassdcapi.CassandraDatacenter) bool
func IsCassandra3 ¶
func NewDatacenter ¶
func NewDatacenter(klusterKey types.NamespacedName, template *DatacenterConfig) (*cassdcapi.CassandraDatacenter, error)
func UpdateCassandraContainer ¶
func UpdateCassandraContainer(p *corev1.PodTemplateSpec, f func(c *corev1.Container))
UpdateCassandraContainer finds the cassandra container, passes it to f, and then adds it back to the PodTemplateSpec. The Container object is created if necessary before calling f. Only the Name field is initialized.
Types ¶
type DCConfigIncomplete ¶
type DCConfigIncomplete struct {
// contains filtered or unexported fields
}
func (DCConfigIncomplete) Error ¶
func (detail DCConfigIncomplete) Error() string
type DatacenterConfig ¶
type DatacenterConfig struct { Meta api.EmbeddedObjectMeta Cluster string SuperUserSecretName string ServerImage string ServerVersion string Size int32 Resources *corev1.ResourceRequirements SystemReplication SystemReplication StorageConfig *cassdcapi.StorageConfig Racks []cassdcapi.Rack CassandraConfig *api.CassandraConfig AdditionalSeeds []string Networking *cassdcapi.NetworkingConfig Users []cassdcapi.CassandraUser PodTemplateSpec *corev1.PodTemplateSpec MgmtAPIHeap *resource.Quantity }
DatacenterConfig provides the configuration to be applied to the CassandraDatacenter. A DatacenterConfig is essentially a coalescence of an api.CassandraClusterTemplate and an api.CassandraDatacenterTemplate. There are global, cluster-wide settings that need to be specified at the DC-level. Using a DatacenterConfig allows to keep the api types clean such that cluster-level settings won't leak into the dc-level settings.
func Coalesce ¶
func Coalesce(clusterTemplate *api.CassandraClusterTemplate, dcTemplate *api.CassandraDatacenterTemplate) *DatacenterConfig
Coalesce combines the cluster and dc templates with override semantics. If a property is defined in both templates, the dc-level property takes precedence.
type ManagementApiFacade ¶
type ManagementApiFacade interface { // CreateKeyspaceIfNotExists calls the management API "POST /ops/keyspace/create" endpoint to create a new keyspace // if it does not exist yet. Calling this method on an existing keyspace is a no-op. CreateKeyspaceIfNotExists( keyspaceName string, replication map[string]int, ) error ListKeyspaces( keyspaceName string, ) ([]string, error) AlterKeyspace( keyspaceName string, replicationSettings map[string]int) error // GetKeyspaceReplication calls the management API "GET /ops/keyspace/replication" endpoint to retrieve the given // keyspace replication settings. GetKeyspaceReplication(keyspaceName string) (map[string]string, error) // ListTables calls the management API "GET /ops/tables" endpoint to retrieve the table names in the given keyspace. ListTables(keyspaceName string) ([]string, error) // CreateTable calls the management API "POST /ops/tables/create" endpoint to create a new table in the given // keyspace. CreateTable(definition *httphelper.TableDefinition) error // EnsureKeyspaceReplication checks if the given keyspace has the given replication, and if it does not, // alters it to match the desired replication. EnsureKeyspaceReplication(keyspaceName string, replication map[string]int) error }
ManagementApiFacade is a component mirroring methods available on httphelper.NodeMgmtClient.
type ManagementApiFactory ¶
type ManagementApiFactory interface { // NewManagementApiFacade returns a new ManagementApiFacade that will connect to the Management API of nodes in // the given datacenter. The k8sClient is used to fetch pods in that datacenter. NewManagementApiFacade( ctx context.Context, dc *cassdcapi.CassandraDatacenter, k8sClient client.Client, logger logr.Logger, ) (ManagementApiFacade, error) }
ManagementApiFactory creates request-scoped instances of ManagementApiFacade. This component exists mostly to allow tests to provide mocks for the Management API client.
func NewManagementApiFactory ¶
func NewManagementApiFactory() ManagementApiFactory
type SystemReplication ¶
SystemReplication represents the replication factor of the system_auth, system_traces, and system_distributed keyspsces. This is applied to each datacenter. The replication should be configured per DC, but that is currently not supported. See https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/124 and https://github.com/k8ssandra/k8ssandra-operator/issues/91 for details. Note that when we can configure the replication per DC, this can be changed to a map[string]int.
func ComputeSystemReplication ¶
func ComputeSystemReplication(kluster *api.K8ssandraCluster) SystemReplication