Add remote streaming implementation.

This commit is contained in:
Random-Liu 2016-11-04 17:04:05 -07:00
parent 8a2c639bfb
commit 158e48861c
2 changed files with 17 additions and 1 deletions

View File

@ -21,6 +21,7 @@ go_library(
"//pkg/kubelet/api:go_default_library",
"//pkg/kubelet/api/v1alpha1/runtime:go_default_library",
"//pkg/kubelet/dockershim:go_default_library",
"//pkg/util/exec:go_default_library",
"//pkg/util/interrupt:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:golang.org/x/net/context",

View File

@ -18,12 +18,14 @@ package remote
import (
"fmt"
"time"
"golang.org/x/net/context"
internalApi "k8s.io/kubernetes/pkg/kubelet/api"
runtimeApi "k8s.io/kubernetes/pkg/kubelet/api/v1alpha1/runtime"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
utilexec "k8s.io/kubernetes/pkg/util/exec"
)
// DockerService is the interface implement CRI remote service server.
@ -138,7 +140,20 @@ func (d *dockerService) ContainerStatus(ctx context.Context, r *runtimeApi.Conta
}
func (d *dockerService) ExecSync(ctx context.Context, r *runtimeApi.ExecSyncRequest) (*runtimeApi.ExecSyncResponse, error) {
return nil, fmt.Errorf("not implemented")
stdout, stderr, err := d.runtimeService.ExecSync(r.GetContainerId(), r.GetCmd(), time.Duration(r.GetTimeout())*time.Second)
var exitCode int32
if err != nil {
exitError, ok := err.(utilexec.ExitError)
if !ok {
return nil, err
}
exitCode = int32(exitError.ExitStatus())
}
return &runtimeApi.ExecSyncResponse{
Stdout: stdout,
Stderr: stderr,
ExitCode: &exitCode,
}, nil
}
func (d *dockerService) Exec(ctx context.Context, r *runtimeApi.ExecRequest) (*runtimeApi.ExecResponse, error) {