Compare commits

...

476 Commits

Author SHA1 Message Date
Anurag Asokan
e0256c8b0e Suppress cppcheck errors and warning 2023-01-16 10:54:59 +01:00
Robert Schmidt
214aa50595 Merge branch 'integration_2023_w02' into 'develop'
integration_2023_w02

See merge request oai/openairinterface5g!1906

!1796 Make SFN dependent on GPS time
!1874 Processing time optimization for SRS
!1881 Fix documentation of dot_product()
!1884 Prevent Msg3 to be scheduled in downlink slot when nrofUplinkSymbols = 0 and DDDSU
!1888 Adopting new BWP structure at UE (first MR)
!1890 Fix setup_time overflow in VNF processing thread
!1892 system.c cleaning check result of system call
!1893 fix buildhelper Soapy folder name, case not respected, reinstall was broken
!1894 doc(ci): adding constraint on the branch name
!1895 ASN_SEQUENCE_ADD return code was checked only in 0.5% of calls
!1900 bugfix CU/DU: use correct IP address for GTP-U
!1901 Adding NRPPA ASN1 definitions and library
!1903 bugfix in function channelmod_modify_cmd
!1867 CI: new Python classes for SSH & Local execution
restore LDPC docs
2023-01-14 08:39:57 +00:00
Robert Schmidt
7d3100dbe7 Force correct min_rxtxtime in OAI UE test 2023-01-13 13:42:13 +01:00
Robert Schmidt
18b9135c4f Fix warning in nFAPI 2023-01-12 18:05:16 +01:00
Robert Schmidt
75e542c6ad Restore LDPC decdoer documentation 2023-01-12 18:02:45 +01:00
Robert Schmidt
da099ca77a Merge remote-tracking branch 'origin/ci-new-ssh' into integration_2023_w02 2023-01-12 17:58:09 +01:00
Robert Schmidt
f36d7e8e96 Merge remote-tracking branch 'origin/bugfix_channelmod_modify_cmd' into integration_2023_w02 2023-01-12 17:57:23 +01:00
Robert Schmidt
1e812a4b7c Merge remote-tracking branch 'origin/nrppa_new' into integration_2023_w02 2023-01-12 17:57:14 +01:00
Robert Schmidt
2c3e4ef47f Merge remote-tracking branch 'origin/bugfix-cu-du-gtpu-correct-address' into integration_2023_w02 2023-01-12 17:57:06 +01:00
Robert Schmidt
47a4da8d5f Merge remote-tracking branch 'origin/fix-check-return-ASN_SEQUENCE_ADD' into integration_2023_w02 2023-01-12 17:56:56 +01:00
Robert Schmidt
3598180557 Merge remote-tracking branch 'origin/documentation-branch-name' into integration_2023_w02 2023-01-12 17:56:13 +01:00
Robert Schmidt
a040fbddf2 Merge remote-tracking branch 'origin/kharobcom_fixbuildhelper' into integration_2023_w02 2023-01-12 17:56:03 +01:00
Robert Schmidt
6620471822 Merge remote-tracking branch 'origin/kharobcom_cleansystemfile' into integration_2023_w02 2023-01-12 17:55:54 +01:00
Robert Schmidt
da70a37551 Merge remote-tracking branch 'origin/FAPI_fix_setup_time_from_overflowing' into integration_2023_w02 2023-01-12 17:55:42 +01:00
Robert Schmidt
ce1246e0dd Merge remote-tracking branch 'origin/NR_UE_BWP_reworking' into integration_2022_wk02 2023-01-12 17:49:22 +01:00
Robert Schmidt
3b4371e01c Merge remote-tracking branch 'origin/Hotfix_Msg3_scheduling' into integration_2022_wk02 2023-01-12 17:46:27 +01:00
Robert Schmidt
6886f0d3dd Merge remote-tracking branch 'origin/dot-prod-doc' into integration_2022_wk02 2023-01-12 17:46:19 +01:00
Robert Schmidt
451937d88b Merge remote-tracking branch 'origin/develop-SRS-in-ulsim' into integration_2022_wk02 2023-01-12 17:46:09 +01:00
Karim Harouat
096a32bf16 system.c : cleaning check result of system call 2023-01-12 14:28:38 +01:00
Rúben Soares da Silva
cdf7fb6f70 Fix setup_time overflow in vnf processing thread, preventing gNB from stopping message processing once setup_time overflowed 2023-01-12 10:17:03 +00:00
Robert Schmidt
3b9107228a cls_containerize: Add comment to help understand the magnitude of size 2023-01-11 15:15:08 +01:00
Robert Schmidt
57dbc79668 cls_physim1: Mention python version and separate Python/own modules 2023-01-11 15:15:08 +01:00
Robert Schmidt
074cf91bec cls_cluster: various fixes after review
- Mention python version and separate Python/own modules
- Use constants for registry and namespace name
- Provide OC url in oc login
- Do not perform oc logout in background
2023-01-11 15:15:06 +01:00
Robert Schmidt
941acb2e8d Tag cluster images with branch and commit ID 2023-01-11 15:15:06 +01:00
Robert Schmidt
7361c1689e Use new SSH class to execute image build 2023-01-11 15:15:06 +01:00
Robert Schmidt
de4a9e1d5a Use new SSH class to execute cluster build 2023-01-11 15:13:21 +01:00
Robert Schmidt
ce03b84898 Add new SSH/local cmd classes 2023-01-11 15:10:55 +01:00
Adeel Malik
affa5e3086 bugfix in function channelmod_modify_cmd 2023-01-11 11:12:19 +01:00
Florian Kaltenberger
89bddc76f0 addressing reviewer comments 2023-01-11 10:13:01 +01:00
Robert Schmidt
21ef822c45 Shorten IP address buffer to avoid strncpy() warning 2023-01-11 09:59:39 +01:00
laurent
9a789dbb8a ASN_SEQUENCE_ADD return code was checked only in 0.5% of calls, existing errors not detected by sanitize address 2023-01-11 09:59:39 +01:00
Florian Kaltenberger
24237b3e35 adapting ans1 handling of NRPPA to new framework 2023-01-10 11:26:27 +01:00
Florian Kaltenberger
1434175a84 adding Mohsen's NRPPA main program to CMakeLists.txt 2023-01-10 10:23:55 +01:00
ahadi
b7762141e8 added NRPPA .asm file and compiled the functions to CMakeFiles 2023-01-10 10:21:05 +01:00
Cedric Roux
551aee172a bugfix CU/DU: use correct IP address for GTP-U
Not only the teid is received from the DU but also the IP address. We
have to use it too.

