mirror of
https://github.com/containers/podman.git
synced 2025-05-31 15:42:48 +08:00
fix: parsing of HostConfig.Mounts for container create
Signed-off-by: Matej Vasek <mvasek@redhat.com>
This commit is contained in:
@ -103,7 +103,9 @@ func ContainerCreateToContainerCLIOpts(cc handlers.CreateContainerConfig, rtc *c
|
|||||||
addField(&builder, "type", string(m.Type))
|
addField(&builder, "type", string(m.Type))
|
||||||
addField(&builder, "source", m.Source)
|
addField(&builder, "source", m.Source)
|
||||||
addField(&builder, "target", m.Target)
|
addField(&builder, "target", m.Target)
|
||||||
addField(&builder, "ro", strconv.FormatBool(m.ReadOnly))
|
if m.ReadOnly {
|
||||||
|
addField(&builder, "ro", "true")
|
||||||
|
}
|
||||||
addField(&builder, "consistency", string(m.Consistency))
|
addField(&builder, "consistency", string(m.Consistency))
|
||||||
// Map any specialized mount options that intersect between *Options and cli options
|
// Map any specialized mount options that intersect between *Options and cli options
|
||||||
switch m.Type {
|
switch m.Type {
|
||||||
|
@ -3,12 +3,13 @@ import subprocess
|
|||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import unittest
|
import unittest
|
||||||
from typing import IO, Optional
|
from typing import IO, Optional, List
|
||||||
|
|
||||||
from docker import DockerClient, errors
|
from docker import DockerClient, errors
|
||||||
from docker.models.containers import Container
|
from docker.models.containers import Container
|
||||||
from docker.models.images import Image
|
from docker.models.images import Image
|
||||||
from docker.models.volumes import Volume
|
from docker.models.volumes import Volume
|
||||||
|
from docker.types import Mount
|
||||||
|
|
||||||
from test.python.docker import Podman
|
from test.python.docker import Podman
|
||||||
from test.python.docker.compat import common, constant
|
from test.python.docker.compat import common, constant
|
||||||
@ -277,3 +278,25 @@ class TestContainers(unittest.TestCase):
|
|||||||
ctr.start()
|
ctr.start()
|
||||||
ret, out = ctr.exec_run(["stat", "/workspace/scratch/test"])
|
ret, out = ctr.exec_run(["stat", "/workspace/scratch/test"])
|
||||||
self.assertEqual(ret, 0, "Working directory created if it doesn't exist")
|
self.assertEqual(ret, 0, "Working directory created if it doesn't exist")
|
||||||
|
|
||||||
|
def test_mount_rw_by_default(self):
|
||||||
|
ctr: Optional[Container] = None
|
||||||
|
vol: Optional[Volume] = None
|
||||||
|
try:
|
||||||
|
vol = self.client.volumes.create("test-volume")
|
||||||
|
ctr = self.client.containers.create(image="alpine",
|
||||||
|
detach=True,
|
||||||
|
command="top",
|
||||||
|
mounts=[Mount(target="/vol-mnt",
|
||||||
|
source="test-volume",
|
||||||
|
type='volume',
|
||||||
|
read_only=False)])
|
||||||
|
ctr_inspect = self.client.api.inspect_container(ctr.id)
|
||||||
|
binds: List[str] = ctr_inspect["HostConfig"]["Binds"]
|
||||||
|
self.assertEqual(len(binds), 1)
|
||||||
|
self.assertEqual(binds[0], 'test-volume:/vol-mnt:rw,rprivate,nosuid,nodev,rbind')
|
||||||
|
finally:
|
||||||
|
if ctr is not None:
|
||||||
|
ctr.remove()
|
||||||
|
if vol is not None:
|
||||||
|
vol.remove(force=True)
|
||||||
|
Reference in New Issue
Block a user