Add volume as a new served API, use `one of` in proto for context specific parameters, proxy volume creation

Signed-off-by: Guillaume Tardif <guillaume.tardif@docker.com>
This commit is contained in:
Guillaume Tardif 2020-09-24 14:53:28 +02:00
parent b87f827120
commit b9d6c2e701
6 changed files with 245 additions and 120 deletions

View File

@ -26,6 +26,7 @@ import (
containersv1 "github.com/docker/compose-cli/protos/containers/v1" containersv1 "github.com/docker/compose-cli/protos/containers/v1"
contextsv1 "github.com/docker/compose-cli/protos/contexts/v1" contextsv1 "github.com/docker/compose-cli/protos/contexts/v1"
streamsv1 "github.com/docker/compose-cli/protos/streams/v1" streamsv1 "github.com/docker/compose-cli/protos/streams/v1"
volumesv1 "github.com/docker/compose-cli/protos/volumes/v1"
"github.com/docker/compose-cli/server" "github.com/docker/compose-cli/server"
"github.com/docker/compose-cli/server/proxy" "github.com/docker/compose-cli/server/proxy"
) )
@ -64,8 +65,9 @@ func runServe(ctx context.Context, opts serveOpts) error {
p := proxy.New(ctx) p := proxy.New(ctx)
containersv1.RegisterContainersServer(s, p) containersv1.RegisterContainersServer(s, p)
streamsv1.RegisterStreamingServer(s, p)
contextsv1.RegisterContextsServer(s, p.ContextsProxy()) contextsv1.RegisterContextsServer(s, p.ContextsProxy())
streamsv1.RegisterStreamingServer(s, p)
volumesv1.RegisterVolumesServer(s, p)
go func() { go func() {
<-ctx.Done() <-ctx.Done()

View File

@ -1,5 +1,5 @@
// //
// Copyright 2020 Docker, Inc. // Copyright 2020 Docker Compose CLI authors
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -24,7 +24,7 @@ package v1
import ( import (
context "context" context "context"
proto "github.com/golang/protobuf/proto" proto "github.com/golang/protobuf/proto"
any "github.com/golang/protobuf/ptypes/any" _ "github.com/golang/protobuf/ptypes/any"
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"
@ -100,18 +100,68 @@ func (x *Volume) GetDescription() string {
return "" return ""
} }
type AciVolumeCreateOptions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
StorageAccount string `protobuf:"bytes,1,opt,name=storage_account,json=storageAccount,proto3" json:"storage_account,omitempty"`
}
func (x *AciVolumeCreateOptions) Reset() {
*x = AciVolumeCreateOptions{}
if protoimpl.UnsafeEnabled {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AciVolumeCreateOptions) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AciVolumeCreateOptions) ProtoMessage() {}
func (x *AciVolumeCreateOptions) ProtoReflect() protoreflect.Message {
mi := &file_protos_volumes_v1_volumes_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 AciVolumeCreateOptions.ProtoReflect.Descriptor instead.
func (*AciVolumeCreateOptions) Descriptor() ([]byte, []int) {
return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{1}
}
func (x *AciVolumeCreateOptions) GetStorageAccount() string {
if x != nil {
return x.StorageAccount
}
return ""
}
type VolumesCreateRequest struct { type VolumesCreateRequest struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Options []*any.Any `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Types that are assignable to Options:
// *VolumesCreateRequest_AciOption
Options isVolumesCreateRequest_Options `protobuf_oneof:"options"`
} }
func (x *VolumesCreateRequest) Reset() { func (x *VolumesCreateRequest) Reset() {
*x = VolumesCreateRequest{} *x = VolumesCreateRequest{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[1] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -124,7 +174,7 @@ func (x *VolumesCreateRequest) String() string {
func (*VolumesCreateRequest) ProtoMessage() {} func (*VolumesCreateRequest) ProtoMessage() {}
func (x *VolumesCreateRequest) ProtoReflect() protoreflect.Message { func (x *VolumesCreateRequest) ProtoReflect() protoreflect.Message {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[1] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[2]
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 {
@ -137,16 +187,40 @@ func (x *VolumesCreateRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use VolumesCreateRequest.ProtoReflect.Descriptor instead. // Deprecated: Use VolumesCreateRequest.ProtoReflect.Descriptor instead.
func (*VolumesCreateRequest) Descriptor() ([]byte, []int) { func (*VolumesCreateRequest) Descriptor() ([]byte, []int) {
return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{1} return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{2}
} }
func (x *VolumesCreateRequest) GetOptions() []*any.Any { func (x *VolumesCreateRequest) GetName() string {
if x != nil { if x != nil {
return x.Options return x.Name
}
return ""
}
func (m *VolumesCreateRequest) GetOptions() isVolumesCreateRequest_Options {
if m != nil {
return m.Options
} }
return nil return nil
} }
func (x *VolumesCreateRequest) GetAciOption() *AciVolumeCreateOptions {
if x, ok := x.GetOptions().(*VolumesCreateRequest_AciOption); ok {
return x.AciOption
}
return nil
}
type isVolumesCreateRequest_Options interface {
isVolumesCreateRequest_Options()
}
type VolumesCreateRequest_AciOption struct {
AciOption *AciVolumeCreateOptions `protobuf:"bytes,2,opt,name=aci_option,json=aciOption,proto3,oneof"`
}
func (*VolumesCreateRequest_AciOption) isVolumesCreateRequest_Options() {}
type VolumesCreateResponse struct { type VolumesCreateResponse struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -158,7 +232,7 @@ type VolumesCreateResponse struct {
func (x *VolumesCreateResponse) Reset() { func (x *VolumesCreateResponse) Reset() {
*x = VolumesCreateResponse{} *x = VolumesCreateResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[2] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -171,7 +245,7 @@ func (x *VolumesCreateResponse) String() string {
func (*VolumesCreateResponse) ProtoMessage() {} func (*VolumesCreateResponse) ProtoMessage() {}
func (x *VolumesCreateResponse) ProtoReflect() protoreflect.Message { func (x *VolumesCreateResponse) ProtoReflect() protoreflect.Message {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[2] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[3]
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 {
@ -184,7 +258,7 @@ func (x *VolumesCreateResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use VolumesCreateResponse.ProtoReflect.Descriptor instead. // Deprecated: Use VolumesCreateResponse.ProtoReflect.Descriptor instead.
func (*VolumesCreateResponse) Descriptor() ([]byte, []int) { func (*VolumesCreateResponse) Descriptor() ([]byte, []int) {
return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{2} return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{3}
} }
func (x *VolumesCreateResponse) GetVolume() *Volume { func (x *VolumesCreateResponse) GetVolume() *Volume {
@ -203,7 +277,7 @@ type VolumesListRequest struct {
func (x *VolumesListRequest) Reset() { func (x *VolumesListRequest) Reset() {
*x = VolumesListRequest{} *x = VolumesListRequest{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[3] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -216,7 +290,7 @@ func (x *VolumesListRequest) String() string {
func (*VolumesListRequest) ProtoMessage() {} func (*VolumesListRequest) ProtoMessage() {}
func (x *VolumesListRequest) ProtoReflect() protoreflect.Message { func (x *VolumesListRequest) ProtoReflect() protoreflect.Message {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[3] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[4]
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 {
@ -229,7 +303,7 @@ func (x *VolumesListRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use VolumesListRequest.ProtoReflect.Descriptor instead. // Deprecated: Use VolumesListRequest.ProtoReflect.Descriptor instead.
func (*VolumesListRequest) Descriptor() ([]byte, []int) { func (*VolumesListRequest) Descriptor() ([]byte, []int) {
return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{3} return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{4}
} }
type VolumesListResponse struct { type VolumesListResponse struct {
@ -243,7 +317,7 @@ type VolumesListResponse struct {
func (x *VolumesListResponse) Reset() { func (x *VolumesListResponse) Reset() {
*x = VolumesListResponse{} *x = VolumesListResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[4] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -256,7 +330,7 @@ func (x *VolumesListResponse) String() string {
func (*VolumesListResponse) ProtoMessage() {} func (*VolumesListResponse) ProtoMessage() {}
func (x *VolumesListResponse) ProtoReflect() protoreflect.Message { func (x *VolumesListResponse) ProtoReflect() protoreflect.Message {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[4] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[5]
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 {
@ -269,7 +343,7 @@ func (x *VolumesListResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use VolumesListResponse.ProtoReflect.Descriptor instead. // Deprecated: Use VolumesListResponse.ProtoReflect.Descriptor instead.
func (*VolumesListResponse) Descriptor() ([]byte, []int) { func (*VolumesListResponse) Descriptor() ([]byte, []int) {
return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{4} return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{5}
} }
func (x *VolumesListResponse) GetVolumes() []*Volume { func (x *VolumesListResponse) GetVolumes() []*Volume {
@ -284,14 +358,13 @@ type VolumesDeleteRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Options []*any.Any `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"`
} }
func (x *VolumesDeleteRequest) Reset() { func (x *VolumesDeleteRequest) Reset() {
*x = VolumesDeleteRequest{} *x = VolumesDeleteRequest{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[5] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -304,7 +377,7 @@ func (x *VolumesDeleteRequest) String() string {
func (*VolumesDeleteRequest) ProtoMessage() {} func (*VolumesDeleteRequest) ProtoMessage() {}
func (x *VolumesDeleteRequest) ProtoReflect() protoreflect.Message { func (x *VolumesDeleteRequest) ProtoReflect() protoreflect.Message {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[5] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[6]
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 {
@ -317,7 +390,7 @@ func (x *VolumesDeleteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use VolumesDeleteRequest.ProtoReflect.Descriptor instead. // Deprecated: Use VolumesDeleteRequest.ProtoReflect.Descriptor instead.
func (*VolumesDeleteRequest) Descriptor() ([]byte, []int) { func (*VolumesDeleteRequest) Descriptor() ([]byte, []int) {
return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{5} return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{6}
} }
func (x *VolumesDeleteRequest) GetId() string { func (x *VolumesDeleteRequest) GetId() string {
@ -327,13 +400,6 @@ func (x *VolumesDeleteRequest) GetId() string {
return "" return ""
} }
func (x *VolumesDeleteRequest) GetOptions() []*any.Any {
if x != nil {
return x.Options
}
return nil
}
type VolumesDeleteResponse struct { type VolumesDeleteResponse struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -343,7 +409,7 @@ type VolumesDeleteResponse struct {
func (x *VolumesDeleteResponse) Reset() { func (x *VolumesDeleteResponse) Reset() {
*x = VolumesDeleteResponse{} *x = VolumesDeleteResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[6] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -356,7 +422,7 @@ func (x *VolumesDeleteResponse) String() string {
func (*VolumesDeleteResponse) ProtoMessage() {} func (*VolumesDeleteResponse) ProtoMessage() {}
func (x *VolumesDeleteResponse) ProtoReflect() protoreflect.Message { func (x *VolumesDeleteResponse) ProtoReflect() protoreflect.Message {
mi := &file_protos_volumes_v1_volumes_proto_msgTypes[6] mi := &file_protos_volumes_v1_volumes_proto_msgTypes[7]
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 {
@ -369,7 +435,7 @@ func (x *VolumesDeleteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use VolumesDeleteResponse.ProtoReflect.Descriptor instead. // Deprecated: Use VolumesDeleteResponse.ProtoReflect.Descriptor instead.
func (*VolumesDeleteResponse) Descriptor() ([]byte, []int) { func (*VolumesDeleteResponse) Descriptor() ([]byte, []int) {
return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{6} return file_protos_volumes_v1_volumes_proto_rawDescGZIP(), []int{7}
} }
var File_protos_volumes_v1_volumes_proto protoreflect.FileDescriptor var File_protos_volumes_v1_volumes_proto protoreflect.FileDescriptor
@ -384,60 +450,66 @@ var file_protos_volumes_v1_volumes_proto_rawDesc = []byte{
0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x14, 0x56, 0x6f, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x16, 0x41, 0x63,
0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x69, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74,
0x73, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f,
0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x90, 0x01,
0x6e, 0x73, 0x22, 0x59, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72, 0x65, 0x0a, 0x14, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x76, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x0a, 0x61, 0x63,
0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x69, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38,
0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76,
0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x31, 0x2e, 0x41, 0x63, 0x69, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x09, 0x61, 0x63, 0x69, 0x4f,
0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x76, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x22, 0x59, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74,
0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x76, 0x6f, 0x6c,
0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x6d, 0x2e,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0x56, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x0a, 0x14, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x75, 0x6d, 0x65, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x56,
0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x74, 0x22, 0x59, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x6d, 0x2e,
0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x8b, 0x03, 0x0a, 0x07, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c,
0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x75, 0x6d, 0x65, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0x26, 0x0a, 0x14,
0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31,
0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b,
0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a,
0x0a, 0x0b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x2e,
0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31,
0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 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, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75,
0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69,
0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x56,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x63,
0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e,
0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x52, 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44,
0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x8b, 0x03,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x34, 0x5a, 0x0a, 0x07, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x56, 0x6f,
0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x6f, 0x63, 0x6b, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x63, 0x6f,
0x65, 0x72, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x70, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f,
0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56,
0x3b, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75,
0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, 0x0b,
0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x2e, 0x63, 0x6f,
0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 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, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x56, 0x6f, 0x6c,
0x75, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x63, 0x6f, 0x6d,
0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x34, 0x5a, 0x32, 0x67,
0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72,
0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x73, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x76,
0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -452,33 +524,32 @@ func file_protos_volumes_v1_volumes_proto_rawDescGZIP() []byte {
return file_protos_volumes_v1_volumes_proto_rawDescData return file_protos_volumes_v1_volumes_proto_rawDescData
} }
var file_protos_volumes_v1_volumes_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_protos_volumes_v1_volumes_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_protos_volumes_v1_volumes_proto_goTypes = []interface{}{ var file_protos_volumes_v1_volumes_proto_goTypes = []interface{}{
(*Volume)(nil), // 0: com.docker.api.protos.volumes.v1.Volume (*Volume)(nil), // 0: com.docker.api.protos.volumes.v1.Volume
(*VolumesCreateRequest)(nil), // 1: com.docker.api.protos.volumes.v1.VolumesCreateRequest (*AciVolumeCreateOptions)(nil), // 1: com.docker.api.protos.volumes.v1.AciVolumeCreateOptions
(*VolumesCreateResponse)(nil), // 2: com.docker.api.protos.volumes.v1.VolumesCreateResponse (*VolumesCreateRequest)(nil), // 2: com.docker.api.protos.volumes.v1.VolumesCreateRequest
(*VolumesListRequest)(nil), // 3: com.docker.api.protos.volumes.v1.VolumesListRequest (*VolumesCreateResponse)(nil), // 3: com.docker.api.protos.volumes.v1.VolumesCreateResponse
(*VolumesListResponse)(nil), // 4: com.docker.api.protos.volumes.v1.VolumesListResponse (*VolumesListRequest)(nil), // 4: com.docker.api.protos.volumes.v1.VolumesListRequest
(*VolumesDeleteRequest)(nil), // 5: com.docker.api.protos.volumes.v1.VolumesDeleteRequest (*VolumesListResponse)(nil), // 5: com.docker.api.protos.volumes.v1.VolumesListResponse
(*VolumesDeleteResponse)(nil), // 6: com.docker.api.protos.volumes.v1.VolumesDeleteResponse (*VolumesDeleteRequest)(nil), // 6: com.docker.api.protos.volumes.v1.VolumesDeleteRequest
(*any.Any)(nil), // 7: google.protobuf.Any (*VolumesDeleteResponse)(nil), // 7: com.docker.api.protos.volumes.v1.VolumesDeleteResponse
} }
var file_protos_volumes_v1_volumes_proto_depIdxs = []int32{ var file_protos_volumes_v1_volumes_proto_depIdxs = []int32{
7, // 0: com.docker.api.protos.volumes.v1.VolumesCreateRequest.options:type_name -> google.protobuf.Any 1, // 0: com.docker.api.protos.volumes.v1.VolumesCreateRequest.aci_option:type_name -> com.docker.api.protos.volumes.v1.AciVolumeCreateOptions
0, // 1: com.docker.api.protos.volumes.v1.VolumesCreateResponse.volume:type_name -> com.docker.api.protos.volumes.v1.Volume 0, // 1: com.docker.api.protos.volumes.v1.VolumesCreateResponse.volume:type_name -> com.docker.api.protos.volumes.v1.Volume
0, // 2: com.docker.api.protos.volumes.v1.VolumesListResponse.volumes:type_name -> com.docker.api.protos.volumes.v1.Volume 0, // 2: com.docker.api.protos.volumes.v1.VolumesListResponse.volumes:type_name -> com.docker.api.protos.volumes.v1.Volume
7, // 3: com.docker.api.protos.volumes.v1.VolumesDeleteRequest.options:type_name -> google.protobuf.Any 2, // 3: com.docker.api.protos.volumes.v1.Volumes.VolumesCreate:input_type -> com.docker.api.protos.volumes.v1.VolumesCreateRequest
1, // 4: com.docker.api.protos.volumes.v1.Volumes.VolumesCreate:input_type -> com.docker.api.protos.volumes.v1.VolumesCreateRequest 4, // 4: com.docker.api.protos.volumes.v1.Volumes.VolumesList:input_type -> com.docker.api.protos.volumes.v1.VolumesListRequest
3, // 5: com.docker.api.protos.volumes.v1.Volumes.VolumesList:input_type -> com.docker.api.protos.volumes.v1.VolumesListRequest 6, // 5: com.docker.api.protos.volumes.v1.Volumes.VolumesDelete:input_type -> com.docker.api.protos.volumes.v1.VolumesDeleteRequest
5, // 6: com.docker.api.protos.volumes.v1.Volumes.VolumesDelete:input_type -> com.docker.api.protos.volumes.v1.VolumesDeleteRequest 3, // 6: com.docker.api.protos.volumes.v1.Volumes.VolumesCreate:output_type -> com.docker.api.protos.volumes.v1.VolumesCreateResponse
2, // 7: com.docker.api.protos.volumes.v1.Volumes.VolumesCreate:output_type -> com.docker.api.protos.volumes.v1.VolumesCreateResponse 5, // 7: com.docker.api.protos.volumes.v1.Volumes.VolumesList:output_type -> com.docker.api.protos.volumes.v1.VolumesListResponse
4, // 8: com.docker.api.protos.volumes.v1.Volumes.VolumesList:output_type -> com.docker.api.protos.volumes.v1.VolumesListResponse 7, // 8: com.docker.api.protos.volumes.v1.Volumes.VolumesDelete:output_type -> com.docker.api.protos.volumes.v1.VolumesDeleteResponse
6, // 9: com.docker.api.protos.volumes.v1.Volumes.VolumesDelete:output_type -> com.docker.api.protos.volumes.v1.VolumesDeleteResponse 6, // [6:9] is the sub-list for method output_type
7, // [7:10] is the sub-list for method output_type 3, // [3:6] is the sub-list for method input_type
4, // [4:7] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension type_name 3, // [3:3] is the sub-list for extension extendee
4, // [4:4] is the sub-list for extension extendee 0, // [0:3] is the sub-list for field type_name
0, // [0:4] is the sub-list for field type_name
} }
func init() { file_protos_volumes_v1_volumes_proto_init() } func init() { file_protos_volumes_v1_volumes_proto_init() }
@ -500,7 +571,7 @@ func file_protos_volumes_v1_volumes_proto_init() {
} }
} }
file_protos_volumes_v1_volumes_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { file_protos_volumes_v1_volumes_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolumesCreateRequest); i { switch v := v.(*AciVolumeCreateOptions); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -512,7 +583,7 @@ func file_protos_volumes_v1_volumes_proto_init() {
} }
} }
file_protos_volumes_v1_volumes_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { file_protos_volumes_v1_volumes_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolumesCreateResponse); i { switch v := v.(*VolumesCreateRequest); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -524,7 +595,7 @@ func file_protos_volumes_v1_volumes_proto_init() {
} }
} }
file_protos_volumes_v1_volumes_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { file_protos_volumes_v1_volumes_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolumesListRequest); i { switch v := v.(*VolumesCreateResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -536,7 +607,7 @@ func file_protos_volumes_v1_volumes_proto_init() {
} }
} }
file_protos_volumes_v1_volumes_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { file_protos_volumes_v1_volumes_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolumesListResponse); i { switch v := v.(*VolumesListRequest); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -548,7 +619,7 @@ func file_protos_volumes_v1_volumes_proto_init() {
} }
} }
file_protos_volumes_v1_volumes_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { file_protos_volumes_v1_volumes_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolumesDeleteRequest); i { switch v := v.(*VolumesListResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -560,6 +631,18 @@ func file_protos_volumes_v1_volumes_proto_init() {
} }
} }
file_protos_volumes_v1_volumes_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { file_protos_volumes_v1_volumes_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolumesDeleteRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_protos_volumes_v1_volumes_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolumesDeleteResponse); i { switch v := v.(*VolumesDeleteResponse); i {
case 0: case 0:
return &v.state return &v.state
@ -572,13 +655,16 @@ func file_protos_volumes_v1_volumes_proto_init() {
} }
} }
} }
file_protos_volumes_v1_volumes_proto_msgTypes[2].OneofWrappers = []interface{}{
(*VolumesCreateRequest_AciOption)(nil),
}
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{ File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_protos_volumes_v1_volumes_proto_rawDesc, RawDescriptor: file_protos_volumes_v1_volumes_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 7, NumMessages: 8,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },

View File

@ -1,5 +1,5 @@
// //
// Copyright 2020 Docker, Inc. // Copyright 2020 Docker Compose CLI authors
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -32,8 +32,15 @@ message Volume {
string description = 2; string description = 2;
} }
message AciVolumeCreateOptions {
string storage_account = 1;
}
message VolumesCreateRequest { message VolumesCreateRequest {
repeated google.protobuf.Any options = 1; string name = 1;
oneof options {
AciVolumeCreateOptions aci_option = 2;
}
} }
message VolumesCreateResponse { message VolumesCreateResponse {
@ -49,7 +56,6 @@ message VolumesListResponse {
message VolumesDeleteRequest { message VolumesDeleteRequest {
string id = 1; string id = 1;
repeated google.protobuf.Any options = 2;
} }
message VolumesDeleteResponse { message VolumesDeleteResponse {

View File

@ -36,9 +36,12 @@ var (
"/com.docker.api.protos.containers.v1.Containers/Kill": "kill", "/com.docker.api.protos.containers.v1.Containers/Kill": "kill",
"/com.docker.api.protos.containers.v1.Containers/Inspect": "inspect", "/com.docker.api.protos.containers.v1.Containers/Inspect": "inspect",
"/com.docker.api.protos.containers.v1.Containers/Logs": "logs", "/com.docker.api.protos.containers.v1.Containers/Logs": "logs",
"/com.docker.api.protos.streams.v1.Streaming/NewStream": "", "/com.docker.api.protos.streams.v1.Streaming/NewStream": "streaming",
"/com.docker.api.protos.context.v1.Contexts/List": "context ls", "/com.docker.api.protos.context.v1.Contexts/List": "context ls",
"/com.docker.api.protos.context.v1.Contexts/SetCurrent": "context use", "/com.docker.api.protos.context.v1.Contexts/SetCurrent": "context use",
"/com.docker.api.protos.volumes.v1.Volumes/VolumesList": "volume ls",
"/com.docker.api.protos.volumes.v1.Volumes/VolumesDelete": "volume rm",
"/com.docker.api.protos.volumes.v1.Volumes/VolumesCreate": "volume create",
} }
) )

View File

@ -36,6 +36,7 @@ import (
containersv1 "github.com/docker/compose-cli/protos/containers/v1" containersv1 "github.com/docker/compose-cli/protos/containers/v1"
contextsv1 "github.com/docker/compose-cli/protos/contexts/v1" contextsv1 "github.com/docker/compose-cli/protos/contexts/v1"
streamsv1 "github.com/docker/compose-cli/protos/streams/v1" streamsv1 "github.com/docker/compose-cli/protos/streams/v1"
volumesv1 "github.com/docker/compose-cli/protos/volumes/v1"
"github.com/docker/compose-cli/server/proxy" "github.com/docker/compose-cli/server/proxy"
) )
@ -104,6 +105,7 @@ func setupServer() *grpc.Server {
p := proxy.New(ctx) p := proxy.New(ctx)
containersv1.RegisterContainersServer(s, p) containersv1.RegisterContainersServer(s, p)
streamsv1.RegisterStreamingServer(s, p) streamsv1.RegisterStreamingServer(s, p)
volumesv1.RegisterVolumesServer(s, p)
contextsv1.RegisterContextsServer(s, p.ContextsProxy()) contextsv1.RegisterContextsServer(s, p.ContextsProxy())
return s return s
} }

View File

@ -1,15 +1,41 @@
/*
Copyright 2020 Docker Compose CLI authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package proxy package proxy
import ( import (
"context" "context"
"github.com/docker/compose-cli/aci"
"github.com/docker/compose-cli/api/volumes" "github.com/docker/compose-cli/api/volumes"
volumesv1 "github.com/docker/compose-cli/protos/volumes/v1" volumesv1 "github.com/docker/compose-cli/protos/volumes/v1"
) )
// VolumesCreate creates a volume. // VolumesCreate creates a volume.
func (p *proxy) VolumesCreate(ctx context.Context, req *volumesv1.VolumesCreateRequest) (*volumesv1.VolumesCreateResponse, error) { func (p *proxy) VolumesCreate(ctx context.Context, req *volumesv1.VolumesCreateRequest) (*volumesv1.VolumesCreateResponse, error) {
v, err := Client(ctx).VolumeService().Create(ctx, req.Options) storageAccount := ""
aciReq := req.GetAciOption()
if aciReq != nil {
storageAccount = aciReq.StorageAccount
}
aciOpts := aci.VolumeCreateOptions{
Account: storageAccount,
}
v, err := Client(ctx).VolumeService().Create(ctx, req.Name, aciOpts)
if err != nil { if err != nil {
return &volumesv1.VolumesCreateResponse{}, err return &volumesv1.VolumesCreateResponse{}, err
} }
@ -33,7 +59,7 @@ func (p *proxy) VolumesList(ctx context.Context, req *volumesv1.VolumesListReque
// VolumesDelete deletes a volume. // VolumesDelete deletes a volume.
func (p *proxy) VolumesDelete(ctx context.Context, req *volumesv1.VolumesDeleteRequest) (*volumesv1.VolumesDeleteResponse, error) { func (p *proxy) VolumesDelete(ctx context.Context, req *volumesv1.VolumesDeleteRequest) (*volumesv1.VolumesDeleteResponse, error) {
err := Client(ctx).VolumeService().Delete(ctx, req.Id, req.Options) err := Client(ctx).VolumeService().Delete(ctx, req.Id, nil)
return &volumesv1.VolumesDeleteResponse{}, err return &volumesv1.VolumesDeleteResponse{}, err
} }