From a4eacc1d4b4deface2e8ceddb50fc2d2772801f6 Mon Sep 17 00:00:00 2001 From: Kamlesh Panchal Date: Mon, 8 Jul 2024 13:27:14 -0400 Subject: [PATCH 01/10] Updates to persistence flags for DI/JS --- Makefile | 2 +- config/manager/controllers_cfg.yaml | 4 ++-- controllers/platform/services/services.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index f88a8759e..41847bef7 100644 --- a/Makefile +++ b/Makefile @@ -154,7 +154,7 @@ build-4-debug: generate ## Build manager binary with debug options. .PHONY: run run: manifests generate ## Run a controller from your host. - go run ./main.go + go run ./main.go -v=2 -controller-cfg-path=$(CURDIR)/config/manager/controllers_cfg.yaml .PHONY: debug debug: build-4-debug ## Run a controller from your host from binary diff --git a/config/manager/controllers_cfg.yaml b/config/manager/controllers_cfg.yaml index f9f76a958..d6ab13af3 100644 --- a/config/manager/controllers_cfg.yaml +++ b/config/manager/controllers_cfg.yaml @@ -8,10 +8,10 @@ kanikoDefaultWarmerImageTag: gcr.io/kaniko-project/warmer:v1.9.0 # Default image used internally by the Operator Managed Kaniko builder to create the executor pods kanikoExecutorImageTag: gcr.io/kaniko-project/executor:v1.9.0 # The Jobs Service image to use, if empty the operator will use the default Apache Community one based on the current operator's version -jobsServicePostgreSQLImageTag: "" +jobsServicePostgreSQLImageTag: "apache/incubator-kie-kogito-jobs-service-postgresql:weekly-latest" jobsServiceEphemeralImageTag: "" # The Data Index image to use, if empty the operator will use the default Apache Community one based on the current operator's version -dataIndexPostgreSQLImageTag: "" +dataIndexPostgreSQLImageTag: "apache/incubator-kie-kogito-data-index-postgresql:weekly-latest" dataIndexEphemeralImageTag: "" # SonataFlow base builder image used in the internal Dockerfile to build workflow applications in preview profile # Order of precedence is: diff --git a/controllers/platform/services/services.go b/controllers/platform/services/services.go index 58e068daa..d6eb752d0 100644 --- a/controllers/platform/services/services.go +++ b/controllers/platform/services/services.go @@ -225,7 +225,7 @@ func (d DataIndexHandler) ConfigurePersistence(containerSpec *corev1.Container) c.Image = d.GetServiceImageName(constants.PersistenceTypePostgreSQL) c.Env = append(c.Env, persistence.ConfigurePostgreSQLEnv(p.PostgreSQL, d.GetServiceName(), d.platform.Namespace)...) // specific to DataIndex - c.Env = append(c.Env, corev1.EnvVar{Name: quarkusHibernateORMDatabaseGeneration, Value: "update"}, corev1.EnvVar{Name: quarkusFlywayMigrateAtStart, Value: "true"}) + c.Env = append(c.Env, corev1.EnvVar{Name: quarkusHibernateORMDatabaseGeneration, Value: "update"}, corev1.EnvVar{Name: quarkusFlywayMigrateAtStart, Value: "false"}) return c } return containerSpec @@ -389,7 +389,7 @@ func (j JobServiceHandler) ConfigurePersistence(containerSpec *corev1.Container) p := persistence.RetrievePostgreSQLConfiguration(j.platform.Spec.Services.JobService.Persistence, j.platform.Spec.Persistence, j.GetServiceName()) c.Env = append(c.Env, persistence.ConfigurePostgreSQLEnv(p.PostgreSQL, j.GetServiceName(), j.platform.Namespace)...) // Specific to Job Service - c.Env = append(c.Env, corev1.EnvVar{Name: "QUARKUS_FLYWAY_MIGRATE_AT_START", Value: "true"}) + c.Env = append(c.Env, corev1.EnvVar{Name: "QUARKUS_FLYWAY_MIGRATE_AT_START", Value: "false"}) c.Env = append(c.Env, corev1.EnvVar{Name: "KOGITO_JOBS_SERVICE_LOADJOBERRORSTRATEGY", Value: "FAIL_SERVICE"}) return c } From 07a5e8fbdc2965c2f17f605ec53c1b75143e13a8 Mon Sep 17 00:00:00 2001 From: rhkp Date: Mon, 15 Jul 2024 16:07:23 -0400 Subject: [PATCH 02/10] DI/JS: add MigrateDBOnStartUp attribute to operator --- api/v1alpha08/sonataflowplatform_services_types.go | 2 ++ api/v1alpha08/zz_generated.deepcopy.go | 2 +- api/zz_generated.deepcopy.go | 2 ++ config/crd/bases/sonataflow.org_sonataflowplatforms.yaml | 6 ++++++ container-builder/api/zz_generated.deepcopy.go | 2 +- controllers/platform/services/services.go | 8 ++++++-- 6 files changed, 18 insertions(+), 4 deletions(-) diff --git a/api/v1alpha08/sonataflowplatform_services_types.go b/api/v1alpha08/sonataflowplatform_services_types.go index a16bc2782..20edb44de 100644 --- a/api/v1alpha08/sonataflowplatform_services_types.go +++ b/api/v1alpha08/sonataflowplatform_services_types.go @@ -36,4 +36,6 @@ type ServiceSpec struct { // PodTemplate describes the deployment details of this platform service instance. //+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="podTemplate" PodTemplate PodTemplateSpec `json:"podTemplate,omitempty"` + // Whether to migrate database on service startup? + MigrateDBOnStartUp bool `json:"migrateDBOnStartUp,omitempty"` } diff --git a/api/v1alpha08/zz_generated.deepcopy.go b/api/v1alpha08/zz_generated.deepcopy.go index b11518893..00302cfce 100644 --- a/api/v1alpha08/zz_generated.deepcopy.go +++ b/api/v1alpha08/zz_generated.deepcopy.go @@ -22,7 +22,7 @@ package v1alpha08 import ( "github.com/serverlessworkflow/sdk-go/v2/model" - v1 "k8s.io/api/core/v1" + "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "knative.dev/pkg/apis" diff --git a/api/zz_generated.deepcopy.go b/api/zz_generated.deepcopy.go index 4fd61d6d9..b68499c7b 100644 --- a/api/zz_generated.deepcopy.go +++ b/api/zz_generated.deepcopy.go @@ -20,6 +20,8 @@ package api +import () + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Condition) DeepCopyInto(out *Condition) { *out = *in diff --git a/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml b/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml index 648b1bcde..108b3de06 100644 --- a/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml +++ b/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml @@ -565,6 +565,9 @@ spec: description: 'Determines whether workflows without the `sonataflow.org/profile: dev` annotation should be configured to use this service' type: boolean + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean persistence: description: Persists service to a datasource of choice. Ephemeral by default. @@ -8437,6 +8440,9 @@ spec: description: 'Determines whether workflows without the `sonataflow.org/profile: dev` annotation should be configured to use this service' type: boolean + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean persistence: description: Persists service to a datasource of choice. Ephemeral by default. diff --git a/container-builder/api/zz_generated.deepcopy.go b/container-builder/api/zz_generated.deepcopy.go index e19547bf4..46f2ddaea 100644 --- a/container-builder/api/zz_generated.deepcopy.go +++ b/container-builder/api/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ package api import ( - v1 "k8s.io/api/core/v1" + "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) diff --git a/controllers/platform/services/services.go b/controllers/platform/services/services.go index d6eb752d0..4511b947d 100644 --- a/controllers/platform/services/services.go +++ b/controllers/platform/services/services.go @@ -21,6 +21,7 @@ package services import ( "fmt" + "strconv" "github.com/apache/incubator-kie-kogito-serverless-operator/controllers/cfg" "github.com/apache/incubator-kie-kogito-serverless-operator/utils/kubernetes" @@ -224,8 +225,10 @@ func (d DataIndexHandler) ConfigurePersistence(containerSpec *corev1.Container) c := containerSpec.DeepCopy() c.Image = d.GetServiceImageName(constants.PersistenceTypePostgreSQL) c.Env = append(c.Env, persistence.ConfigurePostgreSQLEnv(p.PostgreSQL, d.GetServiceName(), d.platform.Namespace)...) + migrateDBOnStart := strconv.FormatBool(d.platform.Spec.Services.DataIndex.MigrateDBOnStartUp) // specific to DataIndex - c.Env = append(c.Env, corev1.EnvVar{Name: quarkusHibernateORMDatabaseGeneration, Value: "update"}, corev1.EnvVar{Name: quarkusFlywayMigrateAtStart, Value: "false"}) + c.Env = append(c.Env, corev1.EnvVar{Name: quarkusHibernateORMDatabaseGeneration, Value: "update"}, corev1.EnvVar{Name: quarkusFlywayMigrateAtStart, Value: migrateDBOnStart}) + return c } return containerSpec @@ -389,7 +392,8 @@ func (j JobServiceHandler) ConfigurePersistence(containerSpec *corev1.Container) p := persistence.RetrievePostgreSQLConfiguration(j.platform.Spec.Services.JobService.Persistence, j.platform.Spec.Persistence, j.GetServiceName()) c.Env = append(c.Env, persistence.ConfigurePostgreSQLEnv(p.PostgreSQL, j.GetServiceName(), j.platform.Namespace)...) // Specific to Job Service - c.Env = append(c.Env, corev1.EnvVar{Name: "QUARKUS_FLYWAY_MIGRATE_AT_START", Value: "false"}) + migrateDBOnStart := strconv.FormatBool(j.platform.Spec.Services.JobService.MigrateDBOnStartUp) + c.Env = append(c.Env, corev1.EnvVar{Name: "QUARKUS_FLYWAY_MIGRATE_AT_START", Value: migrateDBOnStart}) c.Env = append(c.Env, corev1.EnvVar{Name: "KOGITO_JOBS_SERVICE_LOADJOBERRORSTRATEGY", Value: "FAIL_SERVICE"}) return c } From 93ff7af8005ba7b2e6001a3e4e267dcf2228efbb Mon Sep 17 00:00:00 2001 From: rhkp Date: Tue, 16 Jul 2024 15:05:22 -0400 Subject: [PATCH 03/10] Move MigrateDBOnStartUp flag under persistence --- api/v1alpha08/sonataflow_persistence_types.go | 5 ++++- .../sonataflowplatform_services_types.go | 2 -- .../sonataflow.org_sonataflowplatforms.yaml | 20 +++++++++++-------- .../crd/bases/sonataflow.org_sonataflows.yaml | 7 ++++++- controllers/platform/services/services.go | 4 ++-- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/api/v1alpha08/sonataflow_persistence_types.go b/api/v1alpha08/sonataflow_persistence_types.go index d0b08e467..e32e027c9 100644 --- a/api/v1alpha08/sonataflow_persistence_types.go +++ b/api/v1alpha08/sonataflow_persistence_types.go @@ -45,11 +45,14 @@ type PlatformPersistencePostgreSQL struct { // the operator will add the necessary JDBC properties to in the workflow's application.properties so that it can communicate // with the persistence service based on the spec provided here. // +optional -// +kubebuilder:validation:MaxProperties=1 +// +kubebuilder:validation:MaxProperties=2 type PersistenceOptionsSpec struct { // Connect configured services to a postgresql database. // +optional PostgreSQL *PersistencePostgreSQL `json:"postgresql,omitempty"` + + // Whether to migrate database on service startup? + MigrateDBOnStartUp bool `json:"migrateDBOnStartUp"` } // PersistencePostgreSQL configure postgresql connection for service(s). diff --git a/api/v1alpha08/sonataflowplatform_services_types.go b/api/v1alpha08/sonataflowplatform_services_types.go index 20edb44de..a16bc2782 100644 --- a/api/v1alpha08/sonataflowplatform_services_types.go +++ b/api/v1alpha08/sonataflowplatform_services_types.go @@ -36,6 +36,4 @@ type ServiceSpec struct { // PodTemplate describes the deployment details of this platform service instance. //+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="podTemplate" PodTemplate PodTemplateSpec `json:"podTemplate,omitempty"` - // Whether to migrate database on service startup? - MigrateDBOnStartUp bool `json:"migrateDBOnStartUp,omitempty"` } diff --git a/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml b/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml index 108b3de06..c4587db75 100644 --- a/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml +++ b/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml @@ -565,14 +565,14 @@ spec: description: 'Determines whether workflows without the `sonataflow.org/profile: dev` annotation should be configured to use this service' type: boolean - migrateDBOnStartUp: - description: Whether to migrate database on service startup? - type: boolean persistence: description: Persists service to a datasource of choice. Ephemeral by default. - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. @@ -629,6 +629,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details @@ -8440,14 +8442,14 @@ spec: description: 'Determines whether workflows without the `sonataflow.org/profile: dev` annotation should be configured to use this service' type: boolean - migrateDBOnStartUp: - description: Whether to migrate database on service startup? - type: boolean persistence: description: Persists service to a datasource of choice. Ephemeral by default. - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. @@ -8504,6 +8506,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details diff --git a/config/crd/bases/sonataflow.org_sonataflows.yaml b/config/crd/bases/sonataflow.org_sonataflows.yaml index 7ee4675cf..fffbbbb17 100644 --- a/config/crd/bases/sonataflow.org_sonataflows.yaml +++ b/config/crd/bases/sonataflow.org_sonataflows.yaml @@ -2106,8 +2106,11 @@ spec: persistence: description: Persistence defines the database persistence configuration for the workflow - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. maxProperties: 2 @@ -2161,6 +2164,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details of this diff --git a/controllers/platform/services/services.go b/controllers/platform/services/services.go index 4511b947d..cdafcc0db 100644 --- a/controllers/platform/services/services.go +++ b/controllers/platform/services/services.go @@ -225,7 +225,7 @@ func (d DataIndexHandler) ConfigurePersistence(containerSpec *corev1.Container) c := containerSpec.DeepCopy() c.Image = d.GetServiceImageName(constants.PersistenceTypePostgreSQL) c.Env = append(c.Env, persistence.ConfigurePostgreSQLEnv(p.PostgreSQL, d.GetServiceName(), d.platform.Namespace)...) - migrateDBOnStart := strconv.FormatBool(d.platform.Spec.Services.DataIndex.MigrateDBOnStartUp) + migrateDBOnStart := strconv.FormatBool(d.platform.Spec.Services.DataIndex.Persistence.MigrateDBOnStartUp) // specific to DataIndex c.Env = append(c.Env, corev1.EnvVar{Name: quarkusHibernateORMDatabaseGeneration, Value: "update"}, corev1.EnvVar{Name: quarkusFlywayMigrateAtStart, Value: migrateDBOnStart}) @@ -392,7 +392,7 @@ func (j JobServiceHandler) ConfigurePersistence(containerSpec *corev1.Container) p := persistence.RetrievePostgreSQLConfiguration(j.platform.Spec.Services.JobService.Persistence, j.platform.Spec.Persistence, j.GetServiceName()) c.Env = append(c.Env, persistence.ConfigurePostgreSQLEnv(p.PostgreSQL, j.GetServiceName(), j.platform.Namespace)...) // Specific to Job Service - migrateDBOnStart := strconv.FormatBool(j.platform.Spec.Services.JobService.MigrateDBOnStartUp) + migrateDBOnStart := strconv.FormatBool(j.platform.Spec.Services.JobService.Persistence.MigrateDBOnStartUp) c.Env = append(c.Env, corev1.EnvVar{Name: "QUARKUS_FLYWAY_MIGRATE_AT_START", Value: migrateDBOnStart}) c.Env = append(c.Env, corev1.EnvVar{Name: "KOGITO_JOBS_SERVICE_LOADJOBERRORSTRATEGY", Value: "FAIL_SERVICE"}) return c From 16bc3fc72555e54f1da24e36bed1be4d59be34c6 Mon Sep 17 00:00:00 2001 From: rhkp Date: Thu, 8 Aug 2024 14:31:56 -0400 Subject: [PATCH 04/10] Address review comments - pass 1 --- config/manager/controllers_cfg.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/manager/controllers_cfg.yaml b/config/manager/controllers_cfg.yaml index d6ab13af3..4c046ac13 100644 --- a/config/manager/controllers_cfg.yaml +++ b/config/manager/controllers_cfg.yaml @@ -11,7 +11,7 @@ kanikoExecutorImageTag: gcr.io/kaniko-project/executor:v1.9.0 jobsServicePostgreSQLImageTag: "apache/incubator-kie-kogito-jobs-service-postgresql:weekly-latest" jobsServiceEphemeralImageTag: "" # The Data Index image to use, if empty the operator will use the default Apache Community one based on the current operator's version -dataIndexPostgreSQLImageTag: "apache/incubator-kie-kogito-data-index-postgresql:weekly-latest" +dataIndexPostgreSQLImageTag: "" dataIndexEphemeralImageTag: "" # SonataFlow base builder image used in the internal Dockerfile to build workflow applications in preview profile # Order of precedence is: From 2f677264ea355df61bc9ab919956b64266a28247 Mon Sep 17 00:00:00 2001 From: rhkp Date: Tue, 13 Aug 2024 16:19:35 -0400 Subject: [PATCH 05/10] Address review comments - changes to see if e2e tests pass --- .../services/preview/postgreSQL/02-sonataflow_platform.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/testdata/platform/services/preview/postgreSQL/02-sonataflow_platform.yaml b/test/testdata/platform/services/preview/postgreSQL/02-sonataflow_platform.yaml index 9514b81ac..837f91161 100644 --- a/test/testdata/platform/services/preview/postgreSQL/02-sonataflow_platform.yaml +++ b/test/testdata/platform/services/preview/postgreSQL/02-sonataflow_platform.yaml @@ -25,6 +25,7 @@ spec: dataIndex: enabled: true persistence: + migrateDBOnStartUp: true postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=data-index-service secretRef: @@ -47,6 +48,7 @@ spec: jobService: enabled: true persistence: + migrateDBOnStartUp: true postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=jobs-service secretRef: From 040a2341d0b65b688affbfd23fc5184fda6b963c Mon Sep 17 00:00:00 2001 From: rhkp Date: Wed, 14 Aug 2024 16:09:17 -0400 Subject: [PATCH 06/10] Address review comments - remove JS image tag --- config/manager/controllers_cfg.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/manager/controllers_cfg.yaml b/config/manager/controllers_cfg.yaml index 4c046ac13..f9f76a958 100644 --- a/config/manager/controllers_cfg.yaml +++ b/config/manager/controllers_cfg.yaml @@ -8,7 +8,7 @@ kanikoDefaultWarmerImageTag: gcr.io/kaniko-project/warmer:v1.9.0 # Default image used internally by the Operator Managed Kaniko builder to create the executor pods kanikoExecutorImageTag: gcr.io/kaniko-project/executor:v1.9.0 # The Jobs Service image to use, if empty the operator will use the default Apache Community one based on the current operator's version -jobsServicePostgreSQLImageTag: "apache/incubator-kie-kogito-jobs-service-postgresql:weekly-latest" +jobsServicePostgreSQLImageTag: "" jobsServiceEphemeralImageTag: "" # The Data Index image to use, if empty the operator will use the default Apache Community one based on the current operator's version dataIndexPostgreSQLImageTag: "" From 45a9f24121197b76c0f585a2af23c6057f333e60 Mon Sep 17 00:00:00 2001 From: rhkp Date: Wed, 14 Aug 2024 19:08:37 -0400 Subject: [PATCH 07/10] Add mandatory migrateDBOnStartUp properties --- .../generic_from_platform_cr/02-sonataflow_platform.yaml | 1 + .../overwritten_by_services/02-sonataflow_platform.yaml | 3 +++ .../services/dev/postgreSQL/02-sonataflow_platform.yaml | 2 ++ .../by_service/04-sonataflow_callbackstatetimeouts.sw.yaml | 1 + .../02-sonataflow_platform.yaml | 1 + .../03-sonataflow_callbackstatetimeouts.sw.yaml | 1 + .../02-sonataflow_platform.yaml | 1 + .../02-sonataflow_platform.yaml | 1 + .../02-sonataflow_platform.yaml | 1 + 9 files changed, 12 insertions(+) diff --git a/test/testdata/platform/persistence/generic_from_platform_cr/02-sonataflow_platform.yaml b/test/testdata/platform/persistence/generic_from_platform_cr/02-sonataflow_platform.yaml index d746ac94b..7a14df8f7 100644 --- a/test/testdata/platform/persistence/generic_from_platform_cr/02-sonataflow_platform.yaml +++ b/test/testdata/platform/persistence/generic_from_platform_cr/02-sonataflow_platform.yaml @@ -18,6 +18,7 @@ metadata: name: sonataflow-platform spec: persistence: + migrateDBOnStartUp: false # as the service's enabled flag is false postgresql: secretRef: name: postgres-secrets diff --git a/test/testdata/platform/persistence/overwritten_by_services/02-sonataflow_platform.yaml b/test/testdata/platform/persistence/overwritten_by_services/02-sonataflow_platform.yaml index 90e361b86..4ddec07ba 100644 --- a/test/testdata/platform/persistence/overwritten_by_services/02-sonataflow_platform.yaml +++ b/test/testdata/platform/persistence/overwritten_by_services/02-sonataflow_platform.yaml @@ -22,6 +22,7 @@ spec: strategyOptions: KanikoBuildCacheEnabled: "true" persistence: + migrateDBOnStartUp: false # as the service's enabled flag is false postgresql: secretRef: name: postgres-secrets @@ -35,6 +36,7 @@ spec: dataIndex: enabled: false persistence: + migrateDBOnStartUp: false # as the service's enabled flag is false postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=data-index-service secretRef: @@ -50,6 +52,7 @@ spec: jobService: enabled: false persistence: + migrateDBOnStartUp: false # as the service's enabled flag is false postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=jobs-service secretRef: diff --git a/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml b/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml index 77d95c969..1173d418b 100644 --- a/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml +++ b/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml @@ -26,6 +26,7 @@ spec: dataIndex: enabled: false persistence: + migrateDBOnStartUp: false # as the service's enabled flag is false postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=data-index-service secretRef: @@ -41,6 +42,7 @@ spec: jobService: enabled: false persistence: + migrateDBOnStartUp: false # as the service's enabled flag is false postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=jobs-service secretRef: diff --git a/test/testdata/workflow/persistence/by_service/04-sonataflow_callbackstatetimeouts.sw.yaml b/test/testdata/workflow/persistence/by_service/04-sonataflow_callbackstatetimeouts.sw.yaml index ec738e946..58c8ce4c7 100644 --- a/test/testdata/workflow/persistence/by_service/04-sonataflow_callbackstatetimeouts.sw.yaml +++ b/test/testdata/workflow/persistence/by_service/04-sonataflow_callbackstatetimeouts.sw.yaml @@ -21,6 +21,7 @@ metadata: sonataflow.org/version: 0.0.1 spec: persistence: + migrateDBOnStartUp: false postgresql: secretRef: name: postgres-secrets diff --git a/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml b/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml index 733b0b952..011303f4c 100644 --- a/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml +++ b/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml @@ -18,6 +18,7 @@ metadata: name: sonataflow-platform spec: persistence: + migrateDBOnStartUp: false postgresql: secretRef: name: my-secret diff --git a/test/testdata/workflow/persistence/from_platform_overwritten_by_service/03-sonataflow_callbackstatetimeouts.sw.yaml b/test/testdata/workflow/persistence/from_platform_overwritten_by_service/03-sonataflow_callbackstatetimeouts.sw.yaml index fb696bff4..d39a521ed 100644 --- a/test/testdata/workflow/persistence/from_platform_overwritten_by_service/03-sonataflow_callbackstatetimeouts.sw.yaml +++ b/test/testdata/workflow/persistence/from_platform_overwritten_by_service/03-sonataflow_callbackstatetimeouts.sw.yaml @@ -21,6 +21,7 @@ metadata: sonataflow.org/version: 0.0.1 spec: persistence: + migrateDBOnStartUp: false postgresql: secretRef: name: postgres-secrets diff --git a/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml b/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml index 2a7db22a6..db9895f7a 100644 --- a/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml +++ b/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml @@ -18,6 +18,7 @@ metadata: name: sonataflow-platform spec: persistence: + migrateDBOnStartUp: true # as the service's enabled flag is true postgresql: secretRef: name: postgres-secrets diff --git a/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml b/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml index 817ce0c31..01312d007 100644 --- a/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml +++ b/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml @@ -18,6 +18,7 @@ metadata: name: sonataflow-platform spec: persistence: + migrateDBOnStartUp: false postgresql: secretRef: name: postgres-secrets diff --git a/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml b/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml index b5ac4e161..bdcf03663 100644 --- a/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml +++ b/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml @@ -18,6 +18,7 @@ metadata: name: sonataflow-platform spec: persistence: + migrateDBOnStartUp: false postgresql: secretRef: name: postgres-secrets From 8ac91f514ccdea4698a224605366e5e0a66a7293 Mon Sep 17 00:00:00 2001 From: rhkp Date: Tue, 20 Aug 2024 15:52:06 -0400 Subject: [PATCH 08/10] Minor changes to e2e tests run --- Makefile | 2 +- .../generic_from_platform_cr/02-sonataflow_platform.yaml | 5 ++++- .../overwritten_by_services/02-sonataflow_platform.yaml | 5 ++--- .../services/dev/postgreSQL/02-sonataflow_platform.yaml | 4 ++-- .../02-sonataflow_platform.yaml | 1 - .../02-sonataflow_platform.yaml | 5 ++++- .../02-sonataflow_platform.yaml | 1 - ...3-sonataflow_callbackstatetimeouts-no-persistence.sw.yaml | 4 +++- .../02-sonataflow_platform.yaml | 1 - 9 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 41847bef7..ddb2ff8b3 100644 --- a/Makefile +++ b/Makefile @@ -338,7 +338,7 @@ generate-all: generate generate-deploy bundle addheaders vet fmt .PHONY: test-e2e # You will need to have a Minikube/Kind cluster up in running to run this target, and run container-builder before the test test-e2e: - go test ./test/e2e/* -v -ginkgo.v -ginkgo.no-color -ginkgo.junit-report=./e2e-test-report.xml -timeout 60m + go test ./test/e2e/* -v -ginkgo.v -ginkgo.no-color -ginkgo.junit-report=./e2e-test-report.xml -timeout 120m .PHONY: before-pr before-pr: test generate-all diff --git a/test/testdata/platform/persistence/generic_from_platform_cr/02-sonataflow_platform.yaml b/test/testdata/platform/persistence/generic_from_platform_cr/02-sonataflow_platform.yaml index 7a14df8f7..cce1782e6 100644 --- a/test/testdata/platform/persistence/generic_from_platform_cr/02-sonataflow_platform.yaml +++ b/test/testdata/platform/persistence/generic_from_platform_cr/02-sonataflow_platform.yaml @@ -18,7 +18,6 @@ metadata: name: sonataflow-platform spec: persistence: - migrateDBOnStartUp: false # as the service's enabled flag is false postgresql: secretRef: name: postgres-secrets @@ -31,6 +30,8 @@ spec: services: dataIndex: enabled: false + persistence: + migrateDBOnStartUp: true podTemplate: initContainers: - name: init-postgres @@ -39,6 +40,8 @@ spec: command: [ 'sh', '-c', 'until (echo 1 > /dev/tcp/postgres.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local/5432) >/dev/null 2>&1; do echo "Waiting for postgres server"; sleep 3; done;' ] jobService: enabled: false + persistence: + migrateDBOnStartUp: true podTemplate: initContainers: - name: init-postgres diff --git a/test/testdata/platform/persistence/overwritten_by_services/02-sonataflow_platform.yaml b/test/testdata/platform/persistence/overwritten_by_services/02-sonataflow_platform.yaml index 4ddec07ba..14b0cef9b 100644 --- a/test/testdata/platform/persistence/overwritten_by_services/02-sonataflow_platform.yaml +++ b/test/testdata/platform/persistence/overwritten_by_services/02-sonataflow_platform.yaml @@ -22,7 +22,6 @@ spec: strategyOptions: KanikoBuildCacheEnabled: "true" persistence: - migrateDBOnStartUp: false # as the service's enabled flag is false postgresql: secretRef: name: postgres-secrets @@ -36,7 +35,7 @@ spec: dataIndex: enabled: false persistence: - migrateDBOnStartUp: false # as the service's enabled flag is false + migrateDBOnStartUp: true postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=data-index-service secretRef: @@ -52,7 +51,7 @@ spec: jobService: enabled: false persistence: - migrateDBOnStartUp: false # as the service's enabled flag is false + migrateDBOnStartUp: true postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=jobs-service secretRef: diff --git a/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml b/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml index 1173d418b..2437863ff 100644 --- a/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml +++ b/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml @@ -26,7 +26,7 @@ spec: dataIndex: enabled: false persistence: - migrateDBOnStartUp: false # as the service's enabled flag is false + migrateDBOnStartUp: true postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=data-index-service secretRef: @@ -42,7 +42,7 @@ spec: jobService: enabled: false persistence: - migrateDBOnStartUp: false # as the service's enabled flag is false + migrateDBOnStartUp: true postgresql: jdbcUrl: jdbc:postgresql://postgres:5432/sonataflow?currentSchema=jobs-service secretRef: diff --git a/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml b/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml index 011303f4c..733b0b952 100644 --- a/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml +++ b/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml @@ -18,7 +18,6 @@ metadata: name: sonataflow-platform spec: persistence: - migrateDBOnStartUp: false postgresql: secretRef: name: my-secret diff --git a/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml b/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml index db9895f7a..fb397b1e7 100644 --- a/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml +++ b/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml @@ -18,7 +18,6 @@ metadata: name: sonataflow-platform spec: persistence: - migrateDBOnStartUp: true # as the service's enabled flag is true postgresql: secretRef: name: postgres-secrets @@ -35,6 +34,8 @@ spec: services: dataIndex: enabled: true + persistence: + migrateDBOnStartUp: true podTemplate: initContainers: - name: init-postgres @@ -43,6 +44,8 @@ spec: command: [ 'sh', '-c', 'until (echo 1 > /dev/tcp/postgres.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local/5432) >/dev/null 2>&1; do echo "Waiting for postgres server"; sleep 3; done;' ] jobService: enabled: true + persistence: + migrateDBOnStartUp: true podTemplate: initContainers: - name: init-postgres diff --git a/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml b/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml index 01312d007..817ce0c31 100644 --- a/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml +++ b/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml @@ -18,7 +18,6 @@ metadata: name: sonataflow-platform spec: persistence: - migrateDBOnStartUp: false postgresql: secretRef: name: postgres-secrets diff --git a/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/03-sonataflow_callbackstatetimeouts-no-persistence.sw.yaml b/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/03-sonataflow_callbackstatetimeouts-no-persistence.sw.yaml index 7a8226c62..f7f4720fa 100644 --- a/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/03-sonataflow_callbackstatetimeouts-no-persistence.sw.yaml +++ b/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/03-sonataflow_callbackstatetimeouts-no-persistence.sw.yaml @@ -20,7 +20,9 @@ metadata: sonataflow.org/description: Callback State Timeouts Example k8s sonataflow.org/version: 0.0.1 spec: - persistence: {} + persistence: { + migrateDBOnStartUp: true + } podTemplate: container: env: diff --git a/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml b/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml index bdcf03663..b5ac4e161 100644 --- a/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml +++ b/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml @@ -18,7 +18,6 @@ metadata: name: sonataflow-platform spec: persistence: - migrateDBOnStartUp: false postgresql: secretRef: name: postgres-secrets From 3b77fd76cbbc328b5b6974c6f61c9e4c4fd51623 Mon Sep 17 00:00:00 2001 From: rhkp Date: Wed, 21 Aug 2024 10:39:58 -0400 Subject: [PATCH 09/10] Minor change to make unit tests work --- controllers/sonataflowplatform_controller_test.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/controllers/sonataflowplatform_controller_test.go b/controllers/sonataflowplatform_controller_test.go index 022c76063..23230d8fc 100644 --- a/controllers/sonataflowplatform_controller_test.go +++ b/controllers/sonataflowplatform_controller_test.go @@ -260,8 +260,16 @@ func TestSonataFlowPlatformController(t *testing.T) { // Check with persistence set ksp.Spec = v1alpha08.SonataFlowPlatformSpec{ Services: &v1alpha08.ServicesPlatformSpec{ - DataIndex: &v1alpha08.ServiceSpec{}, - JobService: &v1alpha08.ServiceSpec{}, + DataIndex: &v1alpha08.ServiceSpec{ + Persistence: &v1alpha08.PersistenceOptionsSpec{ + MigrateDBOnStartUp: false, + }, + }, + JobService: &v1alpha08.ServiceSpec{ + Persistence: &v1alpha08.PersistenceOptionsSpec{ + MigrateDBOnStartUp: false, + }, + }, }, Persistence: &v1alpha08.PlatformPersistenceOptionsSpec{ PostgreSQL: &v1alpha08.PlatformPersistencePostgreSQL{ From 9afa484faed5c79ed30a2ff18ec0b1c28306c057 Mon Sep 17 00:00:00 2001 From: rhkp Date: Wed, 21 Aug 2024 12:46:10 -0400 Subject: [PATCH 10/10] Run make generate-all and commit --- api/v1alpha08/zz_generated.deepcopy.go | 2 +- api/zz_generated.deepcopy.go | 2 -- .../sonataflow.org_sonataflowplatforms.yaml | 14 +++++++++++-- .../manifests/sonataflow.org_sonataflows.yaml | 7 ++++++- .../api/zz_generated.deepcopy.go | 2 +- controllers/platform/services/services.go | 2 +- operator.yaml | 21 ++++++++++++++++--- 7 files changed, 39 insertions(+), 11 deletions(-) diff --git a/api/v1alpha08/zz_generated.deepcopy.go b/api/v1alpha08/zz_generated.deepcopy.go index 00302cfce..b11518893 100644 --- a/api/v1alpha08/zz_generated.deepcopy.go +++ b/api/v1alpha08/zz_generated.deepcopy.go @@ -22,7 +22,7 @@ package v1alpha08 import ( "github.com/serverlessworkflow/sdk-go/v2/model" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "knative.dev/pkg/apis" diff --git a/api/zz_generated.deepcopy.go b/api/zz_generated.deepcopy.go index b68499c7b..4fd61d6d9 100644 --- a/api/zz_generated.deepcopy.go +++ b/api/zz_generated.deepcopy.go @@ -20,8 +20,6 @@ package api -import () - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Condition) DeepCopyInto(out *Condition) { *out = *in diff --git a/bundle/manifests/sonataflow.org_sonataflowplatforms.yaml b/bundle/manifests/sonataflow.org_sonataflowplatforms.yaml index 09a2f2544..f9d772261 100644 --- a/bundle/manifests/sonataflow.org_sonataflowplatforms.yaml +++ b/bundle/manifests/sonataflow.org_sonataflowplatforms.yaml @@ -567,8 +567,11 @@ spec: persistence: description: Persists service to a datasource of choice. Ephemeral by default. - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. @@ -625,6 +628,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details @@ -8439,8 +8444,11 @@ spec: persistence: description: Persists service to a datasource of choice. Ephemeral by default. - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. @@ -8497,6 +8505,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details diff --git a/bundle/manifests/sonataflow.org_sonataflows.yaml b/bundle/manifests/sonataflow.org_sonataflows.yaml index 5ff75cae2..effa0cd83 100644 --- a/bundle/manifests/sonataflow.org_sonataflows.yaml +++ b/bundle/manifests/sonataflow.org_sonataflows.yaml @@ -2105,8 +2105,11 @@ spec: persistence: description: Persistence defines the database persistence configuration for the workflow - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. maxProperties: 2 @@ -2160,6 +2163,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details of this diff --git a/container-builder/api/zz_generated.deepcopy.go b/container-builder/api/zz_generated.deepcopy.go index 46f2ddaea..e19547bf4 100644 --- a/container-builder/api/zz_generated.deepcopy.go +++ b/container-builder/api/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ package api import ( - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) diff --git a/controllers/platform/services/services.go b/controllers/platform/services/services.go index cdafcc0db..f2455d8a5 100644 --- a/controllers/platform/services/services.go +++ b/controllers/platform/services/services.go @@ -228,7 +228,7 @@ func (d DataIndexHandler) ConfigurePersistence(containerSpec *corev1.Container) migrateDBOnStart := strconv.FormatBool(d.platform.Spec.Services.DataIndex.Persistence.MigrateDBOnStartUp) // specific to DataIndex c.Env = append(c.Env, corev1.EnvVar{Name: quarkusHibernateORMDatabaseGeneration, Value: "update"}, corev1.EnvVar{Name: quarkusFlywayMigrateAtStart, Value: migrateDBOnStart}) - + return c } return containerSpec diff --git a/operator.yaml b/operator.yaml index aed41049f..a1b679ac6 100644 --- a/operator.yaml +++ b/operator.yaml @@ -1059,8 +1059,11 @@ spec: persistence: description: Persists service to a datasource of choice. Ephemeral by default. - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. @@ -1117,6 +1120,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details @@ -8931,8 +8936,11 @@ spec: persistence: description: Persists service to a datasource of choice. Ephemeral by default. - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. @@ -8989,6 +8997,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details @@ -19002,8 +19012,11 @@ spec: persistence: description: Persistence defines the database persistence configuration for the workflow - maxProperties: 1 + maxProperties: 2 properties: + migrateDBOnStartUp: + description: Whether to migrate database on service startup? + type: boolean postgresql: description: Connect configured services to a postgresql database. maxProperties: 2 @@ -19057,6 +19070,8 @@ spec: required: - secretRef type: object + required: + - migrateDBOnStartUp type: object podTemplate: description: PodTemplate describes the deployment details of this