Compare commits

...

529 Commits

Author SHA1 Message Date
Cedric Roux
6c9a0dea27 LDPC processing: bugfix: clear d[] if first transmission is DTX
If first transmission (round == 0) is DTX then d[] will not be cleared
for following transmissions (those that are not DTX) in
nr_rate_matching_ldpc_rx() because new_rx will not be 1, leading
to potential wrong decoding.
2022-12-27 23:24:59 +01:00
Cedric Roux
b038ee0af8 NR LDPC processing: do not redo LDPC decoding on retransmission if not needed
Adding crc_ok[] so that we don't redo LDPC decoding of a segment on
retransmissions if the CRC was correct for the segment in a previous
transmission.

We have to be careful with DTX of round 0, because in this case
nr_ulsch_decoding() will never be called with new_rx == 1, so we
would not reset crc_ok[]. (Hopefully I understand things correctly
here...)
2022-12-27 23:24:59 +01:00
Cedric Roux
7fc31d9ca9 NR LDPC processing: check CRC of the full transport block
And reject data in case of failure.
2022-12-27 23:24:55 +01:00
Cedric Roux
6d66049e1f NR LDPC processing: do not stop processing too early
It's important to feed data to the d[] array (and clear it first in case
of new_rx) so the logic to cancel the other LDPC processing threads when
a decoding failure happens has to be changed.

This commit introduces a new cancellation point possible only after
calling nr_rate_matching_ldpc_rx(), thus the d[] array receives data
for all the LDPC segments.
2022-12-27 23:19:56 +01: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
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
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
Robert Schmidt
a0fae95c79 Merge branch 'integration_2022_wk42b' into 'develop'
integration_2022_wk42b

See merge request oai/openairinterface5g!1773

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

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

See merge request oai/openairinterface5g!1762

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

@@ -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

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

View File

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

View File

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

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