From d3d02e6dd5c852025f463cccd1bcbea2c9e1db96 Mon Sep 17 00:00:00 2001 From: Michael Burman Date: Mon, 24 Oct 2022 12:22:30 +0000 Subject: [PATCH] Remove pkg/serverconfig, merge to apis. Fix some deprecated builder annotations --- .../v1beta1/cassandradatacenter_types.go | 62 ++++++++++++++++--- .../cassandra/v1beta1}/configgen_test.go | 2 +- ...dra.datastax.com_cassandradatacenters.yaml | 1 - go.mod | 2 +- go.sum | 4 +- pkg/serverconfig/configgen.go | 56 ----------------- 6 files changed, 57 insertions(+), 70 deletions(-) rename {pkg/serverconfig => apis/cassandra/v1beta1}/configgen_test.go (99%) delete mode 100644 pkg/serverconfig/configgen.go diff --git a/apis/cassandra/v1beta1/cassandradatacenter_types.go b/apis/cassandra/v1beta1/cassandradatacenter_types.go index 4703c97d..27d0d213 100644 --- a/apis/cassandra/v1beta1/cassandradatacenter_types.go +++ b/apis/cassandra/v1beta1/cassandradatacenter_types.go @@ -10,8 +10,7 @@ import ( "strconv" "strings" - "github.com/Jeffail/gabs" - "github.com/k8ssandra/cass-operator/pkg/serverconfig" + gabs "github.com/Jeffail/gabs/v2" "github.com/pkg/errors" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -78,9 +77,7 @@ type CassandraUser struct { } // CassandraDatacenterSpec defines the desired state of a CassandraDatacenter -// +k8s:openapi-gen=true -// +kubebuilder:pruning:PreserveUnknownFields -// +kubebuilder:validation:XPreserveUnknownFields +// +kubebuilder:object:generate=true type CassandraDatacenterSpec struct { // Desired number of Cassandra server nodes // +kubebuilder:validation:Minimum=1 @@ -105,7 +102,6 @@ type CassandraDatacenterSpec struct { // Config for the server, in YAML format // +kubebuilder:pruning:PreserveUnknownFields - // +kubebuilder:validation:XPreserveUnknownFields Config json.RawMessage `json:"config,omitempty"` // ConfigSecret is the name of a secret that contains configuration for Cassandra. The @@ -372,7 +368,7 @@ func NewDatacenterConditionWithReason(conditionType DatacenterConditionType, sta } // CassandraDatacenterStatus defines the observed state of CassandraDatacenter -// +k8s:openapi-gen=true +// +kubebuilder:object:generate=true type CassandraDatacenterStatus struct { Conditions []DatacenterCondition `json:"conditions,omitempty"` @@ -417,7 +413,7 @@ type CassandraDatacenterStatus struct { } // CassandraDatacenter is the Schema for the cassandradatacenters API -// +k8s:openapi-gen=true +// +kubebuilder:object:generate=true // +kubebuilder:object:root=true // +kubebuilder:subresource:status // +kubebuilder:resource:path=cassandradatacenters,scope=Namespaced,shortName=cassdc;cassdcs @@ -676,7 +672,7 @@ func (dc *CassandraDatacenter) GetConfigAsJSON(config []byte) (string, error) { internodeSSL = dc.Spec.Networking.NodePort.InternodeSSL } - modelValues := serverconfig.GetModelValues( + modelValues := GetModelValues( seeds, dc.Spec.ClusterName, dc.Name, @@ -881,3 +877,51 @@ func SplitRacks(nodeCount, rackCount int) []int { return topology } + +// +kubebuilder:object:generate=false +type NodeConfig map[string]interface{} + +// GetModelValues will gather the cluster model values for cluster and datacenter +func GetModelValues( + seeds []string, + clusterName string, + dcName string, + graphEnabled int, + solrEnabled int, + sparkEnabled int, + nativePort int, + nativeSSLPort int, + internodePort int, + internodeSSLPort int) NodeConfig { + + seedsString := strings.Join(seeds, ",") + + // Note: the operator does not currently support graph, solr, and spark + modelValues := NodeConfig{ + "cluster-info": NodeConfig{ + "name": clusterName, + "seeds": seedsString, + }, + "datacenter-info": NodeConfig{ + "name": dcName, + "graph-enabled": graphEnabled, + "solr-enabled": solrEnabled, + "spark-enabled": sparkEnabled, + }, + "cassandra-yaml": NodeConfig{}, + } + + if nativeSSLPort != 0 { + modelValues["cassandra-yaml"].(NodeConfig)["native_transport_port_ssl"] = nativeSSLPort + } else if nativePort != 0 { + modelValues["cassandra-yaml"].(NodeConfig)["native_transport_port"] = nativePort + } + + if internodeSSLPort != 0 { + modelValues["cassandra-yaml"].(NodeConfig)["ssl_storage_port"] = internodeSSLPort + } else if internodePort != 0 { + modelValues["cassandra-yaml"].(NodeConfig)["storage_port"] = internodePort + } + + return modelValues +} diff --git a/pkg/serverconfig/configgen_test.go b/apis/cassandra/v1beta1/configgen_test.go similarity index 99% rename from pkg/serverconfig/configgen_test.go rename to apis/cassandra/v1beta1/configgen_test.go index c15540fc..72d3541a 100644 --- a/pkg/serverconfig/configgen_test.go +++ b/apis/cassandra/v1beta1/configgen_test.go @@ -1,7 +1,7 @@ // Copyright DataStax, Inc. // Please see the included license file for details. -package serverconfig +package v1beta1 import ( "reflect" diff --git a/config/crd/bases/cassandra.datastax.com_cassandradatacenters.yaml b/config/crd/bases/cassandra.datastax.com_cassandradatacenters.yaml index 0d42bcef..9d61bf51 100644 --- a/config/crd/bases/cassandra.datastax.com_cassandradatacenters.yaml +++ b/config/crd/bases/cassandra.datastax.com_cassandradatacenters.yaml @@ -8046,7 +8046,6 @@ spec: - size - storageConfig type: object - x-kubernetes-preserve-unknown-fields: true status: description: CassandraDatacenterStatus defines the observed state of CassandraDatacenter properties: diff --git a/go.mod b/go.mod index 322e0f1c..05ef0795 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module github.com/k8ssandra/cass-operator go 1.18 require ( - github.com/Jeffail/gabs v1.4.0 github.com/davecgh/go-spew v1.1.1 github.com/go-logr/logr v1.2.3 github.com/google/uuid v1.1.2 @@ -22,6 +21,7 @@ require ( ) require ( + github.com/Jeffail/gabs/v2 v2.6.1 github.com/onsi/ginkgo/v2 v2.2.0 go.uber.org/zap v1.19.1 k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed diff --git a/go.sum b/go.sum index 61e7cd08..e23d3709 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo= -github.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= +github.com/Jeffail/gabs/v2 v2.6.1 h1:wwbE6nTQTwIMsMxzi6XFQQYRZ6wDc1mSdxoAN+9U4Gk= +github.com/Jeffail/gabs/v2 v2.6.1/go.mod h1:xCn81vdHKxFUuWWAaD5jCTQDNPBMh5pPs9IJ+NcziBI= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= diff --git a/pkg/serverconfig/configgen.go b/pkg/serverconfig/configgen.go deleted file mode 100644 index fe735c5f..00000000 --- a/pkg/serverconfig/configgen.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright DataStax, Inc. -// Please see the included license file for details. - -package serverconfig - -import ( - "strings" -) - -// This needs to be outside of the apis package or else code-gen fails -type NodeConfig map[string]interface{} - -// GetModelValues will gather the cluster model values for cluster and datacenter -func GetModelValues( - seeds []string, - clusterName string, - dcName string, - graphEnabled int, - solrEnabled int, - sparkEnabled int, - nativePort int, - nativeSSLPort int, - internodePort int, - internodeSSLPort int) NodeConfig { - - seedsString := strings.Join(seeds, ",") - - // Note: the operator does not currently support graph, solr, and spark - modelValues := NodeConfig{ - "cluster-info": NodeConfig{ - "name": clusterName, - "seeds": seedsString, - }, - "datacenter-info": NodeConfig{ - "name": dcName, - "graph-enabled": graphEnabled, - "solr-enabled": solrEnabled, - "spark-enabled": sparkEnabled, - }, - "cassandra-yaml": NodeConfig{}, - } - - if nativeSSLPort != 0 { - modelValues["cassandra-yaml"].(NodeConfig)["native_transport_port_ssl"] = nativeSSLPort - } else if nativePort != 0 { - modelValues["cassandra-yaml"].(NodeConfig)["native_transport_port"] = nativePort - } - - if internodeSSLPort != 0 { - modelValues["cassandra-yaml"].(NodeConfig)["ssl_storage_port"] = internodeSSLPort - } else if internodePort != 0 { - modelValues["cassandra-yaml"].(NodeConfig)["storage_port"] = internodePort - } - - return modelValues -}