Compare commits

...

355 Commits

Author SHA1 Message Date
Robert Schmidt
f7c3874e20 Merge branch 'integration_2022_wk48' into 'develop'
integration_2022_wk48

See merge request oai/openairinterface5g!1845

!1781 Add 4G MBMS tests to RAN-Container-Parent
!1803 Improve dot_product function
!1836 Fix OPENAIR_DIR in CMakeLists.txt
!1840 PHR fix: re-compute TBS after reducing PRBs or MCS
!1841 Tpool: Unlock after broadcast in abortNotifiedFIFO()
!1843 NR DU: nr rrc: hotfix: set default priority correctly
!1763 Remove FlexRAN
!1789 SRB0 via RLC
!1834 cleanup of gNB PHY structures
!1844 RU: stop RF after all threads finished
!1811 NR UE improve TX thread
!1807 Harmonization of RRC SearchSpace configuration
!1819 ldpc offload: initialize R
2022-12-01 22:29:24 +00:00
Robert Schmidt
4dd1fbd891 Clean up MBMS config file 2022-12-01 20:43:15 +01:00
Robert Schmidt
47919c76dd Merge remote-tracking branch 'origin/bugfix-ldpc-T1-lowMCS' into integration_2022_wk48 2022-11-30 23:13:07 +01:00
laurent
96bde322a7 fix code quality 2022-11-30 16:29:48 +01:00
Robert Schmidt
7a254a20e1 Merge remote-tracking branch 'origin/searchspace_rrc_harmonization' into integration_2022_wk48 2022-11-30 14:39:09 +01:00
Robert Schmidt
daf30bd6de Merge remote-tracking branch 'origin/NR_UE_mthread_rework' into integration_2022_wk48 2022-11-30 14:39:03 +01:00
Robert Schmidt
c99a0557d4 Merge remote-tracking branch 'origin/fix-stop-rf-segfault' into integration_2022_wk48 2022-11-30 14:38:57 +01:00
Robert Schmidt
0171083748 Merge remote-tracking branch 'origin/NR_gNB_PHY_cleanup' into integration_2022_wk48 2022-11-30 14:38:51 +01:00
Robert Schmidt
cff0675eee Merge remote-tracking branch 'origin/srb0-use-rlc' into integration_2022_wk48 2022-11-30 14:38:45 +01:00
Robert Schmidt
d3ac2bf1fa Merge remote-tracking branch 'origin/remove-flexran' into integration_2022_wk48 2022-11-30 14:38:36 +01:00
Robert Schmidt
78399007a5 Merge remote-tracking branch 'origin/hotfix-drb-priority-cu-accelleran' into integration_2022_wk48 2022-11-30 14:37:14 +01:00
Robert Schmidt
b8c1a2953d Merge remote-tracking branch 'origin/tpool-abortfifo-fix' into integration_2022_wk48 2022-11-30 14:37:08 +01:00
Robert Schmidt
4d27c09032 Merge remote-tracking branch 'origin/NR_PHR_handling_resources_fix' into integration_2022_wk48 2022-11-30 14:37:02 +01:00
Robert Schmidt
bb27d67bc4 Merge remote-tracking branch 'origin/develop-fix-CMakeLists' into integration_2022_wk48 2022-11-30 14:36:56 +01:00
Robert Schmidt
21049fa179 Merge remote-tracking branch 'origin/better-dot_product' into integration_2022_wk48 2022-11-30 14:36:48 +01:00
Robert Schmidt
bb393cd52a MBMS is always activated 2022-11-30 14:30:38 +01:00
Robert Schmidt
287c182925 Remove FlexRAN
- Remove any FlexRAN code
- Cleanup config files
- Remove LFDS7, libyaml dependencies
2022-11-30 14:30:18 +01:00
Cedric Roux
3cd4b3c3fa fixes some issues found by review
- AssertFatal() in nr_rlc_srb0_recv_sdu() if the srb0 is not found
- do_RRCSetup() may return -1, handle it properly
- do_RRCReject() may return -1, handle it properly
- remove one switch in rrc_gNB_generate_RRCReject()
2022-11-29 15:22:46 +01:00
Robert Schmidt
24fceb43c2 Unlock mutex after condition signal in USRP driver 2022-11-29 14:14:19 +01:00
Robert Schmidt
968d28d5fe RU: stop RF after all threads finished
If we do not stop RF after all threads, it can happen that the RF is
finished, but another thread of the RU (e.g., reorder thread) tries to
send out a package to the RF. This can lead to a segfault, as observed
in UHD, because we free all resources before reusing them.

This commit fixes this behavior.
2022-11-29 14:12:26 +01:00
laurent
f47acc4955 fix warning 2022-11-28 11:30:41 -05:00
Sakthivel Velumani
b3092a45fd Added documentation for UE_thread design 2022-11-28 11:30:41 -05:00
Sakthivel Velumani
6d7afb014f Moved writing samples to RU inside TX function 2022-11-28 11:30:41 -05:00
Sakthivel Velumani
a01ade336f Start TX slot after receiving slot samples from RU 2022-11-28 11:30:36 -05:00
Cedric Roux
5d92e0d730 NR DU: nr rrc: hotfix: set default priority correctly
Using Accelleran CU, the DRB ID is 4 (not 1), we need to set and access
the array 'drb_priority' correctly in the DU specific functions.

Before this commit, we had the following error:
[NR_MAC]   ASN1 message CellGroupConfig encoding failed (rlc-BearerToAddModList, 18446744073709551615)!
2022-11-28 15:33:13 +01:00
Jaroslava Fiedlerova
c40d246fb0 ldpc offload: initialize R 2022-11-28 11:25:17 +01:00
laurent
d74b2bd19f improve dot_product function 2022-11-28 10:33:47 +01:00
francescomani
67544e83af re-compute TBS after reducing PRBs or MCS 2022-11-28 09:52:41 +01:00
Cedric Roux
231c2f3c5f gnb: remove srb0 shared global variable - use RLC module instead 2022-11-25 17:31:03 +01:00
Robert Schmidt
c8060da227 Tpool: Unlock after broadcast in abortNotifiedFIFO() 2022-11-25 16:53:53 +01:00
francescomani
3e2560297b harmonization of search space rrc configuration 2022-11-25 14:50:47 +01:00
Roberto Louro Magueta
22ac2d1dc1 Fix OPENAIR_DIR in CMakeLists.txt 2022-11-25 10:16:17 +00:00
Robert Schmidt
0f17e739ed Remove legacy pipeline 4G build results 2022-11-25 10:10:05 +01:00
Robert Schmidt
8742d00cbf Increase timeout for docker-compose log retrieval 2022-11-25 07:49:55 +01:00
Robert Schmidt
4ce7d17a35 IperfFromContainer: handle unidirectional iperfs
- Refactor iperf analysis into IperfAnalyze function
- IperfAnalyze uses server report, or uses last client report (for MBMS
  case)
- Additional check: duration as recognized in server/client report is
  according to command line
2022-11-25 07:49:55 +01:00
Robert Schmidt
d2a35f70c7 IperfFromContainer: Undeploy automatically on failure, like for Ping 2022-11-25 07:49:55 +01:00
Robert Schmidt
277786bc71 Report only 5G RFsim logs in legacy pipeline 2022-11-25 07:49:55 +01:00
Robert Schmidt
8ea5d720b8 Deactive legacy 4G RFsim pipeline 2022-11-25 07:49:55 +01:00
Robert Schmidt
0feaf87c4f Add Container 4G RFsim FeMBMS test XML 2022-11-25 07:49:55 +01:00
Robert Schmidt
ddd37527c7 Add docker-compose and config for FeMBMS test 2022-11-25 07:49:55 +01:00
Robert Schmidt
699b2ff411 Add Container 4G RFsim MBMS test XML 2022-11-25 07:49:55 +01:00
Robert Schmidt
086d0451a9 Add docker-compose and config for MBMS test 2022-11-25 07:49:55 +01:00
Robert Schmidt
7a6c212591 DeployGenObject(): log sed commands for used image 2022-11-25 07:49:55 +01:00
Robert Schmidt
232cebe6e0 UndeployGenObject(): log cmd 2022-11-25 07:49:55 +01:00
Robert Schmidt
8773e42363 Merge branch 'integration_2022_wk47' into 'develop'
integration_2022_wk47

See merge request oai/openairinterface5g!1832

!1824 NR msg4 retransmission fix
!1827 Print ASN1 messages to console only if DEBUG_ASN1 flag is enabled
!1794 Replace gaussdouble() by gaussZiggurat()
!1829 bugfix in SRS configuration
!1830 Fix infinite loop in ULSCH scheduler when scheduling for multiple UEs
!1821 Send RRCReconfiguration when RA with Msg3 through DCCH also when the UE is in the InitialBWP (review pending)
!1797 NR UE move ULSCH PHY memory to stack
!1792 NR SA Tutorials v5
!1826 Update docker documentation
!1825 Fixes to improve CI
2022-11-25 06:44:19 +00:00
Robert Schmidt
68de3b712a Check for 5G results in Jenkinsfile of legacy pipeline 2022-11-25 07:42:16 +01:00
Robert Schmidt
d745cd1f2b Merge remote-tracking branch 'origin/fixes-ci' into integration_2022_wk47 2022-11-24 19:58:30 +01:00
Robert Schmidt
da90e99723 Merge remote-tracking branch 'origin/doc-docker' into integration_2022_wk47 2022-11-24 19:58:19 +01:00
Robert Schmidt
7b4021cc12 Add instructions to run container with custom config 2022-11-24 10:15:31 +01:00
francescomani
5115f5c928 cleanup of unused gnb phy fields 2022-11-23 19:04:56 +01:00
Robert Schmidt
8835296fc6 Update README in top-level and docker folder 2022-11-23 18:12:16 +01:00
Robert Schmidt
e33f058f03 Merge remote-tracking branch 'origin/NR_SA_Tutorials_v5' into integration_2022_wk47 2022-11-23 16:30:38 +01:00
Robert Schmidt
06753f0a32 Merge remote-tracking branch 'origin/NR_UE_ulsch_local_vars' into integration_2022_wk47 2022-11-23 16:25:29 +01:00
Robert Schmidt
cb764590e8 Merge remote-tracking branch 'origin/Trigger_RRCReconfiguration_on_InitialBWP' into integration_2022_wk47 2022-11-23 16:25:22 +01:00
Robert Schmidt
fcfddc7e34 Merge remote-tracking branch 'origin/Fix_ulsch_scheduler_multi_ues' into integration_2022_wk47 2022-11-23 16:25:12 +01:00
Robert Schmidt
69e42bf418 Merge remote-tracking branch 'origin/NR_SRS_config_bugfix' into integration_2022_wk47 2022-11-23 16:18:25 +01:00
Robert Schmidt
5c864e075a Merge remote-tracking branch 'origin/develop-gaussZiggurat' into integration_2022_wk47 2022-11-23 16:18:01 +01:00
Robert Schmidt
a41415673d Merge remote-tracking branch 'origin/NR_RRC_xer_fprint_only_when_DEBUG_ASN1' into integration_2022_wk47 2022-11-23 16:17:48 +01:00
Robert Schmidt
1b468ba5a3 Merge remote-tracking branch 'origin/NR_msg4_retransmission_fix' into integration_2022_wk47 2022-11-23 16:17:32 +01:00
Sagar Arora
1201364490 Adding node selector for jobs 2022-11-23 13:15:14 +01:00
luis_pereira87
aebe83e45b Fix infinite loop in ULSCH scheduler when scheduling for multiple UEs 2022-11-22 21:09:18 +00:00
Sakthivel Velumani
3c8478f785 Moved PHY ULSCH struct to stack 2022-11-22 11:54:18 -05:00
francescomani
9bd08a1ddd bugfix in SRS configuration 2022-11-22 13:54:20 +01:00
luis_pereira87
0a40945ae0 Print ASN1 messages to console only if DEBUG_ASN1 flag is enabled 2022-11-21 18:14:29 +00:00
Robert Schmidt
1dc4542349 CI: Improve ASUE test gNB configuration 2022-11-21 16:25:00 +01:00
Robert Schmidt
24d42aacd6 Tune configs for N310-based SA test 2022-11-21 15:45:14 +01:00
Robert Schmidt
9604d54edf Increase precoding timing measure for N310-based gNB SA test 2022-11-21 14:30:25 +01:00
Robert Schmidt
bfcf115298 Tpool: use condbroadcast() in case multiple waits on the same signal 2022-11-21 13:47:41 +01:00
francescomani
e487c76260 fix msg4 failing retransmissions 2022-11-21 11:48:46 +01:00
Robert Schmidt
1576f353f3 CI: ran-build image on acamas
OC selected dedale, which is a real-time node. There are two issues:
- build jobs received a KILL signal
- it would not play nicely with real-time loads
We therefore hardcode another node.
2022-11-21 11:15:16 +01:00
francescomani
daf890932c avoid gnb stalling on retransmissions 2022-11-21 11:11:49 +01:00
Robert Schmidt
92e6b5e5be Merge branch 'integration_2022_wk46' into 'develop'
integration_2022_wk46

See merge request oai/openairinterface5g!1822

!1782 NR UE improve RA procedures (pt.1)
!1801 fix in NR PUCCH scheduler when the list is larger than a frame
!1802 workaround issue of N310 with UHD >= 4.2.0 when changing the BW
!1804 Fix for NR MSG4 scheduler
!1805 Pucch2 hotfix
!1808 fix NFAPI_MAX_NUM_UL_PDU according to SCF specifications
!1810 F1 fixes for interoperability with Accelleran CU
!1786 removing PRB at DC to avoid wrong noise level computation for PUSCH
!1813 Fix broken multiple DRBs
!1816 NR ULSCH/DLSCH scheduler fixes
!1660 Add SA test with COTS UE and F1 split
!1795 feat(ci): transition the Slack notification from old pipeline to container-based pipeline
2022-11-20 20:38:46 +00:00
Sagar Arora
8e14982525 Containers should keep running to copy autotests logs 2022-11-18 16:35:24 +01:00
Robert Schmidt
3da7dafd32 Merge remote-tracking branch 'origin/ci-slack-notifications-transition' into integration_2022_wk46 2022-11-18 16:20:36 +01:00
Robert Schmidt
d0edbd7bc0 Merge remote-tracking branch 'origin/ci-ran-sa-tests' into integration_2022_wk46 2022-11-18 16:20:31 +01:00
Robert Schmidt
39cf6006d8 Merge remote-tracking branch 'origin/NR_ULSCH_scheduler_fixes' into integration_2022_wk46 2022-11-18 16:20:24 +01:00
Robert Schmidt
03640f23d0 Merge remote-tracking branch 'origin/fix_multiple_drbs' into integration_2022_wk46 2022-11-18 16:20:15 +01:00
Robert Schmidt
2b7aacd32e Merge remote-tracking branch 'origin/NR_PUSCH_noise_workaround' into integration_2022_wk46 2022-11-18 16:18:23 +01:00
Luis Pereira
2e2246f946 Fix tx Msg.4 after rx Msg.3 through DCCH/DTCH 2022-11-18 16:16:05 +01:00
Raphael Defosseux
e396af8349 fix(ci): proxy push does not follow the same pattern
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-11-18 16:08:47 +01:00
Raphael Defosseux
665b5baeed feat(ci): transition the Slack notification from old pipeline to container-based pipeline.
* Also added a parameter for the registry push pipeline.
   Valid mainly when triggering manually the pipeline when run on develop fails.
 * Nicer message2 construction

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-11-18 16:08:23 +01:00
KARIM BOUTIBA
e469278b0a Fix ASN.1 encoding for multiple DRBs 2022-11-18 15:45:17 +01:00
Sagar Arora
d363a3fb1d Fixing cls_physim
- Un deployment of helm charts at some places
- Added check for completed pods
2022-11-18 10:47:24 +01:00
Robert Schmidt
59c4bb86d8 Check retransmissions for SA F1 test 2022-11-18 09:39:37 +01:00
Robert Schmidt
cb8408e7ff AnalyzeLogFile_eNB: eNBlogFile will implicitly be in current directory 2022-11-18 09:39:23 +01:00
Robert Schmidt
375776d891 Bugfix: retransmission can be up to 100% 2022-11-18 09:31:21 +01:00
Robert Schmidt
ec4632590a Merge remote-tracking branch 'origin/f1-interop-fixes' into integration_2022_wk46 2022-11-17 18:32:30 +01:00
Robert Schmidt
5c11306d76 Merge remote-tracking branch 'origin/fix_fapi_max_ul_pdus' into integration_2022_wk46 2022-11-17 18:32:25 +01:00
Robert Schmidt
ceaacbd60d Merge remote-tracking branch 'origin/pucch2-hotfix' into integration_2022_wk46 2022-11-17 18:32:17 +01:00
Robert Schmidt
99a7a7a747 Merge remote-tracking branch 'origin/fix_NR_msg4_scheduler' into integration_2022_wk46 2022-11-17 18:32:11 +01:00
Robert Schmidt
c0392a8496 Merge remote-tracking branch 'origin/n310_uhd_workaround' into integration_2022_wk46 2022-11-17 18:32:04 +01:00
Robert Schmidt
cbc98579d6 Merge remote-tracking branch 'origin/fix_NR_PUCCH_scheduler' into integration_2022_wk46 2022-11-17 18:31:56 +01:00
Robert Schmidt
f54f1fd61d Merge remote-tracking branch 'origin/NR_UE_improve_RA' into integration_2022_wk46 2022-11-17 18:31:45 +01:00
luis_pereira87
818ca5cfaa Tutorials: upgrade to Ubuntu 22.04, UHD 4.3.0.0, docker-compose v2.12.2 and add more DNNs to docker-compose to avoid duplicated (default) values when parsing the file 2022-11-17 17:18:57 +00:00
Sagar Arora
f8d56cb428 Fixing the chart repository 2022-11-17 18:14:43 +01:00
francescomani
920c866e42 fix for msg4 scheduler in case vrb map for selected slot is occupied 2022-11-17 18:10:36 +01:00
francescomani
623d0e362d further fixes in ulsch (and dlsch) scheduler 2022-11-17 18:01:50 +01:00
luis_pereira87
8a37a2dadb Send RRCReconfiguration when RA with Msg3 through DCCH also when the UE is in the InitialBWP
This commit re-enables SRS when Msg3 through DCCH in InitialBWP that seems to be disabled after the RA (the same behaviour for other configurations may happen, so it is safer to send always the RRCReconfiguration when we have this RA).
2022-11-17 16:02:59 +00:00
Sagar Arora
c1f685dc46 remove unused files and fix typos 2022-11-17 16:39:30 +01:00
Sagar Arora
f44a210d8a Clean the helm-charts and fix cls_physim
- added right pod selector in cls_physim
2022-11-17 14:26:46 +01:00
Robert Schmidt
4591eac556 extend comment on issue with USRP N310 and UHD >= 4.2.0 2022-11-16 09:22:32 +00:00
francescomani
22617b21d4 fixes for 2 bugs in the ULSCH scheduler 2022-11-15 09:32:05 +01:00
luis_pereira87
991de3623a Tutorials: Change PLMN to the 3GPP Test Network 2022-11-14 11:06:02 +00:00
luis_pereira87
a398c5a9f4 Tutorials: add instructions to run OAI UE with B210 and RFsimulator 2022-11-14 10:49:15 +00:00
luis_pereira87
7a664c00fd Tutorials: improvements on "Advanced configurations" section 2022-11-14 10:49:15 +00:00
Thomas Schlichter
9eb1d24504 fix size of arrays n0_subband_power and n0_subband_power_dB 2022-11-11 10:50:09 +01:00
Thomas Schlichter
b257959dd4 fix display of UL signal energy and PUCCH signal energy 2022-11-11 10:48:16 +01:00
Thomas Schlichter
5aa75cb689 fix noise calculation also for odd number of PRBs 2022-11-11 10:43:25 +01:00
Sagar Arora
ff738b7bf9 (fix): Remove sudo privilege from helm-charts
- Change security context to anyuid
- Changed from deployment to job, now the pods will be in completed
2022-11-10 11:20:54 +01:00
laurent
1336a41024 add time measurement in phy sim CI test 2022-11-09 18:58:09 +00:00
laurent
5ee6cf5de7 change the logic in cmake_targets/autotests/run_exec_autotests.bash to run all runs of same test in // 2022-11-09 18:58:09 +00:00
laurent
6ceaf084bc remove usage of /dev/random in case openshit has a problem with this
remove usage of /dev/random in case openshit has a problem with this
2022-11-09 18:58:09 +00:00
laurent
2d46638aa1 fix cpu cost in phy simulation with sanitize addr, some code un-obfuscation 2022-11-09 18:58:09 +00:00
laurent
d9660677c4 start snr closer to the target for nr pbchsim 2022-11-09 18:58:09 +00:00
Roberto Louro Magueta
255ad24410 Replace gaussdouble() by gaussZiggurat() in random_channel() and add_noise() 2022-11-09 18:58:09 +00:00
Cedric Roux
7853673db7 f1 du: little hackish fix to get correct drb
I have a more complex fix that I'll put in a later merge request. That does
the job for the time being.
2022-11-09 17:00:11 +01:00
Cedric Roux
df45820f71 f1 du: get IP address for UL UP GTP tunnel from the right place 2022-11-09 15:43:22 +01:00
Cedric Roux
d2f456e089 bugfix: call nr_rlc_get_available_tx_space() with lcid, not rb id 2022-11-09 15:42:50 +01:00
francescomani
6e789bc275 update NFAPI_MAX_NUM_UL_PDU according to SCF specifications 2022-11-09 15:27:59 +01:00
Cedric Roux
d4356efc70 f1 du: get list of sst/sd from configuration file
may not be the best place to get data from conf file, to be refined later
if needed
2022-11-09 12:40:41 +01:00
Robert Schmidt
0cacf29dbb Merge branch 'integration_2022_wk44' into 'develop'
integration_2022_wk44

