diff --git a/docker/Dockerfile.gNB.aw2s.ubuntu18 b/docker/Dockerfile.gNB.aw2s.ubuntu18 index d5e3eed6dcd762bd68440732a0f310321b3bc040..a38cb34d78f164dae7db6ed22afcaee36d0ed98a 100644 --- a/docker/Dockerfile.gNB.aw2s.ubuntu18 +++ b/docker/Dockerfile.gNB.aw2s.ubuntu18 @@ -37,9 +37,6 @@ RUN /bin/sh oaienv && \ cd cmake_targets/ran_build/build && \ ninja aw2sori_transpro -RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters.yaml && \ - cp /oai-ran/docker/scripts/gnb-aw2s_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh - #start from scratch for target executable FROM ubuntu:bionic as oai-gnb-aw2s ENV DEBIAN_FRONTEND=noninteractive @@ -48,31 +45,22 @@ ENV TZ=Europe RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ DEBIAN_FRONTEND=noninteractive apt-get install --yes \ - software-properties-common \ procps \ libsctp1 \ tzdata \ - libnettle6 \ libblas3 \ libatlas3-base \ libconfig9 \ openssl \ net-tools \ iproute2 \ - iputils-ping \ - python \ - python3 \ - python3-six \ - python3-requests \ - libusb-1.0-0 && \ + iputils-ping && \ rm -rf /var/lib/apt/lists/* COPY ./libori.so /usr/local/lib/ WORKDIR /opt/oai-gnb-aw2s/bin -COPY --from=gnb-build \ - /oai-ran/cmake_targets/ran_build/build/nr-softmodem \ - ./ +COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/nr-softmodem ./ COPY ./docker/scripts/gnb-aw2s_entrypoint.sh /opt/oai-gnb-aw2s/bin/entrypoint.sh COPY --from=gnb-build \ @@ -94,17 +82,7 @@ RUN /bin/bash -c "ln -s /usr/local/lib/libaw2sori_transpro.so /usr/local/lib/lib /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so /usr/local/lib/liboai_transpro.so" && \ ldconfig -# Copy the relevant configuration files for gNB -WORKDIR /opt/oai-gnb-aw2s/etc -COPY --from=gnb-build /oai-ran/docker/etc . - WORKDIR /opt/oai-gnb-aw2s -#EXPOSE 2152/udp # S1U, GTP/UDP -#EXPOSE 22100/tcp # ? -#EXPOSE 36412/udp # S1C, SCTP/UDP -#EXPOSE 36422/udp # X2C, SCTP/UDP -#EXPOSE 50000/udp # IF5 / ORI (control) -#EXPOSE 50001/udp # IF5 / ECPRI (data) ENTRYPOINT ["/opt/oai-gnb-aw2s/bin/entrypoint.sh"] CMD ["/opt/oai-gnb-aw2s/bin/nr-softmodem", "-O", "/opt/oai-gnb-aw2s/etc/gnb.conf"] diff --git a/docker/scripts/gnb-aw2s_entrypoint.sh b/docker/scripts/gnb-aw2s_entrypoint.sh index da148ffa533e9cf4b544f2c5173e0f489c09150d..3b2a6a37d7c83ef1994a68c5337df09cc9f05a1c 100755 --- a/docker/scripts/gnb-aw2s_entrypoint.sh +++ b/docker/scripts/gnb-aw2s_entrypoint.sh @@ -3,62 +3,18 @@ set -uo pipefail PREFIX=/opt/oai-gnb-aw2s -ENABLE_X2=${ENABLE_X2:-yes} -THREAD_PARALLEL_CONFIG=${THREAD_PARALLEL_CONFIG:-PARALLEL_SINGLE_THREAD} -# Based another env var, pick one template to use - -if [[ -v USE_NSA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.nsa.tdd.conf $PREFIX/etc/gnb.conf; fi -if [[ -v USE_SA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.sa.tdd.conf $PREFIX/etc/gnb.conf; fi -if [[ -v USE_SA_TDD_MONO_B2XX ]]; then cp $PREFIX/etc/gnb.sa.tdd.b2xx.conf $PREFIX/etc/gnb.conf; fi -if [[ -v USE_SA_FDD_MONO ]]; then cp $PREFIX/etc/gnb.sa.fdd.conf $PREFIX/etc/gnb.conf; fi -if [[ -v USE_SA_CU ]]; then cp $PREFIX/etc/gnb.sa.cu.conf $PREFIX/etc/gnb.conf; fi -if [[ -v USE_SA_TDD_DU ]]; then cp $PREFIX/etc/gnb.sa.du.tdd.conf $PREFIX/etc/gnb.conf; fi -if [[ -v USE_SA_NFAPI_VNF ]]; then cp $PREFIX/etc/gnb.sa.nfapi.vnf.conf $PREFIX/etc/gnb.conf; fi -# Sometimes, the templates are not enough. We mount a conf file on $PREFIX/etc. It can be a template itself. -if [[ -v USE_VOLUMED_CONF ]]; then cp $PREFIX/etc/mounted.conf $PREFIX/etc/gnb.conf; fi - -# Default Parameters -GNB_ID=${GNB_ID:-e00} -NSSAI_SD=${NSSAI_SD:-ffffff} -# AMF_IP_ADDRESS can be amf ip address of amf fqdn -if [[ -v AMF_IP_ADDRESS ]] && [[ "${AMF_IP_ADDRESS}" =~ [a-zA-Z] ]] && [[ -z `getent hosts $AMF_IP_ADDRESS | awk '{print $1}'` ]]; then echo "not able to resolve AMF FQDN" && exit 1 ; fi -[[ -v AMF_IP_ADDRESS ]] && [[ "${AMF_IP_ADDRESS}" =~ [a-zA-Z] ]] && AMF_IP_ADDRESS=$(getent hosts $AMF_IP_ADDRESS | awk '{print $1}') - -# Only this template will be manipulated -CONFIG_FILES=`ls $PREFIX/etc/gnb.conf || true` - -for c in ${CONFIG_FILES}; do - # Sometimes templates have no pattern to be replaced. - if ! grep -oP '@[a-zA-Z0-9_]+@' ${c}; then - echo "Configuration is already set" - break - fi - - # grep variable names (format: ${VAR}) from template to be rendered - VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs) - - # create sed expressions for substituting each occurrence of ${VAR} - # with the value of the environment variable "VAR" - 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 - EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g" - done - EXPRESSIONS="${EXPRESSIONS#';'}" - - # render template and inline replace config file - sed -i "${EXPRESSIONS}" ${c} +if [[ -v USE_VOLUMED_CONF ]]; then + cp $PREFIX/etc/mounted.conf $PREFIX/etc/gnb.conf +else + echo "ERROR: No configuration file provided." + echo "Please set USE_VOLUMED_CONF and mount a configuration file at $PREFIX/etc/mounted.conf" + exit 1 +fi - echo "==================================" - echo "== Configuration file: ${c}" - cat ${c} -done +echo "==================================" +echo "== Configuration file:" +cat $PREFIX/etc/enb.conf # enable printing of stack traces on assert export gdbStacks=1