From 6ecb5550f79873a8a69697590026d2c6cc12980d Mon Sep 17 00:00:00 2001 From: Djordje Lukic Date: Thu, 30 Apr 2020 12:42:11 +0200 Subject: [PATCH] Use a request for the context list rpc in cli.proto --- Dockerfile | 4 +- Makefile | 2 +- cli/cmd/serve.go | 3 +- cli/v1/cli.pb.go | 123 +++++++++++++++++++++++++++------------ cli/v1/cli.proto | 7 ++- compose/v1/compose.pb.go | 26 +++++++++ 6 files changed, 122 insertions(+), 43 deletions(-) diff --git a/Dockerfile b/Dockerfile index bea06624c..e8726201a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,7 +34,9 @@ RUN --mount=type=cache,target=/root/.cache/go-build \ make xbins FROM scratch AS protos -COPY --from=make-protos /go/src/github.com/docker/api/backend/v1/*.pb.go . +COPY --from=make-protos /go/src/github.com/docker/api/backend/v1/*.pb.go ./backend/v1/ +COPY --from=make-protos /go/src/github.com/docker/api/compose/v1/*.pb.go ./compose/v1/ +COPY --from=make-protos /go/src/github.com/docker/api/cli/v1/*.pb.go ./cli/v1/ FROM scratch AS bins COPY --from=make-bins /go/src/github.com/docker/api/bin/* . diff --git a/Makefile b/Makefile index 969ad76b3..f662ce130 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ xcli: cli dprotos: docker build . \ - --output type=local,dest=./backend/v1 \ + --output type=local,dest=. \ --target protos dbins: dprotos diff --git a/cli/cmd/serve.go b/cli/cmd/serve.go index ba28b675e..544aff3f2 100644 --- a/cli/cmd/serve.go +++ b/cli/cmd/serve.go @@ -9,7 +9,6 @@ import ( "github.com/docker/api/context/store" "github.com/docker/api/server" "github.com/docker/api/server/proxy" - "github.com/golang/protobuf/ptypes/empty" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -67,7 +66,7 @@ type cliServer struct { ctx context.Context } -func (cs *cliServer) Contexts(context.Context, *empty.Empty) (*cliv1.ContextsResponse, error) { +func (cs *cliServer) Contexts(ctx context.Context, request *cliv1.ContextsRequest) (*cliv1.ContextsResponse, error) { s, err := store.New() if err != nil { logrus.Error(err) diff --git a/cli/v1/cli.pb.go b/cli/v1/cli.pb.go index 879906891..7990f2982 100644 --- a/cli/v1/cli.pb.go +++ b/cli/v1/cli.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.21.0-devel -// protoc v3.11.4 +// protoc v3.6.1 // source: cli/v1/cli.proto package v1 @@ -9,7 +9,6 @@ package v1 import ( context "context" proto "github.com/golang/protobuf/proto" - empty "github.com/golang/protobuf/ptypes/empty" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -85,6 +84,44 @@ func (x *Context) GetContextType() string { return "" } +type ContextsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ContextsRequest) Reset() { + *x = ContextsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cli_v1_cli_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContextsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContextsRequest) ProtoMessage() {} + +func (x *ContextsRequest) ProtoReflect() protoreflect.Message { + mi := &file_cli_v1_cli_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContextsRequest.ProtoReflect.Descriptor instead. +func (*ContextsRequest) Descriptor() ([]byte, []int) { + return file_cli_v1_cli_proto_rawDescGZIP(), []int{1} +} + type ContextsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -96,7 +133,7 @@ type ContextsResponse struct { func (x *ContextsResponse) Reset() { *x = ContextsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cli_v1_cli_proto_msgTypes[1] + mi := &file_cli_v1_cli_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -109,7 +146,7 @@ func (x *ContextsResponse) String() string { func (*ContextsResponse) ProtoMessage() {} func (x *ContextsResponse) ProtoReflect() protoreflect.Message { - mi := &file_cli_v1_cli_proto_msgTypes[1] + mi := &file_cli_v1_cli_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -122,7 +159,7 @@ func (x *ContextsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ContextsResponse.ProtoReflect.Descriptor instead. func (*ContextsResponse) Descriptor() ([]byte, []int) { - return file_cli_v1_cli_proto_rawDescGZIP(), []int{1} + return file_cli_v1_cli_proto_rawDescGZIP(), []int{2} } func (x *ContextsResponse) GetContexts() []*Context { @@ -137,26 +174,26 @@ var File_cli_v1_cli_proto protoreflect.FileDescriptor var file_cli_v1_cli_proto_rawDesc = []byte{ 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3f, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4e, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x32, 0x52, 0x0a, 0x03, 0x43, 0x6c, 0x69, 0x12, 0x4b, - 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x27, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x21, 0x5a, 0x1f, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x69, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x22, 0x3f, 0x0a, 0x07, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4e, 0x0a, + 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x32, 0x62, 0x0a, + 0x03, 0x43, 0x6c, 0x69, 0x12, 0x5b, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, + 0x12, 0x26, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, + 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x42, 0x21, 0x5a, 0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x76, + 0x31, 0x3b, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -171,16 +208,16 @@ func file_cli_v1_cli_proto_rawDescGZIP() []byte { return file_cli_v1_cli_proto_rawDescData } -var file_cli_v1_cli_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_cli_v1_cli_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_cli_v1_cli_proto_goTypes = []interface{}{ (*Context)(nil), // 0: com.docker.api.cli.v1.Context - (*ContextsResponse)(nil), // 1: com.docker.api.cli.v1.ContextsResponse - (*empty.Empty)(nil), // 2: google.protobuf.Empty + (*ContextsRequest)(nil), // 1: com.docker.api.cli.v1.ContextsRequest + (*ContextsResponse)(nil), // 2: com.docker.api.cli.v1.ContextsResponse } var file_cli_v1_cli_proto_depIdxs = []int32{ 0, // 0: com.docker.api.cli.v1.ContextsResponse.contexts:type_name -> com.docker.api.cli.v1.Context - 2, // 1: com.docker.api.cli.v1.Cli.Contexts:input_type -> google.protobuf.Empty - 1, // 2: com.docker.api.cli.v1.Cli.Contexts:output_type -> com.docker.api.cli.v1.ContextsResponse + 1, // 1: com.docker.api.cli.v1.Cli.Contexts:input_type -> com.docker.api.cli.v1.ContextsRequest + 2, // 2: com.docker.api.cli.v1.Cli.Contexts:output_type -> com.docker.api.cli.v1.ContextsResponse 2, // [2:3] is the sub-list for method output_type 1, // [1:2] is the sub-list for method input_type 1, // [1:1] is the sub-list for extension type_name @@ -207,6 +244,18 @@ func file_cli_v1_cli_proto_init() { } } file_cli_v1_cli_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cli_v1_cli_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ContextsResponse); i { case 0: return &v.state @@ -225,7 +274,7 @@ func file_cli_v1_cli_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cli_v1_cli_proto_rawDesc, NumEnums: 0, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 1, }, @@ -252,7 +301,7 @@ const _ = grpc.SupportPackageIsVersion6 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type CliClient interface { // Returns the list of existing contexts - Contexts(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*ContextsResponse, error) + Contexts(ctx context.Context, in *ContextsRequest, opts ...grpc.CallOption) (*ContextsResponse, error) } type cliClient struct { @@ -263,7 +312,7 @@ func NewCliClient(cc grpc.ClientConnInterface) CliClient { return &cliClient{cc} } -func (c *cliClient) Contexts(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*ContextsResponse, error) { +func (c *cliClient) Contexts(ctx context.Context, in *ContextsRequest, opts ...grpc.CallOption) (*ContextsResponse, error) { out := new(ContextsResponse) err := c.cc.Invoke(ctx, "/com.docker.api.cli.v1.Cli/Contexts", in, out, opts...) if err != nil { @@ -275,14 +324,14 @@ func (c *cliClient) Contexts(ctx context.Context, in *empty.Empty, opts ...grpc. // CliServer is the server API for Cli service. type CliServer interface { // Returns the list of existing contexts - Contexts(context.Context, *empty.Empty) (*ContextsResponse, error) + Contexts(context.Context, *ContextsRequest) (*ContextsResponse, error) } // UnimplementedCliServer can be embedded to have forward compatible implementations. type UnimplementedCliServer struct { } -func (*UnimplementedCliServer) Contexts(context.Context, *empty.Empty) (*ContextsResponse, error) { +func (*UnimplementedCliServer) Contexts(context.Context, *ContextsRequest) (*ContextsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Contexts not implemented") } @@ -291,7 +340,7 @@ func RegisterCliServer(s *grpc.Server, srv CliServer) { } func _Cli_Contexts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(empty.Empty) + in := new(ContextsRequest) if err := dec(in); err != nil { return nil, err } @@ -303,7 +352,7 @@ func _Cli_Contexts_Handler(srv interface{}, ctx context.Context, dec func(interf FullMethod: "/com.docker.api.cli.v1.Cli/Contexts", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CliServer).Contexts(ctx, req.(*empty.Empty)) + return srv.(CliServer).Contexts(ctx, req.(*ContextsRequest)) } return interceptor(ctx, in, info, handler) } diff --git a/cli/v1/cli.proto b/cli/v1/cli.proto index c97f0a295..ba16bdff1 100644 --- a/cli/v1/cli.proto +++ b/cli/v1/cli.proto @@ -2,13 +2,12 @@ syntax = "proto3"; package com.docker.api.cli.v1; -import "google/protobuf/empty.proto"; option go_package = "github.com/docker/api/cli/v1;v1"; service Cli { // Returns the list of existing contexts - rpc Contexts(google.protobuf.Empty) returns (ContextsResponse); + rpc Contexts(ContextsRequest) returns (ContextsResponse); } message Context { @@ -16,6 +15,10 @@ message Context { string contextType = 2; } +message ContextsRequest { + +} + message ContextsResponse { repeated Context contexts = 1; } diff --git a/compose/v1/compose.pb.go b/compose/v1/compose.pb.go index ad484b3a0..afc98e3cf 100644 --- a/compose/v1/compose.pb.go +++ b/compose/v1/compose.pb.go @@ -1,3 +1,29 @@ +// +//Copyright (c) 2020 Docker Inc. +// +//Permission is hereby granted, free of charge, to any person +//obtaining a copy of this software and associated documentation +//files (the "Software"), to deal in the Software without +//restriction, including without limitation the rights to use, copy, +//modify, merge, publish, distribute, sublicense, and/or sell copies +//of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, +//INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +//HOLDERS BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, +//WHETHER IN AN ACTION OF CONTRACT, +//TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH +//THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.21.0-devel