summaryrefslogtreecommitdiffstats
path: root/consul-loader-container/consul_store.sh
diff options
context:
space:
mode:
authorJack Lucas <jflos@sonoris.net>2021-02-05 12:10:28 -0500
committerJack Lucas <jflos@sonoris.net>2021-02-05 12:17:08 -0500
commitb65d4c1fc374af0f4b3bb5ea55641efd88f65ab3 (patch)
tree12870005f11e84889427732d3e2e36d282326c37 /consul-loader-container/consul_store.sh
parent7b6c642e4c7bb77d6029a2c06ef3e66e0e19c7e1 (diff)
Add yaml load and key delete to consul-loader-container
Enhance Consul loader to: -- Convert YAML configuration files to JSON before storing the configuration into Consul -- Provide an option to delete a Consul key so that a component's configuration can be removed from Consul when the component is undeployed. Use the ONAP integration team's Python image (integration-python:8.0.0) as base image. Issue-ID: DCAEGEN2-2616 Issue-ID: DCAEGEN2-2488 Signed-off-by: Jack Lucas <jflos@sonoris.net> Change-Id: Iaa45a03e805f64e12881f142de2fa206fb816175
Diffstat (limited to 'consul-loader-container/consul_store.sh')
-rwxr-xr-xconsul-loader-container/consul_store.sh22
1 files changed, 22 insertions, 0 deletions
diff --git a/consul-loader-container/consul_store.sh b/consul-loader-container/consul_store.sh
index 4e64fc3..e60dbc4 100755
--- a/consul-loader-container/consul_store.sh
+++ b/consul-loader-container/consul_store.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# ================================================================================
# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2021 J. F. Lucas. All rights reserved.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -25,6 +26,11 @@
# Command line options
# --service name|address|port : Register a service with name 'name', address 'address', and port 'port'.
# --key keyname|filepath: Register a key-value pair with key 'keyname' and the contents of a file at 'filepath' as its value
+# --key-yaml keyname|filepath: Register a key-value pair with name 'keyname', converting the YAML content of the file at 'filepath'
+# to JSON, and storing the JSON result as the value. This is used for Helm deployment of DCAE microservices, where the initial
+# application configuration is stored in a Helm values.yaml file in YAML form. --key-yaml converts the YAML configuration into
+# JSON, which is the format that microservices expect.
+# -- delete-key
# A command can include multiple instances of each option.
CONSUL_ADDR=${CONSUL_PROTO:-http}://${CONSUL_HOST:-consul}:${CONSUL_PORT:-8500}
@@ -48,6 +54,12 @@ function put_key {
curl -v -X PUT --data-binary @$2 -H 'Content-Type: application/json' ${KV_URL}/$1
}
+# Delete a key from the Consul KV store
+# $1: Key to be deleted
+function delete_key {
+ curl -v -X DELETE ${KV_URL}/$1
+}
+
set -x
# Check Consul readiness
@@ -86,6 +98,16 @@ do
put_key ${kv[@]}
shift 2;
;;
+ "--key-yaml")
+ # See above for explanation of (${2//|/ })
+ kv=(${2//|/ })
+ cat ${kv[1]} | /opt/app/yaml2json.py | put_key ${kv[0]} -
+ shift 2;
+ ;;
+ "--delete-key")
+ delete_key $2
+ shift 2;
+ ;;
*)
echo "ignoring $1"
shift