Initial commit
This commit is contained in:
396
scripts/net_gen.sh
Executable file
396
scripts/net_gen.sh
Executable file
@@ -0,0 +1,396 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -uo pipefail
|
||||
|
||||
# GLOBAL VARS
|
||||
imsi_now=""
|
||||
ki_now=""
|
||||
opc_now=""
|
||||
|
||||
function imsi_parser(){
|
||||
# echo "IMSI -> KI -> OPC"
|
||||
while IFS=, read -r count imsi ki opc
|
||||
do
|
||||
# echo "[$count]" $imsi "->" $ki "->" "$opc"
|
||||
if [ "$1" = "$count" ]; then
|
||||
imsi_now="$imsi"
|
||||
ki_now="$ki"
|
||||
opc_now="$opc"
|
||||
return
|
||||
fi
|
||||
done < input/imsi_data.csv
|
||||
}
|
||||
|
||||
function create_from_path() {
|
||||
cd $1
|
||||
if echo "$1" | grep -iqF deploy; then
|
||||
echo "Deployment Mode"
|
||||
cu_confs=`ls -d ./*cu*`
|
||||
for x in `ls -d $cu_confs`; do oc create -f $x -n infidel-test; done
|
||||
echo "[CU Deployment] Delay, let the script breathe..."
|
||||
sleep 5
|
||||
ue_confs=`ls -d ./*ue*`
|
||||
for x in `ls -d $ue_confs`; do oc create -f $x -n infidel-test; done
|
||||
echo "[UE Deployment] Delay, let the script breathe..."
|
||||
sleep 2
|
||||
du_confs=`ls -d ./*du*`
|
||||
for x in `ls -d $du_confs`; do oc create -f $x -n infidel-test; done
|
||||
echo "[DU Deployment] Delay, let the script breathe..."
|
||||
else
|
||||
echo "Custom Mode"
|
||||
for x in `ls -d .`; do oc create -f $x -n infidel-test; done
|
||||
fi
|
||||
cd -
|
||||
}
|
||||
|
||||
function clean_deployments(){
|
||||
|
||||
for x in $(oc get dc -n infidel-test -o jsonpath="{range .items[*]}{.metadata.name}{'\n'}{end}"); do oc delete dc $x -n infidel-test; done
|
||||
for x in $(oc get deployments -n infidel-test -o jsonpath="{range .items[*]}{.metadata.name}{'\n'}{end}" | grep "0[0-9]"); do oc delete deployment $x -n infidel-test; done
|
||||
for x in $(oc get network-attachment-definition -n infidel-test -o jsonpath="{range .items[*]}{.metadata.name}{'\n'}{end}" | grep "0[0-9]") ; do oc delete network-attachment-definition $x -n infidel-test; done
|
||||
|
||||
}
|
||||
|
||||
function deployment_gen(){
|
||||
|
||||
SOURCE_FILE="deployments/src/template_deployment.yaml"
|
||||
echo "--------------------------[*]"
|
||||
echo "${role} -> ${ip}"
|
||||
export trainee=$role
|
||||
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
echo $v "->" $NEW_VAR
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="deployments/trainee/gnb-${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
function net_core_gen(){
|
||||
clear
|
||||
rm net/core/*
|
||||
echo "***************************"
|
||||
echo "Core NET Generation"
|
||||
echo "***************************"
|
||||
while IFS=, read -r role ip
|
||||
do
|
||||
SOURCE_FILE="net/src/template_net.yaml"
|
||||
echo $role "->" $ip
|
||||
trainee=$role
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
echo $v "->" $NEW_VAR
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="net/core/${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
done < input/core_net_ipv4.csv
|
||||
echo "***************************"
|
||||
}
|
||||
|
||||
|
||||
function net_gen(){
|
||||
while IFS=, read -r role ip_cu_amf ip_cu_du ip_du_cu ip_ue_du
|
||||
do
|
||||
echo "IMSI DATA *************************"
|
||||
imsi_parser $role
|
||||
echo "IMSI" $imsi_now
|
||||
echo "KI" $ki_now
|
||||
echo "OPC" $opc_now
|
||||
|
||||
echo "--------------------------[*]"
|
||||
# GNB CU_AMF NET
|
||||
SOURCE_FILE="net/src/template_net.yaml"
|
||||
export trainee="cu-amf-$role"
|
||||
export ip="$ip_cu_amf/24"
|
||||
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
echo $v "->" $NEW_VAR
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="net/gnb/cu-amf-${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
|
||||
# GNB CU_DU NET
|
||||
SOURCE_FILE="net/src/template_net.yaml"
|
||||
export trainee="cu-du-$role"
|
||||
export ip="$ip_cu_du/24"
|
||||
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
echo $v "->" $NEW_VAR
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="net/gnb/cu-du-${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
|
||||
# GNB DU_CU NET
|
||||
SOURCE_FILE="net/src/template_net.yaml"
|
||||
export trainee="du-cu-$role"
|
||||
export ip="$ip_du_cu/24"
|
||||
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
echo $v "->" $NEW_VAR
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="net/gnb/du-cu-${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
|
||||
# GNB UE_DU NET
|
||||
SOURCE_FILE="net/src/template_net.yaml"
|
||||
export trainee="ue-du-$role"
|
||||
export ip="$ip_ue_du/24"
|
||||
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
echo $v "->" $NEW_VAR
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="net/gnb/ue-du-${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
|
||||
# GNB CU Deplpoyment
|
||||
SOURCE_FILE="deployments/src/template_deployment.yaml"
|
||||
echo "--------------------------[*]"
|
||||
export trainee="cu-$role"
|
||||
export net="oai-cu-amf-$role-net,oai-cu-du-$role-net"
|
||||
export ip=$ip_du_cu
|
||||
export mode="cu"
|
||||
export mode_cap="CU"
|
||||
export part_of="oai-amf"
|
||||
export part_type="Deployment"
|
||||
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
echo $v "->" $NEW_VAR
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="deployments/trainee/gnb-cu-${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
|
||||
# GNB DU Deplpoyment
|
||||
SOURCE_FILE="deployments/src/template_deployment.yaml"
|
||||
echo "--------------------------[*]"
|
||||
export trainee="du-$role"
|
||||
export net="oai-du-cu-$role-net"
|
||||
export ip=$ip_du_cu
|
||||
export mode="du"
|
||||
export mode_cap="TDD_DU"
|
||||
export part_of="oai-cu-$role"
|
||||
export part_type="DeploymentConfig"
|
||||
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
echo $v "->" $NEW_VAR
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="deployments/trainee/gnb-du-${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
|
||||
# GNB UE_DU Deplpoyment
|
||||
SOURCE_FILE="deployments/src/template_ue_deployment.yaml"
|
||||
echo "--------------------------[*]"
|
||||
export trainee="ue-$role"
|
||||
export net="oai-ue-du-$role-net"
|
||||
export ip=$ip_ue_du
|
||||
export mode="ue"
|
||||
export mode_cap="TDD_DU"
|
||||
export part_of="oai-du-$role"
|
||||
export part_type="DeploymentConfig"
|
||||
|
||||
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
EXPRESSIONS=""
|
||||
for v in ${VARS}; do
|
||||
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
"Config file '$(basename $c)' requires all of $VARS."
|
||||
exit 1
|
||||
fi
|
||||
echo $v "->" $NEW_VAR
|
||||
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
done
|
||||
|
||||
TARGET_FILE="deployments/trainee/gnb-ue-${role}.yaml"
|
||||
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
echo "${TARGET_FILE}"
|
||||
echo ""
|
||||
|
||||
# GNB DEMO_CU Deplpoyment
|
||||
# SOURCE_FILE="deployments/src/gnb_access_deployment.yaml"
|
||||
# echo "--------------------------[*]"
|
||||
# export trainee="ue-demo-$role"
|
||||
# export net="oai-ue-du-$role-net"
|
||||
# export ip=$ip_ue_du
|
||||
# export mode="ue"
|
||||
# export mode_cap="TDD_DU"
|
||||
# export part_of="oai-du-$role"
|
||||
# export part_type="DeploymentConfig"
|
||||
|
||||
# VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${SOURCE_FILE} | sort | uniq | xargs)
|
||||
# EXPRESSIONS=""
|
||||
# for v in ${VARS}; do
|
||||
# NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||
# if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||
# echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||
# "Config file '$(basename $c)' requires all of $VARS."
|
||||
# exit 1
|
||||
# fi
|
||||
# echo $v "->" $NEW_VAR
|
||||
# EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||
# done
|
||||
#
|
||||
# TARGET_FILE="deployments/trainee/gnb-demo-ue-${role}.yaml"
|
||||
# EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||
# sed "${EXPRESSIONS}" ${SOURCE_FILE} > ${TARGET_FILE}
|
||||
# echo "${TARGET_FILE}"
|
||||
# echo ""
|
||||
done < input/main_data.csv
|
||||
}
|
||||
|
||||
PS3="[!] Select operation : "
|
||||
select mode in trainee_gnb_and_net clean_deployments create_from_path "Core Net Generation" "Imsi Parser" "Dirty Reload" "Deploy Access Demo";
|
||||
do
|
||||
case $mode in
|
||||
trainee_gnb_and_net)
|
||||
rm deployments/trainee/*.yaml
|
||||
rm net/gnb/*.yaml
|
||||
net_gen
|
||||
;;
|
||||
create_from_path)
|
||||
echo "Where is the Path: "
|
||||
echo "[!]-<$(pwd)>"
|
||||
read -e -p '[!]-: ' path
|
||||
create_from_path $path
|
||||
;;
|
||||
clean_deployments)
|
||||
PS3="[*] Clean Mode : "
|
||||
select clear_mode in deployments nets exit;
|
||||
do
|
||||
case $clear_mode in
|
||||
deployments)
|
||||
clean_deployments 1
|
||||
;;
|
||||
nets)
|
||||
clean_deployments 2
|
||||
;;
|
||||
exit)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
"Core Net Generation")
|
||||
net_core_gen
|
||||
;;
|
||||
"Imsi Parser")
|
||||
imsi_parser
|
||||
;;
|
||||
"Dirty Reload")
|
||||
echo "Dirty Reload..."
|
||||
clean_deployments 1
|
||||
create_from_path net/gnb
|
||||
create_from_path deployments/trainee
|
||||
;;
|
||||
"Deploy Access Demo")
|
||||
echo "Editable Deployment"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option $REPLAY"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
Reference in New Issue
Block a user