aboutsummaryrefslogtreecommitdiffstats
path: root/dmaap-bc/src/main/resources/misc
diff options
context:
space:
mode:
Diffstat (limited to 'dmaap-bc/src/main/resources/misc')
-rw-r--r--dmaap-bc/src/main/resources/misc/LocalKey27
-rw-r--r--dmaap-bc/src/main/resources/misc/PolicyEngineApi.properties.tmpl36
-rw-r--r--dmaap-bc/src/main/resources/misc/dmaapbc198
-rwxr-xr-xdmaap-bc/src/main/resources/misc/dmaapbc.properties.tmpl222
-rw-r--r--dmaap-bc/src/main/resources/misc/havecert.tmpl40
-rw-r--r--dmaap-bc/src/main/resources/misc/logback.xml348
-rw-r--r--dmaap-bc/src/main/resources/misc/schema_all.sql144
7 files changed, 1015 insertions, 0 deletions
diff --git a/dmaap-bc/src/main/resources/misc/LocalKey b/dmaap-bc/src/main/resources/misc/LocalKey
new file mode 100644
index 0000000..38ede55
--- /dev/null
+++ b/dmaap-bc/src/main/resources/misc/LocalKey
@@ -0,0 +1,27 @@
+7ntUvubggJ1h6AXwQENQScrnlqmLMno_583XufLsguAT11bnBk0DVLE2GtCZ0pNQzlR8I3PJ1_nZ
+UEVQs1G_qZzV-MHQZvz54solEp8dNUVji4JUzP7WiPuJdvCX8vvGLc8-jOVzEJ2DAGmV3gNp60_F
+jrKx7F7Dz-h94jWZ45rNn7-Re_BneSto6HiSj0DN_SKSNhE5z9Qf3tFyFLGIYmlQoxzbTYC38uN0
+FjAYuKz6W_pTLzyOjHNAagYwEjTUUU-ei-QA5pL20-oG3jSYGnj_V94kd8X5ncB1-nybUsy5OOvZ
+huCxf9hSetn2fpIszkRcuFxaxiwubpmEWp2L_zovhcRI1OMFPIIK0IckRHD1a5CpFVzR7P5L7LQk
+FErATsQkHsPS9BJN5wlj1EoIhA2uaELjXjmOqPQg76eyQqXXcMHRJTA6czbXPYfTQMQx1r2USC9o
+HdoLT4-so7zARZidmYmvPPT9qvNisK6BF4M32K-_s6YyJspSEB1MscNPujsD7zczIsBct7BTRoeZ
+CbtkskT_yFhQzdzdSMzFN_NJ7Yb9p3d1G4gSkj2rbA-BDybHHPij8k6-k-ipvi_T_LW9B_J8Jf5f
+aRclZqVgwwSG-mUKUyk9bI3cVc-1P2ICUmr59EjuauDAtlMQL-hnTJUs1rUerh4Q7d4XgrNLjLHY
+Oue8MEj24VSMl-f28DDIV1N6ODiBKDHUmdENsmlbqeNpzQxu7FoSbLu6gN6zDP8Jw4ck1NHEIv8H
+ecUf-hBGdB0HINClaV9X2ycafWcmRY-NCzX65cp7a1Rpl1kCEW5u79LLN28aJeTzmriewhy87hJf
+rAah8z3dHteIN1fuvRoGsFwZ4jKo6olFxcBOlpHQIW5JJ1roO1vQ2Dx_l-Foo7wV_AD127zCu7ci
+lYodnAOocKbhAub4sf90P3D2NMKb20e5CQrBSchtIEaD3G7J-vL5xYydLuLu5WipOdZuq3VhSSZm
+TZIR3Ya2QiZVokxKgH-N0gPDz-TimNV_MkUSCNsv2NxjBM7oPF3dzEHbHS5eue41_R4vqxFdTdva
+o0ASTFkARmmnMFBx1a73jmcoBBx-i4el8Rce7RvFWn1PALOnRsIQPy_Pgx0OE9_6eHfOSvyxbyMM
+0FwE5f77gO967tgc4LwqB1pzz2Uk7hfizLKNc6nrrgDxSb_9rDWwiE4rWw7WYcRKvRQ270lCH4FQ
+ezrPacnnK3cKM5L6brOyhbhiL4MnNX714L0K8C6TQnIVisQCLHwif40G_DSEWxICQ5V2DMzFn3JT
+PefaubHlqxRZVikNH71b_2ZRLEi84m5iUuy8Ir1s3W6xuyIdt-yKLnjgnLjOPPxTDC5G_xaXAAuM
+SkSOjvPzOArMUUnwYk68jAxXS2tBT8JN6OnglN8dHC-P24tYzfs4B4tMYJ1ibz6BUsQ6nYxsRUak
+4ZjRmo3UG0OFJbOY-f0ja6Q4pISe1IXmlM4Ly9QdCfeHyDV-7Fiud9V_zo92lpQwttwSpBvFoDYQ
+oePdA0zmCx6GIX_8L9e8a03hUx4aUtZ8C3Kf0PzOWTcjrV7nGb99ctjmRtfGw5GPWudH6CI3WFK2
+5wFDhrQSbRhzV4iQalYVPJQ7LO4WEi4EsBTRSiz074UpvkMV3UfMGDlpXAAq5rEjj-d5WbHhzbs8
+MGKzZLTfUz9lP4CME9AOwto_ey1ly3H-yaEgCpnshm-CZoSqVDmuFYM0QR_NcrqmSQ9ZKJEF_wTa
+TEAXNJ99CYE0ZLvU9FjgCqH1-q1zL7z3NLX1uFYazEZWGMZFPVD5XOcCtUlVyUz9KuAO9ARVyu5C
+7kzo_AFePtnsA_JUvvkauo6RwO6qhLJjZuSjvmiSdOAohiXUalDFjWVW8CMfgLF4PbRDklsAcsiT
+P0xUdyWJ5slu87f9PunXDwQZWNv6haTIhVX7bilCDpRPbTbmimmE_C2J7tgV2EvazD7o8V_jeu0g
+cnIpzRnaPG9l-uy2UKoxOXI4CSymcJoyV2xxC0SF7Q5quAhf3UGAdQUeFtHwxZtYiAMXLs06 \ No newline at end of file
diff --git a/dmaap-bc/src/main/resources/misc/PolicyEngineApi.properties.tmpl b/dmaap-bc/src/main/resources/misc/PolicyEngineApi.properties.tmpl
new file mode 100644
index 0000000..248b288
--- /dev/null
+++ b/dmaap-bc/src/main/resources/misc/PolicyEngineApi.properties.tmpl
@@ -0,0 +1,36 @@
+#
+# ============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.
+#
+#
+
+cat <<!EOF
+#PDP URLs to which will be used by the Policy Engine API to take Decisions. There are multiple to support redundancy.
+#Format: PDP_URL{PriorityNumber} = URL, id, password.
+PDP_URL1 = ${DMAAPBC_PDP1_URL:-https://host1.domain.notset.com:8081/pdp/} , ${DMAAPBC_PDP1_USER:-testpdp} , ${DMAAPBC_PDP1_PWD:-alpha123}
+PDP_URL2 = ${DMAAPBC_PDP2_URL:-https://host2.domain.notset.com:8082/pdp/} , ${DMAAPBC_PDP2_USER:-testpdp} , ${DMAAPBC_PDP2_PWD:-alpha456}
+PAP_URL = ${DMAAPBC_PAP_URL:-https://host3.domain.notset.com:9091/pap/} , ${DMAAPBC_PAP_USER:-testpap} , ${DMAAPBC_PAP_PWD:-alpha123}
+
+
+
+CLIENT_ID=${DMAAPBC_TOPICMGR_USER:-mechIdNotSet@namespaceNotSet}
+ENVIRONMENT=${DMAAPBC_PE_AAF_ENV:-DEVL}
+
+
+!EOF
diff --git a/dmaap-bc/src/main/resources/misc/dmaapbc b/dmaap-bc/src/main/resources/misc/dmaapbc
new file mode 100644
index 0000000..963d2d1
--- /dev/null
+++ b/dmaap-bc/src/main/resources/misc/dmaapbc
@@ -0,0 +1,198 @@
+#!/bin/bash
+#
+# ============LICENSE_START==========================================
+# org.onap.dmaap
+# ===================================================================
+# Copyright © 2018 AT&T Intellectual Property. All rights reserved.
+# Modifications copyright (C) 2021 Nordix Foundation.
+# ===================================================================
+# 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.
+#
+
+umask 0022
+TZ=GMT0
+COMPONENT=dmaapbc
+APP_ROOT=/opt/app/$COMPONENT
+USER=onap
+GROUP=onap
+export TZ
+PATH=/opt/java/openjdk/bin:/usr/sbin:/usr/bin:/sbin:/bin
+
+export PATH
+CLASSPATH=`echo $APP_ROOT/etc $APP_ROOT/lib/*.jar | tr ' ' ':'`
+export CLASSPATH
+CONFIGMAP_ROOT=${CONFIGMAP_ROOT:-/opt/app/config}
+CONFIGMAP_PROPS=${CONFIGMAP_PROPS:-$CONFIGMAP_ROOT/conf/dmaapbc.properties}
+CONTAINER_CONFIG=$CONFIGMAP_ROOT/conf/buscontroller.env
+MAIN=org.onap.dmaap.dbcapi.server.Main
+
+authcheck() {
+ set -x
+ ID=`id -n -u`
+ GRP=`id -n -g`
+ if [ "$ID" != "$USER" ]
+ then
+ echo $COMPONENT must be started as user $USER not $ID
+ exit 1
+ fi
+ if [ "$GRP" != "$GROUP" ]
+ then
+ echo $COMPONENT must be started as group $GROUP not $GRP
+ exit 1
+ fi
+ set +x
+}
+
+pids() {
+ set -x
+ ps -ef | grep java | grep $MAIN | sed -e 's/[^ ]* *//' -e 's/ .*//'
+ set +x
+}
+
+config() {
+ echo "ENTER config"
+ set -x
+ if [ ! -d $APP_ROOT ]
+ then
+ echo "Expected app root directory $APP_ROOT does not exist"
+ exit 1
+ fi
+
+ cd $APP_ROOT
+ if [ ! -f $CONTAINER_CONFIG ]
+ then
+ echo "WARNING: Expected env file $CONTAINER_CONFIG not found. Default behaviors in effect"
+ find $CONTAINER_ROOT -type f
+ else
+ . $CONTAINER_CONFIG
+ fi
+
+ if [ "$DMAAPBC_WAIT_TO_EXIT" != "Y" ]
+ then
+ echo "Creating $APP_ROOT/ok_to_exit so no waiting..."
+ > $APP_ROOT/ok_to_exit
+ else
+ echo "Not creating $APP_ROOT/ok_to_exit"
+ fi
+
+ # These files might be better provided in kubernetes configmaps
+ # so if they are there, use them
+ if [ -f $CONFIGMAP_PROPS ]
+ then
+ PROPS=$CONFIGMAP_PROPS
+ else
+ PROPS=etc/dmaapbc.properties
+ . misc/dmaapbc.properties.tmpl > $PROPS
+ fi
+ if [ ! -f config/PolicyEngineApi.properties ]
+ then
+ . misc/PolicyEngineApi.properties.tmpl > config/PolicyEngineApi.properties
+ fi
+ set +x
+}
+
+start() {
+ echo "ENTER start"
+ set -x
+ authcheck
+ cd $APP_ROOT
+ pwd
+
+ PIDS=`pids`
+ if [ "$PIDS" != "" ]
+ then
+ echo $COMPONENT already running
+ exit 0
+ fi
+ rm -f $APP_ROOT/etc/SHUTDOWN
+
+ java -classpath $CLASSPATH $MAIN
+ dmaapjar="$APP_ROOT/lib/dmaap-bc.jar"
+ # JVM flags
+ FLAGS="-cp etc:lib/* -DConfigFile=$PROPS -Dlogback.configurationFile=etc/logback.xml -Dhttps.protocols=TLSv1.2 -Dhttps.cipherSuites=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
+ nohup java $FLAGS -jar $dmaapjar </dev/null &
+ sleep 5
+ PIDS=`pids`
+ set +x
+}
+
+stop() {
+ echo "ENTER stop"
+ authcheck
+ touch $APP_ROOT/etc/SHUTDOWN
+ PIDS=`pids`
+ if [ "$PIDS" != "" ]
+ then
+ sleep 5
+ kill -9 $PIDS
+ sleep 5
+ echo $COMPONENT stopped
+ else
+ echo $COMPONENT not running
+ fi
+}
+
+status() {
+ echo "ENTER status"
+ PIDS=`pids`
+ if [ "$PIDS" != "" ]
+ then
+ echo $COMPONENT running
+ else
+ echo $COMPONENT not running
+ fi
+}
+
+set -x
+case "$1" in
+'deploy')
+ config
+ start
+ wait
+ ;;
+'start')
+ start
+ ;;
+'stop')
+ stop
+ ;;
+'restart')
+ stop
+ sleep 20
+ start
+ ;;
+'status')
+ status
+ ;;
+*)
+ echo "Usage: $0 { start | stop | restart }"
+ exit 1
+ ;;
+esac
+ ls -l $APP_ROOT/logs/ONAP
+ echo "------------ tail -100 error.log ---------------"
+ tail -n 1000 $APP_ROOT/logs/ONAP/error.log
+ echo "------------ tail -100 server.log ---------------"
+ tail -n 1000 $APP_ROOT/logs/ONAP/server.log
+ echo "------------ tail -100 application.log ---------------"
+ tail -n 1000 $APP_ROOT/logs/ONAP/application.log
+
+ echo "Check $APP_ROOT/ok_to_exit"
+ while [ ! -f $APP_ROOT/ok_to_exit ]
+ do
+ echo "$APP_ROOT/ok_to_exit does not exist. Sticking around for debugging..."
+ sleep 10
+ done
+exit 0
diff --git a/dmaap-bc/src/main/resources/misc/dmaapbc.properties.tmpl b/dmaap-bc/src/main/resources/misc/dmaapbc.properties.tmpl
new file mode 100755
index 0000000..d013ca3
--- /dev/null
+++ b/dmaap-bc/src/main/resources/misc/dmaapbc.properties.tmpl
@@ -0,0 +1,222 @@
+cat <<!EOF
+#
+# ============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.
+#
+#
+#
+# Configuration parameters fixed at startup for the DMaaP Bus Controller
+#
+# CSIT TESTING
+csit: ${DMAAPBC_CSIT:-No}
+
+#
+# URI to retrieve dynamic DR configuration
+#
+ProvisioningURI: ${DMAAPBC_INTURI:-/internal/prov}
+#
+# Allow http access to API
+#
+HttpAllowed: ${DMAAPBC_HTTPALLOWED:-true}
+#
+# The port number for http as seen within the server
+#
+IntHttpPort: ${DMAAPBC_INT_HTTP_PORT:-8080}
+#
+# The port number for https as seen within the server
+# Set to 0 if no certificate is available yet...
+#
+IntHttpsPort: ${DMAAPBC_INT_HTTPS_PORT:-8443}
+#
+# The external port number for https taking port mapping into account
+#
+ExtHttpsPort: ${DMAAPBC_EXT_HTTPS_PORT:-443}
+#
+# The type of keystore for https
+#
+KeyStoreType: jks
+#
+# The path to the keystore for https
+#
+KeyStoreFile: ${DMAAPBC_KSTOREFILE:-etc/keystore}
+#
+# The password for the https keystore (remember to put password in "" and escape $ characters)
+#
+KeyStorePassword: ${DMAAPBC_KSTOREPASS:-"Y@Y5f&gm?PAz,CVQL,lk[VAF"}
+#
+# The password for the private key in the https keystore (remember to put password in "" and escape $ characters)
+#
+KeyPassword: ${DMAAPBC_PVTKEYPASS:-"Y@Y5f&gm?PAz,CVQL,lk[VAF"}
+#
+# The type of truststore for https
+#
+TrustStoreType: jks
+#
+# The path to the truststore for https
+#
+TrustStoreFile: ${DMAAPBC_TSTOREFILE:-etc/org.onap.dmaap-bc.trust.jks}
+#
+# The password for the https truststore (remember to put password in "" and escape $ characters)
+#
+TrustStorePassword: ${DMAAPBC_TSTOREPASS:-"8b&R5%l\$l:@jSWz@FCs;rhY*"}
+#
+# The path to the file used to trigger an orderly shutdown
+#
+QuiesceFile: etc/SHUTDOWN
+#
+# Enable postgress
+#
+UsePGSQL: ${DMAAPBC_PG_ENABLED:-false}
+#
+# The host for postgres access
+#
+DB.host: ${DMAAPBC_PGHOST:-HostNotSet}
+#
+# For postgres access
+#
+DB.cred: ${DMAAPBC_PGCRED:-ValueNotSet}
+#
+# Name of this environment
+#
+DmaapName: ${DMAAPBC_INSTANCE_NAME:-demo}
+#
+# Name of DR prov server
+#
+DR.provhost: ${DMAAPBC_DRPROV_FQDN:-dcae-drps.domain.notset.com}
+#
+# handling of feed delete
+# DeleteOnDR - means use the DR API to DELETE a feed. (default for backwards compatibility)
+# SimulateDelete - means preserve the feed on DR (after cleaning it up), and mark as DELETED in DBCL. Better for cfy environments
+Feed.deleteHandling: ${DMAAPBC_FEED_DELETE:-DeleteOnDR}
+
+################################################################################
+# MR Related Properties:
+#
+# ONAP Beijing and Casablanca are a single site deployment.
+MR.multisite: false
+#
+# Value of the CNAME DNS entry which resolves to the primary central MR cluster (when there are more than one central clusters).
+# if there is only one MR cluster in an environment, set this to the DNS name for that cluster
+#
+MR.CentralCname: ${DMAAPBC_MR_CNAME:-message-router}
+#
+# MR Client Delete Level thoroughness:
+# 0 = don't delete
+# 1 = delete from persistent store
+# 2 = delete from persistent store (DB) and authorization store (AAF)
+MR.ClientDeleteLevel: 1
+#
+# MR Topic Factory Namespace
+#
+MR.TopicFactoryNS: org.onap.dcae.dmaap.topicFactory
+#
+# MR TopicMgr Role
+MR.TopicMgrRole: org.onap.dmaap-bc-topic-mgr.client
+
+# MR topic name style
+MR.topicStyle: FQTN_LEGACY_FORMAT
+
+# MR topic ProjectID
+MR.projectID: 23456
+#
+# end of MR Related Properties
+################################################################################
+
+#
+# The Role and credentials of the MirrorMaker Provisioner. This is used by DMaaP Bus Controller to pub to the provisioning topic
+# Not part of 1701
+#
+MM.ProvRole: ${DMAAPBC_MMPROV_ROLE:-org.onap.dmaap-bc-mm-prov.prov}
+MM.ProvUserMechId: ${DMAAPBC_MMPROV_ID:-dmaap-bc-mm-prov@dmaap-bc-mm-prov.onap.org}
+MM.ProvUserPwd: ${DMAAPBC_MMPROV_PWD:-demo123456!}
+#
+# The Role of the MirrorMaker Agent. This is used by MM to sub to provisioning topic
+#
+MM.AgentRole: ${DMAAPBC_MMAGENT_ROLE:-org.onap.dmaap-bc-mm-prov.agent}
+#################
+#
+# CADI settings
+#
+# flag indication if CADI filtering is used
+enableCADI: ${DMAAPBC_ENABLE_CADI:-false}
+#
+# path to CADI properties
+cadi.properties: /opt/app/osaaf/local/org.onap.dmaap-bc.props
+
+#################
+# AAF Properties:
+UseAAF: ${DMAAPBC_USEAAF:-false}
+#
+# regarding password encryption:
+# In the dependencies that Maven retrieves (e.g., under dcae_dmaapbc/target/deps/ is a jar file cadi-core-version.jar. Generate the key file with:
+#
+# java \u2013jar wherever/cadi-core-*.jar keygen keyfilename
+# chmod 400 keyfilename
+#
+# To encrypt a key:
+#
+# java \u2013jar wherever/cadi-core-*.jar digest password-to-encrypt keyfilename
+#
+# This will generate a string. Put \u201Cenc:\u201D on the front of the string, and put the result in this properties file.
+#
+# Location of the Codec Keyfile which is used to decrypt passwords in this properties file before they are passed to AAF
+#
+# REF: https://wiki.domain.notset.com/display/cadi/CADI+Deployment
+#
+CredentialCodecKeyfile: ${DMAAPBC_CODEC_KEYFILE:-etc/LocalKey}
+#
+# This overrides the Class used for Decryption.
+# This allows for a plugin encryption/decryption method if needed.
+# Call this Class for decryption at runtime.
+#AafDecryption.Class: com.company.proprietaryDecryptor
+
+#
+# This overrides the Class used for API Permission check.
+# This allows for a plugin policy check, if needed
+ApiPermission.Class: org.onap.dmaap.dbcapi.authentication.AllowAll
+
+# Namespace for URI values for API used to create AAF permissions
+# e.g. if ApiNamespace is X.Y..dmaapBC.api then for URI /topics we create an AAF perm X.Y..dmaapBC.api.topics
+ApiNamespace: ${DMAAPBC_API_NAMESPACE:-org.onap.dmaap-bc.api}
+#
+# URL of AAF environment to use.
+#
+aaf.URL: ${DMAAPBC_AAF_URL:-https://aaf-onap-test.osaaf.org:8100}
+#
+# TopicMgr mechid@namespace
+#
+aaf.TopicMgrUser: ${DMAAPBC_TOPICMGR_USER:-dmaap-bc-topic-mgr@dmaap-bc-topic-mgr.onap.org}
+#
+# TopicMgr password
+#
+aaf.TopicMgrPassword: ${DMAAPBC_TOPICMGR_PWD:-enc:l0ScEojNQiiKbbkuM6U1mtnrme69q960}
+#
+# Bus Controller Namespace Admin mechid@namespace
+#
+aaf.AdminUser: ${DMAAPBC_ADMIN_USER:-aaf_admin@people.osaag.org}
+#
+# Bus Controller Namespace Admin password
+#
+aaf.AdminPassword: ${DMAAPBC_ADMIN_PWD:-demo123456!}
+
+
+#
+# endof AAF Properties
+#################
+!EOF
diff --git a/dmaap-bc/src/main/resources/misc/havecert.tmpl b/dmaap-bc/src/main/resources/misc/havecert.tmpl
new file mode 100644
index 0000000..3d23c7b
--- /dev/null
+++ b/dmaap-bc/src/main/resources/misc/havecert.tmpl
@@ -0,0 +1,40 @@
+#!/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.
+#
+#
+cat <<!EOF
+echo Check for certificate
+TZ=GMT0
+cd /opt/app/dmaapbc;
+KEYSTORE=${DMAAPBC_KSTOREFILE:-etc/keystore}
+echo "KEYSTORE=$KEYSTORE"
+d=`dirname $KEYSTORE`
+ls -l $d
+if [ -f ${KEYSTORE} ]
+then
+ echo "Goodness: Found ${KEYSTORE}"
+ exit 0
+fi
+EMSG="`date '+%F %T,000'` WARN Certificate file $KEYSTORE is missing"
+echo $EMSG
+echo $EMSG >>${DMAAPBC_LOGS:-logs}/dmaapbc.log
+exit 1
+!EOF
diff --git a/dmaap-bc/src/main/resources/misc/logback.xml b/dmaap-bc/src/main/resources/misc/logback.xml
new file mode 100644
index 0000000..37a3af8
--- /dev/null
+++ b/dmaap-bc/src/main/resources/misc/logback.xml
@@ -0,0 +1,348 @@
+
+<!--
+ ============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.
+-->
+
+<configuration scan="true" scanPeriod="3 seconds">
+ <!--<jmxConfigurator /> -->
+ <!-- directory path for all other type logs -->
+ <property name="logDir" value="logs" />
+ <!-- specify the component name -->
+ <property name="componentName" value="ONAP"/>
+
+ <!-- log file names -->
+ <property name="generalLogName" value="application" />
+ <property name="securityLogName" value="security" />
+ <property name="performanceLogName" value="performance" />
+ <property name="serverLogName" value="server" />
+ <property name="policyLogName" value="policy" />
+ <property name="errorLogName" value="error" />
+ <property name="metricsLogName" value="metrics" />
+ <property name="auditLogName" value="audit" />
+ <property name="debugLogName" value="debug" />
+
+ <property name="defaultPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}|%msg%n" />
+
+ <property name="auditLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+ <property name="metricsLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+ <property name="errorLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDescription}|%msg%n" />
+ <property name="debugLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%thread|%msg%n" />
+
+ <property name="logDirectory" value="${logDir}/${componentName}" />
+
+ <!-- Example evaluator filter applied against console appender -->
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- ============================================================================ -->
+ <!-- EELF Appenders -->
+ <!-- ============================================================================ -->
+
+ <!-- The EELFAppender is used to record events to the general application
+ log -->
+
+
+ <appender name="EELF"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${generalLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${generalLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELF" />
+ </appender>
+
+ <!-- EELF Security Appender. This appender is used to record security events
+ to the security log file. Security events are separate from other loggers
+ in EELF so that security log records can be captured and managed in a secure
+ way separate from the other logs. This appender is set to never discard any
+ events. -->
+ <appender name="EELFSecurity"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${securityLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <discardingThreshold>0</discardingThreshold>
+ <appender-ref ref="EELFSecurity" />
+ </appender>
+
+ <!-- EELF Performance Appender. This appender is used to record performance
+ records. -->
+ <appender name="EELFPerformance"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${performanceLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFPerformance" />
+ </appender>
+
+ <!-- EELF Server Appender. This appender is used to record Server related
+ logging events. The Server logger and appender are specializations of the
+ EELF application root logger and appender. This can be used to segregate Server
+ events from other components, or it can be eliminated to record these events
+ as part of the application root log. -->
+ <appender name="EELFServer"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${serverLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFServer" />
+ </appender>
+
+
+ <!-- EELF Policy Appender. This appender is used to record Policy engine
+ related logging events. The Policy logger and appender are specializations
+ of the EELF application root logger and appender. This can be used to segregate
+ Policy engine events from other components, or it can be eliminated to record
+ these events as part of the application root log. -->
+ <appender name="EELFPolicy"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${policyLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFPolicy" />
+ </appender>
+
+
+ <!-- EELF Audit Appender. This appender is used to record audit engine
+ related logging events. The audit logger and appender are specializations
+ of the EELF application root logger and appender. This can be used to segregate
+ Policy engine events from other components, or it can be eliminated to record
+ these events as part of the application root log. -->
+
+ <appender name="EELFAudit"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${auditLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${auditLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${auditLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFAudit" />
+ </appender>
+
+<appender name="EELFMetrics"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${metricsLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${metricsLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${metricsLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+
+ <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFMetrics"/>
+ </appender>
+
+ <appender name="EELFError"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${errorLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${errorLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${errorLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFError"/>
+ </appender>
+
+ <appender name="EELFDebug"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${debugLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${debugLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${debugLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFDebug" />
+ <includeCallerData>true</includeCallerData>
+ </appender>
+
+
+ <!-- ============================================================================ -->
+ <!-- EELF loggers -->
+ <!-- ============================================================================ -->
+ <logger name="com.att.eelf" level="info" additivity="false">
+ <appender-ref ref="asyncEELF" />
+ </logger>
+ <logger name="com.att.eelf.security" level="info" additivity="false">
+ <appender-ref ref="asyncEELFSecurity" />
+ </logger>
+ <logger name="com.att.eelf.perf" level="info" additivity="false">
+ <appender-ref ref="asyncEELFPerformance" />
+ </logger>
+ <logger name="com.att.eelf.server" level="info" additivity="false">
+ <appender-ref ref="asyncEELFServer" />
+ </logger>
+ <logger name="com.att.eelf.policy" level="info" additivity="false">
+ <appender-ref ref="asyncEELFPolicy" />
+ </logger>
+
+ <logger name="com.att.eelf.audit" level="info" additivity="false">
+ <appender-ref ref="asyncEELFAudit" />
+ </logger>
+
+ <logger name="com.att.eelf.metrics" level="info" additivity="false">
+ <appender-ref ref="asyncEELFMetrics" />
+ </logger>
+
+
+ <logger name="com.att.eelf.error" level="error" additivity="false">
+ <appender-ref ref="asyncEELFError" />
+ </logger>
+
+ <logger name="com.att.eelf.debug" level="debug" additivity="false">
+ <appender-ref ref="asyncEELFDebug" />
+ </logger>
+
+
+ <root level="TRACE">
+ <appender-ref ref="asyncEELF" />
+ </root>
+
+</configuration>
+
diff --git a/dmaap-bc/src/main/resources/misc/schema_all.sql b/dmaap-bc/src/main/resources/misc/schema_all.sql
new file mode 100644
index 0000000..c294b09
--- /dev/null
+++ b/dmaap-bc/src/main/resources/misc/schema_all.sql
@@ -0,0 +1,144 @@
+---
+-- ============LICENSE_START=======================================================
+-- OpenECOMP - org.openecomp.dmaapbc
+-- ================================================================================
+-- 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=========================================================
+---
+
+CREATE TABLE IF NOT EXISTS dcae_location (
+ dcae_location_name VARCHAR(100),
+ clli VARCHAR(100),
+ dcae_layer VARCHAR(100),
+ open_stack_availability_zone VARCHAR(100),
+ last_mod TIMESTAMP,
+ subnet VARCHAR(100),
+ status VARCHAR(100),
+ PRIMARY KEY(dcae_location_name)
+);
+CREATE TABLE IF NOT EXISTS dmaap (
+ version VARCHAR(100),
+ topic_ns_root VARCHAR(100),
+ dmaap_name VARCHAR(100),
+ dr_prov_url VARCHAR(200),
+ node_key VARCHAR(100),
+ access_key_owner VARCHAR(100),
+ last_mod TIMESTAMP,
+ status VARCHAR(100),
+ bridge_admin_topic VARCHAR(100),
+ logging_url VARCHAR(200)
+);
+CREATE TABLE IF NOT EXISTS dr_node (
+ fqdn VARCHAR(100),
+ dcae_location_name VARCHAR(100),
+ host_name VARCHAR(100),
+ version VARCHAR(100),
+ last_mod TIMESTAMP,
+ status VARCHAR(100),
+ PRIMARY KEY(fqdn)
+);
+CREATE TABLE IF NOT EXISTS dr_pub (
+ dcae_location_name VARCHAR(100),
+ username VARCHAR(100),
+ userpwd VARCHAR(100),
+ feed_id VARCHAR(100),
+ pub_id VARCHAR(100),
+ status VARCHAR(100),
+ last_mod TIMESTAMP,
+ PRIMARY KEY(pub_id)
+);
+CREATE TABLE IF NOT EXISTS dr_sub (
+ owner VARCHAR(100),
+ suspended BOOLEAN,
+ status VARCHAR(100),
+ use100 BOOLEAN,
+ dcae_location_name VARCHAR(100),
+ username VARCHAR(100),
+ userpwd VARCHAR(100),
+ feed_id VARCHAR(100),
+ delivery_u_r_l VARCHAR(200),
+ log_u_r_l VARCHAR(200),
+ sub_id VARCHAR(100),
+ last_mod TIMESTAMP,
+ guaranteed_delivery BOOLEAN,
+ guaranteed_sequence BOOLEAN,
+ privileged_subscriber BOOLEAN,
+ decompress BOOLEAN,
+ PRIMARY KEY(sub_id)
+);
+CREATE TABLE IF NOT EXISTS mr_client (
+ dcae_location_name VARCHAR(100),
+ fqtn VARCHAR(100),
+ client_role VARCHAR(100),
+ action VARCHAR(300),
+ mr_client_id VARCHAR(100),
+ status VARCHAR(100),
+ topic_u_r_l VARCHAR(200),
+ last_mod TIMESTAMP,
+ client_identity varchar(100),
+ PRIMARY KEY(mr_client_id)
+);
+CREATE TABLE IF NOT EXISTS mr_cluster (
+ last_mod TIMESTAMP,
+ dcae_location_name VARCHAR(100),
+ fqdn VARCHAR(100),
+ topic_protocol VARCHAR(100),
+ topic_port VARCHAR(100),
+ status VARCHAR(100),
+ replication_group VARCHAR(100),
+ PRIMARY KEY(dcae_location_name)
+);
+CREATE TABLE IF NOT EXISTS feed (
+ suspended BOOLEAN,
+ subscribe_u_r_l VARCHAR(200),
+ feed_id VARCHAR(100),
+ feed_name VARCHAR(100),
+ feed_version VARCHAR(100),
+ feed_description VARCHAR(1000),
+ owner VARCHAR(100),
+ aspr_classification VARCHAR(100),
+ publish_u_r_l VARCHAR(200),
+ log_u_r_l VARCHAR(200),
+ status VARCHAR(100),
+ last_mod TIMESTAMP,
+ format_uuid VARCHAR(100),
+ PRIMARY KEY(feed_id)
+);
+CREATE TABLE IF NOT EXISTS topic (
+ last_mod TIMESTAMP,
+ fqtn VARCHAR(100),
+ topic_name VARCHAR(100),
+ topic_description VARCHAR(1000),
+ tnx_enabled VARCHAR(100),
+ owner VARCHAR(100),
+ status VARCHAR(100),
+ format_uuid VARCHAR(100),
+ replication_case INT,
+ global_mr_u_r_l VARCHAR(200),
+ partition_count VARCHAR(10) DEFAULT 2,
+ replication_count VARCHAR(10) DEFAULT 1,
+ publisher_role VARCHAR(100),
+ subscriber_role VARCHAR(100),
+ PRIMARY KEY(fqtn)
+);
+CREATE TABLE IF NOT EXISTS mirror_maker (
+ mm_name VARCHAR(100),
+ source_cluster VARCHAR(100),
+ target_cluster VARCHAR(100),
+ last_mod TIMESTAMP,
+ status VARCHAR(100),
+ topics TEXT,
+ PRIMARY KEY(mm_name)
+);