diff options
author | Christian Breunig <christian@breunig.cc> | 2023-06-27 20:03:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-27 20:03:47 +0200 |
commit | 6a2ddc478d61db6b177bd7ac49dcff0df9f69db8 (patch) | |
tree | a94ffd53b4cafa19f63767c4053e1f5d387e05c9 | |
parent | 90c0c2c4c81cdbf2ec3f928499f3e1719bfd6f9a (diff) | |
parent | b47b73f5820e6ae2b428a3e36d3d9c2fe9076dc8 (diff) | |
download | vyos-1x-6a2ddc478d61db6b177bd7ac49dcff0df9f69db8.tar.gz vyos-1x-6a2ddc478d61db6b177bd7ac49dcff0df9f69db8.zip |
Merge pull request #2051 from sever-sever/T5304
T5304: Container add volume bind propagation option
-rw-r--r-- | interface-definitions/container.xml.in | 36 | ||||
-rwxr-xr-x | src/conf_mode/container.py | 3 |
2 files changed, 38 insertions, 1 deletions
diff --git a/interface-definitions/container.xml.in b/interface-definitions/container.xml.in index 6651fc642..d36b34941 100644 --- a/interface-definitions/container.xml.in +++ b/interface-definitions/container.xml.in @@ -334,6 +334,42 @@ </properties> <defaultValue>rw</defaultValue> </leafNode> + <leafNode name="propagation"> + <properties> + <help>Volume bind propagation</help> + <completionHelp> + <list>shared slave private rshared rslave rprivate</list> + </completionHelp> + <valueHelp> + <format>shared</format> + <description>Sub-mounts of the original mount are exposed to replica mounts</description> + </valueHelp> + <valueHelp> + <format>slave</format> + <description>Allow replica mount to see sub-mount from the original mount but not vice versa</description> + </valueHelp> + <valueHelp> + <format>private</format> + <description>Sub-mounts within a mount are not visible to replica mounts or the original mount</description> + </valueHelp> + <valueHelp> + <format>rshared</format> + <description>Allows sharing of mount points and their nested mount points between both the original and replica mounts</description> + </valueHelp> + <valueHelp> + <format>rslave</format> + <description>Allows mount point and their nested mount points between original an replica mounts</description> + </valueHelp> + <valueHelp> + <format>rprivate</format> + <description>No mount points within original or replica mounts in any direction</description> + </valueHelp> + <constraint> + <regex>(shared|slave|private|rshared|rslave|rprivate)</regex> + </constraint> + </properties> + <defaultValue>rprivate</defaultValue> + </leafNode> </children> </tagNode> </children> diff --git a/src/conf_mode/container.py b/src/conf_mode/container.py index aceb27fb0..6198bb65f 100755 --- a/src/conf_mode/container.py +++ b/src/conf_mode/container.py @@ -321,7 +321,8 @@ def generate_run_arguments(name, container_config): svol = vol_config['source'] dvol = vol_config['destination'] mode = vol_config['mode'] - volume += f' --volume {svol}:{dvol}:{mode}' + prop = vol_config['propagation'] + volume += f' --volume {svol}:{dvol}:{mode},{prop}' container_base_cmd = f'--detach --interactive --tty --replace {cap_add} ' \ f'--memory {memory}m --shm-size {shared_memory}m --memory-swap 0 --restart {restart} ' \ |