In addition, a `docker system prune` might be needed now and then.
+### PM Influx Logger
+Additionally you can install PM influx logger.
+
+Example cmd: \
+`./pmlog-setup.sh`
+
+To remove run:
+`./pmlog-tear-down.sh`
+
+To update the filter edit and run:
+`./update-pmlog.sh`
+
+
### Tools for monitoring
Open browser to redpanda (kafka gui) - watch topics, messages etc\
--- /dev/null
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. 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=================================================
+#
+
+spring:
+ profiles:
+ active: prod
+ main:
+ allow-bean-definition-overriding: true
+ aop:
+ auto: false
+management:
+ endpoints:
+ web:
+ exposure:
+ # Enabling of springboot actuator features. See springboot documentation.
+ include: "loggers,logfile,health,info,metrics,threaddump,heapdump,shutdown"
+ endpoint:
+ shutdown:
+ enabled: true
+lifecycle:
+ timeout-per-shutdown-phase: "20s"
+springdoc:
+ show-actuator: true
+logging:
+ # Configuration of logging
+ level:
+ ROOT: WARN
+ org.apache.kafka: WARN
+ org.springframework: ERROR
+ org.springframework.data: TRACE #ERROR
+ org.springframework.web.reactive.function.client.ExchangeFunctions: TRACE #ERROR
+ org.oran.pmlog: TRACE #DEBUG
+ pattern:
+ console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger{20} - %msg%n"
+ file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger{20} - %msg%n"
+
+ file:
+ name: /var/log/pmlog-service/application.log
+server:
+ # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+ # See springboot documentation.
+ port : 8436
+ http-port: 8084
+ ssl:
+ key-store-type: JKS
+ key-store-password: policy_agent
+ key-store: /opt/app/pmlog-service/etc/cert/keystore.jks
+ key-password: policy_agent
+ key-alias: policy_agent
+ shutdown: "graceful"
+app:
+ webclient:
+ # Configuration of the trust store used for the HTTP client (outgoing requests)
+ # The file location and the password for the truststore is only relevant if trust-store-used == true
+ # Note that the same keystore as for the server is used.
+ trust-store-used: false
+ trust-store-password: policy_agent
+ trust-store: /opt/app/pmlog-service/etc/cert/truststore.jks
+ # Configuration of usage of HTTP Proxy for the southbound accesses.
+ # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+ http.proxy-host:
+ http.proxy-port: 0
+ kafka:
+ # KAFKA boostrap servers.
+ # several redundant boostrap servers can be specified, separated by a comma ','.
+ # bootstrap-servers and input-topic is overriden if defined in deliveryInfo in config/jobDefinition.json
+ bootstrap-servers: kafka-1:9097
+ input-topic:
+ # The maximum number of records returned in a single call to poll() (default 100)
+ max-poll-records: 500
+ group-id: kafkaGroupId
+ client-id: kafkaClientId
+ # Configues if oath2 tokens shall be used. If set to true, auth-token-file must also be configured
+ use-oath-token: true
+ ssl:
+ key-store-type: PEM
+ key-store-location:
+ # key password is needed if the private key is encrypted
+ key-store-password:
+ trust-store-type: PEM
+ trust-store-location:
+ influx:
+ url: http://influxdb2-0:8086
+ # Override by env var
+ access-token:
+ bucket: pm-logg-bucket
+ org: est
+ # The user, password and database can be blank if the access-token is defined
+ user:
+ password:
+ database:
+ ics-base-url: http://ics:8083
+ consumer-job-id: "pmlog"
+ # If the file name is empty, no authorization token is used
+ auth-token-file: /token-cache/jwt.txt
--- /dev/null
+{
+ "info_type_id": "PmData",
+ "job_owner": "console",
+ "job_definition": {
+ "filter": {
+ "sourceNames": [],
+ "measObjInstIds": [],
+ "measTypeSpecs": [
+ {
+ "measuredObjClass": "NRCellDU",
+ "measTypes": [
+ "pmCounterNumber108"
+ ]
+ }
+ ],
+ "measuredEntityDns": []
+ },
+ "deliveryInfo": {
+ "topic": "pmreports",
+ "bootStrapServers": "kafka-1:9097"
+ }
+ }
+}
--- /dev/null
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. 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=================================================
+#
+
+version: '3.0'
+networks:
+ default:
+ external: true
+ name: nonrtric-docker-net
+
+services:
+ $INFLUXDB2_INSTANCE:
+ image: $INFLUXDB_IMAGE
+ container_name: $INFLUXDB2_INSTANCE
+ environment:
+ DOCKER_INFLUXDB_INIT_MODE: setup
+ DOCKER_INFLUXDB_INIT_USERNAME: $INFLUXDB2_USERNAME
+ DOCKER_INFLUXDB_INIT_PASSWORD: $INFLUXDB2_PASSWORD
+ DOCKER_INFLUXDB_INIT_ORG: $INFLUXDB2_ORG
+ DOCKER_INFLUXDB_INIT_BUCKET: $INFLUXDB2_BUCKET
+ volumes:
+ - ./config/influxdb2/data:/var/lib/influxdb2:rw
+ ports:
+ - 8086:8086
+ labels:
+ - "ranpm=yes"
+ - "ranpmlog=yes"
services:
pm-https-server-${CONTAINER_NUM}:
container_name: pm-https-server-${CONTAINER_NUM}
+ hostname: pm-https-server-${CONTAINER_NUM}
image: $PM_HTTPSSERVER_IMAGE
environment:
- ALWAYS_RETURN: /files/pm.xml.gz
+ ALWAYS_RETURN: /ne-files/pm.xml.gz
+ GENERATED_FILE_START_TIME: "${START_TIME}"
+ GENERATED_FILE_TIMEZONE: "+0100"
volumes:
- - ./ne-files:/files:rw
+ - ./ne-files:/ne-files:rw
+ - ./config/https/template-files:/template-files
- ./config/https/certs/https-${CONTAINER_NUM}.key:/certs/server.key
- ./config/https/certs/https-${CONTAINER_NUM}.crt:/certs/server.crt
labels:
--- /dev/null
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. 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=================================================
+#
+
+version: '3.0'
+networks:
+ default:
+ external: true
+ name: nonrtric-docker-net
+
+services:
+ auth-token-file-pmlog-0:
+ image: $AUTH_TOKEN_IMAGE
+ environment:
+ CREDS_GRANT_TYPE: client_credentials
+ CREDS_CLIENT_SECRET: $PMLOG_CLIENT_SECRET
+ CREDS_CLIENT_ID: nrt-pm-log
+ AUTH_SERVICE_URL: http://keycloak:8080/realms/nonrtric-realm/protocol/openid-connect/token
+ OUTPUT_FILE: /token-cache/jwt.txt
+ volumes:
+ - ./config/pmlog/token-cache:/token-cache
+ labels:
+ - "ranpm=yes"
+ - "ranpmlog=yes"
+
+ pmlog-0:
+ image: $PMLOG_IMAGE
+ container_name: pmlog-0
+ depends_on:
+ - auth-token-file-pmlog-0
+ environment:
+ APP_INFLUX_ACCESSTOKEN: $INFLUXDB2_TOKEN
+ volumes:
+ - ./config/pmlog/jobDefinition.json:/opt/app/pmlog-service/config/jobDefinition.json
+ - ./config/pmlog/application.yaml:/opt/app/pmlog-service/config/application.yaml
+ - ./config/pmlog/token-cache:/token-cache
+ ports:
+ - 8184:8084
+ - 8436:8436
+ labels:
+ - "ranpm=yes"
+ - "ranpmlog=yes"
pm-producer-json2kafka:
image: $DMAAPADP_IMAGE
container_name: pm-producer-json2kafka
+ environment:
+ APP_PM-PRODUCER-BASE-URL: http://pm-producer-json2kafka:8084
depends_on:
- auth-token-file-pm-producer-json2kafka
volumes:
# ============LICENSE_END=================================================
#
-echo $SP
print_usage() {
echo "Usage: docker-setup.sh"
exit 1
done
cd $cwd
-chmod 622 config/dfc1/token-cache/jwt.txt
+chmod 666 config/dfc1/token-cache/jwt.txt
envsubst < docker-compose-dfc1.yaml > docker-compose-dfc_gen.yaml
envsubst < config/dfc1/application-template.yaml > config/dfc1/application.yaml
docker-compose -p dfc -f docker-compose-dfc_gen.yaml up -d
setup_producers() {
echo "Starting producers"
-chmod 622 config/pmpr/token-cache/jwt.txt
+chmod 666 config/pmpr/token-cache/jwt.txt
+export KPADP_MINIO=http://minio-server:9000
cp config/pmpr/application_configuration-minio-template.json config/pmpr/application_configuration.json
envsubst < config/pmpr/application-minio-template.yaml > config/pmpr/application.yaml
-export KPADP_MINIO=http://minio-server:9000
envsubst < docker-compose-producers.yaml > docker-compose-producers_gen.yaml
docker-compose -p prod -f docker-compose-producers_gen.yaml up -d
}
echo "Starting http servers"
export PM_HTTPSSERVER_IMAGE="pm-https-server:latest"
-grep -B 21 "services:" docker-compose-pm-https.yaml > docker-compose-pm-https_gen.yaml
+total_lines=$(cat docker-compose-pm-https.yaml | wc -l)
+services_line=$(grep -n "services:" docker-compose-pm-https.yaml| cut -f1 -d:)
+let remaining_lines=$total_lines-$services_line
+export START_TIME=$(date +%Y%m%d.%H%M -d '3 hours ago')
+
+grep -B $services_line "services:" docker-compose-pm-https.yaml > docker-compose-pm-https_gen.yaml
for (( i=1; i<=$NUM_HTTP; i++ )); do
export CONTAINER_NUM=$i
- grep -A 12 "services:" docker-compose-pm-https.yaml | grep -v "services:" | \
- envsubst '$CONTAINER_NUM,$PM_HTTPSSERVER_IMAGE' >> docker-compose-pm-https_gen.yaml
+ grep -A $remaining_lines "services:" docker-compose-pm-https.yaml | grep -v "services:" | \
+ envsubst '$CONTAINER_NUM,$PM_HTTPSSERVER_IMAGE,$START_TIME' >> docker-compose-pm-https_gen.yaml
done
docker-compose -p pm-https -f docker-compose-pm-https_gen.yaml up -d
}
+## Main ##
export KAFKA_NUM_PARTITIONS=10
export TOPICS="file-ready collected-file json-file-ready-kp json-file-ready-kpadp pmreports"
--- /dev/null
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. 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=================================================
+#
+
+. scripts/get_influxdb2_token.sh
+. scripts/populate_keycloak.sh
+
+print_usage() {
+ echo "Usage: pmlog-setup.sh"
+ exit 1
+}
+
+check_error() {
+ if [ $1 -ne 0 ]; then
+ echo "Failed $2"
+ echo "Exiting..."
+ exit 1
+ fi
+}
+
+setup_init() {
+echo "Cleaning previously started containers..."
+
+./pmlog-tear-down.sh
+}
+
+pull_image() {
+if [ -z "$(docker images -q $1)" ]; then
+ echo "Pulling image... "$1
+ docker pull $1
+ check_error $?
+fi
+}
+
+check_images(){
+export INFLUXDB_IMAGE="influxdb:2.6.1"
+pull_image $INFLUXDB_IMAGE
+
+export PMLOG_IMAGE="nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-pmlog:1.0.0"
+pull_image $PMLOG_IMAGE
+
+export AUTH_TOKEN_IMAGE=nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-auth-token-fetch:1.1.1
+pull_image $AUTH_TOKEN_IMAGE
+}
+
+setup_influx() {
+data_dir=./config/influxdb2/data
+mkdir -p $data_dir
+
+export INFLUXDB2_INSTANCE=influxdb2-0
+export INFLUXDB2_USERNAME=admin
+export INFLUXDB2_PASSWORD=mySuP3rS3cr3tT0keN
+export INFLUXDB2_ORG=est
+export INFLUXDB2_BUCKET=pm-logg-bucket
+
+envsubst < docker-compose-influxdb.yaml > docker-compose-influxdb_gen.yaml
+docker-compose -p influx -f docker-compose-influxdb_gen.yaml up -d
+}
+
+setup_pmlog() {
+chmod 666 config/pmlog/token-cache/jwt.txt
+
+cid="nrt-pm-log"
+create_clients nonrtric-realm $cid
+check_error $?
+generate_client_secrets nonrtric-realm $cid
+check_error $?
+
+export PMLOG_CLIENT_SECRET=$(< .sec_nonrtric-realm_$cid)
+envsubst < docker-compose-pmlog.yaml > docker-compose-pmlog_gen.yaml
+docker-compose -p pmlog -f docker-compose-pmlog_gen.yaml up -d
+}
+## Main ##
+setup_init
+
+check_images
+
+setup_influx
+check_error $?
+
+# Wait for influxdb2 to start
+echo 'Waiting for influxdb2 to be ready'
+until [ $(curl -s -w '%{http_code}' -o /dev/null 'http://localhost:8086/health') -eq 200 ];
+do
+ echo -n '.'
+ sleep 1
+done
+echo ""
+
+INFLUXDB2_TOKEN=$(get_influxdb2_token $INFLUXDB2_INSTANCE)
+echo $INFLUXDB2_TOKEN
+export INFLUXDB2_TOKEN
+
+setup_pmlog
+check_error $?
--- /dev/null
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. 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=================================================
+#
+
+echo "Stop and remove all pmlog containers in the project"
+
+docker stop $(docker ps -qa --filter "label=ranpmlog") 2> /dev/null
+docker stop $(docker ps -qa --filter "label=ranpmlog") 2> /dev/null
+docker rm -f $(docker ps -qa --filter "label=ranpmlog") 2> /dev/null
+
+docker-compose -f docker-compose-pmlog_gen.yaml -p pmlog down
+docker-compose -f docker-compose-influxdb_gen.yaml -p influx down
+
+
+data_dir=./config/influxdb2/data
+if [[ -e $data_dir ]]; then
+ rm -rf $data_dir
+fi
--- /dev/null
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. 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=================================================
+#
+
+# args: <influxdb2-instance> <namespace>
+get_influxdb2_token() {
+ if [ $# -ne 1 ]; then
+ echo"get_influxdb2_token needs 1 arg, <influxdb2-instance> " $@
+ exit 1
+ fi
+
+ __influxdb2_access_token=""
+ while [ -z "$__influxdb2_access_token" ]; do
+ export __influxdb2_access_token=$(docker exec $1 influx config ls --json | jq -r .default.token)
+ if [ $? -ne 0 ]; then
+ __influxdb2_access_token=""
+ sleep 1
+ fi
+ done
+ echo -n $__influxdb2_access_token
+ return 0
+}
FILE_EXT=$4
SRV_COUNT=$5
+HTTPS_PORT=443
+
print_usage() {
echo "Usage: kafka-client-send-file-ready.sh <node-count> <num-of-events> <node-name-base> <file-extension> <num-servers>"
exit 1
print_usage
fi
-BEGINTIME=1665146700
+BEGINTIME=$(date +%s -d '1 hour ago')
+TIMEZONE="+0100"
CURTIME=$BEGINTIME
BATCHSIZE=1000
echo "EVENT NO: $i for $NODE_COUNT NODES - 1 FILE PER EVENT"
+ let STTIMEMS=$CURTIME*1000000
ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
let CURTIME=CURTIME+900
+ let CURTIMEMS=$CURTIME*1000000
ET=$(date -d @$CURTIME +'%H%M')
for (( j=0; j<$NODE_COUNT; j++)); do
echo "FILENAME "$FN
SRV="pm-https-server-$SRV_ID"
echo "HTTP SERVER "$SRV
- URL="https://$SRV:$HTTPS_PORT/files/$FN"
- EVT='{"event":{"commonEventHeader":{"sequence":0,"eventName":"Noti_RnNode-Ericsson_FileReady","sourceName":"'$NO'","lastEpochMicrosec":151983,"startEpochMicrosec":15198378,"timeZoneOffset":"UTC+05:00","changeIdentifier":"PM_MEAS_FILES"},"notificationFields":{"notificationFieldsVersion":"notificationFieldsVersion","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"fileFormatType":"org.3GPP.32.435#measCollec","location":"'$URL'","fileFormatVersion":"V10","compression":"gzip"}}]}}}'
+ URL="https://$SRV:$HTTPS_PORT/generatedfiles/$FN"
+ EVT='{"event":{"commonEventHeader":{"sequence":0,"eventName":"Noti_RnNode-Ericsson_FileReady","sourceName":"'$NO'","lastEpochMicrosec":'$CURTIMEMS',"startEpochMicrosec":'$STTIMEMS',"timeZoneOffset":"UTC'$TIMEZONE'","changeIdentifier":"PM_MEAS_FILES"},"notificationFields":{"notificationFieldsVersion":"notificationFieldsVersion","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"fileFormatType":"org.3GPP.32.435#measCollec","location":"'$URL'","fileFormatVersion":"V10","compression":"gzip"}}]}}}'
echo $EVT >> .out.json
let CNTR=CNTR+1
rm .out.json
touch .out.json
-BEGINTIME=1665146700
+BEGINTIME=$(date +%s -d '1 hour ago')
+TIMEZONE="+0100"
CURTIME=$BEGINTIME
+COLLECTIONTIME=$(date +%a,%d%m%Y%H:%M:%S%Z)
for (( i=0; i<$EVT_COUNT; i++)); do
echo '{"eventList": [' > .out.json
first=0
- arch="$(uname -s)"
- if [[ $arch == "Darwin"* ]]; then
- ST=$(date -r $CURTIME +'%Y%m%d.%H%M')
- let CURTIME=CURTIME+900
- ET=$(date -r $CURTIME +'%H%M')
- else
- ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
- let CURTIME=CURTIME+900
- ET=$(date -d @$CURTIME +'%H%M')
- fi
+ let STTIMEMS=$CURTIME*1000000
+ ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+ let CURTIME=CURTIME+900
+ let CURTIMEMS=$CURTIME*1000000
+ ET=$(date -d @$CURTIME +'%H%M')
for (( j=0; j<$NODE_COUNT; j++)); do
FN="A$ST+0200-$ET+0200_$NO-$i.$FILE_EXT"
let SRV_ID=$j%$SRV_COUNT
let SRV_ID=SRV_ID+1
- #echo "NODE "$NO
echo "FILENAME "$FN
SRV="pm-https-server-$SRV_ID"
echo "HTTP SERVER "$SRV
- URL="https://$SRV:$HTTPS_PORT/files/$FN"
- EVT='{"commonEventHeader":{"startEpochMicrosec":15198378,"eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","timeZoneOffset":"UTC+05.30","internalHeaderFields":{"collectorTimeStamp":"Wed,0907202211:56:02GMT"},"priority":"Normal","version":"4.0.1","reportingEntityName":"'$NO'","sequence":0,"domain":"notification","lastEpochMicrosec":151983,"eventName":"Notification_gnb-Ericsson_FileReady","vesEventListenerVersion":"7.0.1","sourceName":"'$NO'"},"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"location":"'$URL'","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","compression":"gzip"}}]}}'
+ URL="https://$SRV:$HTTPS_PORT/generatedfiles/$FN"
+ EVT='{"commonEventHeader":{"startEpochMicrosec":'$STTIMEMS',"eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","timeZoneOffset":"UTC'$TIMEZONE'","internalHeaderFields":{"collectorTimeStamp":"'$COLLECTIONTIME'"},"priority":"Normal","version":"4.0.1","reportingEntityName":"'$NO'","sequence":0,"domain":"notification","lastEpochMicrosec":'$CURTIMEMS',"eventName":"Notification_gnb-Ericsson_FileReady","vesEventListenerVersion":"7.0.1","sourceName":"'$NO'"},"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"location":"'$URL'","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","compression":"gzip"}}]}}'
if [ $first -ne 0 ]; then
echo "," >> .out.json
fi
--- /dev/null
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. 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=================================================
+#
+
+# args: <job-id> <job-index-suffix> [<access-token>]
+# job file shall exist in file "".job.json"
+update_ics_job() {
+
+ ICS_PORT=8083
+ JOB=$(<.job.json)
+ echo $JOB
+ retcode=1
+ echo "Updating job $1"
+ while [ $retcode -ne 0 ]; do
+ if [ -z "$2" ]; then
+ __bearer=""
+ else
+ __bearer="Authorization: Bearer $TOKEN"
+ fi
+ STAT=$(curl -s -X PUT -w '%{http_code}' -H accept:application/json -H Content-Type:application/json http://localhost:$ICS_PORT/data-consumer/v1/info-jobs/$1 --data-binary @.job.json -H "$__bearer" )
+ retcode=$?
+ echo "curl return code: $retcode"
+ if [ $retcode -eq 0 ]; then
+ status=${STAT:${#STAT}-3}
+ echo "http status code: "$status
+ if [ "$status" == "200" ]; then
+ echo "Job created ok"
+ elif [ "$status" == "201" ]; then
+ echo "Job created ok"
+ else
+ retcode=1
+ fi
+ fi
+ sleep 1
+ done
+}
--- /dev/null
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. 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=================================================
+#
+
+#. scripts/kube_get_controlplane_host.sh
+
+# Generic error printout function
+# args: <numeric-response-code> <descriptive-string>
+check_error() {
+ if [ $1 -ne 0 ]; then
+ echo "Failed: $2"
+ echo "Exiting..."
+ exit 1
+ fi
+}
+
+. scripts/update_ics_job.sh
+
+echo "Installation of pm to influx job"
+
+. scripts/populate_keycloak.sh
+
+cid="console-setup"
+TOKEN=$(get_client_token nonrtric-realm $cid)
+
+JOB='{
+ "info_type_id": "PmData",
+ "job_owner": "console",
+ "job_definition": {
+ "filter": {
+ "sourceNames": ["node2-1"],
+ "measObjInstIds": [],
+ "measTypeSpecs": [
+ {
+ "measuredObjClass": "NRCellDU",
+ "measTypes": [
+ "pmCounterNumber102"
+ ]
+ }
+ ],
+ "measuredEntityDns": []
+ },
+ "deliveryInfo": {
+ "topic": "pmreports",
+ "bootStrapServers": "kafka-1:9097"
+ }
+ }
+ }'
+echo $JOB > .job.json
+update_ics_job pmlog $TOKEN
+
+echo "done"
+