Skip to content
Snippets Groups Projects
Commit 07514a2e authored by Oleksandr Kosse (EPAM)'s avatar Oleksandr Kosse (EPAM)
Browse files

Merge branch 'GONRG-4912-refactor-bootstrap-script' into 'master'

GONRG-4912: Refactor bootstrap script

See merge request !223
parents eea5037e 4a6f0492
No related branches found
No related tags found
1 merge request!223GONRG-4912: Refactor bootstrap script
Pipeline #121474 passed with warnings
**/*.md
**/Dockerfile
**/*.yml
**/*.yaml
.*
FROM google/cloud-sdk:slim
COPY ./provider/partition-gcp/bootstrap/bootstrap_partition.sh ./opt
WORKDIR /opt
COPY ./provider/partition-gcp/bootstrap/ /opt/
ENV PREFIX=$(pwd)
RUN chmod 775 /opt/bootstrap_partition.sh
RUN chmod 775 bootstrap_partition.sh
CMD ["/bin/bash", "-c", "/opt/bootstrap_partition.sh && sleep 365d"]
CMD ["/bin/bash", "-c", "./bootstrap_partition.sh && sleep 365d"]
......@@ -2,148 +2,10 @@
set -ex
DATA_PARTITION_ID_UPPER=${DATA_PARTITION_ID^^}
generate_post_data() {
cat <<EOF
{
"properties": {
"projectId": {
"sensitive": false,
"value": "${PROJECT_ID}"
},
"serviceAccount": {
"sensitive": false,
"value": "${SERVICE_ACCOUNT}"
},
"complianceRuleSet": {
"sensitive": false,
"value": "shared"
},
"dataPartitionId": {
"sensitive": false,
"value": "${DATA_PARTITION_ID}"
},
"name": {
"sensitive": false,
"value": "${DATA_PARTITION_ID}"
},
"policy-service-enabled": {
"sensitive": false,
"value": "false"
},
"bucket": {
"sensitive": false,
"value": "${PROJECT_ID}-${DATA_PARTITION_ID}-records"
},
"crmAccountID": {
"sensitive": false,
"value": "[${DATA_PARTITION_ID},${DATA_PARTITION_ID}]"
},
"osm.postgres.datasource.url": {
"sensitive": true,
"value": "POSTGRES_DATASOURCE_URL_${DATA_PARTITION_ID_UPPER}"
},
"osm.postgres.datasource.username": {
"sensitive": true,
"value": "POSTGRES_DB_USERNAME_${DATA_PARTITION_ID_UPPER}"
},
"osm.postgres.datasource.password": {
"sensitive": true,
"value": "POSTGRES_DB_PASSWORD_${DATA_PARTITION_ID_UPPER}"
},
"file.minio.endpoint": {
"sensitive": false,
"value": "https://s3.${DOMAIN}"
},
"file.minio.accessKey": {
"sensitive": true,
"value": "MINIO_ACCESS_KEY"
},
"file.minio.secretKey": {
"sensitive": true,
"value": "MINIO_SECRET_KEY"
},
"obm.minio.endpoint": {
"sensitive": false,
"value": "http://minio:9000"
},
"obm.minio.accessKey": {
"sensitive": true,
"value": "MINIO_ACCESS_KEY"
},
"obm.minio.secretKey": {
"sensitive": true,
"value": "MINIO_SECRET_KEY"
},
"oqm.rabbitmq.amqp.host": {
"sensitive": false,
"value": "rabbitmq"
},
"oqm.rabbitmq.amqp.port": {
"sensitive": false,
"value": "5672"
},
"oqm.rabbitmq.amqp.path": {
"sensitive": false,
"value": ""
},
"oqm.rabbitmq.amqp.username": {
"sensitive": true,
"value": "RABBITMQ_ADMIN_USERNAME"
},
"oqm.rabbitmq.amqp.password": {
"sensitive": true,
"value": "RABBITMQ_ADMIN_PASSWORD"
},
"oqm.rabbitmq.admin.schema": {
"sensitive": false,
"value": "http"
},
"oqm.rabbitmq.admin.host": {
"sensitive": false,
"value": "rabbitmq"
},
"oqm.rabbitmq.admin.port": {
"sensitive": false,
"value": "15672"
},
"oqm.rabbitmq.admin.path": {
"sensitive": false,
"value": "/api"
},
"oqm.rabbitmq.admin.username": {
"sensitive": true,
"value": "RABBITMQ_ADMIN_USERNAME"
},
"oqm.rabbitmq.admin.password": {
"sensitive": true,
"value": "RABBITMQ_ADMIN_PASSWORD"
},
"elasticsearch.host": {
"sensitive": true,
"value": "ELASTIC_HOST_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.port": {
"sensitive": true,
"value": "ELASTIC_PORT_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.user": {
"sensitive": true,
"value": "ELASTIC_USER_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.password": {
"sensitive": true,
"value": "ELASTIC_PASS_${DATA_PARTITION_ID_UPPER}"
}
}
}
EOF
}
if [ "$ENVIRONMENT" == "anthos" ]
then
source ./data_anthos.sh
source ./data_gcp.sh
bootstrap_anthos() {
if [ "$PARTITION_CLEAN_UP_ENABLED" == "true" ]
then
echo "Partition cleanup enabled, will delete partition ${DATA_PARTITION_ID}"
......@@ -153,9 +15,9 @@ then
if [ "$delete_status_code" == 204 ] || [ "$delete_status_code" == 404 ]
then
echo "Partition deletion was successful, with status code : ${delete_status_code}"
echo "Partition deletion was successful, with status code: ${delete_status_code}"
else
echo "Not able to delete partition, response status code is : ${delete_status_code}"
echo "Not able to delete partition, status code is: ${delete_status_code}"
exit 1
fi
else
......@@ -165,25 +27,26 @@ then
status_code=$(curl -X POST \
--url "http://${PARTITION_NAME}/api/partition/v1/partitions/${DATA_PARTITION_ID}" --write-out "%{http_code}" --silent --output "/dev/null" \
-H "Content-Type: application/json" \
--data-raw "$(generate_post_data)")
--data-raw "$(generate_post_data_anthos)")
# shellcheck disable=SC2002
if [ "$status_code" == 201 ]
then
echo "Partition bootstrap finished successfully!"
elif [ "$status_code" == 409 ]
then
curl -X PATCH \
patch_status_code=$(curl -X PATCH \
--url "http://${PARTITION_NAME}/api/partition/v1/partitions/${DATA_PARTITION_ID}" --write-out "%{http_code}" --silent --output "/dev/null" \
-H "Content-Type: application/json" \
--data-raw "$(generate_post_data)"
echo "Partition was patched because Postgres Database had already had entities!"
--data-raw "$(generate_post_data_anthos)")
echo "Partition was patched because Postgres Database had already had entities! Status code of patching: $patch_status_code"
else
echo "Exiting with status code: $status_code"
exit 1
fi
}
elif [ "$ENVIRONMENT" == "gcp" ]
then
bootstrap_gcp() {
echo "sleep to prevent 500 response from the Partition service, due to timeout of creation for Workload Identity"
sleep 20
......@@ -198,9 +61,9 @@ then
if [ "$delete_status_code" == 204 ] || [ "$delete_status_code" == 404 ]
then
echo "Partition deletion was successful, with status code : ${delete_status_code}"
echo "Partition deletion was successful, with status code: ${delete_status_code}"
else
echo "Not able to delete partition, response status code is : ${delete_status_code}"
echo "Not able to delete partition, status code is: ${delete_status_code}"
exit 1
fi
else
......@@ -211,22 +74,32 @@ then
--url "http://${PARTITION_NAME}/api/partition/v1/partitions/${DATA_PARTITION_ID}" --write-out "%{http_code}" --silent --output "/dev/null" \
-H "Authorization: Bearer ${IDENTITY_TOKEN}" \
-H "Content-Type: application/json" \
--data-raw "$(generate_post_data)")
--data-raw "$(generate_post_data_gcp)")
# shellcheck disable=SC2002
if [ "$status_code" == 201 ]
then
echo "Partition bootstrap finished successfully!"
elif [ "$status_code" == 409 ]
then
curl -X PATCH \
patch_status_code=$(curl -X PATCH \
--url "http://${PARTITION_NAME}/api/partition/v1/partitions/${DATA_PARTITION_ID}" --write-out "%{http_code}" --silent --output "/dev/null" \
-H "Authorization: Bearer ${IDENTITY_TOKEN}" \
-H "Content-Type: application/json" \
--data-raw "$(generate_post_data)"
echo "Partition was patched because Datastore had already had entities!"
--data-raw "$(generate_post_data_gcp)")
echo "Partition was patched because Datastore had already had entities! Status code of patching: $patch_status_code"
else
echo "Exiting with status code: $status_code"
exit 1
fi
}
if [ "$ENVIRONMENT" == "anthos" ]
then
bootstrap_anthos
elif [ "$ENVIRONMENT" == "gcp" ]
then
bootstrap_gcp
fi
touch /tmp/bootstrap_ready
#!/usr/bin/env bash
DATA_PARTITION_ID_UPPER=${DATA_PARTITION_ID^^}
generate_post_data_anthos() {
cat <<EOF
{
"properties": {
"projectId": {
"sensitive": false,
"value": "${PROJECT_ID}"
},
"serviceAccount": {
"sensitive": false,
"value": "${SERVICE_ACCOUNT}"
},
"complianceRuleSet": {
"sensitive": false,
"value": "shared"
},
"dataPartitionId": {
"sensitive": false,
"value": "${DATA_PARTITION_ID}"
},
"name": {
"sensitive": false,
"value": "${DATA_PARTITION_ID}"
},
"policy-service-enabled": {
"sensitive": false,
"value": "false"
},
"bucket": {
"sensitive": false,
"value": "${PROJECT_ID}-${DATA_PARTITION_ID}-records"
},
"crmAccountID": {
"sensitive": false,
"value": "[${DATA_PARTITION_ID},${DATA_PARTITION_ID}]"
},
"osm.postgres.datasource.url": {
"sensitive": true,
"value": "POSTGRES_DATASOURCE_URL_${DATA_PARTITION_ID_UPPER}"
},
"osm.postgres.datasource.username": {
"sensitive": true,
"value": "POSTGRES_DB_USERNAME_${DATA_PARTITION_ID_UPPER}"
},
"osm.postgres.datasource.password": {
"sensitive": true,
"value": "POSTGRES_DB_PASSWORD_${DATA_PARTITION_ID_UPPER}"
},
"file.minio.endpoint": {
"sensitive": false,
"value": "https://s3.${DOMAIN}"
},
"file.minio.accessKey": {
"sensitive": true,
"value": "MINIO_ACCESS_KEY"
},
"file.minio.secretKey": {
"sensitive": true,
"value": "MINIO_SECRET_KEY"
},
"obm.minio.endpoint": {
"sensitive": false,
"value": "http://minio:9000"
},
"obm.minio.accessKey": {
"sensitive": true,
"value": "MINIO_ACCESS_KEY"
},
"obm.minio.secretKey": {
"sensitive": true,
"value": "MINIO_SECRET_KEY"
},
"oqm.rabbitmq.amqp.host": {
"sensitive": false,
"value": "rabbitmq"
},
"oqm.rabbitmq.amqp.port": {
"sensitive": false,
"value": "5672"
},
"oqm.rabbitmq.amqp.path": {
"sensitive": false,
"value": ""
},
"oqm.rabbitmq.amqp.username": {
"sensitive": true,
"value": "RABBITMQ_ADMIN_USERNAME"
},
"oqm.rabbitmq.amqp.password": {
"sensitive": true,
"value": "RABBITMQ_ADMIN_PASSWORD"
},
"oqm.rabbitmq.admin.schema": {
"sensitive": false,
"value": "http"
},
"oqm.rabbitmq.admin.host": {
"sensitive": false,
"value": "rabbitmq"
},
"oqm.rabbitmq.admin.port": {
"sensitive": false,
"value": "15672"
},
"oqm.rabbitmq.admin.path": {
"sensitive": false,
"value": "/api"
},
"oqm.rabbitmq.admin.username": {
"sensitive": true,
"value": "RABBITMQ_ADMIN_USERNAME"
},
"oqm.rabbitmq.admin.password": {
"sensitive": true,
"value": "RABBITMQ_ADMIN_PASSWORD"
},
"elasticsearch.host": {
"sensitive": true,
"value": "ELASTIC_HOST_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.port": {
"sensitive": true,
"value": "ELASTIC_PORT_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.user": {
"sensitive": true,
"value": "ELASTIC_USER_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.password": {
"sensitive": true,
"value": "ELASTIC_PASS_${DATA_PARTITION_ID_UPPER}"
}
}
}
EOF
}
#!/usr/bin/env bash
DATA_PARTITION_ID_UPPER=${DATA_PARTITION_ID^^}
generate_post_data_gcp() {
cat <<EOF
{
"properties": {
"projectId": {
"sensitive": false,
"value": "${PROJECT_ID}"
},
"serviceAccount": {
"sensitive": false,
"value": "${SERVICE_ACCOUNT}"
},
"complianceRuleSet": {
"sensitive": false,
"value": "shared"
},
"dataPartitionId": {
"sensitive": false,
"value": "${DATA_PARTITION_ID}"
},
"name": {
"sensitive": false,
"value": "${DATA_PARTITION_ID}"
},
"policy-service-enabled": {
"sensitive": false,
"value": "false"
},
"bucket": {
"sensitive": false,
"value": "${PROJECT_ID}-${DATA_PARTITION_ID}-records"
},
"crmAccountID": {
"sensitive": false,
"value": "[${DATA_PARTITION_ID},${DATA_PARTITION_ID}]"
},
"elasticsearch.host": {
"sensitive": true,
"value": "ELASTIC_HOST_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.port": {
"sensitive": true,
"value": "ELASTIC_PORT_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.user": {
"sensitive": true,
"value": "ELASTIC_USER_${DATA_PARTITION_ID_UPPER}"
},
"elasticsearch.password": {
"sensitive": true,
"value": "ELASTIC_PASS_${DATA_PARTITION_ID_UPPER}"
}
}
}
EOF
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment