blob: bd4dfb62964e026bfc6eb465ff520d11a3287660 [file] [log] [blame]
#!/bin/bash
################################################################################
# Copyright (c) 2020 AT&T Intellectual Property. #
# #
# 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. #
################################################################################
#set -x
acknowledge() {
echo "$1"
read -n 1 -p "Press any key to continue" mainmenuinput
echo
}
echo "This script demonstrates the phase one of the Bronze release Traffic Steering use case."
DIRNAME="/tmp/tsflow-$(date +%Y%m%d%H%M)"
mkdir $DIRNAME
cd $DIRNAME
echo "===> Generating xApp on-boarding file"
echo '{
"config-file.json_url": "https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/qp.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD"
}' > onboard.qp.url
echo '{
"config-file.json_url": "https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/qp-driver.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD"
}' > onboard.qpd.url
echo '{
"config-file.json_url": "https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/ts.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD"
}' > onboard.ts.url
echo "===> On-boarding xApps"
curl --location --request POST "http://$(hostname):32080/onboard/api/v1/onboard/download" \
--header 'Content-Type: application/json' --data-binary "@./onboard.ts.url"
curl --location --request POST "http://$(hostname):32080/onboard/api/v1/onboard/download" \
--header 'Content-Type: application/json' --data-binary "@./onboard.qp.url"
curl --location --request POST "http://$(hostname):32080/onboard/api/v1/onboard/download" \
--header 'Content-Type: application/json' --data-binary "@./onboard.qpd.url"
echo "======> Listing on boarded xApps"
curl --location --request GET "http://$(hostname):32080/onboard/api/v1/charts"
echo "====> Deploy xApps"
curl --location --request POST "http://$(hostname):32080/appmgr/ric/v1/xapps" \
--header 'Content-Type: application/json' --data-raw '{"xappName": "qp"}'
# response: {"instances":null,"name":"qp","status":"deployed","version":"1.0"}
curl --location --request POST "http://$(hostname):32080/appmgr/ric/v1/xapps" \
--header 'Content-Type: application/json' --data-raw '{"xappName": "qpdriver"}'
# response: {"instances":null,"name":"qpdriver","status":"deployed","version":"1.0"}
curl --location --request POST "http://$(hostname):32080/appmgr/ric/v1/xapps" \
--header 'Content-Type: application/json' --data-raw '{"xappName": "trafficxapp"}'
# response: {"instances":null,"name":"trafficxapp","status":"deployed","version":"1.0"}
echo "======> Status of xApps"
kubectl get pods -n ricxapp
POD_QP=""
POD_QPD=""
POD_TS=""
while [ -z $POD_QP ] || [ -z $POD_QPD ] || [ -z $POD_TS ]; do
echo "Not all new xApp pods are in running state."
sleep 5
POD_QP=$(kubectl get pods -n ricxapp | grep Running | grep "\-qp\-" | cut -f1 -d ' ')
POD_QPD=$(kubectl get pods -n ricxapp | grep Running | grep "\-qpdriver\-" | cut -f1 -d ' ')
POD_TS=$(kubectl get pods -n ricxapp | grep Running | grep "\-trafficxapp\-" | cut -f1 -d ' ')
done
POD_A1=$(kubectl get pods -n ricplt | grep Running | grep "\-a1mediator\-" | cut -f1 -d ' ')
echo "To view the logs of the A1 midiator, run the following "
echo "command in a separate terminal window:"
echo " kubectl logs -f -n ricplt $POD_A1"
echo "To view the logs of the traffic steering xapp, run the following "
echo "command in a separate terminal window:"
echo " kubectl logs -f -n ricplt $POD_TS"
acknowledge ""
# populate DB
echo "===> Inject DBaas with testing data for Traffic Steering test"
if [ ! -e ts ]; then
git clone http://gerrit.o-ran-sc.org/r/ric-xapp/ts
fi
pushd "$(pwd)"
cd ts/test/populatedb
./populate_db.sh
popd
echo "====> Pushing policy type to A1"
POLICY_TYPE_ID="20008"
cat << EOF > ts-policy-type-${POLICY_TYPE_ID}.json
{
"name": "tsapolicy",
"description": "tsa parameters",
"policy_type_id": ${POLICY_TYPE_ID},
"create_schema": {
"\$schema": "http://json-schema.org/draft-07/schema#",
"title": "TS Policy",
"description": "TS policy type",
"type": "object",
"properties": {
"threshold": {
"type": "integer",
"default": 0
}
},
"additionalProperties": false
}
}
EOF
acknowledge "The next command will create a new policy type. Watch the logs of A1 Mediator"
curl -v -X PUT "http://$(hostname):32080/a1mediator/a1-p/policytypes/${POLICY_TYPE_ID}" \
-H "accept: application/json" -H "Content-Type: application/json" \
-d @./ts-policy-type-${POLICY_TYPE_ID}.json
# expect to see a 201
echo "======> Listing policy types"
curl -X GET --header "Content-Type: application/json" --header "accept: application/json" \
http://$(hostname):32080/a1mediator/a1-p/policytypes
acknowledge "The next command will create a new policy instance. Watch the logs of A1 Mediator and TS xApp"
POLICY_ID="tsapolicy145"
echo "===> Deploy policy ID of ${POLICY_ID}" of policy type ${POLICY_TYPE_ID}"
curl -X PUT --header "Content-Type: application/json" \
--data "{\"threshold\" : 5}" \
http://$(hostname):32080/a1mediator/a1-p/policytypes/${POLICY_TYPE_ID}/policies/${POLICY_ID}
# get policy instances
echo "======> Listing policy instances"
curl -X GET --header "Content-Type: application/json" --header "accept: application/json" \
http://$(hostname):32080/a1mediator/a1-p/policytypes/${POLICY_TYPE_ID}/policies
echo "Watch how TS processes the data retrieved from RNIB in TS logs"
acknowledge "After done we will start the removal process"
echo "===> Deleting policy instance"
acknowledge "The next command will delete a policy instance. Watch the logs of A1 Mediator andd TS xApp"
curl -X DELETE --header "Content-Type: application/json" --header "accept: application/json" \
http://$(hostname):32080/a1mediator/a1-p/policytypes/${POLICY_TYPE_ID}/policies/${POLICY_ID}
echo "======> Listing policy instances"
curl -X GET --header "Content-Type: application/json" --header "accept: application/json" \
http://$(hostname):32080/a1mediator/a1-p/policytypes/${POLICY_TYPE_ID}/policies
echo "===> Deleting policy type $POLICY_TYPE_ID"
acknowledge "The next command will delete a policy type. Watch the logs of TS xApp"
curl -X DELETE -H "accept: application/json" -H "Content-Type: application/json" \
"http://$(hostname):32080/a1mediator/a1-p/policytypes/${POLICY_TYPE_ID}"
echo "======> Listing policy types"
curl -X GET --header "Content-Type: application/json" --header "accept: application/json" \
http://$(hostname):32080/a1mediator/a1-p/policytypes
echo "===> Unddeploy the xApps"
acknowledge "The next command will delete the TS, QP, and DPQ xApps."
curl -H "Content-Type: application/json" -X DELETE \
http://$(hostname):32080/appmgr/ric/v1/xapps/trafficxapp
curl -H "Content-Type: application/json" -X DELETE \
http://$(hostname):32080/appmgr/ric/v1/xapps/qp
curl -H "Content-Type: application/json" -X DELETE \
http://$(hostname):32080/appmgr/ric/v1/xapps/qpdriver
echo "======> Listing xApps"
kubectl get pods -n ricxapp