mirror of
https://github.com/containers/podman
synced 2024-10-20 17:23:30 +00:00
Merge pull request #7236 from mheon/write_error_to_inspect
Ensure that exec errors write exit codes to the DB
This commit is contained in:
commit
bae6d5ddaf
|
@ -415,6 +415,13 @@ func (c *Container) ExecHTTPStartAndAttach(sessionID string, httpCon net.Conn, h
|
|||
|
||||
execOpts, err := prepareForExec(c, session)
|
||||
if err != nil {
|
||||
session.State = define.ExecStateStopped
|
||||
session.ExitCode = define.ExecErrorCodeGeneric
|
||||
|
||||
if err := c.save(); err != nil {
|
||||
logrus.Errorf("Error saving container %s exec session %s after failure to prepare: %v", err, c.ID(), session.ID())
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -427,6 +434,13 @@ func (c *Container) ExecHTTPStartAndAttach(sessionID string, httpCon net.Conn, h
|
|||
|
||||
pid, attachChan, err := c.ociRuntime.ExecContainerHTTP(c, session.ID(), execOpts, httpCon, httpBuf, streams, cancel)
|
||||
if err != nil {
|
||||
session.State = define.ExecStateStopped
|
||||
session.ExitCode = define.TranslateExecErrorToExitCode(define.ExecErrorCodeGeneric, err)
|
||||
|
||||
if err := c.save(); err != nil {
|
||||
logrus.Errorf("Error saving container %s exec session %s after failure to start: %v", err, c.ID(), session.ID())
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -210,7 +210,6 @@ var _ = Describe("Podman exec", func() {
|
|||
})
|
||||
|
||||
It("podman exec missing working directory test", func() {
|
||||
Skip(v2remotefail)
|
||||
setup := podmanTest.RunTopContainer("test1")
|
||||
setup.WaitWithDefaultTimeout()
|
||||
Expect(setup.ExitCode()).To(Equal(0))
|
||||
|
@ -225,7 +224,6 @@ var _ = Describe("Podman exec", func() {
|
|||
})
|
||||
|
||||
It("podman exec cannot be invoked", func() {
|
||||
Skip(v2remotefail)
|
||||
setup := podmanTest.RunTopContainer("test1")
|
||||
setup.WaitWithDefaultTimeout()
|
||||
Expect(setup.ExitCode()).To(Equal(0))
|
||||
|
@ -236,7 +234,6 @@ var _ = Describe("Podman exec", func() {
|
|||
})
|
||||
|
||||
It("podman exec command not found", func() {
|
||||
Skip(v2remotefail)
|
||||
setup := podmanTest.RunTopContainer("test1")
|
||||
setup.WaitWithDefaultTimeout()
|
||||
Expect(setup.ExitCode()).To(Equal(0))
|
||||
|
|
|
@ -19,6 +19,15 @@ load helpers
|
|||
run_podman exec $cid sh -c "cat /$rand_filename"
|
||||
is "$output" "$rand_content" "Can exec and see file in running container"
|
||||
|
||||
|
||||
# Specially defined situations: exec a dir, or no such command.
|
||||
# We don't check the full error message because runc & crun differ.
|
||||
run_podman 126 exec $cid /etc
|
||||
is "$output" ".*permission denied" "podman exec /etc"
|
||||
run_podman 127 exec $cid /no/such/command
|
||||
is "$output" ".*such file or dir" "podman exec /no/such/command"
|
||||
|
||||
# Done
|
||||
run_podman exec $cid rm -f /$rand_filename
|
||||
|
||||
run_podman wait $cid
|
||||
|
|
Loading…
Reference in a new issue