solver/dnf4: structured data

Instead of returning the string contents of the module configuration
file let's return some more structured data so the resulting file can be
written with a stage.

Note that we don't do the same for the fallback file as we are only
provided this as a YAML blob and unparsing it to then immediately
reparse it again is counterproductive.

Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
This commit is contained in:
Simon de Vlieger 2025-01-16 11:32:06 +01:00 committed by Ondřej Budai
parent b616da69f3
commit 4337cd9595

View file

@ -5,7 +5,6 @@ import itertools
import os
import os.path
import tempfile
import textwrap
from datetime import datetime
from typing import Dict, List
@ -403,18 +402,15 @@ class DNF(SolverBase):
# repository is disabled or disappears that non-modular content can't be installed
# see: https://dnf.readthedocs.io/en/latest/modularity.html#fail-safe-mechanisms
for module_ns, (module, profiles) in modules.items():
profiles = ",".join(profiles) if profiles else ""
response["modules"][module.getName()] = {
"module-file": {
"data": textwrap.dedent(f"""\
[{module.getName()}]
name={module.getName()}
stream={module.getStream()}
profiles={profiles}
state=enabled
"""),
"path": f"/etc/dnf/modules.d/{module.getName()}.conf",
"data": {
"name": module.getName(),
"stream": module.getStream(),
"profiles": list(profiles),
"state": "enabled",
}
},
"failsafe-file": {
"data": module.getYaml(),