1. 21 Nov, 2023 1 commit
    • Kirill Smelkov's avatar
      fixup! software/ors-amarisoft: enb: Move DRB configuration to standalone file · d16a629c
      Kirill Smelkov authored
      After 8c841ce6 slapos-render-config.py got broken:
      
          (py3.venv) kirr@deca:~/src/wendelin/slapos/slapos/software/ors-amarisoft$ python slapos-render-config.py
          Traceback (most recent call last):
            File "/home/kirr/src/wendelin/slapos/slapos/software/ors-amarisoft/slapos-render-config.py", line 87, in <module>
              j2render(config, json_params)
            File "/home/kirr/src/wendelin/slapos/slapos/software/ors-amarisoft/slapos-render-config.py", line 34, in j2render
              f.write(r._render().decode())
                      ^^^^^^^^^^^
            File "/home/kirr/src/wendelin/slapos/slapos.recipe.template/slapos/recipe/template/jinja2_template.py", line 215, in _render
              return template_object.render(**self.context).encode(self.encoding)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            File "/home/kirr/src/wendelin/venv/py3.venv/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
              self.environment.handle_exception()
            File "/home/kirr/src/wendelin/venv/py3.venv/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
              raise rewrite_traceback_stack(source=source)
            File "config/gnb.jinja2.cfg", line 586, in top-level template code
              drb_config: "{{ drb_file }}",
          ^^^^^^^^^^^^^^^^^^^^^^^^^
          jinja2.exceptions.UndefinedError: 'drb_file' is undefined
      
      /cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus
      d16a629c
  2. 17 Nov, 2023 7 commits
    • Kirill Smelkov's avatar
      software/ors-amarisoft: enb: Adjust DHCP server to provide dedicated IPv6 to each Radio Unit · cbc3929c
      Kirill Smelkov authored
      By reusing recently added "split TAP" infrastructure we can adjust dnsmasq
      configuration to provide unique IPv6 to each RU.
      
      - ru_mac_addr becomes per-RU setting and without default. We talked with Lu, and
        since now all Lopcomm units are shipped from the factory with unique MAC, it
        both does not make sense to provide the default, and we can rely on all units
        to have different MACs and configure DHCP replies based on that.
      
      - No need to provide /64 network to every RU. We cannot actually do that anyway
        because normally SlapOS provides /71 address range for its slaptap. In the
        new configuration everything works with smaller networks just ok.
      
      /cc @jhuge, @xavier_thompson, @Daetalus
      /reviewed-by @lu.xu
      /reviewed-on nexedi/slapos!1472
      cbc3929c
    • Kirill Smelkov's avatar
      software/ors-amarisoft: enb: Remove DNS options from for-RU DHCP configuration · 30b4cec5
      Kirill Smelkov authored
      Those options are not needed, because we need to only provide IPv6 address to
      RU, and also they are not very meaningful: in the current form we tell RU that
      DNS addresses sit at RU.addr+1 and RU.addr+2, i.e. in the IP range we give to
      RU and also at the addresses where no DNS server is actually running.
      
      It was probably a thinko to add those options initially.
      
      /cc @jhuge, @xavier_thompson, @Daetalus
      /reviewed-by @lu.xu
      /reviewed-on nexedi/slapos!1472
      30b4cec5
    • Kirill Smelkov's avatar
      software/ors-amarisoft: Split dnsmasq.cfg into for-core and for-enb · 9f2b9db5
      Kirill Smelkov authored
      Core Network and ENB use dnsmasq for completely different purposes:
      
      - core network uses it to provide DNS server, while
      - enb uses dnsmasq to provide DHCP server for Radio Units to be able to access
        Control & Management channel on the CPRI link.
      
      -> Even though both those services are handled via same dnsmasq program, it
         makes sense to split dnsmasq config for clarity and as preparation for
         further adjustments of enb part.
      
         We also push config rendering down to -core and -enb instances also for
         clarity, and because in enb case rendering will need to know set of
         configured Radio Units - information that will become loaded only at
         instance-enb.
      
      /cc @jhuge, @xavier_thompson, @Daetalus
      /reviewed-by @lu.xu
      /reviewed-on nexedi/slapos!1472
      9f2b9db5
    • Kirill Smelkov's avatar
      software/ors-amarisoft: Provide dedicated TAP interface for each Radio Unit · 49ce8ef5
      Kirill Smelkov authored
      SlapOS provides to each partition dedicated TAP interface, so that an instance
      could organize internal networking. In practice this is used by KVM software
      release and here in ors-amarisoft, where we feed to eNB such TAP interface for
      CPRI-based radio unit so that eNB, in turn, could provide access to CPRI
      Control and Management channel via provided TAP.
      
      However there is a problem: SlapOS provides only one TAP interface per
      instance, while we need to have one TAP for each Radio Unit.
      
      -> Solve this problem by creating TAP "subinterfaces" per each RU ourselves.
      
      The interfaces we create are full TAP interfaces, just we name them with prefix
      based on main interface, and we allocate only part of address space of sole
      SlapOS TAP to each subtap. For example if SlapOS provided us slaptap16 with
      2401:5180:0:66:a200::/71 IPv6 range and we want to split it for 2 radio units,
      we'll be splitting it into 3 regions as follows:
      
          slaptap16: split 2401:5180:0:66:a200::/71 by 2
          preserve         2401:5180:0:66:a200::/73
          -> slaptap16-1   2401:5180:0:66:a280::/73
          -> slaptap16-2   2401:5180:0:66:a300::/73
      
      Here we preserve 2401:5180:0:66:a200::/73 for usage on original slaptap16, and
      we create slaptap16-1 and slaptap16-2 with correspondingly allocated address
      range subparts for the RUs.
      
      The splitting is done easily but depends on having networking administration
      capability to be able to work. We solve this with employing
      /opt/amarisoft/setcap, which we already use for dnsmasq, and with compiled
      trampoline program because setcap does not really work directly on scripts.
      
      To avoid hard dependency on having network capability rights, we fallback to
      using regular SlapOS slaptap in case there is only one RU.
      
      ru/lopcomm/* and enb.cfg are adapted straightforwardly, but dnsmasq adaptation
      is left to a later step not to mix everything into one pile.
      
      NOTE that relying on setcap is not a good in the long term and should be
           reworked once SlapOS is improved to provide ability for instances to
           request several TAP interfaces. Please see discussion at
           nexedi/slapos!1471 (comment 194356)
           for details.
      
      /cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus
      /reviewed-on nexedi/slapos!1471
      49ce8ef5
    • Kirill Smelkov's avatar
      software/ors-amarisoft: gnb: Move DRB configuration to standalone file · 695518f2
      Kirill Smelkov authored
      A preparatory step for multiRU for the same reason as for LTE and also to be
      able to support Carrier Aggregation in between NR and LTE cells in the future
      (called Dual Connectivity by 3GPP).
      
      /cc @xavier_thompson, @Daetalus
      /reviewed-by @jhuge, @lu.xu
      /reviewed-on nexedi/slapos!1473
      695518f2
    • Kirill Smelkov's avatar
      software/ors-amarisoft: enb: Don't use #define inside DRB template · accc2c86
      Kirill Smelkov authored
      When there will be multiple cells and so multiple DRB files referenced from enb.cfg,
      eNB will complain with an error that "there are multiple #define" for T_REORDERING.
      
      -> Use jinja2 templating instead to handle FDD/TDD conditions.
      
      /cc @xavier_thompson, @Daetalus
      /reviewed-by @jhuge, @lu.xu
      /reviewed-on nexedi/slapos!1473
      accc2c86
    • Kirill Smelkov's avatar
      software/ors-amarisoft: enb: Move DRB configuration to standalone file · 8c841ce6
      Kirill Smelkov authored
      This is preparatory step for multiRU: when there will be several LTE cells,
      each possibly having different RF mode, we'll need to configure DRB per-cell.
      
      -> Move DRB configuration to separate jinja2 template to prepare to handle that.
      
      This is 99% movement only, without changing the code for DRB profile. We'll
      adjust the DRB profile a bit as another preparatory step in the next patch.
      
      /cc @xavier_thompson, @Daetalus
      /reviewed-by @jhuge, @lu.xu
      /reviewed-on nexedi/slapos!1473
      8c841ce6
  3. 16 Nov, 2023 2 commits
  4. 15 Nov, 2023 2 commits
  5. 14 Nov, 2023 1 commit
  6. 13 Nov, 2023 1 commit
  7. 10 Nov, 2023 1 commit
    • Jérome Perrin's avatar
      component/firefox: set $GSETTINGS_SCHEMA_DIR in the wrapper · ceabc68a
      Jérome Perrin authored
      This fixes a crash happening after `setFile` selenium command under
      some conditions (it does not always happen, but I did not investigate
      in which conditions it happens exactly).
      
      [Parent 94283, Main Thread] ###!!! ASSERTION: No GSettings schemas are installed on the system: 'glib assertion', file /builds/worker/checkouts/gecko/toolkit/xre/nsSigHandlers.cpp:164
      ceabc68a
  8. 09 Nov, 2023 1 commit
  9. 08 Nov, 2023 2 commits
    • Jérome Perrin's avatar
      software/gitlab: update gitlab-ce to fix npm error · 07711f81
      Jérome Perrin authored
      Since yesterday, software/gitlab can no longer be installed with an
      error while installing gitlab_npm:
      
          ERR! Invalid dependency type requested: alias
      
      This is because we are using npm install to install a repository which
      uses yarn.lock to pin versions, so the install was done without having
      the dependencies pinned. Using an old yarn for this repository does not
      seem so easy, so we just have made a commit to convert the yarn.lock to
      a package-lock.json, so that we don't have to update the tooling here.
      
      Once we update, we'll rework this part of the software to use yarn, it
      seems gitlab still uses yarn in more recent versions.
      
      `git describe` also produced different (more correct) output, because
      some tags were missing in our mirror of gitlab-ce.
      07711f81
    • Julien Muchembled's avatar
      NEO: add missing software.cfg.json · ff05dd81
      Julien Muchembled authored
      ff05dd81
  10. 07 Nov, 2023 10 commits
  11. 06 Nov, 2023 5 commits
  12. 02 Nov, 2023 7 commits
    • Joanne Hugé's avatar
    • Joanne Hugé's avatar
      2c69944b
    • Kirill Smelkov's avatar
      software/ors-amarisoft: Fix `render-templates -d` to remove all generated files · 9644a9f3
      Kirill Smelkov authored
      `render-templates -d` is used to remove all files that it previously
      generated, so that it is easy to look around during development.
      
      But, probably due to oversight, it was only *tdd files, that were
      removed, with *fdd generated files still left in place.
      
      -> Fix it.
      
      The list of generated files, that is now additionally removed after this patch is:
      
              instance-fdd-enb-input-schema.json
              instance-fdd-gnb-input-schema.json
              instance-fdd-lopcomm-enb-input-schema.json
              instance-fdd-lopcomm-gnb-input-schema.json
              instance-fdd-lopcomm-ue-lte-input-schema.json
              instance-fdd-lopcomm-ue-nr-input-schema.json
              instance-fdd-ors-enb-input-schema.json
              instance-fdd-ors-gnb-input-schema.json
              instance-fdd-ors-ue-lte-input-schema.json
              instance-fdd-ors-ue-nr-input-schema.json
              instance-fdd-ue-lte-input-schema.json
              instance-fdd-ue-nr-input-schema.json
              software-fdd-lopcomm.cfg
              software-fdd-lopcomm.cfg.json
              software-fdd-ors.cfg
              software-fdd-ors.cfg.json
              software-fdd.cfg
              software-fdd.cfg.json
              test/testFDD-LOPCOMM.py
              test/testFDD-ORS.py
              test/testFDD.py
      
      /cc @tomo, @xavier_thompson, @Daetalus
      /reviewed-by @jhuge, @lu.xu
      /reviewed-on !1463
      9644a9f3
    • Kirill Smelkov's avatar
      software/ors-amarisoft: slapos-render-config: Remove duplicated code from slapos.recipe.template · 41d90e26
      Kirill Smelkov authored
      For its operation slapos-render-config mimics jinja2 templates rendering
      done for real in slapos. But to do so it currently duplicates the code
      from slapos.recipe.template.
      
      We can do the same by reusing slapos.recipe.template instead of
      duplicating code from there.
      
      -> Do it.
      
      The output of generated gnb.cfg is the same before and after this patch.
      
      /cc @xavier_thompson, @Daetalus
      /reviewed-by @jhuge, @lu.xu, @tomo
      /reviewed-on nexedi/slapos!1462
      41d90e26
    • Kirill Smelkov's avatar
      software/ors-amarisoft: slapos-render-config: Document what this program does · dcc326cd
      Kirill Smelkov authored
      When I was first starting to look around inside ors-amarisoft software
      release for me it was not clear off-hand what this program is for. It
      should be more clear about what's the intent if there is explicit
      comment.
      
      /cc @xavier_thompson, @Daetalus
      /reviewed-by @jhuge, @lu.xu, @tomo
      /reviewed-on nexedi/slapos!1462
      dcc326cd
    • Kirill Smelkov's avatar
      software/ors-amarisoft: Fix slapos-render-config · 994048e6
      Kirill Smelkov authored
      a6eaad9a (software/ors-amarisoft: add network_name parameter) updated
      enb.jinja2.cfg and gnb.jinja2.cfg to require slap_configuration['configuration.com_addr']
      and other parameters to be present, but did not updated
      slapos-render-confg, which got broken as the result:
      
          (py3.venv) kirr@deca:~/src/wendelin/slapos/slapos/software/ors-amarisoft$ python slapos-render-config.py
          ...
          Traceback (most recent call last):
            File "/home/kirr/src/wendelin/slapos/slapos/software/ors-amarisoft/slapos-render-config.py", line 232, in <module>
              f.write(r._render().decode())
                      ^^^^^^^^^^^
            File "/home/kirr/src/wendelin/slapos/slapos/software/ors-amarisoft/slapos-render-config.py", line 206, in _render
              return template_object.render(**self.context).encode(self.encoding)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            File "/home/kirr/src/wendelin/venv/py3.venv/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
              self.environment.handle_exception()
            File "/home/kirr/src/wendelin/venv/py3.venv/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
              raise rewrite_traceback_stack(source=source)
            File "config/gnb.jinja2.cfg", line 62, in top-level template code
              com_addr: "{{ slap_configuration['configuration.com_addr'] }}:{{ slap_configuration['configuration.com_ws_port'] }}",
            ^^^^^^^^^^^^^^^^^^^^^^^^^
          jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'configuration.com_addr'
      
      -> Fix it.
      
      /cc @xavier_thompson, @Daetalus
      /reviewed-by @jhuge, @lu.xu, @tomo
      /reviewed-on nexedi/slapos!1462
      994048e6
    • Kirill Smelkov's avatar
      software/ors-amarisoft: Adjust check-cpri-lock promise to explicitly specify watched CPRI ports · 3381f9c5
      Kirill Smelkov authored
      In multiRU we will need to be able to check multiple CPRI boards and multiple
      SFP ports on them, not only SFP ports on CPRI board 0 that was implicitly used
      until now.
      
      -> As a preparatory step the SR to explicitly specify which CPRI resources are being verified.
      
      This patch is necessary because in nexedi/slapos.toolbox!127
      we adjust check_cpri_lock plugin to require CPRI device + SFP port to be
      explicitly specified.
      
      /cc @tomo, @xavier_thompson, @Daetalus
      /reviewed-by @lu.xu, @jhuge
      /reviewed-on nexedi/slapos!1461
      3381f9c5