func (s *server) GetExec(req *runtimeapi.ExecRequest) (*runtimeapi.ExecResponse, error) { url := s.buildURL("exec", req.GetContainerId(), streamOpts{ stdin: req.GetStdin(), stdout: true, stderr: !req.GetTty(), // For TTY connections, both stderr is combined with stdout. tty: req.GetTty(), command: req.GetCmd(), }) return &runtimeapi.ExecResponse{ Url: &url, }, nil }
// Exec prepares a streaming endpoint to execute a command in the container, and returns the address. func (r *RemoteRuntimeService) Exec(req *runtimeApi.ExecRequest) (*runtimeApi.ExecResponse, error) { ctx, cancel := getContextWithTimeout(r.timeout) defer cancel() resp, err := r.runtimeClient.Exec(ctx, req) if err != nil { glog.Errorf("Exec %s '%s' from runtime service failed: %v", req.GetContainerId(), strings.Join(req.GetCmd(), " "), err) return nil, err } return resp, nil }