Also, don't connect the UDP socket. The parameter remote_s_address in the
configuration file must not be used, at least not for gtp-u because the
IP address is received from the DU (plus for later, for multiple DUs, it
won't work at all).
2023-01-09 15:19:07 +01:00
Raphael Defosseux
719e36159d doc(ci): adding constraint on the branch name
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2023-01-03 09:58:02 +01:00
francescomani
01030bbc4e L2 simulator fix 2022-12-30 10:32:58 +01:00
Karim Harouat
f277a27f57 fix buildhelper Saopy folder name, case not respected, reinstall was broken 2022-12-30 08:54:53 +01:00
francescomani
5300c57f3d common BWP structure and further improvements 2022-12-27 19:00:41 +01:00
francescomani
e55e880b71 cleaning up of dci functions 2022-12-27 18:32:30 +01:00
francescomani
1e6db77be7 first commit 2022-12-27 18:26:06 +01:00
Florian Kaltenberger
675ebb1f22 attempt to fix issues when starting with SFN > 0 2022-12-27 16:01:44 +01:00
Florian Kaltenberger
ad6c250595 adressing reviewer comment 2022-12-27 11:49:47 +01:00
Florian Kaltenberger
00c36d7b40 fixing "making SFN dependent on GPS time"
in fact it syncs the USRP time to GPS time when available and then derives the SFN from the USRP time.
2022-12-27 11:49:47 +01:00
Roberto Louro Magueta
a7db9280b8 Generate SRS sequence only when needed 2022-12-23 10:39:11 +00:00
Roberto Louro Magueta
c6bfb97988 Remove calloc of report_tlv, prg_list and prgs 2022-12-23 10:39:11 +00:00
Roberto Louro Magueta
f7a34d4274 Rename some variables 2022-12-23 10:39:11 +00:00
Roberto Louro Magueta
4c6a1c722b Change input of rrc_get_max_nr_csrs() from uint8_t to int 2022-12-23 10:39:11 +00:00
Roberto Louro Magueta
01ddccb101 Fix size of IQ channel_matrix of SRS 2022-12-23 10:39:11 +00:00
Roberto Louro Magueta
b95b95e7a7 Add SRS time stats in nr_ulsim 2022-12-23 10:39:11 +00:00
Roberto Louro Magueta
44dabd7377 Add SRS enable/disable as input command line in nr_ulsim 2022-12-23 10:39:10 +00:00
Roberto Louro Magueta
93770edc8a Add SRS in nr_ulsim 2022-12-23 10:39:10 +00:00
Robert Schmidt
1a0c0cd1c9 Merge branch 'integration_2022_wk51' into 'develop'
integration_2022_wk51

See merge request oai/openairinterface5g!1877

!1823 NR UE improve RA procedures (continuation)
!1863 fixes for mixed slot without uplink symbols
!1865 Remove max power limitation in p_NR_FR1
!1866 Small fixes from Fujitsu branch
fix OAIUE test
!1638 Implementation of RRC NR_Paging message at gNB
!1846 NR limit dl_DataToUL_ACK
!1864 Derive K_NG-RAN* key for RRCReestablishment
!1871 Improvements in 5G RAR and DCI for initial BWP larger than 180PRBs
!1872 Fix seed generation and physim script
!1860 Test reduced iterations for ULSIM 3GPP
!1873 Moved nr_ue_design.md to doc/
!1878 Bugfix wrong use of qsort in dl/ul schedulers
!1881 Fix documentation of dot_product()
!1815 NR UE moved PDSCH, rxdataF to stack
!1875 NR SA SIB1 status after failure
!1870 NR SA Tutorials
2022-12-23 07:22:54 +00:00
luis_pereira87
4a518335bb Prevent Msg3 to be scheduled in downlink slot when nrofUplinkSymbols = 0 and DDDSU 2022-12-22 18:17:10 +00:00
Robert Schmidt
315caca955 Merge remote-tracking branch 'origin/NR_SA_Tutorials' into integration_2022_wk51 2022-12-22 18:03:59 +01:00
Robert Schmidt
8943dfa131 Merge remote-tracking branch 'origin/NR_fix_sib1_reset_after_failure' into integration_2022_wk51 2022-12-22 18:03:52 +01:00
Robert Schmidt
027a8c6f9b Merge remote-tracking branch 'origin/NR_UE_pdsch_remove_global_vars' into integration_2022_wk51 2022-12-22 18:03:43 +01:00
Robert Schmidt
cc6d1ecded Merge remote-tracking branch 'origin/multi-ue-fixes' into integration_2022_wk51 2022-12-22 15:04:00 +01:00
Robert Schmidt
b6bc11635d Merge remote-tracking branch 'origin/NR_UE_moved_doc' into integration_2022_wk51 2022-12-22 15:03:52 +01:00
Robert Schmidt
a4e9a07d56 Merge remote-tracking branch 'origin/test_ulsim_lower_iterations' into integration_2022_wk51 2022-12-22 15:02:48 +01:00
francescomani
9e7ef62c9d 3GPP UL tests with 7 iterations of LDPC 2022-12-22 15:02:04 +01:00
Robert Schmidt
bacf3537cf Merge remote-tracking branch 'origin/fix-seed-physim-script' into integration_2022_wk51 2022-12-22 15:00:31 +01:00
Robert Schmidt
1af5062b6c Merge remote-tracking branch 'origin/NR_fix_intial_BWP_more_than_180' into integration_2022_wk51 2022-12-22 15:00:23 +01:00
Robert Schmidt
d21f6411fc Merge remote-tracking branch 'origin/nr_derive_key_ng_ran_star' into integration_2022_wk51 2022-12-22 14:59:36 +01:00
Robert Schmidt
599fd419df Merge remote-tracking branch 'origin/NR_limit_dl_DataToUL_ACK' into integration_2022_wk51 2022-12-22 14:59:28 +01:00
Robert Schmidt
d6a01a73d4 Merge remote-tracking branch 'origin/NR_RRC_Paging' into integration_2022_wk51 2022-12-22 14:59:15 +01:00
laurent
ef65ad6cd5 fix doc only 2022-12-22 11:36:24 +01:00
Robert Schmidt
2c846e26a0 OAI UE: use 2x2 config file, tune-offset, min_rxtxtime 2022-12-22 10:45:38 +01:00
laurent
97bce21005 code review comments, simplify asn1 coding 2022-12-20 15:37:31 +01:00
luis_pereira87
44d309a69d Implementation of RRC NR_Paging message at gNB 2022-12-20 15:37:26 +01:00
Sakthivel Velumani
4d2093e765 Updated doc, spell checked 2022-12-20 19:49:59 +05:30
Robert Schmidt
c9f737d310 Merge remote-tracking branch 'origin/NR_small_fixes_from_fujitsu_branch' into integration_2022_wk51 2022-12-19 21:39:25 +01:00
Robert Schmidt
ffb2d23b18 Merge remote-tracking branch 'origin/NR_remove_limitation_p_NR_FR1' into integration_2022_wk51 2022-12-19 21:39:16 +01:00
Robert Schmidt
64a65a878a Merge remote-tracking branch 'origin/NR_mixed_slot_fixes' into integration_2022_wk51 2022-12-19 21:39:09 +01:00
Robert Schmidt
d66bc22175 Merge remote-tracking branch 'origin/NR_UE_improve_RA_contd' into integration_2022_wk51 2022-12-19 21:39:00 +01:00
francescomani
54641a14fd removing additional BWPs from config files 2022-12-19 16:57:03 +01:00
Guido Casati
3a24b66ecf Define for RX/TX Max Size of RLC buffers
- new definition to replace hardcoded values
2022-12-19 16:45:15 +01:00
francescomani
7f31659a86 limit dl_DataToUL_ACK to the number of slots per frame to avoid the need to resize VRB_map and UL_tti_req_ahead 2022-12-19 16:35:06 +01:00
Robert Schmidt
8cacbb884c Address review comments 2022-12-19 16:23:40 +01:00
Robert Schmidt
e99c019fb4 Use get_random_seed() to initialize GTP module 2022-12-19 15:57:10 +01:00
Robert Schmidt
92d5270adf Use get_random_seed() in set_taus_seed(), used by taus() 2022-12-19 15:57:09 +01:00
Robert Schmidt
2ec0b4b8fe Make on static library SIMU, drop SIMU_COMMON
Almost all targets used both SIMU and SIMU_COMMON. So instead of
linking one in the other, this commit merges both libraries into a
common SIMU lib.  Further, we never load SIMU dynamically -- hence
make it a static library.

Also, this commit cleans up CMakeLists.txt to prevent multiple
compilations of taus.c
2022-12-19 15:57:09 +01:00
Robert Schmidt
c1f85d4f07 Remove some commented code 2022-12-19 15:57:09 +01:00
Robert Schmidt
fb6f9d3bf0 Read /dev/urandom to init RNG for uniformrandom and gaussZiggurat 2022-12-19 15:57:09 +01:00
Robert Schmidt
e695f24277 Fix autotests: read correct log file when evaluating sim runs 2022-12-19 15:57:09 +01:00
Guido
c99539a806 Bugfix wrong use of qsort
- The qsort() function is defined as:
  void qsort(void *base, size_t nmemb, size_t size,
    int (*compar)(const void *, const void *));
  and sorts an array with nmemb elements of size size.
- in the gNB scheduling functions, nmemb and size were swapped
- this was causing a stack overflow ending with a SEGFAULT under certain circumstances
2022-12-19 15:15:05 +01:00
Guido Casati
b375a804bf Cleanup of NUMBER_OF_NR_UE_MAX and its references
- this defition is obsolete
2022-12-19 15:15:04 +01:00
francescomani
88192f1339 fixes for mixed slot without uplink symbols 2022-12-19 10:24:02 +01:00
francescomani
01369343e6 flag to set sib1 decoded status 2022-12-19 09:49:38 +01:00
Sakthivel Velumani
c0f03f2960 Reduced scope of llr_buffer
Direct check on dlsim buffer
2022-12-18 11:33:54 +05:30
Sakthivel Velumani
d487666995 No need to set rxdataF to 0
full symbol buffer will be written bt DFT
2022-12-18 10:08:12 +05:30
Sakthivel Velumani
c31fe381f8 Simplified function args
removed gNB_id and slot from function calls where proc is used.
2022-12-18 10:08:12 +05:30
Sakthivel Velumani
573e7fd98a Changed rxdataF from int32_t to c16_t 2022-12-18 10:08:12 +05:30
Sakthivel Velumani
06ef311975 Moved PDSCH, rxdataF to stack
--Removed NR_UE_PDSCH global structure
--Changed UE scope to accomodate local PDSCH data
--Removed common_vars.rxdataF from global structure
2022-12-18 10:08:08 +05:30
Robert Schmidt
cfe698eb70 Merge branch 'integration_2022_wk50' into 'develop'
integration_2022_wk50

See merge request oai/openairinterface5g!1869

!1663 UL-MIMO working with 2 layers
!1705 RNTI to UE ID in PDCP, SDAP, GTPU, ...
!1818 Move /targets/user to /executables
!1835 Improve NR SRS configuration
!1837 Add Configuration File Naming Style Guide
!1852 Get data from SRB 1 when generating Msg4
!1857 Use F1AP to transfer SRB1 messages in monolithic mode
!1858 fix NR_LDPC_NUM_BN_GROUPS_BG2_R15
!1862 Fix for msg3 scheduling
!1814 Initial web server implementation
!1847 Move 5G RFsim tests from RAN-CI-develop to RAN-Container-Parent
timeout for RFsim
2022-12-17 07:51:39 +00:00
Sakthivel Velumani
b80f2a2eb8 Moved nr_ue_design.md to doc/ 2022-12-16 19:10:47 +05:30
luis_pereira87
5db45c1024 Tutorials: Enable Performance Mode in Ubuntu 22 2022-12-16 09:03:30 +00:00
luis_pereira87
fe146678ce Tutorials: rename UE to nrUE 2022-12-16 09:03:30 +00:00
luis_pereira87
494dad9f7a Tutorials: Add a note to run OAI gNB with min_rxtxtime 6 when using OAI UE 2022-12-16 09:03:30 +00:00
Robert Schmidt
805dbe7272 Lower RFsim timeout when no UE connected
This will lead to quicker drop of the UE context in the gNB once it
disconnected from RFsim.
2022-12-15 17:04:10 +01:00
francescomani
b58791bee0 fixing l2 simulator and addressing review comments 2022-12-15 16:55:06 +01:00
luis_pereira87
f8f1723b71 Derive K_NG-RAN* key for RRCReestablishment 2022-12-15 15:47:36 +00:00
Robert Schmidt
7bd0153079 Merge remote-tracking branch 'origin/ci-5g-tests-ran-container-parent' into integration_2022_wk50 2022-12-15 16:30:39 +01:00
Robert Schmidt
23c92ee0ed Merge remote-tracking branch 'origin/websrv2' into integration_2022_wk50 2022-12-15 16:30:33 +01:00
Robert Schmidt
69a1eb2f6a Merge remote-tracking branch 'origin/NR_msg3_fix' into integration_2022_wk50 2022-12-15 16:30:26 +01:00
Robert Schmidt
e9bbf624a6 Merge remote-tracking branch 'origin/NR_LDPC_NUM_BN_GROUPS_BG2_R15' into integration_2022_wk50 2022-12-15 16:30:17 +01:00
Robert Schmidt
7b9f610b8c Merge remote-tracking branch 'origin/F1_SRB1' into integration_2022_wk50 2022-12-15 16:28:15 +01:00
Robert Schmidt
cc55c4315c Merge remote-tracking branch 'origin/Msg4_SRB1' into integration_2022_wk50 2022-12-15 16:25:23 +01:00
Robert Schmidt
77eb877dec Merge remote-tracking branch 'origin/conf-file-naming-guide' into integration_2022_wk50 2022-12-15 16:25:15 +01:00
Robert Schmidt
fca07aae56 Merge remote-tracking branch 'origin/NR_improve_SRS_configuration' into integration_2022_wk50 2022-12-15 16:22:22 +01:00
Robert Schmidt
6ecf3db1e5 Merge remote-tracking branch 'origin/move_user_execs' into integration_2022_wk50 2022-12-15 16:17:29 +01:00
Robert Schmidt
0271ff711d Merge remote-tracking branch 'origin/e1-patch-merge1' into integration_2022_wk50 2022-12-15 16:17:22 +01:00
francescomani
0f57c8e699 remove generate_nr_prach 2022-12-15 16:00:57 +01:00
francescomani
1d1d8a1ef5 nr_ue_get_rach at MAC -> separation completed 2022-12-15 16:00:57 +01:00
francescomani
fab5987754 remove ue mode 2022-12-15 16:00:57 +01:00
francescomani
98ca29b220 cherry-picking some fixes from fujitsu branch 2022-12-15 15:24:07 +01:00
francescomani
2822e87067 remove limitation in p_NR_FR1 2022-12-15 14:07:58 +01:00
Raymond Knopp
9dc8eccaf4 fix for msg3 scheduling 2022-12-14 17:43:57 +01:00
laurent
75a18c33cd change name of single var that may be corenetwork ue id or RAN rnti 2022-12-14 15:46:53 +01:00
Sakthivel Velumani
4fe3599a43 PDCP config as two functions 2022-12-14 15:12:29 +01:00
Roberto Louro Magueta
da63ee61fb Replace _mm_srai_epi16 by simde_mm_srai_epi16 2022-12-14 14:03:22 +00:00
Roberto Louro Magueta
dd8f280842 SRS configured using the UE_Capability_nr 2022-12-14 14:03:22 +00:00
Roberto Louro Magueta
22e1cdfcc3 Add CI tests for UL 2-layers for 16QAM and 64QAM 2022-12-14 14:03:22 +00:00
Roberto Louro Magueta
f3747a0bcf Update feature set 2022-12-14 14:03:22 +00:00
Roberto Louro Magueta
e28e026777 Implementation of function reset_sched_ctrl() 2022-12-14 14:03:22 +00:00
Roberto Louro Magueta
4fb8f83999 PHY-simulators working fine for UL-2 layers with 16QAM and 64QAM 2022-12-14 14:03:22 +00:00
Roberto Louro Magueta
93756a56eb Fix hardcoded number of layers for the UL 2022-12-14 14:03:22 +00:00
Roberto Louro Magueta
ec858d175d Compute TPMI based on SRS for 2 layers 2022-12-14 14:03:22 +00:00
Roberto Louro Magueta
65bd93721d Compute UL-RI (and the number of UL layers) based on SRS for 2x2 2022-12-14 14:00:31 +00:00
Roberto Louro Magueta
1c18f09b6e Add UE_Capability_nr config file 2022-12-14 14:00:31 +00:00
Roberto Louro Magueta
d05ff49dd0 Fix size of UE_Capability_nr message at UE 2022-12-14 14:00:31 +00:00
Sagar Arora
6d0eadcac2 (fix): Manually assign physim pods to nodes
The physim tests fail because, typically, the same tests gets assigned
to the same node which then is overloaded. This MR assigns pods to
different nodes to prevent this.
2022-12-14 14:52:56 +01:00
Robert Schmidt
c3d01306de CI: fix type in cluster build script 2022-12-14 09:42:38 +01:00
francescomani
c0aea206c2 fixes in RAR and DCI for initial BWP larger than 180PRBs 2022-12-13 14:52:43 +01:00
Sakthivel Velumani
ec21db63eb GTP PDCP change rnti to ue id 2022-12-13 12:42:32 +01:00
Robert Schmidt
9308369e28 Add configuration naming style guide 2022-12-13 10:15:54 +01:00
Anurag Asokan
215bb1b02c Moving to execuatbles (incorporating comments) 2022-12-13 09:21:01 +01:00
Robert Schmidt
12384bbe25 Clean up phy_init_nr_gNB()
- variable is_secondary_gnb is not used anywhere, so remove
- variable lowmem is not used/defines should be changed, so remove
2022-12-12 23:40:39 +01:00
Robert Schmidt
d64921a24f Deactivate legacy 5G RFsim pipeline 2022-12-12 23:40:39 +01:00
Robert Schmidt
3608f5cfb5 Add Container 5G RFsim FR2 32PRB test XML 2022-12-12 23:40:39 +01:00
Robert Schmidt
c4c03a48ac Add docker-compose for FR2 32PRB 5G RFsim test 2022-12-12 23:40:39 +01:00
Robert Schmidt
bb9df947eb Add Container 5G RFsim TDD do-ra test XML 2022-12-12 23:40:39 +01:00
Robert Schmidt
ebd4d8d628 Add docker-compose for TDD do-ra 5G RFsim test 2022-12-12 23:40:39 +01:00
Robert Schmidt
40f951f13d Add Container 5G RFsim FDD phytest test XML 2022-12-12 23:40:39 +01:00
Robert Schmidt
bc12d222bb Add docker-compose for FDD phytest 5G RFsim test 2022-12-12 23:40:39 +01:00
Robert Schmidt
8091c9f17f Add Container 5G RFsim 24PRB test XML 2022-12-12 23:40:39 +01:00
Robert Schmidt
325e58bc10 Add docker-compose for 24 PRB 5G RFsim test 2022-12-12 23:40:39 +01:00
Robert Schmidt
6e43b1f12d Fix tab names for 5G RFsim TDD SA test 2022-12-12 23:40:39 +01:00
Robert Schmidt
35330baeea CI: Fix AnalyzeIperf
- Handle k(ilo) bytes
- Fix magnitudes for kilo and giga
- Correctly parse status line in iperf logs
2022-12-12 23:37:39 +01:00
Robert Schmidt
55455a03c0 Install iperf in gNB and eNB containers 2022-12-12 23:37:39 +01:00
Robert Schmidt
9d564f3691 Hack: enable UL traffic in do-ra mode
This commit enables UL traffic in do-ra mode by doing two changes:
- configure SDAP to send traffic to TUN interface instead of GTP by
  abusing enb_flag=0 (i.e., setting UE mode for gNB SDAP)
- manually enable RLC LCID in UE MAC, since nr_DRB_preconfiguration()
  statically enables one DRB bearer, without notifying MAC
2022-12-12 23:37:39 +01:00
Robert Schmidt
235cd40c98 Change default EPS bearer/PDU session ID to 10 for do_ra 2022-12-12 23:37:34 +01:00
francescomani
f67e0e3f02 Phytest fix to re-enable scheduling pucch transmission at ue 2022-12-12 23:37:26 +01:00
francescomani
e72b6fc448 Bugfix for fr2 xlsch bitmap 2022-12-12 23:37:20 +01:00
luis_pereira87
7c3b00301f Use F1AP to transfer SRB1 messages in monolithic mode 2022-12-12 18:55:40 +00:00
Robert Schmidt
a97dfedb78 Merge branch 'integration_2022_wk49' into 'develop'
integration_2022_wk49

See merge request oai/openairinterface5g!1851

!1714 first-fix-rrc-mac-interface
!1755 DL/UL channel estimation improvement
!1788 NR RRC harmonization of CSI reporting
!1848 Remove old RNTI at MAC layer when Msg3 RRCSetupRequest carries ng-5G-S-TMSI-Part1
deactivate SRS in SA tests: creates RT problems
!1809 Doppler Effect
!1831 Nr ue fix asn1 memleak
!1842 Parallelize ASN.1 generation and build
!1853 Correct ue_ip driver module for RHEL9
!1850 Fix T1 offload test
!1461 Optimize LTE TM2 modulation (doesn't work well but it is already the case)
!1806 Repair doxygen documentation generation
!1856 hotfix for nr_rrc_data_req for the unfortunate SDU size 255
2022-12-10 14:05:58 +00:00
francescomani
bfd819c5b4 fix NR_LDPC_NUM_BN_GROUPS_BG2_R15 2022-12-09 13:59:12 +01:00
Robert Schmidt
4629b21775 Merge remote-tracking branch 'origin/nr_rrc_data_req-hotfix' into integration_2022_wk49 2022-12-08 20:01:06 +01:00
Robert Schmidt
fcf983d332 Merge remote-tracking branch 'origin/refresh-doxygen' into integration_2022_wk49 2022-12-08 20:00:57 +01:00
Robert Schmidt
9df2b44082 Merge remote-tracking branch 'origin/optimize_lte_tx_tm2' into integration_2022_wk49 2022-12-08 20:00:19 +01:00
frtabu
e65f13e175 review fixes 2022-12-08 15:27:33 +01:00
Raymond Knopp
3b0eed2edc hotfix to avoid checking for sdu_sizeP=255 in nr_rrc_data_req. If ever
the SDU has this size the function will return. This is an old piece of
code where 255 meant -1 which was what was returned from the asn1c
encoding function if the ASN.1 message was not encodable.
2022-12-07 22:23:10 +01:00
Robert Schmidt
3d4b0ac575 Merge remote-tracking branch 'origin/fix-ue-ip' into integration_2022_wk49 2022-12-07 19:05:21 +01:00
Robert Schmidt
9c978ebf61 Merge remote-tracking branch 'origin/fix-t1-offload' into integration_2022_wk49 2022-12-07 19:05:08 +01:00
Robert Schmidt
af6458395c Merge remote-tracking branch 'origin/parallel-asn1' into integration_2022_wk49 2022-12-07 19:04:59 +01:00
Robert Schmidt
d62a111c93 Merge remote-tracking branch 'origin/NR_UE_fix_ASN1_memleak' into integration_2022_wk49 2022-12-07 19:04:53 +01:00
Robert Schmidt
78a675922c Merge remote-tracking branch 'origin/develop-chModels-Doppler' into integration_2022_wk49 2022-12-07 19:04:43 +01:00
laurent
c8c158e065 gcc ubsan detected warnings 2022-12-07 15:54:27 +01:00
Raymond Knopp
e97bf2b25a added QPSK/16QAM TX optimizations for TM2 2022-12-07 15:53:26 +01:00
Raymond Knopp
e6a2ffb42d optimization of symbols with CRS in TM2 2022-12-07 15:53:25 +01:00
Robert Schmidt
9baeae540b Doxygen: explicit cmake option, more corrections
- Correct log message for directory of generated doxygen doc
- Correct path for image
- Skip to build libraries if not requested
2022-12-07 15:45:12 +01:00
luis_pereira87
e8893bccc4 Get data from SRB 1 when generating Msg4
For example in the case of a RRCReestablishment
2022-12-07 13:30:39 +00:00
Laurent Thomas
d0be747017 Correct ue_ip driver module for RHEL9 2022-12-07 14:04:23 +01:00
Robert Schmidt
7eae19ae01 Deactivate SRS in SA tests: create RT problems 2022-12-06 21:49:58 +01:00
Robert Schmidt
562c5367b7 Merge remote-tracking branch 'origin/NR_MAC_Remove_UE_when_Msg3_TMSI' into integration_2022_wk49 2022-12-06 21:40:58 +01:00
Robert Schmidt
2729ef3894 Merge remote-tracking branch 'origin/NR_CSI_reporting_harmonization' into integration_2022_wk49 2022-12-06 21:28:34 +01:00
Robert Schmidt
53a91d0cca Merge remote-tracking branch 'origin/develop-UL-chEst-improvements' into integration_2022_wk49 2022-12-06 21:28:27 +01:00
Sakthivel Velumani
7da2ed309a Fix code indentation 2022-12-07 00:45:46 +05:30
Sakthivel Velumani
161ef33963 Free ASN1 decoder memory for BCCH 2022-12-07 00:42:13 +05:30
luis_pereira87
a980d47918 Add warning comment related with accessing MAC structures directly from RRC 2022-12-06 15:12:07 +00:00
Robert Schmidt
e797933a00 Workaround to make 4G feMBMS pass 2022-12-06 12:15:53 +01:00
Robert Schmidt
6f9fdf5d84 CI: Use correct IPAddress variable for log collection 2022-12-06 11:31:58 +01:00
francescomani
ba28a365c0 clang formatting 2022-12-06 09:18:22 +01:00
Laurent THOMAS
00d1114fa3 fix the regressions blocking doxygen documentation generation 2022-12-06 08:45:30 +01:00
laurent
a1d80515e2 add a bug fix to takcly usefully CI run 2022-12-02 16:47:21 +01:00
laurent
1e8719c183 first-fix-rrc-mac-interface 2022-12-02 16:47:21 +01:00
Robert Schmidt
68836079d4 Only force ASN.1 generation and build for certain targets 2022-12-02 15:43:18 +01:00
Robert Schmidt
35d5c432df Always trigger ASN.1 compilation at beginning 2022-12-02 15:43:18 +01:00
Robert Schmidt
34424c77eb Remove unnecessary ASN.1 macros and generation scripts 2022-12-02 15:43:18 +01:00
Robert Schmidt
feeb017eb3 Generate and build LPP ASN.1 during build time 2022-12-02 15:43:18 +01:00
Robert Schmidt
21a252a275 Generate and build M3AP ASN.1 during build time 2022-12-02 15:43:17 +01:00
Robert Schmidt
2c79b0a438 Generate and build M2AP ASN.1 during build time 2022-12-02 15:43:10 +01:00
Robert Schmidt
09b4c65782 Generate and build LTE RRC ASN.1 during build time 2022-12-02 15:43:05 +01:00
Robert Schmidt
8f2e1f6662 Only use NR RRC >= v16 2022-12-02 15:43:00 +01:00
Robert Schmidt
60bc5397e8 Generate and build NR RRC ASN.1 during build time 2022-12-02 15:42:59 +01:00
Robert Schmidt
2e6a1c36a4 Generate and build NGAP ASN.1 during build time 2022-12-02 15:42:50 +01:00
Robert Schmidt
2a93484f2b Generate and build S1AP ASN.1 during build time 2022-12-02 15:42:42 +01:00
Robert Schmidt
cf6ff96b21 Generate and build X2AP ASN.1 during build time 2022-12-02 15:42:35 +01:00
Robert Schmidt
d379e968d6 Generate and build F1AP ASN.1 during build time 2022-12-02 15:42:29 +01:00
luis_pereira87
fe413d6bc7 Remove old RNTI at MAC layer when Msg3 RRCSetupRequest carries ng-5G-S-TMSI-Part1 2022-12-02 14:40:22 +00:00
francescomani
df6a5fd864 fix SRS period and offset 2022-12-02 10:37:24 +01:00
francescomani
644f613409 adding vrb occupation to srs 2022-12-02 10:25:08 +01:00
francescomani
64c1b8ac93 adapting ul tda to srs 2022-12-02 10:25:08 +01:00
francescomani
230a6c3f45 more generic periodic SRS configuration 2022-12-02 10:25:08 +01:00
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
Roberto Louro Magueta
42478ead37 Update RRC configuration for DMRS type 2022-11-30 14:22:53 +00:00
Roberto Louro Magueta
0c9047e11f Fix DL channel estimation for 2-layers for DMRS Type 1 2022-11-30 14:22:53 +00:00
Roberto Louro Magueta
a35035f9a6 Remove replicated code in nr_pdsch_channel_estimation() 2022-11-30 14:22:53 +00:00
Roberto Louro Magueta
9162b115c2 Run UL 3GPP CI tests with Linear interpolation as Channel estimation technique in Frequency domain 2022-11-30 14:22:53 +00:00
Roberto Louro Magueta
eb41150d01 Filters improvement for linear interpolation as UL channel estimation technique 2022-11-30 14:22:53 +00: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
frtabu
93a6d4087d Initial web server implementation 2022-11-30 11:36:39 +01:00
frtabu
21b3484e02 Initial web server implementation 2022-11-30 11:34:54 +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
francescomani
0ab8c8d976 use SSB for reference until we have a better implementation of BWP 2022-11-29 12:26:44 +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
bf5cf3c908 Call cdMul() function 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta
3845e5cff3 Add a Doppler of 10 Hz in UL 3GPP CI tests 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta
610cfc66e1 Call multipath_channel() function in nr_ulsim to apply the Doppler Effect 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta
2b40675b3a Apply Doppler Effect 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta
5238183336 Add Maximum Doppler Frequency in command line for nr_ulsim 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta
9b04af1b52 Put the center_freq and maxDoppler as input of new_channel_desc_scm() function 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta
e44a99b3c1 Implementation of get_cexp_doppler() function to compute the Doppler Effect 2022-11-25 10:56:52 +00: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
francescomani
8303ddcf6f fixes 2022-11-24 15:23:41 +01:00
francescomani
1708092aec assertion to avoid wrong CSI report slot configuration 2022-11-24 10:45:35 +01:00
francescomani
0f42998258 bugfix 2022-11-24 10:45:35 +01:00
francescomani
0dc4959741 CSI MIMO meas harmonization 2022-11-24 10:45:35 +01:00
francescomani
4856c17770 harmonization of RSRP meas config 2022-11-24 10:45:35 +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
Roberto Louro Magueta
408e7abd2f Generate SRS sequence for every received SRS signal 2022-10-20 14:39:17 +01: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
francescomani
44ee11be8e cleanup NR UE dead code 2022-10-18 09:03:25 +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
francescomani
85285a55ea disabling dualConnectivityPHR in attempt to fix NSA PHR report 2022-09-23 10:18:08 +02:00
1097 changed files with 77416 additions and 144327 deletions

View File

@@ -103,5 +103,85 @@ SpacesInParentheses: false
SpacesInSquareBrackets: false
TabWidth: 2
UseTab: Never
---
Language: JavaScript
# BasedOnStyle: Google
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignOperands: true
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakStringLiterals: true
ColumnLimit: 200
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DisableFormat: false
FixNamespaceComments: true
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
ReflowComments: true
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
DeriveLineEnding: true
TabWidth: 2
JavaScriptQuotes: Double
UseTab: Never
...

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,8 @@ We want to make contributing to this project as easy and transparent as possible
* This decision was made for the license reasons.
* The Continuous Integration will reject your merge request.
- All merge requests SHALL have `develop` branch as target branch.
- All merge requests SHALL have source branch names that SHALL not contain the `/` character.
* We are using a `docker` registry scheme and the image names are based on the source branch name.
## Coding Styles ##

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.dlsim100rbtm2}}
nodeName: {{ .Values.global.nodeName.dlsim100rbtm2 }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.dlsimbasic}}
nodeName: {{ .Values.global.nodeName.dlsimbasic }}
{{- end }}

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,23 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.ldpctest}}
nodeName: {{ .Values.global.nodeName.ldpctest }}
{{- end }}

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,23 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrdlschsim}}
nodeName: {{ .Values.global.nodeName.nrdlschsim }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrdlsimbasic}}
nodeName: {{ .Values.global.nodeName.nrdlsimbasic }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrdlsimdmrsptrs}}
nodeName: {{ .Values.global.nodeName.nrdlsimdmrsptrs }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrdlsimmcsmimo}}
nodeName: {{ .Values.global.nodeName.nrdlsimmcsmimo }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrdlsimoffset}}
nodeName: {{ .Values.global.nodeName.nrdlsimoffset }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrpbschsim106rb}}
nodeName: {{ .Values.global.nodeName.nrpbschsim106rb }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrpbchsim217rb}}
nodeName: {{ .Values.global.nodeName.nrpbchsim217rb }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrpbchsim273rb}}
nodeName: {{ .Values.global.nodeName.nrpbchsim273rb }}
{{- end }}

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,23 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrprachsim}}
nodeName: {{ .Values.global.nodeName.nrprachsim }}
{{- end }}

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,23 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrpucchsim}}
nodeName: {{ .Values.global.nodeName.nrpucchsim }}
{{- end }}

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,23 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrulschsim}}
nodeName: {{ .Values.global.nodeName.nrulschsim }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrulsim3gpp}}
nodeName: {{ .Values.global.nodeName.nrulsim3gpp }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrulsimmimo}}
nodeName: {{ .Values.global.nodeName.nrulsimmimo }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrulsimmisc}}
nodeName: {{ .Values.global.nodeName.nrulsimmisc }}
{{- end }}

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,14 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.nrulsimscfdma}}
nodeName: {{ .Values.global.nodeName.nrulsimscfdma }}
{{- end }}

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,23 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.polartest}}
nodeName: {{ .Values.global.nodeName.polartest }}
{{- end }}

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,23 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.smallblocktest}}
nodeName: {{ .Values.global.nodeName.smallblocktest }}
{{- end }}

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,23 @@ 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
{{- if .Values.global.nodeSelector}}
nodeSelector:
{{- toYaml .Values.global.nodeSelector | nindent 12 }}
{{- end }}
{{- if .Values.global.nodeName.ulsim}}
nodeName: {{ .Values.global.nodeName.ulsim }}
{{- end }}

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,35 @@
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
## 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
# removing the node selector
nodeSelector: {}
# It is not a good way of assigning pods to the nodes: this way we bypass the scheduler. At the moment we don't provide the resource information of these pods.
# Therefore, Openshift assigns the pods to the same node because it thinks the pods don't consume much resources. This isn't the case, they consume a lot of resources.
nodeName:
dlsim100rbtm2: acamas
dlsimbasic: acamas
ldpctest: acamas
nrdlschsim: acamas
nrdlsimbasic: acamas
nrdlsimdmrsptrs: acamas
nrdlsimmcsmimo: acamas
nrdlsimoffset: dedale
nrpbschsim106rb: dedale
nrpbchsim217rb: dedale
nrpbchsim273rb: dedale
nrprachsim: dedale
nrpucchsim: dedale
nrulschsim: theseus
nrulsim3gpp: theseus
nrulsimmimo: theseus
nrulsimmisc: theseus
nrulsimscfdma: theseus
polartest: theseus
smallblocktest: theseus
ulsim: theseus

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"* ]] || [[ "$VM_NAME" == *"rf5g-sim"* ]] || [[ "$VM_NAME" == *"gnb-usrp"* ]] || [[ "$VM_NAME" == *"nr-ue-usrp"* ]]
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

