This is an automated email from the ASF dual-hosted git repository.
ricardozanini pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-serverless-operator.git
The following commit(s) were added to refs/heads/main by this push:
new bd152c33 Add migrateDBOnStart property under persistence (#507)
bd152c33 is described below
commit bd152c33238adffb0ad7fdefbe28788d10d9307b
Author: rhkp <[email protected]>
AuthorDate: Wed Aug 21 14:51:23 2024 -0400
Add migrateDBOnStart property under persistence (#507)
---
Makefile | 4 ++--
api/v1alpha08/sonataflow_persistence_types.go | 5 ++++-
.../sonataflow.org_sonataflowplatforms.yaml | 14 ++++++++++++--
bundle/manifests/sonataflow.org_sonataflows.yaml | 7 ++++++-
.../bases/sonataflow.org_sonataflowplatforms.yaml | 14 ++++++++++++--
config/crd/bases/sonataflow.org_sonataflows.yaml | 7 ++++++-
controllers/platform/services/services.go | 8 ++++++--
controllers/sonataflowplatform_controller_test.go | 12 ++++++++++--
operator.yaml | 21 ++++++++++++++++++---
.../02-sonataflow_platform.yaml | 4 ++++
.../02-sonataflow_platform.yaml | 2 ++
.../dev/postgreSQL/02-sonataflow_platform.yaml | 2 ++
.../preview/postgreSQL/02-sonataflow_platform.yaml | 2 ++
.../04-sonataflow_callbackstatetimeouts.sw.yaml | 1 +
.../03-sonataflow_callbackstatetimeouts.sw.yaml | 1 +
.../02-sonataflow_platform.yaml | 4 ++++
...low_callbackstatetimeouts-no-persistence.sw.yaml | 4 +++-
17 files changed, 95 insertions(+), 17 deletions(-)
diff --git a/Makefile b/Makefile
index f88a8759..ddb2ff8b 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
@@ -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/api/v1alpha08/sonataflow_persistence_types.go
b/api/v1alpha08/sonataflow_persistence_types.go
index d0b08e46..e32e027c 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/bundle/manifests/sonataflow.org_sonataflowplatforms.yaml
b/bundle/manifests/sonataflow.org_sonataflowplatforms.yaml
index 09a2f254..f9d77226 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 5ff75cae..effa0cd8 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/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml
b/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml
index 648b1bcd..c4587db7 100644
--- a/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml
+++ b/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml
@@ -568,8 +568,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.
@@ -626,6 +629,8 @@ spec:
required:
- secretRef
type: object
+ required:
+ - migrateDBOnStartUp
type: object
podTemplate:
description: PodTemplate describes the deployment
details
@@ -8440,8 +8445,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.
@@ -8498,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 7ee4675c..fffbbbb1 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 58e068da..f2455d8a 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.Persistence.MigrateDBOnStartUp)
// 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: 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: "true"})
+ 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
}
diff --git a/controllers/sonataflowplatform_controller_test.go
b/controllers/sonataflowplatform_controller_test.go
index 022c7606..23230d8f 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{
diff --git a/operator.yaml b/operator.yaml
index aed41049..a1b679ac 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
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 d746ac94..cce1782e 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
@@ -30,6 +30,8 @@ spec:
services:
dataIndex:
enabled: false
+ persistence:
+ migrateDBOnStartUp: true
podTemplate:
initContainers:
- name: init-postgres
@@ -38,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 90e361b8..14b0cef9 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
@@ -35,6 +35,7 @@ spec:
dataIndex:
enabled: false
persistence:
+ migrateDBOnStartUp: true
postgresql:
jdbcUrl:
jdbc:postgresql://postgres:5432/sonataflow?currentSchema=data-index-service
secretRef:
@@ -50,6 +51,7 @@ spec:
jobService:
enabled: false
persistence:
+ 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 77d95c96..2437863f 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: true
postgresql:
jdbcUrl:
jdbc:postgresql://postgres:5432/sonataflow?currentSchema=data-index-service
secretRef:
@@ -41,6 +42,7 @@ spec:
jobService:
enabled: false
persistence:
+ migrateDBOnStartUp: true
postgresql:
jdbcUrl:
jdbc:postgresql://postgres:5432/sonataflow?currentSchema=jobs-service
secretRef:
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 9514b81a..837f9116 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:
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 ec738e94..58c8ce4c 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/03-sonataflow_callbackstatetimeouts.sw.yaml
b/test/testdata/workflow/persistence/from_platform_overwritten_by_service/03-sonataflow_callbackstatetimeouts.sw.yaml
index fb696bff..d39a521e 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 2a7db22a..fb397b1e 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
@@ -34,6 +34,8 @@ spec:
services:
dataIndex:
enabled: true
+ persistence:
+ migrateDBOnStartUp: true
podTemplate:
initContainers:
- name: init-postgres
@@ -42,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/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 7a8226c6..f7f4720f 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:
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]