From ffd8d71a0644ac660e29d4fb4712df685c12db90 Mon Sep 17 00:00:00 2001 From: Wade Barnes Date: Fri, 18 Jan 2019 11:27:25 -0800 Subject: [PATCH] Integrate webhook backup notification. --- .../openshift/backup-deploy.bc-tob.dev.param | 4 ++ .../openshift/backup-deploy.bc-tob.param | 4 ++ .../openshift/backup-deploy.bc-tob.prod.param | 4 ++ .../openshift/backup-deploy.bc-tob.test.param | 4 ++ tob-backup/openshift/backup-deploy.dev.param | 4 ++ .../openshift/backup-deploy.ontario.dev.param | 4 ++ .../openshift/backup-deploy.ontario.param | 6 +- .../backup-deploy.ontario.prod.param | 4 ++ .../backup-deploy.ontario.test.param | 4 ++ .../openshift/backup-deploy.overrides.sh | 63 ++++++++++++++++++- tob-backup/openshift/backup-deploy.param | 3 + tob-backup/openshift/backup-deploy.prod.param | 5 +- tob-backup/openshift/backup-deploy.test.param | 3 + .../openshift/templates/backup-deploy.json | 43 ++++++++++--- 14 files changed, 145 insertions(+), 10 deletions(-) diff --git a/tob-backup/openshift/backup-deploy.bc-tob.dev.param b/tob-backup/openshift/backup-deploy.bc-tob.dev.param index 968bdc635..6877f679a 100644 --- a/tob-backup/openshift/backup-deploy.bc-tob.dev.param +++ b/tob-backup/openshift/backup-deploy.bc-tob.dev.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= # NAME=backup +# APP_GROUP=tob # SOURCE_IMAGE_NAME=backup # IMAGE_NAMESPACE=devex-von-tools TAG_NAME=dev @@ -11,6 +12,9 @@ TAG_NAME=dev # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=TheOrgBook-BC (dev) +ENVIRONMENT_NAME=devex-von-bc-tob-dev # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.bc-tob.param b/tob-backup/openshift/backup-deploy.bc-tob.param index 79bf45b7c..b05128911 100644 --- a/tob-backup/openshift/backup-deploy.bc-tob.param +++ b/tob-backup/openshift/backup-deploy.bc-tob.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= NAME=backup +APP_GROUP=tob SOURCE_IMAGE_NAME=backup IMAGE_NAMESPACE=devex-von-tools TAG_NAME=dev @@ -11,6 +12,9 @@ DATABASE_SERVICE_NAME=postgresql DATABASE_DEPLOYMENT_NAME=postgresql WALLET_DB_HOST_NAME=wallet-db BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=TheOrgBook-BC (dev) +ENVIRONMENT_NAME=devex-von-bc-tob-dev BACKUP_DIR=/backups/ NUM_BACKUPS= DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.bc-tob.prod.param b/tob-backup/openshift/backup-deploy.bc-tob.prod.param index b32edf950..8b6dc5b16 100644 --- a/tob-backup/openshift/backup-deploy.bc-tob.prod.param +++ b/tob-backup/openshift/backup-deploy.bc-tob.prod.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= # NAME=backup +# APP_GROUP=tob # SOURCE_IMAGE_NAME=backup # IMAGE_NAMESPACE=devex-von-tools TAG_NAME=bc-tob-prod @@ -11,6 +12,9 @@ TAG_NAME=bc-tob-prod # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=TheOrgBook-BC (prod) +ENVIRONMENT_NAME=devex-von-bc-tob-prod # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.bc-tob.test.param b/tob-backup/openshift/backup-deploy.bc-tob.test.param index 7f42f1438..d9fdcb75e 100644 --- a/tob-backup/openshift/backup-deploy.bc-tob.test.param +++ b/tob-backup/openshift/backup-deploy.bc-tob.test.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= # NAME=backup +# APP_GROUP=tob # SOURCE_IMAGE_NAME=backup # IMAGE_NAMESPACE=devex-von-tools TAG_NAME=bc-tob-test @@ -11,6 +12,9 @@ TAG_NAME=bc-tob-test # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=TheOrgBook-BC (test) +ENVIRONMENT_NAME=devex-von-bc-tob-test # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.dev.param b/tob-backup/openshift/backup-deploy.dev.param index e8d60be3e..00815f29b 100644 --- a/tob-backup/openshift/backup-deploy.dev.param +++ b/tob-backup/openshift/backup-deploy.dev.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= # NAME=backup +# APP_GROUP=tob # SOURCE_IMAGE_NAME=backup # IMAGE_NAMESPACE=devex-von-tools TAG_NAME=dev @@ -11,6 +12,9 @@ TAG_NAME=dev # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=Verifiable Organizations Network (dev) +ENVIRONMENT_NAME=devex-von-dev # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.ontario.dev.param b/tob-backup/openshift/backup-deploy.ontario.dev.param index eb0ee0207..c5b979272 100644 --- a/tob-backup/openshift/backup-deploy.ontario.dev.param +++ b/tob-backup/openshift/backup-deploy.ontario.dev.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= # NAME=backup +# APP_GROUP=tob # SOURCE_IMAGE_NAME=backup # IMAGE_NAMESPACE=ontvon-von-tools TAG_NAME=dev @@ -11,6 +12,9 @@ TAG_NAME=dev # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=Ontario's Verifiable Organizations (dev) +ENVIRONMENT_NAME=ontvon-von-dev # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.ontario.param b/tob-backup/openshift/backup-deploy.ontario.param index 994697e02..58b35c442 100644 --- a/tob-backup/openshift/backup-deploy.ontario.param +++ b/tob-backup/openshift/backup-deploy.ontario.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= NAME=backup +APP_GROUP=tob SOURCE_IMAGE_NAME=backup IMAGE_NAMESPACE=ontvon-von-tools TAG_NAME=dev @@ -11,6 +12,9 @@ DATABASE_SERVICE_NAME=postgresql DATABASE_DEPLOYMENT_NAME=postgresql WALLET_DB_HOST_NAME=wallet-db BACKUP_STRATEGY=rolling +WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=Ontario's Verifiable Organizations (dev) +ENVIRONMENT_NAME=ontvon-von-dev BACKUP_DIR=/backups/ NUM_BACKUPS= DAILY_BACKUPS= @@ -22,7 +26,7 @@ CONFIG_MAP_NAME=backup-conf CONFIG_MOUNT_PATH=/ PERSISTENT_VOLUME_NAME=backup-pvc PERSISTENT_VOLUME_SIZE=1Gi -PERSISTENT_VOLUME_CLASS= +PERSISTENT_VOLUME_CLASS=gluster-file CPU_REQUEST=0 CPU_LIMIT=0 MEMORY_REQUEST=0Mi diff --git a/tob-backup/openshift/backup-deploy.ontario.prod.param b/tob-backup/openshift/backup-deploy.ontario.prod.param index 14674604f..8176ae867 100644 --- a/tob-backup/openshift/backup-deploy.ontario.prod.param +++ b/tob-backup/openshift/backup-deploy.ontario.prod.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= # NAME=backup +# APP_GROUP=tob # SOURCE_IMAGE_NAME=backup # IMAGE_NAMESPACE=ontvon-von-tools TAG_NAME=prod @@ -11,6 +12,9 @@ TAG_NAME=prod # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=Ontario's Verifiable Organizations (prod) +ENVIRONMENT_NAME=ontvon-von-prod # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.ontario.test.param b/tob-backup/openshift/backup-deploy.ontario.test.param index 18fc3cfa5..4f84ebd90 100644 --- a/tob-backup/openshift/backup-deploy.ontario.test.param +++ b/tob-backup/openshift/backup-deploy.ontario.test.param @@ -4,6 +4,7 @@ # Template File: templates/backup-deploy.json #========================================================= # NAME=backup +# APP_GROUP=tob # SOURCE_IMAGE_NAME=backup # IMAGE_NAMESPACE=ontvon-von-tools TAG_NAME=test @@ -11,6 +12,9 @@ TAG_NAME=test # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=Ontario's Verifiable Organizations (test) +ENVIRONMENT_NAME=ontvon-von-test # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.overrides.sh b/tob-backup/openshift/backup-deploy.overrides.sh index 8fd37b1e0..1632b474f 100644 --- a/tob-backup/openshift/backup-deploy.overrides.sh +++ b/tob-backup/openshift/backup-deploy.overrides.sh @@ -22,8 +22,69 @@ generateConfigMap() { oc create configmap ${_config_map_name} --from-file ${_source_file} --dry-run -o ${_output_format} > ${_output_file} } +printStatusMsg(){ + ( + _msg=${1} + _yellow='\033[1;33m' + _nc='\033[0m' # No Color + printf "\n${_yellow}${_msg}\n${_nc}" >&2 + ) +} + +readParameter(){ + ( + _msg=${1} + _paramName=${2} + _defaultValue=${3} + _encode=${4} + + _yellow='\033[1;33m' + _nc='\033[0m' # No Color + _message=$(echo -e "\n${_yellow}${_msg}\n${_nc}") + + read -r -p $"${_message}" ${_paramName} + + writeParameter "${_paramName}" "${_defaultValue}" "${_encode}" + ) +} + +writeParameter(){ + ( + _paramName=${1} + _defaultValue=${2} + _encode=${3} + + if [ -z "${_encode}" ]; then + echo "${_paramName}=${!_paramName:-${_defaultValue}}" >> ${_overrideParamFile} + else + # The key/value pair must be contained on a single line + _encodedValue=$(echo -n "${!_paramName:-${_defaultValue}}"|base64 -w 0) + echo "${_paramName}=${_encodedValue}" >> ${_overrideParamFile} + fi + ) +} + +initialize(){ + # Define the name of the override param file. + _scriptName=$(basename ${0%.*}) + export _overrideParamFile=${_scriptName}.param + + printStatusMsg "Initializing ${_scriptName} ..." + + # Remove any previous version of the file ... + if [ -f ${_overrideParamFile} ]; then + printStatusMsg "Removing previous copy of ${_overrideParamFile} ..." + rm -f ${_overrideParamFile} + fi +} + +initialize + generateConfigMap "${CONFIG_MAP_NAME}" "${SOURCE_FILE}" "${OUTPUT_FORMAT}" "${OUTPUT_FILE}" -SPECIALDEPLOYPARMS="" +# Get the webhook URL +readParameter "WEBHOOK_URL - Please provide the webhook endpoint URL. If left blank, the webhook integration feature will be disabled:" WEBHOOK_URL "" + +SPECIALDEPLOYPARMS="--param-file=${_overrideParamFile}" echo ${SPECIALDEPLOYPARMS} diff --git a/tob-backup/openshift/backup-deploy.param b/tob-backup/openshift/backup-deploy.param index 79bf45b7c..0ef7185b8 100644 --- a/tob-backup/openshift/backup-deploy.param +++ b/tob-backup/openshift/backup-deploy.param @@ -11,6 +11,9 @@ DATABASE_SERVICE_NAME=postgresql DATABASE_DEPLOYMENT_NAME=postgresql WALLET_DB_HOST_NAME=wallet-db BACKUP_STRATEGY=rolling +WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=Verifiable Organizations Network (dev) +ENVIRONMENT_NAME=devex-von-dev BACKUP_DIR=/backups/ NUM_BACKUPS= DAILY_BACKUPS= diff --git a/tob-backup/openshift/backup-deploy.prod.param b/tob-backup/openshift/backup-deploy.prod.param index 675372051..80a4f3e81 100644 --- a/tob-backup/openshift/backup-deploy.prod.param +++ b/tob-backup/openshift/backup-deploy.prod.param @@ -11,6 +11,9 @@ TAG_NAME=prod # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=Verifiable Organizations Network (prod) +ENVIRONMENT_NAME=devex-von-prod # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= @@ -22,7 +25,7 @@ TAG_NAME=prod # CONFIG_MOUNT_PATH=/ # PERSISTENT_VOLUME_NAME=backup-pvc # PERSISTENT_VOLUME_SIZE=1Gi -# PERSISTENT_VOLUME_CLASS= +# PERSISTENT_VOLUME_CLASS=gluster-file # CPU_REQUEST=0 # CPU_LIMIT=0 # MEMORY_REQUEST=0Mi diff --git a/tob-backup/openshift/backup-deploy.test.param b/tob-backup/openshift/backup-deploy.test.param index c2d6e962e..b2da26187 100644 --- a/tob-backup/openshift/backup-deploy.test.param +++ b/tob-backup/openshift/backup-deploy.test.param @@ -11,6 +11,9 @@ TAG_NAME=test # DATABASE_DEPLOYMENT_NAME=postgresql # WALLET_DB_HOST_NAME=wallet-db # BACKUP_STRATEGY=rolling +# WEBHOOK_URL= +ENVIRONMENT_FRIENDLY_NAME=Verifiable Organizations Network (test) +ENVIRONMENT_NAME=devex-von-test # BACKUP_DIR=/backups/ # NUM_BACKUPS= # DAILY_BACKUPS= diff --git a/tob-backup/openshift/templates/backup-deploy.json b/tob-backup/openshift/templates/backup-deploy.json index ff500e015..53a2d4588 100644 --- a/tob-backup/openshift/templates/backup-deploy.json +++ b/tob-backup/openshift/templates/backup-deploy.json @@ -12,7 +12,7 @@ "name": "${PERSISTENT_VOLUME_NAME}", "labels": { "app": "${NAME}-persistent", - "template": "${NAME}-persistent-template", + "template": "${NAME}-persistent-template", "app-group": "${APP_GROUP}" } }, @@ -34,7 +34,7 @@ "metadata": { "name": "${NAME}", "labels": { - "template": "${NAME}-deployment", + "template": "${NAME}-deployment", "app-group": "${APP_GROUP}" }, "annotations": { @@ -130,10 +130,6 @@ "name": "BACKUP_PERIOD", "value": "${BACKUP_PERIOD}" }, - { - "name": "DATABASE_SERVICE_NAME", - "value": "${DATABASE_SERVICE_NAME}" - }, { "name": "POSTGRESQL_USER", "valueFrom": { @@ -169,6 +165,18 @@ "key": "database-password" } } + }, + { + "name": "WEBHOOK_URL", + "value": "${WEBHOOK_URL}" + }, + { + "name": "ENVIRONMENT_FRIENDLY_NAME", + "value": "${ENVIRONMENT_FRIENDLY_NAME}" + }, + { + "name": "ENVIRONMENT_NAME", + "value": "${ENVIRONMENT_NAME}" } ], "resources": { @@ -263,6 +271,27 @@ "required": true, "value": "rolling" }, + { + "name": "WEBHOOK_URL", + "displayName": "Webhook URL", + "description": "The URL of the webhook to use for notifications. If not specified, the webhook integration feature is disabled.", + "required": false, + "value": "" + }, + { + "name": "ENVIRONMENT_FRIENDLY_NAME", + "displayName": "Friendly Environment Name", + "description": "The human readable name of the environment. This variable is used by the webhook integration to identify the environment in which the backup notifications originate.", + "required": false, + "value": "" + }, + { + "name": "ENVIRONMENT_NAME", + "displayName": "Environment Name (Environment Id)", + "description": "The name or Id of the environment. This variable is used by the webhook integration to identify the environment in which the backup notifications originate.", + "required": false, + "value": "" + }, { "name": "BACKUP_DIR", "displayName": "The root backup directory", @@ -345,7 +374,7 @@ "displayName": "Persistent Volume Class name", "description": "The class of the volume; gluster-file, gluster-block, gluster-file-db", "required": false, - "value": "" + "value": "gluster-file" }, { "name": "CPU_REQUEST",