kubelet/server: update cri to protobuf v3

This commit is contained in:
Pengfei Ni 2017-01-20 09:54:49 +08:00
parent 97fff6a7cf
commit 8e4ea2dd15
2 changed files with 53 additions and 55 deletions

View File

@ -146,7 +146,7 @@ type server struct {
} }
func (s *server) GetExec(req *runtimeapi.ExecRequest) (*runtimeapi.ExecResponse, error) { func (s *server) GetExec(req *runtimeapi.ExecRequest) (*runtimeapi.ExecResponse, error) {
if req.GetContainerId() == "" { if req.ContainerId == "" {
return nil, grpc.Errorf(codes.InvalidArgument, "missing required container_id") return nil, grpc.Errorf(codes.InvalidArgument, "missing required container_id")
} }
token, err := s.cache.Insert(req) token, err := s.cache.Insert(req)
@ -159,7 +159,7 @@ func (s *server) GetExec(req *runtimeapi.ExecRequest) (*runtimeapi.ExecResponse,
} }
func (s *server) GetAttach(req *runtimeapi.AttachRequest) (*runtimeapi.AttachResponse, error) { func (s *server) GetAttach(req *runtimeapi.AttachRequest) (*runtimeapi.AttachResponse, error) {
if req.GetContainerId() == "" { if req.ContainerId == "" {
return nil, grpc.Errorf(codes.InvalidArgument, "missing required container_id") return nil, grpc.Errorf(codes.InvalidArgument, "missing required container_id")
} }
token, err := s.cache.Insert(req) token, err := s.cache.Insert(req)
@ -172,7 +172,7 @@ func (s *server) GetAttach(req *runtimeapi.AttachRequest) (*runtimeapi.AttachRes
} }
func (s *server) GetPortForward(req *runtimeapi.PortForwardRequest) (*runtimeapi.PortForwardResponse, error) { func (s *server) GetPortForward(req *runtimeapi.PortForwardRequest) (*runtimeapi.PortForwardResponse, error) {
if req.GetPodSandboxId() == "" { if req.PodSandboxId == "" {
return nil, grpc.Errorf(codes.InvalidArgument, "missing required pod_sandbox_id") return nil, grpc.Errorf(codes.InvalidArgument, "missing required pod_sandbox_id")
} }
token, err := s.cache.Insert(req) token, err := s.cache.Insert(req)
@ -211,11 +211,10 @@ func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
s.handler.ServeHTTP(w, r) s.handler.ServeHTTP(w, r)
} }
func (s *server) buildURL(method, token string) *string { func (s *server) buildURL(method, token string) string {
loc := s.config.BaseURL.ResolveReference(&url.URL{ return s.config.BaseURL.ResolveReference(&url.URL{
Path: path.Join(method, token), Path: path.Join(method, token),
}).String() }).String()
return &loc
} }
func (s *server) serveExec(req *restful.Request, resp *restful.Response) { func (s *server) serveExec(req *restful.Request, resp *restful.Response) {
@ -232,10 +231,10 @@ func (s *server) serveExec(req *restful.Request, resp *restful.Response) {
} }
streamOpts := &remotecommand.Options{ streamOpts := &remotecommand.Options{
Stdin: exec.GetStdin(), Stdin: exec.Stdin,
Stdout: true, Stdout: true,
Stderr: !exec.GetTty(), Stderr: !exec.Tty,
TTY: exec.GetTty(), TTY: exec.Tty,
} }
remotecommand.ServeExec( remotecommand.ServeExec(
@ -244,8 +243,8 @@ func (s *server) serveExec(req *restful.Request, resp *restful.Response) {
s.runtime, s.runtime,
"", // unused: podName "", // unused: podName
"", // unusued: podUID "", // unusued: podUID
exec.GetContainerId(), exec.ContainerId,
exec.GetCmd(), exec.Cmd,
streamOpts, streamOpts,
s.config.StreamIdleTimeout, s.config.StreamIdleTimeout,
s.config.StreamCreationTimeout, s.config.StreamCreationTimeout,
@ -266,10 +265,10 @@ func (s *server) serveAttach(req *restful.Request, resp *restful.Response) {
} }
streamOpts := &remotecommand.Options{ streamOpts := &remotecommand.Options{
Stdin: attach.GetStdin(), Stdin: attach.Stdin,
Stdout: true, Stdout: true,
Stderr: !attach.GetTty(), Stderr: !attach.Tty,
TTY: attach.GetTty(), TTY: attach.Tty,
} }
remotecommand.ServeAttach( remotecommand.ServeAttach(
resp.ResponseWriter, resp.ResponseWriter,
@ -277,7 +276,7 @@ func (s *server) serveAttach(req *restful.Request, resp *restful.Response) {
s.runtime, s.runtime,
"", // unused: podName "", // unused: podName
"", // unusued: podUID "", // unusued: podUID
attach.GetContainerId(), attach.ContainerId,
streamOpts, streamOpts,
s.config.StreamIdleTimeout, s.config.StreamIdleTimeout,
s.config.StreamCreationTimeout, s.config.StreamCreationTimeout,
@ -301,7 +300,7 @@ func (s *server) servePortForward(req *restful.Request, resp *restful.Response)
resp.ResponseWriter, resp.ResponseWriter,
req.Request, req.Request,
s.runtime, s.runtime,
pf.GetPodSandboxId(), pf.PodSandboxId,
"", // unused: podUID "", // unused: podUID
s.config.StreamIdleTimeout, s.config.StreamIdleTimeout,
s.config.StreamCreationTimeout) s.config.StreamCreationTimeout)

View File

@ -82,25 +82,25 @@ func TestGetExec(t *testing.T) {
assertRequestToken := func(test testcase, cache *requestCache, token string) { assertRequestToken := func(test testcase, cache *requestCache, token string) {
req, ok := cache.Consume(token) req, ok := cache.Consume(token)
require.True(t, ok, "token %s not found! testcase=%+v", token, test) require.True(t, ok, "token %s not found! testcase=%+v", token, test)
assert.Equal(t, testContainerID, req.(*runtimeapi.ExecRequest).GetContainerId(), "testcase=%+v", test) assert.Equal(t, testContainerID, req.(*runtimeapi.ExecRequest).ContainerId, "testcase=%+v", test)
assert.Equal(t, test.cmd, req.(*runtimeapi.ExecRequest).GetCmd(), "testcase=%+v", test) assert.Equal(t, test.cmd, req.(*runtimeapi.ExecRequest).Cmd, "testcase=%+v", test)
assert.Equal(t, test.tty, req.(*runtimeapi.ExecRequest).GetTty(), "testcase=%+v", test) assert.Equal(t, test.tty, req.(*runtimeapi.ExecRequest).Tty, "testcase=%+v", test)
assert.Equal(t, test.stdin, req.(*runtimeapi.ExecRequest).GetStdin(), "testcase=%+v", test) assert.Equal(t, test.stdin, req.(*runtimeapi.ExecRequest).Stdin, "testcase=%+v", test)
} }
containerID := testContainerID containerID := testContainerID
for _, test := range testcases { for _, test := range testcases {
request := &runtimeapi.ExecRequest{ request := &runtimeapi.ExecRequest{
ContainerId: &containerID, ContainerId: containerID,
Cmd: test.cmd, Cmd: test.cmd,
Tty: &test.tty, Tty: test.tty,
Stdin: &test.stdin, Stdin: test.stdin,
} }
{ // Non-TLS { // Non-TLS
resp, err := serv.GetExec(request) resp, err := serv.GetExec(request)
assert.NoError(t, err, "testcase=%+v", test) assert.NoError(t, err, "testcase=%+v", test)
expectedURL := "http://" + testAddr + "/exec/" expectedURL := "http://" + testAddr + "/exec/"
assert.Contains(t, resp.GetUrl(), expectedURL, "testcase=%+v", test) assert.Contains(t, resp.Url, expectedURL, "testcase=%+v", test)
token := strings.TrimPrefix(resp.GetUrl(), expectedURL) token := strings.TrimPrefix(resp.Url, expectedURL)
assertRequestToken(test, serv.(*server).cache, token) assertRequestToken(test, serv.(*server).cache, token)
} }
@ -108,8 +108,8 @@ func TestGetExec(t *testing.T) {
resp, err := tlsServer.GetExec(request) resp, err := tlsServer.GetExec(request)
assert.NoError(t, err, "testcase=%+v", test) assert.NoError(t, err, "testcase=%+v", test)
expectedURL := "https://" + testAddr + "/exec/" expectedURL := "https://" + testAddr + "/exec/"
assert.Contains(t, resp.GetUrl(), expectedURL, "testcase=%+v", test) assert.Contains(t, resp.Url, expectedURL, "testcase=%+v", test)
token := strings.TrimPrefix(resp.GetUrl(), expectedURL) token := strings.TrimPrefix(resp.Url, expectedURL)
assertRequestToken(test, tlsServer.(*server).cache, token) assertRequestToken(test, tlsServer.(*server).cache, token)
} }
@ -117,8 +117,8 @@ func TestGetExec(t *testing.T) {
resp, err := prefixServer.GetExec(request) resp, err := prefixServer.GetExec(request)
assert.NoError(t, err, "testcase=%+v", test) assert.NoError(t, err, "testcase=%+v", test)
expectedURL := "http://" + testAddr + "/" + pathPrefix + "/exec/" expectedURL := "http://" + testAddr + "/" + pathPrefix + "/exec/"
assert.Contains(t, resp.GetUrl(), expectedURL, "testcase=%+v", test) assert.Contains(t, resp.Url, expectedURL, "testcase=%+v", test)
token := strings.TrimPrefix(resp.GetUrl(), expectedURL) token := strings.TrimPrefix(resp.Url, expectedURL)
assertRequestToken(test, prefixServer.(*server).cache, token) assertRequestToken(test, prefixServer.(*server).cache, token)
} }
} }
@ -149,23 +149,23 @@ func TestGetAttach(t *testing.T) {
assertRequestToken := func(test testcase, cache *requestCache, token string) { assertRequestToken := func(test testcase, cache *requestCache, token string) {
req, ok := cache.Consume(token) req, ok := cache.Consume(token)
require.True(t, ok, "token %s not found! testcase=%+v", token, test) require.True(t, ok, "token %s not found! testcase=%+v", token, test)
assert.Equal(t, testContainerID, req.(*runtimeapi.AttachRequest).GetContainerId(), "testcase=%+v", test) assert.Equal(t, testContainerID, req.(*runtimeapi.AttachRequest).ContainerId, "testcase=%+v", test)
assert.Equal(t, test.tty, req.(*runtimeapi.AttachRequest).GetTty(), "testcase=%+v", test) assert.Equal(t, test.tty, req.(*runtimeapi.AttachRequest).Tty, "testcase=%+v", test)
assert.Equal(t, test.stdin, req.(*runtimeapi.AttachRequest).GetStdin(), "testcase=%+v", test) assert.Equal(t, test.stdin, req.(*runtimeapi.AttachRequest).Stdin, "testcase=%+v", test)
} }
containerID := testContainerID containerID := testContainerID
for _, test := range testcases { for _, test := range testcases {
request := &runtimeapi.AttachRequest{ request := &runtimeapi.AttachRequest{
ContainerId: &containerID, ContainerId: containerID,
Stdin: &test.stdin, Stdin: test.stdin,
Tty: &test.tty, Tty: test.tty,
} }
{ // Non-TLS { // Non-TLS
resp, err := serv.GetAttach(request) resp, err := serv.GetAttach(request)
assert.NoError(t, err, "testcase=%+v", test) assert.NoError(t, err, "testcase=%+v", test)
expectedURL := "http://" + testAddr + "/attach/" expectedURL := "http://" + testAddr + "/attach/"
assert.Contains(t, resp.GetUrl(), expectedURL, "testcase=%+v", test) assert.Contains(t, resp.Url, expectedURL, "testcase=%+v", test)
token := strings.TrimPrefix(resp.GetUrl(), expectedURL) token := strings.TrimPrefix(resp.Url, expectedURL)
assertRequestToken(test, serv.(*server).cache, token) assertRequestToken(test, serv.(*server).cache, token)
} }
@ -173,8 +173,8 @@ func TestGetAttach(t *testing.T) {
resp, err := tlsServer.GetAttach(request) resp, err := tlsServer.GetAttach(request)
assert.NoError(t, err, "testcase=%+v", test) assert.NoError(t, err, "testcase=%+v", test)
expectedURL := "https://" + testAddr + "/attach/" expectedURL := "https://" + testAddr + "/attach/"
assert.Contains(t, resp.GetUrl(), expectedURL, "testcase=%+v", test) assert.Contains(t, resp.Url, expectedURL, "testcase=%+v", test)
token := strings.TrimPrefix(resp.GetUrl(), expectedURL) token := strings.TrimPrefix(resp.Url, expectedURL)
assertRequestToken(test, tlsServer.(*server).cache, token) assertRequestToken(test, tlsServer.(*server).cache, token)
} }
} }
@ -183,7 +183,7 @@ func TestGetAttach(t *testing.T) {
func TestGetPortForward(t *testing.T) { func TestGetPortForward(t *testing.T) {
podSandboxID := testPodSandboxID podSandboxID := testPodSandboxID
request := &runtimeapi.PortForwardRequest{ request := &runtimeapi.PortForwardRequest{
PodSandboxId: &podSandboxID, PodSandboxId: podSandboxID,
Port: []int32{1, 2, 3, 4}, Port: []int32{1, 2, 3, 4},
} }
@ -195,11 +195,11 @@ func TestGetPortForward(t *testing.T) {
resp, err := serv.GetPortForward(request) resp, err := serv.GetPortForward(request)
assert.NoError(t, err) assert.NoError(t, err)
expectedURL := "http://" + testAddr + "/portforward/" expectedURL := "http://" + testAddr + "/portforward/"
assert.True(t, strings.HasPrefix(resp.GetUrl(), expectedURL)) assert.True(t, strings.HasPrefix(resp.Url, expectedURL))
token := strings.TrimPrefix(resp.GetUrl(), expectedURL) token := strings.TrimPrefix(resp.Url, expectedURL)
req, ok := serv.(*server).cache.Consume(token) req, ok := serv.(*server).cache.Consume(token)
require.True(t, ok, "token %s not found!", token) require.True(t, ok, "token %s not found!", token)
assert.Equal(t, testPodSandboxID, req.(*runtimeapi.PortForwardRequest).GetPodSandboxId()) assert.Equal(t, testPodSandboxID, req.(*runtimeapi.PortForwardRequest).PodSandboxId)
} }
{ // TLS { // TLS
@ -211,11 +211,11 @@ func TestGetPortForward(t *testing.T) {
resp, err := tlsServer.GetPortForward(request) resp, err := tlsServer.GetPortForward(request)
assert.NoError(t, err) assert.NoError(t, err)
expectedURL := "https://" + testAddr + "/portforward/" expectedURL := "https://" + testAddr + "/portforward/"
assert.True(t, strings.HasPrefix(resp.GetUrl(), expectedURL)) assert.True(t, strings.HasPrefix(resp.Url, expectedURL))
token := strings.TrimPrefix(resp.GetUrl(), expectedURL) token := strings.TrimPrefix(resp.Url, expectedURL)
req, ok := tlsServer.(*server).cache.Consume(token) req, ok := tlsServer.(*server).cache.Consume(token)
require.True(t, ok, "token %s not found!", token) require.True(t, ok, "token %s not found!", token)
assert.Equal(t, testPodSandboxID, req.(*runtimeapi.PortForwardRequest).GetPodSandboxId()) assert.Equal(t, testPodSandboxID, req.(*runtimeapi.PortForwardRequest).PodSandboxId)
} }
} }
@ -231,12 +231,11 @@ func TestServePortForward(t *testing.T) {
s, testServer := startTestServer(t) s, testServer := startTestServer(t)
defer testServer.Close() defer testServer.Close()
podSandboxID := testPodSandboxID
resp, err := s.GetPortForward(&runtimeapi.PortForwardRequest{ resp, err := s.GetPortForward(&runtimeapi.PortForwardRequest{
PodSandboxId: &podSandboxID, PodSandboxId: testPodSandboxID,
}) })
require.NoError(t, err) require.NoError(t, err)
reqURL, err := url.Parse(resp.GetUrl()) reqURL, err := url.Parse(resp.Url)
require.NoError(t, err) require.NoError(t, err)
exec, err := remotecommand.NewExecutor(&restclient.Config{}, "POST", reqURL) exec, err := remotecommand.NewExecutor(&restclient.Config{}, "POST", reqURL)
@ -273,20 +272,20 @@ func runRemoteCommandTest(t *testing.T, commandType string) {
switch commandType { switch commandType {
case "exec": case "exec":
resp, err := s.GetExec(&runtimeapi.ExecRequest{ resp, err := s.GetExec(&runtimeapi.ExecRequest{
ContainerId: &containerID, ContainerId: containerID,
Cmd: []string{"echo"}, Cmd: []string{"echo"},
Stdin: &stdin, Stdin: stdin,
}) })
require.NoError(t, err) require.NoError(t, err)
reqURL, err = url.Parse(resp.GetUrl()) reqURL, err = url.Parse(resp.Url)
require.NoError(t, err) require.NoError(t, err)
case "attach": case "attach":
resp, err := s.GetAttach(&runtimeapi.AttachRequest{ resp, err := s.GetAttach(&runtimeapi.AttachRequest{
ContainerId: &containerID, ContainerId: containerID,
Stdin: &stdin, Stdin: stdin,
}) })
require.NoError(t, err) require.NoError(t, err)
reqURL, err = url.Parse(resp.GetUrl()) reqURL, err = url.Parse(resp.Url)
require.NoError(t, err) require.NoError(t, err)
} }