#!/bin/bash # ============LICENSE_START======================================================= # org.onap.dmaap # ================================================================================ # Copyright © 2018 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========================================================= # # ECOMP is a trademark and service mark of AT&T Intellectual Property. urlencode() { local data if [[ $# != 1 ]]; then echo "Usage: $0 string-to-urlencode" return 1 fi data="$(curl -s -o /dev/null -w %url_effective --get --data-urlencode "$1" "")" if [[ $? != 3 ]]; then echo "Unexpected error" 1>&2 return 2 fi echo "${data##/?}" return 0 } export urlencode PATH=/opt/app/datartr/bin:/bin:/usr/bin:$PATH PROVCMD="$0" export PATH PROVSRVR PROVCMD NOPROXY if [ ! -x /usr/bin/curl ] then echo provcmd: curl is required for this tool. exit 1 fi optloop= while [ -z "$optloop" ] do if [ "$1" == '-s' ] then shift PROVSRVR="$1" shift elif [ "$1" == '-v' ] then shift VERBOSE=x elif [ "$1" == '-N' ] then shift NOPROXY='?noproxy=1' else optloop=1 fi done if [ -z "$PROVSRVR" ] then echo "provcmd: you need to specify the server, either via the -s option" echo " or by setting and exporting PROVSRVR" exit 1 fi CMD="$1" shift if [ "$CMD" == 'delete' ] then if [ $# -gt 0 ] then for i do [ -n "$VERBOSE" ] && echo curl -4 -k -X DELETE "https://$PROVSRVR/internal/api/$1$NOPROXY" curl -4 -k -X DELETE "https://$PROVSRVR/internal/api/$1$NOPROXY" done exit 0 fi elif [ "$CMD" == 'create' ] then if [ $# -eq 2 ] then # create (with POST), then set the value [ -n "$VERBOSE" ] && echo curl -4 -k -X POST --data '' "https://$PROVSRVR/internal/api/$1$NOPROXY" curl -4 -k -X POST --data '' "https://$PROVSRVR/internal/api/$1$NOPROXY" $PROVCMD set "$1" "$2" exit 0 fi elif [ "$CMD" == 'get' ] then if [ $# -eq 1 ] then # get [ -n "$VERBOSE" ] && echo curl -4 -k "https://$PROVSRVR/internal/api/$1$NOPROXY" curl -4 -k "https://$PROVSRVR/internal/api/$1$NOPROXY" 2>/dev/null | tr '|' '\012' | sort exit 0 fi elif [ "$CMD" == 'set' ] then if [ $# -ge 2 ] then p="$1" shift v="" for i; do [ -n "$v" ] && v="$v|"; v="$v$i"; done # set (with PUT) ue=`urlencode "$v"` NOPROXY=`echo $NOPROXY | tr '?' '&'` [ -n "$VERBOSE" ] && echo curl -4 -k -X PUT "https://$PROVSRVR/internal/api/$p?val=$ue$NOPROXY" curl -4 -k -X PUT "https://$PROVSRVR/internal/api/$p?val=$ue$NOPROXY" exit 0 fi elif [ "$CMD" == 'append' ] then if [ $# -ge 2 ] then p="$1" shift tmp=`curl -4 -k "https://$PROVSRVR/internal/api/$p$NOPROXY" 2>/dev/null` $PROVCMD set "$p" "$tmp" "$@" exit 0 fi elif [ "$CMD" == 'remove' ] then if [ $# -eq 2 ] then p="$1" rm="$2" $PROVCMD get "$p" | grep -v "^$rm\$" > /tmp/pc$$ IFS=$'\r\n' $PROVCMD set "$p" `cat /tmp/pc$$` rm /tmp/pc$$ exit 0 fi fi # Some error somewhere - display usage cat <<'EOF' usage: provcmd [ -s server ] delete name1 [ name2 ... ] provcmd [ -s server ] get name provcmd [ -s server ] create name value provcmd [ -s server ] set name value1 [ value2 ... ] provcmd [ -s server ] append name value1 [ value2 ... ] provcmd [ -s server ] remove name value delete - remove the parameters named name1, name2 ... get - displays the parameters' value create - creates a new parameter set - sets the value of an existing parameter append - appends the value to a list-based parameter remove - removes a value from a list based parameter server - the provisioning server FQDN (feeds-drtr.web.att.com for production) Standard Parameters Names: ------------------------------ ACTIVE_POD DELIVERY_INIT_RETRY_INTERVAL DELIVERY_MAX_AGE DELIVERY_MAX_RETRY_INTERVAL DELIVERY_RETRY_RATIO LOGROLL_INTERVAL NODES PROV_ACTIVE_NAME PROV_AUTH_ADDRESSES PROV_AUTH_SUBJECTS PROV_DOMAIN PROV_MAXFEED_COUNT PROV_MAXSUB_COUNT PROV_NAME PROV_REQUIRE_CERT PROV_REQUIRE_SECURE STANDBY_POD EOF exit 1