diff --git a/.gitignore b/.gitignore index a2fca4cf8d00da516ad32563e638a5f70b5c6aa4..d0385ff310f94b54ff428d669740a3c7066a4f6b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ archives/ DS-TEST-RESULTS/ ci-scripts/mysql-complete.cmd -ci-scripts/temp/ci-generate_amf_conf.sh +ci-scripts/temp/ci-*.sh diff --git a/ci-scripts/Jenkinsfile-GitLab-Docker b/ci-scripts/Jenkinsfile-GitLab-Docker index 39253ab9fb701674ce0405a5b4c83c92c48c294f..c7a61183f9dd2ef30cdee5e435d1b4762153e39f 100644 --- a/ci-scripts/Jenkinsfile-GitLab-Docker +++ b/ci-scripts/Jenkinsfile-GitLab-Docker @@ -176,6 +176,8 @@ pipeline { myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=DeployMySqlServer', new_host_flag, new_host_user, new_host) // Deploy and configure AMF myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=DeployAMF --tag=' + amfTag, new_host_flag, new_host_user, new_host) + // Deploy and configure SMF + myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=DeploySMF --tag=' + smfTag, new_host_flag, new_host_user, new_host) } } } diff --git a/ci-scripts/dsTestDeployTools.py b/ci-scripts/dsTestDeployTools.py index e97d62ce8eded6e2f0f4472808659ce412390696..dbc13f424ece778cf44782a4a628461c6b406104 100644 --- a/ci-scripts/dsTestDeployTools.py +++ b/ci-scripts/dsTestDeployTools.py @@ -32,6 +32,7 @@ CICD_PUBLIC_NETWORK_RANGE='192.168.61.192/26' CICD_MYSQL_PUBLIC_ADDR='192.168.61.194' CICD_AMF_PUBLIC_ADDR='192.168.61.195' CICD_SMF_PUBLIC_ADDR='192.168.61.196' +CICD_UPF_PUBLIC_ADDR='192.168.61.197' CICD_DUMMY_SMF_PUBLIC_ADDR='192.168.61.200' class deployForDsTester(): @@ -105,9 +106,27 @@ class deployForDsTester(): subprocess_run_w_echo('docker cp ci-scripts/temp/ci-generate_amf_conf.sh cicd-oai-amf:/openair-amf/generate_amf_conf.sh') subprocess_run_w_echo('docker exec -it cicd-oai-amf /bin/bash -c "chmod 755 generate_amf_conf.sh && ./generate_amf_conf.sh" > archives/amf_config.log') + def deploySMF(self): + res = '' + # first check if tag exists + try: + res = subprocess.check_output('docker image inspect oai-smf:' + self.tag, shell=True, universal_newlines=True) + except: + sys.exit(-1) + + # check if there is an entrypoint + entrypoint = re.search('entrypoint', str(res)) + if entrypoint is not None: + print('not supported yet') + else: + subprocess_run_w_echo('docker run --privileged --name cicd-oai-smf --network cicd-oai-public-net --ip ' + CICD_SMF_PUBLIC_ADDR + ' -d oai-smf:' + self.tag + ' /bin/bash -c "sleep infinity"') + subprocess_run_w_echo('sed -e "s@CI_N4_IF_NAME@eth0@" -e "s@CI_SBI_IF_NAME@eth0@" -e "s@CI_AMF_IP_ADDR@' + CICD_AMF_PUBLIC_ADDR + '@" -e "s@CI_UPF_IP_ADDR@' + CICD_UPF_PUBLIC_ADDR + '@" ci-scripts/temp/generate_smf_conf.sh > ci-scripts/temp/ci-generate_smf_conf.sh') + subprocess_run_w_echo('docker cp ci-scripts/temp/ci-generate_smf_conf.sh cicd-oai-smf:/openair-smf/generate_smf_conf.sh') + subprocess_run_w_echo('docker exec -it cicd-oai-smf /bin/bash -c "chmod 755 generate_smf_conf.sh && ./generate_smf_conf.sh" > archives/smf_config.log') + def removeAllContainers(self): try: - subprocess_run_w_echo('docker rm -f cicd-mysql-svr') + subprocess_run_w_echo('docker rm -f cicd-mysql-svr cicd-oai-amf cicd-oai-smf') except: pass @@ -157,6 +176,7 @@ while len(argvs) > 1: action != 'RemoveNetworks' and \ action != 'DeployMySqlServer' and \ action != 'DeployAMF' and \ + action != 'DeploySMF' and \ action != 'RemoveAllContainers': print('Unsupported Action => ' + action) Usage() @@ -178,6 +198,12 @@ elif DFDT.action == 'DeployAMF': Usage() sys.exit(-1) DFDT.deployAMF() +elif DFDT.action == 'DeploySMF': + if DFDT.tag == '': + print('Missing OAI-SMF image tag') + Usage() + sys.exit(-1) + DFDT.deploySMF() elif DFDT.action == 'RemoveAllContainers': DFDT.removeAllContainers() diff --git a/ci-scripts/temp/generate_smf_conf.sh b/ci-scripts/temp/generate_smf_conf.sh new file mode 100755 index 0000000000000000000000000000000000000000..140d7f1bd2be0f2f56a5b414163da87dc321b08a --- /dev/null +++ b/ci-scripts/temp/generate_smf_conf.sh @@ -0,0 +1,34 @@ +# prompt has been removed for easier Ctrl+C Ctrl+V +# please update the following information according to your configuration + +INSTANCE=1 +PREFIX='/openair-smf/etc' + +declare -A SMF_CONF + +SMF_CONF[@INSTANCE@]=$INSTANCE +SMF_CONF[@PID_DIRECTORY@]='/var/run' + +SMF_CONF[@SMF_INTERFACE_NAME_FOR_N4@]='CI_N4_IF_NAME' +SMF_CONF[@SMF_INTERFACE_NAME_FOR_SBI@]='CI_SBI_IF_NAME' + +SMF_CONF[@SMF_INTERFACE_PORT_FOR_SBI@]='80' +SMF_CONF[@SMF_INTERFACE_HTTP2_PORT_FOR_SBI@]='9090' + +SMF_CONF[@UDM_IPV4_ADDRESS@]='127.0.0.1' +SMF_CONF[@UDM_PORT@]='80' + +SMF_CONF[@AMF_IPV4_ADDRESS@]='CI_AMF_IP_ADDR' +SMF_CONF[@AMF_PORT@]='80' + +SMF_CONF[@UPF_IPV4_ADDRESS@]='CI_UPF_IP_ADDR' + +SMF_CONF[@DEFAULT_DNS_IPV4_ADDRESS@]='8.8.8.8' +SMF_CONF[@DEFAULT_DNS_SEC_IPV4_ADDRESS@]='4.4.4.4' + +for K in "${!SMF_CONF[@]}"; do + egrep -lRZ "$K" $PREFIX/smf.conf | xargs -0 -l sed -i -e "s|$K|${SMF_CONF[$K]}|g" + ret=$?;[[ ret -ne 0 ]] && echo "Tried to replace $K with ${SMF_CONF[$K]}" +done + +echo "SMF Configuration Successful"