diff --git a/cmd/template_dbaas_test.go b/cmd/template_dbaas_test.go index 6569098f..f86e4d3e 100644 --- a/cmd/template_dbaas_test.go +++ b/cmd/template_dbaas_test.go @@ -87,6 +87,21 @@ func TestDBaaSTemplateGeneration(t *testing.T) { templatePath: "testdata/output", want: "../internal/testdata/node/dbaas-templates/dbaas-2", }, + { + name: "test6 - postgres", + args: testdata.GetSeedData( + testdata.TestData{ + ProjectName: "example-project", + EnvironmentName: "main", + Branch: "main", + LagoonYAML: "../internal/testdata/complex/lagoon.services.yml", + ProjectVariables: []lagoon.EnvironmentVariable{ + {Name: "LAGOON_DBAAS_ENVIRONMENT_TYPES", Value: "postgres-15:production-postgres,mongo-4:production-mongo", Scope: "build"}, + }, + }, true), + templatePath: "testdata/output", + want: "../internal/testdata/complex/dbaas-templates/dbaas-4", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/internal/testdata/complex/dbaas-templates/dbaas-4/dbaas.yaml b/internal/testdata/complex/dbaas-templates/dbaas-4/dbaas.yaml new file mode 100644 index 00000000..ef4ff46a --- /dev/null +++ b/internal/testdata/complex/dbaas-templates/dbaas-4/dbaas.yaml @@ -0,0 +1,26 @@ +--- +apiVersion: mariadb.amazee.io/v1 +kind: MariaDBConsumer +metadata: + annotations: + lagoon.sh/branch: main + lagoon.sh/version: v2.7.x + creationTimestamp: null + labels: + app.kubernetes.io/instance: mariadb-10-11 + app.kubernetes.io/managed-by: build-deploy-tool + app.kubernetes.io/name: mariadb-dbaas + lagoon.sh/buildType: branch + lagoon.sh/environment: main + lagoon.sh/environmentType: production + lagoon.sh/project: example-project + lagoon.sh/service: mariadb-10-11 + lagoon.sh/service-type: mariadb-dbaas + lagoon.sh/template: mariadb-dbaas-0.1.0 + name: mariadb-10-11 +spec: + consumer: + services: {} + environment: production + provider: {} +status: {} diff --git a/internal/testdata/complex/docker-compose.services.yml b/internal/testdata/complex/docker-compose.services.yml new file mode 100644 index 00000000..84077db5 --- /dev/null +++ b/internal/testdata/complex/docker-compose.services.yml @@ -0,0 +1,116 @@ +version: '2' + +volumes: + solr-7-data: + solr-8-data: + opensearch-2-data: + scratch: + +services: + web: + build: + context: . + dockerfile: Dockerfile + labels: + lagoon.type: basic-persistent + lagoon.persistent: /app/files + lagoon.persistent.size: 10Mi + lagoon.persistent.class: bulk + ports: + - '3000:3000' + container_name: go-web + environment: + - LAGOON_TEST_VAR=internal-services-test + - LAGOON_GIT_SHA=SHA256 + - LAGOON_ENVIRONMENT_TYPE=development + - STORAGE_LOCATION=/app/files + volumes: + - scratch:/app/files + + mariadb-10-5: + image: uselagoon/mariadb-10.5:latest + labels: + lagoon.type: mariadb-single + lagoon.persistent.size: 100Mi + ports: + - '3306' + + mariadb-10-11: + image: uselagoon/mariadb-10.11:latest + labels: + lagoon.type: mariadb + ports: + - '3306' + + postgres-11: + image: uselagoon/postgres-11:latest + labels: + lagoon.type: postgres-single + lagoon.persistent.size: 100Mi + ports: + - '5432' + + postgres-15: + image: uselagoon/postgres-15:latest + labels: + lagoon.type: postgres + ports: + - '5432' + + opensearch-2: + image: uselagoon/opensearch-2:latest + environment: + - cluster.name=opensearch-cluster + - node.name=opensearch-2 + - discovery.seed_hosts=opensearch-2 + - cluster.initial_cluster_manager_nodes=opensearch-2 + - bootstrap.memory_lock=true + - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 + hard: 65536 + volumes: + - opensearch-2-data:/usr/share/opensearch/data + labels: + lagoon.type: opensearch + lagoon.persistent.size: 100Mi + ports: + - '9200' + + mongo-4: + image: uselagoon/mongo-4:latest + labels: + lagoon.type: mongo + ports: + - '27017' + + redis-6: + image: uselagoon/redis-5:latest + labels: + lagoon.type: redis + ports: + - '6379' + + redis-7: + image: uselagoon/redis-6:latest + labels: + lagoon.type: redis + ports: + - '6379' + + solr-8: + image: uselagoon/solr-8:latest + labels: + lagoon.type: solr + lagoon.persistent.size: 100Mi + ports: + - "8983" + volumes: + - solr-8-data:/var/solr + command: + - solr-precreate + - mycore \ No newline at end of file diff --git a/internal/testdata/complex/lagoon.services.yml b/internal/testdata/complex/lagoon.services.yml new file mode 100644 index 00000000..0557c7f0 --- /dev/null +++ b/internal/testdata/complex/lagoon.services.yml @@ -0,0 +1,5 @@ +--- +docker-compose-yaml: ../internal/testdata/complex/docker-compose.services.yml + +environment_variables: + git_sha: 'true' \ No newline at end of file diff --git a/legacy/build-deploy-docker-compose.sh b/legacy/build-deploy-docker-compose.sh index b5556768..be548edb 100755 --- a/legacy/build-deploy-docker-compose.sh +++ b/legacy/build-deploy-docker-compose.sh @@ -389,6 +389,8 @@ if [ ! -z "$LAGOON_ENVIRONMENT_VARIABLES" ]; then fi set -x +# loop through created DBAAS templates +DBAAS=($(build-deploy-tool identify dbaas)) for COMPOSE_SERVICE in "${COMPOSE_SERVICES[@]}" do # The name of the service can be overridden, if not we use the actual servicename @@ -444,6 +446,34 @@ do # The ImageName is the same as the Name of the Docker Compose ServiceName IMAGE_NAME=$COMPOSE_SERVICE + for DBAAS_ENTRY in "${DBAAS[@]}" + do + IFS=':' read -ra DBAAS_ENTRY_SPLIT <<< "$DBAAS_ENTRY" + DBAAS_SERVICE_NAME=${DBAAS_ENTRY_SPLIT[0]} + DBAAS_SERVICE_TYPE=${DBAAS_ENTRY_SPLIT[1]} + if [ "$SERVICE_TYPE" == "mariadb" ]; then + if [ "$DBAAS_SERVICE_NAME" == "$SERVICE_NAME" ]; then + SERVICE_TYPE=$DBAAS_SERVICE_TYPE + else + SERVICE_TYPE="mariadb-single" + fi + fi + if [ "$SERVICE_TYPE" == "postgres" ]; then + if [ "$DBAAS_SERVICE_NAME" == "$SERVICE_NAME" ]; then + SERVICE_TYPE=$DBAAS_SERVICE_TYPE + else + SERVICE_TYPE="postgres-single" + fi + fi + if [ "$SERVICE_TYPE" == "mongo" ]; then + if [ "$DBAAS_SERVICE_NAME" == "$SERVICE_NAME" ]; then + SERVICE_TYPE=$DBAAS_SERVICE_TYPE + else + SERVICE_TYPE="mongodb-single" + fi + fi + done + # Do not handle images for shared services if [[ "$SERVICE_TYPE" != "mariadb-dbaas" ]] && [[ "$SERVICE_TYPE" != "mariadb-shared" ]] && @@ -1303,8 +1333,6 @@ do SERVICE_NAME=${DBAAS_ENTRY_SPLIT[0]} SERVICE_TYPE=${DBAAS_ENTRY_SPLIT[1]} - # remove the image from images to pull - unset IMAGES_PULL[$SERVICE_NAME] SERVICE_NAME_UPPERCASE=$(echo "$SERVICE_NAME" | tr '[:lower:]' '[:upper:]' | tr '-' '_')