- 24 Jan, 2024 4 commits
-
-
Kirill Smelkov authored
-
Kirill Smelkov authored
* master: component/ruby: download source on https component/helloweb: version up (to fix gem building with ruby 2.6)
-
Jérome Perrin authored
-
Jérome Perrin authored
-
- 23 Jan, 2024 12 commits
-
-
Kirill Smelkov authored
* master: software/rapid-cdn: make re6st-verification-url optional software/ors-amarisoft: enb.jinja2.cfg: nr: Move tunable parameters from nr_cell_default to nr_cell_list software/ors-amarisoft: enb.jinja2.cfg: lte: Move tunable parameters from cell_default to cell_list software/ors-amarisoft: slapos-render-config: Replace *arfcn numbers with valid ones software/ors-amarisoft: ru/*: Wrap with `if not testing` things that require real environment software/ors-amarisoft: ru/*: Pull testing initialization and default into one place software/ors-amarisoft: Merge ue-lte.jinja2.cfg and ue-nr.jinja2.cfg into ue.jinja2.cfg software/ors-amarisoft: slapos-render-config: Also render ue-*.cfg software/ors-amarisoft: slapos-render-config: Emit rendered files into config/out/ software/jstestnode: serve test files on https component/ruby: remove version 2.3 component/nodejs: remove version 8.12.0 software/gitlab: upgrade to version 12.10.14 component/golang: golang 1.13 is needed for gitlab 12 component/coreutils: add version 9.1 which is needed for gitlab-backup component/ruby: add version 2.6 needed by gitlab 12 Use most recent osi-coupler version.
-
Titouan Soulard authored
-
Kirill Smelkov authored
software/ors-amarisoft: enb.jinja2.cfg: nr: Move tunable parameters from nr_cell_default to nr_cell_list This patch is similar and has the same rationale as the previous patch (software/ors-amarisoft: enb.jinja2.cfg: lte: Move tunable parameters from cell_default to cell_list). Please see its description for context and details. Like with previous patch I've made sure via json_util that effective gnb configuration stays exactly the same. Also, since for NR case we move more code, and also use enb merging feature(*) I tested that the effective gnb configuration stays exactly the same with both * tdd_config = 3 (5ms 8UL 1DL 2/10 (maximum uplink)), and * tdd_config = 1 (5ms 2UL 7DL 4/6 (default)) In all the cases effective gnb configuration stayed exactly the same before and after this patch which proves that effective configuration for single cell case remains unchanged. (*) enb implements merging process for cell/cell_default and nr_cell/nr_cell_default as demonstrated below: cell={a: 10, d:15} cell_default={a:1, b:2, c:3} -> cell={a:10, b:2, c: 3, d: 15} cell={x: [{}, 2]} cell_default={x: [{a:1}]} -> cell={x: [{a:1}, 2]} cell={x: [{c:11}]} cell_default={x: [{a:1}, {b:2}] -> cell={x: [{a:1, c:11}, {b:2}]} /cc @lu.xu, @tomo, @xavier_thompson, @Daetalus /reviewed-by @jhuge /reviewed-on nexedi/slapos!1515
-
Kirill Smelkov authored
Currently we set some cell tunable parameters on the cell object itself (e.g. dl_earfcn), while other cell tunable parameters on the cell_default object, e.g. cell bandwidth. This works ok when there is only one cell, but with multiple cells it makes a problem because different cells can have e.g. different bandwidth. So as preparatory step for MultiRU move the code, that sets tunable parameters for lte cells, from cell_default to cell object itself. Rendered config changes but we can verify that the configuration, that enb actually uses, stays the same: When enb starts it builds internal configuration for all configured cell objects by merging cell_default + cell's explicit configuration and using the result as the actual configuration for the cell. There is no more cell_default in that actual configuration. And also enb emits that actual runtime configuration in the beginning of enb.log which we can extract and investigate(*) So this way we can run enb with old and new generated enb.cfg and then compare the actual configuration. It turns out to be empty: ~/enb# ./lteenb -n x/old/enb.cfg ... RF0: sample_rate=11.520 MHz dl_freq=1910.000 MHz ul_freq=1910.000 MHz (band 33) dl_ant=2 ul_ant=2 (enb) quit ~/enb# mv log/enb.log log/enb.log.old ~/enb# ./lteenb -n x/out/enb.cfg ... RF0: sample_rate=11.520 MHz dl_freq=1910.000 MHz ul_freq=1910.000 MHz (band 33) dl_ant=2 ul_ant=2 (enb) quit ~/enb# mv log/enb.log log/enb.log.new ~/enb# ../ots/json_util log log/enb.log.old >a ~/enb# ../ots/json_util log log/enb.log.new >b ~/enb# diff -u a b # output is empty which means that effective enb configuration before and after this patch is exactly the same. For the reference, how internal configuration looks like is provided in the appendix. (*) see https://tech-academy.amarisoft.com/ExtractConfigFromLog.html for details. /cc @lu.xu, @tomo, @xavier_thompson, @Daetalus /reviewed-by @jhuge /reviewed-on nexedi/slapos!1515 P.S. for now I do not plan to expose full measurement configuration in the generic MultiRU and so it stays in cell_default with corresponding TODO. -------- Appendix. Dump of internal enb configuration for enb.cfg before and after the patch ``` $ ../ots/json_util log log/enb.log.old ``` ```json { "cell_list": [ { "cell_barred": false, "cell_id": 0, "cipher_algo_pref": [], "cqi_period": 40, "cyclic_prefix": "normal", "dl_256qam": true, "dl_earfcn": 36100, "dpc": true, "dpc_pucch_snr_target": 25, "dpc_pusch_snr_target": 25, "drb_config": [ ... ], # removed for brevity "ho_from_meas": true, "inactivity_timer": 10000, "initial_cqi": 3, "integ_algo_pref": [2, 1], "intra_freq_reselection": true, "m_ri": 8, "mac_config": { "dl_max_harq_tx": 5, "ul_max_harq_tx": 5 }, "manual_ref_signal_power": true, "meas_config_desc": { "a1_hysteresis": 0, "a1_report_type": "rsrp", "a1_rsrp": -70, "a1_time_to_trigger": 640, "a2_hysteresis": 0, "a2_report_type": "rsrp", "a2_rsrp": -80, "a2_time_to_trigger": 640, "a3_hysteresis": 0, "a3_offset": 6, "a3_report_type": "rsrp", "a3_time_to_trigger": 480 }, "meas_gap_config": "gp0", "n_antenna_dl": 2, "n_antenna_ul": 2, "n_id_cell": 0, "n_rb_dl": 50, "n_symb_cch": 0, "pdcch_format": 2, "pdsch_dedicated": { "p_a": -3, "p_b": -1 }, "phich_duration": "normal", "phich_resource": "1", "plmn_list": ["00101"], "prach_config_index": 4, "prach_freq_offset": -1, "pucch_dedicated": { "cqi_pucch_n_rb": 1, "n1_pucch_sr_count": 11, "tdd_ack_nack_feedback_mode": "multiplexing" }, "pusch_dedicated": { "beta_offset_ack_index": 9, "beta_offset_cqi_index": 6, "beta_offset_ri_index": 6 }, "pusch_hopping_offset": -1, "pusch_max_its": 6, "pusch_msg3_mcs": 0, "q_rx_lev_min": -70, "rf_port": 0, "root_sequence_index": 204, "scell_list": [], "si_coderate": 0.2, "si_pdcch_format": 2, "si_value_tag": 0, "si_window_length": 40, "sib_sched_list": [ ... ], # remove for brevity "sp_config": 7, "sr_period": 20, "srb_config": [ { "id": 1, "maxRetxThreshold": 32, "t_PollRetransmit": 60, "t_Reordering": 45 }, { "id": 2, "maxRetxThreshold": 32, "t_PollRetransmit": 60, "t_Reordering": 45 } ], "srs_dedicated": { "srs_bandwidth": 2, "srs_bandwidth_config": 2, "srs_hopping_bandwidth": 0, "srs_period": 40, "srs_subframe_config": 3 }, "tac": 1, "transmission_mode": 3, "ul_64qam": true, "uldl_config": 6 } ], "com_addr": "127.0.1.2:9001", "enb_id": 107216, "gtp_addr": "127.0.1.1", "log_filename": "log/enb.log", "log_options": "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,s1ap.level=debug,s1ap.max_size=1,x2ap.level=debug,x2ap.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null", "mme_list": [ { "mme_addr": "127.0.1.100" } ], "rf_driver": { "args": "dev0=/dev/sdr0", "name": "sdr", "realtime": 1, "rx_antenna": "tx_rx", "tdd_tx_mod": 1 }, "rx_gain": 43, "tx_gain": 62 } ```
-
Kirill Smelkov authored
So that it is possible to try running enb on generated configs becuase with previous numbers enb refuses to start: ~/enb# ./lteenb x/old/enb.cfg ... x/old/enb.cfg:50: field 'dl_earfcn': range is [0:262143] (LTE Cell #0) ~/enb# ./lteenb x/old/gnb.cfg ... x/old/gnb.cfg:54: invalid frequency band (NR Cell #1) We need enb to be able to start with generated config because enb dumps in its enb.log the real configuration that it builds from cell_list + cell_default and nr_cell_list + cell_default - which is possible to extract via `json_util` and which we want to check after our changes to enb.jinja2.cfg to see if we really don't introduce semantic mistakes when e.g. moving things in between cell_default to cell_list (see next patch). With new frequencies enb and gnb both start ok. /cc @lu.xu, @tomo, @xavier_thompson, @Daetalus /reviewed-by @jhuge /reviewed-on nexedi/slapos!1515
-
Kirill Smelkov authored
For example there is no slaptap under StandaloneSlapOS and <RU>-netconf-socket promise needs real RU hardware to be around and accepting incoming connections. If we don't wrap such things with `if not testing` running test on testnodes will fail. /cc @lu.xu, @tomo, @xavier_thompson, @Daetalus /reviewed-by @jhuge /reviewed-on nexedi/slapos!1514
-
Kirill Smelkov authored
Less need to keep default synchronized and less noise in the code. We will need to refer to `testing` more in the next patch, so it will help a bit. /cc @lu.xu, @tomo, @xavier_thompson, @Daetalus /reviewed-by @jhuge /reviewed-on nexedi/slapos!1514
-
Kirill Smelkov authored
Similarly to f365a440 (software/ors-amarisoft: Merge gnb.jinja2.cfg into enb.jinja2.cfg) merge LTE and NR configuration files for UEsim into single config as the preparation for MultiRU - there UEsim will be also handling TDD, FDD, LTE and NR cells and UEs all at the same time. In this patch for now we only move code without changing it and wrap parts with `if do_lte` and `if do_nr` correspondingly. The end result of rendered ue-lte.cfg and ue-nr.cfg stays practically the same as shown in the appendix. /cc @lu.xu, @tomo, @xavier_thompson, @Daetalus /reviewed-by @jhuge /reviewed-on nexedi/slapos!1513 -------- Appendix. Diff for rendered ue-*.cfg before and after this patch. ``` $ ./pythonwitheggs slapos-render-config.py && git diff --no-index -w config/old/ config/out/ ``` ```diff diff --git a/config/old/ue-lte.cfg b/config/out/ue-lte.cfg index 7f1530daf..836a95e79 100644 --- a/config/old/ue-lte.cfg +++ b/config/out/ue-lte.cfg @@ -1,5 +1,6 @@ #define N_RB_DL 50 + { log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null", log_filename: "log/ue.log", @@ -14,7 +15,8 @@ rf_driver: { }, tx_gain: 60, rx_gain: 40, - cell_groups: [{ + cell_groups: [ + { multi_ue: true, cells: [ { @@ -27,7 +29,8 @@ rf_driver: { ], pdcch_decode_opt: false, pdcch_decode_opt_threshold: 0.1, - }], + }, + ], ue_list: [ { sim_algo: "milenage", @@ -38,8 +41,8 @@ rf_driver: { impi: "", imsi: "001010123456789", K: "00112233445566778899aabbccddeeff", - rue_addr: "host1", ue_category: 12, + rue_addr: "host1", tun_setup_script: "ue-ifup", apn: "internet", } diff --git a/config/old/ue-nr.cfg b/config/out/ue-nr.cfg index 41758ab6f..631e1ab1e 100644 --- a/config/old/ue-nr.cfg +++ b/config/out/ue-nr.cfg @@ -1,3 +1,5 @@ + + { log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null", log_filename: "log/ue.log", @@ -12,7 +14,8 @@ rf_driver: { }, tx_gain: 60, rx_gain: 40, - cell_groups: [{ + cell_groups: [ + { group_type: "nr", multi_ue: false, cells: [{ @@ -26,7 +29,8 @@ rf_driver: { n_antenna_ul: 2, } ], - }], + }, + ], ue_list: [ { sim_algo: "milenage", @@ -37,11 +41,11 @@ rf_driver: { impi: "", imsi: "001010123456789", K: "00112233445566778899aabbccddeeff", - rue_addr: "host2", as_release: 15, ue_category: "nr", + rue_addr: "host2", tun_setup_script: "ue-ifup", apn: "internet", } - ] + ], } ```
-
Kirill Smelkov authored
This is useful during development while working on ue-*.jinja2.cfg /cc @lu.xu, @tomo, @xavier_thompson, @Daetalus /reviewed-by @jhuge /reviewed-on nexedi/slapos!1513
-
Kirill Smelkov authored
We are going to generate more and more type of files via slapos-render-config: currently we generate only enb.cfg and gnb.cfg, but soon it will be also ue-*.cfg, drb_*.cfg, asn etc. So it will be handy to easily separate generated files from their source, to make snapshots of generated stuff for comparison, and to also e.g. to be able to copy generated configs to a callbox/simbox for testing. -> Move the place where generated files are emitted from config/ to config/out/ /cc @lu.xu, @tomo, @xavier_thompson, @Daetalus /reviewed-by @jhuge /reviewed-on nexedi/slapos!1513
-
Jérome Perrin authored
Now that we have a more modern firefox, it requires secure context for many things. This fixes `TypeError: crypto.subtle is undefined` test failures for JIO.
-
Alain Takoudjou authored
See merge request nexedi/slapos!1503
-
- 22 Jan, 2024 24 commits
-
-
Alain Takoudjou authored
-
Alain Takoudjou authored
-
Alain Takoudjou authored
-
Alain Takoudjou authored
-
Alain Takoudjou authored
Split command which is used to split pgdump files before push to gitlab backup repository crash during backup process. This problem occurs with version starting from 9.2, older versions doesn't have this problem. The version 9.1 is used for gitlab-backup so. For more details, see: nexedi/slapos!1503 (diffs, comment 197515)
-
Alain Takoudjou authored
-
Ivan Tyagov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
* master: stack/slapos: version up slapos.cookbook 1.0.351 software/dufs: version up dufs 0.39.0 *: switch to new slapos.cookbook random API for passwords software/dufs: include a trailing slash in published url software/dufs: serve index.html files instead of directory index software/restic-rest-server: version up v0.12.1 component/rust: version up rustc 1.75.0 component/apache: version up httpd 2.4.58
-
Jérome Perrin authored
See merge request nexedi/slapos!1506
-
Kirill Smelkov authored
- switch published *arfcn types to numbers from strings - tx_gain value was used when publishing rx_gain
-
Kirill Smelkov authored
I originally thought it is ORS-only, but more careful review showed that e.g. dl_earfcn is published for both ORS and not-ORS cases: https://lab.nexedi.com/nexedi/slapos/blob/81a83ffe/software/ors-amarisoft/instance-enb.jinja2.cfg#L224-239
-
Kirill Smelkov authored
* master: fixup! software/ors-amarisoft: Merge gnb.jinja2.cfg into enb.jinja2.cfg Release slapos.cookbook (1.0.351) random: expose hashed passwords in recipe options librecipe/inotify: fallback to polling when adding inotify watch fail software/theia/test: test that monitoring URL all have same password software/metabase: version up 0.48.2 software/metabase: rename configuration parameters to kebab case component/postgresql: include citext extension
-
Kirill Smelkov authored
-
Kirill Smelkov authored
While not faulty in itself, f365a440 caused ors-amarisoft testsuite to start failing with ERROR: test_gnb_conf (testTDD.TestGNBParameters1) ---------------------------------------------------------------------- Traceback (most recent call last): File ".../slapos-repository/software/ors-amarisoft/test/testTDD.py", line 298, in test_gnb_conf test_gnb_conf1(self) File ".../slapos-repository/software/ors-amarisoft/test/testTDD.py", line 184, in test_gnb_conf1 self.assertEqual(conf['tx_gain'], gnb_param_dict1['tx_gain']) KeyError: 'tx_gain' ( https://erp5js.nexedi.net/#/test_result_module/20240119-1C2BDD94/45 ) This happens because previously gnb.jinja2.cfg emitted tx_gain/rx_gain and everything else for SDR case when `ru != "m2ru"`: https://lab.nexedi.com/nexedi/slapos/blob/d078060c/software/ors-amarisoft/config/gnb.jinja2.cfg#L22-55 while enb.jinja2.cfg had this only under `if bbu == "ors"`: https://lab.nexedi.com/nexedi/slapos/blob/d078060c/software/ors-amarisoft/config/enb.jinja2.cfg#L44-114 so since bbu != "ors" when tests are run via `testTDD.py` and `testFDD.py` (and `testTDD-ORS.py` is not ran at all as I explained in nexedi/slapos.toolbox!129) this resulted in gnb.cfg not to have tx_gain/rx_gain for bbu != ors case and corresponding test failure. There is no real problem for ORS since for `bbu==ors` tx_gain/rx_gain are emitted. -> Fix testsuite to pass again similarly to how it was done in b32b4a8e (software/ors-amarisoft: general improvement for RU (logs/promises/input parameters) for now). In the future ORS case will be verified by dedicated test_ors.py which will have checks for tx_gain and rx_gain unconditionally applied, while support for all other cases will be handled by generic test.py which will have different logic for how rf_driver section is generated and verified. https://lab.nexedi.com/kirr/slapos/blob/b21d2636/software/ors-amarisoft/test/test_ors.py https://lab.nexedi.com/kirr/slapos/blob/b21d2636/software/ors-amarisoft/test/test.py
-
Jérome Perrin authored
-
Jérome Perrin authored
-
Jérome Perrin authored
-
Jérome Perrin authored
This makes urljoin works as expected and generally makes sense because this is a collection.
-
Jérome Perrin authored
-
Jérome Perrin authored
-
Jérome Perrin authored
-
Jérome Perrin authored
-
Jérome Perrin authored
-