blob: 3ed3933a3111b5f1c6ac369f4237db00a52f2a2b [file] [log] [blame]
BjornMagnussonXA80a92002020-03-19 14:31:06 +01001#!/bin/bash
2
3# ============LICENSE_START===============================================
4# Copyright (C) 2020 Nordix Foundation. All rights reserved.
5# ========================================================================
6# Licensed under the Apache License, Version 2.0 (the "License");
7# you may not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17# ============LICENSE_END=================================================
18#
19
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +010020# This is a script that contains container/service management functions and test functions for A1 Controller API
21
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +010022################ Test engine functions ################
23
24# Create the image var used during the test
25# arg: <image-tag-suffix> (selects staging, snapshot, release etc)
26# <image-tag-suffix> is present only for images with staging, snapshot,release tags
27__SDNC_imagesetup() {
28
29 sdnc_suffix_tag=$1
30
31 for oia_name in $ONAP_IMAGES_APP_NAMES; do
32 if [ "$oia_name" == "SDNC" ]; then
33 sdnc_suffix_tag="REMOTE_RELEASE_ONAP"
34 fi
35 done
36 __check_and_create_image_var SDNC "SDNC_A1_CONTROLLER_IMAGE" "SDNC_A1_CONTROLLER_IMAGE_BASE" "SDNC_A1_CONTROLLER_IMAGE_TAG" $sdnc_suffix_tag "$SDNC_DISPLAY_NAME"
37 __check_and_create_image_var SDNC "SDNC_DB_IMAGE" "SDNC_DB_IMAGE_BASE" "SDNC_DB_IMAGE_TAG" REMOTE_PROXY "SDNC DB"
38
39}
40
41# Pull image from remote repo or use locally built image
42# arg: <pull-policy-override> <pull-policy-original>
43# <pull-policy-override> Shall be used for images allowing overriding. For example use a local image when test is started to use released images
44# <pull-policy-original> Shall be used for images that does not allow overriding
45# Both var may contain: 'remote', 'remote-remove' or 'local'
46__SDNC_imagepull() {
BjornMagnussonXA483ee332021-04-08 01:35:24 +020047 __check_and_pull_image $1 "$SDNC_DISPLAY_NAME" $SDNC_APP_NAME SDNC_A1_CONTROLLER_IMAGE
48 __check_and_pull_image $2 "SDNC DB" $SDNC_APP_NAME SDNC_DB_IMAGE
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +010049}
50
51# Build image (only for simulator or interfaces stubs owned by the test environment)
52# arg: <image-tag-suffix> (selects staging, snapshot, release etc)
53# <image-tag-suffix> is present only for images with staging, snapshot,release tags
54__SDNC_imagebuild() {
55 echo -e $RED" Image for app SDNC shall never be built"$ERED
56}
57
58# Generate a string for each included image using the app display name and a docker images format string
BjornMagnussonXA483ee332021-04-08 01:35:24 +020059# If a custom image repo is used then also the source image from the local repo is listed
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +010060# arg: <docker-images-format-string> <file-to-append>
61__SDNC_image_data() {
62 echo -e "$SDNC_DISPLAY_NAME\t$(docker images --format $1 $SDNC_A1_CONTROLLER_IMAGE)" >> $2
BjornMagnussonXA483ee332021-04-08 01:35:24 +020063 if [ ! -z "$SDNC_A1_CONTROLLER_IMAGE_SOURCE" ]; then
64 echo -e "-- source image --\t$(docker images --format $1 $SDNC_A1_CONTROLLER_IMAGE_SOURCE)" >> $2
65 fi
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +010066 echo -e "SDNC DB\t$(docker images --format $1 $SDNC_DB_IMAGE)" >> $2
BjornMagnussonXA483ee332021-04-08 01:35:24 +020067 if [ ! -z "$SDNC_DB_IMAGE_SOURCE" ]; then
68 echo -e "-- source image --\t$(docker images --format $1 $SDNC_DB_IMAGE_SOURCE)" >> $2
69 fi
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +010070}
71
72# Scale kubernetes resources to zero
73# All resources shall be ordered to be scaled to 0, if relevant. If not relevant to scale, then do no action.
74# This function is called for apps fully managed by the test script
75__SDNC_kube_scale_zero() {
76 __kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest SDNC
77}
78
79# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
80# This function is called for prestarted apps not managed by the test script.
81__SDNC_kube_scale_zero_and_wait() {
82 echo -e " SDNC replicas kept as is"
83}
84
85# Delete all kube resouces for the app
86# This function is called for apps managed by the test script.
87__SDNC_kube_delete_all() {
88 __kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest SDNC
89}
90
91# Store docker logs
92# This function is called for apps managed by the test script.
93# args: <log-dir> <file-prexix>
94__SDNC_store_docker_logs() {
95 docker exec -t $SDNC_APP_NAME cat $SDNC_KARAF_LOG> $1$2_SDNC_karaf.log 2>&1
96}
97
98#######################################################
99
100
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100101SDNC_HTTPX="http"
102SDNC_HOST_NAME=$LOCALHOST_NAME
103SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
104SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
105#Docker/Kube internal path
106if [ $RUNMODE == "KUBE" ]; then
107 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
108 #presume correct
109 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
110 #test
111 #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
112else
113 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_PORT
114fi
115
116use_sdnc_http() {
117 echo -e $BOLD"SDNC NB protocol setting"$EBOLD
118 echo -e " Using $BOLD http $EBOLD towards SDNC"
119 SDNC_HTTPX="http"
120 SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
121 SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
122 if [ $RUNMODE == "KUBE" ]; then
123 #presume correct
124 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
125 #test
126 #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
127 else
128 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_PORT
129 fi
130 echo ""
131}
132
133use_sdnc_https() {
134 echo -e $BOLD"SDNC NB protocol setting"$EBOLD
135 echo -e " Using $BOLD https $EBOLD towards SDNC"
136 SDNC_HTTPX="https"
137 SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT
138 SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT$SDNC_API_URL
139 if [ $RUNMODE == "KUBE" ]; then
140 #presume correct
141 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_SECURE_PORT
142 #test
143 #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_SECURE_PORT
144 else
145 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_SECURE_PORT
146 fi
147 echo ""
148}
149
150##################
151### SDNC functions
152##################
153
154# Start the SDNC A1 Controller
155# args: -
156# (Function for test scripts)
157start_sdnc() {
158
159 echo -e $BOLD"Starting $SDNC_DISPLAY_NAME"$EBOLD
160
161 if [ $RUNMODE == "KUBE" ]; then
162
163 # Check if app shall be fully managed by the test script
164 __check_included_image "SDNC"
165 retcode_i=$?
166
167 # Check if app shall only be used by the testscipt
168 __check_prestarted_image "SDNC"
169 retcode_p=$?
170
171 if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
172 echo -e $RED"The $SDNC_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
173 echo -e $RED"The $SDNC_APP_NAME will not be started"$ERED
174 exit
175 fi
176 if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
177 echo -e $RED"The $SDNC_APP_NAME app is included both as managed and prestarted in this test script"$ERED
178 echo -e $RED"The $SDNC_APP_NAME will not be started"$ERED
179 exit
180 fi
181
182
183 if [ $retcode_p -eq 0 ]; then
184 echo -e " Using existing $SDNC_APP_NAME deployment and service"
185 echo " Setting SDNC replicas=1"
186 __kube_scale deployment $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
187 fi
188
189 # Check if app shall be fully managed by the test script
190 if [ $retcode_i -eq 0 ]; then
191
192 echo -e " Creating $SDNC_APP_NAME app and expose service"
193
194 #Check if nonrtric namespace exists, if not create it
195 __kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
196
197 export KUBE_NONRTRIC_NAMESPACE
198 export SDNC_APP_NAME
199 export SDNC_A1_CONTROLLER_IMAGE
200 export SDNC_INTERNAL_PORT
201 export SDNC_EXTERNAL_PORT
202 export SDNC_INTERNAL_SECURE_PORT
203 export SDNC_EXTERNAL_SECURE_PORT
204 export SDNC_A1_TRUSTSTORE_PASSWORD
205 export SDNC_DB_APP_NAME
206 export SDNC_DB_IMAGE
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +0100207 export SDNC_USER
208 export SDNC_PWD
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100209
210 # Create service
211 input_yaml=$SIM_GROUP"/"$SDNC_COMPOSE_DIR"/"svc.yaml
212 output_yaml=$PWD/tmp/sdnc_svc.yaml
213 __kube_create_instance service $SDNC_APP_NAME $input_yaml $output_yaml
214
215 # Create app
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +0100216 input_yaml=$SIM_GROUP"/"$SDNC_COMPOSE_DIR"/"$SDNC_KUBE_APP_FILE
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100217 output_yaml=$PWD/tmp/sdnc_app.yaml
218 __kube_create_instance app $SDNC_APP_NAME $input_yaml $output_yaml
219
220 fi
221
222 echo " Retrieving host and ports for service..."
223 SDNC_HOST_NAME=$(__kube_get_service_host $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
224 SDNC_EXTERNAL_PORT=$(__kube_get_service_port $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
225 SDNC_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
226
227 echo " Host IP, http port, https port: $SDNC_HOST_NAME $SDNC_EXTERNAL_PORT $SDNC_EXTERNAL_SECURE_PORT"
228
229 if [ $SDNC_HTTPX == "http" ]; then
230 SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
231 SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
232 #presume correct
233 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
234 #test
235 #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
236 else
237 SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT
238 SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT$SDNC_API_URL
239 #presume correct
240 SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_SECURE_PORT
241 #test
242 #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_SECURE_PORT
243 fi
244
245 __check_service_start $SDNC_APP_NAME $SDNC_PATH$SDNC_ALIVE_URL
246 else
247
248 __check_included_image 'SDNC'
249 if [ $? -eq 1 ]; then
250 echo -e $RED"The SDNC A1 Controller app is not included in this test script"$ERED
251 echo -e $RED"The Policy Agent will not be started"$ERED
252 exit
253 fi
254
255 export SDNC_DB_APP_NAME
256 export SDNC_APP_NAME
257 export SDNC_INTERNAL_PORT
258 export SDNC_EXTERNAL_PORT
259 export SDNC_INTERNAL_SECURE_PORT
260 export SDNC_EXTERNAL_SECURE_PORT
261 export SDNC_A1_TRUSTSTORE_PASSWORD
262 export DOCKER_SIM_NWNAME
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +0100263 export SDNC_DISPLAY_NAME
264 export SDNC_USER
265 export SDNC_PWD
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100266
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +0100267 __start_container $SDNC_COMPOSE_DIR $SDNC_COMPOSE_FILE NODOCKERARGS 1 $SDNC_APP_NAME
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100268
269 __check_service_start $SDNC_APP_NAME $SDNC_PATH$SDNC_ALIVE_URL
270 fi
271 echo ""
272 return 0
273}
274
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +0100275# Check the agent logs for WARNINGs and ERRORs
276# args: -
277# (Function for test scripts)
278check_sdnc_logs() {
279 __check_container_logs "SDNC A1 Controller" $SDNC_APP_NAME $SDNC_KARAF_LOG WARN ERROR
280}
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100281
282# Generic function to query the RICs via the A1-controller API.
283# args: <operation> <url> [<body>]
284# <operation>: getA1Policy,putA1Policy,getA1PolicyType,deleteA1Policy,getA1PolicyStatus
285# response: <json-body><3-digit-response-code>
286# (Not for test scripts)
287__do_curl_to_controller() {
288 echo " (${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ >> $HTTPLOG
289 if [ $# -ne 2 ] && [ $# -ne 3 ]; then
290 ((RES_CONF_FAIL++))
291 echo "-Incorrect number of parameters to __do_curl_to_controller " $@ >> $HTTPLOG
292 echo "-Expected: <operation> <url> [<body>]" >> $HTTPLOG
293 echo "-Returning response 000" >> $HTTPLOG
294 echo "000"
295 return 1
296 fi
297 if [ $# -eq 2 ]; then
298 json='{"input":{"near-rt-ric-url":"'$2'"}}'
299 else
300 # Escape quotes in the body
301 body=$(echo "$3" | sed 's/"/\\"/g')
302 json='{"input":{"near-rt-ric-url":"'$2'","body":"'"$body"'"}}'
303 fi
BjornMagnussonXAf38e1e82020-10-11 23:05:02 +0200304 payload="./tmp/.sdnc.payload.json"
305 echo "$json" > $payload
306 echo " FILE ($payload) : $json" >> $HTTPLOG
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +0100307 proxyflag=""
308 if [ $RUNMODE == "KUBE" ]; then
BjornMagnussonXA483ee332021-04-08 01:35:24 +0200309 if [ ! -z "$KUBE_PROXY_PATH" ]; then
BjornMagnussonXA674793d2021-05-06 19:49:17 +0200310 if [ $KUBE_PROXY_HTTPX == "http" ]; then
311 proxyflag=" --proxy $KUBE_PROXY_PATH"
312 else
313 proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
314 fi
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +0100315 fi
316 fi
317 curlString="curl -skw %{http_code} $proxyflag -X POST $SDNC_API_PATH$1 -H accept:application/json -H Content-Type:application/json --data-binary @$payload"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100318 echo " CMD: "$curlString >> $HTTPLOG
319 res=$($curlString)
320 retcode=$?
321 echo " RESP: "$res >> $HTTPLOG
322 if [ $retcode -ne 0 ]; then
323 echo " RETCODE: "$retcode >> $HTTPLOG
324 echo "000"
325 return 1
326 fi
327
328 status=${res:${#res}-3}
329
330 if [ $status -ne 200 ]; then
331 echo "000"
332 return 1
333 fi
334 body=${res:0:${#res}-3}
BjornMagnussonXA70e878f2020-05-11 14:11:30 +0200335 echo " JSON: "$body >> $HTTPLOG
BjornMagnussonXAf38e1e82020-10-11 23:05:02 +0200336 reply="./tmp/.sdnc-reply.json"
337 echo "$body" > $reply
BjornMagnussonXAbe9a07f2021-02-25 10:51:46 +0100338 res=$(python3 ../common/extract_sdnc_reply.py $SDNC_RESPONSE_JSON_KEY $reply)
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100339 echo " EXTRACED BODY+CODE: "$res >> $HTTPLOG
340 echo "$res"
341 return 0
342}
343
344# Controller API Test function: getA1Policy (return ids only)
345# arg: <response-code> (OSC <ric-id> <policy-type-id> [ <policy-id> [<policy-id>]* ]) | ( STD <ric-id> [ <policy-id> [<policy-id>]* ] )
346# (Function for test scripts)
347controller_api_get_A1_policy_ids() {
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100348 __log_test_start $@
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100349
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100350 ric_id=$3
351 if [ $RUNMODE == "KUBE" ]; then
352 ric_id=$(get_kube_sim_host $3)
353 fi
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100354 paramError=1
355 if [ $# -gt 3 ] && [ $2 == "OSC" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100356 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4/policies"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100357 paramError=0
358 elif [ $# -gt 2 ] && [ $2 == "STD" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100359 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/A1-P/v1/policies"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100360 paramError=0
361 fi
362
363 if [ $paramError -ne 0 ]; then
364 __print_err "<response-code> (OSC <ric-id> <policy-type-id> [ <policy-id> [<policy-id>]* ]) | ( STD <ric-id> [ <policy-id> [<policy-id>]* ] )" $@
365 return 1
366 fi
367
368 res=$(__do_curl_to_controller getA1Policy "$url")
369 retcode=$?
370 status=${res:${#res}-3}
371
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100372 if [ $retcode -ne 0 ]; then
373 __log_test_fail_status_code $1 $retcode "(likely remote server error)"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100374 return 1
375 fi
376
377 if [ $status -ne $1 ]; then
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100378 __log_test_fail_status_code $1 $status
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100379 return 1
380 fi
381 body=${res:0:${#res}-3}
382
383 targetJson="["
384 start=4
385 if [ $2 == "OSC" ]; then
386 start=5
387 fi
388 for pid in ${@:$start} ; do
389 if [ "$targetJson" != "[" ]; then
390 targetJson=$targetJson","
391 fi
BjornMagnussonXAad047782020-06-08 15:54:11 +0200392 targetJson=$targetJson"\"$UUID$pid\""
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100393 done
394 targetJson=$targetJson"]"
395
396 echo " TARGET JSON: $targetJson" >> $HTTPLOG
397
BjornMagnussonXA72667f12020-04-24 09:20:18 +0200398 res=$(python3 ../common/compare_json.py "$targetJson" "$body")
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100399
400 if [ $res -ne 0 ]; then
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100401 __log_test_fail_body
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100402 return 1
403 fi
404
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100405 __log_test_pass
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100406 return 0
407}
408
409
410# Controller API Test function: getA1PolicyType
411# arg: <response-code> OSC <ric-id> <policy-type-id> [<policy-type-file>]
412# (Function for test scripts)
413controller_api_get_A1_policy_type() {
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100414 __log_test_start $@
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100415
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100416 ric_id=$3
417 if [ $RUNMODE == "KUBE" ]; then
418 ric_id=$(get_kube_sim_host $3)
419 fi
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100420 paramError=1
421 if [ $# -gt 3 ] && [ $2 == "OSC" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100422 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100423 paramError=0
424 fi
425
426 if [ $paramError -ne 0 ]; then
427 __print_err "<response-code> OSC <ric-id> <policy-type-id> [<policy-type-file>]" $@
428 return 1
429 fi
430
431 res=$(__do_curl_to_controller getA1PolicyType "$url")
432 retcode=$?
433 status=${res:${#res}-3}
434
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100435 if [ $retcode -ne 0 ]; then
436 __log_test_fail_status_code $1 $retcode "(likely remote server error)"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100437 return 1
438 fi
439
440 if [ $status -ne $1 ]; then
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100441 __log_test_fail_status_code $1 $status
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100442 return 1
443 fi
444 body=${res:0:${#res}-3}
445
446 if [ $# -eq 5 ]; then
447
448 body=${res:0:${#res}-3}
449
450 targetJson=$(< $5)
451 echo " TARGET JSON: $targetJson" >> $HTTPLOG
BjornMagnussonXA72667f12020-04-24 09:20:18 +0200452 res=$(python3 ../common/compare_json.py "$targetJson" "$body")
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100453
454 if [ $res -ne 0 ]; then
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100455 __log_test_fail_body
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100456 return 1
457 fi
458 fi
459
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100460 __log_test_pass
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100461 return 0
462}
463
464# Controller API Test function: deleteA1Policy
465# arg: <response-code> (STD <ric-id> <policy-id>) | (OSC <ric-id> <policy-type-id> <policy-id>)
466# (Function for test scripts)
467controller_api_delete_A1_policy() {
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100468 __log_test_start $@
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100469
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100470 ric_id=$3
471 if [ $RUNMODE == "KUBE" ]; then
472 ric_id=$(get_kube_sim_host $3)
473 fi
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100474 paramError=1
475 if [ $# -eq 5 ] && [ $2 == "OSC" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100476 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100477 paramError=0
478 elif [ $# -eq 4 ] && [ $2 == "STD" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100479 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100480 paramError=0
481 fi
482
483 if [ $paramError -ne 0 ]; then
484 __print_err "<response-code> (STD <ric-id> <policy-id>) | (OSC <ric-id> <policy-type-id> <policy-id>)" $@
485 return 1
486 fi
487
488 res=$(__do_curl_to_controller deleteA1Policy "$url")
489 retcode=$?
490 status=${res:${#res}-3}
491
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100492 if [ $retcode -ne 0 ]; then
493 __log_test_fail_status_code $1 $retcode "(likely remote server error)"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100494 return 1
495 fi
496
497 if [ $status -ne $1 ]; then
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100498 __log_test_fail_status_code $1 $status
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100499 return 1
500 fi
501
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100502 __log_test_pass
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100503 return 0
504}
505
506# Controller API Test function: putA1Policy
507# arg: <response-code> (STD <ric-id> <policy-id> <template-file> ) | (OSC <ric-id> <policy-type-id> <policy-id> <template-file>)
508# (Function for test scripts)
509controller_api_put_A1_policy() {
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100510 __log_test_start $@
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100511
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100512 ric_id=$3
513 if [ $RUNMODE == "KUBE" ]; then
514 ric_id=$(get_kube_sim_host $3)
515 fi
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100516 paramError=1
517 if [ $# -eq 6 ] && [ $2 == "OSC" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100518 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100519 body=$(sed 's/XXX/'${5}'/g' $6)
520
521 paramError=0
522 elif [ $# -eq 5 ] && [ $2 == "STD" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100523 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100524 body=$(sed 's/XXX/'${4}'/g' $5)
525 paramError=0
526 fi
527
528 if [ $paramError -ne 0 ]; then
529 __print_err "<response-code> (STD <ric-id> <policy-id>) | (OSC <ric-id> <policy-type-id> <policy-id>)" $@
530 return 1
531 fi
532
533 res=$(__do_curl_to_controller putA1Policy "$url" "$body")
534 retcode=$?
535 status=${res:${#res}-3}
536
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100537 if [ $retcode -ne 0 ]; then
538 __log_test_fail_status_code $1 $retcode "(likely remote server error)"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100539 return 1
540 fi
541
542 if [ $status -ne $1 ]; then
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100543 __log_test_fail_status_code $1 $status
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100544 return 1
545 fi
546
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100547 __log_test_pass
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100548 return 0
549}
550
551
552# Controller API Test function: getA1PolicyStatus
553# arg: <response-code> (STD <ric-id> <policy-id> <enforce-status> [<reason>]) | (OSC <ric-id> <policy-type-id> <policy-id> <instance-status> <has-been-deleted>)
554# (Function for test scripts)
555controller_api_get_A1_policy_status() {
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100556 __log_test_start $@
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100557
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100558 ric_id=$3
559 if [ $RUNMODE == "KUBE" ]; then
560 ric_id=$(get_kube_sim_host $3)
561 fi
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100562 targetJson=""
563 paramError=1
564 if [ $# -ge 5 ] && [ $2 == "OSC" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100565 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5/status"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100566 if [ $# -gt 5 ]; then
567 targetJson="{\"instance_status\":\"$6\""
568 targetJson=$targetJson",\"has_been_deleted\":\"$7\""
569 targetJson=$targetJson",\"created_at\":\"????\"}"
570 fi
571 paramError=0
572 elif [ $# -ge 4 ] && [ $2 == "STD" ]; then
BjornMagnussonXAe0b665e2021-01-08 22:19:18 +0100573 url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4/status"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100574 if [ $# -gt 4 ]; then
575 targetJson="{\"enforceStatus\":\"$5\""
576 if [ $# -eq 6 ]; then
577 targetJson=$targetJson",\"reason\":\"$6\""
578 fi
579 targetJson=$targetJson"}"
580 fi
581 paramError=0
582 fi
583
584 if [ $paramError -ne 0 ]; then
585 __print_err "<response-code> (STD <ric-id> <policy-id> <enforce-status> [<reason>]) | (OSC <ric-id> <policy-type-id> <policy-id> <instance-status> <has-been-deleted>)" $@
586 return 1
587 fi
588
589 res=$(__do_curl_to_controller getA1PolicyStatus "$url")
590 retcode=$?
591 status=${res:${#res}-3}
592
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100593 if [ $retcode -ne 0 ]; then
594 __log_test_fail_status_code $1 $retcode "(likely remote server error)"
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100595 return 1
596 fi
597
598 if [ $status -ne $1 ]; then
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100599 __log_test_fail_status_code $1 $status
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100600 return 1
601 fi
602
603 if [ ! -z "$targetJson" ]; then
604
605 body=${res:0:${#res}-3}
606 echo " TARGET JSON: $targetJson" >> $HTTPLOG
BjornMagnussonXA72667f12020-04-24 09:20:18 +0200607 res=$(python3 ../common/compare_json.py "$targetJson" "$body")
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100608
609 if [ $res -ne 0 ]; then
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100610 __log_test_fail_body
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100611 return 1
612 fi
613 fi
614
BjornMagnussonXA7b36db62020-11-23 10:57:57 +0100615 __log_test_pass
BjornMagnussonXA80a92002020-03-19 14:31:06 +0100616 return 0
617}