diff --git a/ci-scripts/Jenkinsfile-push-registry b/ci-scripts/Jenkinsfile-push-registry
index 541999e8ff..d3bd5e6e64 100644
--- a/ci-scripts/Jenkinsfile-push-registry
+++ b/ci-scripts/Jenkinsfile-push-registry
@@ -76,7 +76,7 @@ pipeline {
withCredentials([
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.DH_Credentials}", usernameVariable: 'DH_Username', passwordVariable: 'DH_Password']
]) {
- def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue", "oai-nr-cuup"]
+ def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue", "oai-nr-cuup", "oai-gnb-fhi72"]
// Logging in on both registries
sh "docker login -u ${DH_Username} -p ${DH_Password} > /dev/null 2>&1"
sh "docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
diff --git a/ci-scripts/cls_cluster.py b/ci-scripts/cls_cluster.py
index d35b73890b..80d6d95daa 100644
--- a/ci-scripts/cls_cluster.py
+++ b/ci-scripts/cls_cluster.py
@@ -462,6 +462,34 @@ class Cluster:
self.cmd.run(f'oc logs {nrue_job} &> cmake_targets/log/oai-nr-ue.log')
self.cmd.run(f'oc get pods.metrics.k8s.io &>> cmake_targets/log/build-metrics.log', '\$', 10)
+ if status:
+ self._recreate_is_tag('ran-build-fhi72', imageTag, 'openshift/ran-build-fhi72-is.yaml')
+ self._recreate_bc('ran-build-fhi72', imageTag, 'openshift/ran-build-fhi72-bc.yaml')
+ self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.build.fhi72.rhel9')
+ ranbuildfhi72_job = self._start_build('ran-build-fhi72')
+ attemptedImages += ['ran-build-fhi72']
+
+ wait = ranbuildfhi72_job is not None and self._wait_build_end([ranbuildfhi72_job], 1200)
+ if not wait: logging.error('error during build of ranbuildfhi72_job')
+ status = status and wait
+ self.cmd.run(f'oc logs {ranbuildfhi72_job} &> cmake_targets/log/ran-build-fhi72.log')
+ self.cmd.run(f'oc get pods.metrics.k8s.io &>> cmake_targets/log/build-metrics.log', '\$', 10)
+
+ if status:
+ self._recreate_is_tag('oai-gnb-fhi72', imageTag, 'openshift/oai-gnb-fhi72-is.yaml')
+ self._recreate_bc('oai-gnb-fhi72', imageTag, 'openshift/oai-gnb-fhi72-bc.yaml')
+ self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.gNB.fhi72.rhel9')
+ self._retag_image_statement('ran-build-fhi72', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build-fhi72', imageTag, 'docker/Dockerfile.gNB.fhi72.rhel9')
+ gnb_fhi72_job = self._start_build('oai-gnb-fhi72')
+ attemptedImages += ['oai-gnb-fhi72']
+
+ wait = gnb_fhi72_job is not None and self._wait_build_end([gnb_fhi72_job], 600)
+ if not wait: logging.error('error during build of gNB-fhi72')
+ status = status and wait
+ # recover logs
+ self.cmd.run(f'oc logs {gnb_fhi72_job} &> cmake_targets/log/oai-gnb-fhi72.log')
+ self.cmd.run(f'oc get pods.metrics.k8s.io &>> cmake_targets/log/build-metrics.log', '\$', 10)
+
# split and analyze logs
imageSize = {}
for image in attemptedImages:
diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py
index 911a6555b5..94d7526813 100644
--- a/ci-scripts/cls_containerize.py
+++ b/ci-scripts/cls_containerize.py
@@ -58,7 +58,7 @@ import cls_oaicitest
# Helper functions used here and in other classes
# (e.g., cls_cluster.py)
#-----------------------------------------------------------
-IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue', 'oai-gnb-asan', 'oai-nr-ue-asan', 'oai-nr-cuup-asan', 'oai-gnb-aerial']
+IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue', 'oai-gnb-asan', 'oai-nr-ue-asan', 'oai-nr-cuup-asan', 'oai-gnb-aerial', 'oai-gnb-fhi72']
def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTargetBranch, ranAllowMerge):
if ranCommitID == '':
@@ -319,6 +319,8 @@ class Containerize():
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
imageNames.append(('oai-nr-ue', 'nrUE', 'oai-nr-ue-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
imageNames.append(('oai-nr-cuup', 'nr-cuup', 'oai-nr-cuup-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
+ imageNames.append(('ran-build-fhi72', 'build.fhi72', 'ran-build-fhi72', ''))
+ imageNames.append(('oai-gnb', 'gNB.fhi72', 'oai-gnb-fhi72', ''))
result = re.search('build_cross_arm64', self.imageKind)
if result is not None:
self.dockerfileprefix = '.ubuntu22.cross-arm64'
@@ -409,6 +411,8 @@ class Containerize():
# target images should use the proper ran-build image
if image != 'ran-build' and "-asan" in name:
cmd.run(f'sed -i -e "s#ran-build:latest#ran-build-asan:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
+ elif "fhi72" in name:
+ cmd.run(f'sed -i -e "s#ran-build-fhi72:latest#ran-build-fhi72:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
elif image != 'ran-build':
cmd.run(f'sed -i -e "s#ran-build:latest#ran-build:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
if image == 'oai-gnb-aerial':
@@ -445,7 +449,7 @@ class Containerize():
cmd.run(f"{self.cli} image prune --force")
# Remove all intermediate build images and clean up
- cmd.run(f"{self.cli} image rm ran-build:{imageTag} ran-build-asan:{imageTag}")
+ cmd.run(f"{self.cli} image rm ran-build:{imageTag} ran-build-asan:{imageTag} ran-build-fhi72:{imageTag} || true")
cmd.run(f"{self.cli} volume prune --force")
# Remove some cached artifacts to prevent out of diskspace problem
diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_gnb/README.md b/ci-scripts/yaml_files/sa_fhi_7.2_gnb/README.md
new file mode 100644
index 0000000000..1acbe7fb86
--- /dev/null
+++ b/ci-scripts/yaml_files/sa_fhi_7.2_gnb/README.md
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+ |
+
+ OAI O-RAN 7.2 Front-haul Docker Compose
+ |
+
+
+
+
+
+This docker-compose is designed to use `OAI-gNB` with a 7.2 compatible Radio Unit. Before using this docker compose you have to configure
+the host machine as per the [ORAN_FHI7.2_Tutorial](../../../doc/ORAN_FHI7.2_Tutorial.md). The container image used by the docker compose file is tested only on `Ubuntu 22.04` docker host.
+
+## Build Image (Optional)
+
+Refer to [OAI Docker/Podman Build and Usage Procedures](../../../docker/README.md)
+
+## Configure Networking
+
+### SR-IOV Virtual Functions (VFs)
+
+In docker-compose environment there is no automated method
+to configure the VFs on the fly. The user will have to manually configure
+C/U plane VFs before starting the container `OAI-gNB`.
+
+You can follow the step
+[configure-network-interfaces-and-dpdk-vfs](../../../doc/ORAN_FHI7.2_Tutorial.md#configure-network-interfaces-and-dpdk-vfs).
+
+### Interface towards AMF (N2)
+
+For `N2` interface we are using `macvlan` driver of docker.
+
+You can use the `bridge` driver, in situation
+
+- When the core network is running on the same machine
+- or different machine but you have configured
+needed `ip route` and forwarding to access the core network from RAN host.
+
+To configure docker `macvlan` network
+you need to choose `ipam.config` and `driver_opts.parent` are per your environment
+
+```
+ oai-net:
+ driver: macvlan
+ name: oai-net
+ ipam:
+ config:
+ - subnet: "172.21.16.0/22"
+ ip_range: "172.21.18.20/32"
+ gateway: "172.21.19.254"
+ driver_opts:
+ com.docker.network.bridge.name: "oai-net"
+ parent: enp193s0f0
+```
+
+To configure `bridge` network you need to choose `ipam.config.subnet` as per your environment.
+
+```
+ oai-net:
+ driver: bridge
+ name: oai-net
+ ipam:
+ config:
+ - subnet: 192.168.72.128/26
+ driver_opts:
+ com.docker.network.bridge.name: "oai-net"
+```
+
+## Deploy OAI-gNB Container
+
+The [configuration file](../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel650.conf) used by docker compose is configured for Benetel 650 RU (RAN650-1v1.0.4-dda1bf5).
+
+```bash
+docker-compose up -d
+```
+
+To check the logs
+
+```bash
+docker logs oai-gnb -f
+```
diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_fhi_7.2_gnb/docker-compose.yml
new file mode 100644
index 0000000000..e3e93b3b74
--- /dev/null
+++ b/ci-scripts/yaml_files/sa_fhi_7.2_gnb/docker-compose.yml
@@ -0,0 +1,34 @@
+services:
+ oai-gnb:
+ image: oai-gnb-fhi72:latest
+ privileged: true
+ container_name: oai-gnb
+ environment:
+ TZ: Europe/Paris
+ USE_ADDITIONAL_OPTIONS: --sa --thread-pool 13,14,15,16,17,18
+ devices:
+ - /dev/vfio:/dev/vfio/
+ volumes:
+ - ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel650.conf:/opt/oai-gnb/etc/gnb.conf
+ - /dev/hugepages:/dev/hugepages
+ cpuset: "0,1,2,8,9,10,13,14,15,16,17,18"
+ networks:
+ oai-net:
+ ipv4_address: 172.21.18.20
+ healthcheck:
+ test: /bin/bash -c "pgrep nr-softmodem"
+ interval: 10s
+ timeout: 5s
+ retries: 5
+networks:
+ oai-net:
+ driver: macvlan
+ name: oai-net
+ ipam:
+ config:
+ - subnet: "172.21.16.0/22"
+ ip_range: "172.21.18.20/32"
+ gateway: "172.21.19.254"
+ driver_opts:
+ com.docker.network.bridge.name: "oai-net"
+ parent: enp193s0f0
diff --git a/doc/images/docker-deploy-oai-7-2.drawio.xml b/doc/images/docker-deploy-oai-7-2.drawio.xml
new file mode 100644
index 0000000000..eadd0a5bf5
--- /dev/null
+++ b/doc/images/docker-deploy-oai-7-2.drawio.xml
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/images/docker-deploy-oai-7-2.png b/doc/images/docker-deploy-oai-7-2.png
new file mode 100644
index 0000000000..58c323b9de
Binary files /dev/null and b/doc/images/docker-deploy-oai-7-2.png differ
diff --git a/docker/Dockerfile.base.rhel9 b/docker/Dockerfile.base.rhel9
index 1fc3fa973f..03b4ccac91 100644
--- a/docker/Dockerfile.base.rhel9
+++ b/docker/Dockerfile.base.rhel9
@@ -21,12 +21,13 @@
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
-# Valid for RHEL9
+# Valid for UBI9
#
#---------------------------------------------------------------------
FROM registry.access.redhat.com/ubi9/ubi:latest AS ran-base
+LABEL MAINTAINER OpenAirInterface
ARG NEEDED_GIT_PROXY
ENV TZ=Europe/Paris
ENV BUILD_UHD_FROM_SOURCE=True
@@ -35,10 +36,6 @@ ENV UHD_VERSION=4.4.0.0
# Copy the entitlements
COPY ./etc-pki-entitlement /etc/pki/entitlement
-# Copy the subscription manager configurations
-COPY ./rhsm-conf /etc/rhsm
-COPY ./rhsm-ca /etc/rhsm/ca
-
ENV SMDEV_CONTAINER_OFF=1
#install developers pkg/repo
RUN rm -f /etc/rhsm-host && \
@@ -47,11 +44,21 @@ RUN rm -f /etc/rhsm-host && \
cat /etc/os-release && \
dnf install -y \
#gcc needed for build_oai
- gcc gcc-c++ \
diffutils \
file \
psmisc \
git \
+ meson \
+ wget \
+ xz \
+ pkg-config \
+ pcre2-devel \
+ m4 \
+ python3-devel \
+ numactl-libs \
+ numactl-devel \
+ gcc-toolset-12-gcc \
+ gcc-toolset-12-gcc-c++ \
# python3-pip and pyyaml are used for conf template generation
python3-pip && \
pip3 install --ignore-installed pyyaml && \
@@ -80,8 +87,9 @@ WORKDIR /oai-ran
COPY oaienv .
#run build_oai -I to get the builder image
-RUN /bin/sh oaienv && \
+RUN /bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
- ./build_oai -I --install-optional-packages -w USRP && \
+ scl enable gcc-toolset-12 "\
+ ./build_oai -I --install-optional-packages -w USRP" && \
rm /etc/pki/entitlement/*pem
diff --git a/docker/Dockerfile.base.ubuntu22 b/docker/Dockerfile.base.ubuntu22
index 9ed0cd6beb..d1b90e2dcf 100644
--- a/docker/Dockerfile.base.ubuntu22
+++ b/docker/Dockerfile.base.ubuntu22
@@ -45,6 +45,11 @@ RUN apt-get update && \
gcc-12 \
g++-12 \
xxd \
+ libpcre2-dev \
+ python3-dev \
+ bison \
+ flex \
+ m4 \
# python3-pip for conf template generation
python3-pip && \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12 && \
diff --git a/docker/Dockerfile.build.fhi72.rhel9 b/docker/Dockerfile.build.fhi72.rhel9
new file mode 100644
index 0000000000..fc5570a85c
--- /dev/null
+++ b/docker/Dockerfile.build.fhi72.rhel9
@@ -0,0 +1,79 @@
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements. See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# * contact@openairinterface.org
+# */
+#---------------------------------------------------------------------
+#
+# Dockerfile for the Open-Air-Interface RAN Build for FHI 7.2
+# Valid for UBI9
+#
+#---------------------------------------------------------------------
+
+FROM ran-base:latest as ran-base
+ENV TZ=Europe
+
+RUN rm -Rf /oai-ran
+WORKDIR /oai-ran
+COPY . .
+
+## Download and build DPDK
+RUN wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz && \
+ tar -xvf dpdk-20.11.9.tar.xz && \
+ cd dpdk-stable-20.11.9 && \
+ meson build && \
+ ninja -C build && \
+ ninja install -C build
+
+## Build Fronthaul library
+RUN git clone https://gerrit.o-ran-sc.org/r/o-du/phy.git /opt/phy && \
+ cd /opt/phy && \
+ git checkout oran_e_maintenance_release_v1.0 &&\
+ git apply /oai-ran/cmake_targets/tools/oran_fhi_integration_patches/E/oaioran_E.patch && \
+ cd /opt/phy/fhi_lib/lib && \
+ RTE_SDK=/oai-ran/dpdk-stable-20.11.9/ XRAN_DIR=/opt/phy/fhi_lib make XRAN_LIB_SO=1
+
+FROM ran-base as ran-build-fhi72
+ARG E2AP_VERSION=E2AP_V3
+ARG KPM_VERSION=KPM_V3_00
+
+## Build and install OAI
+RUN /bin/sh oaienv && \
+ cd cmake_targets && \
+ mkdir -p log && \
+ scl enable gcc-toolset-12 "\
+ ./build_oai \
+ --gNB \
+ --build-lib 'telnetsrv enbscope uescope nrscope' \
+ -t oran_fhlib_5g --cmake-opt -Dxran_LOCATION=/opt/phy/fhi_lib/lib \
+ --build-e2 --cmake-opt -DXAPP_MULTILANGUAGE=OFF --cmake-opt -DKPM_VERSION=$KPM_VERSION --cmake-opt -DE2AP_VERSION=$E2AP_VERSION" &&\
+ # Mainly to see if the sanitize option was perfectly executed
+ ldd ran_build/build/nr-softmodem && \
+ ldd ran_build/build/liboran_fhlib_5g.so && \
+ ldd /opt/phy/fhi_lib/lib/build/libxran.so
+
+## Build FlexRIC for SM Models
+RUN mkdir -p openair2/E2AP/flexric/build && \
+ cd openair2/E2AP/flexric/build && \
+ scl enable gcc-toolset-12 "\
+ cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
+ -DXAPP_MULTILANGUAGE=OFF \
+ -DKPM_VERSION=$KPM_VERSION \
+ -DE2AP_VERSION=$E2AP_VERSION .. &&\
+ ninja && \
+ ninja install"
diff --git a/docker/Dockerfile.build.fhi72.ubuntu22 b/docker/Dockerfile.build.fhi72.ubuntu22
new file mode 100644
index 0000000000..774f488ed7
--- /dev/null
+++ b/docker/Dockerfile.build.fhi72.ubuntu22
@@ -0,0 +1,91 @@
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements. See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# * contact@openairinterface.org
+# */
+#---------------------------------------------------------------------
+#
+# Dockerfile for the Open-Air-Interface RAN Build for FHI 7.2
+# Valid for UBUNTU 22.04
+#
+#---------------------------------------------------------------------
+
+FROM ran-base:latest as ran-base
+
+ARG E2AP_VERSION=E2AP_V3
+ARG KPM_VERSION=KPM_V3_00
+ENV DEBIAN_FRONTEND=noninteractive
+ENV TZ=Europe
+RUN apt-get update && \
+ DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
+ DEBIAN_FRONTEND=noninteractive apt-get install --yes \
+ meson \
+ wget \
+ xz-utils \
+ pkg-config \
+ libnuma-dev && \
+ rm -rf /var/lib/apt/lists/*
+
+RUN rm -Rf /oai-ran
+WORKDIR /oai-ran
+COPY . .
+
+## Download and build DPDK
+RUN wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz && \
+ tar -xvf dpdk-20.11.9.tar.xz && \
+ cd dpdk-stable-20.11.9 && \
+ meson build && \
+ ninja -C build && \
+ ninja install -C build
+
+## Build Fronthaul library
+RUN git clone https://gerrit.o-ran-sc.org/r/o-du/phy.git /opt/phy && \
+ cd /opt/phy && \
+ git checkout oran_e_maintenance_release_v1.0 &&\
+ git apply /oai-ran/cmake_targets/tools/oran_fhi_integration_patches/E/oaioran_E.patch && \
+ cd /opt/phy/fhi_lib/lib && \
+ RTE_SDK=/oai-ran/dpdk-stable-20.11.9/ XRAN_DIR=/opt/phy/fhi_lib make XRAN_LIB_SO=1
+
+FROM ran-base as ran-build-fhi72
+## Build and install OAI
+#run build_oai to build the target image
+RUN /bin/sh oaienv && \
+ cd cmake_targets && \
+ mkdir -p log && \
+ ./build_oai \
+ --gNB \
+ --build-lib "telnetsrv enbscope uescope nrscope" \
+ -t oran_fhlib_5g --cmake-opt -Dxran_LOCATION=/opt/phy/fhi_lib/lib \
+ --build-e2 --cmake-opt -DXAPP_MULTILANGUAGE=OFF --cmake-opt -DKPM_VERSION=$KPM_VERSION --cmake-opt -DE2AP_VERSION=$E2AP_VERSION && \
+ $BUILD_OPTION && \
+ # Mainly to see if the sanitize option was perfectly executed
+ ldd ran_build/build/nr-softmodem && \
+ ldd ran_build/build/liboran_fhlib_5g.so && \
+ ldd /opt/phy/fhi_lib/lib/build/libxran.so
+
+## Build FlexRIC for SM Models
+RUN mkdir -p openair2/E2AP/flexric/build && \
+ cd openair2/E2AP/flexric/build && \
+ cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
+ -DXAPP_MULTILANGUAGE=OFF \
+ -DKPM_VERSION=$KPM_VERSION \
+ -DE2AP_VERSION=$E2AP_VERSION \
+ -DCMAKE_C_COMPILER=gcc-12 \
+ -DCMAKE_CXX_COMPILER=g++-12 .. && \
+ ninja && \
+ ninja install
diff --git a/docker/Dockerfile.gNB.fhi72.rhel9 b/docker/Dockerfile.gNB.fhi72.rhel9
new file mode 100644
index 0000000000..6bac3c71d9
--- /dev/null
+++ b/docker/Dockerfile.gNB.fhi72.rhel9
@@ -0,0 +1,125 @@
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements. See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# * contact@openairinterface.org
+# */
+#---------------------------------------------------------------------
+#
+# Dockerfile for the Open-Air-Interface 7.2 Fronthaul
+# Valid for UBI9
+#
+#---------------------------------------------------------------------
+
+FROM ran-base:latest as gnb-base
+
+FROM ran-build-fhi72:latest as gnb-build
+
+#start from scratch for target executable
+FROM registry.access.redhat.com/ubi9/ubi:latest as oai-gnb-fhi72
+ENV TZ=Europe/Paris
+
+# Copy the entitlements
+COPY ./etc-pki-entitlement /etc/pki/entitlement
+
+RUN rm -f /etc/rhsm-host && \
+ subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms && \
+ dnf update -y && \
+ cat /etc/os-release && \
+ dnf install -y \
+ procps-ng \
+ libXpm \
+ libX11 \
+ lksctp-tools \
+ xz \
+ numactl-libs \
+ numactl-devel \
+ pkg-config \
+ pciutils \
+ tzdata \
+ gdb \
+ python3 \
+ python3-pip \
+ net-tools \
+ iputils && \
+ pip3 install six && \
+ pip3 install requests && \
+ echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
+ echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf && \
+ subscription-manager repos --disable codeready-builder-for-rhel-9-x86_64-rpms && \
+ rm -rf /etc/pki/entitlement
+
+WORKDIR /opt/oai-gnb/bin
+COPY --from=gnb-build \
+ /oai-ran/cmake_targets/ran_build/build/nr-softmodem ./
+COPY ./docker/scripts/gnb_entrypoint.sh ./entrypoint.sh
+
+COPY --from=gnb-build \
+ /oai-ran/cmake_targets/ran_build/build/librfsimulator.so \
+ /oai-ran/cmake_targets/ran_build/build/liboran_fhlib_5g.so \
+ /oai-ran/cmake_targets/ran_build/build/liboai_transpro.so \
+ /oai-ran/cmake_targets/ran_build/build/libcoding.so \
+ /oai-ran/cmake_targets/ran_build/build/libparams_libconfig.so \
+ /oai-ran/cmake_targets/ran_build/build/libdfts.so \
+ /oai-ran/cmake_targets/ran_build/build/libldpc*.so \
+ /oai-ran/cmake_targets/ran_build/build/libtelnetsrv.so \
+ /oai-ran/cmake_targets/ran_build/build/libtelnetsrv_ci.so \
+ /usr/local/lib/
+
+## Libxran library
+COPY --from=gnb-build \
+ /opt/phy/fhi_lib/lib/build/libxran.so \
+ /opt/phy/fhi_lib/lib/build/
+
+## Copy all DPDK libraries as liboran_fhlib_5g.so require most of them
+COPY --from=gnb-build /usr/local/lib64/ /usr/local/lib64/
+
+## Copy E2 SM models
+COPY --from=gnb-build /usr/local/lib64/flexric /usr/local/lib64/flexric
+
+# Copying file for configuration module
+COPY --from=gnb-base \
+ /lib64/libconfig.so.11 \
+ /lib64/libforms.so.2 \
+ /lib64/libblas.so.3 \
+ /lib64/libcblas.so.3 \
+ /lib64/liblapack.so.3 \
+ /lib64/liblapacke.so.3 \
+ /lib64/libicudata.so.67 \
+ /lib64/libicui18n.so.67 \
+ /lib64/libicuuc.so.67 \
+ /lib64/
+
+RUN ldconfig && \
+ echo "---- ldd on executable nr-softmodem ----" && \
+ ldd /opt/oai-gnb/bin/nr-softmodem && \
+ echo "---- ldd on shared libraries ----" && \
+ ldd /usr/local/lib/librfsimulator.so \
+ /usr/local/lib/liboran_fhlib_5g.so \
+ /usr/local/lib/liboai_transpro.so \
+ /usr/local/lib/libcoding.so \
+ /usr/local/lib/libparams_libconfig.so \
+ /usr/local/lib/libdfts.so \
+ /usr/local/lib/libldpc*.so \
+ /usr/local/lib/libtelnetsrv.so \
+ /usr/local/lib/libtelnetsrv_ci.so \
+ /opt/phy/fhi_lib/lib/build/libxran.so
+
+WORKDIR /opt/oai-gnb
+COPY --from=gnb-base /tini /tini
+ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"]
+CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
diff --git a/docker/Dockerfile.gNB.fhi72.ubuntu22 b/docker/Dockerfile.gNB.fhi72.ubuntu22
new file mode 100644
index 0000000000..5bb0ad5234
--- /dev/null
+++ b/docker/Dockerfile.gNB.fhi72.ubuntu22
@@ -0,0 +1,113 @@
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements. See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# * contact@openairinterface.org
+# */
+#---------------------------------------------------------------------
+#
+# Dockerfile for the Open-Air-Interface 7.2 Fronthaul
+# Valid for Ubuntu22.04
+#
+#---------------------------------------------------------------------
+
+FROM ran-base:latest as gnb-base
+
+FROM ran-build-fhi72:latest as gnb-build
+
+
+#start from scratch for target executable
+FROM ubuntu:jammy as oai-gnb
+ARG BUILD_OPTION
+ENV DEBIAN_FRONTEND=noninteractive
+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 \
+ pkg-config \
+ libsctp1 \
+ tzdata \
+ libblas3 \
+ libconfig9 \
+ openssl \
+ net-tools \
+ iperf \
+ iproute2 \
+ iputils-ping \
+ gdb \
+ pciutils \
+ libpcap-dev \
+ xz-utils \
+ libnuma-dev \
+ python3 \
+ python3-six \
+ python3-requests &&\
+# if the --sanitize option was used to build, additional packages are required
+ /bin/bash -c 'if [[ "$BUILD_OPTION" = "--sanitize" ]]; then DEBIAN_FRONTEND=noninteractive apt-get install --yes \
+ libasan5 \
+ libubsan1 \
+ liblapacke; fi' && \
+ rm -rf /var/lib/apt/lists/*
+
+WORKDIR /opt/oai-gnb/bin
+COPY --from=gnb-build \
+ /oai-ran/cmake_targets/ran_build/build/nr-softmodem ./
+COPY ./docker/scripts/gnb_entrypoint.sh ./entrypoint.sh
+
+COPY --from=gnb-build \
+ /oai-ran/cmake_targets/ran_build/build/librfsimulator.so \
+ /oai-ran/cmake_targets/ran_build/build/liboai_transpro.so \
+ /oai-ran/cmake_targets/ran_build/build/libcoding.so \
+ /oai-ran/cmake_targets/ran_build/build/libparams_libconfig.so \
+ /oai-ran/cmake_targets/ran_build/build/libdfts.so \
+ /oai-ran/cmake_targets/ran_build/build/libldpc*.so \
+ /oai-ran/cmake_targets/ran_build/build/libtelnetsrv.so \
+ /oai-ran/cmake_targets/ran_build/build/libtelnetsrv_ci.so \
+ /usr/local/lib/
+
+## Libxran library
+COPY --from=gnb-build \
+ /opt/phy/fhi_lib/lib/build/libxran.so \
+ /opt/phy/fhi_lib/lib/build/
+
+## Copy all DPDK libraries as liboran_fhlib_5g.so require most of them
+COPY --from=gnb-build /usr/local/lib/x86_64-linux-gnu /usr/local/lib/x86_64-linux-gnu/
+
+## Copy E2 SM models
+COPY --from=gnb-build /usr/local/lib/flexric /usr/local/lib/flexric
+
+RUN ldconfig && \
+ echo "---- ldd on nr-softmodem ----" && \
+ ldd /opt/oai-gnb/bin/nr-softmodem && \
+ echo "---- ldd on shared libraries ----" && \
+ ldd /usr/local/lib/librfsimulator.so \
+ /usr/local/lib/liboai_transpro.so \
+ /usr/local/lib/libcoding.so \
+ /usr/local/lib/libparams_libconfig.so \
+ /usr/local/lib/libdfts.so \
+ /usr/local/lib/libldpc*.so \
+ /usr/local/lib/libtelnetsrv.so \
+ /usr/local/lib/libtelnetsrv_ci.so \
+ /opt/phy/fhi_lib/lib/build/libxran.so
+
+WORKDIR /opt/oai-gnb
+COPY --from=gnb-base /tini /tini
+ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"]
+CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
diff --git a/docker/README.md b/docker/README.md
index 483a049f9d..7ec63aacae 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -33,29 +33,30 @@ For all platforms, the strategy for building docker/podman images is the same:
into which all targets are compiled.
* Then from the `ran-build` shared image, we can build target images for:
- eNB
- - gNB (with UHD)
- - gNB (with AW2S), only on RHEL9
+ - gNB/DU (with UHD)
+ - gNB/DU (with AW2S), only on RHEL9
- lte-UE
- nr-UE
-
+ - nr-cuup
These target images will only contain:
- the generated executable (for example `lte-softmodem`)
- the generated shared libraries (for example `liboai_usrpdevif.so`)
- the needed libraries and packages to run these generated binaries
- Some configuration file templates
- Some tools (such as `ping`, `ifconfig`)
+* From the `ran-build-fhi72` image, we can build target image for:
+ - gNB/DU (with FHI 7.2)
Note that on every push to develop (i.e., typically after integrating merge
requests), we build all images and push them to [Docker Hub](https://hub.docker.com/u/oaisoftwarealliance). To pull them, do
-```
+```bash
docker pull oaisoftwarealliance/oai-gnb:develop
docker pull oaisoftwarealliance/oai-nr-ue:develop
docker pull oaisoftwarealliance/oai-enb:develop
docker pull oaisoftwarealliance/oai-lte-ue:develop
```
-Have a look at [this README](../ci-scripts/yaml_files/5g_rfsimulator/README.md) to get some
-information on how to use the images.
+Have a look at [this README](../ci-scripts/yaml_files/5g_rfsimulator/README.md) to get some information on how to use the images.
# 2. File organization #
@@ -65,18 +66,20 @@ Targets can be:
- `base` for an image named `ran-base` (shared image)
- `build` for an image named `ran-build` (shared image)
+- `build.fhi72` for an image named `ran-build-fhi72`
- `eNB` for an image named `oai-enb`
- `gNB` for an image named `oai-gnb`
- `nr-cuup` for an image named `oai-nr-cuup`
- `gNB.aw2s` for an image named `oai-gnb-aw2s`
+- `gNB.fhi` for an image named `oai-gnb-fhi72`
- `lteUE` for an image named `oai-lte-ue`
- `nrUE` for an image named `oai-nr-ue`
The currently-supported OS are:
-- `rhel9` for Red Hat Entreprise Linux (including images for an OpenShift cluster)
+- `rhel9` for Red Hat Enterprise Linux and Openshift Universal Base Image
- `ubuntu22` for Ubuntu 22.04 LTS
-- `rocky` for Rocky-Linux 8.7
+- `rocky` for Rocky-Linux 9
For more details regarding the build on an Openshift Cluster, see [OpenShift README](../openshift/README.md).
@@ -95,25 +98,28 @@ There are two shared images: one that has all dependencies, and a second that co
```bash
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
cd openairinterface5g
-git checkout develop
+# default branch is develop, to change use git checkout
docker build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.ubuntu22 .
+# if you want use USRP, AW2S and RFSimulator radios
docker build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.ubuntu22 .
+# if you want to use front-haul 7.2 and RFSimulator radios
+docker build --tag ran-build-fhi72:latest --file docker/Dockerfile.build.fhi72.ubuntu22 .
```
-After building both:
+After building:
```bash
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ran-build latest f2633a7f5102 1 minute ago 6.81GB
ran-base latest 5c9c02a5b4a8 1 minute ago 2.4GB
-
+ran-build-fhi72 latest 5190c06dbb4d 1 minute ago 6.86GB
...
```
Note that the steps are identical for `rocky-linux`.
-### 3.2.1. Additional build otions
+### 3.2.1. Additional build options
This is only available for the Ubuntu version of Dockerfiles.
@@ -149,13 +155,18 @@ For example, the eNB:
docker build --target oai-enb --tag oai-enb:latest --file docker/Dockerfile.eNB.ubuntu22 .
```
+To build gNB/DU with 7.2 fronthaul support:
+
+```bash
+docker build --target oai-gnb-fhi72 --tag oai-gnb-fhi72:latest --file docker/Dockerfile.gNB.fhi72.ubuntu22 .
+```
+
After a while:
```
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
oai-enb latest 25ddbd8b7187 1 minute ago 516MB
- 875ea3b05b60 8 minutes ago 8.18GB
ran-build latest f2633a7f5102 1 hour ago 6.81GB
ran-base latest 5c9c02a5b4a8 1 hour ago 2.4GB
```
@@ -176,16 +187,33 @@ docker build --target oai-gnb --tag oai-gnb:latest --file docker/Dockerfile.gNB.
Normally the target image will be around 200 Mbytes bigger.
-# 4. Building using `podman` under Red Hat Entreprise Linux 8.2 #
+# 4. Building using `podman` under Red Hat Entreprise Linux 9.X #
Analogous to the above steps:
-```
-sudo podman build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.rhel9 .
-sudo podman build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.rhel9 .
-sudo podman build --target oai-enb --tag oai-enb:latest --file docker/Dockerfile.eNB.rhel9 .
+
+```bash
+podman build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.rhel9 .
+# if you want use USRP, AW2S and RFSimulator radios
+podman build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.rhel9 .
+# if you want to use front-haul 7.2 and RFSimulator radios
+podman build --tag ran-build-fhi72:latest --file docker/Dockerfile.build.fhi72.rhel9 .
```
-# 5. Running modems using `docker` under Ubuntu 18.04 #
+## 4.1 Building target images
+
+For example, the eNB:
+
+```bash
+podman build --target oai-enb --tag oai-gnb:latest --file docker/Dockerfile.eNB.rhel9 .
+```
+
+To build gNB/DU with 7.2 fronthaul support:
+
+```bash
+podman build --target oai-gnb-fhi72 --tag oai-gnb-fhi72:latest --file docker/Dockerfile.gNB.fhi72.rhel9 .
+```
+
+# 5. Running modems using `docker` under Ubuntu #
The easiest is to run them from a `docker-compose` file, which is used by the
CI to test OAI. Some folders under `ci-scripts/yaml_files` have a README that
@@ -200,55 +228,47 @@ file](../ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml).
It is also possible to mount your own configuration file. The following
docker-compose file can be used to start a gNB using a B210 and your own
config, located at `/tmp/gnb.conf`:
-```
-version: '3.8'
+```yaml
services:
gnb_mono_tdd:
image: oai-gnb:latest
- privileged: true
container_name: sa-b200-gnb
+ cap_drop:
+ - ALL
+ cap_add:
+ - SYS_NICE
+ - IPC_LOCK
+ ulimits:
+ core: -1 # for core dumps
environment:
USE_B2XX: 'yes'
- USE_ADDITIONAL_OPTIONS: --sa -E --continuous-tx
+ USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --telnetsrv --telnetsrv.shrmod ci --continuous-tx --log_config.global_log_options level,nocolor,time,line_num,function
+ devices:
+ - /dev/bus/usb/:/dev/bus/usb/
volumes:
- - /dev:/dev
- - /tmp/gnb.conf:/opt/oai-gnb/etc/gnb.conf
- networks:
- public_net:
- ipv4_address: 192.168.68.194
+ - ../../conf_files/gnb.sa.band78.51prb.usrpb200.conf:/opt/oai-gnb/etc/gnb.conf
+ # for performance reasons, we use host mode: in bridge mode, we have
+ # unacceptable DL TCP performance. However, the whole point of
+ # containerization is to not be in host mode, so update this to macvlan
+ # later.
+ network_mode: "host"
+ #entrypoint: /bin/bash -c "sleep infinity"
healthcheck:
# pgrep does NOT work
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
interval: 10s
timeout: 5s
retries: 5
-
-networks:
- public_net:
- name: sa-b200-gnb-net
- ipam:
- config:
- - subnet: 192.168.68.192/26
- driver_opts:
- com.docker.network.bridge.name: "sa-gnb-net"
```
You should also change the `image` to the right image name and tag of the gNB
you are using. Start like this:
-```
+```bash
docker-compose up # gNB in foreground
docker-compose up -d # gNB in background
```
Stop it like this (in both cases):
-```
+```bash
docker-compose down
```
-
-Note that in the above case, ALL devices are passed into the container (by
-mounting `/dev`), which allows the container to access all devices connected to
-the host!
-
-# 6. Running modems using `podman` under Red Hat Entreprise Linux 8.2 #
-
-TODO.
diff --git a/openshift/README.md b/openshift/README.md
index 9f0923bd60..5560621e68 100644
--- a/openshift/README.md
+++ b/openshift/README.md
@@ -27,36 +27,37 @@ the ran-build image. If you reinstalled dependencies, you have to restart from
ran-base.
You first need to login. Do:
+
```bash
oc login -u -p --server
```
-## RHEL8 Entitlements
+Create a project/namespace where you will create your images
-To build the RAN images, we use the `codeready-builder-for-rhel-8-x86_64-rpms` repository with all the proper development libraries.
-This repository is not directly accessible from the UBI RHEL8 image (`registry.access.redhat.com/ubi8/ubi:latest`).
-Therefore, we need to copy certificates and subscription manager configuration files from a registered RHEL8 machine.
+```bash
+oc new-project oaicicd-ran
+```
-on a `RHEL8` physical machine (or a virtual machine) connected to the OpenShift Cluster, recover the entitlement and the RH subscription manager configs:
+**NOTE**: If you change the project name then you have to change it in all the `yaml` files.
+
+## RHEL9 Entitlements
+
+To build the RAN images, we use the `codeready-builder-for-rhel-9-x86_64-rpms`
+repository with all the proper development libraries. To access the library you
+will need `etc-pki-entitlement` inside the container image.
+
+To import `etc-pki-entitlement` in your project follow this
+[guide](https://docs.openshift.com/container-platform/4.14/cicd/builds/running-entitled-builds.html#builds-source-secrets-entitlements_running-entitled-builds)
+
+In case you have difficulties in following it then you can copy the
+certificates from an RHEL9 host
```bash
oc create configmap rhsm-conf --from-file /etc/rhsm/rhsm.conf
oc create configmap rhsm-ca --from-file /etc/rhsm/ca/redhat-uep.pem
-
oc create secret generic etc-pki-entitlement --from-file /etc/pki/entitlement/{NUMBER_ON_YOUR_COMPUTER}.pem --from-file /etc/pki/entitlement/{NUMBER_ON_YOUR_COMPUTER}-key.pem
```
-These configmaps and secret will be shared by all the build configs in your OC
-project. No need to do it each time. However, these files expire every month
-or so. If you have done a build on your OC project and try again a few weeks
-later, you may need to re-copy them. (The CI recopies them every time.)
-
-```bash
-oc delete secret etc-pki-entitlement
-oc delete cm rhsm-conf
-oc delete cm rhsm-ca
-```
-
# 2. Build of `base` shared image
Create an image stream and build config that specify image properties and build parameters, then start the build:
diff --git a/openshift/oai-gnb-fhi72-bc.yaml b/openshift/oai-gnb-fhi72-bc.yaml
new file mode 100644
index 0000000000..2d8861e2d6
--- /dev/null
+++ b/openshift/oai-gnb-fhi72-bc.yaml
@@ -0,0 +1,48 @@
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements. See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# * contact@openairinterface.org
+# */
+#---------------------------------------------------------------------
+#
+kind: BuildConfig
+apiVersion: build.openshift.io/v1
+metadata:
+ name: "oai-gnb-fhi72"
+spec:
+ runPolicy: "Serial"
+ source:
+ type: "Binary"
+ secrets:
+ - secret:
+ name: etc-pki-entitlement
+ destinationDir: etc-pki-entitlement
+ configMaps:
+ - configMap:
+ name: rhsm-conf
+ destinationDir: rhsm-conf
+ - configMap:
+ name: rhsm-ca
+ destinationDir: rhsm-ca
+ strategy:
+ dockerStrategy:
+ dockerfilePath: "docker/Dockerfile.gNB.fhi72.rhel9"
+ output:
+ to:
+ kind: "ImageStreamTag"
+ name: "oai-gnb-fhi72:latest"
diff --git a/openshift/oai-gnb-fhi72-is.yaml b/openshift/oai-gnb-fhi72-is.yaml
new file mode 100644
index 0000000000..a012434295
--- /dev/null
+++ b/openshift/oai-gnb-fhi72-is.yaml
@@ -0,0 +1,30 @@
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements. See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# * contact@openairinterface.org
+# */
+#---------------------------------------------------------------------
+#
+apiVersion: image.openshift.io/v1
+kind: ImageStream
+metadata:
+ name: oai-gnb-fhi72
+ namespace: oaicicd-ran
+spec:
+ lookupPolicy:
+ local: true
diff --git a/openshift/ran-build-fhi72-bc.yaml b/openshift/ran-build-fhi72-bc.yaml
new file mode 100644
index 0000000000..35a7bd55b0
--- /dev/null
+++ b/openshift/ran-build-fhi72-bc.yaml
@@ -0,0 +1,39 @@
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements. See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# * contact@openairinterface.org
+# */
+#---------------------------------------------------------------------
+#
+kind: BuildConfig
+apiVersion: build.openshift.io/v1
+metadata:
+ name: "ran-build-fhi72"
+spec:
+ runPolicy: "Serial"
+ nodeSelector:
+ kubernetes.io/hostname: demophon
+ source:
+ type: "Binary"
+ strategy:
+ dockerStrategy:
+ dockerfilePath: "docker/Dockerfile.build.fhi72.rhel9"
+ output:
+ to:
+ kind: "ImageStreamTag"
+ name: "ran-build-fhi72:latest"
diff --git a/openshift/ran-build-fhi72-is.yaml b/openshift/ran-build-fhi72-is.yaml
new file mode 100644
index 0000000000..eb5f9bebf6
--- /dev/null
+++ b/openshift/ran-build-fhi72-is.yaml
@@ -0,0 +1,30 @@
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements. See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# * contact@openairinterface.org
+# */
+#---------------------------------------------------------------------
+#
+apiVersion: image.openshift.io/v1
+kind: ImageStream
+metadata:
+ name: ran-build-fhi72
+ namespace: oaicicd-ran
+spec:
+ lookupPolicy:
+ local: true