Merge pull request #880 from gtardif/api_context_ls_endpoint

Add context details in API context ls
This commit is contained in:
Guillaume Tardif 2020-11-05 17:08:32 +01:00 committed by GitHub
commit 5a8eb000f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 561 additions and 69 deletions

View File

@ -52,6 +52,12 @@ type Context struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
ContextType string `protobuf:"bytes,2,opt,name=contextType,proto3" json:"contextType,omitempty"`
Current bool `protobuf:"varint,3,opt,name=current,proto3" json:"current,omitempty"`
Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
// Types that are assignable to Endpoint:
// *Context_DockerEndpoint
// *Context_AciEndpoint
// *Context_EcsEndpoint
Endpoint isContext_Endpoint `protobuf_oneof:"Endpoint"`
}
func (x *Context) Reset() {
@ -107,6 +113,228 @@ func (x *Context) GetCurrent() bool {
return false
}
func (x *Context) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (m *Context) GetEndpoint() isContext_Endpoint {
if m != nil {
return m.Endpoint
}
return nil
}
func (x *Context) GetDockerEndpoint() *DockerEndpoint {
if x, ok := x.GetEndpoint().(*Context_DockerEndpoint); ok {
return x.DockerEndpoint
}
return nil
}
func (x *Context) GetAciEndpoint() *AciEndpoint {
if x, ok := x.GetEndpoint().(*Context_AciEndpoint); ok {
return x.AciEndpoint
}
return nil
}
func (x *Context) GetEcsEndpoint() *EcsEndpoint {
if x, ok := x.GetEndpoint().(*Context_EcsEndpoint); ok {
return x.EcsEndpoint
}
return nil
}
type isContext_Endpoint interface {
isContext_Endpoint()
}
type Context_DockerEndpoint struct {
DockerEndpoint *DockerEndpoint `protobuf:"bytes,5,opt,name=docker_endpoint,json=dockerEndpoint,proto3,oneof"`
}
type Context_AciEndpoint struct {
AciEndpoint *AciEndpoint `protobuf:"bytes,6,opt,name=aci_endpoint,json=aciEndpoint,proto3,oneof"`
}
type Context_EcsEndpoint struct {
EcsEndpoint *EcsEndpoint `protobuf:"bytes,7,opt,name=ecs_endpoint,json=ecsEndpoint,proto3,oneof"`
}
func (*Context_DockerEndpoint) isContext_Endpoint() {}
func (*Context_AciEndpoint) isContext_Endpoint() {}
func (*Context_EcsEndpoint) isContext_Endpoint() {}
type DockerEndpoint struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
}
func (x *DockerEndpoint) Reset() {
*x = DockerEndpoint{}
if protoimpl.UnsafeEnabled {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DockerEndpoint) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DockerEndpoint) ProtoMessage() {}
func (x *DockerEndpoint) ProtoReflect() protoreflect.Message {
mi := &file_protos_contexts_v1_contexts_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 DockerEndpoint.ProtoReflect.Descriptor instead.
func (*DockerEndpoint) Descriptor() ([]byte, []int) {
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{1}
}
func (x *DockerEndpoint) GetHost() string {
if x != nil {
return x.Host
}
return ""
}
type AciEndpoint struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
ResourceGroup string `protobuf:"bytes,2,opt,name=resource_group,json=resourceGroup,proto3" json:"resource_group,omitempty"`
SubscriptionId string `protobuf:"bytes,3,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"`
}
func (x *AciEndpoint) Reset() {
*x = AciEndpoint{}
if protoimpl.UnsafeEnabled {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AciEndpoint) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AciEndpoint) ProtoMessage() {}
func (x *AciEndpoint) ProtoReflect() protoreflect.Message {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[2]
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 AciEndpoint.ProtoReflect.Descriptor instead.
func (*AciEndpoint) Descriptor() ([]byte, []int) {
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{2}
}
func (x *AciEndpoint) GetRegion() string {
if x != nil {
return x.Region
}
return ""
}
func (x *AciEndpoint) GetResourceGroup() string {
if x != nil {
return x.ResourceGroup
}
return ""
}
func (x *AciEndpoint) GetSubscriptionId() string {
if x != nil {
return x.SubscriptionId
}
return ""
}
type EcsEndpoint struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Profile string `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"`
FromEnvironment bool `protobuf:"varint,2,opt,name=from_environment,json=fromEnvironment,proto3" json:"from_environment,omitempty"`
}
func (x *EcsEndpoint) Reset() {
*x = EcsEndpoint{}
if protoimpl.UnsafeEnabled {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EcsEndpoint) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EcsEndpoint) ProtoMessage() {}
func (x *EcsEndpoint) ProtoReflect() protoreflect.Message {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[3]
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 EcsEndpoint.ProtoReflect.Descriptor instead.
func (*EcsEndpoint) Descriptor() ([]byte, []int) {
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{3}
}
func (x *EcsEndpoint) GetProfile() string {
if x != nil {
return x.Profile
}
return ""
}
func (x *EcsEndpoint) GetFromEnvironment() bool {
if x != nil {
return x.FromEnvironment
}
return false
}
type SetCurrentRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -118,7 +346,7 @@ type SetCurrentRequest struct {
func (x *SetCurrentRequest) Reset() {
*x = SetCurrentRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[1]
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -131,7 +359,7 @@ func (x *SetCurrentRequest) String() string {
func (*SetCurrentRequest) ProtoMessage() {}
func (x *SetCurrentRequest) ProtoReflect() protoreflect.Message {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[1]
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -144,7 +372,7 @@ func (x *SetCurrentRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SetCurrentRequest.ProtoReflect.Descriptor instead.
func (*SetCurrentRequest) Descriptor() ([]byte, []int) {
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{1}
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{4}
}
func (x *SetCurrentRequest) GetName() string {
@ -163,7 +391,7 @@ type SetCurrentResponse struct {
func (x *SetCurrentResponse) Reset() {
*x = SetCurrentResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[2]
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -176,7 +404,7 @@ func (x *SetCurrentResponse) String() string {
func (*SetCurrentResponse) ProtoMessage() {}
func (x *SetCurrentResponse) ProtoReflect() protoreflect.Message {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[2]
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -189,7 +417,7 @@ func (x *SetCurrentResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SetCurrentResponse.ProtoReflect.Descriptor instead.
func (*SetCurrentResponse) Descriptor() ([]byte, []int) {
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{2}
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{5}
}
type ListRequest struct {
@ -201,7 +429,7 @@ type ListRequest struct {
func (x *ListRequest) Reset() {
*x = ListRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[3]
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -214,7 +442,7 @@ func (x *ListRequest) String() string {
func (*ListRequest) ProtoMessage() {}
func (x *ListRequest) ProtoReflect() protoreflect.Message {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[3]
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -227,7 +455,7 @@ func (x *ListRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListRequest.ProtoReflect.Descriptor instead.
func (*ListRequest) Descriptor() ([]byte, []int) {
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{3}
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{6}
}
type ListResponse struct {
@ -241,7 +469,7 @@ type ListResponse struct {
func (x *ListResponse) Reset() {
*x = ListResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[4]
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -254,7 +482,7 @@ func (x *ListResponse) String() string {
func (*ListResponse) ProtoMessage() {}
func (x *ListResponse) ProtoReflect() protoreflect.Message {
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[4]
mi := &file_protos_contexts_v1_contexts_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -267,7 +495,7 @@ func (x *ListResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListResponse.ProtoReflect.Descriptor instead.
func (*ListResponse) Descriptor() ([]byte, []int) {
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{4}
return file_protos_contexts_v1_contexts_proto_rawDescGZIP(), []int{7}
}
func (x *ListResponse) GetContexts() []*Context {
@ -284,41 +512,76 @@ var file_protos_contexts_v1_contexts_proto_rawDesc = []byte{
0x73, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x12, 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x78, 0x74, 0x2e, 0x76, 0x31, 0x22, 0x59, 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, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
0x22, 0x27, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x65, 0x74,
0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x0d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55,
0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45,
0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e,
0x74, 0x65, 0x78, 0x74, 0x73, 0x32, 0xea, 0x01, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
0x74, 0x73, 0x12, 0x77, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
0x12, 0x33, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b,
0x78, 0x74, 0x2e, 0x76, 0x31, 0x22, 0x8c, 0x03, 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, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65,
0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x5f, 0x65, 0x6e,
0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63,
0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00,
0x52, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
0x12, 0x52, 0x0a, 0x0c, 0x61, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63,
0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63,
0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x69, 0x45, 0x6e, 0x64,
0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x69, 0x45, 0x6e, 0x64, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x65, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, 0x6d,
0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x63,
0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x63, 0x73,
0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x22, 0x24, 0x0a, 0x0e, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x45, 0x6e,
0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x75, 0x0a, 0x0b, 0x41, 0x63,
0x69, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f,
0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72,
0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73,
0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49,
0x64, 0x22, 0x52, 0x0a, 0x0b, 0x45, 0x63, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x72,
0x6f, 0x6d, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f,
0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x27, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72,
0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14,
0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b,
0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63, 0x6f,
0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x32, 0xea, 0x01, 0x0a, 0x08, 0x43,
0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x77, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x43, 0x75,
0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b,
0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63, 0x6f,
0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72,
0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x04, 0x4c,
0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 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, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x78, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x6f, 0x6d,
0x2e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x65, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64,
0x6f, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x6f,
0x63, 0x6b, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 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,
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -333,25 +596,31 @@ func file_protos_contexts_v1_contexts_proto_rawDescGZIP() []byte {
return file_protos_contexts_v1_contexts_proto_rawDescData
}
var file_protos_contexts_v1_contexts_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_protos_contexts_v1_contexts_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_protos_contexts_v1_contexts_proto_goTypes = []interface{}{
(*Context)(nil), // 0: com.docker.api.protos.context.v1.Context
(*SetCurrentRequest)(nil), // 1: com.docker.api.protos.context.v1.SetCurrentRequest
(*SetCurrentResponse)(nil), // 2: com.docker.api.protos.context.v1.SetCurrentResponse
(*ListRequest)(nil), // 3: com.docker.api.protos.context.v1.ListRequest
(*ListResponse)(nil), // 4: com.docker.api.protos.context.v1.ListResponse
(*DockerEndpoint)(nil), // 1: com.docker.api.protos.context.v1.DockerEndpoint
(*AciEndpoint)(nil), // 2: com.docker.api.protos.context.v1.AciEndpoint
(*EcsEndpoint)(nil), // 3: com.docker.api.protos.context.v1.EcsEndpoint
(*SetCurrentRequest)(nil), // 4: com.docker.api.protos.context.v1.SetCurrentRequest
(*SetCurrentResponse)(nil), // 5: com.docker.api.protos.context.v1.SetCurrentResponse
(*ListRequest)(nil), // 6: com.docker.api.protos.context.v1.ListRequest
(*ListResponse)(nil), // 7: com.docker.api.protos.context.v1.ListResponse
}
var file_protos_contexts_v1_contexts_proto_depIdxs = []int32{
0, // 0: com.docker.api.protos.context.v1.ListResponse.contexts:type_name -> com.docker.api.protos.context.v1.Context
1, // 1: com.docker.api.protos.context.v1.Contexts.SetCurrent:input_type -> com.docker.api.protos.context.v1.SetCurrentRequest
3, // 2: com.docker.api.protos.context.v1.Contexts.List:input_type -> com.docker.api.protos.context.v1.ListRequest
2, // 3: com.docker.api.protos.context.v1.Contexts.SetCurrent:output_type -> com.docker.api.protos.context.v1.SetCurrentResponse
4, // 4: com.docker.api.protos.context.v1.Contexts.List:output_type -> com.docker.api.protos.context.v1.ListResponse
3, // [3:5] is the sub-list for method output_type
1, // [1:3] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
1, // 0: com.docker.api.protos.context.v1.Context.docker_endpoint:type_name -> com.docker.api.protos.context.v1.DockerEndpoint
2, // 1: com.docker.api.protos.context.v1.Context.aci_endpoint:type_name -> com.docker.api.protos.context.v1.AciEndpoint
3, // 2: com.docker.api.protos.context.v1.Context.ecs_endpoint:type_name -> com.docker.api.protos.context.v1.EcsEndpoint
0, // 3: com.docker.api.protos.context.v1.ListResponse.contexts:type_name -> com.docker.api.protos.context.v1.Context
4, // 4: com.docker.api.protos.context.v1.Contexts.SetCurrent:input_type -> com.docker.api.protos.context.v1.SetCurrentRequest
6, // 5: com.docker.api.protos.context.v1.Contexts.List:input_type -> com.docker.api.protos.context.v1.ListRequest
5, // 6: com.docker.api.protos.context.v1.Contexts.SetCurrent:output_type -> com.docker.api.protos.context.v1.SetCurrentResponse
7, // 7: com.docker.api.protos.context.v1.Contexts.List:output_type -> com.docker.api.protos.context.v1.ListResponse
6, // [6:8] is the sub-list for method output_type
4, // [4:6] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
}
func init() { file_protos_contexts_v1_contexts_proto_init() }
@ -373,7 +642,7 @@ func file_protos_contexts_v1_contexts_proto_init() {
}
}
file_protos_contexts_v1_contexts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SetCurrentRequest); i {
switch v := v.(*DockerEndpoint); i {
case 0:
return &v.state
case 1:
@ -385,7 +654,7 @@ func file_protos_contexts_v1_contexts_proto_init() {
}
}
file_protos_contexts_v1_contexts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SetCurrentResponse); i {
switch v := v.(*AciEndpoint); i {
case 0:
return &v.state
case 1:
@ -397,7 +666,7 @@ func file_protos_contexts_v1_contexts_proto_init() {
}
}
file_protos_contexts_v1_contexts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRequest); i {
switch v := v.(*EcsEndpoint); i {
case 0:
return &v.state
case 1:
@ -409,6 +678,42 @@ func file_protos_contexts_v1_contexts_proto_init() {
}
}
file_protos_contexts_v1_contexts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SetCurrentRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_protos_contexts_v1_contexts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SetCurrentResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_protos_contexts_v1_contexts_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_protos_contexts_v1_contexts_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListResponse); i {
case 0:
return &v.state
@ -421,13 +726,18 @@ func file_protos_contexts_v1_contexts_proto_init() {
}
}
}
file_protos_contexts_v1_contexts_proto_msgTypes[0].OneofWrappers = []interface{}{
(*Context_DockerEndpoint)(nil),
(*Context_AciEndpoint)(nil),
(*Context_EcsEndpoint)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_protos_contexts_v1_contexts_proto_rawDesc,
NumEnums: 0,
NumMessages: 5,
NumMessages: 8,
NumExtensions: 0,
NumServices: 1,
},

View File

@ -30,6 +30,27 @@ message Context {
string name = 1;
string contextType = 2;
bool current = 3;
string description = 4;
oneof Endpoint {
DockerEndpoint docker_endpoint = 5;
AciEndpoint aci_endpoint = 6;
EcsEndpoint ecs_endpoint = 7;
}
}
message DockerEndpoint {
string host = 1;
}
message AciEndpoint {
string region = 1;
string resource_group = 2;
string subscription_id = 3;
}
message EcsEndpoint {
string profile = 1;
bool from_environment = 2;
}
message SetCurrentRequest {

View File

@ -47,15 +47,65 @@ func (cp *contextsProxy) List(ctx context.Context, request *contextsv1.ListReque
return &contextsv1.ListResponse{}, err
}
return convertContexts(contexts, configFile.CurrentContext), nil
}
func convertContexts(contexts []*store.DockerContext, currentContext string) *contextsv1.ListResponse {
result := &contextsv1.ListResponse{}
for _, c := range contexts {
result.Contexts = append(result.Contexts, &contextsv1.Context{
endpointName := c.Type()
if c.Type() == store.DefaultContextType {
endpointName = "docker"
}
var endpoint interface{} = c.Endpoints[endpointName]
context := contextsv1.Context{
Name: c.Name,
ContextType: c.Type(),
Current: c.Name == configFile.CurrentContext,
})
}
Description: c.Metadata.Description,
Current: c.Name == currentContext,
}
switch c.Type() {
case store.DefaultContextType:
context.Endpoint = getDockerEndpoint(endpoint)
case store.AciContextType:
context.Endpoint = getAciEndpoint(endpoint)
case store.EcsContextType:
context.Endpoint = getEcsEndpoint(endpoint)
}
return result, nil
result.Contexts = append(result.Contexts, &context)
}
return result
}
func getDockerEndpoint(endpoint interface{}) *contextsv1.Context_DockerEndpoint {
typedEndpoint := endpoint.(*store.Endpoint)
return &contextsv1.Context_DockerEndpoint{
DockerEndpoint: &contextsv1.DockerEndpoint{
Host: typedEndpoint.Host,
},
}
}
func getAciEndpoint(endpoint interface{}) *contextsv1.Context_AciEndpoint {
typedEndpoint := endpoint.(*store.AciContext)
return &contextsv1.Context_AciEndpoint{
AciEndpoint: &contextsv1.AciEndpoint{
ResourceGroup: typedEndpoint.ResourceGroup,
Region: typedEndpoint.Location,
SubscriptionId: typedEndpoint.SubscriptionID,
},
}
}
func getEcsEndpoint(endpoint interface{}) *contextsv1.Context_EcsEndpoint {
typedEndpoint := endpoint.(*store.EcsContext)
return &contextsv1.Context_EcsEndpoint{
EcsEndpoint: &contextsv1.EcsEndpoint{
FromEnvironment: typedEndpoint.CredentialsFromEnv,
Profile: typedEndpoint.Profile,
},
}
}

View File

@ -0,0 +1,111 @@
/*
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
import (
"testing"
"gotest.tools/v3/assert"
"github.com/docker/compose-cli/context/store"
contextsv1 "github.com/docker/compose-cli/protos/contexts/v1"
"github.com/google/go-cmp/cmp/cmpopts"
)
func TestConvertContext(t *testing.T) {
contexts := []*store.DockerContext{
{
Name: store.DefaultContextName,
Metadata: store.ContextMetadata{
Description: "description 1",
Type: store.DefaultContextType,
},
Endpoints: map[string]interface{}{
"docker": &store.Endpoint{
Host: "unix://var/run/docker.sock",
},
},
},
{
Name: "acicontext",
Metadata: store.ContextMetadata{
Description: "group1@eastus",
Type: store.AciContextType,
},
Endpoints: map[string]interface{}{
"aci": &store.AciContext{
Location: "eastus",
ResourceGroup: "group1",
SubscriptionID: "Subscription id",
},
},
},
{
Name: "ecscontext",
Metadata: store.ContextMetadata{
Description: "ecs description",
Type: store.EcsContextType,
},
Endpoints: map[string]interface{}{
"ecs": &store.EcsContext{
CredentialsFromEnv: false,
Profile: "awsprofile",
},
},
},
}
converted := convertContexts(contexts, "acicontext")
expected := []*contextsv1.Context{
{
Name: store.DefaultContextName,
Current: false,
ContextType: store.DefaultContextType,
Description: "description 1",
Endpoint: &contextsv1.Context_DockerEndpoint{
DockerEndpoint: &contextsv1.DockerEndpoint{
Host: "unix://var/run/docker.sock",
},
},
},
{
Name: "acicontext",
Current: true,
ContextType: store.AciContextType,
Description: "group1@eastus",
Endpoint: &contextsv1.Context_AciEndpoint{
AciEndpoint: &contextsv1.AciEndpoint{
Region: "eastus",
ResourceGroup: "group1",
SubscriptionId: "Subscription id",
},
},
},
{
Name: "ecscontext",
Current: false,
ContextType: store.EcsContextType,
Description: "ecs description",
Endpoint: &contextsv1.Context_EcsEndpoint{
EcsEndpoint: &contextsv1.EcsEndpoint{
FromEnvironment: false,
Profile: "awsprofile",
},
},
},
}
assert.DeepEqual(t, converted.Contexts, expected, cmpopts.IgnoreUnexported(contextsv1.Context{}, contextsv1.DockerEndpoint{}, contextsv1.AciEndpoint{}, contextsv1.EcsEndpoint{}))
}