From a25c92363d1fdb3b3f9fc91203912febc19ed3c0 Mon Sep 17 00:00:00 2001 From: Jack Lucas Date: Mon, 2 Mar 2020 11:07:31 -0500 Subject: 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 Change-Id: I5306bf54b0c443b83fb6dc5afb60b07e87d741e6 --- pom.xml | 2 +- scripts/bootstrap.sh | 13 ++++++++-- scripts/inventory.sh | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ scripts/load-plugins.sh | 1 + scripts/uninstall.sh | 22 ++++++++++++++-- version.properties | 4 +-- 6 files changed, 104 insertions(+), 7 deletions(-) create mode 100755 scripts/inventory.sh diff --git a/pom.xml b/pom.xml index 0d331e7..c4ddbc6 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. org.onap.dcaegen2.deployments k8s-bootstrap-container dcaegen2-deployments-k8s-bootstrap-container - 1.9.2-SNAPSHOT + 1.10.0-SNAPSHOT http://maven.apache.org pom 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 %' + diff --git a/version.properties b/version.properties index 1a13245..40167e6 100644 --- a/version.properties +++ b/version.properties @@ -1,6 +1,6 @@ major=1 -minor=9 -patch=2 +minor=10 +patch=0 base_version=${major}.${minor}.${patch} release_version=${base_version} snapshot_version=${base_version}-SNAPSHOT -- cgit 1.2.3-korg