#! /bin/bash ### # ============LICENSE_START======================================================= # policy-management # ================================================================================ # Copyright (C) 2017 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========================================================= ### function usage() { echo -n "Usage: $(basename $0) " echo -n "[(-d|--debug)] " echo -n "(-h|--host) <bus-host> " echo -n "[(-p|--port) <bus-port>] " echo -n "(-k|--key) <api-key> " echo -n "(-s|--secret) <api-secret> " echo -n "[(-P|--partition) <partition-count>] " echo -n "[(-R|--replication) <replication-count>] " echo "(-t|--topic) <topic> " echo "" } BUS_PORT=3904 PARTITION_COUNT=1 REPLICATION_COUNT=1 # command line options parsing until [[ -z "$1" ]]; do case $1 in -d|--debug) set -x ;; -h|--host) shift BUS_HOST=$1 ;; -p|--port) shift BUS_PORT=$1 ;; -k|--key) shift API_KEY=$1 ;; -s|--secret) shift API_SECRET=$1 ;; -t|--topic) shift TOPIC=$1 ;; -P|--partition-count) shift PARTITION_COUNT=$1 ;; -R|--replication-count) shift REPLICATION_COUNT=$1 ;; *) usage exit 1 ;; esac shift done if [[ -z ${BUS_HOST} ]]; then echo "An UEB/DMAAP server must be provided." echo usage exit 1 fi if [[ -z ${API_KEY} ]]; then echo "The API Key must be provided." usage exit 2 fi if [[ -z ${API_SECRET} ]]; then echo "The API Secret must be provided." usage exit 3 fi if [[ -z ${TOPIC} ]]; then echo "The Topic Name must be provided." usage exit 3 fi if [[ -z ${PARTITION_COUNT} ]]; then echo "The Partition Count must be provided." usage exit 4 fi if [[ -z ${REPLICATION_COUNT} ]]; then echo "The Replication Count must be provided." usage exit 5 fi REQUEST_API_KEY_BODY=$(< <(cat <<EOF { "topicName": "${TOPIC}", "topicDescription": "Generated by PDP-D $(hostname -f)", "partitionCount": ${PARTITION_COUNT}, "replicationCount": ${REPLICATION_COUNT} } EOF )) DATE=$(date) DATE_HASH=$(echo -n "${DATE}" | openssl sha1 -hmac "${API_SECRET}" -binary | openssl base64) unset http_proxy curl --silent -X POST \ --header "Accept:" \ --header "X-CambriaDate: ${DATE}" \ --header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \ --header "Content-Type: application/json" \ --data "${REQUEST_API_KEY_BODY}" \ http://${BUS_HOST}:${BUS_PORT}/topics/create