summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2023-06-27 20:03:47 +0200
committerGitHub <noreply@github.com>2023-06-27 20:03:47 +0200
commit6a2ddc478d61db6b177bd7ac49dcff0df9f69db8 (patch)
treea94ffd53b4cafa19f63767c4053e1f5d387e05c9
parent90c0c2c4c81cdbf2ec3f928499f3e1719bfd6f9a (diff)
parentb47b73f5820e6ae2b428a3e36d3d9c2fe9076dc8 (diff)
downloadvyos-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.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} ' \