DUNE-DAQ / DUNE-DAQ/daqpyutils

[Feature]: Restructure python dependency deployment model

Open
#14 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement python
Dominant language
Python
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Description

The DUNE DAQ org is currently entirely dependent on fixed versions of python packages, and in preparation for containerized deployments of certain applications (such as the process_manager, which is ready for such deployment), a more flexible dependency versioning model is required. Specifically, the following limitations/requests are encountered:

  • When deploying an application, even when using only a subset of the full fixed monolithic virtual environment, it must be used in its entirety. For deploying individual applications, only a subset of the monolithic venv are required, allowing for a more lightweight deployment.
  • All package versions are fixed, even if the relevant packages are not used, restricting the use of more modern dependencies which would otherwise be possible for monolithic venv functionality. As containerized application deployments will not require the full venv, they should have more flexibility in dependency versioning, which should be propagated throughout the python packages more globally.

It is thus required that we update the dependency deployment model to align with longer term strategies.

Potential impact radius

Large

Reason for change

Defined above.

Suggested implementations

The venv we use is large and complex, using a combination of in-venv dependencies and some spack deployed dependencies. A significant portion of this will be refactoring many of these repositories to be simpler. As an example, the kafkaopmon and erskafka repos are both mixed case repos (C++ and python), which may require splitting out in order to achieve this flexibility.

Testing suggestions

Once we have this deployment model clarified, we should run all standard tests, both in software only but also in hardware.

Anything else?

No response

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by mapping the monolithic virtual environment, its in-venv and Spack dependencies, and the deployment needs of process_manager. Review kafkaopmon and erskafka as examples of mixed C++ and Python repositories, then clarify the deployment model before running the standard software-only and hardware tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
devops, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.