See merge request oai/openairinterface5g!1800

!1745 Configurable re-transmission rounds in dlsim and ulsim
!1699 NR RRC pdsch_Config harmonization
!1787 Bugfix in Delta_TF calculation for PHR
!1790 remove unused NR RRC code
!1774 Fix BWP switching to the previous active BWP when there is a RA with Msg3 through DCCH or DTCH
!1772 Add RRC measurement configuration and handling
!1731 replacing call to RRC processing timers for msg3 dcch
!1764 NR_UE: improve timing and initial frequency synchronization
!1777 NR UE move DLSCH PHY memory to stack
!1791 missed to test return code of bind()
2022-11-09 05:40:27 +00:00
francescomani
821e3ad5ce set random payload for pucchsim 2022-11-08 11:25:41 +01:00
Thomas Schlichter
0e520e9456 fix in NR PUCCH scheduler when the list is larger than a frame
based on a patch from Francesco Mani <email@francescomani.it>
2022-11-07 15:33:20 +01:00
Raymond Knopp
bf370cc55d fixed correlation computation in pucch_rx.c 2022-11-05 21:54:23 +01:00
Raymond Knopp
96622f6b80 debugging of pucch2, logging 2022-11-05 13:56:53 +01:00
Thomas Schlichter
21721e967b workaround issue of N310 with UHD >= 4.2.0 when changing the BW
UHD issue was reported here:
https://github.com/EttusResearch/uhd/issues/644
2022-11-04 18:18:35 +01:00
francescomani
159c9b6e4b bugfix in ulsim 2022-11-04 12:37:01 +01:00
Robert Schmidt
5f15662444 Merge remote-tracking branch 'origin/rfsim-bug-multi-listners' into integration_2022_wk44 2022-11-04 11:03:33 +01:00
Robert Schmidt
6b80da0baa Merge remote-tracking branch 'origin/NR_UE_dlsch_local_var' into integration_2022_wk44 2022-11-04 11:00:41 +01:00
Robert Schmidt
408a1c01d7 Merge remote-tracking branch 'origin/NR_RRC_config_cleanup' into integration_2022_wk44 2022-11-04 11:00:12 +01:00
Robert Schmidt
e5eabe203e Merge remote-tracking branch 'origin/NR_DeltaTF_hotfix' into integration_2022_wk44 2022-11-04 10:59:55 +01:00
Robert Schmidt
b89daf68b7 Merge remote-tracking branch 'origin/Fix_BWP_switching_when_Msg3_DCCH' into integration_2022_wk44 2022-11-04 10:59:50 +01:00
Robert Schmidt
bacce39af7 Merge remote-tracking branch 'origin/rrc-meas' into integration_2022_wk44 2022-11-04 10:57:37 +01:00
Robert Schmidt
3e0efbdeb2 Merge remote-tracking branch 'origin/nr_ue_improve_time_and_freq_sync' into integration_2022_wk44 2022-11-04 10:55:56 +01:00
Arash Sahbafard
ec25c623d1 Fix: check RFsim bind() return code 2022-11-04 09:26:46 +01:00
Sakthivel Velumani
662897e0c5 Remove mlock
Modern hardware have large RAM and don't need mlock.
2022-11-03 16:27:25 -04:00
Robert Schmidt
00106a7ec8 Merge remote-tracking branch 'origin/configurable_rounds_in_sim' into integration_2022_wk44 2022-11-03 20:10:00 +01:00
Robert Schmidt
e9126363ea Merge remote-tracking branch 'origin/removing_calltotimers_for_msg3_dcch_dtch' into integration_2022_wk44 2022-11-03 20:09:51 +01:00
Robert Schmidt
4214f3971d Merge remote-tracking branch 'origin/NR_RRC_PDSCH_config_harmonization' into integration_2022_wk44 2022-11-03 20:09:43 +01:00
francescomani
4e80dc4a20 move PL comutation at MAC 2022-11-03 17:56:20 +01:00
Robert Schmidt
1c73dec53f Update FEATURE_SET.md 2022-11-03 17:19:22 +01:00
Robert Schmidt
1ae1b0aa9f Print RRC meas periodically 2022-11-03 17:19:22 +01:00
Robert Schmidt
6762342d25 Add periodic RRC measurements 2022-11-03 17:19:22 +01:00
Robert Schmidt
1c778ef382 Refactor and enable logging in nrRRC_stats.log 2022-11-03 17:18:57 +01:00
francescomani
a962ba8d5b replacing call to RRC processing timers for msg3 dcch 2022-11-03 13:55:07 +01:00
Thomas Schlichter
5063957a16 fix merge artefact in nr_dl_channel_estimation.c 2022-11-03 09:43:03 +01:00
Thomas Schlichter
c5e68e146c NR_UE: increase the accuracy of the filtered peak position value 2022-11-03 09:42:57 +01:00
Thomas Schlichter
39fe985681 NR_UE: slightly improve timing synchronization by minimizing the adjustment of the filtered peak position value 2022-11-03 09:42:47 +01:00
Thomas Schlichter
a7d9f94ef3 NR_UE scope: show complete CIR 2022-11-03 09:42:41 +01:00
Thomas Schlichter
cd8122d24d NR_UE: fix frequency offset estimation/compensation if SSB is in the second captured frame 2022-11-03 09:42:27 +01:00
Thomas Schlichter
f73fcd94ee NR_UE: fix/add some debugging in nr_adjust_synch_ue.c and nr_dl_channel_estimation.c 2022-11-03 09:41:51 +01:00
Thomas Schlichter
a2c6ad42e4 NR_UE: minor improvements in nr_initial_sync() 2022-11-03 09:41:14 +01:00
Thomas Schlichter
b94d6b5b33 remove unsupported "thread_pool_size" parameter from conf files 2022-11-03 09:37:41 +01:00
Thomas Schlichter
9ae6095a78 nr_ulsim: fix calculation of statistics 2022-11-03 09:37:28 +01:00
Thomas Schlichter
54b7fde0aa NR_UE: fix noise in PDCCH scope 2022-11-03 09:31:57 +01:00
Sakthivel Velumani
ea72306c38 Moved DLSCH PHY structure to stack 2022-10-31 18:22:27 -04:00
francescomani
3cd342f74a remove unused RRC code 2022-10-31 10:42:37 +01:00
francescomani
847044a5a6 fix bad merge 2022-10-31 09:48:45 +01:00
luis_pereira87
dbb6182124 Fix BWP switching to the previous active BWP when there is a RA with Msg3 through DCCH or DTCH 2022-10-30 09:38:56 +00:00
francescomani
1304a682fc fix usage of FAPI new data indicator for PUSCH 2022-10-29 14:29:35 +02:00
francescomani
c2e80ffe9f ndi init fix 2022-10-29 14:29:35 +02:00
francescomani
254491481f addressing review and correcting indentation 2022-10-29 14:29:35 +02:00
francescomani
3a8db593d9 removing unnecessary code for re-transmission in ulsch decoding 2022-10-29 14:25:05 +02:00
francescomani
c3d863a6e5 configurable max nb of rounds in dlsim 2022-10-29 14:25:05 +02:00
francescomani
4c21c2d172 configurable max nb of rounds in ulsim 2022-10-29 14:25:05 +02:00
francescomani
3b53d82b26 avoiding to use tx_lev since it was breaking prachsim (also some formatting) 2022-10-29 14:16:12 +02:00
francescomani
21b14dddb4 removing unused code in dummy functions 2022-10-29 14:16:12 +02:00
francescomani
c07cbce037 better handling of PRACH TX power to improve separation between PHY and MAC 2022-10-29 14:16:12 +02:00
francescomani
c9553fe696 moving prach_resources to MAC 2022-10-29 14:16:12 +02:00
francescomani
e0cdf278b5 remove init_msg1 and sync_frame from prach structure 2022-10-29 14:02:23 +02:00
Robert Schmidt
a50a14a9aa CI: Collect all *.log 2022-10-29 12:48:55 +02:00
Robert Schmidt
3ae26431eb Do not require "Bye." to be in last line 2022-10-29 12:48:55 +02:00
Robert Schmidt
e17575f52a SA test monolithic: no timing measurements 2022-10-29 12:48:55 +02:00
Robert Schmidt
68f8914868 Add iperf for Quectel 20MHz SA test 2022-10-29 12:48:55 +02:00
Robert Schmidt
a40baf6957 Add scenario XML for SA F1 with Quectel 2022-10-29 12:48:55 +02:00
Robert Schmidt
3f32164e2c Add docker-compose for SA F1 test with Quectel 2022-10-29 12:48:55 +02:00
Robert Schmidt
c985210668 Update SA b200 Quectel config to 20 MHz 2022-10-29 12:48:55 +02:00
Robert Schmidt
4bc8ef3f80 Make service configurable in DeployObject, UndeployObject stops multiple
Service name can be used to start individual services. Uses only
docker-compose primitives, which can later be used to use the
docker-compose SSH functionality to (un)deploy services.

UndeployObject stops all referenced services
2022-10-29 12:48:55 +02:00
Robert Schmidt
a5e21fd082 Correct env var for DU in entrypoint 2022-10-29 12:45:49 +02:00
Robert Schmidt
b29f0af4b3 Harmonize SA gNB B200 and DU config (used for B200 and RFsim) 2022-10-29 12:45:49 +02:00
Robert Schmidt
408d96adbd Generally disable 256 QAM for F1 2022-10-29 12:45:49 +02:00
Robert Schmidt
10bdf3a2e3 Shorten Tab name 2022-10-29 12:45:49 +02:00
Robert Schmidt
3856a00215 SA Quectel test: tear-down on correct server in case of problems 2022-10-29 12:45:49 +02:00
Robert Schmidt
4940146ff8 Merge branch 'integration_2022_wk43' into 'develop'
integration_2022_wk43

See merge request oai/openairinterface5g!1783

!1679 NR MAC PUCCH rework
!1723 Disabling dualConnectivityPHR
!1759 cleanup NR UE dead code
!1767 Fixes in CSI UE reception and reporting
!1775 Generate SRS sequence for every received SRS signal
!1776 SIMDE fix: Native AVX intrinsic call as macro
!1778 CI: Log pod build statistics
!1779 Tutorials: minor updates and improvements
!1780 feat(ci): migrating all LTE monolithic scenarios w/ docker approach
!1686 TDLA30, TDLB100 and TDLC300 channel models
!1769 PDU decoding workaround when there are issues in UL TB payload
!1753 numactl and thread-pinning in CI
!1784 PSEA - SABOX - fix apn issue
2022-10-29 10:36:11 +00:00
francescomani
f3aac37427 bugfix in delta_tf calculation 2022-10-28 19:01:59 +02:00
Robert Schmidt
7082fcfad3 Merge remote-tracking branch 'origin/psea-sabox-fix-apn' into integration_2022_wk43 2022-10-28 18:15:14 +02:00
Robert Schmidt
4b517de17f Merge remote-tracking branch 'origin/phytest-numactl' into integration_2022_wk43 2022-10-28 18:15:10 +02:00
Robert Schmidt
b5952593ac Merge remote-tracking branch 'origin/gNB_MAC_PDU_decoding_improvements' into integration_2022_wk43 2022-10-28 18:15:06 +02:00
Angelo Athanassopoulos
07abf4329d PSEA - IEI DNN - This is the last IEI in the message.
Before this commit each time the message was captured, it entered the
default switch statement, which is meant to show that  we received an
uknown IEI.

Now after the DNN IEI, we set offset=msg_length, to exit the
switch.
2022-10-28 13:54:13 +02:00
Angelo Athanassopoulos
43f3d03ddb PSEA - IEI DNN - protect code from a bad DNN length received from the network 2022-10-28 13:24:25 +02:00
Angelo Athanassopoulos
8e4ebb078a PSEA - IEI DNN - added macro for min DNN length 2022-10-28 12:55:58 +02:00
Robert Schmidt
31df643909 Add new 60 MHz 2x2 timing stats file 2022-10-28 11:41:42 +02:00
Robert Schmidt
dff94f6b32 Update 1x1 40 and 60 MHz thresholds 2022-10-28 11:41:18 +02:00
Robert Schmidt
27f2bd454e SA N310 test: pin threads, use numactl 2022-10-28 09:31:23 +02:00
Robert Schmidt
49d9d0443b Add new phytest test stage for 60MHz 2x2 2022-10-28 09:31:23 +02:00
Robert Schmidt
ec7e09353f Add numactl for phytest-timing test 2022-10-28 09:31:23 +02:00
Robert Schmidt
40159bdf4d Define cmd_prefix for Initialize_eNB 2022-10-28 09:31:23 +02:00
Robert Schmidt
058c6a4f26 Add Config file for 162PRB phytest 2022-10-28 09:31:23 +02:00
Robert Schmidt
978753d6ac Delete unused 162PRB XML test stages file 2022-10-28 09:23:12 +02:00
Angelo Athanassopoulos
d91cfdc6cf PSEA - Remove of unused ASCII macro definition 2022-10-27 20:05:16 +02:00
Angelo Athanassopoulos
dbd00175a7 PSEA - SABOX fix - Avoid the infinite loop, when not receiving an APN Operator Identifier 2022-10-27 20:01:08 +02:00
Robert Schmidt
01ef8c2f84 Merge remote-tracking branch 'origin/develop-channel-models' into integration_2022_wk43 2022-10-27 18:53:32 +02:00
Robert Schmidt
dd1d80bdc8 Merge remote-tracking branch 'origin/ci-legacy-monolithic' into integration_2022_wk43 2022-10-27 18:53:08 +02:00
Angelo Athanassopoulos
bef72dd747 PSEA - SABOX fix - changed the max accumulated apn length 2022-10-27 18:53:01 +02:00
Robert Schmidt
536bf6affd Merge remote-tracking branch 'origin/NR_SA_Tutorials_v4' into integration_2022_wk43 2022-10-27 18:53:00 +02:00
Robert Schmidt
92178e3e61 Merge remote-tracking branch 'origin/ci-analysis-cluster' into integration_2022_wk43 2022-10-27 18:52:54 +02:00
Robert Schmidt
ae592943d2 Merge remote-tracking branch 'origin/SIMDE_fix_no_optim' into integration_2022_wk43 2022-10-27 18:52:30 +02:00
Robert Schmidt
4f7b2db2f2 Merge remote-tracking branch 'origin/BWP_switching-fix-SRS' into integration_2022_wk43 2022-10-27 18:51:59 +02:00
Robert Schmidt
f3397d0c9b Merge remote-tracking branch 'origin/NR_CSI_UE_fixes' into integration_2022_wk43 2022-10-27 18:51:14 +02:00
Robert Schmidt
652df48a99 Merge remote-tracking branch 'origin/NR_UE_deadcode_cleanup' into integration_2022_wk43 2022-10-27 18:51:03 +02:00
Robert Schmidt
2706b4ff2e Merge remote-tracking branch 'origin/disabling_dualconnectivity_PHR' into integration_2022_wk43 2022-10-27 18:50:54 +02:00
Robert Schmidt
ebd622ac3c Merge remote-tracking branch 'origin/NR_MAC_PUCCH_rework' into integration_2022_wk43 2022-10-27 18:50:46 +02:00
francescomani
3b0cad7bb5 removing middle PRB to avoid wrong noise level computation for PUSCH 2022-10-27 18:48:57 +02:00
Robert Schmidt
f4982ca060 Retrieving pod statistics at the end of physim run 2022-10-27 18:41:34 +02:00
luis_pereira87
559670fd85 Add UL 3GPP tests in CI 2022-10-27 17:23:26 +01:00
Roberto Louro Magueta
d388be80c0 Compute log2_maxh for UL channel estimation using nb_antennas_rx 2022-10-27 17:23:26 +01:00
Roberto Louro Magueta
6b83d9e0f1 Compute normalization channel factor 2022-10-27 17:18:38 +01:00
Roberto Louro Magueta
9b594ff3b6 Fix AWGN channel 2022-10-27 17:18:38 +01:00
Roberto Louro Magueta
abb6fadd19 Implementation of function add_noise() 2022-10-27 17:18:38 +01:00
Roberto Louro Magueta
f8160bd34a Change input command line from -g 2 A l to -g A,l and add channel correlation level as command line option in ulsim 2022-10-27 17:18:38 +01:00
Roberto Louro Magueta
6f51b930c1 Put the correlation level (low, medium or high) as input of new_channel_desc_scm() 2022-10-27 17:07:25 +01:00
Roberto Louro Magueta
3d966b09e8 TDL channel model implementation for low, medium and high correlation scenarios 2022-10-27 17:07:25 +01:00
Roberto Louro Magueta
ac39d3b48c Remove the hardcoded channel matrix H_awgn_mimo from nr_ulsim 2022-10-27 16:54:59 +01:00
Roberto Louro Magueta
c3a51d771c Implementation of tables G.2.1.1-2, G.2.1.1-3 and G.2.1.1-4 of TS 38.104, for TDLA30, TDLB100 and TDLC300 channel models 2022-10-27 16:54:59 +01:00
Roberto Louro Magueta
c14b39b07f Add TDLA30, TDLB100 and TDLC300 in channel model options and improve the help log 2022-10-27 16:54:59 +01:00
francescomani
3247cdd0c3 addressing review 2022-10-27 12:52:10 +02:00
Raphael Defosseux
3e5deb4385 fix(ci): after code review
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-27 12:29:34 +02:00
Raphael Defosseux
187b3915b2 fix(ci): little typos in the scenario HTML tab references
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-27 09:33:47 +02:00
Raphael Defosseux
4bf6ce323e fix(ci): when running the bare-metal pipelines, some files are already on the target side with root ownership. Copy is bypassed
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-27 09:33:01 +02:00
Raphael Defosseux
f3594a663a fix(ci): fixing log collection for xNB run logs and iper operations
* Copying everything back to the python executor workspace
    * For iperf operations, client and server logs are always copied,
      even when successful
    * for xNB run logs, since we could delete completely xNB workspaces
      on the python executor, they are always there
  * Copying back to the xNB server #0 for artifacting

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-26 21:35:18 +02:00
Raphael Defosseux
c447b814c2 feat(ci): triggering LTE Monolithic pipelines
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-26 20:59:19 +02:00
Sagar Arora
decaec0860 (fix): typo in collecting pod resource metrics 2022-10-26 10:27:49 +02:00
Raphael Defosseux
cab10e857e fix(ci): should not return an error
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-25 16:50:34 +02:00
Raphael Defosseux
f8c82e69b9 feat(ci): migrating all LTE monolithic scenarios w/ docker approach
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-25 15:49:42 +02:00
luis_pereira87
c64c3e6182 Tutorials: minor updates and improvements 2022-10-25 14:33:04 +01:00
Sagar Arora
1ed52cb4d2 Changing the cluster node name 2022-10-25 14:09:51 +02:00
Robert Schmidt
2f28b5795f Collect cluster pod metrics during build 2022-10-24 17:23:24 +02:00
francescomani
0df6dfba94 fixing the new PUCCH procedures 2022-10-24 16:30:21 +02:00
Robert Schmidt
a3aead9d9f Assign ran-build and oai-physim build jobs to different nodes 2022-10-24 15:16:29 +02:00
Robert Schmidt
55d13bd19a Log pod build statistics 2022-10-24 12:37:38 +02:00
Sakthivel Velumani
d18813b867 Native AVX intrensic call as macro 2022-10-21 18:47:58 -04:00
Raphael Defosseux
5324e0c18a fix(ci): since we removed images from builder server, we need to pull them back before pushing to Docker-Hub
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-21 18:54:30 +02:00
Raphael Defosseux
3059ad4ebd fix(ci): fix running simulators
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-21 16:22:23 +02:00
francescomani
99a22ba9ed pdsch_Config harmonization 2022-10-21 16:11:57 +02:00
Robert Schmidt
a0fae95c79 Merge branch 'integration_2022_wk42b' into 'develop'
integration_2022_wk42b

