github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/run.sh (about) 1 #!/usr/bin/env bash 2 3 # This script is responsible for running Director with PostgreSQL. 4 5 RED='\033[0;31m' 6 GREEN='\033[0;32m' 7 YELLOW='\033[0;33m' 8 INVERTED='\033[7m' 9 NC='\033[0m' # No Color 10 11 set -e 12 13 ROOT_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 14 SCHEMA_MIGRATOR_COMPONENT_PATH=${ROOT_PATH}/../schema-migrator 15 16 SKIP_DB_CLEANUP=false 17 REUSE_DB=false 18 DUMP_DB=false 19 AUTO_TERMINATE=false 20 DISABLE_ASYNC_MODE=true 21 COMPONENT='director' 22 TERMINAION_TIMEOUT_IN_SECONDS=300 23 24 POSITIONAL=() 25 while [[ $# -gt 0 ]] 26 do 27 28 key="$1" 29 30 case ${key} in 31 --skip-app-start) 32 SKIP_APP_START=true 33 shift # past argument 34 ;; 35 --skip-db-cleanup) 36 SKIP_DB_CLEANUP=true 37 shift 38 ;; 39 --reuse-db) 40 REUSE_DB=true 41 shift 42 ;; 43 --dump-db) 44 DUMP_DB=true 45 shift 46 ;; 47 --debug) 48 DEBUG=true 49 DEBUG_PORT=40000 50 shift 51 ;; 52 --async-enabled) 53 DISABLE_ASYNC_MODE=false 54 shift 55 ;; 56 --tenant-fetcher) 57 COMPONENT='tenantfetcher-svc' 58 shift 59 ;; 60 --ns-adapter) 61 COMPONENT='ns-adapter' 62 export APP_SYSTEM_TO_TEMPLATE_MAPPINGS='[{ "Name": "SAP S/4HANA On-Premise", "SourceKey": ["type"], "SourceValue": ["on-premise"]}]' 63 shift 64 ;; 65 --jwks-endpoint) 66 export APP_JWKS_ENDPOINT=$2 67 shift 68 shift 69 ;; 70 --debug-port) 71 DEBUG_PORT=$2 72 shift 73 shift 74 ;; 75 --auto-terminate) 76 AUTO_TERMINATE=true 77 TERMINAION_TIMEOUT_IN_SECONDS=$2 78 shift 79 shift 80 ;; 81 --*) 82 echo "Unknown flag ${1}" 83 exit 1 84 ;; 85 esac 86 done 87 set -- "${POSITIONAL[@]}" # restore positional parameters 88 89 POSTGRES_CONTAINER="test-postgres" 90 # Using v12 because the DB Dump file headers are not compatible with Postgres v11. 91 POSTGRES_VERSION="12" 92 93 DB_USER="postgres" 94 DB_PWD="pgsql@12345" 95 DB_NAME="compass" 96 DB_PORT="5432" 97 DB_HOST="127.0.0.1" 98 99 CLIENT_CERT_SECRET_NAMESPACE="default" 100 CLIENT_CERT_SECRET_NAME="external-client-certificate" 101 EXT_SVC_CERT_SECRET_NAME="ext-svc-client-certificate" 102 103 function cleanup() { 104 105 if [[ ${DEBUG} == true ]]; then 106 echo -e "${GREEN}Cleanup Director binary${NC}" 107 rm $GOPATH/src/github.com/kyma-incubator/compass/components/director/director 108 fi 109 110 if [[ ${SKIP_DB_CLEANUP} = false ]]; then 111 echo -e "${GREEN}Cleanup Postgres container${NC}" 112 docker rm --force ${POSTGRES_CONTAINER} 113 else 114 echo -e "${GREEN}Skipping Postgres container cleanup${NC}" 115 fi 116 117 echo -e "${GREEN}Destroying k3d cluster...${NC}" 118 k3d cluster delete k3d-cluster 119 } 120 121 trap cleanup EXIT 122 123 echo -e "${GREEN}Creating k3d cluster...${NC}" 124 curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | TAG=v5.2.2 bash 125 k3d cluster create k3d-cluster --api-port 6550 --servers 1 --port 443:443@loadbalancer --image rancher/k3s:v1.22.4-k3s1 --kubeconfig-update-default --wait 126 127 if [[ ${REUSE_DB} = true ]]; then 128 echo -e "${GREEN}Will reuse existing Postgres container${NC}" 129 else 130 set +e 131 echo -e "${GREEN}Start Postgres in detached mode${NC}" 132 docker run -d --name ${POSTGRES_CONTAINER} \ 133 -e POSTGRES_HOST=${DB_HOST} \ 134 -e POSTGRES_USER=${DB_USER} \ 135 -e POSTGRES_PASSWORD=${DB_PWD} \ 136 -e POSTGRES_DB=${DB_NAME} \ 137 -e POSTGRES_PORT=${DB_PORT} \ 138 -p ${DB_PORT}:${DB_PORT} \ 139 -v ${ROOT_PATH}/../schema-migrator/seeds:/tmp \ 140 postgres:${POSTGRES_VERSION} 141 142 if [[ $? -ne 0 ]] ; then 143 SKIP_DB_CLEANUP=true 144 exit 1 145 fi 146 147 echo '# WAITING FOR CONNECTION WITH DATABASE #' 148 for i in {1..30} 149 do 150 docker exec ${POSTGRES_CONTAINER} pg_isready -U "${DB_USER}" -h "${DB_HOST}" -p "${DB_PORT}" -d "${DB_NAME}" 151 if [ $? -eq 0 ] 152 then 153 dbReady=true 154 break 155 fi 156 sleep 1 157 done 158 159 if [ "${dbReady}" != true ] ; then 160 echo '# COULD NOT ESTABLISH CONNECTION TO DATABASE #' 161 exit 1 162 fi 163 164 set -e 165 166 echo -e "${GREEN}Populate DB${NC}" 167 168 if [[ ${DUMP_DB} = false ]]; then 169 CONNECTION_STRING="postgres://$DB_USER:$DB_PWD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" 170 migrate -path ${ROOT_PATH}/../schema-migrator/migrations/director -database "$CONNECTION_STRING" up 171 172 cat ${ROOT_PATH}/../schema-migrator/seeds/director/*.sql | \ 173 docker exec -i ${POSTGRES_CONTAINER} psql -U "${DB_USER}" -h "${DB_HOST}" -p "${DB_PORT}" -d "${DB_NAME}" 174 else 175 echo -e "${GREEN}DB dump will be used to prepopulate installation${NC}" 176 177 REMOTE_VERSIONS=($(gsutil ls -R gs://sap-cp-cmp-dev-db-dump/ | grep -o -E '[0-9]+' | sed -e 's/^0\+//' | sort -r)) 178 LOCAL_VERSIONS=($(ls "$SCHEMA_MIGRATOR_COMPONENT_PATH"/migrations/director | grep -o -E '^[0-9]+' | sed -e 's/^0\+//' | sort -ru)) 179 180 SCHEMA_VERSION="" 181 for r in "${REMOTE_VERSIONS[@]}"; do 182 for l in "${LOCAL_VERSIONS[@]}"; do 183 if [[ "$r" == "$l" ]]; then 184 SCHEMA_VERSION=$r 185 break 2; 186 fi 187 done 188 done 189 190 if [[ -z $SCHEMA_VERSION ]]; then 191 echo -e "${RED}\$SCHEMA_VERSION variable cannot be empty${NC}" 192 fi 193 194 echo -e "${YELLOW}Check if there is DB dump in GCS bucket with migration number: $SCHEMA_VERSION...${NC}" 195 gsutil -q stat gs://sap-cp-cmp-dev-db-dump/dump-"${SCHEMA_VERSION}"/toc.dat 196 STATUS=$? 197 198 if [[ $STATUS ]]; then 199 echo -e "${GREEN}DB dump with migration number: $SCHEMA_VERSION exists in the bucket. Will use it...${NC}" 200 else 201 echo -e "${RED}There is no DB dump with migration number: $SCHEMA_VERSION in the bucket.${NC}" 202 exit 1 203 fi 204 205 if [[ ! -d ${ROOT_PATH}/../schema-migrator/seeds/dump-${SCHEMA_VERSION} ]]; then 206 echo -e "${YELLOW}There is no dump with number: $SCHEMA_VERSION locally. Will pull the DB dump from GCR bucket...${NC}" 207 mkdir ${ROOT_PATH}/../schema-migrator/seeds/dump-${SCHEMA_VERSION} 208 gsutil cp -r gs://sap-cp-cmp-dev-db-dump/dump-"${SCHEMA_VERSION}" "${ROOT_PATH}"/../schema-migrator/seeds 209 else 210 echo -e "${GREEN}DB dump already exists on the local system, will reuse it${NC}" 211 fi 212 rm -rf "${ROOT_PATH}"/../schema-migrator/seeds/dump || true 213 cp -R "${ROOT_PATH}"/../schema-migrator/seeds/dump-"${SCHEMA_VERSION}" "${ROOT_PATH}"/../schema-migrator/seeds/dump 214 215 echo -e "${GREEN}Starting DB restore process...${NC}" 216 docker exec -i ${POSTGRES_CONTAINER} pg_restore --verbose --format=directory --jobs=8 --no-owner --no-privileges --username="${DB_USER}" --host="${DB_HOST}" --port="${DB_PORT}" --dbname="${DB_NAME}" tmp/dump 217 218 CONNECTION_STRING="postgres://$DB_USER:$DB_PWD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" 219 migrate -path ${ROOT_PATH}/../schema-migrator/migrations/director -database "$CONNECTION_STRING" up 220 fi 221 fi 222 223 echo "Migration version: $(migrate -path ${ROOT_PATH}/../schema-migrator/migrations/director -database "$CONNECTION_STRING" version 2>&1)" 224 . ${ROOT_PATH}/hack/jwt_generator.sh 225 226 if [[ ${SKIP_APP_START} ]]; then 227 echo -e "${GREEN}Skipping starting application${NC}" 228 while true 229 do 230 sleep 1 231 done 232 fi 233 234 echo -e "${GREEN}Starting application${NC}" 235 236 export APP_DB_USER=${DB_USER} 237 export APP_DB_PASSWORD=${DB_PWD} 238 export APP_DB_NAME=${DB_NAME} 239 export APP_CONFIGURATION_FILE=${ROOT_PATH}/hack/config-local.yaml 240 export APP_OAUTH20_URL="https://oauth2-admin.kyma.local" 241 export APP_OAUTH20_PUBLIC_ACCESS_TOKEN_ENDPOINT="https://oauth2.kyma.local/oauth2/token" 242 export APP_ONE_TIME_TOKEN_URL="http://connector.not.configured.url/graphql" 243 export APP_URL="http://director.not.configured.url/director" 244 export APP_CONNECTOR_URL="http://connector.not.configured.url/connector/graphql" 245 export APP_LEGACY_CONNECTOR_URL="https://adapter-gateway.kyma.local/v1/applications/signingRequests/info" 246 export APP_LOG_LEVEL=debug 247 export APP_HTTP_RETRY_ATTEMPTS=3 248 export APP_HTTP_RETRY_DELAY=100ms 249 export APP_DISABLE_ASYNC_MODE=${DISABLE_ASYNC_MODE} 250 export APP_DISABLE_TENANT_ON_DEMAND_MODE=true 251 export APP_HEALTH_CONFIG_INDICATORS="{database,5s,1s,1s,3}" 252 export APP_SUGGEST_TOKEN_HTTP_HEADER=suggest_token 253 export APP_SCHEMA_MIGRATION_VERSION=$(ls -lr ${ROOT_PATH}/../schema-migrator/migrations/director | head -n 2 | tail -n 1 | tr -s ' ' | cut -d ' ' -f9 | cut -d '_' -f1) 254 export APP_ALLOW_JWT_SIGNING_NONE=true 255 export APP_SELF_REGISTER_DISTINGUISH_LABEL_KEY="non-existent-label-key" 256 export APP_EXTERNAL_CLIENT_CERT_SECRET=${CLIENT_CERT_SECRET_NAMESPACE}/${CLIENT_CERT_SECRET_NAME} 257 export APP_EXTERNAL_CLIENT_CERT_KEY="tls.crt" 258 export APP_EXTERNAL_CLIENT_KEY_KEY="tls.key" 259 export APP_EXTERNAL_CLIENT_CERT_VALUE="certValue" # the default value is not valid but if you want you can override with the desired certificate value 260 export APP_EXTERNAL_CLIENT_KEY_VALUE="keyValue" # the default value is not valid but if you want you can override with the desired key value 261 export APP_EXTERNAL_CLIENT_CERT_SECRET_NAME=${CLIENT_CERT_SECRET_NAME} 262 export APP_EXT_SVC_CLIENT_CERT_SECRET=${CLIENT_CERT_SECRET_NAMESPACE}/${EXT_SVC_CERT_SECRET_NAME} 263 export APP_EXT_SVC_CLIENT_CERT_KEY="tls.crt" 264 export APP_EXT_SVC_CLIENT_KEY_KEY="tls.key" 265 export APP_EXT_SVC_CLIENT_CERT_VALUE="certValue" # the default value is not valid but if you want you can override with the desired certificate value 266 export APP_EXT_SVC_CLIENT_KEY_VALUE="keyValue" # the default value is not valid but if you want you can override with the desired key value 267 export APP_EXT_SVC_CLIENT_CERT_SECRET_NAME=${EXT_SVC_CERT_SECRET_NAME} 268 export APP_INFO_ROOT_CA="--- Feature Disabled Locally ---" 269 export APP_SELF_REGISTER_OAUTH_X509_CERT="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUYwakNDQTdxZ0F3SUJBZ0lKQUtudzEwQi9zejJUTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKQkFZVEFrSkhNUTR3REFZRFZRUUlEQVZzYjJOaGJERU9NQXdHQTFVRUJ3d0ZiRzlqWVd3eERqQU1CZ05WQkFvTQpCV3h2WTJGc01RNHdEQVlEVlFRRERBVnNiMk5oYkRBZ0Z3MHlNakF5TWpVeE16VTFNVEJhR0E4eU1USXlNREl3Ck1URXpOVFV4TUZvd1RURUxNQWtHQTFVRUJoTUNRa2N4RGpBTUJnTlZCQWdNQld4dlkyRnNNUTR3REFZRFZRUUgKREFWc2IyTmhiREVPTUF3R0ExVUVDZ3dGYkc5allXd3hEakFNQmdOVkJBTU1CV3h2WTJGc01JSUNJakFOQmdrcQpoa2lHOXcwQkFRRUZBQU9DQWc4QU1JSUNDZ0tDQWdFQW9UOXdxSE9kVUVqNitGbWhnbHJFYXNQY2l3dzBwSzQvCjA3cDc2MVZXN0JjVk5zWXJ3eXQ3UFB4cW1sSTg3RzZPVGEzN0pRSk9IOXIxSnlVdlRJejBta3ZxazBNWmtLQk8KdjZTTER5Q3BwOGc0TUd6Q0tHcldOWUJIRmNyMHdLS2w1b1V0WG45dDBHOFNXOG1NRjFxWk9pOWlMZEVZeE9kbgpHcmFvWno5RTZ0TFRQU0FDdEJHOVBSdENwb0VQOVl5di9XSjA3ZzlMeG1LL3NZVW1wSjB6RWdscDliYVRETjU1CkNyaFA0TnNxS2R1L0tHd3ArOElTNzFwZ3BYS2hhZ2t5M3JYVVZ5bmNkbXBIS1g0bkE0R0h0S0xSMkE1OVByK1oKVlkrbFBXYXB0Tnh3WEZ6RkNBUVJSbTVib1FIRUhTUmhNbXByL3phemdaUzBobm0zSS9taUZOZjg5L3NFSWpaZwpBYjV4WnpUU0MzNUs4WkV3a3dEOS9hdUVGRHdwby9EYktySzNtSTc4cFlqd2xNKzB6d09rZE5sVHVaUVY2VmFTCkJSekw0L2lBd0tnQ1dJTTNkb1RGczZiVHcrVXlWK2xuLzdkcDFBZWxrbm5TNVpkMFhtUkh4NXVlcmhRQUZDY1kKdzlKT25BWTk1by9RUGp4RWhWaS9tS2R2Z1A2VVg5T1orVHZ1UFB6TnlmK05KeDlFTk90UDVMVk5wUHVSZzJrTQp4NlZ4bnZUeUo4LzBSNTFGOW5qZ3ZxdzF0NDRyZ0J5L3E0VWlrK1h2QUw0dVY0aWcycFUrcEVieW1qekoyZTNpCjNBSkpXQ05hZUdGa3c2YUFpTlhOZmk4VGk1RjdteDgwS2J5S0FmVlMwNDJqRUhtMHYvY3pNN2lxNXdRWkVFSUYKUDZxZDk4M0daazhDQXdFQUFhT0JzakNCcnpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUbwprMzBXVzhCRUxnMEZBWEZscjNnYnpkektvVEI5QmdOVkhTTUVkakIwZ0JUb2szMFdXOEJFTGcwRkFYRmxyM2diCnpkektvYUZScEU4d1RURUxNQWtHQTFVRUJoTUNRa2N4RGpBTUJnTlZCQWdNQld4dlkyRnNNUTR3REFZRFZRUUgKREFWc2IyTmhiREVPTUF3R0ExVUVDZ3dGYkc5allXd3hEakFNQmdOVkJBTU1CV3h2WTJGc2dna0FxZkRYUUgregpQWk13RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUpkbHNtR2k0d1hvSlZ4SnlKVzlDWEZPejhZWkhTWlhicEdsClJXcmI4QkZIMy9SNFhPTTQ5Y3Y4UzErYUZvQ3hJd0taRGFhZVIwNVIxK05jVXNPSnhZL2tGWXNHN3kvMTJFRVIKTi90anVRTGhPNnEzT1piZTUwUFErS2pxbmxURnQrT1ptV1ZQc3NzbUU2WWNhWXBOc09FcmVWZWxNWHNybDBndgpLZ3hLUXFJQ3hJTThNTG1QeUUxSURsS3RSL0RrTkNqNDQybmgvNVlwaUFoOG1BTUE5QjFtcE1uSTZpZFB0RzRhCm5uSGxiVlZaMUE4UWF2bXlCNGRueVZwNlB3QnhSMXJjN0xoV3VBT3V2WkNWWGpxUVZLMkREdEJ0Q3RGcUUrQlQKa1I4MnFjMGtKR2IwYTFkRWRubmJEdU1BQzA0WnRrQnpQTlV6RzNqSkNKVkZhVEsyMVhZQjNkMUR4UTVSUFJyTQptZmVXUlM5cytmdlplOTZmb1BIMmZuREN0aFJkOXI5UXdWSmhZMkRlTzlQOVd0TW9QMWhMempHSnQ1czB2RmpRClE2RDdZaXFHajkvTXhoc1BqZjlucjhCL3ZUVzFWV1hackh2NDBlR01tM1kwRXUvMlA0bFR5YnEyUlp2enhlQTgKTmlXL0lEa3VrbmlMaU95UnZKL1RWVXFsYllhbm9qeUVlbzJaTnp0RTVadTRYUndabnZIeVIzNFVrMldTYjdOSAp4Tk53TUt6ZHdROFpQQnM1OCtZUjByUGlGN2V4WXprVnFOdHNydEYwUjVPRm5kZjN4Yi9GeC8rRTBhd1UyUlZSClNiTzUxM1JIMTFZZ3RneWlMM0kxRjk3NGFDZTRhYkJuWHdmWDA1eUl2a2dEbFAvdXA5T25WRjV6eU8xSkRmUDAKSlFqY20zbGsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" 270 export APP_SELF_REGISTER_OAUTH_X509_KEY="LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS1FJQkFBS0NBZ0VBb1Q5d3FIT2RVRWo2K0ZtaGdsckVhc1BjaXd3MHBLNC8wN3A3NjFWVzdCY1ZOc1lyCnd5dDdQUHhxbWxJODdHNk9UYTM3SlFKT0g5cjFKeVV2VEl6MG1rdnFrME1aa0tCT3Y2U0xEeUNwcDhnNE1HekMKS0dyV05ZQkhGY3Iwd0tLbDVvVXRYbjl0MEc4U1c4bU1GMXFaT2k5aUxkRVl4T2RuR3Jhb1p6OUU2dExUUFNBQwp0Qkc5UFJ0Q3BvRVA5WXl2L1dKMDdnOUx4bUsvc1lVbXBKMHpFZ2xwOWJhVERONTVDcmhQNE5zcUtkdS9LR3dwCis4SVM3MXBncFhLaGFna3kzclhVVnluY2RtcEhLWDRuQTRHSHRLTFIyQTU5UHIrWlZZK2xQV2FwdE54d1hGekYKQ0FRUlJtNWJvUUhFSFNSaE1tcHIvemF6Z1pTMGhubTNJL21pRk5mODkvc0VJalpnQWI1eFp6VFNDMzVLOFpFdwprd0Q5L2F1RUZEd3BvL0RiS3JLM21JNzhwWWp3bE0rMHp3T2tkTmxUdVpRVjZWYVNCUnpMNC9pQXdLZ0NXSU0zCmRvVEZzNmJUdytVeVYrbG4vN2RwMUFlbGtublM1WmQwWG1SSHg1dWVyaFFBRkNjWXc5Sk9uQVk5NW8vUVBqeEUKaFZpL21LZHZnUDZVWDlPWitUdnVQUHpOeWYrTkp4OUVOT3RQNUxWTnBQdVJnMmtNeDZWeG52VHlKOC8wUjUxRgo5bmpndnF3MXQ0NHJnQnkvcTRVaWsrWHZBTDR1VjRpZzJwVStwRWJ5bWp6SjJlM2kzQUpKV0NOYWVHRmt3NmFBCmlOWE5maThUaTVGN214ODBLYnlLQWZWUzA0MmpFSG0wdi9jek03aXE1d1FaRUVJRlA2cWQ5ODNHWms4Q0F3RUEKQVFLQ0FnRUFqUDBpYlRmQjZrd1ZuUWNKOENlYkxGc2JRRDBvM29FNWI5RFR2ejQ4Sld3OWNVb3ZRNVNHU2huTwp3Q1o5L0tEaUxrdWNsNHgvY04wTGsvR3dmTGVXdkQ3NjJVNUhVU3pLRGtrNkNiMGVlb1RYbElmVDhIRVI0Vy9MCk4rUGd3M3F6b203NTczRnVQRnlSNmMyOWYwSUpUbFhWKzRlanA2OUplSk1UaGt0TTRDSDg3NnBJa3RnYjVnMHEKNXRsY2NmQlVoVElNV1lib1U0dE9YMUswS2lVRlhaVDdvQXZHWWU4NFdNWTFtYjhvQzdlSFdqblJMNzlPdlJnQgovMGZPbVI5MzZrR0VhNzQvZFE2U01GYU1tRVV1dWlQUFphR3RveXIyVUZpc081YkRkazkwczEydUxjY1lyOE9ZCnZKd0Z0UkYxSnhia1hSK2dMd0l1SXBMVUxsRjhoR2ZEb3QvWUZvZGJBM3A0dlM1MEc4c212YWlROVhnVXdGdFoKMFdpWU5iQ2JKdlY1d0w2aXlPcTRqakFGeExqU2lqc20ybFpVcTZiVDY5YVFpR0xmbXJDYnJDRnJFSkNpU1F3WgpGenVrMGlXYnM4ZXRySWFnNjdtY0kvTlF4RkVQbXB2ZEdQTllGZ0RwUDdEMnlhUnA4MzVjeWJVd04vcUE2RnBGCkJHSEQ0ZWl6OWd0WlhwT25NYzBibk9KcG5qMlNpaUUwaS95a0NuTlZvRm1SeXladVY0YVlQd29laWpOZ1NjZWIKQTY1TThHaWtUdmdiemFaL3YvOVdlWElURGJVWjcvQTBwYlRDTjZZZ0xscjBpQlJPMUFmeGhNNkVmems4QlFUSQpidWJ5U3ZwQWhiRk83aTZLVVAvZW03eVV0ckxBekdOR2dnTFJMVEpRWGdYUWNSeUdVWkVDZ2dFQkFNOUVhZW5nCm9peE1QaE5jTlN0dENEekhER2RDSFRWcDN2U0s0bkNHRFhGY3N2aytqMGRRM2pQYWx2V3dDMjBYOTZWQlR1bzAKTFhhcGgwZ0xHYloyS3JWQ0tPOWZrZXpQVWMwOWMzNmp1OExFZ3NBZ0dGOUpXeDVlMUVleUIzS0w0RnIreXVVVwpLbDc0azltYmZVK1dRcG1vc3hKdW41ZjBqbzhoclRucGtqR2FqUHhTL05GaE1YVHpGdjl6dEhVblZhTzJVYzI3ClB1WUJNSkxGdTQ2Y2xxWG53RTQxUTVwVHFLZGwxaUw0dFRrVER5ekFNUHZucW9HSld4Q1ZidjR3b2Z1WXBrY0gKSG50SlVEMVhhSnI1N0xoSU4zeDRCN2pFU3JYTUwrOVVIcWgzTDRna2FwV0VTTDlsY1d3aWxlcHhYdG5RdDI3NgprK0NXVVpuY09TUklVM2NDZ2dFQkFNY3BGRGdBWHVYS040b0Z3TC9lRkkvUWVSeXBDakQ2LytidVdCV2F0SXdQCnprQ1h6ODNaY256NmQ4YUlHc2I1bi9tbFYwaHBCdkdtZzBkN0ZHbHZoWDVhZDRzeXFLZWZJajZtWG1PMDRrQ3gKa29kZkErUVh5Q1EwWlFSRi9TenRyNWxWQi9yYnhhYzdCVlplQUxvVUtSSzdUMFhCOHczVXN1SnNyNGR0QVkwZQpDUDlmQlRybFowYjBFSnROWXlVbGFSNWRkaFVuYnJFeHFkUzg5Yk8ybUxBUjVDTVJJRXZScTRseGlQYzRTTXhYCmhUY2FSTmpBU2M3WE5NUUI1WVpXeUxaYzN1RndQaXRHK0sxTGMwNWs1VFpWeEtNdmVhOXBiZkRHLysyQm9IcHIKOEFHVXVKVlk2bCtGTzNleXlmenRPVGtpMUkwNmlxU2dURzVrbzJ0bXlla0NnZ0VBUjVYZWFzdU4xM1RodjdnSwpHUnlJU3MySXFDVTZoMWN3alE5bTAreEl1azJFOXZhM2I2OHJmNGRRdWp4NlJjeVFXTUFzckZFbkhxUEF1STQwCjdFTDF6ekt4aHJOZ2FBVFd3T2NuZTZhN1U3S2hZZy96dXYxUC9qWk1aUkxFNWJnUDNmM0FQODBmQnp3ZGZIdnEKbE5GVjRWSlZ2dGo4UC9SVVJIVWlLaTFVczlNb1BJSEJGZVBXdkFpMWViY1JyYURQUUVMWkVCQkswZys1SWdndgpGanRaQUtZQlVrR3RQcUVFVUFTcEo5ejBZbWtGeGJQL2R4RjFYMVg4WU1icjFka2dLUkI0NVhFOUF1RzRWK2RYCmxxY1pMakNyRVU4M2c0WXdNNGY1U2xTb1hoRUVGcVpWTlp6QnIzRXU4bVVqbUJ4ZDRTYm9JK2xocDZEalFCdkMKbEpoeVV3S0NBUUI4QUpyREo0L3VtVkt0VUZtcjNQV0dlYkgrNDAwaUpCWFRUbEZ2Mml4U0RNRkp2SHc1V2d1TAp2MU4yUEdZWHYzTVl1QmE1VWhOdHdGUjYzQ3BnWDN5SnFJQklIaG1lakZtQkVvc3duMzVEODR3ZFYwNlA1VExMClFBZ3BlZjVoeS9nS2kwUDFzSUxIVmR0RDVER2xxa25Nak8yVnJHWE9GY0h2Y3VaemRxNkJrOUxjVmVobXZGRHEKZjZvYldEckQ5U0FYTlBBQnlkU0U1VHd0NWgxQmNRNXVpaVUycEVJc2t2YXdGQTNJaDdYajdSWlhzYlp1RW9PaQpFcUthNitkaUZvVFA3dEVqSW9UQzQyU1FXYXNJZzQrbm5nMVo0WVJ0Y0VKd3FTYk9WV2g2OE51MTBFaUJUS1JaCkp4Wll0K3hGMjlwR05lYUxySWlJYWZwTXZjSjJhOENKQW9JQkFRRE5Nbk43M1k4UWNwSld4eTk4SmNLSklrTTQKY3BIeUM1U2dva2QvRWdBZzdMdW96a0grQWtWREZTUmcxdmRDSjdSMU9yTXNxeUVyYy9xV0pDYWpqVWJ6UlVyOApJQlN5b2Y1Zko3UHZ1VFc2WkV6RUR2WEw5WW90VExLM1VnUWpGc0N6c3dIUVhOaEE1QVBHWWZZa2hsTnlubVdpCnpyYlFYU1Q2RkxDeSt3UW9UQ3NzVHF4NW8yOEZiZ21RSTZvQzdmQ0ViTzZNL2dCTUxtbjhFNW03dWJVWE9wZmYKaEhsVGcwaVpKU0lDTDNRK25aZ0J4dVNSZ1hsMjJkUjZNYndiRDR6TTltNFhjTjNLTkNGMFY2bkJuQ0dnQ2hNaQp3aWpnS0w5RU1LemZFN0N4K05ZR0x5em9icVBXWDdMak81UjlPUWlpa3FBNmxxTldlN1g0b2NacFZ6c28KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K" 271 export APP_ORD_WEBHOOK_MAPPINGS='[{ "OrdUrlPath": "/.well-known/open-resource-discovery", "Type": "SAP temp1", "PpmsProductVersions": ["12345"], "SubdomainSuffix": "" }]' 272 export APP_FORMATION_MAPPING_API_PATH_PREFIX='/v1/businessIntegrations' 273 export APP_FORMATION_ASSIGNMENT_ASYNC_STATUS_API_ENDPOINT='/{ucl-formation-id}/assignments/{ucl-assignment-id}/status' 274 export APP_FORMATION_ASYNC_STATUS_API_ENDPOINT='/{ucl-formation-id}/status' 275 export APP_TENANT_MAPPING_CONFIG_PATH="/tmp/tenant-mapping-config.json" 276 export APP_TENANT_MAPPING_CALLBACK_URL="http://director.not.configured.url" 277 export APP_APPLICATION_TEMPLATE_PRODUCT_LABEL="systemRole" 278 279 # Tenant Fetcher properties 280 export APP_SUBSCRIPTION_CALLBACK_SCOPE=Callback 281 export APP_TENANT_REGION_DEPENDENCIES_CONFIG_PATH="/tmp/dependencies.json" 282 283 # Self Register Properties 284 export APP_SELF_REGISTER_SECRET_PATH="/tmp/keyConfig" 285 export APP_SELF_REGISTER_SAAS_APP_SECRET_PATH="/tmp/appNameConfig" 286 export APP_SELF_REGISTER_INSTANCE_CLIENT_ID_PATH="clientId" 287 export APP_SELF_REGISTER_INSTANCE_CLIENT_SECRET_PATH="clientSecret" 288 export APP_SELF_REGISTER_INSTANCE_URL_PATH="url" 289 export APP_SELF_REGISTER_INSTANCE_TOKEN_URL_PATH="tokenUrl" 290 export APP_SELF_REGISTER_INSTANCE_X509_CERT_PATH="clientCert" 291 export APP_SELF_REGISTER_INSTANCE_X509_KEY_PATH="clientKey" 292 export APP_SELF_REGISTER_SAAS_APP_NAME_PATH="localSaaSAppNamePath" 293 294 # Pairing Adapters Properties 295 export APP_PAIRING_ADAPTER_CM_NAME="pairing-adapter-config-local" 296 export APP_PAIRING_ADAPTER_CM_NAMESPACE="default" 297 export APP_PAIRING_ADAPTER_CM_KEY="config.json" 298 export APP_PAIRING_ADAPTER_WATCHER_ID="pairing-adapter-watcher-id" 299 300 # Destination Creator Service Configuration 301 export APP_DESTINATION_CREATOR_CORRELATION_IDS_KEY="correlationIds" 302 303 export APP_DESTINATION_CREATOR_DESTINATION_BASE_URL="https://destination-creator-local-destination-api-url.com" 304 export APP_DESTINATION_CREATOR_DESTINATION_PATH="/regions/{region}/subaccounts/{subaccountId}/destinations" 305 export APP_DESTINATION_CREATOR_DESTINATION_REGION_PARAMETER="region" 306 export APP_DESTINATION_CREATOR_DESTINATION_SUBACCOUNT_ID_PARAMETER="subaccountId" 307 export APP_DESTINATION_CREATOR_DESTINATION_NAME_PARAMETER="destinationName" 308 309 export APP_DESTINATION_CREATOR_CERTIFICATE_BASE_URL="https://destination-creator-local-certificate-api-url.com" 310 export APP_DESTINATION_CREATOR_CERTIFICATE_PATH="/regions/{region}/subaccounts/{subaccountId}/certificates" 311 export APP_DESTINATION_CREATOR_CERTIFICATE_REGION_PARAMETER="region" 312 export APP_DESTINATION_CREATOR_CERTIFICATE_SUBACCOUNT_ID_PARAMETER="subaccountId" 313 export APP_DESTINATION_CREATOR_CERTIFICATE_NAME_PARAMETER="certificateName" 314 export APP_DESTINATION_CREATOR_CERTIFICATE_FILE_NAME_KEY="fileName" 315 export APP_DESTINATION_CREATOR_CERTIFICATE_COMMON_NAME_KEY="commonName" 316 export APP_DESTINATION_CREATOR_CERTIFICATE_CERT_CHAIN_KEY="certificateChain" 317 318 # This file contains necessary configuration for self registration flow 319 cat <<EOF > /tmp/keyConfig 320 { 321 "eu-1": { 322 "clientId": "client_id", 323 "clientSecret": "client_secret", 324 "url": "http://compass-external-services-mock.compass-system.svc.cluster.local:8080", 325 "tokenUrl": "https://compass-external-services-mock-sap-mtls.kyma-local:8080", 326 "clientCert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUYwakNDQTdxZ0F3SUJBZ0lKQUtudzEwQi9zejJUTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKQkFZVEFrSkhNUTR3REFZRFZRUUlEQVZzYjJOaGJERU9NQXdHQTFVRUJ3d0ZiRzlqWVd3eERqQU1CZ05WQkFvTQpCV3h2WTJGc01RNHdEQVlEVlFRRERBVnNiMk5oYkRBZ0Z3MHlNakF5TWpVeE16VTFNVEJhR0E4eU1USXlNREl3Ck1URXpOVFV4TUZvd1RURUxNQWtHQTFVRUJoTUNRa2N4RGpBTUJnTlZCQWdNQld4dlkyRnNNUTR3REFZRFZRUUgKREFWc2IyTmhiREVPTUF3R0ExVUVDZ3dGYkc5allXd3hEakFNQmdOVkJBTU1CV3h2WTJGc01JSUNJakFOQmdrcQpoa2lHOXcwQkFRRUZBQU9DQWc4QU1JSUNDZ0tDQWdFQW9UOXdxSE9kVUVqNitGbWhnbHJFYXNQY2l3dzBwSzQvCjA3cDc2MVZXN0JjVk5zWXJ3eXQ3UFB4cW1sSTg3RzZPVGEzN0pRSk9IOXIxSnlVdlRJejBta3ZxazBNWmtLQk8KdjZTTER5Q3BwOGc0TUd6Q0tHcldOWUJIRmNyMHdLS2w1b1V0WG45dDBHOFNXOG1NRjFxWk9pOWlMZEVZeE9kbgpHcmFvWno5RTZ0TFRQU0FDdEJHOVBSdENwb0VQOVl5di9XSjA3ZzlMeG1LL3NZVW1wSjB6RWdscDliYVRETjU1CkNyaFA0TnNxS2R1L0tHd3ArOElTNzFwZ3BYS2hhZ2t5M3JYVVZ5bmNkbXBIS1g0bkE0R0h0S0xSMkE1OVByK1oKVlkrbFBXYXB0Tnh3WEZ6RkNBUVJSbTVib1FIRUhTUmhNbXByL3phemdaUzBobm0zSS9taUZOZjg5L3NFSWpaZwpBYjV4WnpUU0MzNUs4WkV3a3dEOS9hdUVGRHdwby9EYktySzNtSTc4cFlqd2xNKzB6d09rZE5sVHVaUVY2VmFTCkJSekw0L2lBd0tnQ1dJTTNkb1RGczZiVHcrVXlWK2xuLzdkcDFBZWxrbm5TNVpkMFhtUkh4NXVlcmhRQUZDY1kKdzlKT25BWTk1by9RUGp4RWhWaS9tS2R2Z1A2VVg5T1orVHZ1UFB6TnlmK05KeDlFTk90UDVMVk5wUHVSZzJrTQp4NlZ4bnZUeUo4LzBSNTFGOW5qZ3ZxdzF0NDRyZ0J5L3E0VWlrK1h2QUw0dVY0aWcycFUrcEVieW1qekoyZTNpCjNBSkpXQ05hZUdGa3c2YUFpTlhOZmk4VGk1RjdteDgwS2J5S0FmVlMwNDJqRUhtMHYvY3pNN2lxNXdRWkVFSUYKUDZxZDk4M0daazhDQXdFQUFhT0JzakNCcnpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUbwprMzBXVzhCRUxnMEZBWEZscjNnYnpkektvVEI5QmdOVkhTTUVkakIwZ0JUb2szMFdXOEJFTGcwRkFYRmxyM2diCnpkektvYUZScEU4d1RURUxNQWtHQTFVRUJoTUNRa2N4RGpBTUJnTlZCQWdNQld4dlkyRnNNUTR3REFZRFZRUUgKREFWc2IyTmhiREVPTUF3R0ExVUVDZ3dGYkc5allXd3hEakFNQmdOVkJBTU1CV3h2WTJGc2dna0FxZkRYUUgregpQWk13RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUpkbHNtR2k0d1hvSlZ4SnlKVzlDWEZPejhZWkhTWlhicEdsClJXcmI4QkZIMy9SNFhPTTQ5Y3Y4UzErYUZvQ3hJd0taRGFhZVIwNVIxK05jVXNPSnhZL2tGWXNHN3kvMTJFRVIKTi90anVRTGhPNnEzT1piZTUwUFErS2pxbmxURnQrT1ptV1ZQc3NzbUU2WWNhWXBOc09FcmVWZWxNWHNybDBndgpLZ3hLUXFJQ3hJTThNTG1QeUUxSURsS3RSL0RrTkNqNDQybmgvNVlwaUFoOG1BTUE5QjFtcE1uSTZpZFB0RzRhCm5uSGxiVlZaMUE4UWF2bXlCNGRueVZwNlB3QnhSMXJjN0xoV3VBT3V2WkNWWGpxUVZLMkREdEJ0Q3RGcUUrQlQKa1I4MnFjMGtKR2IwYTFkRWRubmJEdU1BQzA0WnRrQnpQTlV6RzNqSkNKVkZhVEsyMVhZQjNkMUR4UTVSUFJyTQptZmVXUlM5cytmdlplOTZmb1BIMmZuREN0aFJkOXI5UXdWSmhZMkRlTzlQOVd0TW9QMWhMempHSnQ1czB2RmpRClE2RDdZaXFHajkvTXhoc1BqZjlucjhCL3ZUVzFWV1hackh2NDBlR01tM1kwRXUvMlA0bFR5YnEyUlp2enhlQTgKTmlXL0lEa3VrbmlMaU95UnZKL1RWVXFsYllhbm9qeUVlbzJaTnp0RTVadTRYUndabnZIeVIzNFVrMldTYjdOSAp4Tk53TUt6ZHdROFpQQnM1OCtZUjByUGlGN2V4WXprVnFOdHNydEYwUjVPRm5kZjN4Yi9GeC8rRTBhd1UyUlZSClNiTzUxM1JIMTFZZ3RneWlMM0kxRjk3NGFDZTRhYkJuWHdmWDA1eUl2a2dEbFAvdXA5T25WRjV6eU8xSkRmUDAKSlFqY20zbGsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", 327 "clientKey": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS1FJQkFBS0NBZ0VBb1Q5d3FIT2RVRWo2K0ZtaGdsckVhc1BjaXd3MHBLNC8wN3A3NjFWVzdCY1ZOc1lyCnd5dDdQUHhxbWxJODdHNk9UYTM3SlFKT0g5cjFKeVV2VEl6MG1rdnFrME1aa0tCT3Y2U0xEeUNwcDhnNE1HekMKS0dyV05ZQkhGY3Iwd0tLbDVvVXRYbjl0MEc4U1c4bU1GMXFaT2k5aUxkRVl4T2RuR3Jhb1p6OUU2dExUUFNBQwp0Qkc5UFJ0Q3BvRVA5WXl2L1dKMDdnOUx4bUsvc1lVbXBKMHpFZ2xwOWJhVERONTVDcmhQNE5zcUtkdS9LR3dwCis4SVM3MXBncFhLaGFna3kzclhVVnluY2RtcEhLWDRuQTRHSHRLTFIyQTU5UHIrWlZZK2xQV2FwdE54d1hGekYKQ0FRUlJtNWJvUUhFSFNSaE1tcHIvemF6Z1pTMGhubTNJL21pRk5mODkvc0VJalpnQWI1eFp6VFNDMzVLOFpFdwprd0Q5L2F1RUZEd3BvL0RiS3JLM21JNzhwWWp3bE0rMHp3T2tkTmxUdVpRVjZWYVNCUnpMNC9pQXdLZ0NXSU0zCmRvVEZzNmJUdytVeVYrbG4vN2RwMUFlbGtublM1WmQwWG1SSHg1dWVyaFFBRkNjWXc5Sk9uQVk5NW8vUVBqeEUKaFZpL21LZHZnUDZVWDlPWitUdnVQUHpOeWYrTkp4OUVOT3RQNUxWTnBQdVJnMmtNeDZWeG52VHlKOC8wUjUxRgo5bmpndnF3MXQ0NHJnQnkvcTRVaWsrWHZBTDR1VjRpZzJwVStwRWJ5bWp6SjJlM2kzQUpKV0NOYWVHRmt3NmFBCmlOWE5maThUaTVGN214ODBLYnlLQWZWUzA0MmpFSG0wdi9jek03aXE1d1FaRUVJRlA2cWQ5ODNHWms4Q0F3RUEKQVFLQ0FnRUFqUDBpYlRmQjZrd1ZuUWNKOENlYkxGc2JRRDBvM29FNWI5RFR2ejQ4Sld3OWNVb3ZRNVNHU2huTwp3Q1o5L0tEaUxrdWNsNHgvY04wTGsvR3dmTGVXdkQ3NjJVNUhVU3pLRGtrNkNiMGVlb1RYbElmVDhIRVI0Vy9MCk4rUGd3M3F6b203NTczRnVQRnlSNmMyOWYwSUpUbFhWKzRlanA2OUplSk1UaGt0TTRDSDg3NnBJa3RnYjVnMHEKNXRsY2NmQlVoVElNV1lib1U0dE9YMUswS2lVRlhaVDdvQXZHWWU4NFdNWTFtYjhvQzdlSFdqblJMNzlPdlJnQgovMGZPbVI5MzZrR0VhNzQvZFE2U01GYU1tRVV1dWlQUFphR3RveXIyVUZpc081YkRkazkwczEydUxjY1lyOE9ZCnZKd0Z0UkYxSnhia1hSK2dMd0l1SXBMVUxsRjhoR2ZEb3QvWUZvZGJBM3A0dlM1MEc4c212YWlROVhnVXdGdFoKMFdpWU5iQ2JKdlY1d0w2aXlPcTRqakFGeExqU2lqc20ybFpVcTZiVDY5YVFpR0xmbXJDYnJDRnJFSkNpU1F3WgpGenVrMGlXYnM4ZXRySWFnNjdtY0kvTlF4RkVQbXB2ZEdQTllGZ0RwUDdEMnlhUnA4MzVjeWJVd04vcUE2RnBGCkJHSEQ0ZWl6OWd0WlhwT25NYzBibk9KcG5qMlNpaUUwaS95a0NuTlZvRm1SeXladVY0YVlQd29laWpOZ1NjZWIKQTY1TThHaWtUdmdiemFaL3YvOVdlWElURGJVWjcvQTBwYlRDTjZZZ0xscjBpQlJPMUFmeGhNNkVmems4QlFUSQpidWJ5U3ZwQWhiRk83aTZLVVAvZW03eVV0ckxBekdOR2dnTFJMVEpRWGdYUWNSeUdVWkVDZ2dFQkFNOUVhZW5nCm9peE1QaE5jTlN0dENEekhER2RDSFRWcDN2U0s0bkNHRFhGY3N2aytqMGRRM2pQYWx2V3dDMjBYOTZWQlR1bzAKTFhhcGgwZ0xHYloyS3JWQ0tPOWZrZXpQVWMwOWMzNmp1OExFZ3NBZ0dGOUpXeDVlMUVleUIzS0w0RnIreXVVVwpLbDc0azltYmZVK1dRcG1vc3hKdW41ZjBqbzhoclRucGtqR2FqUHhTL05GaE1YVHpGdjl6dEhVblZhTzJVYzI3ClB1WUJNSkxGdTQ2Y2xxWG53RTQxUTVwVHFLZGwxaUw0dFRrVER5ekFNUHZucW9HSld4Q1ZidjR3b2Z1WXBrY0gKSG50SlVEMVhhSnI1N0xoSU4zeDRCN2pFU3JYTUwrOVVIcWgzTDRna2FwV0VTTDlsY1d3aWxlcHhYdG5RdDI3NgprK0NXVVpuY09TUklVM2NDZ2dFQkFNY3BGRGdBWHVYS040b0Z3TC9lRkkvUWVSeXBDakQ2LytidVdCV2F0SXdQCnprQ1h6ODNaY256NmQ4YUlHc2I1bi9tbFYwaHBCdkdtZzBkN0ZHbHZoWDVhZDRzeXFLZWZJajZtWG1PMDRrQ3gKa29kZkErUVh5Q1EwWlFSRi9TenRyNWxWQi9yYnhhYzdCVlplQUxvVUtSSzdUMFhCOHczVXN1SnNyNGR0QVkwZQpDUDlmQlRybFowYjBFSnROWXlVbGFSNWRkaFVuYnJFeHFkUzg5Yk8ybUxBUjVDTVJJRXZScTRseGlQYzRTTXhYCmhUY2FSTmpBU2M3WE5NUUI1WVpXeUxaYzN1RndQaXRHK0sxTGMwNWs1VFpWeEtNdmVhOXBiZkRHLysyQm9IcHIKOEFHVXVKVlk2bCtGTzNleXlmenRPVGtpMUkwNmlxU2dURzVrbzJ0bXlla0NnZ0VBUjVYZWFzdU4xM1RodjdnSwpHUnlJU3MySXFDVTZoMWN3alE5bTAreEl1azJFOXZhM2I2OHJmNGRRdWp4NlJjeVFXTUFzckZFbkhxUEF1STQwCjdFTDF6ekt4aHJOZ2FBVFd3T2NuZTZhN1U3S2hZZy96dXYxUC9qWk1aUkxFNWJnUDNmM0FQODBmQnp3ZGZIdnEKbE5GVjRWSlZ2dGo4UC9SVVJIVWlLaTFVczlNb1BJSEJGZVBXdkFpMWViY1JyYURQUUVMWkVCQkswZys1SWdndgpGanRaQUtZQlVrR3RQcUVFVUFTcEo5ejBZbWtGeGJQL2R4RjFYMVg4WU1icjFka2dLUkI0NVhFOUF1RzRWK2RYCmxxY1pMakNyRVU4M2c0WXdNNGY1U2xTb1hoRUVGcVpWTlp6QnIzRXU4bVVqbUJ4ZDRTYm9JK2xocDZEalFCdkMKbEpoeVV3S0NBUUI4QUpyREo0L3VtVkt0VUZtcjNQV0dlYkgrNDAwaUpCWFRUbEZ2Mml4U0RNRkp2SHc1V2d1TAp2MU4yUEdZWHYzTVl1QmE1VWhOdHdGUjYzQ3BnWDN5SnFJQklIaG1lakZtQkVvc3duMzVEODR3ZFYwNlA1VExMClFBZ3BlZjVoeS9nS2kwUDFzSUxIVmR0RDVER2xxa25Nak8yVnJHWE9GY0h2Y3VaemRxNkJrOUxjVmVobXZGRHEKZjZvYldEckQ5U0FYTlBBQnlkU0U1VHd0NWgxQmNRNXVpaVUycEVJc2t2YXdGQTNJaDdYajdSWlhzYlp1RW9PaQpFcUthNitkaUZvVFA3dEVqSW9UQzQyU1FXYXNJZzQrbm5nMVo0WVJ0Y0VKd3FTYk9WV2g2OE51MTBFaUJUS1JaCkp4Wll0K3hGMjlwR05lYUxySWlJYWZwTXZjSjJhOENKQW9JQkFRRE5Nbk43M1k4UWNwSld4eTk4SmNLSklrTTQKY3BIeUM1U2dva2QvRWdBZzdMdW96a0grQWtWREZTUmcxdmRDSjdSMU9yTXNxeUVyYy9xV0pDYWpqVWJ6UlVyOApJQlN5b2Y1Zko3UHZ1VFc2WkV6RUR2WEw5WW90VExLM1VnUWpGc0N6c3dIUVhOaEE1QVBHWWZZa2hsTnlubVdpCnpyYlFYU1Q2RkxDeSt3UW9UQ3NzVHF4NW8yOEZiZ21RSTZvQzdmQ0ViTzZNL2dCTUxtbjhFNW03dWJVWE9wZmYKaEhsVGcwaVpKU0lDTDNRK25aZ0J4dVNSZ1hsMjJkUjZNYndiRDR6TTltNFhjTjNLTkNGMFY2bkJuQ0dnQ2hNaQp3aWpnS0w5RU1LemZFN0N4K05ZR0x5em9icVBXWDdMak81UjlPUWlpa3FBNmxxTldlN1g0b2NacFZ6c28KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K" 328 }, 329 "eu-2": { 330 "clientId": "client_id", 331 "clientSecret": "client_secret", 332 "url": "http://compass-external-services-mock.compass-system.svc.cluster.local:8080", 333 "tokenUrl": "https://compass-external-services-mock-sap-mtls.kyma-local:8080", 334 "clientCert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUYwakNDQTdxZ0F3SUJBZ0lKQUtudzEwQi9zejJUTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKQkFZVEFrSkhNUTR3REFZRFZRUUlEQVZzYjJOaGJERU9NQXdHQTFVRUJ3d0ZiRzlqWVd3eERqQU1CZ05WQkFvTQpCV3h2WTJGc01RNHdEQVlEVlFRRERBVnNiMk5oYkRBZ0Z3MHlNakF5TWpVeE16VTFNVEJhR0E4eU1USXlNREl3Ck1URXpOVFV4TUZvd1RURUxNQWtHQTFVRUJoTUNRa2N4RGpBTUJnTlZCQWdNQld4dlkyRnNNUTR3REFZRFZRUUgKREFWc2IyTmhiREVPTUF3R0ExVUVDZ3dGYkc5allXd3hEakFNQmdOVkJBTU1CV3h2WTJGc01JSUNJakFOQmdrcQpoa2lHOXcwQkFRRUZBQU9DQWc4QU1JSUNDZ0tDQWdFQW9UOXdxSE9kVUVqNitGbWhnbHJFYXNQY2l3dzBwSzQvCjA3cDc2MVZXN0JjVk5zWXJ3eXQ3UFB4cW1sSTg3RzZPVGEzN0pRSk9IOXIxSnlVdlRJejBta3ZxazBNWmtLQk8KdjZTTER5Q3BwOGc0TUd6Q0tHcldOWUJIRmNyMHdLS2w1b1V0WG45dDBHOFNXOG1NRjFxWk9pOWlMZEVZeE9kbgpHcmFvWno5RTZ0TFRQU0FDdEJHOVBSdENwb0VQOVl5di9XSjA3ZzlMeG1LL3NZVW1wSjB6RWdscDliYVRETjU1CkNyaFA0TnNxS2R1L0tHd3ArOElTNzFwZ3BYS2hhZ2t5M3JYVVZ5bmNkbXBIS1g0bkE0R0h0S0xSMkE1OVByK1oKVlkrbFBXYXB0Tnh3WEZ6RkNBUVJSbTVib1FIRUhTUmhNbXByL3phemdaUzBobm0zSS9taUZOZjg5L3NFSWpaZwpBYjV4WnpUU0MzNUs4WkV3a3dEOS9hdUVGRHdwby9EYktySzNtSTc4cFlqd2xNKzB6d09rZE5sVHVaUVY2VmFTCkJSekw0L2lBd0tnQ1dJTTNkb1RGczZiVHcrVXlWK2xuLzdkcDFBZWxrbm5TNVpkMFhtUkh4NXVlcmhRQUZDY1kKdzlKT25BWTk1by9RUGp4RWhWaS9tS2R2Z1A2VVg5T1orVHZ1UFB6TnlmK05KeDlFTk90UDVMVk5wUHVSZzJrTQp4NlZ4bnZUeUo4LzBSNTFGOW5qZ3ZxdzF0NDRyZ0J5L3E0VWlrK1h2QUw0dVY0aWcycFUrcEVieW1qekoyZTNpCjNBSkpXQ05hZUdGa3c2YUFpTlhOZmk4VGk1RjdteDgwS2J5S0FmVlMwNDJqRUhtMHYvY3pNN2lxNXdRWkVFSUYKUDZxZDk4M0daazhDQXdFQUFhT0JzakNCcnpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUbwprMzBXVzhCRUxnMEZBWEZscjNnYnpkektvVEI5QmdOVkhTTUVkakIwZ0JUb2szMFdXOEJFTGcwRkFYRmxyM2diCnpkektvYUZScEU4d1RURUxNQWtHQTFVRUJoTUNRa2N4RGpBTUJnTlZCQWdNQld4dlkyRnNNUTR3REFZRFZRUUgKREFWc2IyTmhiREVPTUF3R0ExVUVDZ3dGYkc5allXd3hEakFNQmdOVkJBTU1CV3h2WTJGc2dna0FxZkRYUUgregpQWk13RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUpkbHNtR2k0d1hvSlZ4SnlKVzlDWEZPejhZWkhTWlhicEdsClJXcmI4QkZIMy9SNFhPTTQ5Y3Y4UzErYUZvQ3hJd0taRGFhZVIwNVIxK05jVXNPSnhZL2tGWXNHN3kvMTJFRVIKTi90anVRTGhPNnEzT1piZTUwUFErS2pxbmxURnQrT1ptV1ZQc3NzbUU2WWNhWXBOc09FcmVWZWxNWHNybDBndgpLZ3hLUXFJQ3hJTThNTG1QeUUxSURsS3RSL0RrTkNqNDQybmgvNVlwaUFoOG1BTUE5QjFtcE1uSTZpZFB0RzRhCm5uSGxiVlZaMUE4UWF2bXlCNGRueVZwNlB3QnhSMXJjN0xoV3VBT3V2WkNWWGpxUVZLMkREdEJ0Q3RGcUUrQlQKa1I4MnFjMGtKR2IwYTFkRWRubmJEdU1BQzA0WnRrQnpQTlV6RzNqSkNKVkZhVEsyMVhZQjNkMUR4UTVSUFJyTQptZmVXUlM5cytmdlplOTZmb1BIMmZuREN0aFJkOXI5UXdWSmhZMkRlTzlQOVd0TW9QMWhMempHSnQ1czB2RmpRClE2RDdZaXFHajkvTXhoc1BqZjlucjhCL3ZUVzFWV1hackh2NDBlR01tM1kwRXUvMlA0bFR5YnEyUlp2enhlQTgKTmlXL0lEa3VrbmlMaU95UnZKL1RWVXFsYllhbm9qeUVlbzJaTnp0RTVadTRYUndabnZIeVIzNFVrMldTYjdOSAp4Tk53TUt6ZHdROFpQQnM1OCtZUjByUGlGN2V4WXprVnFOdHNydEYwUjVPRm5kZjN4Yi9GeC8rRTBhd1UyUlZSClNiTzUxM1JIMTFZZ3RneWlMM0kxRjk3NGFDZTRhYkJuWHdmWDA1eUl2a2dEbFAvdXA5T25WRjV6eU8xSkRmUDAKSlFqY20zbGsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", 335 "clientKey": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS1FJQkFBS0NBZ0VBb1Q5d3FIT2RVRWo2K0ZtaGdsckVhc1BjaXd3MHBLNC8wN3A3NjFWVzdCY1ZOc1lyCnd5dDdQUHhxbWxJODdHNk9UYTM3SlFKT0g5cjFKeVV2VEl6MG1rdnFrME1aa0tCT3Y2U0xEeUNwcDhnNE1HekMKS0dyV05ZQkhGY3Iwd0tLbDVvVXRYbjl0MEc4U1c4bU1GMXFaT2k5aUxkRVl4T2RuR3Jhb1p6OUU2dExUUFNBQwp0Qkc5UFJ0Q3BvRVA5WXl2L1dKMDdnOUx4bUsvc1lVbXBKMHpFZ2xwOWJhVERONTVDcmhQNE5zcUtkdS9LR3dwCis4SVM3MXBncFhLaGFna3kzclhVVnluY2RtcEhLWDRuQTRHSHRLTFIyQTU5UHIrWlZZK2xQV2FwdE54d1hGekYKQ0FRUlJtNWJvUUhFSFNSaE1tcHIvemF6Z1pTMGhubTNJL21pRk5mODkvc0VJalpnQWI1eFp6VFNDMzVLOFpFdwprd0Q5L2F1RUZEd3BvL0RiS3JLM21JNzhwWWp3bE0rMHp3T2tkTmxUdVpRVjZWYVNCUnpMNC9pQXdLZ0NXSU0zCmRvVEZzNmJUdytVeVYrbG4vN2RwMUFlbGtublM1WmQwWG1SSHg1dWVyaFFBRkNjWXc5Sk9uQVk5NW8vUVBqeEUKaFZpL21LZHZnUDZVWDlPWitUdnVQUHpOeWYrTkp4OUVOT3RQNUxWTnBQdVJnMmtNeDZWeG52VHlKOC8wUjUxRgo5bmpndnF3MXQ0NHJnQnkvcTRVaWsrWHZBTDR1VjRpZzJwVStwRWJ5bWp6SjJlM2kzQUpKV0NOYWVHRmt3NmFBCmlOWE5maThUaTVGN214ODBLYnlLQWZWUzA0MmpFSG0wdi9jek03aXE1d1FaRUVJRlA2cWQ5ODNHWms4Q0F3RUEKQVFLQ0FnRUFqUDBpYlRmQjZrd1ZuUWNKOENlYkxGc2JRRDBvM29FNWI5RFR2ejQ4Sld3OWNVb3ZRNVNHU2huTwp3Q1o5L0tEaUxrdWNsNHgvY04wTGsvR3dmTGVXdkQ3NjJVNUhVU3pLRGtrNkNiMGVlb1RYbElmVDhIRVI0Vy9MCk4rUGd3M3F6b203NTczRnVQRnlSNmMyOWYwSUpUbFhWKzRlanA2OUplSk1UaGt0TTRDSDg3NnBJa3RnYjVnMHEKNXRsY2NmQlVoVElNV1lib1U0dE9YMUswS2lVRlhaVDdvQXZHWWU4NFdNWTFtYjhvQzdlSFdqblJMNzlPdlJnQgovMGZPbVI5MzZrR0VhNzQvZFE2U01GYU1tRVV1dWlQUFphR3RveXIyVUZpc081YkRkazkwczEydUxjY1lyOE9ZCnZKd0Z0UkYxSnhia1hSK2dMd0l1SXBMVUxsRjhoR2ZEb3QvWUZvZGJBM3A0dlM1MEc4c212YWlROVhnVXdGdFoKMFdpWU5iQ2JKdlY1d0w2aXlPcTRqakFGeExqU2lqc20ybFpVcTZiVDY5YVFpR0xmbXJDYnJDRnJFSkNpU1F3WgpGenVrMGlXYnM4ZXRySWFnNjdtY0kvTlF4RkVQbXB2ZEdQTllGZ0RwUDdEMnlhUnA4MzVjeWJVd04vcUE2RnBGCkJHSEQ0ZWl6OWd0WlhwT25NYzBibk9KcG5qMlNpaUUwaS95a0NuTlZvRm1SeXladVY0YVlQd29laWpOZ1NjZWIKQTY1TThHaWtUdmdiemFaL3YvOVdlWElURGJVWjcvQTBwYlRDTjZZZ0xscjBpQlJPMUFmeGhNNkVmems4QlFUSQpidWJ5U3ZwQWhiRk83aTZLVVAvZW03eVV0ckxBekdOR2dnTFJMVEpRWGdYUWNSeUdVWkVDZ2dFQkFNOUVhZW5nCm9peE1QaE5jTlN0dENEekhER2RDSFRWcDN2U0s0bkNHRFhGY3N2aytqMGRRM2pQYWx2V3dDMjBYOTZWQlR1bzAKTFhhcGgwZ0xHYloyS3JWQ0tPOWZrZXpQVWMwOWMzNmp1OExFZ3NBZ0dGOUpXeDVlMUVleUIzS0w0RnIreXVVVwpLbDc0azltYmZVK1dRcG1vc3hKdW41ZjBqbzhoclRucGtqR2FqUHhTL05GaE1YVHpGdjl6dEhVblZhTzJVYzI3ClB1WUJNSkxGdTQ2Y2xxWG53RTQxUTVwVHFLZGwxaUw0dFRrVER5ekFNUHZucW9HSld4Q1ZidjR3b2Z1WXBrY0gKSG50SlVEMVhhSnI1N0xoSU4zeDRCN2pFU3JYTUwrOVVIcWgzTDRna2FwV0VTTDlsY1d3aWxlcHhYdG5RdDI3NgprK0NXVVpuY09TUklVM2NDZ2dFQkFNY3BGRGdBWHVYS040b0Z3TC9lRkkvUWVSeXBDakQ2LytidVdCV2F0SXdQCnprQ1h6ODNaY256NmQ4YUlHc2I1bi9tbFYwaHBCdkdtZzBkN0ZHbHZoWDVhZDRzeXFLZWZJajZtWG1PMDRrQ3gKa29kZkErUVh5Q1EwWlFSRi9TenRyNWxWQi9yYnhhYzdCVlplQUxvVUtSSzdUMFhCOHczVXN1SnNyNGR0QVkwZQpDUDlmQlRybFowYjBFSnROWXlVbGFSNWRkaFVuYnJFeHFkUzg5Yk8ybUxBUjVDTVJJRXZScTRseGlQYzRTTXhYCmhUY2FSTmpBU2M3WE5NUUI1WVpXeUxaYzN1RndQaXRHK0sxTGMwNWs1VFpWeEtNdmVhOXBiZkRHLysyQm9IcHIKOEFHVXVKVlk2bCtGTzNleXlmenRPVGtpMUkwNmlxU2dURzVrbzJ0bXlla0NnZ0VBUjVYZWFzdU4xM1RodjdnSwpHUnlJU3MySXFDVTZoMWN3alE5bTAreEl1azJFOXZhM2I2OHJmNGRRdWp4NlJjeVFXTUFzckZFbkhxUEF1STQwCjdFTDF6ekt4aHJOZ2FBVFd3T2NuZTZhN1U3S2hZZy96dXYxUC9qWk1aUkxFNWJnUDNmM0FQODBmQnp3ZGZIdnEKbE5GVjRWSlZ2dGo4UC9SVVJIVWlLaTFVczlNb1BJSEJGZVBXdkFpMWViY1JyYURQUUVMWkVCQkswZys1SWdndgpGanRaQUtZQlVrR3RQcUVFVUFTcEo5ejBZbWtGeGJQL2R4RjFYMVg4WU1icjFka2dLUkI0NVhFOUF1RzRWK2RYCmxxY1pMakNyRVU4M2c0WXdNNGY1U2xTb1hoRUVGcVpWTlp6QnIzRXU4bVVqbUJ4ZDRTYm9JK2xocDZEalFCdkMKbEpoeVV3S0NBUUI4QUpyREo0L3VtVkt0VUZtcjNQV0dlYkgrNDAwaUpCWFRUbEZ2Mml4U0RNRkp2SHc1V2d1TAp2MU4yUEdZWHYzTVl1QmE1VWhOdHdGUjYzQ3BnWDN5SnFJQklIaG1lakZtQkVvc3duMzVEODR3ZFYwNlA1VExMClFBZ3BlZjVoeS9nS2kwUDFzSUxIVmR0RDVER2xxa25Nak8yVnJHWE9GY0h2Y3VaemRxNkJrOUxjVmVobXZGRHEKZjZvYldEckQ5U0FYTlBBQnlkU0U1VHd0NWgxQmNRNXVpaVUycEVJc2t2YXdGQTNJaDdYajdSWlhzYlp1RW9PaQpFcUthNitkaUZvVFA3dEVqSW9UQzQyU1FXYXNJZzQrbm5nMVo0WVJ0Y0VKd3FTYk9WV2g2OE51MTBFaUJUS1JaCkp4Wll0K3hGMjlwR05lYUxySWlJYWZwTXZjSjJhOENKQW9JQkFRRE5Nbk43M1k4UWNwSld4eTk4SmNLSklrTTQKY3BIeUM1U2dva2QvRWdBZzdMdW96a0grQWtWREZTUmcxdmRDSjdSMU9yTXNxeUVyYy9xV0pDYWpqVWJ6UlVyOApJQlN5b2Y1Zko3UHZ1VFc2WkV6RUR2WEw5WW90VExLM1VnUWpGc0N6c3dIUVhOaEE1QVBHWWZZa2hsTnlubVdpCnpyYlFYU1Q2RkxDeSt3UW9UQ3NzVHF4NW8yOEZiZ21RSTZvQzdmQ0ViTzZNL2dCTUxtbjhFNW03dWJVWE9wZmYKaEhsVGcwaVpKU0lDTDNRK25aZ0J4dVNSZ1hsMjJkUjZNYndiRDR6TTltNFhjTjNLTkNGMFY2bkJuQ0dnQ2hNaQp3aWpnS0w5RU1LemZFN0N4K05ZR0x5em9icVBXWDdMak81UjlPUWlpa3FBNmxxTldlN1g0b2NacFZ6c28KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K" 336 } 337 } 338 EOF 339 340 # This file is necessary for self registration flow containing SaaS application configuration 341 cat <<EOF > /tmp/appNameConfig 342 { 343 "eu-1": { 344 "localSaaSAppNamePath": "SaaS-app-name-1" 345 }, 346 "eu-2": { 347 "localSaaSAppNamePath": "SaaS-app-name-2" 348 } 349 } 350 EOF 351 352 # This file contains regional dependencies configuration for tenants service 353 cat <<EOF > /tmp/dependencies.json 354 { 355 "eu-1": "{\n \"xsappname\": \"xsappname1\", \"clientid\": \"clientid-1\", \"certificate\": \"client-cert-1\", \"key\": \"client-cert-key-1\", \"url\": \"http://token-url\", \"uri\": \"http://destination-service\"\n}", 356 "eu-2": "{\n \"xsappname\": \"xsappname2\", \"clientid\": \"clientid-2\", \"certificate\": \"client-cert-2\", \"key\": \"client-cert-key-2\", \"url\": \"http://token-url\", \"uri\": \"http://destination-service\"\n}" 357 } 358 EOF 359 360 # This file contains tenant mapping configuration 361 cat <<EOF > /tmp/tenant-mapping-config.json 362 { 363 "SYNC": { 364 "v1.0" : [ 365 { 366 "type": "CONFIGURATION_CHANGED", 367 "mode": "SYNC", 368 "urlTemplate": "{\"path\":\"%s/v1/tenant-mappings/{{.RuntimeContext.Value}}\",\"method\":\"PATCH\"}", 369 "inputTemplate": "{\"context\":{ {{ if .CustomerTenantContext.AccountID }}\"btp\": {\"uclFormationId\":\"{{.FormationID}}\",\"globalAccountId\":\"{{.CustomerTenantContext.AccountID}}\",\"crmId\":\"{{.CustomerTenantContext.CustomerID}}\" } {{ else }}\"atom\": {\"uclFormationId\":\"{{.FormationID}}\",\"path\":\"{{.CustomerTenantContext.Path}}\",\"crmId\":\"{{.CustomerTenantContext.CustomerID}}\" } {{ end }} },\"items\": [ {\"uclAssignmentId\":\"{{ .Assignment.ID }}\",\"operation\":\"{{.Operation}}\",\"deploymentRegion\":\"{{ if .Application.Labels.region }}{{.Application.Labels.region}}{{ else }}{{.ApplicationTemplate.Labels.region}}{{ end }}\",\"applicationNamespace\":\"{{ if .Application.ApplicationNamespace }}{{.Application.ApplicationNamespace}}{{ else }}{{.ApplicationTemplate.ApplicationNamespace}}{{ end }}\",\"applicationTenantId\":\"{{.Application.LocalTenantID}}\",\"uclSystemTenantId\":\"{{.Application.ID}}\", {{ if .ApplicationTemplate.Labels.parameters }}\"parameters\": {{.ApplicationTemplate.Labels.parameters}}, {{ end }}\"configuration\": {{.ReverseAssignment.Value}} } ] }", 370 "headerTemplate": "{\"Content-Type\": [\"application/json\"]}", 371 "outputTemplate": "{\"error\":\"{{.Body.error}}\",\"success_status_code\": 200}" 372 } 373 ] 374 } 375 } 376 EOF 377 378 kubectl create secret generic "$CLIENT_CERT_SECRET_NAME" --from-literal="$APP_EXTERNAL_CLIENT_CERT_KEY"="$APP_EXTERNAL_CLIENT_CERT_VALUE" --from-literal="$APP_EXTERNAL_CLIENT_KEY_KEY"="$APP_EXTERNAL_CLIENT_KEY_VALUE" --save-config --dry-run=client -o yaml | kubectl apply -f - 379 kubectl create secret generic "$EXT_SVC_CERT_SECRET_NAME" --from-literal="$APP_EXT_SVC_CLIENT_CERT_KEY"="$APP_EXT_SVC_CLIENT_CERT_VALUE" --from-literal="$APP_EXT_SVC_CLIENT_KEY_KEY"="$APP_EXT_SVC_CLIENT_KEY_VALUE" --save-config --dry-run=client -o yaml | kubectl apply -f - 380 381 # pairing adapters configmap needed for the watcher started in the director 382 kubectl create configmap "$APP_PAIRING_ADAPTER_CM_NAME" --from-literal="$APP_PAIRING_ADAPTER_CM_KEY"='{"d3e9b9f5-25dc-4adb-a0a0-ed69ef371fb6":"http://compass-pairing-adapter.compass-system.svc.cluster.local/adapter-local-mtls"}' 383 384 if [[ ${DEBUG} == true ]]; then 385 echo -e "${GREEN}Debug mode activated on port $DEBUG_PORT${NC}" 386 cd $GOPATH/src/github.com/kyma-incubator/compass/components/director 387 CGO_ENABLED=0 go build -gcflags="all=-N -l" ./cmd/${COMPONENT} 388 dlv --listen=:$DEBUG_PORT --headless=true --api-version=2 exec ./${COMPONENT} 389 else 390 if [[ ${AUTO_TERMINATE} == true ]]; then 391 cd ${ROOT_PATH} 392 go build ${ROOT_PATH}/cmd/${COMPONENT}/main.go 393 MAIN_APP_LOGFILE=${ROOT_PATH}/main.log 394 395 ${ROOT_PATH}/main > ${MAIN_APP_LOGFILE} & 396 MAIN_PROCESS_PID="$!" 397 398 START_TIME=$(date +%s) 399 SECONDS=0 400 while (( SECONDS < ${TERMINAION_TIMEOUT_IN_SECONDS} )) ; do 401 CURRENT_TIME=$(date +%s) 402 SECONDS=$((CURRENT_TIME-START_TIME)) 403 SECONDS_LEFT=$((TERMINAION_TIMEOUT_IN_SECONDS-SECONDS)) 404 echo "[Director] left ${SECONDS_LEFT} seconds. Wait ..." 405 sleep 10 406 done 407 408 echo "Timeout of ${TERMINAION_TIMEOUT_IN_SECONDS} seconds for starting director reached. Killing the process." 409 echo -e "${GREEN}Kill main process..${NC}" 410 kill -SIGINT "${MAIN_PROCESS_PID}" 411 echo -e "${GREEN}Delete build result ...${NC}" 412 rm ${ROOT_PATH}/main || true 413 wait 414 else 415 go run ${ROOT_PATH}/cmd/${COMPONENT}/main.go 416 fi 417 fi