diff options
author | efiacor <fiachra.corcoran@est.tech> | 2021-04-08 16:40:06 +0100 |
---|---|---|
committer | efiacor <fiachra.corcoran@est.tech> | 2021-04-21 13:49:22 +0100 |
commit | 71d3d0925874247de5e657821638b1c08360f571 (patch) | |
tree | 91bcca2c8bd53c3ee54269c3101538cba70fa588 /dmaap-bc/src/main/resources | |
parent | 20221353bdb213a1f143a132d819d4e0810e3794 (diff) |
[DMAAP-BC] Consolidate bus controller repos
Migrate BC CSITs to the repo
Fix documentation
Signed-off-by: efiacor <fiachra.corcoran@est.tech>
Change-Id: I874ed61be1b61187e233e9fd0937f6658f0ec0f0
Issue-ID: DMAAP-1544
Diffstat (limited to 'dmaap-bc/src/main/resources')
-rw-r--r-- | dmaap-bc/src/main/resources/docker-compose.yml | 25 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/docker-databus-controller.conf | 12 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/docker/Dockerfile (renamed from dmaap-bc/src/main/resources/Dockerfile) | 39 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/misc/LocalKey | 27 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/misc/PolicyEngineApi.properties.tmpl | 36 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/misc/dmaapbc | 198 | ||||
-rwxr-xr-x | dmaap-bc/src/main/resources/misc/dmaapbc.properties.tmpl | 222 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/misc/havecert.tmpl | 40 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/misc/logback.xml | 348 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/misc/schema_all.sql | 144 |
10 files changed, 1027 insertions, 64 deletions
diff --git a/dmaap-bc/src/main/resources/docker-compose.yml b/dmaap-bc/src/main/resources/docker-compose.yml deleted file mode 100644 index 41bc473..0000000 --- a/dmaap-bc/src/main/resources/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -version: '2' -services: - dbc-pg-primary: - image: crunchydata/crunchy-postgres:centos7-10.4-2.0.0 - ports: - - "5432:5432" - environment: - - PG_MODE=master - - PG_PRIMARY_USER="dmaap_admin" - - PG_PRIMARY_PASSWORD=onapdemodb - - PG_USER="dmaap_admin" - - PG_PASSWORD=onapdemodb - - PG_ROOT_PASSWORD=onapdemodb - - PG_DATABASE="dmaap" - - PG_PRIMARY_PORT=5432 - - dmaap-bc: - image: nexus3.onap.org:10001/onap/dmaap/buscontroller:latest - ports: - - "30241:8080" - - "30242:8443" - volumes: - - /var/tmp/docker-databus-controller.conf:/opt/app/config/conf - depends_on: - - dbc-pg-primary diff --git a/dmaap-bc/src/main/resources/docker-databus-controller.conf b/dmaap-bc/src/main/resources/docker-databus-controller.conf deleted file mode 100644 index 7214adf..0000000 --- a/dmaap-bc/src/main/resources/docker-databus-controller.conf +++ /dev/null @@ -1,12 +0,0 @@ -DMAAPBC_WAIT_TO_EXIT=Y -DMAAPBC_PG_ENABLED=true -DMAAPBC_PGHOST=dbc-pg-primary -DMAAPBC_PGDBNAME=dmaap -DMAAPBC_PGCRED=onapdemodb -DMAAPBC_PGUSER=dmaap_admin -DMAAPBC_MR_CNAME=message-router -DMAAPBC_AAF_URL=https://aaf-authz/ -DMAAPBC_TOPICMGR_USER=m23456@dmaapbc.onap.org -DMAAPBC_TOPICMGR_PWD=onapdemo -DMAAPBC_ADMIN_USER=m12345@dmaapbc.onap.org -DMAAPBC_ADMIN_PWD=onapdemo
\ No newline at end of file diff --git a/dmaap-bc/src/main/resources/Dockerfile b/dmaap-bc/src/main/resources/docker/Dockerfile index 0f9e6a6..a801896 100644 --- a/dmaap-bc/src/main/resources/Dockerfile +++ b/dmaap-bc/src/main/resources/docker/Dockerfile @@ -4,6 +4,7 @@ # =========================================================================== # Copyright © 2017 AT&T Intellectual Property. All rights reserved. # Modifications Copyright (C) 2018 Nokia. 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. @@ -17,40 +18,24 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============LICENSE_END==================================================== -# -FROM library/maven:3.6-jdk-11 -MAINTAINER DMAAP Team +FROM nexus3.onap.org:10001/onap/integration-java11:8.0.0 -COPY /opt /opt +MAINTAINER DMAAP Team WORKDIR /opt/app/dmaapbc -RUN apt-get update && \ - apt-get install -y \ - curl \ - jq \ - openssl \ - net-tools \ - wget \ - procps \ - bash - -#prepare certificate location for cadi -RUN mkdir -p /opt/app/osaaf +COPY /opt /opt +USER root +RUN apk add --no-cache curl jq net-tools wget procps \ -RUN chmod +x bin/* && \ +&& mkdir -p /opt/app/osaaf && \ + chmod +x bin/* && \ mkdir logs && \ - mkdir www && \ mkdir doc && \ - mkdir config - -VOLUME /opt/app/dmaapbc/log - -RUN addgroup --system -gid 1001 onap \ - && adduser --ingroup onap --system --disabled-password --no-create-home --uid 1000 dbc \ - && chown -R dbc:onap /opt/ + mkdir config && \ + chown -R onap:onap /opt/ -USER dbc +USER onap -ENTRYPOINT ["sh", "./bin/dmaapbc", "deploy"] +ENTRYPOINT ["sh", "bin/dmaapbc", "deploy"] 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) +); |