From c5c52242060daaefb1f257acc41bdb67b10582a7 Mon Sep 17 00:00:00 2001 From: Vaibhav Pathak Date: Mon, 23 Feb 2026 14:04:54 +0530 Subject: [PATCH] Shared Mysql fix --- .../workflow-template.yaml | 144 +++++++++++++++++- 1 file changed, 140 insertions(+), 4 deletions(-) diff --git a/environment-provisioner/workflow-template.yaml b/environment-provisioner/workflow-template.yaml index 3d7e57a..41656ff 100644 --- a/environment-provisioner/workflow-template.yaml +++ b/environment-provisioner/workflow-template.yaml @@ -36,6 +36,8 @@ spec: value: '{}' - name: helmExternalParams value: '{}' + - name: sharedMysqlConfig + value: '[]' entrypoint: provision-environment templates: - inputs: @@ -50,6 +52,7 @@ spec: - name: manualDependencyUrls - name: valuesContentEdits - name: helmExternalParams + - name: sharedMysqlConfig name: provision-environment steps: - - arguments: @@ -74,6 +77,8 @@ spec: value: '{{inputs.parameters.valuesContentEdits}}' - name: helmExternalParams value: '{{inputs.parameters.helmExternalParams}}' + - name: sharedMysqlConfig + value: '{{inputs.parameters.sharedMysqlConfig}}' name: create-git-repo template: create-repo - - arguments: @@ -104,6 +109,7 @@ spec: - name: manualDependencyUrls - name: valuesContentEdits - name: helmExternalParams + - name: sharedMysqlConfig name: create-repo script: command: @@ -158,6 +164,10 @@ spec: {{inputs.parameters.helmExternalParams}} EOFPARAM ) + SHARED_MYSQL_CONFIG=$(cat <<'EOFPARAM' + {{inputs.parameters.sharedMysqlConfig}} + EOFPARAM + ) # Sanitize namespace name (replace spaces and special chars with hyphens) NAMESPACE=$(echo "$NAMESPACE" | tr '[:upper:]' '[:lower:]' | tr ' _' '-' | sed 's/[^a-z0-9-]//g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//') @@ -252,6 +262,91 @@ spec: kubernetes.io/metadata.name: argo-workflows EOF + # Create shared MySQL instances + echo "Processing shared MySQL instances..." + echo "$SHARED_MYSQL_CONFIG" | jq -c '.[]' 2>/dev/null | while read -r instance; do + INSTANCE_NAME=$(echo "$instance" | jq -r '.instanceName') + VERSION=$(echo "$instance" | jq -r '.version') + + if [ -z "$INSTANCE_NAME" ] || [ "$INSTANCE_NAME" = "null" ]; then + continue + fi + + echo "Creating shared MySQL instance: $INSTANCE_NAME (MySQL $VERSION)" + + # Build SQL to create all databases and grant permissions + DB_INIT_SQL="-- Auto-generated database initialization" + for db in $(echo "$instance" | jq -c '.databases[]'); do + DB_NAME=$(echo "$db" | jq -r '.databaseName') + SERVICE_NAME=$(echo "$db" | jq -r '.serviceName') + DB_INIT_SQL="${DB_INIT_SQL} + -- Database for ${SERVICE_NAME} + CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + GRANT ALL PRIVILEGES ON \`${DB_NAME}\`.* TO 'mysql_user'@'%';" + done + DB_INIT_SQL="${DB_INIT_SQL} + FLUSH PRIVILEGES;" + + # Create ArgoCD Application for shared MySQL + cat > "manifests/${INSTANCE_NAME}-application.yaml" <