software/ors-amarisoft: MultiRU
Hello up there. This merge-request brings in major update to ors-amarisoft software release: first eNB is significantly restructured to prepare base for further changes, and then we add support for working with multiple radio units and multiple cells with all LTE/NR and FDD/TDD simultaneously. All kinds of Carrier Aggregation - LTE+LTE, NR+NR and LTE+NR are now supported. All kinds of Handover - Intra-ENB, Inter-ENB with LTE→NR and NR→LTE are now supported as well. UE simulator is also updated to support multiple radio units, cells and UEs. In the new system configuration of RU, CELL, PEERCELL, PEER and UE objects are done via shared instances attached to the main eNB or UEsim instance. Most of the parameters become runtime settings instead of being static choice of particular software template. There is no longer multiple rendered softwares - all that remain is 1. `software.cfg` for generic software, and 2. `software-ors.cfg` for ORS. Switching to configuring things at runtime became possible because SlapOS Master recently switched to new JSON-editor with support for `oneOf`, arrays and conditionals - bits that make it possible to configure settings in the WEB UI with multiple choices for e.g. RF mode, cell or radio unit type. For ORS full backward compatibility is preserved via special proxy which translates ORS input schema to configuration objects of the new generic eNB. Since most our current ORS deployments are TDD, `software-tdd-ors.cfg` link to `software-ors.cfg` is also provided to preserve backward compatibility at software-release URL level for those instances. eNB and gNB are merged along the way. Unittests are improved. JSON schemas become primary source for defaults(*). Unnecessary parameters are removed and are now computed automatically. For example it is no longer needed to explicitly specify SSB NR-ARFCN for peer NR cell, or `txa0cc00_center_frequency` for Lopcomm RU. `tx_gain` and `rx_gain` become generic parameters that semantically apply uniformly to all Radio Units. A protection against buildout code injection via specially-crafted references of shared instances is installed. The problem was noticed because instantiation was failing with spaces in the references - a condition that is present by default on the testnodes. Solving the problem generally via custom "buildout encoding" was not hard and probably the solution might be useful not only for ors-amarisoft software release. Please see the patch `"Protect from buildout code injection"` for details. There are more minor enhancements and bug fixes in there. Please see individual patches for details. Kirill /cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus /approved-by @tomo /reviewed-on nexedi/slapos!1533 (*) this goes in line with similar design choice to make JSON schemas primary source of defaults in Rapid-CDN: nexedi/slapos!1380 .