Skip to content

Commit 7ad8649

Browse files
committed
Use private and sared instead of Z and z
Signed-off-by: Jaroslav Henner <1187265+jarovo@users.noreply.github.com>
1 parent d8d852f commit 7ad8649

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

docs/Extensions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ For explanations of these extensions, please refer to the [Podman Documentation]
3131
```yml
3232
secrets:
3333
custom-secret:
34-
x-podman.relabel: z
34+
x-podman.relabel: private
3535
```
36-
For explanations of these extensions, please refer to the [PR discussion](https://github.com/containers/podman-compose/pull/1210).
36+
For explanations of these extensions, please refer to the [Linux kernel documentation for shared filesystem subtrees](https://docs.kernel.org/filesystems/sharedsubtree.html)).
3737
3838
## Network management
3939

podman_compose.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,7 @@ def get_secret_args(compose, cnt, secret, podman_is_building=False):
577577
declared_secret = compose.declared_secrets[secret_name]
578578

579579
source_file = declared_secret.get("file")
580-
secret_relabel = declared_secret.get("x-podman.relabel")
580+
x_podman_relabel = declared_secret.get("x-podman.relabel")
581581
dest_file = ""
582582
secret_opts = ""
583583

@@ -621,12 +621,16 @@ def get_secret_args(compose, cnt, secret, podman_is_building=False):
621621
dest_file = secret_target
622622

623623
mount_options = 'ro,rprivate,rbind'
624-
if secret_relabel not in set(("z", "Z", None)):
624+
625+
selinux_relabel_to_mount_option_map = {None: "", "shared": ",z", "private": ",Z"}
626+
try:
627+
selinux_mount_option = selinux_relabel_to_mount_option_map[x_podman_relabel]
628+
except KeyError as exc:
625629
raise ValueError(
626-
f'ERORR: Run secret "{secret_name} has invalid "relabel" option '
627-
+ f'"{secret_relabel}". Expected "Z" "z" or nothing.')
628-
if secret_relabel:
629-
mount_options = f'{mount_options},{secret_relabel}'
630+
f'ERORR: Run secret "{secret_name} has invalid "relabel" option related '
631+
+ f' to SELinux "{x_podman_relabel}". Expected "shared" "private" or nothing.'
632+
) from exc
633+
mount_options = f'{mount_options}{selinux_mount_option}'
630634
volume_ref = ["--volume", f"{source_file}:{dest_file}:{mount_options}"]
631635

632636
if secret_uid or secret_gid or secret_mode:

tests/unit/test_container_to_args_secrets.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,15 +304,16 @@ async def test_secret_target_matches_secret_name_secret_type_not_env(self):
304304
),
305305
(
306306
"relabel",
307-
{
308-
"file_secret": {
309-
"file": "./my_secret",
310-
"x-podman.relabel": "Z"
311-
}
312-
},
307+
{"file_secret": {"file": "./my_secret", "x-podman.relabel": "private"}},
313308
"file_secret",
314309
repo_root() + "/test_dirname/my_secret:/run/secrets/file_secret:ro,rprivate,rbind,Z",
315310
),
311+
(
312+
"relabel",
313+
{"file_secret": {"file": "./my_secret", "x-podman.relabel": "shared"}},
314+
"file_secret",
315+
repo_root() + "/test_dirname/my_secret:/run/secrets/file_secret:ro,rprivate,rbind,z",
316+
),
316317
(
317318
"custom_target_name",
318319
{

0 commit comments

Comments
 (0)