Merge pull request #24 from ulyssessouza/add-compose

Little fixes on client side and containers.proto
This commit is contained in:
Ulysses Souza 2020-05-04 11:32:00 +02:00 committed by GitHub
commit 7802e4d1df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 732 additions and 307 deletions

View File

@ -11,6 +11,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
protobuf-compiler \ protobuf-compiler \
libprotobuf-dev libprotobuf-dev
RUN go get github.com/golang/protobuf/protoc-gen-go && \ RUN go get github.com/golang/protobuf/protoc-gen-go && \
go get golang.org/x/tools/cmd/goimports && \
go get gotest.tools/gotestsum go get gotest.tools/gotestsum
WORKDIR ${PWD} WORKDIR ${PWD}
ADD go.* ${PWD} ADD go.* ${PWD}
@ -34,9 +35,7 @@ RUN --mount=type=cache,target=/root/.cache/go-build \
make xbins make xbins
FROM scratch AS protos FROM scratch AS protos
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 .
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 FROM scratch AS bins
COPY --from=make-bins /go/src/github.com/docker/api/bin/* . COPY --from=make-bins /go/src/github.com/docker/api/bin/* .

View File

@ -38,6 +38,7 @@ xbins: xcli xexample
protos: protos:
@protoc -I. --go_out=plugins=grpc,paths=source_relative:. ${PROTOS} @protoc -I. --go_out=plugins=grpc,paths=source_relative:. ${PROTOS}
@goimports -w -local github.com/docker/api .
cli: protos cli: protos
GOOS=${GOOS} GOARCH=${GOARCH} go build -v -o bin/docker ./cli GOOS=${GOOS} GOARCH=${GOARCH} go build -v -o bin/docker ./cli

View File

@ -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. // Code generated by protoc-gen-go. DO NOT EDIT.
// versions: // versions:
// protoc-gen-go v1.21.0-devel // protoc-gen-go v1.21.0-devel
@ -8,15 +34,15 @@ package v1
import ( import (
context "context" context "context"
reflect "reflect"
sync "sync"
proto "github.com/golang/protobuf/proto" proto "github.com/golang/protobuf/proto"
empty "github.com/golang/protobuf/ptypes/empty"
grpc "google.golang.org/grpc" grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes" codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status" status "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl" protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
) )
const ( const (
@ -30,6 +56,44 @@ const (
// of the legacy proto package is being used. // of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4 const _ = proto.ProtoPackageIsVersion4
type BackendInformationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *BackendInformationRequest) Reset() {
*x = BackendInformationRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_backend_v1_backend_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BackendInformationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BackendInformationRequest) ProtoMessage() {}
func (x *BackendInformationRequest) ProtoReflect() protoreflect.Message {
mi := &file_backend_v1_backend_proto_msgTypes[0]
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 BackendInformationRequest.ProtoReflect.Descriptor instead.
func (*BackendInformationRequest) Descriptor() ([]byte, []int) {
return file_backend_v1_backend_proto_rawDescGZIP(), []int{0}
}
type BackendInformationResponse struct { type BackendInformationResponse struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -41,7 +105,7 @@ type BackendInformationResponse struct {
func (x *BackendInformationResponse) Reset() { func (x *BackendInformationResponse) Reset() {
*x = BackendInformationResponse{} *x = BackendInformationResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_backend_v1_backend_proto_msgTypes[0] mi := &file_backend_v1_backend_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -54,7 +118,7 @@ func (x *BackendInformationResponse) String() string {
func (*BackendInformationResponse) ProtoMessage() {} func (*BackendInformationResponse) ProtoMessage() {}
func (x *BackendInformationResponse) ProtoReflect() protoreflect.Message { func (x *BackendInformationResponse) ProtoReflect() protoreflect.Message {
mi := &file_backend_v1_backend_proto_msgTypes[0] mi := &file_backend_v1_backend_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -67,7 +131,7 @@ func (x *BackendInformationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use BackendInformationResponse.ProtoReflect.Descriptor instead. // Deprecated: Use BackendInformationResponse.ProtoReflect.Descriptor instead.
func (*BackendInformationResponse) Descriptor() ([]byte, []int) { func (*BackendInformationResponse) Descriptor() ([]byte, []int) {
return file_backend_v1_backend_proto_rawDescGZIP(), []int{0} return file_backend_v1_backend_proto_rawDescGZIP(), []int{1}
} }
func (x *BackendInformationResponse) GetId() string { func (x *BackendInformationResponse) GetId() string {
@ -83,15 +147,17 @@ var file_backend_v1_backend_proto_rawDesc = []byte{
0x0a, 0x18, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x63, 0x0a, 0x18, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x63,
0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x63, 0x6f, 0x6d, 0x2e,
0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65,
0x6e, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x22, 0x1b, 0x0a, 0x19, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
0x74, 0x6f, 0x22, 0x2c, 0x0a, 0x1a, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x73, 0x74, 0x22, 0x2c, 0x0a, 0x1a, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66,
0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
0x32, 0x6e, 0x0a, 0x07, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x63, 0x0a, 0x12, 0x42, 0x32, 0x8d, 0x01, 0x0a, 0x07, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x81, 0x01, 0x0a,
0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72,
0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x35, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e,
0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x6f, 0x6d, 0x2e,
0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65,
0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66,
0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
@ -112,14 +178,14 @@ func file_backend_v1_backend_proto_rawDescGZIP() []byte {
return file_backend_v1_backend_proto_rawDescData return file_backend_v1_backend_proto_rawDescData
} }
var file_backend_v1_backend_proto_msgTypes = make([]protoimpl.MessageInfo, 1) var file_backend_v1_backend_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_backend_v1_backend_proto_goTypes = []interface{}{ var file_backend_v1_backend_proto_goTypes = []interface{}{
(*BackendInformationResponse)(nil), // 0: com.docker.api.backend.v1.BackendInformationResponse (*BackendInformationRequest)(nil), // 0: com.docker.api.backend.v1.BackendInformationRequest
(*empty.Empty)(nil), // 1: google.protobuf.Empty (*BackendInformationResponse)(nil), // 1: com.docker.api.backend.v1.BackendInformationResponse
} }
var file_backend_v1_backend_proto_depIdxs = []int32{ var file_backend_v1_backend_proto_depIdxs = []int32{
1, // 0: com.docker.api.backend.v1.Backend.BackendInformation:input_type -> google.protobuf.Empty 0, // 0: com.docker.api.backend.v1.Backend.BackendInformation:input_type -> com.docker.api.backend.v1.BackendInformationRequest
0, // 1: com.docker.api.backend.v1.Backend.BackendInformation:output_type -> com.docker.api.backend.v1.BackendInformationResponse 1, // 1: com.docker.api.backend.v1.Backend.BackendInformation:output_type -> com.docker.api.backend.v1.BackendInformationResponse
1, // [1:2] is the sub-list for method output_type 1, // [1:2] is the sub-list for method output_type
0, // [0:1] is the sub-list for method input_type 0, // [0:1] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension type_name
@ -134,6 +200,18 @@ func file_backend_v1_backend_proto_init() {
} }
if !protoimpl.UnsafeEnabled { if !protoimpl.UnsafeEnabled {
file_backend_v1_backend_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { file_backend_v1_backend_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BackendInformationRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_backend_v1_backend_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BackendInformationResponse); i { switch v := v.(*BackendInformationResponse); i {
case 0: case 0:
return &v.state return &v.state
@ -152,7 +230,7 @@ func file_backend_v1_backend_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_backend_v1_backend_proto_rawDesc, RawDescriptor: file_backend_v1_backend_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 1, NumMessages: 2,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },
@ -179,7 +257,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. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type BackendClient interface { type BackendClient interface {
// BackendInformation returns implementation specific information on the backend. // BackendInformation returns implementation specific information on the backend.
BackendInformation(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*BackendInformationResponse, error) BackendInformation(ctx context.Context, in *BackendInformationRequest, opts ...grpc.CallOption) (*BackendInformationResponse, error)
} }
type backendClient struct { type backendClient struct {
@ -190,7 +268,7 @@ func NewBackendClient(cc grpc.ClientConnInterface) BackendClient {
return &backendClient{cc} return &backendClient{cc}
} }
func (c *backendClient) BackendInformation(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*BackendInformationResponse, error) { func (c *backendClient) BackendInformation(ctx context.Context, in *BackendInformationRequest, opts ...grpc.CallOption) (*BackendInformationResponse, error) {
out := new(BackendInformationResponse) out := new(BackendInformationResponse)
err := c.cc.Invoke(ctx, "/com.docker.api.backend.v1.Backend/BackendInformation", in, out, opts...) err := c.cc.Invoke(ctx, "/com.docker.api.backend.v1.Backend/BackendInformation", in, out, opts...)
if err != nil { if err != nil {
@ -202,14 +280,14 @@ func (c *backendClient) BackendInformation(ctx context.Context, in *empty.Empty,
// BackendServer is the server API for Backend service. // BackendServer is the server API for Backend service.
type BackendServer interface { type BackendServer interface {
// BackendInformation returns implementation specific information on the backend. // BackendInformation returns implementation specific information on the backend.
BackendInformation(context.Context, *empty.Empty) (*BackendInformationResponse, error) BackendInformation(context.Context, *BackendInformationRequest) (*BackendInformationResponse, error)
} }
// UnimplementedBackendServer can be embedded to have forward compatible implementations. // UnimplementedBackendServer can be embedded to have forward compatible implementations.
type UnimplementedBackendServer struct { type UnimplementedBackendServer struct {
} }
func (*UnimplementedBackendServer) BackendInformation(context.Context, *empty.Empty) (*BackendInformationResponse, error) { func (*UnimplementedBackendServer) BackendInformation(context.Context, *BackendInformationRequest) (*BackendInformationResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BackendInformation not implemented") return nil, status.Errorf(codes.Unimplemented, "method BackendInformation not implemented")
} }
@ -218,7 +296,7 @@ func RegisterBackendServer(s *grpc.Server, srv BackendServer) {
} }
func _Backend_BackendInformation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _Backend_BackendInformation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(empty.Empty) in := new(BackendInformationRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
return nil, err return nil, err
} }
@ -230,7 +308,7 @@ func _Backend_BackendInformation_Handler(srv interface{}, ctx context.Context, d
FullMethod: "/com.docker.api.backend.v1.Backend/BackendInformation", FullMethod: "/com.docker.api.backend.v1.Backend/BackendInformation",
} }
handler := func(ctx context.Context, req interface{}) (interface{}, error) { handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(BackendServer).BackendInformation(ctx, req.(*empty.Empty)) return srv.(BackendServer).BackendInformation(ctx, req.(*BackendInformationRequest))
} }
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }

View File

@ -1,14 +1,42 @@
/*
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.
*/
syntax = "proto3"; syntax = "proto3";
package com.docker.api.backend.v1; package com.docker.api.backend.v1;
import "google/protobuf/empty.proto";
option go_package = "github.com/docker/api/backend/v1;v1"; option go_package = "github.com/docker/api/backend/v1;v1";
service Backend { service Backend {
// BackendInformation returns implementation specific information on the backend. // BackendInformation returns implementation specific information on the backend.
rpc BackendInformation(google.protobuf.Empty) returns (BackendInformationResponse); rpc BackendInformation(BackendInformationRequest) returns (BackendInformationResponse);
}
message BackendInformationRequest {
} }
message BackendInformationResponse { message BackendInformationResponse {

View File

@ -33,8 +33,9 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/docker/api/context/store"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/docker/api/context/store"
) )
type CliContext struct { type CliContext struct {

View File

@ -32,10 +32,11 @@ import (
"encoding/json" "encoding/json"
"os" "os"
"github.com/docker/api/client"
"github.com/golang/protobuf/ptypes/empty"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/spf13/cobra" "github.com/spf13/cobra"
v1 "github.com/docker/api/backend/v1"
"github.com/docker/api/client"
) )
var ExampleCommand = cobra.Command{ var ExampleCommand = cobra.Command{
@ -49,7 +50,7 @@ var ExampleCommand = cobra.Command{
return errors.Wrap(err, "cannot connect to backend") return errors.Wrap(err, "cannot connect to backend")
} }
info, err := c.BackendInformation(ctx, &empty.Empty{}) info, err := c.BackendInformation(ctx, &v1.BackendInformationRequest{})
if err != nil { if err != nil {
return errors.Wrap(err, "fetch backend information") return errors.Wrap(err, "fetch backend information")
} }

View File

@ -5,9 +5,10 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/docker/api/client"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/docker/api/client"
) )
var PsCommand = cobra.Command{ var PsCommand = cobra.Command{

View File

@ -4,13 +4,14 @@ import (
"context" "context"
"net" "net"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
cliv1 "github.com/docker/api/cli/v1" cliv1 "github.com/docker/api/cli/v1"
containersv1 "github.com/docker/api/containers/v1" containersv1 "github.com/docker/api/containers/v1"
"github.com/docker/api/context/store" "github.com/docker/api/context/store"
"github.com/docker/api/server" "github.com/docker/api/server"
"github.com/docker/api/server/proxy" "github.com/docker/api/server/proxy"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )

View File

@ -40,12 +40,13 @@ import (
_ "github.com/docker/api/azure" _ "github.com/docker/api/azure"
_ "github.com/docker/api/example" _ "github.com/docker/api/example"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/docker/api/cli/cmd" "github.com/docker/api/cli/cmd"
apicontext "github.com/docker/api/context" apicontext "github.com/docker/api/context"
"github.com/docker/api/context/store" "github.com/docker/api/context/store"
"github.com/docker/api/util" "github.com/docker/api/util"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
) )
type mainOpts struct { type mainOpts struct {

View File

@ -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. // Code generated by protoc-gen-go. DO NOT EDIT.
// versions: // versions:
// protoc-gen-go v1.21.0-devel // protoc-gen-go v1.21.0-devel
@ -8,14 +34,15 @@ package v1
import ( import (
context "context" context "context"
reflect "reflect"
sync "sync"
proto "github.com/golang/protobuf/proto" proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc" grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes" codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status" status "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl" protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
) )
const ( const (

View File

@ -1,8 +1,34 @@
/*
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.
*/
syntax = "proto3"; syntax = "proto3";
package com.docker.api.cli.v1; package com.docker.api.cli.v1;
option go_package = "github.com/docker/api/cli/v1;v1"; option go_package = "github.com/docker/api/cli/v1;v1";
service Cli { service Cli {

28
cli/v1/doc.go Normal file
View File

@ -0,0 +1,28 @@
/*
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.
*/
package v1

View File

@ -32,8 +32,11 @@ import (
"errors" "errors"
"github.com/docker/api/backend" "github.com/docker/api/backend"
v1 "github.com/docker/api/backend/v1" backendv1 "github.com/docker/api/backend/v1"
cliv1 "github.com/docker/api/cli/v1"
composev1 "github.com/docker/api/compose/v1"
"github.com/docker/api/containers" "github.com/docker/api/containers"
containersv1 "github.com/docker/api/containers/v1"
apicontext "github.com/docker/api/context" apicontext "github.com/docker/api/context"
"github.com/docker/api/context/store" "github.com/docker/api/context/store"
) )
@ -54,17 +57,23 @@ func New(ctx context.Context) (*Client, error) {
return nil, err return nil, err
} }
if ba, ok := b.(containers.ContainerService); ok { ba, ok := b.(containers.ContainerService)
if !ok {
return nil, errors.New("backend not found")
}
return &Client{ return &Client{
backendType: contextType, backendType: contextType,
cc: ba, cc: ba,
}, nil }, nil
}
return nil, errors.New("backend not found")
} }
type Client struct { type Client struct {
v1.BackendClient backendv1.BackendClient
cliv1.CliClient
containersv1.ContainersClient
composev1.ComposeClient
backendType string backendType string
cc containers.ContainerService cc containers.ContainerService
} }

View File

@ -34,14 +34,15 @@ package v1
import ( import (
context "context" context "context"
reflect "reflect"
sync "sync"
proto "github.com/golang/protobuf/proto" proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc" grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes" codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status" status "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl" protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
) )
const ( const (

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,43 @@
/*
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.
*/
syntax = "proto3"; syntax = "proto3";
package com.docker.container.v1; package com.docker.api.containers.v1;
import "google/protobuf/empty.proto"; option go_package = "github.com/docker/api/containers/v1;v1";
option go_package = "github.com/docker/d2/api/containers/v1;v1";
service Containers { service Containers {
rpc List(ListRequest) returns (ListResponse); rpc List(ListRequest) returns (ListResponse);
rpc Create(CreateRequest) returns (CreateResponse); rpc Create(CreateRequest) returns (CreateResponse);
rpc Start(StartRequest) returns (StartResponse); rpc Start(StartRequest) returns (StartResponse);
rpc Stop(StopRequest) returns (google.protobuf.Empty); rpc Stop(StopRequest) returns (StopResponse);
rpc Kill(KillRequest) returns (google.protobuf.Empty); rpc Kill(KillRequest) returns (KillResponse);
rpc Delete(DeleteRequest) returns (google.protobuf.Empty); rpc Delete(DeleteRequest) returns (DeleteResponse);
rpc Update(UpdateRequest) returns (UpdateResponse); rpc Update(UpdateRequest) returns (UpdateResponse);
rpc Exec(ExecRequest) returns (ExecResponse); rpc Exec(ExecRequest) returns (ExecResponse);
} }
@ -71,6 +96,9 @@ message DeleteRequest {
bool force = 2; bool force = 2;
} }
message DeleteResponse {
}
message StartRequest { message StartRequest {
string id = 1; string id = 1;
string stream_id = 2; string stream_id = 2;
@ -85,6 +113,10 @@ message StopRequest {
int64 signal = 2; int64 signal = 2;
} }
message StopResponse {
}
message ExecRequest { message ExecRequest {
string id = 1; string id = 1;
string stream_id = 2; string stream_id = 2;
@ -103,6 +135,9 @@ message KillRequest {
int64 signal = 2; int64 signal = 2;
} }
message KillResponse {
}
message ListRequest { message ListRequest {
repeated string filters = 1; repeated string filters = 1;
} }

View File

@ -5,7 +5,6 @@ import (
"github.com/docker/api/client" "github.com/docker/api/client"
v1 "github.com/docker/api/containers/v1" v1 "github.com/docker/api/containers/v1"
"github.com/golang/protobuf/ptypes/empty"
) )
type clientKey struct{} type clientKey struct{}
@ -54,15 +53,15 @@ func (p *proxyContainerApi) Start(_ context.Context, _ *v1.StartRequest) (*v1.St
panic("not implemented") // TODO: Implement panic("not implemented") // TODO: Implement
} }
func (p *proxyContainerApi) Stop(_ context.Context, _ *v1.StopRequest) (*empty.Empty, error) { func (p *proxyContainerApi) Stop(_ context.Context, _ *v1.StopRequest) (*v1.StopResponse, error) {
panic("not implemented") // TODO: Implement panic("not implemented") // TODO: Implement
} }
func (p *proxyContainerApi) Kill(_ context.Context, _ *v1.KillRequest) (*empty.Empty, error) { func (p *proxyContainerApi) Kill(_ context.Context, _ *v1.KillRequest) (*v1.KillResponse, error) {
panic("not implemented") // TODO: Implement panic("not implemented") // TODO: Implement
} }
func (p *proxyContainerApi) Delete(_ context.Context, _ *v1.DeleteRequest) (*empty.Empty, error) { func (p *proxyContainerApi) Delete(_ context.Context, _ *v1.DeleteRequest) (*v1.DeleteResponse, error) {
panic("not implemented") // TODO: Implement panic("not implemented") // TODO: Implement
} }

View File

@ -31,15 +31,16 @@ import (
"context" "context"
"errors" "errors"
"github.com/docker/api/client"
apicontext "github.com/docker/api/context"
"github.com/docker/api/context/store"
"github.com/docker/api/server/proxy"
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/health" "google.golang.org/grpc/health"
"google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/health/grpc_health_v1"
"google.golang.org/grpc/metadata" "google.golang.org/grpc/metadata"
"github.com/docker/api/client"
apicontext "github.com/docker/api/context"
"github.com/docker/api/context/store"
"github.com/docker/api/server/proxy"
) )
// New returns a new GRPC server. // New returns a new GRPC server.