inputs: tweak containers-storage implementation
This commit tweaks the excellent work from Gianluca in PR#1550 a little bit. Now that the container inputs are their own input type some of the code that used to be part of the original `inputs/org.osbuild.containers` can be simplified.
This commit is contained in:
parent
882c9efbc1
commit
b5355c46ac
2 changed files with 9 additions and 21 deletions
|
|
@ -84,20 +84,14 @@ SCHEMA = r"""
|
|||
"""
|
||||
|
||||
|
||||
class ContainersInput(inputs.InputService):
|
||||
class ContainersStorageInput(inputs.InputService):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.mg = MountGuard()
|
||||
self.storage_conf = None
|
||||
|
||||
def map_storage_ref(self, _source, ref, target):
|
||||
# we only want to read the host once and only for inputs that
|
||||
# require it. If we do this for all inputs, reading the host
|
||||
# may cause unexpected errors.
|
||||
if self.storage_conf is None:
|
||||
self.storage_conf = containers.get_host_storage()
|
||||
self.storage_conf = containers.get_host_storage()
|
||||
|
||||
def bind_mount_local_storage(self, target):
|
||||
source = self.storage_conf["storage"]["graphroot"]
|
||||
dest = os.path.join(target, "storage")
|
||||
|
||||
|
|
@ -105,23 +99,17 @@ class ContainersInput(inputs.InputService):
|
|||
os.makedirs(dest, exist_ok=True)
|
||||
self.mg.mount(source, dest)
|
||||
|
||||
return ref, "containers-storage"
|
||||
|
||||
def map(self, store, origin, refs, target, _options):
|
||||
self.bind_mount_local_storage(target)
|
||||
|
||||
images = {}
|
||||
|
||||
for ref, data in refs.items():
|
||||
source = "org.osbuild.containers-storage"
|
||||
ref, container_format = self.map_storage_ref(source, ref, target)
|
||||
|
||||
images[ref] = {
|
||||
"format": container_format,
|
||||
"format": "containers-storage",
|
||||
"name": data["name"]
|
||||
}
|
||||
images[ref]["name"] = data["name"]
|
||||
|
||||
if container_format == "containers-storage" and self.storage_conf is not None:
|
||||
images[ref]["storage"] = self.storage_conf["storage"]
|
||||
images[ref]["storage"] = self.storage_conf["storage"]
|
||||
|
||||
reply = {
|
||||
"path": target,
|
||||
|
|
@ -137,7 +125,7 @@ class ContainersInput(inputs.InputService):
|
|||
|
||||
|
||||
def main():
|
||||
service = ContainersInput.from_args(sys.argv[1:])
|
||||
service = ContainersStorageInput.from_args(sys.argv[1:])
|
||||
service.main()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ def test_containers_local_inputs_integration(tmp_path, inputs_module):
|
|||
}
|
||||
}
|
||||
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
cnt_inputs = inputs_module.ContainersInput.from_args(["--service-fd", str(sock.fileno())])
|
||||
cnt_inputs = inputs_module.ContainersStorageInput.from_args(["--service-fd", str(sock.fileno())])
|
||||
store = FakeStoreClient(tmp_path / "fake-sources")
|
||||
# not using "tmp_path" here as it will "rm -rf" on cleanup and
|
||||
# that is dangerous as during the tests we bind mount the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue