util: fall back to /usr/share for storage.conf if no /etc config

The system-wide location for the containers storage.conf is
/usr/share/containers.  The existence of a file in /etc/containers
completely overrides this (see containers-storage.conf(5)).
If no file is found at /etc/containers/storage.conf then fall back to
reading the config from /usr/share/containers/storage.conf.

If neither file exists, this is an error since the default config should
be packaged with any tool that requires it (skopeo, podman, etc).
This commit is contained in:
Achilleas Koutsou 2024-02-13 17:24:24 +01:00 committed by Ondřej Budai
parent 06801bb442
commit 2d779a14e4

View file

@ -182,7 +182,14 @@ def get_host_storage(storage_conf=None):
except ImportError:
import tomli as toml
config_paths = ("/etc/containers/storage.conf", "/usr/share/containers/storage.conf")
if not storage_conf:
with open("/etc/containers/storage.conf", "rb") as conf_file:
storage_conf = toml.load(conf_file)
return storage_conf
for conf_path in config_paths:
try:
with open(conf_path, "rb") as conf_file:
storage_conf = toml.load(conf_file)
return storage_conf
except FileNotFoundError:
pass
raise FileNotFoundError(f"could not find container storage configuration in any of {config_paths}")