oci: make ExecSync with ExitCode != 0 act properly
Previously we returned an internal error result when a program had a non-zero exit code, which was incorrect. Fix this as well as change the tests to actually check the "ExitCode" response from ExecSync (rather than expecting ocic-ctr to return an internal error). Signed-off-by: Aleksa Sarai <asarai@suse.de>
This commit is contained in:
parent
32750cd3f3
commit
8a928d06e7
2 changed files with 7 additions and 13 deletions
11
oci/oci.go
11
oci/oci.go
|
@ -380,15 +380,6 @@ func (r *Runtime) ExecSync(c *Container, command []string, timeout int64) (resp
|
||||||
|
|
||||||
logrus.Infof("Received container exit code: %v", ec.ExitCode)
|
logrus.Infof("Received container exit code: %v", ec.ExitCode)
|
||||||
|
|
||||||
if ec.ExitCode != 0 {
|
|
||||||
return nil, ExecSyncError{
|
|
||||||
Stdout: stdoutBuf,
|
|
||||||
Stderr: stderrBuf,
|
|
||||||
ExitCode: ec.ExitCode,
|
|
||||||
Err: fmt.Errorf("container workload exited with error %v", ec.ExitCode),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The actual logged output is not the same as stdoutBuf and stderrBuf,
|
// The actual logged output is not the same as stdoutBuf and stderrBuf,
|
||||||
// which are used for getting error information. For the actual
|
// which are used for getting error information. For the actual
|
||||||
// ExecSyncResponse we have to read the logfile.
|
// ExecSyncResponse we have to read the logfile.
|
||||||
|
@ -408,7 +399,7 @@ func (r *Runtime) ExecSync(c *Container, command []string, timeout int64) (resp
|
||||||
return &ExecSyncResponse{
|
return &ExecSyncResponse{
|
||||||
Stdout: outputBytes,
|
Stdout: outputBytes,
|
||||||
Stderr: nil,
|
Stderr: nil,
|
||||||
ExitCode: 0,
|
ExitCode: ec.ExitCode,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,8 @@ function teardown() {
|
||||||
[ "$status" -eq 0 ]
|
[ "$status" -eq 0 ]
|
||||||
run ocic ctr execsync --id "$ctr_id" chmod 777 .
|
run ocic ctr execsync --id "$ctr_id" chmod 777 .
|
||||||
echo "$output"
|
echo "$output"
|
||||||
[ "$status" -ne 0 ]
|
[ "$status" -eq 0 ]
|
||||||
|
[[ "$output" =~ "Exit code: 1" ]]
|
||||||
[[ "$output" =~ "Operation not permitted" ]]
|
[[ "$output" =~ "Operation not permitted" ]]
|
||||||
|
|
||||||
cleanup_ctrs
|
cleanup_ctrs
|
||||||
|
@ -158,7 +159,8 @@ function teardown() {
|
||||||
[ "$status" -eq 0 ]
|
[ "$status" -eq 0 ]
|
||||||
run ocic ctr execsync --id "$ctr_id" chmod 777 .
|
run ocic ctr execsync --id "$ctr_id" chmod 777 .
|
||||||
echo "$output"
|
echo "$output"
|
||||||
[ "$status" -ne 0 ]
|
[ "$status" -eq 0 ]
|
||||||
|
[[ "$output" =~ "Exit code: 1" ]]
|
||||||
[[ "$output" =~ "Operation not permitted" ]]
|
[[ "$output" =~ "Operation not permitted" ]]
|
||||||
|
|
||||||
cleanup_ctrs
|
cleanup_ctrs
|
||||||
|
@ -269,7 +271,8 @@ function teardown() {
|
||||||
[ "$status" -eq 0 ]
|
[ "$status" -eq 0 ]
|
||||||
run ocic ctr execsync --id "$ctr_id" chmod 777 .
|
run ocic ctr execsync --id "$ctr_id" chmod 777 .
|
||||||
echo "$output"
|
echo "$output"
|
||||||
[ "$status" -ne 0 ]
|
[ "$status" -eq 0 ]
|
||||||
|
[[ "$output" =~ "Exit code: 1" ]]
|
||||||
[[ "$output" =~ "Operation not permitted" ]]
|
[[ "$output" =~ "Operation not permitted" ]]
|
||||||
|
|
||||||
cleanup_ctrs
|
cleanup_ctrs
|
||||||
|
|
Loading…
Reference in a new issue