2023-03-14 04:32:53 -04:00
#!/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..."
2023-04-16 02:59:21 -04:00
sleep 10
2023-03-14 04:32:53 -04:00
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..."
2023-04-16 02:59:21 -04:00
sleep 10
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..."
2023-03-14 04:32:53 -04:00
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
2023-04-16 02:59:21 -04:00
for x in $( oc get deployments -n infidel-test -o jsonpath = "{range .items[*]}{.metadata.name}{'\n'}{end}" | grep "[0-9][2-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-9][2-9]" ) ; do oc delete network-attachment-definition $x -n infidel-test; done
2023-03-14 04:32:53 -04:00
}
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..."
2023-04-16 02:59:21 -04:00
rm deployments/trainee/*.yaml
rm net/gnb/*.yaml
net_gen
2023-03-14 04:32:53 -04:00
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