summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2023-06-21 13:59:41 +0000
committerViacheslav Hletenko <v.gletenko@vyos.io>2023-06-27 12:35:54 +0000
commitb47b73f5820e6ae2b428a3e36d3d9c2fe9076dc8 (patch)
tree0cc6c7486f7673b1d22b172098f0bfd8f4aace5e
parent3f197566f957cb0e354a474bccee0aefd62b33be (diff)
downloadvyos-1x-b47b73f5820e6ae2b428a3e36d3d9c2fe9076dc8.tar.gz
vyos-1x-b47b73f5820e6ae2b428a3e36d3d9c2fe9076dc8.zip
T5304: Container add volume bind propagation option
set container name c1 volume myvlm propagation rshared
-rw-r--r--interface-definitions/container.xml.in36
-rwxr-xr-xsrc/conf_mode/container.py3
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} ' \