diff --git a/Makefile b/Makefile index a1b16acb6fbc..399b6edb31e8 100644 --- a/Makefile +++ b/Makefile @@ -127,6 +127,7 @@ proto: protoc -I helper/forwarding -I vault -I ../../.. vault/*.proto --go_out=plugins=grpc:vault protoc -I helper/storagepacker helper/storagepacker/types.proto --go_out=plugins=grpc:helper/storagepacker protoc -I helper/forwarding -I vault -I ../../.. helper/forwarding/types.proto --go_out=plugins=grpc:helper/forwarding + protoc logical/*.proto --go_out=plugins=grpc:$(GOPATH)/src protoc -I physical physical/types.proto --go_out=plugins=grpc:physical protoc -I helper/identity -I ../../.. helper/identity/types.proto --go_out=plugins=grpc:helper/identity protoc builtin/logical/database/dbplugin/*.proto --go_out=plugins=grpc:. diff --git a/logical/identity.go b/logical/identity.go deleted file mode 100644 index a49017a3eb94..000000000000 --- a/logical/identity.go +++ /dev/null @@ -1,16 +0,0 @@ -package logical - -// Alias represents the information used by core to create implicit entity. -// Implicit entities get created when a client authenticates successfully from -// any of the authentication backends (except token backend). -type Alias struct { - // MountType is the backend mount's type to which this identity belongs - MountType string `json:"mount_type" structs:"mount_type" mapstructure:"mount_type"` - - // MountAccessor is the identifier of the mount entry to which this - // identity belongs - MountAccessor string `json:"mount_accessor" structs:"mount_accessor" mapstructure:"mount_accessor"` - - // Name is the identifier of this identity in its authentication source - Name string `json:"name" structs:"name" mapstructure:"name"` -} diff --git a/logical/identity.pb.go b/logical/identity.pb.go new file mode 100644 index 000000000000..0deed7254be4 --- /dev/null +++ b/logical/identity.pb.go @@ -0,0 +1,159 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: logical/identity.proto + +package logical // import "github.com/hashicorp/vault/logical" + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type Entity struct { + // ID is the unique identifier for the entity + ID string `protobuf:"bytes,1,opt,name=ID" json:"ID,omitempty"` + // Name is the human-friendly unique identifier for the entity + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` + // Aliases contains thhe alias mappings for the given entity + Aliases []*Alias `protobuf:"bytes,3,rep,name=aliases" json:"aliases,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Entity) Reset() { *m = Entity{} } +func (m *Entity) String() string { return proto.CompactTextString(m) } +func (*Entity) ProtoMessage() {} +func (*Entity) Descriptor() ([]byte, []int) { + return fileDescriptor_identity_63bdeae5187a0ba9, []int{0} +} +func (m *Entity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Entity.Unmarshal(m, b) +} +func (m *Entity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Entity.Marshal(b, m, deterministic) +} +func (dst *Entity) XXX_Merge(src proto.Message) { + xxx_messageInfo_Entity.Merge(dst, src) +} +func (m *Entity) XXX_Size() int { + return xxx_messageInfo_Entity.Size(m) +} +func (m *Entity) XXX_DiscardUnknown() { + xxx_messageInfo_Entity.DiscardUnknown(m) +} + +var xxx_messageInfo_Entity proto.InternalMessageInfo + +func (m *Entity) GetID() string { + if m != nil { + return m.ID + } + return "" +} + +func (m *Entity) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Entity) GetAliases() []*Alias { + if m != nil { + return m.Aliases + } + return nil +} + +type Alias struct { + // MountType is the backend mount's type to which this identity belongs + MountType string `protobuf:"bytes,1,opt,name=mount_type,json=mountType" json:"mount_type,omitempty"` + // MountAccessor is the identifier of the mount entry to which this + // identity belongs + MountAccessor string `protobuf:"bytes,2,opt,name=mount_accessor,json=mountAccessor" json:"mount_accessor,omitempty"` + // Name is the identifier of this identity in its authentication source + Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Alias) Reset() { *m = Alias{} } +func (m *Alias) String() string { return proto.CompactTextString(m) } +func (*Alias) ProtoMessage() {} +func (*Alias) Descriptor() ([]byte, []int) { + return fileDescriptor_identity_63bdeae5187a0ba9, []int{1} +} +func (m *Alias) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Alias.Unmarshal(m, b) +} +func (m *Alias) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Alias.Marshal(b, m, deterministic) +} +func (dst *Alias) XXX_Merge(src proto.Message) { + xxx_messageInfo_Alias.Merge(dst, src) +} +func (m *Alias) XXX_Size() int { + return xxx_messageInfo_Alias.Size(m) +} +func (m *Alias) XXX_DiscardUnknown() { + xxx_messageInfo_Alias.DiscardUnknown(m) +} + +var xxx_messageInfo_Alias proto.InternalMessageInfo + +func (m *Alias) GetMountType() string { + if m != nil { + return m.MountType + } + return "" +} + +func (m *Alias) GetMountAccessor() string { + if m != nil { + return m.MountAccessor + } + return "" +} + +func (m *Alias) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func init() { + proto.RegisterType((*Entity)(nil), "logical.Entity") + proto.RegisterType((*Alias)(nil), "logical.Alias") +} + +func init() { proto.RegisterFile("logical/identity.proto", fileDescriptor_identity_63bdeae5187a0ba9) } + +var fileDescriptor_identity_63bdeae5187a0ba9 = []byte{ + // 209 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x44, 0xcf, 0x31, 0x6b, 0x85, 0x30, + 0x14, 0x05, 0x60, 0xd4, 0x56, 0xf1, 0x96, 0x3a, 0x64, 0x28, 0x2e, 0x05, 0x91, 0x16, 0x9c, 0x12, + 0x68, 0x7f, 0x81, 0xc5, 0x0e, 0xae, 0x52, 0x3a, 0x74, 0x29, 0xd7, 0x34, 0x68, 0x20, 0x9a, 0x60, + 0x62, 0xc1, 0x7f, 0x5f, 0x9a, 0x97, 0xf7, 0xde, 0x16, 0xbe, 0x03, 0x27, 0xe7, 0xc2, 0x83, 0xd2, + 0x93, 0xe4, 0xa8, 0x98, 0xfc, 0x11, 0xab, 0x93, 0xee, 0xa0, 0x66, 0xd3, 0x4e, 0x93, 0x2c, 0x78, + 0xfd, 0x09, 0xe9, 0xbb, 0x0f, 0x48, 0x01, 0x71, 0xdf, 0x95, 0x51, 0x15, 0x35, 0xf9, 0x10, 0xf7, + 0x1d, 0x21, 0x70, 0xb3, 0xe2, 0x22, 0xca, 0xd8, 0x8b, 0x7f, 0x93, 0x06, 0x32, 0x54, 0x12, 0xad, + 0xb0, 0x65, 0x52, 0x25, 0xcd, 0xdd, 0x4b, 0x41, 0x43, 0x11, 0x6d, 0xff, 0x7d, 0x38, 0xc7, 0x35, + 0xc2, 0xad, 0x17, 0xf2, 0x08, 0xb0, 0xe8, 0x7d, 0x75, 0xdf, 0xee, 0x30, 0x22, 0xd4, 0xe7, 0x5e, + 0x3e, 0x0e, 0x23, 0xc8, 0x33, 0x14, 0xa7, 0x18, 0x39, 0x17, 0xd6, 0xea, 0x2d, 0xfc, 0x77, 0xef, + 0xb5, 0x0d, 0x78, 0x19, 0x93, 0x5c, 0xc7, 0xbc, 0x3d, 0x7d, 0xd5, 0x93, 0x74, 0xf3, 0x3e, 0x52, + 0xae, 0x17, 0x36, 0xa3, 0x9d, 0x25, 0xd7, 0x9b, 0x61, 0xbf, 0xb8, 0x2b, 0xc7, 0xc2, 0xae, 0x31, + 0xf5, 0x07, 0xbf, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x53, 0x90, 0x60, 0xf6, 0x0a, 0x01, 0x00, + 0x00, +} diff --git a/logical/identity.proto b/logical/identity.proto new file mode 100644 index 000000000000..914a6ada0f25 --- /dev/null +++ b/logical/identity.proto @@ -0,0 +1,29 @@ +syntax = "proto3"; + +option go_package = "github.com/hashicorp/vault/logical"; + +package logical; + +message Entity { + // ID is the unique identifier for the entity + string ID = 1; + + // Name is the human-friendly unique identifier for the entity + string name = 2; + + // Aliases contains thhe alias mappings for the given entity + repeated Alias aliases = 3; +} + +message Alias { + // MountType is the backend mount's type to which this identity belongs + string mount_type = 1; + + // MountAccessor is the identifier of the mount entry to which this + // identity belongs + string mount_accessor = 2; + + // Name is the identifier of this identity in its authentication source + string name = 3; +} + diff --git a/logical/plugin/grpc_system.go b/logical/plugin/grpc_system.go index 17aeec411d92..df8fa6728f32 100644 --- a/logical/plugin/grpc_system.go +++ b/logical/plugin/grpc_system.go @@ -132,6 +132,20 @@ func (s *gRPCSystemViewClient) LocalMount() bool { return reply.Local } +func (s *gRPCSystemViewClient) EntityInfo(entityID string) (*logical.Entity, error) { + reply, err := s.client.EntityInfo(context.Background(), &pb.EntityInfoArgs{ + EntityID: entityID, + }) + if err != nil { + return nil, err + } + if reply.Err != "" { + return nil, errors.New(reply.Err) + } + + return reply.Entity, nil +} + type gRPCSystemViewServer struct { impl logical.SystemView } @@ -216,3 +230,15 @@ func (s *gRPCSystemViewServer) LocalMount(ctx context.Context, _ *pb.Empty) (*pb Local: local, }, nil } + +func (s *gRPCSystemViewServer) EntityInfo(ctx context.Context, args *pb.EntityInfoArgs) (*pb.EntityInfoReply, error) { + entity, err := s.impl.EntityInfo(args.EntityID) + if err != nil { + return &pb.EntityInfoReply{ + Err: pb.ErrToString(err), + }, nil + } + return &pb.EntityInfoReply{ + Entity: entity, + }, nil +} diff --git a/logical/plugin/grpc_system_test.go b/logical/plugin/grpc_system_test.go index 0c75ff96c820..b5f1a99a5a7a 100644 --- a/logical/plugin/grpc_system_test.go +++ b/logical/plugin/grpc_system_test.go @@ -164,3 +164,26 @@ func TestSystem_GRPC_mlockEnabled(t *testing.T) { t.Fatalf("expected: %v, got: %v", expected, actual) } } + +func TestSystem_GRPC_entityInfo(t *testing.T) { + sys := logical.TestSystemView() + sys.EntityVal = &logical.Entity{ + ID: "id", + Name: "name", + } + client, _ := plugin.TestGRPCConn(t, func(s *grpc.Server) { + pb.RegisterSystemViewServer(s, &gRPCSystemViewServer{ + impl: sys, + }) + }) + defer client.Close() + testSystemView := newGRPCSystemView(client) + + actual, err := testSystemView.EntityInfo("") + if err != nil { + t.Fatal(err) + } + if sys.EntityVal.ID != actual.ID || sys.EntityVal.Name != actual.Name { + t.Fatalf("expected: %v, got: %v", sys.EntityVal, actual) + } +} diff --git a/logical/plugin/pb/backend.pb.go b/logical/plugin/pb/backend.pb.go index ea76ad658046..5187c3c817c5 100644 --- a/logical/plugin/pb/backend.pb.go +++ b/logical/plugin/pb/backend.pb.go @@ -7,6 +7,7 @@ import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" import timestamp "github.com/golang/protobuf/ptypes/timestamp" +import logical "github.com/hashicorp/vault/logical" import ( context "golang.org/x/net/context" @@ -34,7 +35,7 @@ func (m *Empty) Reset() { *m = Empty{} } func (m *Empty) String() string { return proto.CompactTextString(m) } func (*Empty) ProtoMessage() {} func (*Empty) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{0} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{0} } func (m *Empty) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Empty.Unmarshal(m, b) @@ -65,7 +66,7 @@ func (m *Header) Reset() { *m = Header{} } func (m *Header) String() string { return proto.CompactTextString(m) } func (*Header) ProtoMessage() {} func (*Header) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{1} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{1} } func (m *Header) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Header.Unmarshal(m, b) @@ -116,7 +117,7 @@ func (m *ProtoError) Reset() { *m = ProtoError{} } func (m *ProtoError) String() string { return proto.CompactTextString(m) } func (*ProtoError) ProtoMessage() {} func (*ProtoError) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{2} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{2} } func (m *ProtoError) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoError.Unmarshal(m, b) @@ -179,7 +180,7 @@ func (m *Paths) Reset() { *m = Paths{} } func (m *Paths) String() string { return proto.CompactTextString(m) } func (*Paths) ProtoMessage() {} func (*Paths) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{3} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{3} } func (m *Paths) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Paths.Unmarshal(m, b) @@ -303,7 +304,7 @@ func (m *Request) Reset() { *m = Request{} } func (m *Request) String() string { return proto.CompactTextString(m) } func (*Request) ProtoMessage() {} func (*Request) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{4} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{4} } func (m *Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Request.Unmarshal(m, b) @@ -463,64 +464,6 @@ func (m *Request) GetConnection() *Connection { return nil } -type Alias struct { - // MountType is the backend mount's type to which this identity belongs - MountType string `sentinel:"" protobuf:"bytes,1,opt,name=mount_type,json=mountType" json:"mount_type,omitempty"` - // MountAccessor is the identifier of the mount entry to which this - // identity belongs - MountAccessor string `sentinel:"" protobuf:"bytes,2,opt,name=mount_accessor,json=mountAccessor" json:"mount_accessor,omitempty"` - // Name is the identifier of this identity in its authentication source - Name string `sentinel:"" protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Alias) Reset() { *m = Alias{} } -func (m *Alias) String() string { return proto.CompactTextString(m) } -func (*Alias) ProtoMessage() {} -func (*Alias) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{5} -} -func (m *Alias) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Alias.Unmarshal(m, b) -} -func (m *Alias) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Alias.Marshal(b, m, deterministic) -} -func (dst *Alias) XXX_Merge(src proto.Message) { - xxx_messageInfo_Alias.Merge(dst, src) -} -func (m *Alias) XXX_Size() int { - return xxx_messageInfo_Alias.Size(m) -} -func (m *Alias) XXX_DiscardUnknown() { - xxx_messageInfo_Alias.DiscardUnknown(m) -} - -var xxx_messageInfo_Alias proto.InternalMessageInfo - -func (m *Alias) GetMountType() string { - if m != nil { - return m.MountType - } - return "" -} - -func (m *Alias) GetMountAccessor() string { - if m != nil { - return m.MountAccessor - } - return "" -} - -func (m *Alias) GetName() string { - if m != nil { - return m.Name - } - return "" -} - type Auth struct { LeaseOptions *LeaseOptions `sentinel:"" protobuf:"bytes,1,opt,name=lease_options,json=leaseOptions" json:"lease_options,omitempty"` // InternalData is a JSON object that is stored with the auth struct. @@ -562,12 +505,12 @@ type Auth struct { EntityID string `sentinel:"" protobuf:"bytes,10,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` // Alias is the information about the authenticated client returned by // the auth backend - Alias *Alias `sentinel:"" protobuf:"bytes,11,opt,name=alias" json:"alias,omitempty"` + Alias *logical.Alias `sentinel:"" protobuf:"bytes,11,opt,name=alias" json:"alias,omitempty"` // GroupAliases are the informational mappings of external groups which an // authenticated user belongs to. This is used to check if there are // mappings groups for the group aliases in identity store. For all the // matching groups, the entity ID of the user will be added. - GroupAliases []*Alias `sentinel:"" protobuf:"bytes,12,rep,name=group_aliases,json=groupAliases" json:"group_aliases,omitempty"` + GroupAliases []*logical.Alias `sentinel:"" protobuf:"bytes,12,rep,name=group_aliases,json=groupAliases" json:"group_aliases,omitempty"` // If set, restricts usage of the certificates to client IPs falling within // the range of the specified CIDR(s). BoundCidrs []string `sentinel:"" protobuf:"bytes,13,rep,name=bound_cidrs,json=boundCidrs" json:"bound_cidrs,omitempty"` @@ -580,7 +523,7 @@ func (m *Auth) Reset() { *m = Auth{} } func (m *Auth) String() string { return proto.CompactTextString(m) } func (*Auth) ProtoMessage() {} func (*Auth) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{6} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{5} } func (m *Auth) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Auth.Unmarshal(m, b) @@ -670,14 +613,14 @@ func (m *Auth) GetEntityID() string { return "" } -func (m *Auth) GetAlias() *Alias { +func (m *Auth) GetAlias() *logical.Alias { if m != nil { return m.Alias } return nil } -func (m *Auth) GetGroupAliases() []*Alias { +func (m *Auth) GetGroupAliases() []*logical.Alias { if m != nil { return m.GroupAliases } @@ -706,7 +649,7 @@ func (m *LeaseOptions) Reset() { *m = LeaseOptions{} } func (m *LeaseOptions) String() string { return proto.CompactTextString(m) } func (*LeaseOptions) ProtoMessage() {} func (*LeaseOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{7} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{6} } func (m *LeaseOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LeaseOptions.Unmarshal(m, b) @@ -780,7 +723,7 @@ func (m *Secret) Reset() { *m = Secret{} } func (m *Secret) String() string { return proto.CompactTextString(m) } func (*Secret) ProtoMessage() {} func (*Secret) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{8} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{7} } func (m *Secret) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Secret.Unmarshal(m, b) @@ -851,7 +794,7 @@ func (m *Response) Reset() { *m = Response{} } func (m *Response) String() string { return proto.CompactTextString(m) } func (*Response) ProtoMessage() {} func (*Response) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{9} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{8} } func (m *Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Response.Unmarshal(m, b) @@ -946,7 +889,7 @@ func (m *ResponseWrapInfo) Reset() { *m = ResponseWrapInfo{} } func (m *ResponseWrapInfo) String() string { return proto.CompactTextString(m) } func (*ResponseWrapInfo) ProtoMessage() {} func (*ResponseWrapInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{10} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{9} } func (m *ResponseWrapInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponseWrapInfo.Unmarshal(m, b) @@ -1048,7 +991,7 @@ func (m *RequestWrapInfo) Reset() { *m = RequestWrapInfo{} } func (m *RequestWrapInfo) String() string { return proto.CompactTextString(m) } func (*RequestWrapInfo) ProtoMessage() {} func (*RequestWrapInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{11} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{10} } func (m *RequestWrapInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestWrapInfo.Unmarshal(m, b) @@ -1102,7 +1045,7 @@ func (m *HandleRequestArgs) Reset() { *m = HandleRequestArgs{} } func (m *HandleRequestArgs) String() string { return proto.CompactTextString(m) } func (*HandleRequestArgs) ProtoMessage() {} func (*HandleRequestArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{12} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{11} } func (m *HandleRequestArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HandleRequestArgs.Unmarshal(m, b) @@ -1149,7 +1092,7 @@ func (m *HandleRequestReply) Reset() { *m = HandleRequestReply{} } func (m *HandleRequestReply) String() string { return proto.CompactTextString(m) } func (*HandleRequestReply) ProtoMessage() {} func (*HandleRequestReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{13} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{12} } func (m *HandleRequestReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HandleRequestReply.Unmarshal(m, b) @@ -1195,7 +1138,7 @@ func (m *SpecialPathsReply) Reset() { *m = SpecialPathsReply{} } func (m *SpecialPathsReply) String() string { return proto.CompactTextString(m) } func (*SpecialPathsReply) ProtoMessage() {} func (*SpecialPathsReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{14} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{13} } func (m *SpecialPathsReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SpecialPathsReply.Unmarshal(m, b) @@ -1235,7 +1178,7 @@ func (m *HandleExistenceCheckArgs) Reset() { *m = HandleExistenceCheckAr func (m *HandleExistenceCheckArgs) String() string { return proto.CompactTextString(m) } func (*HandleExistenceCheckArgs) ProtoMessage() {} func (*HandleExistenceCheckArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{15} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{14} } func (m *HandleExistenceCheckArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HandleExistenceCheckArgs.Unmarshal(m, b) @@ -1283,7 +1226,7 @@ func (m *HandleExistenceCheckReply) Reset() { *m = HandleExistenceCheckR func (m *HandleExistenceCheckReply) String() string { return proto.CompactTextString(m) } func (*HandleExistenceCheckReply) ProtoMessage() {} func (*HandleExistenceCheckReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{16} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{15} } func (m *HandleExistenceCheckReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HandleExistenceCheckReply.Unmarshal(m, b) @@ -1338,7 +1281,7 @@ func (m *SetupArgs) Reset() { *m = SetupArgs{} } func (m *SetupArgs) String() string { return proto.CompactTextString(m) } func (*SetupArgs) ProtoMessage() {} func (*SetupArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{17} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{16} } func (m *SetupArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetupArgs.Unmarshal(m, b) @@ -1391,7 +1334,7 @@ func (m *SetupReply) Reset() { *m = SetupReply{} } func (m *SetupReply) String() string { return proto.CompactTextString(m) } func (*SetupReply) ProtoMessage() {} func (*SetupReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{18} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{17} } func (m *SetupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetupReply.Unmarshal(m, b) @@ -1430,7 +1373,7 @@ func (m *TypeReply) Reset() { *m = TypeReply{} } func (m *TypeReply) String() string { return proto.CompactTextString(m) } func (*TypeReply) ProtoMessage() {} func (*TypeReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{19} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{18} } func (m *TypeReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TypeReply.Unmarshal(m, b) @@ -1468,7 +1411,7 @@ func (m *InvalidateKeyArgs) Reset() { *m = InvalidateKeyArgs{} } func (m *InvalidateKeyArgs) String() string { return proto.CompactTextString(m) } func (*InvalidateKeyArgs) ProtoMessage() {} func (*InvalidateKeyArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{20} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{19} } func (m *InvalidateKeyArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvalidateKeyArgs.Unmarshal(m, b) @@ -1508,7 +1451,7 @@ func (m *StorageEntry) Reset() { *m = StorageEntry{} } func (m *StorageEntry) String() string { return proto.CompactTextString(m) } func (*StorageEntry) ProtoMessage() {} func (*StorageEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{21} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{20} } func (m *StorageEntry) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StorageEntry.Unmarshal(m, b) @@ -1560,7 +1503,7 @@ func (m *StorageListArgs) Reset() { *m = StorageListArgs{} } func (m *StorageListArgs) String() string { return proto.CompactTextString(m) } func (*StorageListArgs) ProtoMessage() {} func (*StorageListArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{22} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{21} } func (m *StorageListArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StorageListArgs.Unmarshal(m, b) @@ -1599,7 +1542,7 @@ func (m *StorageListReply) Reset() { *m = StorageListReply{} } func (m *StorageListReply) String() string { return proto.CompactTextString(m) } func (*StorageListReply) ProtoMessage() {} func (*StorageListReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{23} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{22} } func (m *StorageListReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StorageListReply.Unmarshal(m, b) @@ -1644,7 +1587,7 @@ func (m *StorageGetArgs) Reset() { *m = StorageGetArgs{} } func (m *StorageGetArgs) String() string { return proto.CompactTextString(m) } func (*StorageGetArgs) ProtoMessage() {} func (*StorageGetArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{24} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{23} } func (m *StorageGetArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StorageGetArgs.Unmarshal(m, b) @@ -1683,7 +1626,7 @@ func (m *StorageGetReply) Reset() { *m = StorageGetReply{} } func (m *StorageGetReply) String() string { return proto.CompactTextString(m) } func (*StorageGetReply) ProtoMessage() {} func (*StorageGetReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{25} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{24} } func (m *StorageGetReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StorageGetReply.Unmarshal(m, b) @@ -1728,7 +1671,7 @@ func (m *StoragePutArgs) Reset() { *m = StoragePutArgs{} } func (m *StoragePutArgs) String() string { return proto.CompactTextString(m) } func (*StoragePutArgs) ProtoMessage() {} func (*StoragePutArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{26} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{25} } func (m *StoragePutArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StoragePutArgs.Unmarshal(m, b) @@ -1766,7 +1709,7 @@ func (m *StoragePutReply) Reset() { *m = StoragePutReply{} } func (m *StoragePutReply) String() string { return proto.CompactTextString(m) } func (*StoragePutReply) ProtoMessage() {} func (*StoragePutReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{27} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{26} } func (m *StoragePutReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StoragePutReply.Unmarshal(m, b) @@ -1804,7 +1747,7 @@ func (m *StorageDeleteArgs) Reset() { *m = StorageDeleteArgs{} } func (m *StorageDeleteArgs) String() string { return proto.CompactTextString(m) } func (*StorageDeleteArgs) ProtoMessage() {} func (*StorageDeleteArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{28} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{27} } func (m *StorageDeleteArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StorageDeleteArgs.Unmarshal(m, b) @@ -1842,7 +1785,7 @@ func (m *StorageDeleteReply) Reset() { *m = StorageDeleteReply{} } func (m *StorageDeleteReply) String() string { return proto.CompactTextString(m) } func (*StorageDeleteReply) ProtoMessage() {} func (*StorageDeleteReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{29} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{28} } func (m *StorageDeleteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StorageDeleteReply.Unmarshal(m, b) @@ -1880,7 +1823,7 @@ func (m *TTLReply) Reset() { *m = TTLReply{} } func (m *TTLReply) String() string { return proto.CompactTextString(m) } func (*TTLReply) ProtoMessage() {} func (*TTLReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{30} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{29} } func (m *TTLReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TTLReply.Unmarshal(m, b) @@ -1919,7 +1862,7 @@ func (m *SudoPrivilegeArgs) Reset() { *m = SudoPrivilegeArgs{} } func (m *SudoPrivilegeArgs) String() string { return proto.CompactTextString(m) } func (*SudoPrivilegeArgs) ProtoMessage() {} func (*SudoPrivilegeArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{31} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{30} } func (m *SudoPrivilegeArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SudoPrivilegeArgs.Unmarshal(m, b) @@ -1964,7 +1907,7 @@ func (m *SudoPrivilegeReply) Reset() { *m = SudoPrivilegeReply{} } func (m *SudoPrivilegeReply) String() string { return proto.CompactTextString(m) } func (*SudoPrivilegeReply) ProtoMessage() {} func (*SudoPrivilegeReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{32} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{31} } func (m *SudoPrivilegeReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SudoPrivilegeReply.Unmarshal(m, b) @@ -2002,7 +1945,7 @@ func (m *TaintedReply) Reset() { *m = TaintedReply{} } func (m *TaintedReply) String() string { return proto.CompactTextString(m) } func (*TaintedReply) ProtoMessage() {} func (*TaintedReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{33} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{32} } func (m *TaintedReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaintedReply.Unmarshal(m, b) @@ -2040,7 +1983,7 @@ func (m *CachingDisabledReply) Reset() { *m = CachingDisabledReply{} } func (m *CachingDisabledReply) String() string { return proto.CompactTextString(m) } func (*CachingDisabledReply) ProtoMessage() {} func (*CachingDisabledReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{34} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{33} } func (m *CachingDisabledReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CachingDisabledReply.Unmarshal(m, b) @@ -2078,7 +2021,7 @@ func (m *ReplicationStateReply) Reset() { *m = ReplicationStateReply{} } func (m *ReplicationStateReply) String() string { return proto.CompactTextString(m) } func (*ReplicationStateReply) ProtoMessage() {} func (*ReplicationStateReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{35} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{34} } func (m *ReplicationStateReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReplicationStateReply.Unmarshal(m, b) @@ -2118,7 +2061,7 @@ func (m *ResponseWrapDataArgs) Reset() { *m = ResponseWrapDataArgs{} } func (m *ResponseWrapDataArgs) String() string { return proto.CompactTextString(m) } func (*ResponseWrapDataArgs) ProtoMessage() {} func (*ResponseWrapDataArgs) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{36} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{35} } func (m *ResponseWrapDataArgs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponseWrapDataArgs.Unmarshal(m, b) @@ -2171,7 +2114,7 @@ func (m *ResponseWrapDataReply) Reset() { *m = ResponseWrapDataReply{} } func (m *ResponseWrapDataReply) String() string { return proto.CompactTextString(m) } func (*ResponseWrapDataReply) ProtoMessage() {} func (*ResponseWrapDataReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{37} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{36} } func (m *ResponseWrapDataReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponseWrapDataReply.Unmarshal(m, b) @@ -2216,7 +2159,7 @@ func (m *MlockEnabledReply) Reset() { *m = MlockEnabledReply{} } func (m *MlockEnabledReply) String() string { return proto.CompactTextString(m) } func (*MlockEnabledReply) ProtoMessage() {} func (*MlockEnabledReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{38} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{37} } func (m *MlockEnabledReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MlockEnabledReply.Unmarshal(m, b) @@ -2254,7 +2197,7 @@ func (m *LocalMountReply) Reset() { *m = LocalMountReply{} } func (m *LocalMountReply) String() string { return proto.CompactTextString(m) } func (*LocalMountReply) ProtoMessage() {} func (*LocalMountReply) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{39} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{38} } func (m *LocalMountReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LocalMountReply.Unmarshal(m, b) @@ -2281,6 +2224,90 @@ func (m *LocalMountReply) GetLocal() bool { return false } +type EntityInfoArgs struct { + EntityID string `sentinel:"" protobuf:"bytes,1,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EntityInfoArgs) Reset() { *m = EntityInfoArgs{} } +func (m *EntityInfoArgs) String() string { return proto.CompactTextString(m) } +func (*EntityInfoArgs) ProtoMessage() {} +func (*EntityInfoArgs) Descriptor() ([]byte, []int) { + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{39} +} +func (m *EntityInfoArgs) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_EntityInfoArgs.Unmarshal(m, b) +} +func (m *EntityInfoArgs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_EntityInfoArgs.Marshal(b, m, deterministic) +} +func (dst *EntityInfoArgs) XXX_Merge(src proto.Message) { + xxx_messageInfo_EntityInfoArgs.Merge(dst, src) +} +func (m *EntityInfoArgs) XXX_Size() int { + return xxx_messageInfo_EntityInfoArgs.Size(m) +} +func (m *EntityInfoArgs) XXX_DiscardUnknown() { + xxx_messageInfo_EntityInfoArgs.DiscardUnknown(m) +} + +var xxx_messageInfo_EntityInfoArgs proto.InternalMessageInfo + +func (m *EntityInfoArgs) GetEntityID() string { + if m != nil { + return m.EntityID + } + return "" +} + +type EntityInfoReply struct { + Entity *logical.Entity `sentinel:"" protobuf:"bytes,1,opt,name=entity" json:"entity,omitempty"` + Err string `sentinel:"" protobuf:"bytes,2,opt,name=err" json:"err,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EntityInfoReply) Reset() { *m = EntityInfoReply{} } +func (m *EntityInfoReply) String() string { return proto.CompactTextString(m) } +func (*EntityInfoReply) ProtoMessage() {} +func (*EntityInfoReply) Descriptor() ([]byte, []int) { + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{40} +} +func (m *EntityInfoReply) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_EntityInfoReply.Unmarshal(m, b) +} +func (m *EntityInfoReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_EntityInfoReply.Marshal(b, m, deterministic) +} +func (dst *EntityInfoReply) XXX_Merge(src proto.Message) { + xxx_messageInfo_EntityInfoReply.Merge(dst, src) +} +func (m *EntityInfoReply) XXX_Size() int { + return xxx_messageInfo_EntityInfoReply.Size(m) +} +func (m *EntityInfoReply) XXX_DiscardUnknown() { + xxx_messageInfo_EntityInfoReply.DiscardUnknown(m) +} + +var xxx_messageInfo_EntityInfoReply proto.InternalMessageInfo + +func (m *EntityInfoReply) GetEntity() *logical.Entity { + if m != nil { + return m.Entity + } + return nil +} + +func (m *EntityInfoReply) GetErr() string { + if m != nil { + return m.Err + } + return "" +} + type Connection struct { // RemoteAddr is the network address that sent the request. RemoteAddr string `sentinel:"" protobuf:"bytes,1,opt,name=remote_addr,json=remoteAddr" json:"remote_addr,omitempty"` @@ -2293,7 +2320,7 @@ func (m *Connection) Reset() { *m = Connection{} } func (m *Connection) String() string { return proto.CompactTextString(m) } func (*Connection) ProtoMessage() {} func (*Connection) Descriptor() ([]byte, []int) { - return fileDescriptor_backend_a4dea436a6c1c127, []int{40} + return fileDescriptor_backend_5a7f5d2f43604fb6, []int{41} } func (m *Connection) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Connection.Unmarshal(m, b) @@ -2327,7 +2354,6 @@ func init() { proto.RegisterType((*Paths)(nil), "pb.Paths") proto.RegisterType((*Request)(nil), "pb.Request") proto.RegisterMapType((map[string]*Header)(nil), "pb.Request.HeadersEntry") - proto.RegisterType((*Alias)(nil), "pb.Alias") proto.RegisterType((*Auth)(nil), "pb.Auth") proto.RegisterMapType((map[string]string)(nil), "pb.Auth.MetadataEntry") proto.RegisterType((*LeaseOptions)(nil), "pb.LeaseOptions") @@ -2364,6 +2390,8 @@ func init() { proto.RegisterType((*ResponseWrapDataReply)(nil), "pb.ResponseWrapDataReply") proto.RegisterType((*MlockEnabledReply)(nil), "pb.MlockEnabledReply") proto.RegisterType((*LocalMountReply)(nil), "pb.LocalMountReply") + proto.RegisterType((*EntityInfoArgs)(nil), "pb.EntityInfoArgs") + proto.RegisterType((*EntityInfoReply)(nil), "pb.EntityInfoReply") proto.RegisterType((*Connection)(nil), "pb.Connection") } @@ -2886,6 +2914,8 @@ type SystemViewClient interface { // LocalMount, when run from a system view attached to a request, indicates // whether the request is affecting a local mount or not LocalMount(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*LocalMountReply, error) + // EntityInfo returns the basic entity information for the given entity id + EntityInfo(ctx context.Context, in *EntityInfoArgs, opts ...grpc.CallOption) (*EntityInfoReply, error) } type systemViewClient struct { @@ -2977,6 +3007,15 @@ func (c *systemViewClient) LocalMount(ctx context.Context, in *Empty, opts ...gr return out, nil } +func (c *systemViewClient) EntityInfo(ctx context.Context, in *EntityInfoArgs, opts ...grpc.CallOption) (*EntityInfoReply, error) { + out := new(EntityInfoReply) + err := c.cc.Invoke(ctx, "/pb.SystemView/EntityInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // SystemViewServer is the server API for SystemView service. type SystemViewServer interface { // DefaultLeaseTTL returns the default lease TTL set in Vault configuration @@ -3011,6 +3050,8 @@ type SystemViewServer interface { // LocalMount, when run from a system view attached to a request, indicates // whether the request is affecting a local mount or not LocalMount(context.Context, *Empty) (*LocalMountReply, error) + // EntityInfo returns the basic entity information for the given entity id + EntityInfo(context.Context, *EntityInfoArgs) (*EntityInfoReply, error) } func RegisterSystemViewServer(s *grpc.Server, srv SystemViewServer) { @@ -3179,6 +3220,24 @@ func _SystemView_LocalMount_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _SystemView_EntityInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EntityInfoArgs) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SystemViewServer).EntityInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.SystemView/EntityInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SystemViewServer).EntityInfo(ctx, req.(*EntityInfoArgs)) + } + return interceptor(ctx, in, info, handler) +} + var _SystemView_serviceDesc = grpc.ServiceDesc{ ServiceName: "pb.SystemView", HandlerType: (*SystemViewServer)(nil), @@ -3219,149 +3278,155 @@ var _SystemView_serviceDesc = grpc.ServiceDesc{ MethodName: "LocalMount", Handler: _SystemView_LocalMount_Handler, }, + { + MethodName: "EntityInfo", + Handler: _SystemView_EntityInfo_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "logical/plugin/pb/backend.proto", } func init() { - proto.RegisterFile("logical/plugin/pb/backend.proto", fileDescriptor_backend_a4dea436a6c1c127) -} - -var fileDescriptor_backend_a4dea436a6c1c127 = []byte{ - // 2134 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x5f, 0x6f, 0xdb, 0xc8, - 0x11, 0x87, 0x24, 0x4b, 0xa2, 0x46, 0x92, 0xff, 0x6c, 0x7c, 0x29, 0xa3, 0xcb, 0xd5, 0x2a, 0x0f, - 0xc9, 0xf9, 0x82, 0x46, 0x49, 0xd4, 0x7f, 0xb9, 0x16, 0x77, 0x85, 0xeb, 0xf8, 0x72, 0xee, 0xc5, - 0x77, 0x06, 0xed, 0xf4, 0x5a, 0xb4, 0x80, 0x6e, 0x4d, 0x8e, 0x65, 0xc2, 0x14, 0xc9, 0x2e, 0x97, - 0x49, 0xf4, 0xd4, 0x0f, 0x51, 0xa0, 0x5f, 0xa3, 0xaf, 0x7d, 0xeb, 0x6b, 0x81, 0x3e, 0xf7, 0x13, - 0xf4, 0xbd, 0x9f, 0xa1, 0xd8, 0xd9, 0x25, 0x45, 0x4a, 0x72, 0x93, 0x02, 0xed, 0x1b, 0xe7, 0x37, - 0xb3, 0x3b, 0xbb, 0xb3, 0x33, 0xbf, 0xd9, 0x25, 0xec, 0x85, 0xf1, 0x34, 0xf0, 0x78, 0xf8, 0x28, - 0x09, 0xb3, 0x69, 0x10, 0x3d, 0x4a, 0x2e, 0x1e, 0x5d, 0x70, 0xef, 0x1a, 0x23, 0x7f, 0x94, 0x88, - 0x58, 0xc6, 0xac, 0x9e, 0x5c, 0x0c, 0xf6, 0xa6, 0x71, 0x3c, 0x0d, 0xf1, 0x11, 0x21, 0x17, 0xd9, - 0xe5, 0x23, 0x19, 0xcc, 0x30, 0x95, 0x7c, 0x96, 0x68, 0x23, 0xa7, 0x0d, 0xcd, 0xa3, 0x59, 0x22, - 0xe7, 0xce, 0x10, 0x5a, 0x5f, 0x20, 0xf7, 0x51, 0xb0, 0xdb, 0xd0, 0xba, 0xa2, 0x2f, 0xbb, 0x36, - 0x6c, 0xec, 0x77, 0x5c, 0x23, 0x39, 0xbf, 0x05, 0x38, 0x55, 0x63, 0x8e, 0x84, 0x88, 0x05, 0xbb, - 0x03, 0x16, 0x0a, 0x31, 0x91, 0xf3, 0x04, 0xed, 0xda, 0xb0, 0xb6, 0xdf, 0x77, 0xdb, 0x28, 0xc4, - 0xf9, 0x3c, 0x41, 0xf6, 0x1d, 0x50, 0x9f, 0x93, 0x59, 0x3a, 0xb5, 0xeb, 0xc3, 0x9a, 0x9a, 0x01, - 0x85, 0x38, 0x49, 0xa7, 0xf9, 0x18, 0x2f, 0xf6, 0xd1, 0x6e, 0x0c, 0x6b, 0xfb, 0x0d, 0x1a, 0x73, - 0x18, 0xfb, 0xe8, 0xfc, 0xa9, 0x06, 0xcd, 0x53, 0x2e, 0xaf, 0x52, 0xc6, 0x60, 0x43, 0xc4, 0xb1, - 0x34, 0xce, 0xe9, 0x9b, 0xed, 0xc3, 0x56, 0x16, 0xf1, 0x4c, 0x5e, 0x61, 0x24, 0x03, 0x8f, 0x4b, - 0xf4, 0xed, 0x3a, 0xa9, 0x97, 0x61, 0xf6, 0x21, 0xf4, 0xc3, 0xd8, 0xe3, 0xe1, 0x24, 0x95, 0xb1, - 0xe0, 0x53, 0xe5, 0x47, 0xd9, 0xf5, 0x08, 0x3c, 0xd3, 0x18, 0x7b, 0x00, 0x3b, 0x29, 0xf2, 0x70, - 0xf2, 0x5a, 0xf0, 0xa4, 0x30, 0xdc, 0xd0, 0x13, 0x2a, 0xc5, 0x37, 0x82, 0x27, 0xc6, 0xd6, 0xf9, - 0x6b, 0x0b, 0xda, 0x2e, 0xfe, 0x3e, 0xc3, 0x54, 0xb2, 0x4d, 0xa8, 0x07, 0x3e, 0xed, 0xb6, 0xe3, - 0xd6, 0x03, 0x9f, 0x8d, 0x80, 0xb9, 0x98, 0x84, 0xca, 0x75, 0x10, 0x47, 0x87, 0x61, 0x96, 0x4a, - 0x14, 0x66, 0xcf, 0x6b, 0x34, 0xec, 0x2e, 0x74, 0xe2, 0x04, 0x05, 0x61, 0x14, 0x80, 0x8e, 0xbb, - 0x00, 0xd4, 0xc6, 0x13, 0x2e, 0xaf, 0xec, 0x0d, 0x52, 0xd0, 0xb7, 0xc2, 0x7c, 0x2e, 0xb9, 0xdd, - 0xd4, 0x98, 0xfa, 0x66, 0x0e, 0xb4, 0x52, 0xf4, 0x04, 0x4a, 0xbb, 0x35, 0xac, 0xed, 0x77, 0xc7, - 0x30, 0x4a, 0x2e, 0x46, 0x67, 0x84, 0xb8, 0x46, 0xc3, 0xee, 0xc2, 0x86, 0x8a, 0x8b, 0xdd, 0x26, - 0x0b, 0x4b, 0x59, 0x1c, 0x64, 0xf2, 0xca, 0x25, 0x94, 0x8d, 0xa1, 0xad, 0xcf, 0x34, 0xb5, 0xad, - 0x61, 0x63, 0xbf, 0x3b, 0xb6, 0x95, 0x81, 0xd9, 0xe5, 0x48, 0xa7, 0x41, 0x7a, 0x14, 0x49, 0x31, - 0x77, 0x73, 0x43, 0xf6, 0x3d, 0xe8, 0x79, 0x61, 0x80, 0x91, 0x9c, 0xc8, 0xf8, 0x1a, 0x23, 0xbb, - 0x43, 0x2b, 0xea, 0x6a, 0xec, 0x5c, 0x41, 0x6c, 0x0c, 0xef, 0x95, 0x4d, 0x26, 0xdc, 0xf3, 0x30, - 0x4d, 0x63, 0x61, 0x03, 0xd9, 0xde, 0x2a, 0xd9, 0x1e, 0x18, 0x95, 0x9a, 0xd6, 0x0f, 0xd2, 0x24, - 0xe4, 0xf3, 0x49, 0xc4, 0x67, 0x68, 0x77, 0xf5, 0xb4, 0x06, 0xfb, 0x8a, 0xcf, 0x90, 0xed, 0x41, - 0x77, 0x16, 0x67, 0x91, 0x9c, 0x24, 0x71, 0x10, 0x49, 0xbb, 0x47, 0x16, 0x40, 0xd0, 0xa9, 0x42, - 0xd8, 0x07, 0xa0, 0x25, 0x9d, 0x8c, 0x7d, 0x1d, 0x57, 0x42, 0x28, 0x1d, 0xef, 0xc1, 0xa6, 0x56, - 0x17, 0xeb, 0xd9, 0x24, 0x93, 0x3e, 0xa1, 0xc5, 0x4a, 0x1e, 0x43, 0x87, 0xf2, 0x21, 0x88, 0x2e, - 0x63, 0x7b, 0x8b, 0xe2, 0x76, 0xab, 0x14, 0x16, 0x95, 0x13, 0xc7, 0xd1, 0x65, 0xec, 0x5a, 0xaf, - 0xcd, 0x17, 0xfb, 0x14, 0xde, 0xaf, 0xec, 0x57, 0xe0, 0x8c, 0x07, 0x51, 0x10, 0x4d, 0x27, 0x59, - 0x8a, 0xa9, 0xbd, 0x4d, 0x19, 0x6e, 0x97, 0x76, 0xed, 0xe6, 0x06, 0x2f, 0x53, 0x4c, 0xd9, 0xfb, - 0xd0, 0x51, 0x79, 0x2b, 0xe7, 0x93, 0xc0, 0xb7, 0x77, 0x68, 0x49, 0x96, 0x06, 0x8e, 0x7d, 0xf6, - 0x11, 0x6c, 0x25, 0x71, 0x18, 0x78, 0xf3, 0x49, 0xfc, 0x0a, 0x85, 0x08, 0x7c, 0xb4, 0xd9, 0xb0, - 0xb6, 0x6f, 0xb9, 0x9b, 0x1a, 0xfe, 0xda, 0xa0, 0xeb, 0x4a, 0xe3, 0x16, 0x19, 0xae, 0x94, 0xc6, - 0x08, 0xc0, 0x8b, 0xa3, 0x08, 0x3d, 0x4a, 0xbf, 0x5d, 0xda, 0xe1, 0xa6, 0xda, 0xe1, 0x61, 0x81, - 0xba, 0x25, 0x8b, 0xc1, 0xe7, 0xd0, 0x2b, 0xa7, 0x02, 0xdb, 0x86, 0xc6, 0x35, 0xce, 0x4d, 0xfa, - 0xab, 0x4f, 0x36, 0x84, 0xe6, 0x2b, 0x1e, 0x66, 0x48, 0x29, 0x6f, 0x12, 0x51, 0x0f, 0x71, 0xb5, - 0xe2, 0xa7, 0xf5, 0xa7, 0x35, 0x87, 0x43, 0xf3, 0x20, 0x0c, 0x78, 0xba, 0x74, 0x4e, 0xb5, 0xb7, - 0x9f, 0x53, 0x7d, 0xdd, 0x39, 0x31, 0xd8, 0xa0, 0x4c, 0xd1, 0xf5, 0x43, 0xdf, 0xce, 0x1f, 0x37, - 0x60, 0x43, 0xe5, 0x37, 0xfb, 0x11, 0xf4, 0x43, 0xe4, 0x29, 0x4e, 0xe2, 0x44, 0xed, 0x21, 0x25, - 0x2f, 0xdd, 0xf1, 0xb6, 0x5a, 0xd9, 0x0b, 0xa5, 0xf8, 0x5a, 0xe3, 0x6e, 0x2f, 0x2c, 0x49, 0x8a, - 0x35, 0x82, 0x48, 0xa2, 0x88, 0x78, 0x38, 0xa1, 0x7a, 0xd3, 0x9e, 0x7b, 0x39, 0xf8, 0x4c, 0xd5, - 0xdd, 0x72, 0xaa, 0x36, 0x56, 0x53, 0x75, 0x00, 0x16, 0x1d, 0x4f, 0x80, 0xa9, 0xe1, 0x93, 0x42, - 0x66, 0x63, 0xb0, 0x66, 0x28, 0xb9, 0x29, 0x67, 0x55, 0x75, 0xb7, 0xf3, 0xb2, 0x1c, 0x9d, 0x18, - 0x85, 0xae, 0xb9, 0xc2, 0x6e, 0xa5, 0xe8, 0x5a, 0xab, 0x45, 0x37, 0x00, 0xab, 0x88, 0x57, 0x5b, - 0x27, 0x51, 0x2e, 0x2b, 0x26, 0x4f, 0x50, 0x04, 0xb1, 0x6f, 0x5b, 0x94, 0x8b, 0x46, 0x52, 0x3c, - 0x1c, 0x65, 0x33, 0x9d, 0xa5, 0x1d, 0xcd, 0xc3, 0x51, 0x36, 0x5b, 0x4d, 0x4a, 0x58, 0x4a, 0xca, - 0x3d, 0x68, 0x72, 0x75, 0x92, 0x54, 0xa5, 0xdd, 0x71, 0x87, 0xd6, 0xaf, 0x00, 0x57, 0xe3, 0x6c, - 0x04, 0xfd, 0xa9, 0x88, 0xb3, 0x64, 0x42, 0x22, 0xa6, 0x76, 0x8f, 0x36, 0x5a, 0x32, 0xec, 0x91, - 0xfe, 0x40, 0xab, 0x55, 0x69, 0x5f, 0xc4, 0x59, 0xe4, 0x4f, 0xbc, 0xc0, 0x17, 0xa9, 0xdd, 0xa7, - 0x90, 0x01, 0x41, 0x87, 0x0a, 0x19, 0xfc, 0x0c, 0xfa, 0x95, 0xd8, 0xac, 0x49, 0xc2, 0xdd, 0x72, - 0x12, 0x76, 0xca, 0x89, 0xf7, 0xe7, 0x1a, 0xf4, 0xca, 0x87, 0xae, 0x06, 0x9f, 0x9f, 0xbf, 0xa0, - 0xc1, 0x0d, 0x57, 0x7d, 0x2a, 0x46, 0x16, 0x18, 0xe1, 0x6b, 0x7e, 0x11, 0xea, 0x09, 0x2c, 0x77, - 0x01, 0x28, 0x6d, 0x10, 0x79, 0x02, 0x67, 0x18, 0x49, 0xd3, 0xb0, 0x16, 0x00, 0xfb, 0x04, 0x20, - 0x48, 0xd3, 0x0c, 0x27, 0xaa, 0xa7, 0x12, 0x6b, 0x77, 0xc7, 0x83, 0x91, 0x6e, 0xb8, 0xa3, 0xbc, - 0xe1, 0x8e, 0xce, 0xf3, 0x86, 0xeb, 0x76, 0xc8, 0x5a, 0xc9, 0xea, 0x60, 0x4e, 0xf8, 0x1b, 0xb5, - 0x96, 0xa6, 0x3e, 0x18, 0x2d, 0x39, 0x7f, 0x80, 0x96, 0x26, 0xf2, 0xff, 0x6b, 0x22, 0xdf, 0x01, - 0x4b, 0xcf, 0x1d, 0xf8, 0x26, 0x89, 0xdb, 0x24, 0x1f, 0xfb, 0xce, 0xdf, 0x6b, 0x60, 0xb9, 0x98, - 0x26, 0x71, 0x94, 0x62, 0xa9, 0xd1, 0xd4, 0xde, 0xda, 0x68, 0xea, 0x6b, 0x1b, 0x4d, 0xde, 0xbe, - 0x1a, 0xa5, 0xf6, 0x35, 0x00, 0x4b, 0xa0, 0x1f, 0x08, 0xf4, 0xa4, 0x69, 0x75, 0x85, 0xac, 0x74, - 0xaf, 0xb9, 0x50, 0x0c, 0x99, 0x52, 0x8d, 0x74, 0xdc, 0x42, 0x66, 0x4f, 0xca, 0xfc, 0xac, 0x3b, - 0xdf, 0xae, 0xe6, 0x67, 0xbd, 0xdc, 0x55, 0x82, 0x76, 0xfe, 0x56, 0x87, 0xed, 0x65, 0xf5, 0x9a, - 0x24, 0xd8, 0x85, 0xa6, 0x2e, 0x2f, 0x93, 0x41, 0x72, 0xa5, 0xb0, 0x1a, 0x4b, 0x85, 0xf5, 0x73, - 0xe8, 0x7b, 0x02, 0xa9, 0x6d, 0xbf, 0xeb, 0xe9, 0xf7, 0xf2, 0x01, 0x94, 0x00, 0x1f, 0xc3, 0xb6, - 0x5a, 0x65, 0x82, 0xfe, 0x82, 0xed, 0x74, 0x8f, 0xdf, 0x32, 0x78, 0xc1, 0x77, 0x0f, 0x60, 0x27, - 0x37, 0x5d, 0x54, 0x66, 0xab, 0x62, 0x7b, 0x94, 0x17, 0xe8, 0x6d, 0x68, 0x5d, 0xc6, 0x62, 0xc6, - 0xa5, 0xa1, 0x02, 0x23, 0xa9, 0xb4, 0x28, 0xd6, 0x4b, 0x77, 0x0c, 0x4b, 0xa7, 0x45, 0x0e, 0xaa, - 0x9b, 0x97, 0x2a, 0xfd, 0xe2, 0x56, 0x44, 0xb4, 0x60, 0xb9, 0x56, 0x7e, 0x1b, 0x72, 0x7e, 0x0d, - 0x5b, 0x4b, 0x8d, 0x70, 0x4d, 0x20, 0x17, 0xee, 0xeb, 0x15, 0xf7, 0x95, 0x99, 0x1b, 0x4b, 0x33, - 0xff, 0x06, 0x76, 0xbe, 0xe0, 0x91, 0x1f, 0xa2, 0x99, 0xff, 0x40, 0x4c, 0xa9, 0x55, 0x98, 0x7b, - 0xd9, 0xc4, 0xdc, 0xb8, 0xfa, 0x6e, 0xc7, 0x20, 0xc7, 0x3e, 0xbb, 0x07, 0x6d, 0xa1, 0xad, 0x4d, - 0xe2, 0x75, 0x4b, 0x9d, 0xda, 0xcd, 0x75, 0xce, 0xb7, 0xc0, 0x2a, 0x53, 0xab, 0x2b, 0xd9, 0x9c, - 0xed, 0xab, 0x04, 0xd4, 0x49, 0x61, 0x12, 0xbb, 0x57, 0xce, 0x23, 0xb7, 0xd0, 0xb2, 0x21, 0x34, - 0x50, 0x08, 0xe3, 0x82, 0x5a, 0xe5, 0xe2, 0x02, 0xec, 0x2a, 0x95, 0xf3, 0x43, 0xd8, 0x39, 0x4b, - 0xd0, 0x0b, 0x78, 0x48, 0x97, 0x57, 0xed, 0x60, 0x0f, 0x9a, 0x2a, 0xc8, 0x79, 0xcd, 0x12, 0xfb, - 0x69, 0xb5, 0xc6, 0x9d, 0x6f, 0xc1, 0xd6, 0xeb, 0x3a, 0x7a, 0x13, 0xa4, 0x12, 0x23, 0x0f, 0x0f, - 0xaf, 0xd0, 0xbb, 0xfe, 0x1f, 0xee, 0xfc, 0x15, 0xdc, 0x59, 0xe7, 0x21, 0x5f, 0x5f, 0xd7, 0x53, - 0xd2, 0xe4, 0x52, 0x11, 0x2d, 0xf9, 0xb0, 0x5c, 0x20, 0xe8, 0x73, 0x85, 0xa8, 0x73, 0x44, 0x35, - 0x2e, 0x35, 0x94, 0x68, 0xa4, 0x3c, 0x1e, 0x8d, 0x9b, 0xe3, 0xf1, 0x97, 0x1a, 0x74, 0xce, 0x50, - 0x66, 0x09, 0xed, 0xe5, 0x7d, 0xe8, 0x5c, 0x88, 0xf8, 0x1a, 0xc5, 0x62, 0x2b, 0x96, 0x06, 0x8e, - 0x7d, 0xf6, 0x04, 0x5a, 0x87, 0x71, 0x74, 0x19, 0x4c, 0xe9, 0x2a, 0xdf, 0x1d, 0xdf, 0xd1, 0xec, - 0x62, 0xc6, 0x8e, 0xb4, 0x4e, 0x37, 0x44, 0x63, 0xc8, 0x86, 0xd0, 0x35, 0x4f, 0x9c, 0x97, 0x2f, - 0x8f, 0x9f, 0xe5, 0x0d, 0xb8, 0x04, 0x0d, 0x3e, 0x81, 0x6e, 0x69, 0xe0, 0x7f, 0xd5, 0x2d, 0xbe, - 0x0b, 0x40, 0xde, 0x75, 0x8c, 0xb6, 0xf5, 0x56, 0xcd, 0x48, 0xb5, 0xb5, 0x3d, 0xe8, 0xa8, 0x6b, - 0x8a, 0x56, 0x33, 0xd8, 0x28, 0xbd, 0x7c, 0xe8, 0xdb, 0xb9, 0x07, 0x3b, 0xc7, 0xd1, 0x2b, 0x1e, - 0x06, 0x3e, 0x97, 0xf8, 0x25, 0xce, 0x29, 0x04, 0x2b, 0x2b, 0x70, 0xce, 0xa0, 0x67, 0xde, 0x16, - 0xef, 0xb4, 0xc6, 0x9e, 0x59, 0xe3, 0x7f, 0x2e, 0xa2, 0x8f, 0x61, 0xcb, 0x4c, 0xfa, 0x22, 0x30, - 0x25, 0xa4, 0x9a, 0xbf, 0xc0, 0xcb, 0xe0, 0x8d, 0x99, 0xda, 0x48, 0xce, 0x53, 0xd8, 0x2e, 0x99, - 0x16, 0xdb, 0xb9, 0xc6, 0x79, 0x9a, 0xbf, 0xb9, 0xd4, 0x77, 0x1e, 0x81, 0xfa, 0x22, 0x02, 0x0e, - 0x6c, 0x9a, 0x91, 0xcf, 0x51, 0xde, 0xb0, 0xbb, 0x2f, 0x8b, 0x85, 0x3c, 0x47, 0x33, 0xf9, 0x7d, - 0x68, 0xa2, 0xda, 0x69, 0xb9, 0x85, 0x95, 0x23, 0xe0, 0x6a, 0xf5, 0x1a, 0x87, 0x4f, 0x0b, 0x87, - 0xa7, 0x99, 0x76, 0xf8, 0x8e, 0x73, 0x39, 0x1f, 0x16, 0xcb, 0x38, 0xcd, 0xe4, 0x4d, 0x27, 0x7a, - 0x0f, 0x76, 0x8c, 0xd1, 0x33, 0x0c, 0x51, 0xe2, 0x0d, 0x5b, 0xba, 0x0f, 0xac, 0x62, 0x76, 0xd3, - 0x74, 0x77, 0xc1, 0x3a, 0x3f, 0x7f, 0x51, 0x68, 0xab, 0xdc, 0xe8, 0x7c, 0x0a, 0x3b, 0x67, 0x99, - 0x1f, 0x9f, 0x8a, 0xe0, 0x55, 0x10, 0xe2, 0x54, 0x3b, 0xcb, 0x9f, 0x7c, 0xb5, 0xd2, 0x93, 0x6f, - 0x6d, 0x37, 0x72, 0xf6, 0x81, 0x55, 0x86, 0x17, 0xe7, 0x96, 0x66, 0x7e, 0x6c, 0x4a, 0x98, 0xbe, - 0x9d, 0x7d, 0xe8, 0x9d, 0x73, 0xd5, 0xef, 0x7d, 0x6d, 0x63, 0x43, 0x5b, 0x6a, 0xd9, 0x98, 0xe5, - 0xa2, 0x33, 0x86, 0xdd, 0x43, 0xee, 0x5d, 0x05, 0xd1, 0xf4, 0x59, 0x90, 0xaa, 0x0b, 0x8f, 0x19, - 0x31, 0x00, 0xcb, 0x37, 0x80, 0x19, 0x52, 0xc8, 0xce, 0x43, 0x78, 0xaf, 0xf4, 0xb0, 0x3d, 0x93, - 0x3c, 0x8f, 0xc7, 0x2e, 0x34, 0x53, 0x25, 0xd1, 0x88, 0xa6, 0xab, 0x05, 0xe7, 0x2b, 0xd8, 0x2d, - 0x37, 0x60, 0x75, 0xfd, 0xc8, 0x37, 0x4e, 0x17, 0x83, 0x5a, 0xe9, 0x62, 0x60, 0x62, 0x56, 0x5f, - 0xf4, 0x93, 0x6d, 0x68, 0xfc, 0xf2, 0x9b, 0x73, 0x93, 0xec, 0xea, 0xd3, 0xf9, 0x9d, 0x72, 0x5f, - 0x9d, 0x4f, 0xbb, 0xaf, 0xdc, 0x0e, 0x6a, 0xef, 0x72, 0x3b, 0x58, 0x93, 0x6f, 0x0f, 0x61, 0xe7, - 0x24, 0x8c, 0xbd, 0xeb, 0xa3, 0xa8, 0x14, 0x0d, 0x1b, 0xda, 0x18, 0x95, 0x83, 0x91, 0x8b, 0xce, - 0x47, 0xb0, 0xf5, 0x22, 0xf6, 0x78, 0x78, 0xa2, 0xde, 0x27, 0x45, 0x14, 0xe8, 0x4f, 0x83, 0x31, - 0xd5, 0x82, 0xf3, 0x10, 0x60, 0xf1, 0xc6, 0x52, 0xf4, 0x2b, 0x70, 0x16, 0x4b, 0x9c, 0x70, 0xdf, - 0xcf, 0x33, 0x08, 0x34, 0x74, 0xe0, 0xfb, 0x62, 0xfc, 0xaf, 0x3a, 0xb4, 0x7f, 0xa1, 0x49, 0x8d, - 0x7d, 0x06, 0xfd, 0x4a, 0x0b, 0x63, 0xef, 0xd1, 0x23, 0x6b, 0xb9, 0x61, 0x0e, 0x6e, 0xaf, 0xc0, - 0x7a, 0x41, 0x8f, 0xa1, 0x57, 0x6e, 0x50, 0x8c, 0x9a, 0x11, 0xfd, 0xf1, 0x19, 0xd0, 0x4c, 0xab, - 0xdd, 0xeb, 0x0c, 0x76, 0xd7, 0xb5, 0x0e, 0x76, 0x77, 0xe1, 0x61, 0xb5, 0x6d, 0x0d, 0x3e, 0xb8, - 0x49, 0x9b, 0xb7, 0x9c, 0xf6, 0x61, 0x88, 0x3c, 0xca, 0x92, 0xf2, 0x0a, 0x16, 0x9f, 0xec, 0x09, - 0xf4, 0x2b, 0xe4, 0xa9, 0xf7, 0xb9, 0xc2, 0xa7, 0xe5, 0x21, 0xf7, 0xa1, 0x49, 0x84, 0xcd, 0xfa, - 0x95, 0xce, 0x31, 0xd8, 0x2c, 0x44, 0xed, 0x7b, 0x08, 0x1b, 0xf4, 0xbe, 0x2c, 0x39, 0xa6, 0x11, - 0x05, 0x9b, 0x8f, 0xff, 0x51, 0x83, 0x76, 0xfe, 0x6f, 0xe8, 0x09, 0x6c, 0x28, 0x5e, 0x64, 0xb7, - 0x4a, 0xd4, 0x92, 0x73, 0xea, 0x60, 0x77, 0x09, 0xd4, 0x0e, 0x46, 0xd0, 0x78, 0x8e, 0x92, 0xb1, - 0x92, 0xd2, 0x10, 0xe4, 0xe0, 0x56, 0x15, 0x2b, 0xec, 0x4f, 0xb3, 0xaa, 0xbd, 0xe1, 0xb7, 0x8a, - 0x7d, 0xc1, 0x5c, 0x3f, 0x81, 0x96, 0x66, 0x1e, 0x1d, 0x94, 0x15, 0xce, 0xd2, 0x87, 0xbf, 0xca, - 0x51, 0xe3, 0x7f, 0x36, 0x00, 0xce, 0xe6, 0xa9, 0xc4, 0xd9, 0xaf, 0x02, 0x7c, 0xcd, 0x1e, 0xc0, - 0xd6, 0x33, 0xbc, 0xe4, 0x59, 0x28, 0xe9, 0x05, 0xa1, 0x2a, 0xac, 0x14, 0x13, 0xba, 0x04, 0x15, - 0x04, 0x76, 0x1f, 0xba, 0x27, 0xfc, 0xcd, 0xdb, 0xed, 0x3e, 0x83, 0x7e, 0x85, 0x97, 0xcc, 0x12, - 0x97, 0x99, 0xce, 0x2c, 0x71, 0x95, 0xc1, 0xee, 0x43, 0xdb, 0xb0, 0x55, 0xd9, 0x07, 0xf1, 0x7a, - 0x85, 0xc5, 0x7e, 0x0c, 0x5b, 0x4b, 0x5c, 0x55, 0xb6, 0xa7, 0xff, 0x57, 0x6b, 0xb9, 0xec, 0xa9, - 0x7a, 0x01, 0x54, 0xf9, 0xaa, 0x3c, 0xf0, 0x8e, 0xe6, 0x88, 0x75, 0x84, 0xf6, 0xbc, 0xfa, 0x76, - 0xa0, 0x97, 0x93, 0xbd, 0x4c, 0x29, 0x39, 0xa1, 0xe5, 0x13, 0xad, 0xa3, 0xa6, 0xc7, 0xd0, 0x2b, - 0xb3, 0xca, 0x4a, 0x09, 0xae, 0x52, 0xce, 0xf7, 0x01, 0x16, 0xc4, 0x52, 0xb6, 0xa7, 0xf4, 0x58, - 0xe2, 0x9c, 0x8b, 0x16, 0xbd, 0x36, 0x7e, 0xf0, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x48, - 0x91, 0x8a, 0x11, 0x16, 0x00, 0x00, + proto.RegisterFile("logical/plugin/pb/backend.proto", fileDescriptor_backend_5a7f5d2f43604fb6) +} + +var fileDescriptor_backend_5a7f5d2f43604fb6 = []byte{ + // 2171 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x5f, 0x73, 0xe3, 0x48, + 0x11, 0x2f, 0xff, 0x97, 0xdb, 0x76, 0x9c, 0xcc, 0x66, 0x83, 0xe2, 0xdd, 0x23, 0x46, 0xc7, 0x66, + 0x7d, 0x5b, 0xac, 0xb3, 0xeb, 0xe3, 0x60, 0x0f, 0xea, 0x8e, 0x0a, 0x49, 0x6e, 0x2f, 0x5c, 0x72, + 0x97, 0x52, 0xb2, 0x1c, 0x14, 0x54, 0xf9, 0x26, 0x52, 0xc7, 0x51, 0x45, 0x96, 0xc4, 0x68, 0x94, + 0xac, 0x9f, 0xf8, 0x16, 0x3c, 0x50, 0xc5, 0x67, 0xe0, 0x95, 0x37, 0x5e, 0xa9, 0xe2, 0x99, 0xaf, + 0xc1, 0x67, 0xa0, 0xe6, 0x8f, 0x64, 0xc9, 0x76, 0xb8, 0xa5, 0x8a, 0x7b, 0x9b, 0xfe, 0x37, 0x3d, + 0xdd, 0xea, 0xfe, 0xf5, 0x8c, 0x60, 0xc7, 0x0f, 0x27, 0x9e, 0x43, 0xfd, 0xbd, 0xc8, 0x4f, 0x26, + 0x5e, 0xb0, 0x17, 0x5d, 0xee, 0x5d, 0x52, 0xe7, 0x06, 0x03, 0x77, 0x18, 0xb1, 0x90, 0x87, 0xa4, + 0x1c, 0x5d, 0xf6, 0x76, 0x26, 0x61, 0x38, 0xf1, 0x71, 0x4f, 0x72, 0x2e, 0x93, 0xab, 0x3d, 0xee, + 0x4d, 0x31, 0xe6, 0x74, 0x1a, 0x29, 0xa5, 0xde, 0x56, 0xba, 0x8b, 0xe7, 0x62, 0xc0, 0x3d, 0x3e, + 0x53, 0x7c, 0xab, 0x01, 0xb5, 0xa3, 0x69, 0xc4, 0x67, 0x56, 0x1f, 0xea, 0x9f, 0x23, 0x75, 0x91, + 0x91, 0x2d, 0xa8, 0x5f, 0xcb, 0x95, 0x59, 0xea, 0x57, 0x06, 0x4d, 0x5b, 0x53, 0xd6, 0xef, 0x00, + 0xce, 0x84, 0xcd, 0x11, 0x63, 0x21, 0x23, 0xdb, 0x60, 0x20, 0x63, 0x63, 0x3e, 0x8b, 0xd0, 0x2c, + 0xf5, 0x4b, 0x83, 0x8e, 0xdd, 0x40, 0xc6, 0x2e, 0x66, 0x11, 0x92, 0xef, 0x81, 0x58, 0x8e, 0xa7, + 0xf1, 0xc4, 0x2c, 0xf7, 0x4b, 0x62, 0x07, 0x64, 0xec, 0x34, 0x9e, 0xa4, 0x36, 0x4e, 0xe8, 0xa2, + 0x59, 0xe9, 0x97, 0x06, 0x15, 0x69, 0x73, 0x10, 0xba, 0x68, 0xfd, 0xa9, 0x04, 0xb5, 0x33, 0xca, + 0xaf, 0x63, 0x42, 0xa0, 0xca, 0xc2, 0x90, 0x6b, 0xe7, 0x72, 0x4d, 0x06, 0xd0, 0x4d, 0x02, 0x9a, + 0xf0, 0x6b, 0x71, 0x76, 0x87, 0x72, 0x74, 0xcd, 0xb2, 0x14, 0x2f, 0xb2, 0xc9, 0xfb, 0xd0, 0xf1, + 0x43, 0x87, 0xfa, 0xe3, 0x98, 0x87, 0x8c, 0x4e, 0x84, 0x1f, 0xa1, 0xd7, 0x96, 0xcc, 0x73, 0xc5, + 0x23, 0xcf, 0x60, 0x23, 0x46, 0xea, 0x8f, 0xef, 0x18, 0x8d, 0x32, 0xc5, 0xaa, 0xda, 0x50, 0x08, + 0xbe, 0x66, 0x34, 0xd2, 0xba, 0xd6, 0xdf, 0xeb, 0xd0, 0xb0, 0xf1, 0x0f, 0x09, 0xc6, 0x9c, 0xac, + 0x41, 0xd9, 0x73, 0x65, 0xb4, 0x4d, 0xbb, 0xec, 0xb9, 0x64, 0x08, 0xc4, 0xc6, 0xc8, 0x17, 0xae, + 0xbd, 0x30, 0x38, 0xf0, 0x93, 0x98, 0x23, 0xd3, 0x31, 0xaf, 0x90, 0x90, 0xc7, 0xd0, 0x0c, 0x23, + 0x64, 0x92, 0x27, 0x13, 0xd0, 0xb4, 0xe7, 0x0c, 0x11, 0x78, 0x44, 0xf9, 0xb5, 0x59, 0x95, 0x02, + 0xb9, 0x16, 0x3c, 0x97, 0x72, 0x6a, 0xd6, 0x14, 0x4f, 0xac, 0x89, 0x05, 0xf5, 0x18, 0x1d, 0x86, + 0xdc, 0xac, 0xf7, 0x4b, 0x83, 0xd6, 0x08, 0x86, 0xd1, 0xe5, 0xf0, 0x5c, 0x72, 0x6c, 0x2d, 0x21, + 0x8f, 0xa1, 0x2a, 0xf2, 0x62, 0x36, 0xa4, 0x86, 0x21, 0x34, 0xf6, 0x13, 0x7e, 0x6d, 0x4b, 0x2e, + 0x19, 0x41, 0x43, 0x7d, 0xd3, 0xd8, 0x34, 0xfa, 0x95, 0x41, 0x6b, 0x64, 0x0a, 0x05, 0x1d, 0xe5, + 0x50, 0x95, 0x41, 0x7c, 0x14, 0x70, 0x36, 0xb3, 0x53, 0x45, 0xf2, 0x03, 0x68, 0x3b, 0xbe, 0x87, + 0x01, 0x1f, 0xf3, 0xf0, 0x06, 0x03, 0xb3, 0x29, 0x4f, 0xd4, 0x52, 0xbc, 0x0b, 0xc1, 0x22, 0x23, + 0x78, 0x98, 0x57, 0x19, 0x53, 0xc7, 0xc1, 0x38, 0x0e, 0x99, 0x09, 0x52, 0xf7, 0x41, 0x4e, 0x77, + 0x5f, 0x8b, 0xc4, 0xb6, 0xae, 0x17, 0x47, 0x3e, 0x9d, 0x8d, 0x03, 0x3a, 0x45, 0xb3, 0xa5, 0xb6, + 0xd5, 0xbc, 0x2f, 0xe9, 0x14, 0xc9, 0x0e, 0xb4, 0xa6, 0x61, 0x12, 0xf0, 0x71, 0x14, 0x7a, 0x01, + 0x37, 0xdb, 0x52, 0x03, 0x24, 0xeb, 0x4c, 0x70, 0xc8, 0x7b, 0xa0, 0x28, 0x55, 0x8c, 0x1d, 0x95, + 0x57, 0xc9, 0x91, 0xe5, 0xf8, 0x04, 0xd6, 0x94, 0x38, 0x3b, 0xcf, 0x9a, 0x54, 0xe9, 0x48, 0x6e, + 0x76, 0x92, 0x17, 0xd0, 0x94, 0xf5, 0xe0, 0x05, 0x57, 0xa1, 0xd9, 0x95, 0x79, 0x7b, 0x90, 0x4b, + 0x8b, 0xa8, 0x89, 0xe3, 0xe0, 0x2a, 0xb4, 0x8d, 0x3b, 0xbd, 0x22, 0x9f, 0xc0, 0xa3, 0x42, 0xbc, + 0x0c, 0xa7, 0xd4, 0x0b, 0xbc, 0x60, 0x32, 0x4e, 0x62, 0x8c, 0xcd, 0x75, 0x59, 0xe1, 0x66, 0x2e, + 0x6a, 0x3b, 0x55, 0x78, 0x13, 0x63, 0x4c, 0x1e, 0x41, 0x53, 0xb5, 0xe2, 0xd8, 0x73, 0xcd, 0x0d, + 0x79, 0x24, 0x43, 0x31, 0x8e, 0x5d, 0xf2, 0x14, 0xba, 0x51, 0xe8, 0x7b, 0xce, 0x6c, 0x1c, 0xde, + 0x22, 0x63, 0x9e, 0x8b, 0x26, 0xe9, 0x97, 0x06, 0x86, 0xbd, 0xa6, 0xd8, 0x5f, 0x69, 0xee, 0xaa, + 0xd6, 0x78, 0x20, 0x15, 0x97, 0x5a, 0x63, 0x08, 0xe0, 0x84, 0x41, 0x80, 0x8e, 0x2c, 0xbf, 0x4d, + 0x19, 0xe1, 0x9a, 0x88, 0xf0, 0x20, 0xe3, 0xda, 0x39, 0x8d, 0xde, 0x67, 0xd0, 0xce, 0x97, 0x02, + 0x59, 0x87, 0xca, 0x0d, 0xce, 0x74, 0xf9, 0x8b, 0x25, 0xe9, 0x43, 0xed, 0x96, 0xfa, 0x09, 0xca, + 0x92, 0xd7, 0x85, 0xa8, 0x4c, 0x6c, 0x25, 0xf8, 0x59, 0xf9, 0x55, 0xc9, 0xfa, 0x4b, 0x15, 0xaa, + 0xa2, 0xf8, 0xc8, 0x47, 0xd0, 0xf1, 0x91, 0xc6, 0x38, 0x0e, 0x23, 0xe1, 0x20, 0x96, 0x5b, 0xb5, + 0x46, 0xeb, 0xc2, 0xec, 0x44, 0x08, 0xbe, 0x52, 0x7c, 0xbb, 0xed, 0xe7, 0x28, 0xd1, 0xd2, 0x5e, + 0xc0, 0x91, 0x05, 0xd4, 0x1f, 0xcb, 0x66, 0x50, 0x0d, 0xd6, 0x4e, 0x99, 0x87, 0xa2, 0x29, 0x16, + 0xeb, 0xa8, 0xb2, 0x5c, 0x47, 0x3d, 0x30, 0x64, 0xee, 0x3c, 0x8c, 0x75, 0xb3, 0x67, 0x34, 0x19, + 0x81, 0x31, 0x45, 0x4e, 0x75, 0xaf, 0x89, 0x96, 0xd8, 0x4a, 0x7b, 0x66, 0x78, 0xaa, 0x05, 0xaa, + 0x21, 0x32, 0xbd, 0xa5, 0x8e, 0xa8, 0x2f, 0x77, 0x44, 0x0f, 0x8c, 0xac, 0xe8, 0x1a, 0xea, 0x0b, + 0xa7, 0xb4, 0x80, 0xd9, 0x08, 0x99, 0x17, 0xba, 0xa6, 0x21, 0x0b, 0x45, 0x53, 0x02, 0x24, 0x83, + 0x64, 0xaa, 0x4a, 0xa8, 0xa9, 0x40, 0x32, 0x48, 0xa6, 0xcb, 0x15, 0x03, 0x0b, 0x15, 0xf3, 0x43, + 0xa8, 0x51, 0xdf, 0xa3, 0xb1, 0x6c, 0x21, 0xf1, 0x65, 0x35, 0xe2, 0x0f, 0xf7, 0x05, 0xd7, 0x56, + 0x42, 0xf2, 0x21, 0x74, 0x26, 0x2c, 0x4c, 0xa2, 0xb1, 0x24, 0x31, 0x36, 0xdb, 0x32, 0xda, 0x45, + 0xed, 0xb6, 0x54, 0xda, 0x57, 0x3a, 0xa2, 0x03, 0x2f, 0xc3, 0x24, 0x70, 0xc7, 0x8e, 0xe7, 0xb2, + 0xd8, 0xec, 0xc8, 0xe4, 0x81, 0x64, 0x1d, 0x08, 0x4e, 0xef, 0xe7, 0xd0, 0x29, 0x64, 0x69, 0x45, + 0xad, 0x6c, 0xe6, 0x6b, 0xa5, 0x99, 0xaf, 0x8f, 0xbf, 0x96, 0xa0, 0x9d, 0xff, 0xfc, 0xc2, 0xf8, + 0xe2, 0xe2, 0x44, 0x1a, 0x57, 0x6c, 0xb1, 0x14, 0xc0, 0xc9, 0x30, 0xc0, 0x3b, 0x7a, 0xe9, 0xab, + 0x0d, 0x0c, 0x7b, 0xce, 0x10, 0x52, 0x2f, 0x70, 0x18, 0x4e, 0x31, 0xe0, 0x7a, 0xae, 0xcc, 0x19, + 0xe4, 0x63, 0x00, 0x2f, 0x8e, 0x13, 0x1c, 0x8b, 0x91, 0x28, 0xc1, 0xb5, 0x35, 0xea, 0x0d, 0xd5, + 0xbc, 0x1c, 0xa6, 0xf3, 0x72, 0x78, 0x91, 0xce, 0x4b, 0xbb, 0x29, 0xb5, 0x05, 0x2d, 0x3e, 0xd1, + 0x29, 0x7d, 0x2b, 0xce, 0x52, 0x53, 0x9f, 0x48, 0x51, 0xd6, 0x1f, 0xa1, 0xae, 0xf0, 0xf6, 0x3b, + 0x2d, 0xe9, 0x6d, 0x30, 0xd4, 0xde, 0x9e, 0xab, 0xcb, 0xb9, 0x21, 0xe9, 0x63, 0xd7, 0xfa, 0x67, + 0x09, 0x0c, 0x1b, 0xe3, 0x28, 0x0c, 0x62, 0xcc, 0xcd, 0x83, 0xd2, 0xb7, 0xce, 0x83, 0xf2, 0xca, + 0x79, 0x90, 0x4e, 0x99, 0x4a, 0x6e, 0xca, 0xf4, 0xc0, 0x60, 0xe8, 0x7a, 0x0c, 0x1d, 0xae, 0x27, + 0x52, 0x46, 0x0b, 0xd9, 0x1d, 0x65, 0x02, 0xc8, 0x62, 0xd9, 0x2d, 0x4d, 0x3b, 0xa3, 0xc9, 0xcb, + 0x3c, 0x8c, 0xaa, 0x01, 0xb5, 0xa9, 0x60, 0x54, 0x1d, 0x77, 0x19, 0x47, 0xad, 0x7f, 0x94, 0x61, + 0x7d, 0x51, 0xbc, 0xa2, 0x08, 0x36, 0xa1, 0xa6, 0x1a, 0x4d, 0x57, 0x10, 0x5f, 0x6a, 0xb1, 0xca, + 0x42, 0x8b, 0xfd, 0x02, 0x3a, 0x0e, 0x43, 0x39, 0x5d, 0xdf, 0xf5, 0xeb, 0xb7, 0x53, 0x03, 0x59, + 0x00, 0x1f, 0xc0, 0xba, 0x38, 0x65, 0x84, 0xee, 0x7c, 0x78, 0xa8, 0x51, 0xdc, 0xd5, 0xfc, 0x6c, + 0x7c, 0x3c, 0x83, 0x8d, 0x54, 0x75, 0xde, 0xa3, 0xf5, 0x82, 0xee, 0x51, 0xda, 0xaa, 0x5b, 0x50, + 0xbf, 0x0a, 0xd9, 0x94, 0x72, 0x0d, 0x0a, 0x9a, 0x12, 0x65, 0x91, 0x9d, 0x57, 0x5e, 0x05, 0x0c, + 0x55, 0x16, 0x29, 0x53, 0x5c, 0x90, 0x04, 0x08, 0x64, 0x97, 0x17, 0x09, 0x10, 0x86, 0x6d, 0xa4, + 0x97, 0x16, 0xeb, 0x37, 0xd0, 0x5d, 0x98, 0x57, 0x2b, 0x12, 0x39, 0x77, 0x5f, 0x2e, 0xb8, 0x2f, + 0xec, 0x5c, 0x59, 0xd8, 0xf9, 0xb7, 0xb0, 0xf1, 0x39, 0x0d, 0x5c, 0x1f, 0xf5, 0xfe, 0xfb, 0x6c, + 0x12, 0x8b, 0xc9, 0xab, 0xaf, 0x4f, 0x63, 0x7d, 0x31, 0xea, 0xd8, 0x4d, 0xcd, 0x39, 0x76, 0xc9, + 0x13, 0x68, 0x30, 0xa5, 0xad, 0x0b, 0xaf, 0x95, 0x1b, 0xa8, 0x76, 0x2a, 0xb3, 0xbe, 0x01, 0x52, + 0xd8, 0x5a, 0xdc, 0x9c, 0x66, 0x64, 0x20, 0x0a, 0x50, 0x15, 0x85, 0x2e, 0xec, 0x76, 0xbe, 0x8e, + 0xec, 0x4c, 0x4a, 0xfa, 0x50, 0x41, 0xc6, 0xb4, 0x0b, 0x39, 0xd1, 0xe6, 0xf7, 0x54, 0x5b, 0x88, + 0xac, 0x1f, 0xc3, 0xc6, 0x79, 0x84, 0x8e, 0x47, 0x7d, 0x79, 0xc7, 0x54, 0x0e, 0x76, 0xa0, 0x26, + 0x92, 0x9c, 0xf6, 0x6c, 0x53, 0x1a, 0x4a, 0xb1, 0xe2, 0x5b, 0xdf, 0x80, 0xa9, 0xce, 0x75, 0xf4, + 0xd6, 0x8b, 0x39, 0x06, 0x0e, 0x1e, 0x5c, 0xa3, 0x73, 0xf3, 0x7f, 0x8c, 0xfc, 0x16, 0xb6, 0x57, + 0x79, 0x48, 0xcf, 0xd7, 0x72, 0x04, 0x35, 0xbe, 0x12, 0x40, 0x2b, 0x7d, 0x18, 0x36, 0x48, 0xd6, + 0x67, 0x82, 0x23, 0xbe, 0x23, 0x0a, 0xbb, 0x58, 0x43, 0xa2, 0xa6, 0xd2, 0x7c, 0x54, 0xee, 0xcf, + 0xc7, 0xdf, 0x4a, 0xd0, 0x3c, 0x47, 0x9e, 0x44, 0x32, 0x96, 0x47, 0xd0, 0xbc, 0x64, 0xe1, 0x0d, + 0xb2, 0x79, 0x28, 0x86, 0x62, 0x1c, 0xbb, 0xe4, 0x25, 0xd4, 0x0f, 0xc2, 0xe0, 0xca, 0x9b, 0xc8, + 0x1b, 0x77, 0x6b, 0xb4, 0xad, 0xd0, 0x45, 0xdb, 0x0e, 0x95, 0x4c, 0x8d, 0x46, 0xad, 0x48, 0xfa, + 0xd0, 0xd2, 0x2f, 0x94, 0x37, 0x6f, 0x8e, 0x0f, 0xd3, 0x51, 0x9c, 0x63, 0xf5, 0x3e, 0x86, 0x56, + 0xce, 0xf0, 0x7f, 0x9a, 0x16, 0xdf, 0x07, 0x90, 0xde, 0x55, 0x8e, 0xd6, 0x55, 0xa8, 0xda, 0x52, + 0x84, 0xb6, 0x03, 0x4d, 0x71, 0xeb, 0x53, 0x62, 0x02, 0xd5, 0xdc, 0x03, 0x45, 0xae, 0xad, 0x27, + 0xb0, 0x71, 0x1c, 0xdc, 0x52, 0xdf, 0x73, 0x29, 0xc7, 0x2f, 0x70, 0x26, 0x53, 0xb0, 0x74, 0x02, + 0xeb, 0x1c, 0xda, 0xfa, 0x09, 0xf0, 0x4e, 0x67, 0x6c, 0xeb, 0x33, 0xfe, 0xf7, 0x26, 0xfa, 0x00, + 0xba, 0x7a, 0xd3, 0x13, 0x4f, 0xb7, 0x90, 0xb8, 0x06, 0x30, 0xbc, 0xf2, 0xde, 0xea, 0xad, 0x35, + 0x65, 0xbd, 0x82, 0xf5, 0x9c, 0x6a, 0x16, 0xce, 0x0d, 0xce, 0xe2, 0xf4, 0x69, 0x24, 0xd6, 0x69, + 0x06, 0xca, 0xf3, 0x0c, 0x58, 0xb0, 0xa6, 0x2d, 0x5f, 0x23, 0xbf, 0x27, 0xba, 0x2f, 0xb2, 0x83, + 0xbc, 0x46, 0xbd, 0xf9, 0x2e, 0xd4, 0x50, 0x44, 0x9a, 0x1f, 0x61, 0xf9, 0x0c, 0xd8, 0x4a, 0xbc, + 0xc2, 0xe1, 0xab, 0xcc, 0xe1, 0x59, 0xa2, 0x1c, 0xbe, 0xe3, 0x5e, 0xd6, 0xfb, 0xd9, 0x31, 0xce, + 0x12, 0x7e, 0xdf, 0x17, 0x7d, 0x02, 0x1b, 0x5a, 0xe9, 0x10, 0x7d, 0xe4, 0x78, 0x4f, 0x48, 0xbb, + 0x40, 0x0a, 0x6a, 0xf7, 0x6d, 0xf7, 0x18, 0x8c, 0x8b, 0x8b, 0x93, 0x4c, 0x5a, 0xc4, 0x46, 0xeb, + 0x13, 0xd8, 0x38, 0x4f, 0xdc, 0xf0, 0x8c, 0x79, 0xb7, 0x9e, 0x8f, 0x13, 0xe5, 0x2c, 0x7d, 0x99, + 0x95, 0x72, 0x2f, 0xb3, 0x95, 0xd3, 0xc8, 0x1a, 0x00, 0x29, 0x98, 0x67, 0xdf, 0x2d, 0x4e, 0xdc, + 0x50, 0xb7, 0xb0, 0x5c, 0x5b, 0x03, 0x68, 0x5f, 0x50, 0x31, 0xef, 0x5d, 0xa5, 0x63, 0x42, 0x83, + 0x2b, 0x5a, 0xab, 0xa5, 0xa4, 0x35, 0x82, 0xcd, 0x03, 0xea, 0x5c, 0x7b, 0xc1, 0xe4, 0xd0, 0x8b, + 0xc5, 0x85, 0x47, 0x5b, 0xf4, 0xc0, 0x70, 0x35, 0x43, 0x9b, 0x64, 0xb4, 0xf5, 0x1c, 0x1e, 0xe6, + 0xde, 0x9f, 0xe7, 0x9c, 0xa6, 0xf9, 0xd8, 0x84, 0x5a, 0x2c, 0x28, 0x69, 0x51, 0xb3, 0x15, 0x61, + 0x7d, 0x09, 0x9b, 0xf9, 0x01, 0x2c, 0xae, 0x1f, 0x69, 0xe0, 0xf2, 0x62, 0x50, 0xca, 0x5d, 0x0c, + 0x74, 0xce, 0xca, 0xf3, 0x79, 0xb2, 0x0e, 0x95, 0x5f, 0x7d, 0x7d, 0xa1, 0x8b, 0x5d, 0x2c, 0xad, + 0xdf, 0x0b, 0xf7, 0xc5, 0xfd, 0x94, 0xfb, 0xc2, 0xed, 0xa0, 0xf4, 0x2e, 0xb7, 0x83, 0x15, 0xf5, + 0xf6, 0x1c, 0x36, 0x4e, 0xfd, 0xd0, 0xb9, 0x39, 0x0a, 0x72, 0xd9, 0x30, 0xa1, 0x81, 0x41, 0x3e, + 0x19, 0x29, 0x69, 0x3d, 0x85, 0xee, 0x89, 0x78, 0xfd, 0x9f, 0x8a, 0xe7, 0x5e, 0x96, 0x05, 0xf9, + 0x43, 0x40, 0xab, 0x2a, 0xc2, 0x7a, 0x0e, 0x6b, 0x7a, 0x44, 0x07, 0x57, 0x61, 0x8a, 0x8c, 0xf3, + 0x61, 0x5e, 0x2a, 0x5e, 0xb8, 0xad, 0x13, 0xe8, 0xce, 0xd5, 0xd5, 0xbe, 0x4f, 0xa1, 0xae, 0xc4, + 0x3a, 0xb6, 0x6e, 0x76, 0xad, 0x56, 0x9a, 0xb6, 0x16, 0xaf, 0x0c, 0x0a, 0xe6, 0xef, 0x30, 0x81, + 0xfd, 0x0c, 0xa7, 0x21, 0xc7, 0x31, 0x75, 0xdd, 0xb4, 0x7c, 0x41, 0xb1, 0xf6, 0x5d, 0x97, 0x8d, + 0xfe, 0x5d, 0x86, 0xc6, 0x2f, 0x15, 0xa2, 0x92, 0x4f, 0xa1, 0x53, 0x98, 0x9f, 0xe4, 0xa1, 0x7c, + 0x88, 0x2d, 0x4e, 0xeb, 0xde, 0xd6, 0x12, 0x5b, 0x9d, 0xfa, 0x05, 0xb4, 0xf3, 0xd3, 0x91, 0xc8, + 0x49, 0x28, 0xff, 0x0a, 0xf5, 0xe4, 0x4e, 0xcb, 0xa3, 0xf3, 0x1c, 0x36, 0x57, 0xcd, 0x2d, 0xf2, + 0x78, 0xee, 0x61, 0x79, 0x66, 0xf6, 0xde, 0xbb, 0x4f, 0x9a, 0xce, 0xbb, 0xc6, 0x81, 0x8f, 0x34, + 0x48, 0xa2, 0xfc, 0x09, 0xe6, 0x4b, 0xf2, 0x12, 0x3a, 0x05, 0xe4, 0x56, 0x71, 0x2e, 0x81, 0x79, + 0xde, 0x64, 0x17, 0x6a, 0x72, 0x5a, 0x90, 0x4e, 0x61, 0x6c, 0xf5, 0xd6, 0x32, 0x52, 0xf9, 0xee, + 0x43, 0x55, 0xfe, 0x2b, 0xc8, 0x39, 0x96, 0x16, 0xd9, 0x28, 0x19, 0xfd, 0xab, 0x04, 0x8d, 0xf4, + 0xff, 0xd1, 0x4b, 0xa8, 0x0a, 0x50, 0x26, 0x0f, 0x72, 0xb8, 0x96, 0x02, 0x7a, 0x6f, 0x73, 0x81, + 0xa9, 0x1c, 0x0c, 0xa1, 0xf2, 0x1a, 0x39, 0x21, 0x39, 0xa1, 0x46, 0xe7, 0xde, 0x83, 0x22, 0x2f, + 0xd3, 0x3f, 0x4b, 0x8a, 0xfa, 0x1a, 0x5c, 0x0b, 0xfa, 0x19, 0x6c, 0xfe, 0x14, 0xea, 0x0a, 0xf6, + 0x54, 0x52, 0x96, 0x00, 0x53, 0x7d, 0xfc, 0x65, 0x80, 0x1c, 0xfd, 0xb9, 0x0a, 0x70, 0x3e, 0x8b, + 0x39, 0x4e, 0x7f, 0xed, 0xe1, 0x1d, 0x79, 0x06, 0xdd, 0x43, 0xbc, 0xa2, 0x89, 0xcf, 0xe5, 0xf3, + 0x45, 0xb4, 0x77, 0x2e, 0x27, 0xf2, 0x06, 0x96, 0xa1, 0xe7, 0x2e, 0xb4, 0x4e, 0xe9, 0xdb, 0x6f, + 0xd7, 0xfb, 0x14, 0x3a, 0x05, 0x50, 0xd4, 0x47, 0x5c, 0x84, 0x59, 0x7d, 0xc4, 0x65, 0xf8, 0xdc, + 0x85, 0x86, 0x86, 0xca, 0xbc, 0x0f, 0x39, 0x54, 0x0a, 0x10, 0xfa, 0x13, 0xe8, 0x2e, 0x00, 0x65, + 0x5e, 0x5f, 0xfe, 0xe3, 0x5a, 0x09, 0xa4, 0xaf, 0xc4, 0xf3, 0xa3, 0x08, 0x96, 0x79, 0xc3, 0x6d, + 0x05, 0x50, 0xab, 0xd0, 0xf4, 0x75, 0xf1, 0xe1, 0x22, 0x9f, 0x6d, 0xe6, 0x22, 0x9e, 0xa5, 0x68, + 0x9a, 0x6e, 0xb4, 0x0a, 0x17, 0x5f, 0x40, 0x3b, 0x0f, 0x69, 0x4b, 0x2d, 0xb8, 0x8c, 0x77, 0x3f, + 0x02, 0x98, 0xa3, 0x5a, 0x5e, 0x5f, 0x96, 0xc7, 0x22, 0xe0, 0x7d, 0x04, 0x30, 0xc7, 0x2a, 0x55, + 0x55, 0x45, 0xa8, 0x53, 0x66, 0x0b, 0x78, 0x76, 0x59, 0x97, 0x2f, 0xa4, 0x0f, 0xff, 0x13, 0x00, + 0x00, 0xff, 0xff, 0x12, 0xa9, 0x06, 0x18, 0x84, 0x16, 0x00, 0x00, } diff --git a/logical/plugin/pb/backend.proto b/logical/plugin/pb/backend.proto index 8e6ef614af04..0d233bf78429 100644 --- a/logical/plugin/pb/backend.proto +++ b/logical/plugin/pb/backend.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package pb; import "google/protobuf/timestamp.proto"; +import "logical/identity.proto"; message Empty {} @@ -132,18 +133,6 @@ message Request { Connection connection = 20; } -message Alias { - // MountType is the backend mount's type to which this identity belongs - string mount_type = 1; - - // MountAccessor is the identifier of the mount entry to which this - // identity belongs - string mount_accessor = 2; - - // Name is the identifier of this identity in its authentication source - string name = 3; -} - message Auth { LeaseOptions lease_options = 1; @@ -195,13 +184,13 @@ message Auth { // Alias is the information about the authenticated client returned by // the auth backend - Alias alias = 11; + logical.Alias alias = 11; // GroupAliases are the informational mappings of external groups which an // authenticated user belongs to. This is used to check if there are // mappings groups for the group aliases in identity store. For all the // matching groups, the entity ID of the user will be added. - repeated Alias group_aliases = 12; + repeated logical.Alias group_aliases = 12; // If set, restricts usage of the certificates to client IPs falling within // the range of the specified CIDR(s). @@ -498,6 +487,15 @@ message LocalMountReply { bool local = 1; } +message EntityInfoArgs { + string entity_id = 1; +} + +message EntityInfoReply { + logical.Entity entity = 1; + string err = 2; +} + // SystemView exposes system configuration information in a safe way for plugins // to consume. Plugins should implement the client for this service. service SystemView { @@ -541,6 +539,9 @@ service SystemView { // LocalMount, when run from a system view attached to a request, indicates // whether the request is affecting a local mount or not rpc LocalMount(Empty) returns (LocalMountReply); + + // EntityInfo returns the basic entity information for the given entity id + rpc EntityInfo(EntityInfoArgs) returns (EntityInfoReply); } message Connection { diff --git a/logical/plugin/pb/translation.go b/logical/plugin/pb/translation.go index 3ebdf4d0e114..d0d220e7898a 100644 --- a/logical/plugin/pb/translation.go +++ b/logical/plugin/pb/translation.go @@ -464,30 +464,6 @@ func LogicalResponseToProtoResponse(r *logical.Response) (*Response, error) { }, nil } -func LogicalAliasToProtoAlias(a *logical.Alias) *Alias { - if a == nil { - return nil - } - - return &Alias{ - MountType: a.MountType, - MountAccessor: a.MountAccessor, - Name: a.Name, - } -} - -func ProtoAliasToLogicalAlias(a *Alias) *logical.Alias { - if a == nil { - return nil - } - - return &logical.Alias{ - MountType: a.MountType, - MountAccessor: a.MountAccessor, - Name: a.Name, - } -} - func LogicalAuthToProtoAuth(a *logical.Auth) (*Auth, error) { if a == nil { return nil, nil @@ -498,11 +474,6 @@ func LogicalAuthToProtoAuth(a *logical.Auth) (*Auth, error) { return nil, err } - groupAliases := make([]*Alias, len(a.GroupAliases)) - for i, al := range a.GroupAliases { - groupAliases[i] = LogicalAliasToProtoAlias(al) - } - lo, err := LogicalLeaseOptionsToProtoLeaseOptions(a.LeaseOptions) if err != nil { return nil, err @@ -524,8 +495,8 @@ func LogicalAuthToProtoAuth(a *logical.Auth) (*Auth, error) { Period: int64(a.Period), NumUses: int64(a.NumUses), EntityID: a.EntityID, - Alias: LogicalAliasToProtoAlias(a.Alias), - GroupAliases: groupAliases, + Alias: a.Alias, + GroupAliases: a.GroupAliases, BoundCidrs: boundCIDRs, }, nil } @@ -541,11 +512,6 @@ func ProtoAuthToLogicalAuth(a *Auth) (*logical.Auth, error) { return nil, err } - groupAliases := make([]*logical.Alias, len(a.GroupAliases)) - for i, al := range a.GroupAliases { - groupAliases[i] = ProtoAliasToLogicalAlias(al) - } - lo, err := ProtoLeaseOptionsToLogicalLeaseOptions(a.LeaseOptions) if err != nil { return nil, err @@ -572,8 +538,8 @@ func ProtoAuthToLogicalAuth(a *Auth) (*logical.Auth, error) { Period: time.Duration(a.Period), NumUses: int(a.NumUses), EntityID: a.EntityID, - Alias: ProtoAliasToLogicalAlias(a.Alias), - GroupAliases: groupAliases, + Alias: a.Alias, + GroupAliases: a.GroupAliases, BoundCIDRs: boundCIDRs, }, nil } diff --git a/logical/plugin/system.go b/logical/plugin/system.go index 1daa48f4efb5..08402de3f702 100644 --- a/logical/plugin/system.go +++ b/logical/plugin/system.go @@ -129,6 +129,23 @@ func (s *SystemViewClient) LocalMount() bool { return reply.Local } +func (s *SystemViewClient) EntityInfo(entityID string) (*logical.Entity, error) { + var reply EntityInfoReply + args := &EntityInfoArgs{ + EntityID: entityID, + } + + err := s.client.Call("Plugin.EntityInfo", args, &reply) + if err != nil { + return nil, err + } + if reply.Error != nil { + return nil, reply.Error + } + + return reply.Entity, nil +} + type SystemViewServer struct { impl logical.SystemView } @@ -221,6 +238,21 @@ func (s *SystemViewServer) LocalMount(_ interface{}, reply *LocalMountReply) err return nil } +func (s *SystemViewServer) EntityInfo(args *EntityInfoArgs, reply *EntityInfoReply) error { + entity, err := s.impl.EntityInfo(args.EntityID) + if err != nil { + *reply = EntityInfoReply{ + Error: wrapError(err), + } + return nil + } + *reply = EntityInfoReply{ + Entity: entity, + } + + return nil +} + type DefaultLeaseTTLReply struct { DefaultLeaseTTL time.Duration } @@ -268,3 +300,12 @@ type MlockEnabledReply struct { type LocalMountReply struct { Local bool } + +type EntityInfoArgs struct { + EntityID string +} + +type EntityInfoReply struct { + Entity *logical.Entity + Error error +} diff --git a/logical/plugin/system_test.go b/logical/plugin/system_test.go index 78aa865b869c..2e152fcdeca9 100644 --- a/logical/plugin/system_test.go +++ b/logical/plugin/system_test.go @@ -174,3 +174,28 @@ func TestSystem_mlockEnabled(t *testing.T) { t.Fatalf("expected: %v, got: %v", expected, actual) } } + +func TestSystem_entityInfo(t *testing.T) { + client, server := plugin.TestRPCConn(t) + defer client.Close() + + sys := logical.TestSystemView() + sys.EntityVal = &logical.Entity{ + ID: "test", + Name: "name", + } + + server.RegisterName("Plugin", &SystemViewServer{ + impl: sys, + }) + + testSystemView := &SystemViewClient{client: client} + + actual, err := testSystemView.EntityInfo("") + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(sys.EntityVal, actual) { + t.Fatalf("expected: %v, got: %v", sys.EntityVal, actual) + } +} diff --git a/logical/system_view.go b/logical/system_view.go index ad406c29f7dd..3fbcb6719f3f 100644 --- a/logical/system_view.go +++ b/logical/system_view.go @@ -57,6 +57,10 @@ type SystemView interface { // MlockEnabled returns the configuration setting for enabling mlock on // plugins. MlockEnabled() bool + + // EntityInfo returns a subset of information related to the identity entity + // for the given entity id + EntityInfo(entityID string) (*Entity, error) } type StaticSystemView struct { @@ -69,6 +73,7 @@ type StaticSystemView struct { EnableMlock bool LocalMountVal bool ReplicationStateVal consts.ReplicationState + EntityVal *Entity } func (d StaticSystemView) DefaultLeaseTTL() time.Duration { @@ -110,3 +115,7 @@ func (d StaticSystemView) LookupPlugin(_ context.Context, name string) (*pluginu func (d StaticSystemView) MlockEnabled() bool { return d.EnableMlock } + +func (d StaticSystemView) EntityInfo(entityID string) (*Entity, error) { + return d.EntityVal, nil +} diff --git a/vault/dynamic_system_view.go b/vault/dynamic_system_view.go index 06f9ac63b9d4..2b0aa7840c6e 100644 --- a/vault/dynamic_system_view.go +++ b/vault/dynamic_system_view.go @@ -145,3 +145,46 @@ func (d dynamicSystemView) LookupPlugin(ctx context.Context, name string) (*plug func (d dynamicSystemView) MlockEnabled() bool { return d.core.enableMlock } + +func (d dynamicSystemView) EntityInfo(entityID string) (*logical.Entity, error) { + // Requests from token created from the token backend will not have entity information. + // Return missing entity instead of error when requesting from MemDB. + if entityID == "" { + return nil, nil + } + + if d.core == nil { + return nil, fmt.Errorf("system view core is nil") + } + if d.core.identityStore == nil { + return nil, fmt.Errorf("system view identity store is nil") + } + + // Retrieve the entity from MemDB + entity, err := d.core.identityStore.MemDBEntityByID(entityID, false) + if err != nil { + return nil, err + } + if entity == nil { + return nil, nil + } + + aliases := make([]*logical.Alias, len(entity.Aliases)) + for i, alias := range entity.Aliases { + aliases[i] = &logical.Alias{ + MountAccessor: alias.MountAccessor, + Name: alias.Name, + } + // MountType is not stored with the entity and must be looked up + if mount := d.core.router.validateMountByAccessor(alias.MountAccessor); mount != nil { + aliases[i].MountType = mount.MountType + } + } + + // Only returning a subset of the data + return &logical.Entity{ + ID: entity.ID, + Name: entity.Name, + Aliases: aliases, + }, nil +}