diff --git a/apis/catalog/v1alpha1/mariadb_version_types.go b/apis/catalog/v1alpha1/mariadb_version_types.go index f7abbd684..daa98a804 100644 --- a/apis/catalog/v1alpha1/mariadb_version_types.go +++ b/apis/catalog/v1alpha1/mariadb_version_types.go @@ -54,6 +54,8 @@ type MariaDBVersionSpec struct { Version string `json:"version"` // Database Image DB MariaDBVersionDatabase `json:"db"` + // Maxscale Image + Maxscale MariaDBVersionMaxscale `json:"maxscale"` // Exporter Image Exporter MariaDBVersionExporter `json:"exporter"` // Coordinator Image @@ -87,6 +89,11 @@ type MariaDBVersionDatabase struct { Image string `json:"image"` } +// MariaDBVersionMaxscale is the mariadb maxscale image +type MariaDBVersionMaxscale struct { + Image string `json:"image"` +} + // MariaDBVersionExporter is the image for the MariaDB exporter type MariaDBVersionExporter struct { Image string `json:"image"` diff --git a/apis/catalog/v1alpha1/openapi_generated.go b/apis/catalog/v1alpha1/openapi_generated.go index 50e37f5f8..c9adc3c82 100644 --- a/apis/catalog/v1alpha1/openapi_generated.go +++ b/apis/catalog/v1alpha1/openapi_generated.go @@ -566,6 +566,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionExporter": schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionExporter(ref), "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionInitContainer": schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionInitContainer(ref), "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionList": schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionList(ref), + "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionMaxscale": schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionMaxscale(ref), "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionPodSecurityPolicy": schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionPodSecurityPolicy(ref), "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionSpec": schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionSpec(ref), "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MemcachedVersion": schema_apimachinery_apis_catalog_v1alpha1_MemcachedVersion(ref), @@ -28138,6 +28139,27 @@ func schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionList(ref common.Ref } } +func schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionMaxscale(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "MariaDBVersionMaxscale is the mariadb maxscale image", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "image": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + Required: []string{"image"}, + }, + }, + } +} + func schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionPodSecurityPolicy(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -28181,6 +28203,13 @@ func schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionSpec(ref common.Ref Ref: ref("kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionDatabase"), }, }, + "maxscale": { + SchemaProps: spec.SchemaProps{ + Description: "Maxscale Image", + Default: map[string]interface{}{}, + Ref: ref("kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionMaxscale"), + }, + }, "exporter": { SchemaProps: spec.SchemaProps{ Description: "Exporter Image", @@ -28264,11 +28293,11 @@ func schema_apimachinery_apis_catalog_v1alpha1_MariaDBVersionSpec(ref common.Ref }, }, }, - Required: []string{"version", "db", "exporter", "initContainer", "podSecurityPolicies"}, + Required: []string{"version", "db", "maxscale", "exporter", "initContainer", "podSecurityPolicies"}, }, }, Dependencies: []string{ - "kmodules.xyz/custom-resources/apis/appcatalog/v1alpha1.StashAddonSpec", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.ArchiverSpec", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.ChartInfo", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.GitSyncer", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionCoordinator", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionDatabase", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionExporter", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionInitContainer", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionPodSecurityPolicy", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.SecurityContext", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.UpdateConstraints"}, + "kmodules.xyz/custom-resources/apis/appcatalog/v1alpha1.StashAddonSpec", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.ArchiverSpec", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.ChartInfo", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.GitSyncer", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionCoordinator", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionDatabase", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionExporter", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionInitContainer", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionMaxscale", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.MariaDBVersionPodSecurityPolicy", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.SecurityContext", "kubedb.dev/apimachinery/apis/catalog/v1alpha1.UpdateConstraints"}, } } diff --git a/apis/catalog/v1alpha1/zz_generated.deepcopy.go b/apis/catalog/v1alpha1/zz_generated.deepcopy.go index 8d1ebcb34..48d0fa902 100644 --- a/apis/catalog/v1alpha1/zz_generated.deepcopy.go +++ b/apis/catalog/v1alpha1/zz_generated.deepcopy.go @@ -1573,6 +1573,22 @@ func (in *MariaDBVersionList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MariaDBVersionMaxscale) DeepCopyInto(out *MariaDBVersionMaxscale) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MariaDBVersionMaxscale. +func (in *MariaDBVersionMaxscale) DeepCopy() *MariaDBVersionMaxscale { + if in == nil { + return nil + } + out := new(MariaDBVersionMaxscale) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MariaDBVersionPodSecurityPolicy) DeepCopyInto(out *MariaDBVersionPodSecurityPolicy) { *out = *in @@ -1593,6 +1609,7 @@ func (in *MariaDBVersionPodSecurityPolicy) DeepCopy() *MariaDBVersionPodSecurity func (in *MariaDBVersionSpec) DeepCopyInto(out *MariaDBVersionSpec) { *out = *in out.DB = in.DB + out.Maxscale = in.Maxscale out.Exporter = in.Exporter out.Coordinator = in.Coordinator out.InitContainer = in.InitContainer diff --git a/apis/kubedb/constants.go b/apis/kubedb/constants.go index d72051d08..6e2f04ffc 100644 --- a/apis/kubedb/constants.go +++ b/apis/kubedb/constants.go @@ -359,6 +359,9 @@ const ( MariaDBMetricsExporterConfigPath = "/etc/mysql/config/exporter" MariaDBDataVolumeName = "data" + //Maxscale + MaxscaleContainerName = "maxscale" + // =========================== SingleStore Constants ============================ SinglestoreDatabasePortName = "db" SinglestorePrimaryServicePortName = "primary" diff --git a/apis/kubedb/v1/mariadb_helpers.go b/apis/kubedb/v1/mariadb_helpers.go index 5c444fed3..3f895715a 100644 --- a/apis/kubedb/v1/mariadb_helpers.go +++ b/apis/kubedb/v1/mariadb_helpers.go @@ -58,6 +58,10 @@ func (m MariaDB) OffshootName() string { return m.Name } +func (m MariaDB) OffshootMaxscaleName() string { + return meta_util.NameWithSuffix(m.Name, "maxscale") +} + func (m MariaDB) OffshootSelectors() map[string]string { return map[string]string{ meta_util.NameLabelKey: m.ResourceFQN(), @@ -66,18 +70,38 @@ func (m MariaDB) OffshootSelectors() map[string]string { } } +func (m MariaDB) OffshootMaxscaleSelectors() map[string]string { + return map[string]string{ + meta_util.NameLabelKey: m.ResourceFQN(), + meta_util.InstanceLabelKey: m.OffshootMaxscaleName(), + meta_util.ManagedByLabelKey: kubedb.GroupName, + } +} + func (m MariaDB) OffshootLabels() map[string]string { return m.offshootLabels(m.OffshootSelectors(), nil) } +func (m MariaDB) OffshootMaxscaleLabels() map[string]string { + return m.offshootLabels(m.OffshootMaxscaleSelectors(), nil) +} + func (m MariaDB) PodLabels() map[string]string { return m.offshootLabels(m.OffshootSelectors(), m.Spec.PodTemplate.Labels) } +func (m MariaDB) MaxscalePodLabels() map[string]string { + return m.offshootLabels(m.OffshootMaxscaleSelectors(), m.Spec.PodTemplate.Labels) +} + func (m MariaDB) PodControllerLabels() map[string]string { return m.offshootLabels(m.OffshootSelectors(), m.Spec.PodTemplate.Controller.Labels) } +func (m MariaDB) MaxscalePodControllerLabels() map[string]string { + return m.offshootLabels(m.OffshootMaxscaleSelectors(), m.Spec.PodTemplate.Controller.Labels) +} + func (m MariaDB) SidekickLabels(skName string) map[string]string { return meta_util.OverwriteKeys(nil, kubedb.CommonSidekickLabels(), map[string]string{ meta_util.InstanceLabelKey: skName, @@ -139,6 +163,9 @@ func (m MariaDB) IsMariaDBReplication() bool { func (m MariaDB) GoverningServiceName() string { return meta_util.NameWithSuffix(m.ServiceName(), "pods") } +func (m MariaDB) MaxscaleGoverningServiceName() string { + return meta_util.NameWithSuffix(m.OffshootMaxscaleName(), "pods") +} func (m MariaDB) PeerName(idx int) string { return fmt.Sprintf("%s-%d.%s.%s", m.OffshootName(), idx, m.GoverningServiceName(), m.Namespace) diff --git a/crds/catalog.kubedb.com_mariadbversions.yaml b/crds/catalog.kubedb.com_mariadbversions.yaml index a5c1b76f6..c7ca94095 100644 --- a/crds/catalog.kubedb.com_mariadbversions.yaml +++ b/crds/catalog.kubedb.com_mariadbversions.yaml @@ -141,6 +141,13 @@ spec: required: - image type: object + maxscale: + properties: + image: + type: string + required: + - image + type: object podSecurityPolicies: properties: databasePolicyName: @@ -233,6 +240,7 @@ spec: - db - exporter - initContainer + - maxscale - podSecurityPolicies - version type: object