See merge request oai/openairinterface5g!1773

MR !1479 [CI] Update for retransmission checkers
MR !1733 pusch_Config harmonization
MR !1748 Fixes for build on centos 7/8, SIMDE, auto-detect AVX2/512 and architecture
MR !1756 feat(ci): adding push / pull images operations to/from a local registry
MR !1760 Add time stamp in the logs
MR !1761 Merge targets/COMMON to executables
MR !1771 Draft: Remove CN_UTIL
MR !1770 (fix): removing the amf fqdn paramter
MR !1768 Rename radio folder
MR !1766 NR UE fix rxdata allocation
MR !1720 NR MIMO 2x2 Support Hooks in L2simulator
2022-10-21 13:09:39 +00:00
Robert Schmidt
925563ba97 Additional removal of '#' in amarisoft prompt 2022-10-21 10:55:04 +02:00
Roberto Louro Magueta
408e7abd2f Generate SRS sequence for every received SRS signal 2022-10-20 14:39:17 +01:00
Robert Schmidt
1acb719b5e Change CI SSHConnection class open() and Amarisoft UE class prompt
The Amarisoft root prompt contained '#' (as usual for root). However, to
integrate this into the UE management logic (cls_module_ue.py), we are
forced to use '$'. We changed the root command prompt to use '$', and
therefore change it here as well.
2022-10-20 15:02:18 +02:00
Robert Schmidt
b9db3044fb Merge remote-tracking branch 'origin/episys-5g-mimo' into integration_2022_wk42b 2022-10-20 15:00:32 +02:00
Robert Schmidt
b1352c9d00 Merge remote-tracking branch 'origin/NR_UE_fix_rxdata' into integration_2022_wk42b 2022-10-20 15:00:25 +02:00
Robert Schmidt
79857ec8e6 Merge remote-tracking branch 'origin/rename_sdr_radio' into integration_2022_wk42b 2022-10-20 15:00:12 +02:00
Robert Schmidt
8a290ece2a Merge remote-tracking branch 'origin/resolve_fqdn' into integration_2022_wk42b 2022-10-20 14:57:52 +02:00
Robert Schmidt
c36a1ef453 Merge remote-tracking branch 'origin/rm_CN_UTILS' into integration_2022_wk42b 2022-10-20 14:57:41 +02:00
Robert Schmidt
b3d4321d77 Merge remote-tracking branch 'origin/common_to_executables' into integration_2022_wk42b 2022-10-20 14:57:29 +02:00
Robert Schmidt
9771036efb Merge remote-tracking branch 'origin/logImp' into integration_2022_wk42b 2022-10-20 14:57:13 +02:00
Robert Schmidt
627b8d92d3 Merge remote-tracking branch 'origin/ci-local-registry' into integration_2022_wk42b 2022-10-20 14:57:01 +02:00
Robert Schmidt
d4536d2064 Merge remote-tracking branch 'origin/centos-and-noavx2' into integration_2022_wk42b 2022-10-20 14:56:47 +02:00
Robert Schmidt
e252115323 Merge remote-tracking branch 'origin/NR_RRC_PUSCH_config_harmonization' into integration_2022_wk42b 2022-10-20 14:56:27 +02:00
Sagar Arora
048c7df304 (fix): Remove the AMF FQDN parameter
- there are extra variables in gnb_entrypoint.sh to resolve FQDN which
  are superfluous
- allowing nrue config to use gnb fqdn and ip-address
- rfsimulator parameter is not used in all docker-compose so it should be optional
- make amf ip-address optional
2022-10-20 14:29:50 +02:00
Robert Schmidt
3462357b3b Do not exit immediately on error in entrypoint scripts 2022-10-20 14:29:50 +02:00
francescomani
e79b926905 rename sdr to radio 2022-10-19 17:42:26 +02:00
mir
d671d8adab Remove CN_UTIL 2022-10-19 14:45:07 +02:00
Raphael Defosseux
1a0d91fd76 feat(ci): changing the XML structure for pulling images
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-19 09:16:37 +02:00
luis_pereira87
705c6b76d2 gNB MAC PDU decoding improvements when there are issues in UL TB payload (MAC subPDU overlap) 2022-10-18 15:34:28 +01:00
francescomani
bb28445567 fixes in CSI UE reception and reporting for multiple BWPs 2022-10-18 16:09:42 +02:00
Raphael Defosseux
937be093c1 feat(ci): adding back the 1st FDD monolithic scenario
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 15:34:43 +02:00
Raphael Defosseux
8bd8ae74f3 fix(ci): CoreNetwork operations do not require input parameters from XML
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 15:33:53 +02:00
Raphael Defosseux
a42716d5fb feat(ci): the first tab in HTML report is now open
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 15:33:13 +02:00
Raphael Defosseux
28fb8fbdd4 fix(ci): post-review changes and fix on the HTML reporting
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 15:32:41 +02:00
Robert Schmidt
914d7302b3 Remove deprecated config parameters 2022-10-18 15:26:26 +02:00
Robert Schmidt
798679dcfe Remove redundant file 2022-10-18 15:24:48 +02:00
Robert Schmidt
9155befaf6 Add error messages if a TBS cannot be decoded 2022-10-18 15:24:48 +02:00
Melissa Elkadi
1c7576bdf9 Updating proxy commit # for 4G and 5G L2sim test 2022-10-18 15:24:48 +02:00
Melissa Elkadi
f8efb13b7d NR MIMO 2x2 Support
This commit provides CSI reporting support
which is required for MIMO.  It also updates
the configuration files, provides sample BLER
simualtion files for packet dropping in the
MIMO 2x2 case. It also includes the hooks
and functions (e.g., updating UCI2_3_4 PDU field)
for MIMO 2x2 support. This commit will not include
any channel abstraction code or modelling.
2022-10-18 15:24:48 +02:00
Anurag Asokan
bfbebe2de1 Merge targets/COMMON to executables 2022-10-18 14:22:06 +02:00
francescomani
0de9cf2ec6 fix ofdm_symbol_size in rxdata allocation 2022-10-18 14:17:00 +02:00
Robert Schmidt
b100ec859e Set 5G RFsim and L2sim retx thresholds 2022-10-18 09:53:51 +02:00
Robert Schmidt
848d7f0e4a Retx checkers for Deploy/UndeployObject 2022-10-18 09:53:51 +02:00
Robert Schmidt
5759a2407d Improve code for retx checkers 2022-10-18 09:53:51 +02:00
hardy
0d66711ffe add retx checkers to end-to-end tests 2022-10-18 09:53:51 +02:00
Raphael Defosseux
a1f1d65429 feat(ci): adding used image info to HTML report
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 09:32:23 +02:00
francescomani
44ee11be8e cleanup NR UE dead code 2022-10-18 09:03:25 +02:00
Raphael Defosseux
7b3dcc8c49 fix(ci): proper service names for enb
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 08:51:57 +02:00
Raphael Defosseux
73b1130fef fix(ci): longer timeouts for merge operations
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 08:50:18 +02:00
Robert Schmidt
c174ba62f3 Remove redundant "git found" message 2022-10-18 08:48:21 +02:00
Robert Schmidt
612e9636cc Autodetect CPU architecture and AVX2/512 in cmake 2022-10-18 08:48:21 +02:00
Bruno Mongazon-Cazavet
392040a842 Fix build error when -g is specified, fix various warnings when -g is specified 2022-10-18 08:48:10 +02:00
Bruno Mongazon-Cazavet
31b51b285a fix build on centos 7 and centos 8, fix non-avx2 host support using simde 2022-10-18 08:45:56 +02:00
Raphael Defosseux
612956d354 feat(ci): adding pull strategy to b200 nsa/sa scenarios
* also removing the Copy_Image_to_Test method, useless now

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 08:40:59 +02:00
Raphael Defosseux
5480e983d6 feat(ci): the simulation scenarios are now pulling / using images from local registry
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 08:40:59 +02:00
Raphael Defosseux
4f46622383 fix(ci): forgot to add HTML rows to test-report
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 08:40:59 +02:00
Raphael Defosseux
6da8869ed4 feat(ci): adding push / pull images operations to/from a local registry
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-10-18 08:40:59 +02:00
Robert Schmidt
b416d26aa8 Improve LOG documentation 2022-10-18 08:21:59 +02:00
Vijay Chadachan
29bf98cfe2 Add wall_clock option to the log subsystem to get absolute time stamps 2022-10-18 08:21:59 +02:00
Robert Schmidt
3bc86d69c0 Merge branch 'integration_2022_wk42' into 'develop'
integration_2022_wk42

See merge request oai/openairinterface5g!1762

MR !1726 removing pucch-ResourceCommon from dedicated BWP
MR !1736 OAI UE Security Mode Complete bug
MR !1739 NR UE - Capture PduSessionEstablishmentAccept message
MR !1742 Remove EXMIMO
MR !1754 Remove threads_t struct from the code
MR !1758 Use pMAX value in configuration file, instead of hardcoded '23' in asn1_msg.c
MR !1678 Update 5G NR SA tutorials
2022-10-18 05:39:10 +00:00
Robert Schmidt
9358f2f274 Merge remote-tracking branch 'origin/NR_SA_Tutorials_v3' into integration_2022_wk42 2022-10-17 12:33:56 +02:00
Robert Schmidt
c25d07c1c5 Merge remote-tracking branch 'origin/Read_pMAX_from_Config_File' into integration_2022_wk42 2022-10-17 12:32:19 +02:00
Robert Schmidt
67c9dccd3e Merge remote-tracking branch 'origin/remove_thread_t' into integration_2022_wk42 2022-10-17 12:32:10 +02:00
Robert Schmidt
e1226d9fd1 Merge remote-tracking branch 'origin/remove-exmimo' into integration_2022_wk42 2022-10-17 12:31:58 +02:00
Robert Schmidt
d32c4985b3 Merge remote-tracking branch 'origin/nr-ue-capture-PSEA-msg' into integration_2022_wk42 2022-10-17 12:31:49 +02:00
Robert Schmidt
4a535dd057 Merge remote-tracking branch 'origin/ue_security_mode_complete_nea_bug' into integration_2022_wk42 2022-10-17 12:31:42 +02:00
Robert Schmidt
39a8c9ab34 Merge remote-tracking branch 'origin/removing_pucchResourceCommon_from_dedicated_bwp' into integration_2022_wk42 2022-10-17 12:31:27 +02:00
mir
5c86590c17 Dependencies for lte-uesoftmodem removed 2022-10-14 14:59:54 +02:00
Rúben Soares da Silva
39fe287cf0 Use value for pMAX in the configuration file, instead of a hardcoded value 2022-10-14 13:57:02 +01:00
Robert Schmidt
06ccfdfc51 Remove ADRV9371_ZC706 driver leftovers 2022-10-14 09:14:18 +02:00
Robert Schmidt
37e6021955 Fix compilation warnings in oai_irisdevif 2022-10-14 09:14:18 +02:00
Robert Schmidt
634e38bd31 Remove DEADLINE_SCHEDULER and CPU_AFFINITY defines 2022-10-14 09:14:18 +02:00
Robert Schmidt
cc8da80fbc Remove EXMIMO leftover
- Remove all files referencing EXMIMO
- Remove all targets/variables/defines that seem to be related to EXMIMO
2022-10-14 09:14:18 +02:00
mir
94c74012e2 Remove threads_t struct from the code 2022-10-13 16:58:37 +02:00
francescomani
8f0579fc9d pusch_Config harmonization 2022-10-13 13:43:43 +02:00
luis_pereira87
89d6ddc482 Remove Dedicated BWPs from the 40 MHz configuration file used by the tutorials 2022-10-12 20:17:11 +01:00
luis_pereira87
3839abebe7 Add section with optional advanced configurations 2022-10-12 20:17:11 +01:00
luis_pereira87
e58eb7ac27 Add automatic Table Of Contents 2022-10-12 20:17:11 +01:00
luis_pereira87
18cdef9510 Update SD to 0x1 to get PDUSession with COTS UE 2022-10-12 16:25:39 +01:00
luis_pereira87
a5f95e1907 Tutorials: update OAI CN5G docker-compose-basic-nrf.yaml to the latest develop version 2022-10-12 16:25:39 +01:00
luis_pereira87
a578a5c448 Tutorials: merge all the tutorials for different USRPs into a single page 2022-10-12 16:25:39 +01:00
luis_pereira87
c0afb34902 Tutorials: add instructions to run OAI gNB with USRP X300 2022-10-12 16:25:39 +01:00
luis_pereira87
6c4b468646 Tutorials: updates to use 100 MHz with 2 DL layers MIMO to achieve 640 Mbps downlink throughput with a single UE (820 Mbps with 2 UEs) 2022-10-12 16:25:39 +01:00
Angelo Athanassopoulos
3f1d515aaf PSEA - Slight cosmetic changes 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
24241e1b97 PSEA - Log - Change the debug to trace 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
99c77d6fc0 Use the new function to capture PSEA message 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
c31b0f8fa0 Use values from PSEA message to set QFI and PDU Session ID from CN 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
5594594c97 PSEA - Handle uknown IE, ommits the rest message length 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
5ebfed3f90 PSEA - Capture - DNN IE 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
844fec61a8 PSEA - Capture - Position of Extended protocol configuration
options (Ommited)
2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
80542f0503 PSEA - Capture - Position of Authorized QoS flow descriptions (Ommited) 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
f001961e4e PSEA - Capture - Position of EAP message (Ommited) 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
ca903df0a8 PSEA - Capture - Position of Mapped EPS bearer contexts (Ommited) 2022-10-10 20:51:54 +02:00
Angelo Athanassopoulos
ff05fed29c PSEA - Capture - Position of Always-on PDU Session Indication (Ommited) 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
1b89529719 PSEA - Capture - Position of S-NSSAI (Ommited) 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
7707669f97 PSEA - Capture - Position of RQ Timer Value (Ommited) 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
d355b1a7f2 PSEA - Capture - PDU Address IE 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
3fee83e05b PSEA - Capture - Position of 5GSM Cause (Ommited) 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
21c4415a37 PSEA - Prepare the Optional Presence IE capture 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
d9958e4e0f PSEA - Capture - Session AMBR (Ommited) 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
352362ac97 PSEA - Capture - Authorized QoS Rules, but Ommit the Packet Filters 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
fbe010420c PSEA - Capture - PduSessionEstablishmentAccept message 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
7a5e383993 PSEA - Capture - Security Protected NAS header & message 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
0f1d68e2e3 PSEA - Include necessary NAS header files 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
4148e5aae6 PSEA - Init capture function 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
e638715dcc PSEA - Include the PSEA header file to NAS 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
9682ba9bf6 PSEA - Message struct definition 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
724164c395 PSEA - Optional Presence IE 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
b3abb8f64f PSEA - Mandatory Presence IE 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
ff059d7607 PSEA - Macro for DNN ASCII 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
92e01d8346 PSEA - Macros for Rule Operation Codes 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
34e50a2fdf PSEA - Macros for PDU Session type values 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
e057c85e60 PSEA - Macros for Optional IE Identifiers 2022-10-10 20:51:53 +02:00
Angelo Athanassopoulos
e50ce393c3 PSEA - Initialization of PduSessionEstablishmentAccept message capture 2022-10-10 20:51:53 +02:00
francescomani
8c5cf09826 addressing review 2022-10-07 15:26:30 +02:00
francescomani
ef701be83d bugfixes for SR 2022-10-07 15:26:30 +02:00
francescomani
86cf5e704d reworking gNB PUCCH scheduling 2022-10-07 15:26:30 +02:00
mir
8b3322403a OAI UE Mode complete ciphering bug 2022-10-04 09:25:08 +02:00
francescomani
e3da2ca252 removing pucch-ResourceCommon from dedicated BWP 2022-09-28 10:56:12 +02:00
francescomani
85285a55ea disabling dualConnectivityPHR in attempt to fix NSA PHR report 2022-09-23 10:18:08 +02:00
926 changed files with 17810 additions and 61705 deletions

