mirror of
https://github.com/containers/podman.git
synced 2025-05-25 02:57:21 +08:00
fix: error reporting for archive endpoint
Returning 500 when copying to read-only destination. Signed-off-by: Matej Vasek <mvasek@redhat.com>
This commit is contained in:
@ -133,8 +133,10 @@ func handlePut(w http.ResponseWriter, r *http.Request, decoder *schema.Decoder,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
w.WriteHeader(http.StatusOK)
|
|
||||||
if err := copyFunc(); err != nil {
|
if err := copyFunc(); err != nil {
|
||||||
logrus.Error(err.Error())
|
logrus.Error(err.Error())
|
||||||
|
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ from typing import IO, Optional
|
|||||||
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 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
|
||||||
@ -207,9 +208,14 @@ class TestContainers(unittest.TestCase):
|
|||||||
|
|
||||||
def test_copy_to_container(self):
|
def test_copy_to_container(self):
|
||||||
ctr: Optional[Container] = None
|
ctr: Optional[Container] = None
|
||||||
|
vol: Optional[Volume] = None
|
||||||
try:
|
try:
|
||||||
test_file_content = b"Hello World!"
|
test_file_content = b"Hello World!"
|
||||||
ctr = self.client.containers.create(image="alpine", detach=True, command="top")
|
vol = self.client.volumes.create("test-volume")
|
||||||
|
ctr = self.client.containers.create(image="alpine",
|
||||||
|
detach=True,
|
||||||
|
command="top",
|
||||||
|
volumes=["test-volume:/test-volume-read-only:ro"])
|
||||||
ctr.start()
|
ctr.start()
|
||||||
|
|
||||||
buff: IO[bytes] = io.BytesIO()
|
buff: IO[bytes] = io.BytesIO()
|
||||||
@ -234,10 +240,16 @@ class TestContainers(unittest.TestCase):
|
|||||||
ret, out = ctr.exec_run(["cat", "/tmp/a.txt"])
|
ret, out = ctr.exec_run(["cat", "/tmp/a.txt"])
|
||||||
self.assertEqual(ret, 0)
|
self.assertEqual(ret, 0)
|
||||||
self.assertEqual(out.rstrip(), test_file_content, "Content of copied file")
|
self.assertEqual(out.rstrip(), test_file_content, "Content of copied file")
|
||||||
|
|
||||||
|
buff.seek(0)
|
||||||
|
with self.assertRaises(errors.APIError):
|
||||||
|
ctr.put_archive("/test-volume-read-only/", buff)
|
||||||
finally:
|
finally:
|
||||||
if ctr is not None:
|
if ctr is not None:
|
||||||
ctr.stop()
|
ctr.stop()
|
||||||
ctr.remove()
|
ctr.remove()
|
||||||
|
if vol is not None:
|
||||||
|
vol.remove(force=True)
|
||||||
|
|
||||||
def test_mount_preexisting_dir(self):
|
def test_mount_preexisting_dir(self):
|
||||||
dockerfile = (B'FROM quay.io/libpod/alpine:latest\n'
|
dockerfile = (B'FROM quay.io/libpod/alpine:latest\n'
|
||||||
|
Reference in New Issue
Block a user