1. 24 Nov, 2023 36 commits
    • Jérome Perrin's avatar
      ERP5: rework frontend instance parameter · ded71c18
      Jérome Perrin authored
      This change the format or the (mostly) unused frontend parameter to
      support requesting more than one frontend and also enable the request of
      a frontend by default, so that requesting a frontend separately is no
      longer needed.
      
      The `frontend` parameter now also supports requesting frontends for
      specific paths on the ERP5 backend, the example below requests a
      frontend serving directly a web site, with the necessary rewrite rules:
      
      ```js
      {
        "frontend": {
          "default": {
            "internal-path": "/erp5/web_site_module/renderjs_runner/"
          }
        }
      }
      ```
      
      The example below requests a default frontend to the erp5 root, to
      access the ZMI or erp5_xhtml_style interface and two web sites:
      
      ```js
      {
        "frontend": {
          "default": {},
          "erp5js": {
            "internal-path": "/erp5/web_site_module/renderjs_runner/"
          },
          "crm": {
            "internal-path": "/erp5/web_site_module/erp5_officejs_support_request_ui/"
          }
        }
      }
      ```
      
      The example below has an explicit definition of the zope families using
      `zope-partition-dict` parameter, because there is more than one zope
      family, no frontend is requested by default:
      
      ```js
      {
        "zope-partition-dict": {
          "backoffice": {
            "family": "backoffice"
          },
          "web": {
            "family": "web"
          },
          "activities": {
            "family": "activities"
          }
        }
      }
      ```
      
      Continuing this example, to have frontends for backoffice and web
      families, the frontend request can specify the families, like it is
      demonstrated in the example below. In this example, we don't specify an
      entry for "activities" family, so no frontend will be requested for
      this family.
      
      ```js
      {
        "frontend": {
          "backoffice": {
            "zope-family": "backoffice"
          },
          "web": {
            "zope-family": "web",
            "internal-path": "/erp5/web_site_module/web_site/"
          }
        }
        "zope-partition-dict": {
          "backoffice": {
            "family": "backoffice"
          },
          "web": {
            "family": "web"
          },
          "activities": {
            "family": "activities"
          }
        }
      }
      ```
      ded71c18
    • Jérome Perrin's avatar
      software/slapos-testing: remove redundant eggs · 645abe13
      Jérome Perrin authored
      These must be installed through dependencies
      645abe13
    • Jérome Perrin's avatar
      *: only install backports-lzma on python2 · 13b36a55
      Jérome Perrin authored
      on python3 we use lzma directly
      13b36a55
    • Thomas Gambier's avatar
      13c37b22
    • Thomas Gambier's avatar
    • Jérome Perrin's avatar
      stack/slapos: version up msgpack 1.0.5 ( py3 only ) · 5ab07643
      Jérome Perrin authored
      There are more recent versions, but they don't use pyproject.toml for
      metadata.
      
      Here we want a version with python3.11 support
      5ab07643
    • Jérome Perrin's avatar
      stack/slapos: version up patsy 0.5.3 · c752bda0
      Jérome Perrin authored
      c752bda0
    • Jérome Perrin's avatar
      component/statsmodels: version up 0.13.5 ( py3 only ) · bc37de43
      Jérome Perrin authored
      This comes with a patch because the setup.py does not have version,
      which is not supported with our old tooling.
      bc37de43
    • Jérome Perrin's avatar
      component/scipy: don't install scripts in setup-eggs parts · 6e90322d
      Jérome Perrin authored
      This section is just for setup, it does not make sense to generate
      scripts here and it cause errors when another section uses the same
      technique.
      6e90322d
    • Jérome Perrin's avatar
      component/openblas: version up 0.3.24 · 4aeb5f52
      Jérome Perrin authored
      4aeb5f52
    • Jérome Perrin's avatar
      4afb5e4d
    • Jérome Perrin's avatar
      6dfb2120
    • Jérome Perrin's avatar
      ff4efb5b
    • Jérome Perrin's avatar
      5959b9e1
    • Jérome Perrin's avatar
      component/cython: version up 0.29.36 · 4bc5ca20
      Jérome Perrin authored
      Note that we don't use 3 yet because nexedi/pygolang@6446a0be
      4bc5ca20
    • Thomas Gambier's avatar
    • Kazuhiko Shiozaki's avatar
    • Kazuhiko Shiozaki's avatar
      component/mariadb: add bison and m4 in PATH. · 1933827d
      Kazuhiko Shiozaki authored
      if only bison exists in PATH, we will get an error:
      /path/to/bison: m4 subprocess failed: No such file or directory
      1933827d
    • Kazuhiko Shiozaki's avatar
      component/mariadb: version up MariaDB 10.4.31 and add MariaDB 10.5.22, 10.6.15 and 10.11.5. · 485d7def
      Kazuhiko Shiozaki authored
      also copy libperfschema.a in lib directory to build mroonga with MariaDB >= 10.5.
      485d7def
    • Thomas Gambier's avatar
      2ed6d4a5
    • Xavier Thompson's avatar
      software/theia: Make theiaN frontend names unique · 601b8d67
      Xavier Thompson authored
      This concerns a case of resiliency in Theia: when a resilient Theia
      requests multiple import clones (by default only one is requested),
      e.g. when theia0 (export) has two import clones theia1 and theia2.
      
      Each clone requests a frontend for their theia service, which allows
      the Theia editor of the clone to be accessed without doing a takeover.
      
      Before this, all the import clones would request a frontend with the
      same name. This meant that only one frontend was allocated and might
      randomly redirect to one of the backup clones.
      
      See merge request nexedi/slapos!1481
      601b8d67
    • Lu Xu's avatar
      fixup! software/ors-amarisoft: remove redundant netconf supervision subsciption · efd88387
      Lu Xu authored
      accidentally removed
      [slaplte.jinja2]
      _update_hash_filename_ = slaplte.jinja2
      md5sum =
      from buildout.hash.cfg
      efd88387
    • Lu Xu's avatar
      software/ors-amarisoft: remove redundant netconf supervision subsciption · 937a1b70
      Lu Xu authored
      The Netconf subscriptions were added twice, causing the RU to reboot
      because there was no supervision check on the redundant subscription.
      937a1b70
    • Lu Xu's avatar
      software/ors-amarisoft: fix ncclient waiting notification forever · 59007b49
      Lu Xu authored
      The Ncclient does not have a timeout for taking notifications, causing it to wait indefinitely. This can result in the connection being lost while the waiting process is still ongoing.
      59007b49
    • Kirill Smelkov's avatar
      software/ors-amarisoft: Fix enb.cfg build in standalone mode (mme_addr) · 1a6b9fcd
      Kirill Smelkov authored
      After cell_list problem was fixed in the previous patch, now building enb.cfg
      in standalone mode fails on mme_addr:
      
          slapuser35@vifibcloud-rapidspace-hosting-018:~/srv/project/slapos/software/ors-amarisoft$ ./pythonwitheggs slapos-render-config.py
          Traceback (most recent call last):
            File "/srv/slapgrid/slappart35/srv/project/slapos/software/ors-amarisoft/./pythonwitheggs", line 47, in <module>
              exec(compile(__file__f.read(), __file__, "exec"))
            File "slapos-render-config.py", line 92, in <module>
              do('enb', {"tdd_ul_dl_config": "[Configuration 6] 5ms 5UL 3DL (maximum uplink)"})
            File "slapos-render-config.py", line 90, in do
              j2render(cfg, json_params % locals())
            File "slapos-render-config.py", line 38, in j2render
              f.write(r._render().decode())
            File "/srv/slapgrid/slappart35/srv/runner/software/0b402c7d1e7c38a4324c836766690bb6/eggs/slapos.recipe.template-5.1-py3.9.egg/slapos/recipe/template/jinja2_template.py", line 215, in _render
              return template_object.render(**self.context).encode(self.encoding)
            File "/srv/slapgrid/slappart35/srv/runner/software/0b402c7d1e7c38a4324c836766690bb6/eggs/Jinja2-2.11.3-py3.9.egg/jinja2/environment.py", line 1090, in render
              self.environment.handle_exception()
            File "/srv/slapgrid/slappart35/srv/runner/software/0b402c7d1e7c38a4324c836766690bb6/eggs/Jinja2-2.11.3-py3.9.egg/jinja2/environment.py", line 832, in handle_exception
              reraise(*rewrite_traceback_stack(source=source))
            File "/srv/slapgrid/slappart35/srv/runner/software/0b402c7d1e7c38a4324c836766690bb6/eggs/Jinja2-2.11.3-py3.9.egg/jinja2/_compat.py", line 28, in reraise
              raise value.with_traceback(tb)
            File "config/enb.jinja2.cfg", line 139, in top-level template code
              mme_addr: "{{ slap_configuration['configuration.mme_addr'] }}",
          jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'configuration.mme_addr'
      
      -> Fix it by providing both mme_addr in addition to amf_addr.
      
      Now both enb.cfg and gnb.cfg render in standalone mode well.
      
      /cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus
      1a6b9fcd
    • Kirill Smelkov's avatar
      software/ors-amarisoft: Fix enb.cfg build in standalone mode (cell_list) · 76092aa2
      Kirill Smelkov authored
      In b0c37a4a (software/ors-amarisoft: Start to generalize existing
      lopcomm/multicell into multiRU slowly) I deduplicated cell_list initialization
      and moved it into single place, but overlooked that enb.cfg build became broken
      in standalone mode:
      
          .../software/ors-amarisoft$ ./pythonwitheggs slapos-render-config.py
          Traceback (most recent call last):
            File "/srv/slapgrid/slappart35/srv/project/slapos/software/ors-amarisoft/./pythonwitheggs", line 47, in <module>
              exec(compile(__file__f.read(), __file__, "exec"))
            File "slapos-render-config.py", line 88, in <module>
              do('enb', {"tdd_ul_dl_config": "[Configuration 6] 5ms 5UL 3DL (maximum uplink)"})
            File "slapos-render-config.py", line 86, in do
              j2render(cfg, json_params % locals())
            File "slapos-render-config.py", line 34, in j2render
              f.write(r._render().decode())
            File ".../eggs/slapos.recipe.template-5.1-py3.9.egg/slapos/recipe/template/jinja2_template.py", line 215, in _render
              return template_object.render(**self.context).encode(self.encoding)
            File ".../eggs/Jinja2-2.11.3-py3.9.egg/jinja2/environment.py", line 1090, in render
              self.environment.handle_exception()
            File ".../eggs/Jinja2-2.11.3-py3.9.egg/jinja2/environment.py", line 832, in handle_exception
              reraise(*rewrite_traceback_stack(source=source))
            File ".../eggs/Jinja2-2.11.3-py3.9.egg/jinja2/_compat.py", line 28, in reraise
              raise value.with_traceback(tb)
            File "config/enb.jinja2.cfg", line 1, in top-level template code
              {%- set cell_count = cell_list|length %}
          jinja2.exceptions.UndefinedError: 'cell_list' is undefined
      
      -> Fix it by teaching enb.jinja2.cfg to also load cell list in standalone by itself.
      
      Not touching gnb.jinja2.cfg as currently gnb does not support multicell at all,
      and in the future it will be sole enb.cfg to handle both LTE and NR
      simultaneously.
      
      /cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus
      76092aa2
    • Kirill Smelkov's avatar
      software/ors-amarisoft: slapos-render-config: Add rendering of enb.cfg as well · 29d34086
      Kirill Smelkov authored
      This currently has severl problems which we'll be fixing up one by one in the followup patches.
      
      /cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus
      29d34086
    • Kirill Smelkov's avatar
      software/ors-amarisoft: slapos-render-config: Prepare to render both enb and gnd · 7a0cbd6d
      Kirill Smelkov authored
      Currently which config to render is hardcoded in this program and only of the
      is rendered - currently gnb.  This leads to situation where it is easy to miss
      breakage of unselected config.
      
      -> Factor one config rendering into common routine as the preparatory step to
      render both enb.cfg and gnb.cfg
      
      /cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus
      7a0cbd6d
    • Kirill Smelkov's avatar
      software/ors-amarisoft: Start to put common code to load cells and radio units... · 93dfe5a7
      Kirill Smelkov authored
      software/ors-amarisoft: Start to put common code to load cells and radio units and handle them into slaplte package
      
      We will soon need to use that shared code not only from radio library under ru/ ,
      but also from enb.jinja2.cfg and to fix slapos-render-config.
      
      /cc @jhuge, @lu.xu, @xavier_thompson, @Daetalus
      93dfe5a7
    • Kirill Smelkov's avatar
      fixup! software/ors-amarisoft: enb: Move DRB configuration to standalone file · 061c000c
      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
      061c000c
    • Jérome Perrin's avatar
      software/headless-chromium: Update chromium to 114.0.5735.340 · 49ba6770
      Jérome Perrin authored
      We had to introduce a web page to bootstrap the web version of devtools
      because since https://bugs.chromium.org/p/chromium/issues/detail?id=1232509
      chrome debugger port no longer serve such a page via HTTP.
      
      The URL also changed, /serve_file/@{version_hash}. pattern is no longer
      used, both the devtools and the websocket endpoint are in /devtools
      
      The test was made a bit more complete by actually making requests and
      trying to connect to websocket endpoints.
      
      Some problems were found with incognito and block-new-web-contents
      options:
       - they are boolean type, but the software parameter serialisation is
       XML, which as of today does not support boolean types. This is left
       TODO for now
       - When both --incognito and --block-new-web-contents are true, the
       command line flag was --incognito--block-new-web-contents, which is
       unknown and was ignored. Some minmal changes are included to fix this.
      49ba6770
    • Jérome Perrin's avatar
      software/gitlab: don't install ed25519 for debian 12 compatibility · e29aa946
      Jérome Perrin authored
      This uses rbnacl-sodium which bundle an old version of libsodium that
      can not be compiled with gcc 12. This is an optional dependency to
      support ed25519 ssh keys, but we the slapos version of gitlab does not
      use ssh, only https, so we don't actually need to install this.
      e29aa946
    • Jérome Perrin's avatar
    • Jérome Perrin's avatar
      component/r-language: include libtirpc · 3d22ea0f
      Jérome Perrin authored
      To prevent linking with system libtirpc if the corresponding system
      -dev package is installed
      3d22ea0f
    • Jérome Perrin's avatar
      component/util-linux: build with slapos ncurses · 2255229d
      Jérome Perrin authored
      We were using --without-ncurses but this does not prevent the build
      from using system package when ncurses-dev system package is installed.
      2255229d
    • Jérome Perrin's avatar
      component/trafficserver: fix ncurses detection · 9f2b6d4c
      Jérome Perrin authored
      This was building against system library when ncurses-dev system
      package is installed
      9f2b6d4c
  2. 17 Nov, 2023 4 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