View File

@@ -50,22 +50,22 @@ include_directories(${CRYPTO_INCLUDE_DIRS})
#uhd 4.0 and iris installs by default in /usr/local
include_directories("/usr/local/include/")
#use native cmake method as this package is not in pkg-config
add_list2_option(RF_BOARD "None" "RF head type" "None" "OAI_USRP" "OAI_BLADERF" "OAI_LMSSDR" "OAI_SIMU" "EXMIMO")
add_list2_option(RF_BOARD "None" "RF head type" "None" "OAI_USRP" "OAI_BLADERF" "OAI_LMSSDR" "OAI_SIMU")
if (${RF_BOARD} STREQUAL "OAI_USRP")
find_package(Boost REQUIRED)
elseif (${RF_BOARD} STREQUAL "OAI_IRIS")
include_directories("${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/")
set(HW_SOURCE ${HW_SOURCE}
${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/iris_lib.cpp)
${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/iris_lib.cpp)
LINK_DIRECTORIES("/usr/local/lib")
set(option_HW_lib "-lSoapySDR -rdynamic -ldl")
elseif (${RF_BOARD} STREQUAL "OAI_AW2SORI")
include_directories("${OPENAIR_DIR}/sdr/AW2SORI")
include_directories("${OPENAIR_DIR}/radio/AW2SORI")
set(HW_SOURCE ${HW_SOURCE}
${OPENAIR_DIR}/sdr/AW2SORI/ARCH/AW2SORI/oaiori.c)
${OPENAIR_DIR}/radio/AW2SORI/ARCH/AW2SORI/oaiori.c)
LINK_DIRECTORIES("/usr/local/lib")
set(openair_HW_lib "-shared -fPIC -msse4 -g -ggdb -lori")
@@ -145,11 +145,7 @@ endif()
#########################################################
# Base directories, compatible with legacy OAI building #
#########################################################
set (OPENAIR_DIR $ENV{OPENAIR_DIR})
if("${OPENAIR_DIR}" STREQUAL "")
string(REGEX REPLACE "/cmake_targets.*$" "" OPENAIR_DIR ${CMAKE_CURRENT_BINARY_DIR})
endif()
set (OPENAIR_DIR ${CMAKE_SOURCE_DIR})
set (NFAPI_DIR ${OPENAIR_DIR}/nfapi/open-nFAPI)
set (NFAPI_USER_DIR ${OPENAIR_DIR}/nfapi/oai_integration)
set (OPENAIR1_DIR ${OPENAIR_DIR}/openair1)
@@ -193,43 +189,56 @@ endif ()
if (CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
endif()
message("CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
message(STATUS "CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
add_list_string_option(CMAKE_BUILD_TYPE "RelWithDebInfo" "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." Debug Release RelWithDebInfo MinSizeRel)
Message("Architecture is ${CMAKE_SYSTEM_PROCESSOR}")
# in case /proc/cpuinfo exists we want to inspect available Intrinsics
# -so not to go always through SIMDE emulation
# -so to avoid AVX512 instructions generation by gcc
if(EXISTS "/proc/cpuinfo")
file(STRINGS "/proc/cpuinfo" CPUINFO REGEX flags LIMIT_COUNT 1)
message("AVX512 is ${AVX512}")
message("AVX2 is ${AVX2}")
if ("${AVX512}" STREQUAL "False")
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mno-avx512f -march=native -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE4_1_NATIVE -DSIMDE_X86_SSE4_2_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_SSSE3_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE")
else()
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512")
endif()
if (CPUINFO MATCHES "avx2" AND "${AVX2}" STREQUAL "True")
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE")
endif()
if (CPUINFO MATCHES "sse4_1")
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_1_NATIVE")
endif()
if (CPUINFO MATCHES "sse4_2")
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_2_NATIVE")
endif()
if (CPUINFO MATCHES "ssse3")
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSSE3_NATIVE")
endif()
execute_process(COMMAND uname -m OUTPUT_VARIABLE CPUARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "CPUARCH ${CPUARCH}")
if(EXISTS "/proc/cpuinfo")
file(STRINGS "/proc/cpuinfo" CPUFLAGS REGEX flags LIMIT_COUNT 1)
else()
message(WARNING "did not find /proc/cpuinfo -- not setting any x86-specific compilation variables")
endif()
eval_boolean(AUTODETECT_AVX512 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx512")
add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor")
eval_boolean(AUTODETECT_AVX2 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx2")
add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor")
if(${CPUARCH} STREQUAL "x86_64" AND DEFINED CPUFLAGS)
# The following intrinsics are assumed to be available on any x86 system
# (avx, f16c, fma, gnfi, mmx, pclmul, sse, sse2, sse3, xop)
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE")
message(STATUS "AVX512 intrinsics are ${AVX512}")
if(${AVX512})
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512")
else()
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mno-avx512f -march=native")
endif()
message(STATUS "AVX2 intrinsics are ${AVX2}")
if(${AVX2})
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE")
endif()
if (CPUINFO MATCHES "sse4_1")
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_1_NATIVE")
endif()
if(CPUINFO MATCHES "sse4_2")
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_2_NATIVE")
endif()
if(CPUINFO MATCHES "ssse3")
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSSE3_NATIVE")
endif()
elseif(${CPUARCH} NOT STREQUAL "x86_64")
message(FATAL_ERROR "Cannot compile for CPU architecture ${CPUARCH}")
endif()
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -fno-var-tracking-assignments -march=native")
Message("C_FLAGS_PROCESSOR is ${C_FLAGS_PROCESSOR}")
#
# add autotools definitions that were maybe used!
add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP")
set(commonOpts "-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic")
@@ -290,7 +299,6 @@ set(GIT_COMMIT_DATE "UNKNOWN")
find_package(Git)
if(GIT_FOUND)
message("git found: ${GIT_EXECUTABLE}")
# Get the current working branch
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
@@ -362,9 +370,6 @@ endif()
#############
set(asn1_generated_dir ${OPENAIR_BIN_DIR})
set(protoc_call "${OPENAIR_CMAKE}/tools/generate_protobuf")
set(protobuf_generated_dir ${OPENAIR_BIN_DIR})
# RRC
######
set (RRC_ASN1_VERSION "Rel15")
@@ -752,53 +757,53 @@ set (SHLIB_LOADER_SOURCES
######################################################################
set(HWLIB_USRP_SOURCE
${OPENAIR_DIR}/sdr/USRP/USERSPACE/LIB/usrp_lib.cpp
${OPENAIR_DIR}/radio/USRP/USERSPACE/LIB/usrp_lib.cpp
)
add_library(oai_usrpdevif MODULE ${HWLIB_USRP_SOURCE} )
target_include_directories(oai_usrpdevif PRIVATE
"${OPENAIR_DIR}/sdr/USRP/USERSPACE/LIB/"
"${OPENAIR_DIR}/radio/USRP/USERSPACE/LIB/"
${Boost_INCLUDE_DIR}
)
target_link_libraries(oai_usrpdevif uhd)
include_directories("${OPENAIR_DIR}/sdr/BLADERF/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/radio/BLADERF/USERSPACE/LIB/")
set(HWLIB_BLADERF_SOURCE
${OPENAIR_DIR}/sdr/BLADERF/USERSPACE/LIB/bladerf_lib.c
${OPENAIR_DIR}/radio/BLADERF/USERSPACE/LIB/bladerf_lib.c
)
add_library(oai_bladerfdevif MODULE ${HWLIB_BLADERF_SOURCE} )
target_link_libraries(oai_bladerfdevif bladeRF)
include_directories("${OPENAIR_DIR}/sdr/LMSSDR/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/radio/LMSSDR/USERSPACE/LIB/")
set(HWLIB_LMSSDR_SOURCE
${OPENAIR_DIR}/sdr/LMSSDR/USERSPACE/LIB/lms_lib.cpp
${OPENAIR_DIR}/radio/LMSSDR/USERSPACE/LIB/lms_lib.cpp
)
add_library(oai_lmssdrdevif MODULE ${HWLIB_LMSSDR_SOURCE} )
target_include_directories(oai_lmssdrdevif PRIVATE /usr/local/include/lime)
target_link_libraries(oai_lmssdrdevif LimeSuite )
include_directories("${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/")
set(TPLIB_ETHERNET_SOURCE
${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.c
${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c
${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/eth_raw.c
${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/ethernet_lib.c
${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/eth_udp.c
${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/eth_raw.c
)
add_library(oai_eth_transpro MODULE ${TPLIB_ETHERNET_SOURCE} )
include_directories("${OPENAIR_DIR}/sdr/AW2SORI/")
include_directories("${OPENAIR_DIR}/radio/AW2SORI/")
link_directories("/usr/local/lib")
set(HWLIB_AW2SORI_SOURCE
${OPENAIR_DIR}/sdr/AW2SORI/oaiori.c
${OPENAIR_DIR}/radio/AW2SORI/oaiori.c
)
add_library(aw2sori_transpro MODULE ${HWLIB_AW2SORI_SOURCE})
target_compile_options(aw2sori_transpro PRIVATE -shared -fPIC -msse4 -g -ggdb -DLITE_COMPILATION)
target_link_libraries(aw2sori_transpro libori.so)
include_directories("${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/")
set(option_HWIRISLIB_lib "-l SoapySDR")
set(HWLIB_IRIS_SOURCE
${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/iris_lib.cpp
${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/iris_lib.cpp
)
add_library(oai_irisdevif MODULE ${HWLIB_IRIS_SOURCE})
target_include_directories(oai_irisdevif PRIVATE /usr/local/lib/SoapySDR/modules0.7/)
@@ -811,11 +816,11 @@ target_link_libraries(oai_irisdevif SoapySDR)
include_directories ("/usr/include/dpdk")
set(HWLIB_BENETEL_4G_SOURCE
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/benetel.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/shared_buffers.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/low.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/low_dpdk.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/dpdk_driver.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/benetel.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/shared_buffers.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/low.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/low_dpdk.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/dpdk_driver.c
)
add_library(benetel_4g MODULE ${HWLIB_BENETEL_4G_SOURCE} )
@@ -829,11 +834,11 @@ TARGET_LINK_LIBRARIES(benetel_4g pthread dl rt m numa)
######################################################################
set(HWLIB_BENETEL_5G_SOURCE
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/benetel.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/shared_buffers.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/low.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/low_dpdk.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/dpdk_driver.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/benetel.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/shared_buffers.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/low.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/low_dpdk.c
${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/dpdk_driver.c
)
add_library(benetel_5g MODULE ${HWLIB_BENETEL_5G_SOURCE} )
@@ -870,15 +875,13 @@ endif ()
##########################################################
include_directories ("${OPENAIR_DIR}/sdr/COMMON")
include_directories ("${OPENAIR_DIR}/radio/COMMON")
##############################################################
# ???!!! TO BE DOCUMENTED OPTIONS !!!???
##############################################################
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????")
add_boolean_option(DEADLINE_SCHEDULER False "Use the Linux scheduler SCHED_DEADLINE: kernel >= 3.14")
add_boolean_option(CPU_AFFINITY False "Enable CPU Affinity of threads (only valid without deadline scheduler). It is enabled only with >2 CPUs")
add_boolean_option(NAS_NETLINK False "useless ??? Must be True to compile nasmesh driver without rtai ????")
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????")
@@ -904,8 +907,6 @@ add_boolean_option(LINUX_LIST False "used only in lists.c: either u
##########################
# PHY options
##########################
add_boolean_option(DRIVER2013 True "only relevant for EXMIMO")
add_boolean_option(EXMIMO_IOT True "????")
add_boolean_option(LOCALIZATION False "???")
add_integer_option(MAX_NUM_CCs 1 "????")
add_boolean_option(SMBV False "Rohde&Schwarz SMBV100A vector signal generator")
@@ -1039,7 +1040,7 @@ include_directories("${OPENAIR3_DIR}/ocp-gtpu")
include_directories("${OPENAIR3_DIR}/M3AP")
include_directories("${OPENAIR3_DIR}/MME_APP")
include_directories("${OPENAIR_DIR}/targets/COMMON")
include_directories("${OPENAIR_DIR}/sdr/COMMON")
include_directories("${OPENAIR_DIR}/radio/COMMON")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PHY")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/RRC")
@@ -1060,179 +1061,6 @@ include_directories("${OPENAIR2_DIR}/UTIL/OMV")
include_directories("${OPENAIR2_DIR}/RRC/LTE/MESSAGES")
include_directories("${OPENAIR_DIR}")
# flexran
################
# Make lfds as a own source code (even if it is a outside library)
# only user: Flexran, please don't use lfds in any other component
###################################################################
set(lfds7 ${OPENAIR2_DIR}/UTIL/LFDS/liblfds7.0.0/liblfds700/src/)
file(GLOB lfds7_queue ${lfds7}/lfds700_queue/*.c)
file(GLOB lfds7_ring ${lfds7}/lfds700_ringbuffer/*.c)
file(GLOB lfds7_qbss ${lfds7}/lfds700_queue_bounded_singleconsumer_singleproducer/*.c)
file(GLOB lfds7_stack ${lfds7}/lfds700_stack/*.c)
file(GLOB lfds7_freelist ${lfds7}/lfds700_freelist/*.c)
file(GLOB lfds7_btree ${lfds7}/lfds700_btree_addonly_unbalanced/*.c)
file(GLOB lfds7_hash ${lfds7}/lfds700_hash_addonly/*.c)
file(GLOB lfds7_ordered_list ${lfds7}/lfds700_list_addonly_ordered_singlylinked/*.c)
file(GLOB lfds7_unordered_list ${lfds7}/lfds700_list_addonly_singlylinked_unordered/*.c)
file(GLOB lfds7_misc ${lfds7}/lfds700_misc/*.c)
add_library(LFDS7
${lfds7_queue} ${lfds7_ring} ${lfds7_qbss} ${lfds7_stack} ${lfds7_freelist} ${lfds7_btree} ${lfds7_hash} ${lfds7_ordered_list} ${lfds7_unordered_list} ${lfds7_misc}
)
target_include_directories(LFDS7 PRIVATE "${lfds7}")
# set the version of protobuf messages, V3 not supported yet
add_list1_option(FLPT_VERSION V2 "FLPT MSG protobuf grammar version" V2 V3)
if (${FLPT_VERSION} STREQUAL "V2")
set (FLPTDIR V2)
elseif (${FLPT_VERSION} STREQUAL "V3")
set (FLPTDIR V3)
endif(${FLPT_VERSION} STREQUAL "V2")
set(FLPT_MSG_DIR ${OPENAIR2_DIR}/ENB_APP/MESSAGES/${FLPTDIR} )
set(FLPT_MSG_FILES
${FLPT_MSG_DIR}/header.proto
${FLPT_MSG_DIR}/flexran.proto
${FLPT_MSG_DIR}/stats_common.proto
${FLPT_MSG_DIR}/stats_messages.proto
${FLPT_MSG_DIR}/time_common.proto
${FLPT_MSG_DIR}/controller_commands.proto
${FLPT_MSG_DIR}/mac_primitives.proto
${FLPT_MSG_DIR}/config_messages.proto
${FLPT_MSG_DIR}/config_common.proto
${FLPT_MSG_DIR}/control_delegation.proto
)
set(FLPT_C_DIR ${protobuf_generated_dir}/FLPT_${FLPTDIR})
#message("calling protoc_call=${protoc_call} FLPT_C_DIR=${FLPT_C_DIR} FLPT_MSG_FILES=${FLPT_MSG_FILES}")
execute_process(COMMAND ${protoc_call} ${FLPT_C_DIR} ${FLPT_MSG_DIR} ${FLPT_MSG_FILES})
file(GLOB FLPT_source ${FLPT_C_DIR}/*.c)
set(FLPT_OAI_generated
${FLPT_C_DIR}/header.pb-c.c
${FLPT_C_DIR}/flexran.pb-c.c
${FLPT_C_DIR}/stats_common.pb-c.c
${FLPT_C_DIR}/stats_messages.pb-c.c
${FLPT_C_DIR}/time_common.pb-c.c
${FLPT_C_DIR}/controller_commands.pb-c.c
${FLPT_C_DIR}/mac_primitives.pb-c.c
${FLPT_C_DIR}/config_messages.pb-c.c
${FLPT_C_DIR}/config_common.pb-c.c
${FLPT_C_DIR}/control_delegation.pb-c.c
)
file(GLOB flpt_h ${FLPT_C_DIR}/*.h)
set(flpt_h ${flpt_h} )
add_library(FLPT_MSG
${FLPT_OAI_generated}
${FLPT_source}
)
target_link_libraries(FLPT_MSG LFDS7)
add_dependencies(FLPT_MSG LFDS7)
set(FLPT_MSG_LIB FLPT_MSG)
#message("prpt c dir is : ${FLPT_C_DIR}")
include_directories (${FLPT_C_DIR})
add_library(ASYNC_IF
${OPENAIR2_DIR}/UTIL/ASYNC_IF/socket_link.c
${OPENAIR2_DIR}/UTIL/ASYNC_IF/link_manager.c
${OPENAIR2_DIR}/UTIL/ASYNC_IF/message_queue.c
${OPENAIR2_DIR}/UTIL/ASYNC_IF/ringbuffer_queue.c
)
set(ASYNC_IF_LIB ASYNC_IF)
target_include_directories(ASYNC_IF PRIVATE "${OPENAIR2_DIR}/UTIL/LFDS/liblfds7.0.0/liblfds700/inc")
include_directories(${OPENAIR2_DIR}/UTIL/ASYNC_IF)
add_library(FLEXRAN_AGENT
${OPENAIR2_DIR}/ENB_APP/flexran_agent_handler.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_common.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_ran_api.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_timer.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_common_internal.c
${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.c
${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc_internal.c
${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_task_manager.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_net_comm.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_async.c
${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c
${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_app.c
)
add_dependencies(FLEXRAN_AGENT rrc_flag ASYNC_IF)
target_link_libraries(FLEXRAN_AGENT ASYNC_IF LFDS7)
target_include_directories(FLEXRAN_AGENT PRIVATE "${OPENAIR2_DIR}/UTIL/LFDS/liblfds7.0.0/liblfds700/inc")
set(FLEXRAN_AGENT_LIB FLEXRAN_AGENT)
add_library(flapp_sample SHARED
${OPENAIR2_DIR}/ENB_APP/flexran_apps/sample.c
)
set_target_properties(flapp_sample PROPERTIES C_VISIBILITY_PRESET hidden)
add_library(flapp_imsi SHARED
${OPENAIR2_DIR}/ENB_APP/flexran_apps/imsi.c
)
set_target_properties(flapp_imsi PROPERTIES C_VISIBILITY_PRESET hidden)
add_custom_target(flapp_all DEPENDS
flapp_sample
flapp_imsi
)
#include_directories(${OPENAIR2_DIR}/ENB_APP)
set(PROTOBUF_LIB "protobuf-c")
FIND_PATH(LIBYAML_INCLUDE_DIR NAMES yaml.h)
FIND_LIBRARY(LIBYAML_LIBRARIES NAMES yaml libyaml)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Yaml DEFAULT_MSG LIBYAML_LIBRARIES LIBYAML_INCLUDE_DIR)
MARK_AS_ADVANCED(LIBYAML_INCLUDE_DIR LIBYAML_LIBRARIES)
#set(PROTOBUF_LIB "protobuf") #for Cpp
# set the version of protobuf messages, V3 not supported yet
add_list1_option(FSPT_VERSION V2 "FSPT MSG protobuf grammar version" V2 V3)
if (${FSPT_VERSION} STREQUAL "V2")
set (FSPTDIR V2)
elseif (${FSPT_VERSION} STREQUAL "V3")
set (FSPTDIR V3)
endif(${FSPT_VERSION} STREQUAL "V2")
set(FSPT_MSG_DIR ${OPENAIR_DIR}/targets/COMMON/MESSAGES/${FSPTDIR} )
set(FSPT_MSG_FILES
${FSPT_MSG_DIR}/flexsplit.proto
)
set(FSPT_C_DIR ${protobuf_generated_dir}/FSPT_${FSPTDIR})
message("calling protoc_call=${protoc_call} FSPT_C_DIR=${FSPT_C_DIR} FSPT_MSG_DIR=${FSPT_MSG_DIR} FSPT_MSG_FILES=${FSPT_MSG_FILES}")
execute_process(COMMAND ${protoc_call} ${FSPT_C_DIR} ${FSPT_MSG_DIR} ${FSPT_MSG_FILES})
file(GLOB FSPT_source ${FSPT_C_DIR}/*.c)
set(FSPT_OAI_generated
${FSPT_C_DIR}/flexsplit.pb-c.c
)
file(GLOB fspt_h ${FSPT_C_DIR}/*.h)
set(fspt_h ${fspt_h} )
add_library(FSPT_MSG
${FSPT_OAI_generated}
${FSPT_source}
)
set(FSPT_MSG_LIB FSPT_MSG)
message("fspt c dir is : ${FSPT_C_DIR}")
include_directories (${FSPT_C_DIR})
set(PROTOBUF_LIB "protobuf-c")
#set(PROTOBUF_LIB "protobuf") #for Cpp
###########
# Utilities
###############
@@ -1687,7 +1515,6 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_prach.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_tools_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pucch_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/csi_rx.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
@@ -2014,7 +1841,6 @@ set (MAC_NR_SRC_UE
${NR_UE_MAC_DIR}/nr_ue_procedures.c
${NR_UE_MAC_DIR}/nr_ue_scheduler.c
${NR_UE_MAC_DIR}/nr_ue_dci_configuration.c
${NR_UE_MAC_DIR}/nr_l1_helpers.c
${NR_UE_MAC_DIR}/nr_ra_procedures.c
)
@@ -2116,12 +1942,6 @@ include_directories("${OPENAIR1_DIR}/SCHED_NR_UE")
# CN libs
##########################
add_library(CN_UTILS
${OPENAIR3_DIR}/UTILS/conversions.c
${OPENAIR3_DIR}/UTILS/enum_string.c
${OPENAIR3_DIR}/UTILS/mcc_mnc_itu.c
)
add_library (GTPV1U
${NR_RRC_DIR}/rrc_gNB_GTPV1U.c
${RRC_DIR}/rrc_eNB_GTPV1U.c
@@ -2383,6 +2203,7 @@ set(libnrnas_emm_msg_OBJS
${NAS_SRC}COMMON/EMM/MSG/RegistrationComplete.c
${NAS_SRC}COMMON/EMM/MSG/FGSUplinkNasTransport.c
${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishRequest.c
${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishmentAccept.c
)
set(libnrnas_ies_OBJS
@@ -2542,15 +2363,14 @@ target_link_libraries(nrscope ${XFORMS_LIBRARIES})
add_library(rfsimulator MODULE
${OPENAIR_DIR}/sdr/rfsimulator/simulator.c
${OPENAIR_DIR}/sdr/rfsimulator/apply_channelmod.c
${OPENAIR_DIR}/sdr/rfsimulator/new_channel_sim.c
${OPENAIR_DIR}/radio/rfsimulator/simulator.c
${OPENAIR_DIR}/radio/rfsimulator/apply_channelmod.c
${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
)
target_link_libraries(rfsimulator SIMU_COMMON ${ATLAS_LIBRARIES})
add_library(oai_iqplayer MODULE
${OPENAIR_DIR}/sdr/iqplayer/iqplayer_lib.c
${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
)
set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")
@@ -2611,7 +2431,7 @@ add_executable(nfapi_test
)
add_executable(replay_node
${OPENAIR_DIR}/sdr/rfsimulator/stored_node.c
${OPENAIR_DIR}/radio/rfsimulator/stored_node.c
)
target_link_libraries (replay_node minimal_lib)
@@ -2636,10 +2456,10 @@ add_executable(lte-softmodem
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_TARGETS}/COMMON/create_tasks.c
${OPENAIR_TARGETS}/COMMON/create_tasks_mbms.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR_DIR}/executables/create_tasks.c
${OPENAIR_DIR}/executables/create_tasks_mbms.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR2_DIR}/F1AP/dummy_enb.c
@@ -2660,11 +2480,11 @@ target_link_libraries (lte-softmodem
-Wl,--start-group
RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB M2AP_LIB M2AP_ENB X2AP_LIB X2AP_ENB M3AP_LIB M3AP_ENB GTPV1U F1AP_LIB F1AP SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
PHY_COMMON PHY PHY_RU L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
${RAL_LIB} ${NAS_UE_LIB} ITTI ${FLPT_MSG_LIB} ${FLEXRAN_AGENT_LIB} ${FSPT_MSG_LIB}
${RAL_LIB} ${NAS_UE_LIB} ITTI
-Wl,--end-group z dl)
target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES})
target_link_libraries (lte-softmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
target_link_libraries (lte-softmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${CMAKE_DL_LIBS})
target_link_libraries (lte-softmodem ${LIB_LMS_LIBRARIES})
target_link_libraries (lte-softmodem ${T_LIB})
@@ -2676,10 +2496,10 @@ add_executable(ocp-enb
${OPENAIR_DIR}/executables/transport_split.c
${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_TARGETS}/COMMON/create_tasks.c
${OPENAIR_TARGETS}/COMMON/create_tasks_mbms.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR_DIR}/executables/create_tasks.c
${OPENAIR_DIR}/executables/create_tasks_mbms.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2700,15 +2520,15 @@ target_link_libraries (ocp-enb
RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB X2AP_LIB X2AP_ENB M3AP_LIB M3AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
PHY_COMMON PHY PHY_RU L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB MISC_NFAPI_LTE_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU_COMMON
${RAL_LIB} ${NAS_UE_LIB} ITTI ${FLPT_MSG_LIB} ${FLEXRAN_AGENT_LIB} ${FSPT_MSG_LIB}
${RAL_LIB} ${NAS_UE_LIB} ITTI
-Wl,--end-group z dl)
target_link_libraries (ocp-enb ${LIBXML2_LIBRARIES} pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${LIB_LMS_LIBRARIES} ${T_LIB})
target_link_libraries (ocp-enb ${LIBXML2_LIBRARIES} pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${CMAKE_DL_LIBS} ${LIB_LMS_LIBRARIES} ${T_LIB})
add_executable(oairu
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
${OPENAIR_TARGETS}/RT/USER/ru_control.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
${OPENAIR_DIR}/executables/main_ru.c
@@ -2732,9 +2552,9 @@ add_executable(lte-uesoftmodem
${OPENAIR_TARGETS}/RT/USER/lte-ue.c
${OPENAIR_TARGETS}/RT/USER/lte-uesoftmodem.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR_TARGETS}/COMMON/create_tasks_ue.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR_DIR}/executables/create_tasks_ue.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2758,11 +2578,11 @@ target_link_libraries (lte-uesoftmodem
RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB
SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
PHY_UE PHY_RU L2_UE L2_LTE SIMU_COMMON SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
${RAL_LIB} ${NAS_UE_LIB} ITTI ${FLPT_MSG_LIB} ${ATLAS_LIBRARIES}
${RAL_LIB} ${NAS_UE_LIB} ITTI ${ATLAS_LIBRARIES}
-Wl,--end-group z dl)
target_link_libraries (lte-uesoftmodem ${LIBXML2_LIBRARIES})
target_link_libraries (lte-uesoftmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
target_link_libraries (lte-uesoftmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${CMAKE_DL_LIBS} ${ATLAS_LIBRARIES})
target_link_libraries (lte-uesoftmodem ${LIB_LMS_LIBRARIES})
target_link_libraries (lte-uesoftmodem ${T_LIB})
@@ -2779,8 +2599,8 @@ add_executable(nr-softmodem
${OPENAIR_DIR}/executables/nr-softmodem.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2791,19 +2611,18 @@ add_executable(nr-softmodem
${XFORMSINTERFACE_SOURCE}
${T_SOURCE}
${SHLIB_LOADER_SOURCES}
${OPENAIR2_DIR}/ENB_APP/flexran_agent_ran_api_to_fix.c
)
target_link_libraries (nr-softmodem
-Wl,--start-group
UTIL HASHTABLE SCTP_CLIENT SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU GTPV1U SECU_CN SECU_OSA
ITTI ${FLPT_MSG_LIB} ${FLEXRAN_AGENT_LIB} ${RAL_LIB} ${NAS_UE_LIB} RRC_LIB NR_RRC_LIB
ITTI ${RAL_LIB} ${NAS_UE_LIB} RRC_LIB NR_RRC_LIB
NGAP_LIB NGAP_GNB S1AP_LIB S1AP_ENB L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
X2AP_LIB X2AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB ${FSPT_MSG_LIB}
X2AP_LIB X2AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB
-Wl,--end-group z dl)
target_link_libraries (nr-softmodem ${LIBXML2_LIBRARIES})
target_link_libraries (nr-softmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${XFORMS_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
target_link_libraries (nr-softmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${XFORMS_LIBRARIES} ${CMAKE_DL_LIBS} ${ATLAS_LIBRARIES})
target_link_libraries (nr-softmodem ${LIB_LMS_LIBRARIES})
target_link_libraries (nr-softmodem ${T_LIB})
@@ -2824,8 +2643,8 @@ add_executable(nr-uesoftmodem
${OPENAIR_DIR}/executables/nr-ue.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
@@ -2846,7 +2665,7 @@ target_link_libraries (nr-uesoftmodem
-Wl,--end-group z dl)
target_link_libraries (nr-uesoftmodem ${LIBXML2_LIBRARIES})
target_link_libraries (nr-uesoftmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${XFORMS_LIBRARIES} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
target_link_libraries (nr-uesoftmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${XFORMS_LIBRARIES} ${CMAKE_DL_LIBS} ${ATLAS_LIBRARIES})
target_link_libraries (nr-uesoftmodem ${LIB_LMS_LIBRARIES})
target_link_libraries (nr-uesoftmodem ${T_LIB})
@@ -2878,7 +2697,7 @@ target_link_libraries (dlsim_tm4
add_executable(rftest
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/executables/softmodem-common.c
${SHLIB_LOADER_SOURCES}
)
@@ -3084,8 +2903,8 @@ if (${T_TRACER})
nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
#all "add_library" definitions
ITTI RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP_LIB F1AP
params_libconfig oai_exmimodevif oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
oai_eth_transpro oai_mobipass coding FLPT_MSG FLEXRAN_AGENT HASHTABLE UTIL OMG_SUMO
params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
oai_eth_transpro oai_mobipass coding HASHTABLE UTIL OMG_SUMO
SECU_OSA SECU_CN SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
@@ -3181,24 +3000,6 @@ if(OAI_NW_DRIVER_USE_NETLINK)
endif()
make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src})
foreach(file IN ITEMS ${OCT_FILES})
string(REGEX REPLACE "oct *$" "cc" src ${file})
add_custom_command(
OUTPUT ${file}
DEPENDS ${OCT_DIR}/${src} OPENAIR0_LIB
COMMAND mkoctfile
ARGS ${OCT_FLAGS} ${OCT_INCL} ${OCT_LIBS}
ARGS -o ${file} ${OCT_DIR}/${src}
COMMENT "Generating ${file}"
VERBATIM
)
endforeach(file)
ADD_CUSTOM_TARGET(oarf
DEPENDS ${OCT_FILES}
)
include (${OPENAIR_DIR}/common/utils/telnetsrv/telnetsrv_CMakeLists.txt)
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)

View File

@@ -36,11 +36,20 @@ Please see [NOTICE](NOTICE.md) file for third party software that is included in
* [How to build](./doc/BUILD.md)
* [How to run the modems](./doc/RUNMODEM.md)
More information and documentation can be found in the [doc folder](./doc).
Unfortunately, not all information is available there, and information for
specific sub-systems might be available in the corresponding sub-directories.
To find all READMEs, this command might be handy:
```
find . -iname "readme*"
```
# RAN repository structure #
The OpenAirInterface (OAI) software is composed of the following parts:
<pre>
```
openairinterface5g
├── ci-scripts : Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI.
├── cmake_targets : Build utilities to compile (simulation, emulation and real-time platforms), and generated build files.
@@ -88,5 +97,6 @@ openairinterface5g
│   ├── TEST
│   ├── UDP
│   └── UTILS
├── radio : drivers for various radios such as USRP, AW2S, RFsim, ...
└── targets : Top-level wrappers for unitary simulation for PHY channels, system-level emulation (eNB-UE with and without S1), and realtime eNB and UE and RRH GW.
</pre>
```

View File

@@ -16,7 +16,7 @@ icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_fin
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
version: 1.0.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-dlsim-100rb-tm2.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-dlsim-100rb-tm2.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-dlsim-100rb-tm2.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-dlsim-100rb-tm2.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-dlsim-100rb-tm2.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-dlsim-100rb-tm2.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-dlsim-100rb-tm2.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "dlsim.100rb+tm2" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-dlsim-100rb-tm2.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-dlsim-100rb-tm2
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-dlsim-100rb-tm2.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-dlsim-basic.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-dlsim-basic.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-dlsim-basic.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-dlsim-basic.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-dlsim-basic.labels" . | nindent 4 }}
name: {{ .Chart.Name }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-dlsim-basic.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-dlsim-basic.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "dlsim.basic" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-dlsim-basic.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-dlsim-basic
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-dlsim-basic.selectorLabels" . | nindent 4 }}

View File

@@ -27,31 +27,15 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
privileged: false
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
nodeSelector: {}

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-ldpctest.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-ldpctest.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-ldpctest.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-ldpctest.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-ldpctest.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-ldpctest.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-ldpctest.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,18 +20,18 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
command: ["/bin/sh", "-c"]
args:
- >
- >
cmake_targets/autotests/run_exec_autotests.bash -g "ldpctest" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-ldpctest.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-ldpctest
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-ldpctest.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-dlschsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-dlschsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-dlschsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-dlschsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlschsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-dlschsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-dlschsim.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,18 +20,18 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
command: ["/bin/sh", "-c"]
args:
- >
- >
cmake_targets/autotests/run_exec_autotests.bash -g "nr_dlschsim" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlschsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-dlschsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-dlschsim.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-dlsim-basic.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-dlsim-basic.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-dlsim-basic.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-dlsim-basic.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim-basic.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-dlsim-basic.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-dlsim-basic.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_dlsim.basic" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim-basic.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-dlsim-basic
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-dlsim-basic.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-dlsim-dmrs-ptrs.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-dlsim-dmrs-ptrs.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-dlsim-dmrs-ptrs.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-dlsim-dmrs-ptrs.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim-dmrs-ptrs.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-dlsim-dmrs-ptrs.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-dlsim-dmrs-ptrs.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_dlsim.dmrs+ptrs" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim-dmrs-ptrs.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-dlsim-dmrs-ptrs
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-dlsim-dmrs-ptrs.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-dlsim-mcs-mimo.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-dlsim-mcs-mimo.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-dlsim-mcs-mimo.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-dlsim-mcs-mimo.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim-mcs-mimo.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-dlsim-mcs-mimo.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-dlsim-mcs-mimo.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_dlsim.mcs+mimo" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim-mcs-mimo.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-dlsim-mcs-mimo
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-dlsim-mcs-mimo.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-dlsim-offset.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-dlsim-offset.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-dlsim-offset.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-dlsim-offset.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim-offset.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-dlsim-offset.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-dlsim-offset.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_dlsim.offset" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim-offset.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-dlsim-offset
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-dlsim-offset.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-pbchsim-106rb.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-pbchsim-106rb.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-pbchsim-106rb.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-pbchsim-106rb.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pbchsim-106rb.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-pbchsim-106rb.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-pbchsim-106rb.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_pbchsim.106rb" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pbchsim-106rb.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-pbchsim-106rb
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-pbchsim-106rb.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-pbchsim-217rb.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-pbchsim-217rb.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-pbchsim-217rb.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-pbchsim-217rb.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pbchsim-217rb.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-pbchsim-217rb.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-pbchsim-217rb.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_pbchsim.217rb" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pbchsim-217rb.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-pbchsim-217rb
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-pbchsim-217rb.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-pbchsim-273rb.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-pbchsim-273rb.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-pbchsim-273rb.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-pbchsim-273rb.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pbchsim-273rb.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-pbchsim-273rb.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-pbchsim-273rb.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_pbchsim.273rb" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pbchsim-273rb.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-pbchsim-273rb
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-pbchsim-273rb.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-prachsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-prachsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-prachsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-prachsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-prachsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-prachsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-prachsim.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,18 +20,18 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
command: ["/bin/sh", "-c"]
args:
- >
- >
cmake_targets/autotests/run_exec_autotests.bash -g "nr_prachsim" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-prachsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-prachsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-prachsim.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-pucchsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-pucchsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-pucchsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-pucchsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pucchsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-pucchsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-pucchsim.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,18 +20,18 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
command: ["/bin/sh", "-c"]
args:
- >
- >
cmake_targets/autotests/run_exec_autotests.bash -g "nr_pucchsim" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pucchsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-pucchsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-pucchsim.selectorLabels" . | nindent 4 }}

View File

@@ -27,15 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
privileged: false
service:
type: ClusterIP

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-ulschsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-ulschsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-ulschsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-ulschsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulschsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-ulschsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-ulschsim.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,18 +20,18 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
command: ["/bin/sh", "-c"]
args:
- >
- >
cmake_targets/autotests/run_exec_autotests.bash -g "nr_ulschsim" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulschsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-ulschsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-ulschsim.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-ulsim-3gpp.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-ulsim-3gpp.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-ulsim-3gpp.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-ulsim-3gpp.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim-3gpp.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-ulsim-3gpp.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-ulsim-3gpp.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_ulsim.3gpp" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim-3gpp.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-ulsim-3gpp
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-ulsim-3gpp.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-ulsim-mimo.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-ulsim-mimo.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-ulsim-mimo.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-ulsim-mimo.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim-mimo.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-ulsim-mimo.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-ulsim-mimo.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_ulsim.mimo" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim-mimo.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-ulsim-mimo
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-ulsim-mimo.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-ulsim-misc.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-ulsim-misc.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-ulsim-misc.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-ulsim-misc.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim-misc.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-ulsim-misc.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-ulsim-misc.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,8 +20,6 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
@@ -39,7 +29,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_ulsim.misc" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim-misc.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-ulsim-misc
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-ulsim-misc.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-ulsim-sc-fdma.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-ulsim-sc-fdma.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-ulsim-sc-fdma.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-ulsim-sc-fdma.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim-sc-fdma.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-ulsim-sc-fdma.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-ulsim-sc-fdma.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -39,7 +31,9 @@ spec:
cmake_targets/autotests/run_exec_autotests.bash -g "nr_ulsim.sc-fdma" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim-sc-fdma.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-ulsim-sc-fdma
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-ulsim-sc-fdma.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-polartest.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-polartest.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-polartest.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-polartest.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-polartest.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-polartest.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-polartest.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,18 +20,18 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
command: ["/bin/sh", "-c"]
args:
- >
- >
cmake_targets/autotests/run_exec_autotests.bash -g "polartest" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-polartest.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-polartest
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-polartest.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-smallblocktest.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-smallblocktest.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-smallblocktest.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-smallblocktest.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-smallblocktest.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-smallblocktest.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-smallblocktest.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,18 +20,18 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
command: ["/bin/sh", "-c"]
args:
- >
- >
cmake_targets/autotests/run_exec_autotests.bash -g "smallblocktest" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-smallblocktest.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-smallblocktest
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-smallblocktest.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -1,15 +0,0 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-ulsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-ulsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-ulsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-ulsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -1,20 +1,12 @@
apiVersion: apps/v1
kind: Deployment
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-ulsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-ulsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-ulsim.selectorLabels" . | nindent 8 }}
app: physim
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
@@ -28,18 +20,18 @@ spec:
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
env:
- name: OPENAIR_DIR
value: /opt/oai-physim
command: ["/bin/sh", "-c"]
args:
- >
- >
cmake_targets/autotests/run_exec_autotests.bash -g "ulsim" -d bin/ &&
echo "FINISHED" && sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
restartPolicy: Never
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}

View File

@@ -1,20 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-ulsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-ulsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-ulsim.selectorLabels" . | nindent 4 }}

View File

@@ -27,19 +27,7 @@ podSecurityContext:
runAsGroup: 0
securityContext:
privileged: true
capabilities:
add:
- SYS_CAP_PTRACE
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
privileged: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious

View File

@@ -6,7 +6,7 @@ rules:
- apiGroups:
- security.openshift.io
resourceNames:
- privileged
- anyuid
resources:
- securitycontextconstraints
verbs:

View File

@@ -1,4 +1,4 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Values.global.serviceAccountName }}
name: oai-physim-sa #{{ .Values.global.serviceAccountName }}

View File

@@ -5,137 +5,12 @@
global:
serviceAccountName: oai-physim-sa
namespace: "OAICICD_PROJECT"
image:
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran/oai-physim
version: TAG
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
nodeSelector:
worker: "telco"
## Declaring values specific to coressponding physim to overwrite
dlsim.basic:
replicaCount: 1
service:
type: ClusterIP
port: 80
dlsim.100rb+tm2:
replicaCount: 1
service:
type: ClusterIP
port: 80
ulsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
ldpctest:
replicaCount: 1
service:
type: ClusterIP
port: 80
polartest:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-pbchsim.106rb:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-pbchsim.217rb:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-pbchsim.273rb:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-dlsim.basic:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-dlsim.dmrs+ptrs:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-dlsim.mcs+mimo:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-dlsim.offset:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-dlschsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
smallblocktest:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-ulschsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-pucchsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-ulsim.3gpp:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-ulsim.mimo:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-ulsim.misc:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-ulsim.sc-fdma:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-prachsim:
replicaCount: 1
service:
type: ClusterIP
port: 80

View File

@@ -285,6 +285,46 @@ pipeline {
}
}
}
stage ("LTE-B200-FDD-LTEBOX-Container") {
when { expression {do4Gtest} }
steps {
script {
triggerSlaveJob ('RAN-LTE-FDD-LTEBOX-Container', 'RAN-LTE-FDD-LTEBOX-Container')
}
}
post {
always {
script {
finalizeSlaveJob('RAN-LTE-FDD-LTEBOX-Container')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("LTE-B200-TDD-LTEBOX-Container") {
when { expression {do4Gtest} }
steps {
script {
triggerSlaveJob ('RAN-LTE-TDD-LTEBOX-Container', 'RAN-LTE-TDD-LTEBOX-Container')
}
}
post {
always {
script {
finalizeSlaveJob('RAN-LTE-TDD-LTEBOX-Container')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("NSA-B200-Module-LTEBOX-Container") {
when { expression {do4Gtest || do5Gtest} }
steps {
@@ -409,6 +449,10 @@ pipeline {
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): passed (" + BUILD_URL + ")"
if ("MERGE".equals(env.gitlabActionType)) {
addGitLabMRComment comment: message
def message2 = message + " -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")"
sendSocialMediaMessage('ci-enb', 'good', message2)
} else {
sendSocialMediaMessage('ci-enb', 'good', message)
}
echo "Pipeline is SUCCESSFUL"
}
@@ -418,6 +462,10 @@ pipeline {
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): failed (" + BUILD_URL + ")"
if ("MERGE".equals(env.gitlabActionType)) {
addGitLabMRComment comment: message
def message2 = message + " -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")"
sendSocialMediaMessage('ci-enb', 'danger', message2)
} else {
sendSocialMediaMessage('ci-enb', 'danger', message)
}
echo "Pipeline FAILED"
}
@@ -501,3 +549,9 @@ def finalizeSlaveJob(jobName) {
}
}
}
// Abstraction function to send social media messages:
// like on Slack or Mattermost
def sendSocialMediaMessage(pipeChannel, pipeColor, pipeMessage) {
slackSend channel: pipeChannel, color: pipeColor, message: pipeMessage
}

View File

@@ -20,16 +20,6 @@
* contact@openairinterface.org
*/
// Abstraction function to send social media messages:
// like on Slack or Mattermost
def sendSocialMediaMessage(pipeChannel, pipeColor, pipeMessage) {
if (params.pipelineUsesSlack != null) {
if (params.pipelineUsesSlack) {
slackSend channel: pipeChannel, color: pipeColor, message: pipeMessage
}
}
}
// Location of the executor node
def nodeExecutor = params.nodeExecutor
@@ -64,10 +54,6 @@ pipeline {
echo "Platform is ${env.TESTPLATFORM_OWNER}"
}
if (fileExists("flexran")) {
sh "rm -Rf flexran > /dev/null 2>&1"
}
echo '\u2705 \u001B[32mVerify Labels\u001B[0m'
if ("MERGE".equals(env.gitlabActionType)) {
LABEL_CHECK = sh returnStdout: true, script: 'ci-scripts/checkGitLabMergeRequestLabels.sh --mr-id ' + env.gitlabMergeRequestIid
@@ -342,7 +328,7 @@ pipeline {
script {
if (doMandatoryTests) {
dir ('archives') {
sh "if [ -d rf_sim/test ] || [ -d l2_sim/test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
sh "if [ -d rf_sim/test ] || [ -d rf5g_sim/test ] || [ -d l2_sim/test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
}
if(fileExists('archives/vm_tests_logs.zip')) {
archiveArtifacts artifacts: 'archives/vm_tests_logs.zip'
@@ -389,10 +375,6 @@ OAI CI Team''',
if ("MERGE".equals(env.gitlabActionType)) {
echo "This is a MERGE event"
addGitLabMRComment comment: message
def message2 = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): passed (" + BUILD_URL + ") -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")"
sendSocialMediaMessage('ci-enb', 'good', message2)
} else {
sendSocialMediaMessage('ci-enb', 'good', message)
}
}
}
@@ -402,10 +384,6 @@ OAI CI Team''',
if ("MERGE".equals(env.gitlabActionType)) {
echo "This is a MERGE event"
addGitLabMRComment comment: message
def message2 = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): failed (" + BUILD_URL + ") -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")"
sendSocialMediaMessage('ci-enb', 'danger', message2)
} else {
sendSocialMediaMessage('ci-enb', 'danger', message)
}
}
}

View File

@@ -65,19 +65,38 @@ pipeline {
WEEK_REF = WEEK_REF.trim()
WEEK_TAG = sh returnStdout: true, script: 'python3 ./ci-scripts/provideUniqueImageTag.py --start_tag ' + WEEK_REF
WEEK_TAG = WEEK_TAG.trim()
if ((params.forceTag != null) && (params.tagToUse != null)) {
if (params.forceTag) {
WEEK_TAG = params.tagToUse
echo "Forced Tag is ${WEEK_TAG}"
}
}
WEEK_SHA = sh returnStdout: true, script: 'git log -n1 --pretty=format:"%h" origin/develop | cut -c 1-8'
WEEK_SHA = WEEK_SHA.trim()
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", "proxy"]
def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue"]
// 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"
listOfImages.eachWithIndex { item, iindex ->
sh "docker image tag ${item}:develop ${DH_Account}/${item}:develop"
sh "docker image tag ${item}:develop ${DH_Account}/${item}:${WEEK_TAG}"
sh "docker pull --quiet porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA}"
sh "docker image tag porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:develop"
sh "docker image tag porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:${WEEK_TAG}"
sh "docker push --quiet ${DH_Account}/${item}:${WEEK_TAG}"
sh "docker push --quiet ${DH_Account}/${item}:develop"
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop"
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA}"
}
// Proxy is not following the same pattern.
sh "docker image tag proxy:develop ${DH_Account}/proxy:develop"
sh "docker image tag proxy:develop ${DH_Account}/proxy:${WEEK_TAG}"
sh "docker push --quiet ${DH_Account}/proxy:develop"
sh "docker push --quiet ${DH_Account}/proxy:${WEEK_TAG}"
sh "docker rmi ${DH_Account}/proxy:develop ${DH_Account}/proxy:${WEEK_TAG}"
// Logging out on both registries
sh "docker logout porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
sh "docker logout > /dev/null 2>&1"
}
}
@@ -87,6 +106,8 @@ pipeline {
post {
always {
script {
sh "docker logout porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
sh "docker logout > /dev/null 2>&1"
echo "End of Registry Push"
}
}

View File

@@ -62,7 +62,7 @@ function build_on_vm {
echo "ARCHIVES_LOC = $ARCHIVES_LOC"
echo "BUILD_OPTIONS = $BUILD_OPTIONS"
if [[ "$VM_NAME" == *"-enb-usrp"* ]] || [[ "$VM_NAME" == *"-cppcheck"* ]] || [[ "$VM_NAME" == *"-phy-sim"* ]] || [[ "$VM_NAME" == *"-basic-sim"* ]] || [[ "$VM_NAME" == *"-flexran-rtc"* ]]
if [[ "$VM_NAME" == *"-enb-usrp"* ]] || [[ "$VM_NAME" == *"-cppcheck"* ]] || [[ "$VM_NAME" == *"-phy-sim"* ]] || [[ "$VM_NAME" == *"-basic-sim"* ]] || [[ "$VM_NAME" == *"-flexran-rtc"* ]] || [[ "$VM_NAME" == *"-rf-sim"* ]] || [[ "$VM_NAME" == *"-ethernet"* ]]
then
echo "This VM type is no longer supported in the pipeline framework"
return

View File

@@ -110,7 +110,7 @@ MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-sta
NB_WARNINGS_FILES=0
# Retrieve list of warnings
LIST_WARNING_FILES=`egrep "error:|warning:" archives/*/*.txt | egrep -v "jobserver unavailable|Clock skew detected.|flexran.proto" | sed -e "s#^.*/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" -e "s#common/utils/.*/itti#common/utils/itti#" | awk -F ":" '{print $1}' | sort | uniq`
LIST_WARNING_FILES=`egrep "error:|warning:" archives/*/*.txt | egrep -v "jobserver unavailable|Clock skew detected." | sed -e "s#^.*/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" -e "s#common/utils/.*/itti#common/utils/itti#" | awk -F ":" '{print $1}' | sort | uniq`
echo ""
echo "List of files that have been modified by the Merge Request AND"

View File

@@ -97,7 +97,7 @@ fi
if [ $IS_MR_4G -eq 1 ]
then
echo "SHORTEN-4G"
exit 1
exit 0
fi
# 5G is present: run only 5G
@@ -118,5 +118,5 @@ fi
if [ $IS_MR_DOCUMENTATION -eq 1 ]
then
echo "documentation"
exit 1
exit 0
fi

View File

@@ -61,7 +61,7 @@ class AS_UE:
def KillASUE(self):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
mySSH.command('killall --signal SIGKILL lteue-avx2', '#', 5)
mySSH.command('killall --signal SIGKILL lteue-avx2', '\$', 5)
mySSH.close()
def RunScenario(self):
@@ -70,10 +70,10 @@ class AS_UE:
logging.debug("Deleting old artifacts :")
cmd='rm -rf ' + self.Ping + ' ' + self.UELog
mySSH.command(cmd,'#',5)
mySSH.command(cmd, '\$',5)
logging.debug("Running scenario :")
cmd='echo $USER; nohup '+self.Cmd + ' ' + self.Config + ' &'
mySSH.command(cmd,'#',5)
mySSH.command(cmd, '\$',5)
mySSH.close()

View File

@@ -262,7 +262,7 @@ class Cluster:
attemptedImages += ['ran-base']
status = ranbase_job is not None and self._wait_build_end(mySSH, [ranbase_job], 600)
if not status: logging.error('failure during build of ran-base')
mySSH.command(f'oc logs {ranbase_job} > cmake_targets/log/ran-base.log', '\$', 10)
mySSH.command(f'oc logs {ranbase_job} &> cmake_targets/log/ran-base.log', '\$', 10)
# recover logs by mounting image
self._retag_image_statement(mySSH, 'ran-base', 'ran-base', baseTag, 'openshift/ran-base-log-retrieval.yaml')
pod = self._deploy_pod(mySSH, 'openshift/ran-base-log-retrieval.yaml')
@@ -289,8 +289,9 @@ class Cluster:
wait = ranbuild_job is not None and physim_job is not None and self._wait_build_end(mySSH, [ranbuild_job, physim_job], 1200)
if not wait: logging.error('error during build of ranbuild_job or physim_job')
status = status and wait
mySSH.command(f'oc logs {ranbuild_job} > cmake_targets/log/ran-build.log', '\$', 10)
mySSH.command(f'oc logs {physim_job} > cmake_targets/log/oai-physim.log', '\$', 10)
mySSH.command(f'oc logs {ranbuild_job} &> cmake_targets/log/ran-build.log', '\$', 10)
mySSH.command(f'oc logs {physim_job} &> cmake_targets/log/oai-physim.log', '\$', 10)
mySSH.command('oc get pods.metrics.k8s.io >> cmake_targets/log/build-metrics.log', '\$', 10)
if status:
self._recreate_is_tag(mySSH, 'oai-enb', imageTag, 'openshift/oai-enb-is.yaml')
@@ -318,9 +319,9 @@ class Cluster:
if not wait: logging.error('error during build of eNB/gNB')
status = status and wait
# recover logs
mySSH.command(f'oc logs {enb_job} > cmake_targets/log/oai-enb.log', '\$', 10)
mySSH.command(f'oc logs {gnb_job} > cmake_targets/log/oai-gnb.log', '\$', 10)
mySSH.command(f'oc logs {gnb_aw2s_job} > cmake_targets/log/oai-gnb-aw2s.log', '\$', 10)
mySSH.command(f'oc logs {enb_job} &> cmake_targets/log/oai-enb.log', '\$', 10)
mySSH.command(f'oc logs {gnb_job} &> cmake_targets/log/oai-gnb.log', '\$', 10)
mySSH.command(f'oc logs {gnb_aw2s_job} &> cmake_targets/log/oai-gnb-aw2s.log', '\$', 10)
self._recreate_is_tag(mySSH, 'oai-lte-ue', imageTag, 'openshift/oai-lte-ue-is.yaml')
self._recreate_bc(mySSH, 'oai-lte-ue', imageTag, 'openshift/oai-lte-ue-bc.yaml')
@@ -340,8 +341,9 @@ class Cluster:
if not wait: logging.error('error during build of lteUE/nrUE')
status = status and wait
# recover logs
mySSH.command(f'oc logs {lteue_job} > cmake_targets/log/oai-lte-ue.log', '\$', 10)
mySSH.command(f'oc logs {nrue_job} > cmake_targets/log/oai-nr-ue.log', '\$', 10)
mySSH.command(f'oc logs {lteue_job} &> cmake_targets/log/oai-lte-ue.log', '\$', 10)
mySSH.command(f'oc logs {nrue_job} &> cmake_targets/log/oai-nr-ue.log', '\$', 10)
mySSH.command('oc get pods.metrics.k8s.io >> cmake_targets/log/build-metrics.log', '\$', 10)
# split and analyze logs
imageSize = {}
@@ -359,7 +361,8 @@ class Cluster:
logging.info(f'\u001B[1m{image} size is {imageSize[image]}\u001B[0m')
grep_exp = "\|".join(attemptedImages)
mySSH.command(f'oc get images | grep -e \'{grep_exp}\' > cmake_targets/log/image_registry.log', '\$', 10);
mySSH.command(f'oc get images | grep -e \'{grep_exp}\' &> cmake_targets/log/image_registry.log', '\$', 10);
mySSH.command('for pod in $(oc get pods | tail -n +2 | awk \'{print $1}\'); do oc get pod $pod -o json >> cmake_targets/log/build_pod_summary.log; done', '\$', 60)
build_log_name = f'build_log_{self.testCase_id}'
cls_containerize.CopyLogsToExecutor(mySSH, lSourcePath, build_log_name, lIpAddr, 'oaicicd', CONST.CI_NO_PASSWORD)

View File

@@ -81,7 +81,7 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
if ranTargetBranch == '':
ranTargetBranch = 'develop'
logging.debug(f'Merging with the target branch: {ranTargetBranch}')
sshSession.command(f'git merge --ff origin/{ranTargetBranch} -m "Temporary merge for CI"', '\$', 5)
sshSession.command(f'git merge --ff origin/{ranTargetBranch} -m "Temporary merge for CI"', '\$', 30)
def CopyLogsToExecutor(sshSession, sourcePath, log_name, scpIp, scpUser, scpPw):
sshSession.command(f'cd {sourcePath}/cmake_targets', '\$', 5)
@@ -151,6 +151,97 @@ def AnalyzeBuildLogs(buildRoot, images, globalStatus):
collectInfo[image] = files
return collectInfo
def AnalyzeIperf(cliOptions, clientReport, serverReport):
req_bw = 1.0 # default iperf throughput, in Mbps
result = re.search('-b *(?P<iperf_bandwidth>[0-9\.]+)(?P<magnitude>[KMG])', cliOptions)
if result is not None:
req_bw = float(result.group('iperf_bandwidth'))
magn = result.group('magnitude')
if magn == "K":
req_bw /= 1000
elif magn == "G":
req_bw *= 1000
req_dur = 10 # default iperf send duration
result = re.search('-t *(?P<duration>[0-9]+)', cliOptions)
if result is not None:
req_dur = int(result.group('duration'))
reportLine = None
# find server report in client status
clientReportLines = clientReport.split('\n')
for l in range(len(clientReportLines)):
res = re.search('read failed: Connection refused', clientReportLines[l])
if res is not None:
message = 'iperf connection refused by server!'
logging.error(f'\u001B[1;37;41mIperf Test FAIL: {message}\u001B[0m')
return (False, message)
res = re.search('Server Report:', clientReportLines[l])
if res is not None and l + 1 < len(clientReportLines):
reportLine = clientReportLines[l+1]
logging.debug(f'found server report: "{reportLine}"')
statusTemplate = '(?:|\[ *\d+\].*) +0\.0-(?P<duration>[0-9\.]+) +sec +[0-9\.]+ [KMG]Bytes +(?P<bitrate>[0-9\.]+) (?P<magnitude>[KMG])bits\/sec +(?P<jitter>[0-9\.]+) ms +(\d+\/ ..\d+) +(\((?P<packetloss>[0-9\.]+)%\))'
# if we do not find a server report in the client logs, check the server logs
# and use the last line which is typically close/identical to server report
if reportLine is None:
for l in serverReport.split('\n'):
res = re.search(statusTemplate, l)
if res is not None:
reportLine = l
if reportLine is None:
logging.warning('no report in server status found!')
return (False, 'could not parse iperf logs')
logging.debug(f'found client status: {reportLine}')
result = re.search(statusTemplate, reportLine)
if result is None:
logging.error('could not analyze report from statusTemplate')
return (False, 'could not parse iperf logs')
duration = float(result.group('duration'))
bitrate = float(result.group('bitrate'))
magn = result.group('magnitude')
if magn == "K":
bitrate *= 1000
elif magn == "G": # we assume bitrate in Mbps, therefore it must be G now
bitrate /= 1000
jitter = float(result.group('jitter'))
packetloss = float(result.group('packetloss'))
logging.debug('\u001B[1;37;44m iperf result \u001B[0m')
msg = f'Req Bitrate: {req_bw}'
logging.debug(f'\u001B[1;34m{msg}\u001B[0m')
br_loss = bitrate/req_bw
bmsg = f'Bitrate : {bitrate} (perf {br_loss})'
logging.debug(f'\u001B[1;34m{bmsg}\u001B[0m')
msg += '\n' + bmsg
if br_loss < 0.9:
msg += '\nBitrate performance too low (<90%)'
logging.debug(f'\u001B[1;37;41mBitrate performance too low (<90%)\u001B[0m')
return (False, msg)
plmsg = f'Packet Loss: {packetloss}%'
logging.debug(f'\u001B[1;34m{plmsg}\u001B[0m')
msg += '\n' + plmsg
if packetloss > 5.0:
msg += '\nPacket Loss too high!'
logging.debug(f'\u001B[1;37;41mPacket Loss too high \u001B[0m')
return (False, msg)
dmsg = f'Duration : {duration} (req {req_dur})'
logging.debug(f'\u001B[1;34m{dmsg}\u001B[0m')
msg += '\n' + dmsg
if duration < float(req_dur):
msg += '\nDuration of iperf too short!'
logging.debug(f'\u001B[1;37;41mDuration of iperf too short\u001B[0m')
return (False, msg)
jmsg = f'Jitter : {jitter}'
logging.debug(f'\u001B[1;34m{jmsg}\u001B[0m')
msg += '\n' + jmsg
return (True, msg)
#-----------------------------------------------------------
# Class Declaration
#-----------------------------------------------------------
@@ -188,8 +279,6 @@ class Containerize():
self.testCase_id = ''
self.flexranCtrlDeployed = False
self.flexranCtrlIpAddress = ''
self.cli = ''
self.cliBuildOptions = ''
self.dockerfileprefix = ''
@@ -208,6 +297,7 @@ class Containerize():
self.imageToCopy = ''
self.registrySvrId = ''
self.testSvrId = ''
self.imageToPull = []
#checkers from xml
self.ran_checkers={}
@@ -547,72 +637,194 @@ class Containerize():
HTML.CreateHtmlTestRow('commit ' + tag, 'OK', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, allImagesSize)
def Copy_Image_to_Test_Server(self, HTML):
imageTag = 'develop'
if (self.ranAllowMerge):
imageTag = 'ci-temp'
def ImageTagToUse(self, imageName):
shortCommit = self.ranCommitID[0:8]
if self.ranAllowMerge:
tagToUse = f'{self.ranBranch}-{shortCommit}'
else:
tagToUse = f'develop-{shortCommit}'
fullTag = f'porcepix.sboai.cs.eurecom.fr/{imageName}:{tagToUse}'
return fullTag
lSsh = SSH.SSHConnection()
# Going to the Docker Registry server
def Push_Image_to_Local_Registry(self, HTML):
if self.registrySvrId == '0':
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
lSourcePath = self.eNBSourceCodePath
elif self.registrySvrId == '1':
lIpAddr = self.eNB1IPAddress
lUserName = self.eNB1UserName
lPassWord = self.eNB1Password
lSourcePath = self.eNB1SourceCodePath
elif self.registrySvrId == '2':
lIpAddr = self.eNB2IPAddress
lUserName = self.eNB2UserName
lPassWord = self.eNB2Password
lSsh.open(lIpAddr, lUserName, lPassWord)
lSsh.command('docker save ' + self.imageToCopy + ':' + imageTag + ' | gzip --fast > ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
ret = lSsh.copyin(lIpAddr, lUserName, lPassWord, '~/' + self.imageToCopy + '-' + imageTag + '.tar.gz', '.')
if ret != 0:
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
self.exitStatus = 1
return False
lSsh.command('rm ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
if lSsh.getBefore().count('cannot remove'):
HTML.CreateHtmlTestRow('file not created by docker save', 'KO', CONST.ALL_PROCESSES_OK)
self.exitStatus = 1
return False
lSsh.close()
lSourcePath = self.eNB2SourceCodePath
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
logging.debug('Pushing images from server: ' + lIpAddr)
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
# Going to the Test Server
mySSH.command('docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr', '\$', 5)
if re.search('Login Succeeded', mySSH.getBefore()) is None:
msg = 'Could not log into local registry'
logging.error(msg)
mySSH.close()
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
return False
orgTag = 'develop'
if self.ranAllowMerge:
orgTag = 'ci-temp'
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
for image in imageNames:
tagToUse = self.ImageTagToUse(image)
mySSH.command(f'docker image tag {image}:{orgTag} {tagToUse}', '\$', 5)
mySSH.command(f'docker push {tagToUse}', '\$', 120)
if re.search(': digest:', mySSH.getBefore()) is None:
logging.debug(mySSH.getBefore())
msg = f'Could not push {image} to local registry : {tagToUse}'
logging.error(msg)
mySSH.close()
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
return False
mySSH.command(f'docker rmi {tagToUse} {image}:{orgTag}', '\$', 30)
mySSH.command('docker logout porcepix.sboai.cs.eurecom.fr', '\$', 5)
if re.search('Removing login credentials', mySSH.getBefore()) is None:
msg = 'Could not log off from local registry'
logging.error(msg)
mySSH.close()
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
return False
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
def Pull_Image_from_Local_Registry(self, HTML):
# This method can be called either onto a remote server (different from python executor)
# or directly on the python executor (ie lIpAddr == 'none')
if self.testSvrId == '0':
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
lSourcePath = self.eNBSourceCodePath
elif self.testSvrId == '1':
lIpAddr = self.eNB1IPAddress
lUserName = self.eNB1UserName
lPassWord = self.eNB1Password
lSourcePath = self.eNB1SourceCodePath
elif self.testSvrId == '2':
lIpAddr = self.eNB2IPAddress
lUserName = self.eNB2UserName
lPassWord = self.eNB2Password
lSsh.open(lIpAddr, lUserName, lPassWord)
lSsh.copyout(lIpAddr, lUserName, lPassWord, './' + self.imageToCopy + '-' + imageTag + '.tar.gz', '~')
# copyout has no return code and will quit if something fails
lSsh.command('docker rmi ' + self.imageToCopy + ':' + imageTag, '\$', 10)
lSsh.command('docker load < ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
if lSsh.getBefore().count('o such file') or lSsh.getBefore().count('invalid tar header'):
logging.debug(lSsh.getBefore())
HTML.CreateHtmlTestRow('problem during docker load', 'KO', CONST.ALL_PROCESSES_OK)
self.exitStatus = 1
return False
lSsh.command('rm ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
if lSsh.getBefore().count('cannot remove'):
HTML.CreateHtmlTestRow('file not copied during scp?', 'KO', CONST.ALL_PROCESSES_OK)
self.exitStatus = 1
return False
lSsh.close()
lSourcePath = self.eNB2SourceCodePath
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
if lIpAddr != 'none':
logging.debug('Pulling images onto server: ' + lIpAddr)
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
else:
logging.debug('Pulling images locally')
if os.path.isfile('./' + self.imageToCopy + '-' + imageTag + '.tar.gz'):
os.remove('./' + self.imageToCopy + '-' + imageTag + '.tar.gz')
cmd = 'docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr'
if lIpAddr != 'none':
mySSH.command(cmd, '\$', 5)
response = mySSH.getBefore()
else:
logging.info(cmd)
response = subprocess.check_output(cmd, shell=True, universal_newlines=True, stderr=subprocess.STDOUT)
if re.search('Login Succeeded', response) is None:
msg = 'Could not log into local registry'
logging.error(msg)
if lIpAddr != 'none':
mySSH.close()
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
return False
for image in self.imageToPull:
tagToUse = self.ImageTagToUse(image)
cmd = f'docker pull {tagToUse}'
if lIpAddr != 'none':
mySSH.command(cmd, '\$', 120)
response = mySSH.getBefore()
else:
logging.info(cmd)
response = subprocess.check_output(cmd, shell=True, universal_newlines=True)
if re.search('Status: Downloaded newer image for |Status: Image is up to date for', response) is None:
logging.debug(response)
msg = f'Could not pull {image} from local registry : {tagToUse}'
logging.error(msg)
if lIpAddr != 'none':
mySSH.close()
HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK)
return False
cmd = 'docker logout porcepix.sboai.cs.eurecom.fr'
if lIpAddr != 'none':
mySSH.command(cmd, '\$', 5)
response = mySSH.getBefore()
else:
logging.info(cmd)
response = subprocess.check_output(cmd, shell=True, universal_newlines=True)
if re.search('Removing login credentials', response) is None:
msg = 'Could not log off from local registry'
logging.error(msg)
mySSH.close()
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
return False
if lIpAddr != 'none':
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
def Clean_Test_Server_Images(self, HTML):
# This method can be called either onto a remote server (different from python executor)
# or directly on the python executor (ie lIpAddr == 'none')
if self.testSvrId == '0':
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
lSourcePath = self.eNBSourceCodePath
elif self.testSvrId == '1':
lIpAddr = self.eNB1IPAddress
lUserName = self.eNB1UserName
lPassWord = self.eNB1Password
lSourcePath = self.eNB1SourceCodePath
elif self.testSvrId == '2':
lIpAddr = self.eNB2IPAddress
lUserName = self.eNB2UserName
lPassWord = self.eNB2Password
lSourcePath = self.eNB2SourceCodePath
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
if lIpAddr != 'none':
logging.debug('Removing test images from server: ' + lIpAddr)
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
else:
logging.debug('Removing test images locally')
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
for image in imageNames:
cmd = f'docker rmi {self.ImageTagToUse(image)} || true'
if lIpAddr != 'none':
mySSH.command(cmd, '\$', 5)
else:
logging.info(cmd)
subprocess.run(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
if lIpAddr != 'none':
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
@@ -639,39 +851,37 @@ class Containerize():
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
mySSH.command('cp docker-compose.yml ci-docker-compose.yml', '\$', 5)
imageTag = 'develop'
if (self.ranAllowMerge):
imageTag = 'ci-temp'
mySSH.command('sed -i -e "s/image: oai-enb:latest/image: oai-enb:' + imageTag + '/" ci-docker-compose.yml', '\$', 2)
mySSH.command('sed -i -e "s/image: oai-gnb:latest/image: oai-gnb:' + imageTag + '/" ci-docker-compose.yml', '\$', 2)
imagesList = ['oai-enb', 'oai-gnb']
for image in imagesList:
imageToUse = self.ImageTagToUse(image)
mySSH.command(f'sed -i -e "s#image: {image}:latest#image: {imageToUse}#" ci-docker-compose.yml', '\$', 2)
localMmeIpAddr = EPC.MmeIPAddress
mySSH.command('sed -i -e "s/CI_MME_IP_ADDR/' + localMmeIpAddr + '/" ci-docker-compose.yml', '\$', 2)
# if self.flexranCtrlDeployed:
# mySSH.command('sed -i -e "s/FLEXRAN_ENABLED:.*/FLEXRAN_ENABLED: \'yes\'/" ci-docker-compose.yml', '\$', 2)
# mySSH.command('sed -i -e "s/CI_FLEXRAN_CTL_IP_ADDR/' + self.flexranCtrlIpAddress + '/" ci-docker-compose.yml', '\$', 2)
# else:
# mySSH.command('sed -i -e "s/FLEXRAN_ENABLED:.*$/FLEXRAN_ENABLED: \'no\'/" ci-docker-compose.yml', '\$', 2)
# mySSH.command('sed -i -e "s/CI_FLEXRAN_CTL_IP_ADDR/127.0.0.1/" ci-docker-compose.yml', '\$', 2)
# Currently support only one
mySSH.command('echo ' + lPassWord + ' | sudo -S b2xx_fx3_utils --reset-device', '\$', 15)
mySSH.command('docker-compose --file ci-docker-compose.yml config --services | sed -e "s@^@service=@" 2>&1', '\$', 10)
result = re.search('service=(?P<svc_name>[a-zA-Z0-9\_]+)', mySSH.getBefore())
if result is not None:
svcName = result.group('svc_name')
mySSH.command('docker-compose --file ci-docker-compose.yml up -d ' + svcName, '\$', 15)
svcName = self.services[self.eNB_instance]
if svcName == '':
logging.warning('no service name given: starting all services in ci-docker-compose.yml!')
mySSH.command(f'docker-compose --file ci-docker-compose.yml up -d -- {svcName}', '\$', 30)
# Checking Status
mySSH.command('docker-compose --file ci-docker-compose.yml config', '\$', 5)
grep = ''
if svcName != '': grep = f' | grep -A3 {svcName}'
mySSH.command(f'docker-compose --file ci-docker-compose.yml config {grep}', '\$', 5)
result = re.search('container_name: (?P<container_name>[a-zA-Z0-9\-\_]+)', mySSH.getBefore())
unhealthyNb = 0
healthyNb = 0
startingNb = 0
containerName = ''
usedImage = ''
imageInfo = ''
if result is not None:
containerName = result.group('container_name')
time.sleep(5)
@@ -686,6 +896,20 @@ class Containerize():
else:
time.sleep(10)
cnt += 1
mySSH.command('docker inspect --format="ImageUsed: {{.Config.Image}}" ' + containerName, '\$', 5)
for stdoutLine in mySSH.getBefore().split('\n'):
if stdoutLine.count('ImageUsed: porcepix'):
usedImage = stdoutLine.replace('ImageUsed: porcepix', 'porcepix').strip()
logging.debug('Used image is ' + usedImage)
if usedImage != '':
mySSH.command('docker image inspect --format "* Size = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id = {{.Id}}" ' + usedImage, '\$', 5, silent=True)
for stdoutLine in mySSH.getBefore().split('\n'):
if re.search('Size = [0-9]', stdoutLine) is not None:
imageInfo += stdoutLine.strip() + '\n'
if re.search('Creation = [0-9]', stdoutLine) is not None:
imageInfo += stdoutLine.strip() + '\n'
if re.search('Id = sha256', stdoutLine) is not None:
imageInfo += stdoutLine.strip() + '\n'
logging.debug(' -- ' + str(healthyNb) + ' healthy container(s)')
logging.debug(' -- ' + str(unhealthyNb) + ' unhealthy container(s)')
logging.debug(' -- ' + str(startingNb) + ' still starting container(s)')
@@ -710,16 +934,29 @@ class Containerize():
else:
# containers are unhealthy, so we won't start. However, logs are stored at the end
# in UndeployObject so we here store the logs of the unhealthy container to report it
logfilename = f'{lSourcePath}/cmake_targets/{self.eNB_logFile[self.eNB_instance]}'
mySSH.command('docker logs {containerName} > {logfilename}', '\$', 30)
logfilename = f'{lSourcePath}/cmake_targets/log/{self.eNB_logFile[self.eNB_instance]}'
mySSH.command(f'docker logs {containerName} > {logfilename}', '\$', 30)
mySSH.copyin(lIpAddr, lUserName, lPassWord, logfilename, '.')
mySSH.close()
html_queue = SimpleQueue()
html_cell = '<pre style="background-color:white">\n'
if usedImage != '':
html_cell += f'Used Image = {usedImage} :\n'
html_cell += imageInfo
else:
html_cell += 'Could not retrieve used image info!\n'
if status:
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
html_cell += '\nHealthy deployment!\n'
else:
html_cell += '\nUnhealthy deployment! -- Check logs for reason!\n'
html_cell += '</pre>'
html_queue.put(html_cell)
if status:
HTML.CreateHtmlTestRowQueue('N/A', 'OK', CONST.ENB_PROCESS_OK, html_queue)
else:
self.exitStatus = 1
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlTestRowQueue('N/A', 'KO', CONST.ENB_PROCESS_OK, html_queue)
def UndeployObject(self, HTML, RAN):
@@ -745,64 +982,73 @@ class Containerize():
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
# Currently support only one
mySSH.command('docker-compose --file ci-docker-compose.yml config', '\$', 5)
containerName = ''
containerToKill = False
result = re.search('container_name: (?P<container_name>[a-zA-Z0-9\-\_]+)', mySSH.getBefore())
if self.eNB_logFile[self.eNB_instance] == '':
self.eNB_logFile[self.eNB_instance] = 'enb_' + HTML.testCase_id + '.log'
if result is not None:
containerName = result.group('container_name')
containerToKill = True
if containerToKill:
mySSH.command('docker inspect ' + containerName, '\$', 30)
result = re.search('Error: No such object: ' + containerName, mySSH.getBefore())
if result is not None:
containerToKill = False
if containerToKill:
mySSH.command('docker kill --signal INT ' + containerName, '\$', 30)
time.sleep(5)
mySSH.command('docker kill --signal KILL ' + containerName, '\$', 30)
time.sleep(5)
mySSH.command('docker logs ' + containerName + ' > ' + lSourcePath + '/cmake_targets/' + self.eNB_logFile[self.eNB_instance], '\$', 30)
mySSH.command('docker rm -f ' + containerName, '\$', 30)
# Forcing the down now to remove the networks and any artifacts
mySSH.command('docker-compose --file ci-docker-compose.yml down', '\$', 5)
svcName = self.services[self.eNB_instance]
forceDown = False
if svcName != '':
logging.warning(f'service name given, but will stop all services in ci-docker-compose.yml!')
svcName = ''
mySSH.command(f'docker-compose -f ci-docker-compose.yml config --services', '\$', 5)
# first line has command, last line has next command prompt
allServices = mySSH.getBefore().split('\r\n')[1:-1]
services = []
for s in allServices:
mySSH.command(f'docker-compose -f ci-docker-compose.yml ps --all -- {s}', '\$', 5, silent=False)
running = mySSH.getBefore().split('\r\n')[3:-1]
#logging.debug(f'running services: {running}')
if len(running) > 0: # something is running for that service
services.append(s)
logging.info(f'stopping services {services}')
mySSH.command(f'docker-compose -f ci-docker-compose.yml stop', '\$', 30)
time.sleep(5) # give some time to running containers to stop
for svcName in services:
# head -n -1 suppresses the final "X exited with status code Y"
filename = f'{svcName}-{HTML.testCase_id}.log'
#mySSH.command(f'docker-compose -f ci-docker-compose.yml logs --no-log-prefix -- {svcName} | head -n -1 &> {lSourcePath}/cmake_targets/log/{filename}', '\$', 30)
mySSH.command(f'docker-compose -f ci-docker-compose.yml logs --no-log-prefix -- {svcName} &> {lSourcePath}/cmake_targets/log/{filename}', '\$', 120)
mySSH.command('docker-compose -f ci-docker-compose.yml down', '\$', 5)
# Cleaning any created tmp volume
mySSH.command('docker volume prune --force || true', '\$', 20)
mySSH.command('docker volume prune --force', '\$', 20)
mySSH.close()
# Analyzing log file!
if containerToKill:
copyin_res = mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/' + self.eNB_logFile[self.eNB_instance], '.')
else:
copyin_res = 0
nodeB_prefix = 'e'
if (copyin_res == -1):
HTML.htmleNBFailureMsg='Could not copy ' + nodeB_prefix + 'NB logfile to analyze it!'
files = ','.join([f'{s}-{HTML.testCase_id}' for s in services])
if len(services) > 1:
files = '{' + files + '}'
copyin_res = 0
if len(services) > 0:
copyin_res = mySSH.copyin(lIpAddr, lUserName, lPassWord, f'{lSourcePath}/cmake_targets/log/{files}.log', '.')
if copyin_res == -1:
HTML.htmleNBFailureMsg='Could not copy logfile to analyze it!'
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
self.exitStatus = 1
else:
if containerToKill:
logging.debug('\u001B[1m Analyzing ' + nodeB_prefix + 'NB logfile \u001B[0m ' + self.eNB_logFile[self.eNB_instance])
logStatus = RAN.AnalyzeLogFile_eNB(self.eNB_logFile[self.eNB_instance], HTML, self.ran_checkers)
else:
logStatus = 0
if (logStatus < 0):
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
else:
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
for svcName in services:
filename = f'{svcName}-{HTML.testCase_id}.log'
logging.debug(f'\u001B[1m Analyzing logfile {filename}\u001B[0m')
logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
if (logStatus < 0):
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
self.exitStatus = 1
else:
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
# all the xNB run logs shall be on the server 0 for logCollecting
if containerToKill and self.eNB_serverId[self.eNB_instance] != '0':
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + self.eNB_logFile[self.eNB_instance], self.eNBSourceCodePath + '/cmake_targets/')
logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m')
if self.eNB_serverId[self.eNB_instance] != '0':
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, f'./{files}.log', f'{self.eNBSourceCodePath}/cmake_targets/')
if self.exitStatus == 0:
logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m')
else:
logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m')
def DeployGenObject(self, HTML, RAN, UE):
self.exitStatus = 0
logging.info('\u001B[1m Checking Services to deploy\u001B[0m')
logging.debug('\u001B[1m Checking Services to deploy\u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose config --services'
logging.debug(cmd)
logging.info(cmd)
try:
listServices = subprocess.check_output(cmd, shell=True, universal_newlines=True)
except Exception as e:
@@ -818,15 +1064,17 @@ class Containerize():
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
return
if (self.ranAllowMerge):
cmd = 'cd ' + self.yamlPath[0] + ' && sed -e "s@develop@ci-temp@" docker-compose.y*ml > docker-compose-ci.yml'
else:
cmd = 'cd ' + self.yamlPath[0] + ' && sed -e "s@develop@develop@" docker-compose.y*ml > docker-compose-ci.yml'
logging.debug(cmd)
cmd = 'cd ' + self.yamlPath[0] + ' && cp docker-compose.y*ml docker-compose-ci.yml'
subprocess.run(cmd, shell=True)
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
for image in imageNames:
tagToUse = self.ImageTagToUse(image)
cmd = f'cd {self.yamlPath[0]} && sed -i -e "s@{image}:develop@{tagToUse}@" docker-compose-ci.yml'
logging.debug(cmd)
subprocess.run(cmd, shell=True)
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml up -d ' + self.services[0]
logging.debug(cmd)
logging.info(cmd)
try:
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
except Exception as e:
@@ -835,7 +1083,7 @@ class Containerize():
HTML.CreateHtmlTestRow('Could not deploy', 'KO', CONST.ALL_PROCESSES_OK)
return
logging.info('\u001B[1m Checking if all deployed healthy\u001B[0m')
logging.debug('\u001B[1m Checking if all deployed healthy\u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps -a'
count = 0
healthy = 0
@@ -930,7 +1178,7 @@ class Containerize():
cmd += ' -w /tmp/capture_'
ymlPath = self.yamlPath[0].split('/')
cmd += ymlPath[1] + '.pcap > /tmp/tshark.log 2>&1 &'
logging.debug(cmd)
logging.info(cmd)
networkNames = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
self.tsharkStarted = True
@@ -939,22 +1187,24 @@ class Containerize():
ymlPath = self.yamlPath[0].split('/')
logPath = '../cmake_targets/log/' + ymlPath[1]
if (self.ranAllowMerge):
cmd = 'cd ' + self.yamlPath[0] + ' && sed -e "s@develop@ci-temp@" docker-compose.y*ml > docker-compose-ci.yml'
else:
cmd = 'cd ' + self.yamlPath[0] + ' && sed -e "s@develop@develop@" docker-compose.y*ml > docker-compose-ci.yml'
logging.debug(cmd)
cmd = 'cd ' + self.yamlPath[0] + ' && cp docker-compose.y*ml docker-compose-ci.yml'
logging.info(cmd)
subprocess.run(cmd, shell=True)
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
for image in imageNames:
tagToUse = self.ImageTagToUse(image)
cmd = f'cd {self.yamlPath[0]} && sed -i -e "s@{image}:develop@{tagToUse}@" docker-compose-ci.yml'
subprocess.run(cmd, shell=True)
# check which containers are running for log recovery later
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
logging.debug(cmd)
logging.info(cmd)
deployStatusLogs = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
# Stop the containers to shut down objects
logging.debug('\u001B[1m Stopping containers \u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml stop'
logging.debug(cmd)
logging.info(cmd)
try:
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
except Exception as e:
@@ -976,16 +1226,16 @@ class Containerize():
anyLogs = True
cName = res.group('container_name')
cmd = 'cd ' + self.yamlPath[0] + ' && docker logs ' + cName + ' > ' + cName + '.log 2>&1'
logging.debug(cmd)
logging.info(cmd)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
if re.search('magma-mme', cName) is not None:
cmd = 'cd ' + self.yamlPath[0] + ' && docker cp -L ' + cName + ':/var/log/mme.log ' + cName + '-full.log'
logging.debug(cmd)
logging.info(cmd)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
fullStatus = True
if anyLogs:
cmd = 'mkdir -p '+ logPath + ' && cp ' + self.yamlPath[0] + '/*.log ' + logPath
logging.debug(cmd)
logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
# Analyzing log file(s)!
@@ -1035,25 +1285,25 @@ class Containerize():
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
cmd = 'rm ' + self.yamlPath[0] + '/*.log'
logging.debug(cmd)
logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
if self.tsharkStarted:
self.tsharkStarted = True
ymlPath = self.yamlPath[0].split('/')
cmd = 'sudo chmod 666 /tmp/capture_' + ymlPath[1] + '.pcap'
logging.debug(cmd)
logging.info(cmd)
copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
cmd = 'cp /tmp/capture_' + ymlPath[1] + '.pcap ' + logPath
logging.debug(cmd)
logging.info(cmd)
copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
cmd = 'sudo rm /tmp/capture_' + ymlPath[1] + '.pcap'
logging.debug(cmd)
logging.info(cmd)
copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
self.tsharkStarted = False
logging.debug('\u001B[1m Undeploying \u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml down'
logging.debug(cmd)
logging.info(cmd)
try:
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
except Exception as e:
@@ -1066,7 +1316,7 @@ class Containerize():
self.deployedContainers = []
# Cleaning any created tmp volume
cmd = 'docker volume prune --force || true'
logging.debug(cmd)
logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
if fullStatus:
@@ -1074,7 +1324,7 @@ class Containerize():
logging.info('\u001B[1m Undeploying OAI Object(s) PASS\u001B[0m')
else:
HTML.CreateHtmlTestRow('n/a', 'KO', CONST.ALL_PROCESSES_OK)
logging.info('\u001B[1m Undeploying OAI Object(s) FAIL\u001B[0m')
logging.error('\u001B[1m Undeploying OAI Object(s) FAIL\u001B[0m')
def StatsFromGenObject(self, HTML):
self.exitStatus = 0
@@ -1083,7 +1333,7 @@ class Containerize():
# if the containers are running, recover the logs!
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
logging.debug(cmd)
logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
cmd = 'docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" '
anyLogs = False
@@ -1099,7 +1349,7 @@ class Containerize():
cmd += res.group('container_name') + ' '
message = ''
if anyLogs:
logging.debug(cmd)
logging.info(cmd)
stats = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
for statLine in stats.split('\n'):
logging.debug(statLine)
@@ -1119,7 +1369,7 @@ class Containerize():
cmd = 'docker exec ' + self.pingContName + ' /bin/bash -c "ping ' + self.pingOptions + '" 2>&1 | tee ' + logPath + '/ping_' + HTML.testCase_id + '.log || true'
logging.debug(cmd)
logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
result = re.search(', (?P<packetloss>[0-9\.]+)% packet loss, time [0-9\.]+ms', deployStatus)
@@ -1176,15 +1426,15 @@ class Containerize():
logging.error('\u001B[1;37;41m ping test FAIL -- ' + message + ' \u001B[0m')
HTML.CreateHtmlTestRowQueue(self.pingOptions, 'KO', 1, html_queue)
# Automatic undeployment
logging.debug('----------------------------------------')
logging.debug('\u001B[1m Starting Automatic undeployment \u001B[0m')
logging.debug('----------------------------------------')
logging.warning('----------------------------------------')
logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m')
logging.warning('----------------------------------------')
HTML.testCase_id = 'AUTO-UNDEPLOY'
HTML.desc = 'Automatic Un-Deployment'
self.UndeployGenObject(HTML, RAN, UE)
self.exitStatus = 1
def IperfFromContainer(self, HTML, RAN):
def IperfFromContainer(self, HTML, RAN, UE):
self.exitStatus = 0
ymlPath = self.yamlPath[0].split('/')
@@ -1193,112 +1443,38 @@ class Containerize():
logStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
# Start the server process
cmd = 'docker exec -d ' + self.svrContName + ' /bin/bash -c "nohup iperf ' + self.svrOptions + ' > /tmp/iperf_server.log 2>&1" || true'
logging.debug(cmd)
serverStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
time.sleep(5)
cmd = f'docker exec -d {self.svrContName} /bin/bash -c "nohup iperf {self.svrOptions} > /tmp/iperf_server.log 2>&1"'
logging.info(cmd)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
time.sleep(3)
# Start the client process
cmd = 'docker exec ' + self.cliContName + ' /bin/bash -c "iperf ' + self.cliOptions + '" 2>&1 | tee '+ logPath + '/iperf_client_' + HTML.testCase_id + '.log || true'
logging.debug(cmd)
cmd = f'docker exec {self.cliContName} /bin/bash -c "iperf {self.cliOptions}" 2>&1 | tee {logPath}/iperf_client_{HTML.testCase_id}.log'
logging.info(cmd)
clientStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
# Stop the server process
cmd = 'docker exec ' + self.svrContName + ' /bin/bash -c "pkill iperf" || true'
logging.debug(cmd)
serverStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
time.sleep(5)
cmd = 'docker cp ' + self.svrContName + ':/tmp/iperf_server.log '+ logPath + '/iperf_server_' + HTML.testCase_id + '.log'
logging.debug(cmd)
serverStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
cmd = f'docker exec {self.svrContName} /bin/bash -c "pkill iperf"'
logging.info(cmd)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
time.sleep(3)
serverStatusFilename = f'{logPath}/iperf_server_{HTML.testCase_id}.log'
cmd = f'docker cp {self.svrContName}:/tmp/iperf_server.log {serverStatusFilename}'
logging.info(cmd)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
# Analyze client output
result = re.search('Server Report:', clientStatus)
if result is None:
result = re.search('read failed: Connection refused', clientStatus)
if result is not None:
message = 'Could not connect to iperf server!'
else:
message = 'Server Report and Connection refused Not Found!'
self.IperfExit(HTML, False, message)
logging.error('\u001B[1;37;41m Iperf Test FAIL\u001B[0m')
return
# Computing the requested bandwidth in float
result = re.search('-b (?P<iperf_bandwidth>[0-9\.]+)[KMG]', self.cliOptions)
if result is not None:
req_bandwidth = result.group('iperf_bandwidth')
req_bw = float(req_bandwidth)
result = re.search('-b [0-9\.]+K', self.cliOptions)
if result is not None:
req_bandwidth = '%.1f Kbits/sec' % req_bw
req_bw = req_bw * 1000
result = re.search('-b [0-9\.]+M', self.cliOptions)
if result is not None:
req_bandwidth = '%.1f Mbits/sec' % req_bw
req_bw = req_bw * 1000000
reportLine = None
reportLineFound = False
for iLine in clientStatus.split('\n'):
if reportLineFound:
reportLine = iLine
reportLineFound = False
res = re.search('Server Report:', iLine)
if res is not None:
reportLineFound = True
result = None
if reportLine is not None:
result = re.search('(?:|\[ *\d+\].*) (?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?P<jitter>[0-9\.]+ ms) +(\d+\/ ..\d+) +(\((?P<packetloss>[0-9\.]+)%\))', reportLine)
iperfStatus = True
if result is not None:
bitrate = result.group('bitrate')
packetloss = result.group('packetloss')
jitter = result.group('jitter')
logging.debug('\u001B[1;37;44m iperf result \u001B[0m')
iperfStatus = True
msg = 'Req Bitrate : ' + req_bandwidth + '\n'
logging.debug('\u001B[1;34m Req Bitrate : ' + req_bandwidth + '\u001B[0m')
if bitrate is not None:
msg += 'Bitrate : ' + bitrate + '\n'
logging.debug('\u001B[1;34m Bitrate : ' + bitrate + '\u001B[0m')
result = re.search('(?P<real_bw>[0-9\.]+) [KMG]bits/sec', str(bitrate))
if result is not None:
actual_bw = float(str(result.group('real_bw')))
result = re.search('[0-9\.]+ K', bitrate)
if result is not None:
actual_bw = actual_bw * 1000
result = re.search('[0-9\.]+ M', bitrate)
if result is not None:
actual_bw = actual_bw * 1000000
br_loss = 100 * actual_bw / req_bw
if br_loss < 90:
iperfStatus = False
bitperf = '%.2f ' % br_loss
msg += 'Bitrate Perf: ' + bitperf + '%\n'
logging.debug('\u001B[1;34m Bitrate Perf: ' + bitperf + '%\u001B[0m')
if packetloss is not None:
msg += 'Packet Loss : ' + packetloss + '%\n'
logging.debug('\u001B[1;34m Packet Loss : ' + packetloss + '%\u001B[0m')
if float(packetloss) > float(5):
msg += 'Packet Loss too high!\n'
logging.debug('\u001B[1;37;41m Packet Loss too high \u001B[0m')
iperfStatus = False
if jitter is not None:
msg += 'Jitter : ' + jitter + '\n'
logging.debug('\u001B[1;34m Jitter : ' + jitter + '\u001B[0m')
self.IperfExit(HTML, iperfStatus, msg)
else:
iperfStatus = False
logging.error('problem?')
self.IperfExit(HTML, iperfStatus, 'problem?')
# clientStatus was retrieved above. The serverStatus was
# written in the background, then copied to the local machine
with open(serverStatusFilename, 'r') as f:
serverStatus = f.read()
(iperfStatus, msg) = AnalyzeIperf(self.cliOptions, clientStatus, serverStatus)
if iperfStatus:
logging.info('\u001B[1m Iperf Test PASS\u001B[0m')
else:
logging.error('\u001B[1;37;41m Iperf Test FAIL\u001B[0m')
self.IperfExit(HTML, RAN, UE, iperfStatus, msg)
def IperfExit(self, HTML, status, message):
def IperfExit(self, HTML, RAN, UE, status, message):
html_queue = SimpleQueue()
html_cell = '<pre style="background-color:white">UE\n' + message + '</pre>'
html_queue.put(html_cell)
@@ -1307,6 +1483,14 @@ class Containerize():
else:
logging.error('\u001B[1m Iperf Test FAIL -- ' + message + ' \u001B[0m')
HTML.CreateHtmlTestRowQueue(self.cliOptions, 'KO', 1, html_queue)
# Automatic undeployment
logging.warning('----------------------------------------')
logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m')
logging.warning('----------------------------------------')
HTML.testCase_id = 'AUTO-UNDEPLOY'
HTML.desc = 'Automatic Un-Deployment'
self.UndeployGenObject(HTML, RAN, UE)
self.exitStatus = 1
def CheckAndAddRoute(self, svrName, ipAddr, userName, password):

View File

@@ -35,11 +35,6 @@ import re
import subprocess
import sshconnection
logging.basicConfig(
level=logging.DEBUG,
format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
)
class Log_Mgt:
def __init__(self,Username, IPAddress,Password,Path):

Some files were not shown because too many files have changed in this diff Show More