diff options
author | Jack Lucas <jflucas@research.att.com> | 2020-03-02 11:07:31 -0500 |
---|---|---|
committer | Jack Lucas <jflucas@research.att.com> | 2020-03-02 22:34:00 -0500 |
commit | a25c92363d1fdb3b3f9fc91203912febc19ed3c0 (patch) | |
tree | dc95b68c792bcfb409d67d7b12e42cd848cf674b /scripts | |
parent | 0bc07ad3d16ccc2a6ca032951093866eec5d5d95 (diff) |
Load blueprint into DCAE inventory at boot
Load k8splugin 2.0.0 in addition to 1.7.2
Issue-ID: DCAEGEN2-2049
Issue-ID: DCAEGEN2-1938
Signed-off-by: Jack Lucas <jflucas@research.att.com>
Change-Id: I5306bf54b0c443b83fb6dc5afb60b07e87d741e6
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/bootstrap.sh | 13 | ||||
-rwxr-xr-x | scripts/inventory.sh | 69 | ||||
-rwxr-xr-x | scripts/load-plugins.sh | 1 | ||||
-rwxr-xr-x | scripts/uninstall.sh | 22 |
4 files changed, 101 insertions, 4 deletions
diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 909c203..9fe7cd0 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -40,12 +40,13 @@ CMPROTO=${CMPROTO:-http} CMPORT=${CMPORT:-80} # Set up additional parameters for using HTTPS +CACERT="/certs/cacert.pem" CFYTLS="" CURLTLS="" if [ $CMPROTO = "https" ] then - CFYTLS="--rest-certificate /certs/cacert.pem --ssl" - CURLTLS="--cacert /certs/cacert.pem" + CFYTLS="--rest-certificate $CACERT --ssl" + CURLTLS="--cacert $CACERT" fi ### FUNCTION DEFINITIONS ### @@ -230,6 +231,14 @@ deploy holmes_engine k8s-holmes-engine.yaml k8s-holmes_engine-inputs.yaml # Display deployments, for debugging purposes cfy deployments list +# Load blueprints into DCAE inventory as +# DCAE service types +. /scripts/inventory.sh +for BP in /blueprints/*.yaml +do + upload_service_type $BP $CACERT +done + # Continue running keep_running "Finished bootstrap steps." echo "Exiting!" diff --git a/scripts/inventory.sh b/scripts/inventory.sh new file mode 100755 index 0000000..f7f217e --- /dev/null +++ b/scripts/inventory.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# ================================================================================ +# Copyright (c) 2020 AT&T Intellectual Property. 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. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# Functions for uploading blueprints to DCAE inventory + +# Inventory API endpoint +INVENTORY=https://inventory:8080/dcae-service-types +#INVENTORY=https://localhost:8080/dcae-service-types + +# Default fixed values in service type definition +OWNER=dcaeorch +COMPONENT=dcae +APPLICATION=DCAE + +function flatten { + # Convert a blueprint file into a flattened, escaped string + # that can stored into a DCAE inventory "service type" + # $1: path to blueprint file to be flattened + + FLAT=$(sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/$/\\n/g' < $1 | tr -d '\n') + echo "${FLAT}" +} + +function create_service_type { + # Create a DCAE service type object (JSON), + # suitable for uploading to DCAE inventory. + # Use the name of the blueprint file (minus + # the .yaml suffix) as the type name. + # Use date-time (to the minute) in numeric + # form as the type version. + # $1: path to blueprint file for the service type + echo " + { + \"vnfTypes\": [], + \"owner\": \"${OWNER}\", + \"typeVersion\": $(date +%y%m%d%I%M), + \"typeName\": \"$(basename $1 .yaml)\", + \"component\": \"${COMPONENT}\", + \"application\": \"${APPLICATION}\", + \"blueprintTemplate\": \"$(flatten $1)\" + }" +} + +function upload_service_type { + # Transform a blueprint into a DCAE service type + # and upload to DCAE inventory + # $1: path to the blueprint + # $2: path to CA cert file (optional) + if [ "$2" ] + then + TLSCURL="--cacert $2" + fi + create_service_type $1 | \ + curl $TLSCURL -X POST -H "Content-Type: application/json" -d @- ${INVENTORY} +} diff --git a/scripts/load-plugins.sh b/scripts/load-plugins.sh index c67258e..a6b25ae 100755 --- a/scripts/load-plugins.sh +++ b/scripts/load-plugins.sh @@ -32,6 +32,7 @@ DEST=wagons DCAEPLUGINFILES=\ "\ k8splugin/1.7.2/k8splugin-1.7.2-py27-none-linux_x86_64.wgn +k8splugin/2.0.0/k8splugin-2.0.0-py27-none-linux_x86_64.wgn relationshipplugin/1.1.0/relationshipplugin-1.1.0-py27-none-linux_x86_64.wgn clamppolicyplugin/1.1.0/clamppolicyplugin-1.1.0-py27-none-linux_x86_64.wgn dcaepolicyplugin/2.4.0/dcaepolicyplugin-2.4.0-py27-none-linux_x86_64.wgn \ diff --git a/scripts/uninstall.sh b/scripts/uninstall.sh index 71f8161..30dc2bf 100755 --- a/scripts/uninstall.sh +++ b/scripts/uninstall.sh @@ -20,6 +20,14 @@ set -x set +e +# TLS setup +CACERT="/certs/cacert.pem" +CURLTLS="" +if [ $CMPROTO = "https" ] +then + CURLTLS="--cacert $CACERT" +fi + # Leave the Consul cluster /opt/consul/bin/consul leave @@ -30,7 +38,17 @@ set +e # jq gives us the just the deployment ids (e.g., "config_binding_service"), one per line # # xargs -I lets us run the cfy uninstall command once for each deployment id extracted by jq - -curl -Ss --user admin:$CMPASS -H "Tenant: default_tenant" "$CMADDR/api/v3.1/deployments?_include=id" \ +curl -Ss --user admin:$CMPASS -H "Tenant: default_tenant" ${CURLTLS} "$CMPROTO://$CMADDR:$CMPORT/api/v3.1/deployments?_include=id" \ | /bin/jq .items[].id \ | xargs -I % sh -c 'cfy uninstall %' + +# Delete blueprints (in case the uninstall didn't get them) +curl -Ss --user admin:$CMPASS -H "Tenant: default_tenant" ${CURLTLS} "$CMPROTO://$CMADDR:$CMPORT/api/v3.1/blueprints?_include=id" \ +| /bin/jq .items[].id \ +| xargs -I % sh -c 'cfy blueprints delete %' + +# Delete plugins +curl -Ss --user admin:$CMPASS -H "Tenant: default_tenant" ${CURLTLS} "$CMPROTO://$CMADDR:$CMPORT/api/v3.1/plugins?_include=id" \ +| /bin/jq .items[].id \ +| xargs -I % sh -c 'cfy plugins delete %' + |