Skip to content

Commit

Permalink
Add support for 7.x.x DSE and 5.x.x Cassandra versions (#543)
Browse files Browse the repository at this point in the history
  • Loading branch information
adejanovski authored Jun 23, 2023
1 parent 0d97695 commit cd5709a
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Changelog for Cass Operator, new PRs should update the `main / unreleased` secti

## unreleased

* [CHANGE] [#542](https://github.com/k8ssandra/cass-operator/issues/542) Support 7.x.x version numbers for DSE and 5.x.x for Cassandra
* [CHANGE] [#531](https://github.com/k8ssandra/cass-operator/issues/531) Update to Kubebuilder gov4-alpha layout structure
* [ENHANCEMENT] [#523](https://github.com/k8ssandra/cass-operator/issues/516) Spec.ServiceAccountName is introduced as replacements to Spec.ServiceAccount (to account for naming changes in Kubernetes itself), also PodTemplateSpec.Spec.ServiceAccountName is supported. Precendence order is: Spec.ServiceAccountName > Spec.ServiceAccount > PodTemplateSpec.
* [CHANGE] [#516](https://github.com/k8ssandra/cass-operator/issues/516) Modify sidecar default CPU and memory limits.
Expand Down
2 changes: 1 addition & 1 deletion apis/cassandra/v1beta1/cassandradatacenter_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ type CassandraDatacenterSpec struct {

// Version string for config builder,
// used to generate Cassandra server configuration
// +kubebuilder:validation:Pattern=(6\.8\.\d+)|(3\.11\.\d+)|(4\.\d+\.\d+)
// +kubebuilder:validation:Pattern=(6\.8\.\d+)|(3\.11\.\d+)|(4\.\d+\.\d+)|(5\.\d+\.\d+)|(7\.\d+\.\d+)
ServerVersion string `json:"serverVersion"`

// Cassandra server image name. Use of ImageConfig to match ServerVersion is recommended instead of this value.
Expand Down
52 changes: 52 additions & 0 deletions apis/cassandra/v1beta1/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ func Test_ValidateSingleDatacenter(t *testing.T) {
},
errString: "",
},
{
name: "Dse 7.0.0 Valid",
dc: &CassandraDatacenter{
ObjectMeta: metav1.ObjectMeta{
Name: "exampleDC",
},
Spec: CassandraDatacenterSpec{
ServerType: "dse",
ServerVersion: "7.0.0",
},
},
errString: "",
},
{
name: "Dse Invalid",
dc: &CassandraDatacenter{
Expand All @@ -60,6 +73,19 @@ func Test_ValidateSingleDatacenter(t *testing.T) {
},
errString: "use unsupported DSE version '4.8.0'",
},
{
name: "Dse 5 Invalid",
dc: &CassandraDatacenter{
ObjectMeta: metav1.ObjectMeta{
Name: "exampleDC",
},
Spec: CassandraDatacenterSpec{
ServerType: "dse",
ServerVersion: "5.0.0",
},
},
errString: "use unsupported DSE version '5.0.0'",
},
{
name: "Cassandra valid",
dc: &CassandraDatacenter{
Expand Down Expand Up @@ -99,6 +125,19 @@ func Test_ValidateSingleDatacenter(t *testing.T) {
},
errString: "",
},
{
name: "Cassandra 5.0.0 must be valid",
dc: &CassandraDatacenter{
ObjectMeta: metav1.ObjectMeta{
Name: "exampleDC",
},
Spec: CassandraDatacenterSpec{
ServerType: "cassandra",
ServerVersion: "5.0.0",
},
},
errString: "",
},
{
name: "Cassandra Invalid",
dc: &CassandraDatacenter{
Expand All @@ -112,6 +151,19 @@ func Test_ValidateSingleDatacenter(t *testing.T) {
},
errString: "use unsupported Cassandra version '6.8.0'",
},
{
name: "Cassandra Invalid too",
dc: &CassandraDatacenter{
ObjectMeta: metav1.ObjectMeta{
Name: "exampleDC",
},
Spec: CassandraDatacenterSpec{
ServerType: "cassandra",
ServerVersion: "7.0.0",
},
},
errString: "use unsupported Cassandra version '7.0.0'",
},
{
name: "Dse Workloads in Cassandra Invalid",
dc: &CassandraDatacenter{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8750,7 +8750,7 @@ spec:
serverVersion:
description: Version string for config builder, used to generate Cassandra
server configuration
pattern: (6\.8\.\d+)|(3\.11\.\d+)|(4\.\d+\.\d+)
pattern: (6\.8\.\d+)|(3\.11\.\d+)|(4\.\d+\.\d+)|(5\.\d+\.\d+)|(7\.\d+\.\d+)
type: string
serviceAccount:
description: Deprecated DeprecatedServiceAccount Use ServiceAccountName
Expand Down
4 changes: 2 additions & 2 deletions pkg/images/images.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ var (
)

const (
ValidDseVersionRegexp = "6\\.8\\.\\d+"
ValidOssVersionRegexp = "(3\\.11\\.\\d+)|(4\\.\\d+\\.\\d+)"
ValidDseVersionRegexp = "(6\\.8\\.\\d+)|(7\\.\\d+\\.\\d+)"
ValidOssVersionRegexp = "(3\\.11\\.\\d+)|(4\\.\\d+\\.\\d+)|(5\\.\\d+\\.\\d+)"
DefaultCassandraRepository = "k8ssandra/cass-management-api"
DefaultDSERepository = "datastax/dse-server"
)
Expand Down
2 changes: 1 addition & 1 deletion tests/webhook_validation/webhook_validation_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ var _ = Describe(testName, func() {
json = "{\"spec\": {\"serverType\": \"dse\", \"serverVersion\": \"6.7.0\"}}"
k = kubectl.PatchMerge(dcResource, json)
ns.ExecAndLogAndExpectErrorString(step, k,
`spec.serverVersion: Invalid value: "6.7.0": spec.serverVersion in body should match '(6\.8\.\d+)|(3\.11\.\d+)|(4\.\d+\.\d+)'`)
`spec.serverVersion: Invalid value: "6.7.0": spec.serverVersion in body should match '(6\.8\.\d+)|(3\.11\.\d+)|(4\.\d+\.\d+)|(5\.\d+\.\d+)|(7\.\d+\.\d+)'`)
step = "attempt to change the cluster name"
json = "{\"spec\": {\"clusterName\": \"NewName\"}}"
k = kubectl.PatchMerge(dcResource, json)
Expand Down

0 comments on commit cd5709a

Please sign in to comment.