@@ -19,29 +19,27 @@
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
# Python for CI of OAI-eNB + COTS-UE
#
# Required Python Version
# Python 3.x
#
# Required Python Package
# pexpect
#---------------------------------------------------------------------
#-----------------------------------------------------------
# Import
#-----------------------------------------------------------
import logging
import sshconnection as SSH
import cls_oai_html
#import os
import re
import time
#import subprocess
import sys
import cls_oai_html
import constants as CONST
import helpreadme as HELP
import cls_containerize
import cls_cmd
IMAGE_REGISTRY_SERVICE_NAME = "image-registry.openshift-image-registry.svc"
NAMESPACE = "oaicicd-ran"
class Cluster:
def __init__(self):
@@ -58,86 +56,73 @@ class Cluster:
self.ranCommitID = ""
self.ranAllowMerge = False
self.ranTargetBranch = ""
self.cmd = None
def _recreate_entitlements(self, sshSession):
def _recreate_entitlements(self):
# recreating entitlements, don't care if deletion fails
sshSession.command('oc delete secret etc-pki-entitlement', '\$', 5)
if re.search(r"not found", sshSession.getBefore()):
logging.warning("no secrets etc-pki-entitlement found, recreating")
sshSession.command('ls /etc/pki/entitlement/???????????????????.pem | tail -1', '\$', 5, silent=True)
regres1 = re.search(r"/etc/pki/entitlement/[0-9]+.pem", sshSession.getBefore())
sshSession.command('ls /etc/pki/entitlement/???????????????????-key.pem | tail -1', '\$', 5, silent=True)
regres2 = re.search(r"/etc/pki/entitlement/[0-9]+-key.pem", sshSession.getBefore())
self.cmd.run('oc delete secret etc-pki-entitlement')
ret = self.cmd.run('ls /etc/pki/entitlement/???????????????????.pem | tail -1', silent=True)
regres1 = re.search(r"/etc/pki/entitlement/[0-9]+.pem", ret.stdout)
ret = self.cmd.run('ls /etc/pki/entitlement/???????????????????-key.pem | tail -1', silent=True)
regres2 = re.search(r"/etc/pki/entitlement/[0-9]+-key.pem", ret.stdout)
if regres1 is None or regres2 is None:
logging.error("could not find entitlements")
return false
return False
file1 = regres1.group(0)
file2 = regres2.group(0)
sshSession.command(f'oc create secret generic etc-pki-entitlement --from-file {file1} --from-file {file2}', '\$', 5)
regres = re.search(r"secret/etc-pki-entitlement created", sshSession.getBefore())
if regres is None:
ret = self.cmd.run(f'oc create secret generic etc-pki-entitlement --from-file {file1} --from-file {file2}')
regres = re.search(r"secret/etc-pki-entitlement created", ret.stdout)
if ret.returncode != 0 or regres is None:
logging.error("could not create secret/etc-pki-entitlement")
return False
return True
def _recreate_bc(self, sshSession, name, newTag, filename):
self._retag_image_statement(sshSession, name, name, newTag, filename)
sshSession.command(f'oc delete -f {filename}', '\$', 5)
sshSession.command(f'oc create -f {filename}', '\$', 5)
before = sshSession.getBefore()
if re.search('buildconfig.build.openshift.io/[a-zA-Z\-0-9]+ created', before) is not None:
def _recreate_bc(self, name, newTag, filename):
self._retag_image_statement(name, name, newTag, filename)
self.cmd.run(f'oc delete -f {filename}')
ret = self.cmd.run(f'oc create -f {filename}')
if re.search('buildconfig.build.openshift.io/[a-zA-Z\-0-9]+ created', ret.stdout) is not None:
return True
logging.error('error while creating buildconfig: ' + sshSession.getBefore())
logging.error('error while creating buildconfig: ' + ret.stdout)
return False
def _recreate_is_tag(self, sshSession, name, newTag, filename):
sshSession.command(f'oc describe is {name}', '\$', 5)
if sshSession.getBefore().count('NotFound') > 0:
sshSession.command(f'oc create -f {filename}', '\$', 5)
before = sshSession.getBefore()
if re.search(f'imagestream.image.openshift.io/{name} created', before) is None:
logging.error('error while creating imagestream: ' + sshSession.getBefore())
def _recreate_is_tag(self, name, newTag, filename):
ret = self.cmd.run(f'oc describe is {name}')
if ret.returncode != 0:
ret = self.cmd.run(f'oc create -f {filename}')
if ret.returncode != 0:
logging.error(f'error while creating imagestream: {ret.stdout}')
return False
else:
logging.debug(f'-> imagestream {name} found')
image = f'{name}:{newTag}'
sshSession.command(f'oc delete istag {image}', '\$', 5) # we don't care if this fails, e.g., if it is missing
sshSession.command(f'oc create istag {image}', '\$', 5)
before = sshSession.getBefore()
if re.search(f'imagestreamtag.image.openshift.io/{image} created', before) is not None:
self.cmd.run(f'oc delete istag {image}', reportNonZero=False) # we don't care if this fails, e.g., if it is missing
ret = self.cmd.run(f'oc create istag {image}')
if ret.returncode == 0:
return True
logging.error('error while creating imagestreamtag: ' + sshSession.getBefore())
logging.error(f'error while creating imagestreamtag: {ret.stdout}')
return False
def _start_build(self, sshSession, name):
def _start_build(self, name):
# will return "immediately" but build runs in background
# if multiple builds are started at the same time, this can take some time, however
ret = sshSession.command(f'oc start-build {name} --from-file={self.eNBSourceCodePath}', '\$', 300)
before = sshSession.getBefore()
regres = re.search(r'build.build.openshift.io/(?P<jobname>[a-zA-Z0-9\-]+) started', str(before))
if ret != 0 or before.count('Uploading finished') != 1 or regres is None:
logging.error("error during oc start-build: " + sshSession.getBefore())
self._delete_pod(sshSession, name)
ret = self.cmd.run(f'oc start-build {name} --from-file={self.eNBSourceCodePath}')
regres = re.search(r'build.build.openshift.io/(?P<jobname>[a-zA-Z0-9\-]+) started', ret.stdout)
if ret.returncode != 0 or ret.stdout.count('Uploading finished') != 1 or regres is None:
logging.error(f"error during oc start-build: {ret.stdout}")
return None
return regres.group('jobname') + '-build'
def _delete_pod(self, sshSession, shortName):
sshSession.command(f"oc get pods | grep {shortName}", '\$', 5)
regres = re.search(rf'{shortName}-[0-9]+-build', sshSession.getBefore())
if regres is not None:
sshSession.command(f"oc delete pod {regres.group(0)}", '\$', 5)
else:
logging.warning(f"no pod found with name {shortName}")
def _wait_build_end(self, sshSession, jobs, timeout_sec, check_interval_sec = 5):
def _wait_build_end(self, jobs, timeout_sec, check_interval_sec = 5):
logging.debug(f"waiting for jobs {jobs} to finish building")
while timeout_sec > 0:
# check status
for j in jobs:
sshSession.command(f'oc get pods | grep {j}', '\$', 30, silent = True)
if sshSession.getBefore().count('Completed') > 0: jobs.remove(j)
if sshSession.getBefore().count('Error') > 0:
logging.error(f'error for job {j}: ' + sshSession.getBefore())
ret = self.cmd.run(f'oc get pods | grep {j}', silent = True)
if ret.stdout.count('Completed') > 0: jobs.remove(j)
if ret.stdout.count('Error') > 0:
logging.error(f'error for job {j}: {ret.stdout}')
return False
if jobs == []:
logging.debug('all jobs completed')
@@ -147,44 +132,43 @@ class Cluster:
logging.error(f"timeout while waiting for end of build of {jobs}")
return False
def _retag_image_statement(self, sshSession, oldImage, newImage, newTag, filename):
sshSession.command(f'sed -i -e "s#{oldImage}:latest#{newImage}:{newTag}#" {filename}', '\$', 5)
def _retag_image_statement(self, oldImage, newImage, newTag, filename):
self.cmd.run(f'sed -i -e "s#{oldImage}:latest#{newImage}:{newTag}#" {filename}')
def _get_image_size(self, sshSession, image, tag):
def _get_image_size(self, image, tag):
# get the SHA of the image we built using the image name and its tag
sshSession.command(f'oc describe is {image} | grep -A4 {tag}', '\$', 5)
result = re.search(f'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/(?P<imageSha>{image}@sha256:[a-f0-9]+)', sshSession.getBefore())
ret = self.cmd.run(f'oc describe is {image} | grep -A4 {tag}')
result = re.search(f'{IMAGE_REGISTRY_SERVICE_NAME}:5000/{NAMESPACE}/(?P<imageSha>{image}@sha256:[a-f0-9]+)', ret.stdout)
if result is None:
return -1
imageSha = result.group("imageSha")
# retrieve the size
sshSession.command(f'oc get -o json isimage {imageSha} | jq -Mc "{{dockerImageSize: .image.dockerImageMetadata.Size}}"', '\$', 5)
result = re.search('{"dockerImageSize":(?P<size>[0-9]+)}', str(sshSession.getBefore()))
ret = self.cmd.run(f'oc get -o json isimage {imageSha} | jq -Mc "{{dockerImageSize: .image.dockerImageMetadata.Size}}"')
result = re.search('{"dockerImageSize":(?P<size>[0-9]+)}', ret.stdout)
if result is None:
return -1
return int(result.group("size"))
def _deploy_pod(self, sshSession, filename, timeout = 30):
sshSession.command(f'oc create -f {filename}', '\$', 10)
result = re.search(f'pod/(?P<pod>[a-zA-Z0-9_\-]+) created', sshSession.getBefore())
def _deploy_pod(self, filename, timeout = 30):
ret = self.cmd.run(f'oc create -f {filename}')
result = re.search(f'pod/(?P<pod>[a-zA-Z0-9_\-]+) created', ret.stdout)
if result is None:
logging.error(f'could not deploy pod: {sshSession.getBefore()}')
logging.error(f'could not deploy pod: {ret.stdout}')
return None
pod = result.group("pod")
logging.debug(f'checking if pod {pod} is in Running state')
while timeout > 0:
sshSession.command(f'oc get pod {pod} -o json | jq -Mc .status.phase', '\$', 5, silent=True)
if re.search('"Running"', sshSession.getBefore()) is not None: return pod
ret = self.cmd.run(f'oc get pod {pod} -o json | jq -Mc .status.phase', silent=True)
if re.search('"Running"', ret.stdout) is not None: return pod
timeout -= 1
time.sleep(1)
logging.error(f'pod {pod} did not reach Running state')
self._undeploy_pod(sshSession, filename)
self._undeploy_pod(filename)
return None
def _undeploy_pod(self, sshSession, filename):
# to save time we start this in the background and trust that oc stops correctly
sshSession.command(f'oc delete -f {filename} &', '\$', 5)
def _undeploy_pod(self, filename):
self.cmd.run(f'oc delete -f {filename}')
def BuildClusterImage(self, HTML):
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
@@ -194,8 +178,7 @@ class Cluster:
lIpAddr = self.eNBIPAddress
lSourcePath = self.eNBSourceCodePath
if lIpAddr == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter: no SSH Credentials')
sys.exit('Insufficient Parameter: eNBSourceCodePath missing')
ocUserName = self.OCUserName
ocPassword = self.OCPassword
ocProjectName = self.OCProjectName
@@ -206,29 +189,27 @@ class Cluster:
sys.exit(f'ocRegistry {self.OCRegistry} should not start with http:// or https:// and end on a slash /')
logging.debug(f'Building on cluster triggered from server: {lIpAddr}')
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, "oaicicd", "SHOULD NOT BE NECESSARY")
self.cmd = cls_cmd.RemoteCmd(lIpAddr)
self.testCase_id = HTML.testCase_id
# Workaround for some servers, we need to erase completely the workspace
if self.forcedWorkspaceCleanup:
mySSH.command(f'rm -Rf {lSourcePath}', '\$', 15)
cls_containerize.CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
self.cmd.run(f'rm -Rf {lSourcePath}')
cls_containerize.CreateWorkspace(self.cmd, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
# we don't necessarily need a forced workspace cleanup, but in
# order to reduce the amount of data send to OpenShift, we
# to reduce the amount of data send to OpenShift, we
# manually delete all generated files in the workspace
mySSH.command(f'rm -rf {lSourcePath}/cmake_targets/ran_build', '\$', 30);
self.cmd.run(f'rm -rf {lSourcePath}/cmake_targets/ran_build');
baseTag = 'develop'
forceBaseImageBuild = False
imageTag = 'develop'
if self.ranAllowMerge: # merging MR branch into develop -> temporary image
imageTag = 'ci-temp'
imageTag = f'{self.ranBranch}-{self.ranCommitID[0:8]}'
if self.ranTargetBranch == 'develop':
mySSH.command(f'git diff HEAD..origin/develop -- cmake_targets/build_oai cmake_targets/tools/build_helper docker/Dockerfile.base.rhel8.2 | grep --colour=never -i INDEX', '\$', 5)
result = re.search('index', mySSH.getBefore())
ret = self.cmd.run(f'git diff HEAD..origin/develop -- cmake_targets/build_oai cmake_targets/tools/build_helper docker/Dockerfile.base.rhel8.2 | grep --colour=never -i INDEX')
result = re.search('index', ret.stdout)
if result is not None:
forceBaseImageBuild = True
baseTag = 'ci-temp'
@@ -236,120 +217,120 @@ class Cluster:
forceBaseImageBuild = True
# logging to OC Cluster and then switch to corresponding project
mySSH.command(f'oc login -u {ocUserName} -p {ocPassword} --server {self.OCUrl}', '\$', 31)
if mySSH.getBefore().count('Login successful.') == 0:
ret = self.cmd.run(f'oc login -u {ocUserName} -p {ocPassword} --server {self.OCUrl}')
if ret.returncode != 0:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
return False
mySSH.command(f'oc project {ocProjectName}', '\$', 30)
if mySSH.getBefore().count(f'Already on project "{ocProjectName}"') == 0 and mySSH.getBefore().count(f'Now using project "{self.OCProjectName}"') == 0:
ret = self.cmd.run(f'oc project {ocProjectName}')
if ret.returncode != 0:
logging.error(f'\u001B[1mUnable to access OC project {ocProjectName}\u001B[0m')
mySSH.command('oc logout', '\$', 30)
mySSH.close()
self.cmd.run('oc logout')
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PROJECT_FAIL)
return False
self._recreate_entitlements(mySSH)
self._recreate_entitlements()
status = True # flag to abandon compiling if any image fails
attemptedImages = []
if forceBaseImageBuild:
self._recreate_is_tag(mySSH, 'ran-base', baseTag, 'openshift/ran-base-is.yaml')
self._recreate_bc(mySSH, 'ran-base', baseTag, 'openshift/ran-base-bc.yaml')
ranbase_job = self._start_build(mySSH, 'ran-base')
self._recreate_is_tag('ran-base', baseTag, 'openshift/ran-base-is.yaml')
self._recreate_bc('ran-base', baseTag, 'openshift/ran-base-bc.yaml')
ranbase_job = self._start_build('ran-base')
attemptedImages += ['ran-base']
status = ranbase_job is not None and self._wait_build_end(mySSH, [ranbase_job], 600)
status = ranbase_job is not None and self._wait_build_end([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)
self.cmd.run(f'oc logs {ranbase_job} &> cmake_targets/log/ran-base.log') # cannot use cmd.run because of redirect
# 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')
self._retag_image_statement('ran-base', 'ran-base', baseTag, 'openshift/ran-base-log-retrieval.yaml')
pod = self._deploy_pod('openshift/ran-base-log-retrieval.yaml')
if pod is not None:
mySSH.command(f'mkdir -p cmake_targets/log/ran-base', '\$', 5)
mySSH.command(f'oc rsync {pod}:/oai-ran/cmake_targets/log/ cmake_targets/log/ran-base', '\$', 5)
self._undeploy_pod(mySSH, 'openshift/ran-base-log-retrieval.yaml')
self.cmd.run(f'mkdir -p cmake_targets/log/ran-base')
self.cmd.run(f'oc rsync {pod}:/oai-ran/cmake_targets/log/ cmake_targets/log/ran-base')
self._undeploy_pod('openshift/ran-base-log-retrieval.yaml')
else:
status = False
if status:
self._recreate_is_tag(mySSH, 'oai-physim', imageTag, 'openshift/oai-physim-is.yaml')
self._recreate_bc(mySSH, 'oai-physim', imageTag, 'openshift/oai-physim-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.phySim.rhel8.2')
physim_job = self._start_build(mySSH, 'oai-physim')
self._recreate_is_tag('oai-physim', imageTag, 'openshift/oai-physim-is.yaml')
self._recreate_bc('oai-physim', imageTag, 'openshift/oai-physim-bc.yaml')
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.phySim.rhel8.2')
physim_job = self._start_build('oai-physim')
attemptedImages += ['oai-physim']
self._recreate_is_tag(mySSH, 'ran-build', imageTag, 'openshift/ran-build-is.yaml')
self._recreate_bc(mySSH, 'ran-build', imageTag, 'openshift/ran-build-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.build.rhel8.2')
ranbuild_job = self._start_build(mySSH, 'ran-build')
self._recreate_is_tag('ran-build', imageTag, 'openshift/ran-build-is.yaml')
self._recreate_bc('ran-build', imageTag, 'openshift/ran-build-bc.yaml')
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.build.rhel8.2')
ranbuild_job = self._start_build('ran-build')
attemptedImages += ['ran-build']
wait = ranbuild_job is not None and physim_job is not None and self._wait_build_end(mySSH, [ranbuild_job, physim_job], 1200)
wait = ranbuild_job is not None and physim_job is not None and self._wait_build_end([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)
self.cmd.run(f'oc logs {ranbuild_job} &> cmake_targets/log/ran-build.log')
self.cmd.run(f'oc logs {physim_job} &> cmake_targets/log/oai-physim.log')
self.cmd.run(f'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')
self._recreate_bc(mySSH, 'oai-enb', imageTag, 'openshift/oai-enb-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.eNB.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.eNB.rhel8.2')
enb_job = self._start_build(mySSH, 'oai-enb')
self._recreate_is_tag('oai-enb', imageTag, 'openshift/oai-enb-is.yaml')
self._recreate_bc('oai-enb', imageTag, 'openshift/oai-enb-bc.yaml')
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.eNB.rhel8.2')
self._retag_image_statement('ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.eNB.rhel8.2')
enb_job = self._start_build('oai-enb')
attemptedImages += ['oai-enb']
self._recreate_is_tag(mySSH, 'oai-gnb', imageTag, 'openshift/oai-gnb-is.yaml')
self._recreate_bc(mySSH, 'oai-gnb', imageTag, 'openshift/oai-gnb-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.gNB.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.gNB.rhel8.2')
gnb_job = self._start_build(mySSH, 'oai-gnb')
self._recreate_is_tag('oai-gnb', imageTag, 'openshift/oai-gnb-is.yaml')
self._recreate_bc('oai-gnb', imageTag, 'openshift/oai-gnb-bc.yaml')
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.gNB.rhel8.2')
self._retag_image_statement('ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.gNB.rhel8.2')
gnb_job = self._start_build('oai-gnb')
attemptedImages += ['oai-gnb']
self._recreate_is_tag(mySSH, 'oai-gnb-aw2s', imageTag, 'openshift/oai-gnb-aw2s-is.yaml')
self._recreate_bc(mySSH, 'oai-gnb-aw2s', imageTag, 'openshift/oai-gnb-aw2s-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.gNB.aw2s.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.gNB.aw2s.rhel8.2')
gnb_aw2s_job = self._start_build(mySSH, 'oai-gnb-aw2s')
self._recreate_is_tag('oai-gnb-aw2s', imageTag, 'openshift/oai-gnb-aw2s-is.yaml')
self._recreate_bc('oai-gnb-aw2s', imageTag, 'openshift/oai-gnb-aw2s-bc.yaml')
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.gNB.aw2s.rhel8.2')
self._retag_image_statement('ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.gNB.aw2s.rhel8.2')
gnb_aw2s_job = self._start_build('oai-gnb-aw2s')
attemptedImages += ['oai-gnb-aw2s']
wait = enb_job is not None and gnb_job is not None and gnb_aw2s_job is not None and self._wait_build_end(mySSH, [enb_job, gnb_job, gnb_aw2s_job], 600)
wait = enb_job is not None and gnb_job is not None and gnb_aw2s_job is not None and self._wait_build_end([enb_job, gnb_job, gnb_aw2s_job], 600)
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)
self.cmd.run(f'oc logs {enb_job} &> cmake_targets/log/oai-enb.log')
self.cmd.run(f'oc logs {gnb_job} &> cmake_targets/log/oai-gnb.log')
self.cmd.run(f'oc logs {gnb_aw2s_job} &> cmake_targets/log/oai-gnb-aw2s.log')
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')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.lteUE.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.lteUE.rhel8.2')
lteue_job = self._start_build(mySSH, 'oai-lte-ue')
self._recreate_is_tag('oai-lte-ue', imageTag, 'openshift/oai-lte-ue-is.yaml')
self._recreate_bc('oai-lte-ue', imageTag, 'openshift/oai-lte-ue-bc.yaml')
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.lteUE.rhel8.2')
self._retag_image_statement('ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.lteUE.rhel8.2')
lteue_job = self._start_build('oai-lte-ue')
attemptedImages += ['oai-lte-ue']
self._recreate_is_tag(mySSH, 'oai-nr-ue', imageTag, 'openshift/oai-nr-ue-is.yaml')
self._recreate_bc(mySSH, 'oai-nr-ue', imageTag, 'openshift/oai-nr-ue-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.nrUE.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.nrUE.rhel8.2')
nrue_job = self._start_build(mySSH, 'oai-nr-ue')
self._recreate_is_tag('oai-nr-ue', imageTag, 'openshift/oai-nr-ue-is.yaml')
self._recreate_bc('oai-nr-ue', imageTag, 'openshift/oai-nr-ue-bc.yaml')
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.nrUE.rhel8.2')
self._retag_image_statement('ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.nrUE.rhel8.2')
nrue_job = self._start_build('oai-nr-ue')
attemptedImages += ['oai-nr-ue']
wait = lteue_job is not None and nrue_job is not None and self._wait_build_end(mySSH, [lteue_job, nrue_job], 600)
wait = lteue_job is not None and nrue_job is not None and self._wait_build_end([lteue_job, nrue_job], 600)
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)
self.cmd.run(f'oc logs {lteue_job} &> cmake_targets/log/oai-lte-ue.log')
self.cmd.run(f'oc logs {nrue_job} &> cmake_targets/log/oai-nr-ue.log')
self.cmd.run(f'oc get pods.metrics.k8s.io &>> cmake_targets/log/build-metrics.log', '\$', 10)
# split and analyze logs
imageSize = {}
for image in attemptedImages:
mySSH.command(f'mkdir -p cmake_targets/log/{image}', '\$', 5)
mySSH.command(f'python3 ci-scripts/docker_log_split.py --logfilename=cmake_targets/log/{image}.log', '\$', 5)
self.cmd.run(f'mkdir -p cmake_targets/log/{image}')
self.cmd.run(f'python3 ci-scripts/docker_log_split.py --logfilename=cmake_targets/log/{image}.log')
tag = imageTag if image != 'ran-base' else baseTag
size = self._get_image_size(mySSH, image, tag)
size = self._get_image_size(image, tag)
if size <= 0:
imageSize[image] = 'unknown -- BUILD FAILED'
status = False
@@ -359,16 +340,17 @@ 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);
self.cmd.run(f'oc get images | grep -e \'{grep_exp}\' &> cmake_targets/log/image_registry.log');
self.cmd.run(f'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)
cls_containerize.CopyLogsToExecutor(self.cmd, lSourcePath, build_log_name)
mySSH.command('for pod in $(oc get pods | tail -n +2 | awk \'{print $1}\'); do oc delete pod ${pod}; done', '\$', 60)
self.cmd.run('for pod in $(oc get pods | tail -n +2 | awk \'{print $1}\'); do oc delete pod ${pod}; done')
# logout will return eventually, but we don't care when -> start in background
mySSH.command('oc logout &', '\$', 5)
mySSH.close()
self.cmd.run(f'oc logout')
self.cmd.close()
# Analyze the logs
collectInfo = cls_containerize.AnalyzeBuildLogs(build_log_name, attemptedImages, status)

217
ci-scripts/cls_cmd.py Normal file
View File

@@ -0,0 +1,217 @@
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Required Python Version
# Python 3.x
#
#---------------------------------------------------------------------
import abc
import logging
import subprocess as sp
import os
import paramiko
import uuid
# provides a partial interface for the legacy SSHconnection class (getBefore(), command())
class Cmd(metaclass=abc.ABCMeta):
def cd(self, d, silent=False):
if d == None or d == '' or d == []:
self.cwd = None
elif d[0] == '/':
self.cwd = d
else:
if not self.cwd:
# no cwd set: get current working directory
self.cwd = self.run('pwd').stdout.strip()
self.cwd += f"/{d}"
if not silent:
logging.debug(f'cd {self.cwd}')
@abc.abstractmethod
def run(self, line, timeout=300, silent=False):
return
@abc.abstractmethod
def command(self, commandline, expectedline, timeout, silent=False, resync=False):
return
@abc.abstractmethod
def close(self):
return
@abc.abstractmethod
def getBefore(self):
return
@abc.abstractmethod
def copyin(self, scpIp, scpUser, scpPw, src, tgt):
return
@abc.abstractmethod
def copyout(self, scpIp, scpUser, scpPw, src, tgt):
return
class LocalCmd(Cmd):
def __init__(self, d = None):
self.cwd = d
self.cp = sp.CompletedProcess(args='', returncode=0, stdout='')
def run(self, line, timeout=300, silent=False, reportNonZero=True):
if type(line) is str:
line = [s for s in line.split(' ') if len(s) > 0]
if not silent:
logging.debug(' '.join(line))
try:
ret = sp.run(line, cwd=self.cwd, stdout=sp.PIPE, stderr=sp.STDOUT, timeout=timeout)
except Exception as e:
ret = sp.CompletedProcess(args=line, returncode=255, stdout=f'Exception: {str(e)}'.encode('utf-8'))
if ret.stdout is None:
ret.stdout = b''
ret.stdout = ret.stdout.decode('utf-8').strip()
if reportNonZero and ret.returncode != 0:
cmd = ' '.join(ret.args)
logging.warning(f'command "{cmd}" returned non-zero returncode {ret.returncode}: output:\n{ret.stdout}')
self.cp = ret
return ret
def command(self, commandline, expectedline=None, timeout=300, silent=False, resync=False):
line = [s for s in commandline.split(' ') if len(s) > 0]
if line[0] == 'cd':
self.cd(line[1], silent)
else:
self.run(line, timeout, silent)
return 0
def close(self):
pass
def getBefore(self):
return self.cp.stdout
def copyin(self, scpIp, scpUser, scpPw, src, tgt):
logging.warning("LocalCmd emulating sshconnection.copyin() function")
self.run(f'cp -r {src} {tgt}')
def copyout(self, scpIp, scpUser, scpPw, src, tgt):
logging.warning("LocalCmd emulating sshconnection.copyout() function")
self.run(f'cp -r {src} {tgt}')
class RemoteCmd(Cmd):
def __init__(self, hostname, d=None):
logging.getLogger('paramiko').setLevel(logging.INFO) # prevent spamming through Paramiko
self.client = paramiko.SSHClient()
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
cfg = RemoteCmd._lookup_ssh_config(hostname)
self.client.connect(**cfg)
self.cwd = d
self.cp = sp.CompletedProcess(args='', returncode=0, stdout='')
def _lookup_ssh_config(hostname):
ssh_config = paramiko.SSHConfig()
user_config_file = os.path.expanduser("~/.ssh/config")
if os.path.exists(user_config_file):
with open(user_config_file) as f:
ssh_config.parse(f)
else:
raise FileNotFoundError('class needs SSH config at ~/.ssh/config')
ucfg = ssh_config.lookup(hostname)
if 'identityfile' not in ucfg or 'user' not in ucfg:
raise KeyError(f'no identityfile or user in SSH config for host {hostname}')
cfg = {'hostname':hostname, 'username':ucfg['user'], 'key_filename':ucfg['identityfile']}
if 'hostname' in ucfg:
cfg['hostname'] = ucfg['hostname'] # override user-given hostname with what is in config
if 'port' in ucfg:
cfg['port'] = int(ucfg['port'])
if 'proxycommand' in ucfg:
cfg['sock'] = paramiko.ProxyCommand(ucfg['proxycommand'])
return cfg
def run(self, line, timeout=300, silent=False, reportNonZero=True):
if type(line) is list:
line = ' '.join(line)
if not silent:
logging.debug(line)
if self.cwd:
line = f"cd {self.cwd} && {line}"
args = line.split(' ')
try:
stdin, stdout, stderr = self.client.exec_command(line, timeout=timeout)
ret = sp.CompletedProcess(args=args, returncode=stdout.channel.recv_exit_status(), stdout=stdout.read(size=None) + stderr.read(size=None))
except Exception as e:
ret = sp.CompletedProcess(args=args, returncode=255, stdout=f'Exception: {str(e)}'.encode('utf-8'))
ret.stdout = ret.stdout.decode('utf-8').strip()
if reportNonZero and ret.returncode != 0:
cmd = ' '.join(ret.args)
logging.warning(f'command "{cmd}" returned non-zero returncode {ret.returncode}: output:\n{ret.stdout}')
self.cp = ret
return ret
def command(self, commandline, expectedline=None, timeout=300, silent=False, resync=False):
line = [s for s in commandline.split(' ') if len(s) > 0]
if line[0] == 'cd':
self.cd(line[1], silent)
else:
self.run(line, timeout, silent)
return 0
def close(self):
self.client.close()
def getBefore(self):
return self.cp.stdout
def copyout(self, src, tgt, recursive=False):
logging.warning("RemoteCmd emulating sshconnection.copyout() function, ignoring scpIp")
logging.debug(f"copyout: local:{src} -> remote:{tgt}")
if recursive:
tmpfile = f"{uuid.uuid4()}.tar"
abstmpfile = f"/tmp/{tmpfile}"
cmd = LocalCmd()
cmd.run(f"tar -cf {abstmpfile} {src}")
sftp = self.client.open_sftp()
sftp.put(abstmpfile, abstmpfile)
sftp.close()
cmd.run(f"rm {abstmpfile}")
self.run(f"mv {abstmpfile} {tgt}; cd {tgt} && tar -xf {tmpfile} && rm {tmpfile}")
else:
sftp = self.client.open_sftp()
sftp.put(src, tgt)
sftp.close()
def copyin(self, src, tgt, recursive=False):
logging.warning("RemoteCmd emulating sshconnection.copyout() function")
logging.debug(f"copyin: remote:{src} -> local:{tgt}")
if recursive:
tmpfile = f"{uuid.uuid4()}.tar"
abstmpfile = f"/tmp/{tmpfile}"
self.run(f"tar -cf {abstmpfile} {src}")
sftp = self.client.open_sftp()
sftp.get(abstmpfile, abstmpfile)
sftp.close()
self.run(f"rm {abstmpfile}")
cmd = LocalCmd()
cmd.run(f"mv {abstmpfile} {tgt}; cd {tgt} && tar -xf {tmpfile} && rm {tmpfile}")
else:
sftp = self.client.open_sftp()
sftp.get(src, tgt)
sftp.close()

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