From e4df56d3d26b4f7416c730dd144e21565647f96d Mon Sep 17 00:00:00 2001 From: Mark Phelps <209477+markphelps@users.noreply.github.com> Date: Fri, 3 Nov 2023 10:01:10 -0400 Subject: [PATCH] chore: move --- internal/cmd/grpc.go | 11 +- .../server/{ => evaluation}/data/server.go | 42 +- rpc/flipt/data/data.pb.go | 1151 ------------- rpc/flipt/data/data.pb.gw.go | 189 --- rpc/flipt/data/data.proto | 88 - rpc/flipt/data/data_grpc.pb.go | 109 -- rpc/flipt/evaluation/evaluation.pb.go | 1426 +++++++++++++++-- rpc/flipt/evaluation/evaluation.pb.gw.go | 157 ++ rpc/flipt/evaluation/evaluation.proto | 81 + rpc/flipt/evaluation/evaluation_grpc.pb.go | 90 ++ rpc/flipt/flipt.yaml | 4 +- sdk/go/evaluation.sdk.gen.go | 41 +- sdk/go/grpc/grpc.sdk.gen.go | 15 +- sdk/go/http/evaluation.sdk.gen.go | 59 +- sdk/go/sdk.gen.go | 12 +- 15 files changed, 1712 insertions(+), 1763 deletions(-) rename internal/server/{ => evaluation}/data/server.go (76%) delete mode 100644 rpc/flipt/data/data.pb.go delete mode 100644 rpc/flipt/data/data.pb.gw.go delete mode 100644 rpc/flipt/data/data.proto delete mode 100644 rpc/flipt/data/data_grpc.pb.go diff --git a/internal/cmd/grpc.go b/internal/cmd/grpc.go index e8b9784db2..8c40c58328 100644 --- a/internal/cmd/grpc.go +++ b/internal/cmd/grpc.go @@ -26,6 +26,7 @@ import ( "go.flipt.io/flipt/internal/server/audit/webhook" "go.flipt.io/flipt/internal/server/auth" "go.flipt.io/flipt/internal/server/evaluation" + evaluationdata "go.flipt.io/flipt/internal/server/evaluation/data" "go.flipt.io/flipt/internal/server/metadata" middlewaregrpc "go.flipt.io/flipt/internal/server/middleware/grpc" "go.flipt.io/flipt/internal/storage" @@ -282,10 +283,11 @@ func NewGRPCServer( } var ( - fliptsrv = fliptserver.New(logger, store) - metasrv = metadata.New(cfg, info) - evalsrv = evaluation.New(logger, store) - healthsrv = health.NewServer() + fliptsrv = fliptserver.New(logger, store) + metasrv = metadata.New(cfg, info) + evalsrv = evaluation.New(logger, store) + evalDataSrv = evaluationdata.New(logger, store) + healthsrv = health.NewServer() ) var ( @@ -340,6 +342,7 @@ func NewGRPCServer( register.Add(fliptsrv) register.Add(metasrv) register.Add(evalsrv) + register.Add(evalDataSrv) // forward internal gRPC logging to zap grpcLogLevel, err := zapcore.ParseLevel(cfg.Log.GRPCLevel) diff --git a/internal/server/data/server.go b/internal/server/evaluation/data/server.go similarity index 76% rename from internal/server/data/server.go rename to internal/server/evaluation/data/server.go index 8940954d8d..22ad7139d3 100644 --- a/internal/server/data/server.go +++ b/internal/server/evaluation/data/server.go @@ -6,8 +6,9 @@ import ( "go.flipt.io/flipt/internal/storage" "go.flipt.io/flipt/rpc/flipt" - "go.flipt.io/flipt/rpc/flipt/data" + "go.flipt.io/flipt/rpc/flipt/evaluation" "go.uber.org/zap" + "google.golang.org/grpc" ) type EvaluationStore interface { @@ -19,23 +20,28 @@ type Server struct { logger *zap.Logger store EvaluationStore - data.UnimplementedDataServiceServer + evaluation.UnimplementedDataServiceServer } -func NewServer(logger *zap.Logger, store EvaluationStore) *Server { +func New(logger *zap.Logger, store EvaluationStore) *Server { return &Server{ logger: logger, store: store, } } -func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *data.EvaluationNamespaceSnapshotRequest) (*data.EvaluationNamespaceSnapshot, error) { +// RegisterGRPC registers the *Server onto the provided grpc Server. +func (srv *Server) RegisterGRPC(server *grpc.Server) { + evaluation.RegisterDataServiceServer(server, srv) +} + +func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *evaluation.EvaluationNamespaceSnapshotRequest) (*evaluation.EvaluationNamespaceSnapshot, error) { var ( namespaceKey = r.Key - resp = &data.EvaluationNamespaceSnapshot{} + resp = &evaluation.EvaluationNamespaceSnapshot{} remaining = true nextPage string - segments = make(map[string]*data.EvaluationSegment) + segments = make(map[string]*evaluation.EvaluationSegment) ) // flags/variants in batches @@ -54,7 +60,7 @@ func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *data.Eval remaining = nextPage != "" for _, f := range flags { - flag := &data.EvaluationFlag{ + flag := &evaluation.EvaluationFlag{ Key: f.Key, Name: f.Name, Description: f.Description, @@ -71,7 +77,7 @@ func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *data.Eval } for _, r := range rules { - rule := &data.EvaluationRule{ + rule := &evaluation.EvaluationRule{ Id: r.ID, Rank: r.Rank, SegmentOperator: r.SegmentOperator, @@ -83,13 +89,13 @@ func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *data.Eval rule.Segments = append(rule.Segments, ss) } else { - ss := &data.EvaluationSegment{ + ss := &evaluation.EvaluationSegment{ Key: s.SegmentKey, MatchType: s.MatchType, } for _, c := range s.Constraints { - ss.Constraints = append(ss.Constraints, &data.EvaluationConstraint{ + ss.Constraints = append(ss.Constraints, &evaluation.EvaluationConstraint{ Id: c.ID, Type: c.Type, Property: c.Property, @@ -109,7 +115,7 @@ func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *data.Eval // distributions for rule for _, d := range distributions { - dist := &data.EvaluationDistribution{ + dist := &evaluation.EvaluationDistribution{ VariantId: d.VariantID, VariantKey: d.VariantKey, VariantAttachment: d.VariantAttachment, @@ -130,22 +136,22 @@ func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *data.Eval } for _, r := range rollouts { - rollout := &data.EvaluationRollout{ + rollout := &evaluation.EvaluationRollout{ Type: r.RolloutType, Rank: r.Rank, } switch r.RolloutType { case flipt.RolloutType_THRESHOLD_ROLLOUT_TYPE: - rollout.Rule = &data.EvaluationRollout_Threshold{ - Threshold: &data.EvaluationRolloutThreshold{ + rollout.Rule = &evaluation.EvaluationRollout_Threshold{ + Threshold: &evaluation.EvaluationRolloutThreshold{ Percentage: r.Threshold.Percentage, Value: r.Threshold.Value, }, } case flipt.RolloutType_SEGMENT_ROLLOUT_TYPE: - segment := &data.EvaluationRolloutSegment{ + segment := &evaluation.EvaluationRolloutSegment{ Value: r.Segment.Value, SegmentOperator: r.Segment.SegmentOperator, } @@ -154,13 +160,13 @@ func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *data.Eval // optimization: reuse segment if already seen ss, ok := segments[s.SegmentKey] if !ok { - ss := &data.EvaluationSegment{ + ss := &evaluation.EvaluationSegment{ Key: s.SegmentKey, MatchType: s.MatchType, } for _, c := range s.Constraints { - ss.Constraints = append(ss.Constraints, &data.EvaluationConstraint{ + ss.Constraints = append(ss.Constraints, &evaluation.EvaluationConstraint{ Id: c.ID, Type: c.Type, Property: c.Property, @@ -175,7 +181,7 @@ func (srv *Server) EvaluationSnapshotNamespace(ctx context.Context, r *data.Eval segment.Segments = append(segment.Segments, ss) } - rollout.Rule = &data.EvaluationRollout_Segment{ + rollout.Rule = &evaluation.EvaluationRollout_Segment{ Segment: segment, } } diff --git a/rpc/flipt/data/data.pb.go b/rpc/flipt/data/data.pb.go deleted file mode 100644 index 0f9608c8e4..0000000000 --- a/rpc/flipt/data/data.pb.go +++ /dev/null @@ -1,1151 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc (unknown) -// source: data/data.proto - -package data - -import ( - flipt "go.flipt.io/flipt/rpc/flipt" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type EvaluationDistribution struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"` - VariantId string `protobuf:"bytes,3,opt,name=variant_id,json=variantId,proto3" json:"variant_id,omitempty"` - VariantKey string `protobuf:"bytes,4,opt,name=variant_key,json=variantKey,proto3" json:"variant_key,omitempty"` - VariantAttachment string `protobuf:"bytes,5,opt,name=variant_attachment,json=variantAttachment,proto3" json:"variant_attachment,omitempty"` - Rollout float32 `protobuf:"fixed32,6,opt,name=rollout,proto3" json:"rollout,omitempty"` -} - -func (x *EvaluationDistribution) Reset() { - *x = EvaluationDistribution{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationDistribution) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationDistribution) ProtoMessage() {} - -func (x *EvaluationDistribution) ProtoReflect() protoreflect.Message { - mi := &file_data_data_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EvaluationDistribution.ProtoReflect.Descriptor instead. -func (*EvaluationDistribution) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{0} -} - -func (x *EvaluationDistribution) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *EvaluationDistribution) GetRuleId() string { - if x != nil { - return x.RuleId - } - return "" -} - -func (x *EvaluationDistribution) GetVariantId() string { - if x != nil { - return x.VariantId - } - return "" -} - -func (x *EvaluationDistribution) GetVariantKey() string { - if x != nil { - return x.VariantKey - } - return "" -} - -func (x *EvaluationDistribution) GetVariantAttachment() string { - if x != nil { - return x.VariantAttachment - } - return "" -} - -func (x *EvaluationDistribution) GetRollout() float32 { - if x != nil { - return x.Rollout - } - return 0 -} - -type EvaluationRollout struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type flipt.RolloutType `protobuf:"varint,1,opt,name=type,proto3,enum=flipt.RolloutType" json:"type,omitempty"` - Rank int32 `protobuf:"varint,2,opt,name=rank,proto3" json:"rank,omitempty"` - // Types that are assignable to Rule: - // - // *EvaluationRollout_Segment - // *EvaluationRollout_Threshold - Rule isEvaluationRollout_Rule `protobuf_oneof:"rule"` -} - -func (x *EvaluationRollout) Reset() { - *x = EvaluationRollout{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationRollout) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationRollout) ProtoMessage() {} - -func (x *EvaluationRollout) ProtoReflect() protoreflect.Message { - mi := &file_data_data_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 EvaluationRollout.ProtoReflect.Descriptor instead. -func (*EvaluationRollout) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{1} -} - -func (x *EvaluationRollout) GetType() flipt.RolloutType { - if x != nil { - return x.Type - } - return flipt.RolloutType(0) -} - -func (x *EvaluationRollout) GetRank() int32 { - if x != nil { - return x.Rank - } - return 0 -} - -func (m *EvaluationRollout) GetRule() isEvaluationRollout_Rule { - if m != nil { - return m.Rule - } - return nil -} - -func (x *EvaluationRollout) GetSegment() *EvaluationRolloutSegment { - if x, ok := x.GetRule().(*EvaluationRollout_Segment); ok { - return x.Segment - } - return nil -} - -func (x *EvaluationRollout) GetThreshold() *EvaluationRolloutThreshold { - if x, ok := x.GetRule().(*EvaluationRollout_Threshold); ok { - return x.Threshold - } - return nil -} - -type isEvaluationRollout_Rule interface { - isEvaluationRollout_Rule() -} - -type EvaluationRollout_Segment struct { - Segment *EvaluationRolloutSegment `protobuf:"bytes,3,opt,name=segment,proto3,oneof"` -} - -type EvaluationRollout_Threshold struct { - Threshold *EvaluationRolloutThreshold `protobuf:"bytes,4,opt,name=threshold,proto3,oneof"` -} - -func (*EvaluationRollout_Segment) isEvaluationRollout_Rule() {} - -func (*EvaluationRollout_Threshold) isEvaluationRollout_Rule() {} - -type EvaluationRolloutThreshold struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Percentage float32 `protobuf:"fixed32,1,opt,name=percentage,proto3" json:"percentage,omitempty"` - Value bool `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *EvaluationRolloutThreshold) Reset() { - *x = EvaluationRolloutThreshold{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationRolloutThreshold) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationRolloutThreshold) ProtoMessage() {} - -func (x *EvaluationRolloutThreshold) ProtoReflect() protoreflect.Message { - mi := &file_data_data_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 EvaluationRolloutThreshold.ProtoReflect.Descriptor instead. -func (*EvaluationRolloutThreshold) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{2} -} - -func (x *EvaluationRolloutThreshold) GetPercentage() float32 { - if x != nil { - return x.Percentage - } - return 0 -} - -func (x *EvaluationRolloutThreshold) GetValue() bool { - if x != nil { - return x.Value - } - return false -} - -type EvaluationRolloutSegment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` - SegmentOperator flipt.SegmentOperator `protobuf:"varint,2,opt,name=segment_operator,json=segmentOperator,proto3,enum=flipt.SegmentOperator" json:"segment_operator,omitempty"` - Segments []*EvaluationSegment `protobuf:"bytes,3,rep,name=segments,proto3" json:"segments,omitempty"` -} - -func (x *EvaluationRolloutSegment) Reset() { - *x = EvaluationRolloutSegment{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationRolloutSegment) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationRolloutSegment) ProtoMessage() {} - -func (x *EvaluationRolloutSegment) ProtoReflect() protoreflect.Message { - mi := &file_data_data_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 EvaluationRolloutSegment.ProtoReflect.Descriptor instead. -func (*EvaluationRolloutSegment) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{3} -} - -func (x *EvaluationRolloutSegment) GetValue() bool { - if x != nil { - return x.Value - } - return false -} - -func (x *EvaluationRolloutSegment) GetSegmentOperator() flipt.SegmentOperator { - if x != nil { - return x.SegmentOperator - } - return flipt.SegmentOperator(0) -} - -func (x *EvaluationRolloutSegment) GetSegments() []*EvaluationSegment { - if x != nil { - return x.Segments - } - return nil -} - -type EvaluationSegment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - MatchType flipt.MatchType `protobuf:"varint,4,opt,name=match_type,json=matchType,proto3,enum=flipt.MatchType" json:"match_type,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Constraints []*EvaluationConstraint `protobuf:"bytes,7,rep,name=constraints,proto3" json:"constraints,omitempty"` -} - -func (x *EvaluationSegment) Reset() { - *x = EvaluationSegment{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationSegment) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationSegment) ProtoMessage() {} - -func (x *EvaluationSegment) ProtoReflect() protoreflect.Message { - mi := &file_data_data_proto_msgTypes[4] - 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 EvaluationSegment.ProtoReflect.Descriptor instead. -func (*EvaluationSegment) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{4} -} - -func (x *EvaluationSegment) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *EvaluationSegment) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *EvaluationSegment) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *EvaluationSegment) GetMatchType() flipt.MatchType { - if x != nil { - return x.MatchType - } - return flipt.MatchType(0) -} - -func (x *EvaluationSegment) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *EvaluationSegment) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *EvaluationSegment) GetConstraints() []*EvaluationConstraint { - if x != nil { - return x.Constraints - } - return nil -} - -type EvaluationFlag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"` - Type flipt.FlagType `protobuf:"varint,5,opt,name=type,proto3,enum=flipt.FlagType" json:"type,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Rules []*EvaluationRule `protobuf:"bytes,8,rep,name=rules,proto3" json:"rules,omitempty"` - Rollouts []*EvaluationRollout `protobuf:"bytes,9,rep,name=rollouts,proto3" json:"rollouts,omitempty"` -} - -func (x *EvaluationFlag) Reset() { - *x = EvaluationFlag{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationFlag) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationFlag) ProtoMessage() {} - -func (x *EvaluationFlag) ProtoReflect() protoreflect.Message { - mi := &file_data_data_proto_msgTypes[5] - 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 EvaluationFlag.ProtoReflect.Descriptor instead. -func (*EvaluationFlag) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{5} -} - -func (x *EvaluationFlag) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *EvaluationFlag) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *EvaluationFlag) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *EvaluationFlag) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *EvaluationFlag) GetType() flipt.FlagType { - if x != nil { - return x.Type - } - return flipt.FlagType(0) -} - -func (x *EvaluationFlag) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *EvaluationFlag) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *EvaluationFlag) GetRules() []*EvaluationRule { - if x != nil { - return x.Rules - } - return nil -} - -func (x *EvaluationFlag) GetRollouts() []*EvaluationRollout { - if x != nil { - return x.Rollouts - } - return nil -} - -type EvaluationConstraint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type flipt.ComparisonType `protobuf:"varint,2,opt,name=type,proto3,enum=flipt.ComparisonType" json:"type,omitempty"` - Property string `protobuf:"bytes,3,opt,name=property,proto3" json:"property,omitempty"` - Operator string `protobuf:"bytes,4,opt,name=operator,proto3" json:"operator,omitempty"` - Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *EvaluationConstraint) Reset() { - *x = EvaluationConstraint{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationConstraint) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationConstraint) ProtoMessage() {} - -func (x *EvaluationConstraint) ProtoReflect() protoreflect.Message { - mi := &file_data_data_proto_msgTypes[6] - 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 EvaluationConstraint.ProtoReflect.Descriptor instead. -func (*EvaluationConstraint) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{6} -} - -func (x *EvaluationConstraint) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *EvaluationConstraint) GetType() flipt.ComparisonType { - if x != nil { - return x.Type - } - return flipt.ComparisonType(0) -} - -func (x *EvaluationConstraint) GetProperty() string { - if x != nil { - return x.Property - } - return "" -} - -func (x *EvaluationConstraint) GetOperator() string { - if x != nil { - return x.Operator - } - return "" -} - -func (x *EvaluationConstraint) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -type EvaluationRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Segments []*EvaluationSegment `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"` - Rank int32 `protobuf:"varint,3,opt,name=rank,proto3" json:"rank,omitempty"` - SegmentOperator flipt.SegmentOperator `protobuf:"varint,4,opt,name=segment_operator,json=segmentOperator,proto3,enum=flipt.SegmentOperator" json:"segment_operator,omitempty"` - Distributions []*EvaluationDistribution `protobuf:"bytes,5,rep,name=distributions,proto3" json:"distributions,omitempty"` -} - -func (x *EvaluationRule) Reset() { - *x = EvaluationRule{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationRule) ProtoMessage() {} - -func (x *EvaluationRule) ProtoReflect() protoreflect.Message { - mi := &file_data_data_proto_msgTypes[7] - 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 EvaluationRule.ProtoReflect.Descriptor instead. -func (*EvaluationRule) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{7} -} - -func (x *EvaluationRule) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *EvaluationRule) GetSegments() []*EvaluationSegment { - if x != nil { - return x.Segments - } - return nil -} - -func (x *EvaluationRule) GetRank() int32 { - if x != nil { - return x.Rank - } - return 0 -} - -func (x *EvaluationRule) GetSegmentOperator() flipt.SegmentOperator { - if x != nil { - return x.SegmentOperator - } - return flipt.SegmentOperator(0) -} - -func (x *EvaluationRule) GetDistributions() []*EvaluationDistribution { - if x != nil { - return x.Distributions - } - return nil -} - -type EvaluationNamespaceSnapshot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Namespace *flipt.Namespace `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - Flags []*EvaluationFlag `protobuf:"bytes,2,rep,name=flags,proto3" json:"flags,omitempty"` -} - -func (x *EvaluationNamespaceSnapshot) Reset() { - *x = EvaluationNamespaceSnapshot{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationNamespaceSnapshot) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationNamespaceSnapshot) ProtoMessage() {} - -func (x *EvaluationNamespaceSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_data_data_proto_msgTypes[8] - 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 EvaluationNamespaceSnapshot.ProtoReflect.Descriptor instead. -func (*EvaluationNamespaceSnapshot) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{8} -} - -func (x *EvaluationNamespaceSnapshot) GetNamespace() *flipt.Namespace { - if x != nil { - return x.Namespace - } - return nil -} - -func (x *EvaluationNamespaceSnapshot) GetFlags() []*EvaluationFlag { - if x != nil { - return x.Flags - } - return nil -} - -type EvaluationNamespaceSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` -} - -func (x *EvaluationNamespaceSnapshotRequest) Reset() { - *x = EvaluationNamespaceSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_data_data_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EvaluationNamespaceSnapshotRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EvaluationNamespaceSnapshotRequest) ProtoMessage() {} - -func (x *EvaluationNamespaceSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_data_proto_msgTypes[9] - 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 EvaluationNamespaceSnapshotRequest.ProtoReflect.Descriptor instead. -func (*EvaluationNamespaceSnapshotRequest) Descriptor() ([]byte, []int) { - return file_data_data_proto_rawDescGZIP(), []int{9} -} - -func (x *EvaluationNamespaceSnapshotRequest) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -var File_data_data_proto protoreflect.FileDescriptor - -var file_data_data_proto_rawDesc = []byte{ - 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x0a, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x0b, 0x66, - 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xca, 0x01, 0x0a, 0x16, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, - 0x2d, 0x0a, 0x12, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x22, 0xe1, 0x01, 0x0a, 0x11, 0x45, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x12, 0x26, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x66, - 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, - 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x54, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x52, 0x0a, 0x1a, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, - 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0xae, 0x01, 0x0a, 0x18, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x41, 0x0a, 0x10, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, - 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x22, 0xc6, 0x02, 0x0a, 0x11, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x2f, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, - 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xfa, 0x02, 0x0a, 0x0e, 0x45, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, - 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x69, 0x70, - 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x08, - 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x08, 0x72, - 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x14, 0x45, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, - 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x0e, 0x45, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x08, - 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x41, 0x0a, 0x10, 0x73, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x53, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x73, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x48, - 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7f, 0x0a, 0x1b, 0x45, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x6c, 0x69, - 0x70, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, - 0x61, 0x67, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x36, 0x0a, 0x22, 0x45, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x32, 0x85, 0x01, 0x0a, 0x0b, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x22, 0x5a, 0x20, 0x67, 0x6f, 0x2e, - 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x69, 0x6f, 0x2f, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2f, 0x72, - 0x70, 0x63, 0x2f, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_data_data_proto_rawDescOnce sync.Once - file_data_data_proto_rawDescData = file_data_data_proto_rawDesc -) - -func file_data_data_proto_rawDescGZIP() []byte { - file_data_data_proto_rawDescOnce.Do(func() { - file_data_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_data_data_proto_rawDescData) - }) - return file_data_data_proto_rawDescData -} - -var file_data_data_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_data_data_proto_goTypes = []interface{}{ - (*EvaluationDistribution)(nil), // 0: flipt.data.EvaluationDistribution - (*EvaluationRollout)(nil), // 1: flipt.data.EvaluationRollout - (*EvaluationRolloutThreshold)(nil), // 2: flipt.data.EvaluationRolloutThreshold - (*EvaluationRolloutSegment)(nil), // 3: flipt.data.EvaluationRolloutSegment - (*EvaluationSegment)(nil), // 4: flipt.data.EvaluationSegment - (*EvaluationFlag)(nil), // 5: flipt.data.EvaluationFlag - (*EvaluationConstraint)(nil), // 6: flipt.data.EvaluationConstraint - (*EvaluationRule)(nil), // 7: flipt.data.EvaluationRule - (*EvaluationNamespaceSnapshot)(nil), // 8: flipt.data.EvaluationNamespaceSnapshot - (*EvaluationNamespaceSnapshotRequest)(nil), // 9: flipt.data.EvaluationNamespaceSnapshotRequest - (flipt.RolloutType)(0), // 10: flipt.RolloutType - (flipt.SegmentOperator)(0), // 11: flipt.SegmentOperator - (flipt.MatchType)(0), // 12: flipt.MatchType - (*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp - (flipt.FlagType)(0), // 14: flipt.FlagType - (flipt.ComparisonType)(0), // 15: flipt.ComparisonType - (*flipt.Namespace)(nil), // 16: flipt.Namespace -} -var file_data_data_proto_depIdxs = []int32{ - 10, // 0: flipt.data.EvaluationRollout.type:type_name -> flipt.RolloutType - 3, // 1: flipt.data.EvaluationRollout.segment:type_name -> flipt.data.EvaluationRolloutSegment - 2, // 2: flipt.data.EvaluationRollout.threshold:type_name -> flipt.data.EvaluationRolloutThreshold - 11, // 3: flipt.data.EvaluationRolloutSegment.segment_operator:type_name -> flipt.SegmentOperator - 4, // 4: flipt.data.EvaluationRolloutSegment.segments:type_name -> flipt.data.EvaluationSegment - 12, // 5: flipt.data.EvaluationSegment.match_type:type_name -> flipt.MatchType - 13, // 6: flipt.data.EvaluationSegment.created_at:type_name -> google.protobuf.Timestamp - 13, // 7: flipt.data.EvaluationSegment.updated_at:type_name -> google.protobuf.Timestamp - 6, // 8: flipt.data.EvaluationSegment.constraints:type_name -> flipt.data.EvaluationConstraint - 14, // 9: flipt.data.EvaluationFlag.type:type_name -> flipt.FlagType - 13, // 10: flipt.data.EvaluationFlag.created_at:type_name -> google.protobuf.Timestamp - 13, // 11: flipt.data.EvaluationFlag.updated_at:type_name -> google.protobuf.Timestamp - 7, // 12: flipt.data.EvaluationFlag.rules:type_name -> flipt.data.EvaluationRule - 1, // 13: flipt.data.EvaluationFlag.rollouts:type_name -> flipt.data.EvaluationRollout - 15, // 14: flipt.data.EvaluationConstraint.type:type_name -> flipt.ComparisonType - 4, // 15: flipt.data.EvaluationRule.segments:type_name -> flipt.data.EvaluationSegment - 11, // 16: flipt.data.EvaluationRule.segment_operator:type_name -> flipt.SegmentOperator - 0, // 17: flipt.data.EvaluationRule.distributions:type_name -> flipt.data.EvaluationDistribution - 16, // 18: flipt.data.EvaluationNamespaceSnapshot.namespace:type_name -> flipt.Namespace - 5, // 19: flipt.data.EvaluationNamespaceSnapshot.flags:type_name -> flipt.data.EvaluationFlag - 9, // 20: flipt.data.DataService.EvaluationSnapshotNamespace:input_type -> flipt.data.EvaluationNamespaceSnapshotRequest - 8, // 21: flipt.data.DataService.EvaluationSnapshotNamespace:output_type -> flipt.data.EvaluationNamespaceSnapshot - 21, // [21:22] is the sub-list for method output_type - 20, // [20:21] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name -} - -func init() { file_data_data_proto_init() } -func file_data_data_proto_init() { - if File_data_data_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_data_data_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationDistribution); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationRollout); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationRolloutThreshold); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationRolloutSegment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationSegment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationFlag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationConstraint); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationNamespaceSnapshot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_data_data_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvaluationNamespaceSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_data_data_proto_msgTypes[1].OneofWrappers = []interface{}{ - (*EvaluationRollout_Segment)(nil), - (*EvaluationRollout_Threshold)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_data_data_proto_rawDesc, - NumEnums: 0, - NumMessages: 10, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_data_data_proto_goTypes, - DependencyIndexes: file_data_data_proto_depIdxs, - MessageInfos: file_data_data_proto_msgTypes, - }.Build() - File_data_data_proto = out.File - file_data_data_proto_rawDesc = nil - file_data_data_proto_goTypes = nil - file_data_data_proto_depIdxs = nil -} diff --git a/rpc/flipt/data/data.pb.gw.go b/rpc/flipt/data/data.pb.gw.go deleted file mode 100644 index b03150d6bd..0000000000 --- a/rpc/flipt/data/data.pb.gw.go +++ /dev/null @@ -1,189 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: data/data.proto - -/* -Package data is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package data - -import ( - "context" - "io" - "net/http" - - "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" - "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/proto" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = metadata.Join - -func request_DataService_EvaluationSnapshotNamespace_0(ctx context.Context, marshaler runtime.Marshaler, client DataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq EvaluationNamespaceSnapshotRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["key"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "key") - } - - protoReq.Key, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key", err) - } - - msg, err := client.EvaluationSnapshotNamespace(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_DataService_EvaluationSnapshotNamespace_0(ctx context.Context, marshaler runtime.Marshaler, server DataServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq EvaluationNamespaceSnapshotRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["key"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "key") - } - - protoReq.Key, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key", err) - } - - msg, err := server.EvaluationSnapshotNamespace(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterDataServiceHandlerServer registers the http handlers for service DataService to "mux". -// UnaryRPC :call DataServiceServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterDataServiceHandlerFromEndpoint instead. -func RegisterDataServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server DataServiceServer) error { - - mux.Handle("GET", pattern_DataService_EvaluationSnapshotNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.data.DataService/EvaluationSnapshotNamespace", runtime.WithHTTPPathPattern("/internal/v1/evaluation/snapshot/namespace/{key}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_DataService_EvaluationSnapshotNamespace_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_DataService_EvaluationSnapshotNamespace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterDataServiceHandlerFromEndpoint is same as RegisterDataServiceHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterDataServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterDataServiceHandler(ctx, mux, conn) -} - -// RegisterDataServiceHandler registers the http handlers for service DataService to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterDataServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterDataServiceHandlerClient(ctx, mux, NewDataServiceClient(conn)) -} - -// RegisterDataServiceHandlerClient registers the http handlers for service DataService -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "DataServiceClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "DataServiceClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "DataServiceClient" to call the correct interceptors. -func RegisterDataServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client DataServiceClient) error { - - mux.Handle("GET", pattern_DataService_EvaluationSnapshotNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.data.DataService/EvaluationSnapshotNamespace", runtime.WithHTTPPathPattern("/internal/v1/evaluation/snapshot/namespace/{key}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_DataService_EvaluationSnapshotNamespace_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_DataService_EvaluationSnapshotNamespace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_DataService_EvaluationSnapshotNamespace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"internal", "v1", "evaluation", "snapshot", "namespace", "key"}, "")) -) - -var ( - forward_DataService_EvaluationSnapshotNamespace_0 = runtime.ForwardResponseMessage -) diff --git a/rpc/flipt/data/data.proto b/rpc/flipt/data/data.proto deleted file mode 100644 index e275ae318a..0000000000 --- a/rpc/flipt/data/data.proto +++ /dev/null @@ -1,88 +0,0 @@ -syntax = "proto3"; - -package flipt.data; - -import "flipt.proto"; -import "google/protobuf/timestamp.proto"; - -option go_package = "go.flipt.io/flipt/rpc/flipt/data"; - -message EvaluationDistribution { - string id = 1; - string rule_id = 2; - string variant_id = 3; - string variant_key = 4; - string variant_attachment = 5; - float rollout = 6; -} - -message EvaluationRollout { - flipt.RolloutType type = 1; - int32 rank = 2; - oneof rule { - EvaluationRolloutSegment segment = 3; - EvaluationRolloutThreshold threshold = 4; - } -} - -message EvaluationRolloutThreshold { - float percentage = 1; - bool value = 2; -} - -message EvaluationRolloutSegment { - bool value = 1; - flipt.SegmentOperator segment_operator = 2; - repeated EvaluationSegment segments = 3; -} - -message EvaluationSegment { - string key = 1; - string name = 2; - string description = 3; - flipt.MatchType match_type = 4; - google.protobuf.Timestamp created_at = 5; - google.protobuf.Timestamp updated_at = 6; - repeated EvaluationConstraint constraints = 7; -} - -message EvaluationFlag { - string key = 1; - string name = 2; - string description = 3; - bool enabled = 4; - flipt.FlagType type = 5; - google.protobuf.Timestamp created_at = 6; - google.protobuf.Timestamp updated_at = 7; - repeated EvaluationRule rules = 8; - repeated EvaluationRollout rollouts = 9; -} - -message EvaluationConstraint { - string id = 1; - flipt.ComparisonType type = 2; - string property = 3; - string operator = 4; - string value = 5; -} - -message EvaluationRule { - string id = 1; - repeated EvaluationSegment segments = 2; - int32 rank = 3; - flipt.SegmentOperator segment_operator = 4; - repeated EvaluationDistribution distributions = 5; -} - -message EvaluationNamespaceSnapshot { - flipt.Namespace namespace = 1; - repeated EvaluationFlag flags = 2; -} - -message EvaluationNamespaceSnapshotRequest { - string key = 1; -} - -service DataService { - rpc EvaluationSnapshotNamespace(EvaluationNamespaceSnapshotRequest) returns (EvaluationNamespaceSnapshot); -} diff --git a/rpc/flipt/data/data_grpc.pb.go b/rpc/flipt/data/data_grpc.pb.go deleted file mode 100644 index ebcb431a77..0000000000 --- a/rpc/flipt/data/data_grpc.pb.go +++ /dev/null @@ -1,109 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc (unknown) -// source: data/data.proto - -package data - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - DataService_EvaluationSnapshotNamespace_FullMethodName = "/flipt.data.DataService/EvaluationSnapshotNamespace" -) - -// DataServiceClient is the client API for DataService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type DataServiceClient interface { - EvaluationSnapshotNamespace(ctx context.Context, in *EvaluationNamespaceSnapshotRequest, opts ...grpc.CallOption) (*EvaluationNamespaceSnapshot, error) -} - -type dataServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewDataServiceClient(cc grpc.ClientConnInterface) DataServiceClient { - return &dataServiceClient{cc} -} - -func (c *dataServiceClient) EvaluationSnapshotNamespace(ctx context.Context, in *EvaluationNamespaceSnapshotRequest, opts ...grpc.CallOption) (*EvaluationNamespaceSnapshot, error) { - out := new(EvaluationNamespaceSnapshot) - err := c.cc.Invoke(ctx, DataService_EvaluationSnapshotNamespace_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// DataServiceServer is the server API for DataService service. -// All implementations must embed UnimplementedDataServiceServer -// for forward compatibility -type DataServiceServer interface { - EvaluationSnapshotNamespace(context.Context, *EvaluationNamespaceSnapshotRequest) (*EvaluationNamespaceSnapshot, error) - mustEmbedUnimplementedDataServiceServer() -} - -// UnimplementedDataServiceServer must be embedded to have forward compatible implementations. -type UnimplementedDataServiceServer struct { -} - -func (UnimplementedDataServiceServer) EvaluationSnapshotNamespace(context.Context, *EvaluationNamespaceSnapshotRequest) (*EvaluationNamespaceSnapshot, error) { - return nil, status.Errorf(codes.Unimplemented, "method EvaluationSnapshotNamespace not implemented") -} -func (UnimplementedDataServiceServer) mustEmbedUnimplementedDataServiceServer() {} - -// UnsafeDataServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to DataServiceServer will -// result in compilation errors. -type UnsafeDataServiceServer interface { - mustEmbedUnimplementedDataServiceServer() -} - -func RegisterDataServiceServer(s grpc.ServiceRegistrar, srv DataServiceServer) { - s.RegisterService(&DataService_ServiceDesc, srv) -} - -func _DataService_EvaluationSnapshotNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EvaluationNamespaceSnapshotRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataServiceServer).EvaluationSnapshotNamespace(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: DataService_EvaluationSnapshotNamespace_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataServiceServer).EvaluationSnapshotNamespace(ctx, req.(*EvaluationNamespaceSnapshotRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// DataService_ServiceDesc is the grpc.ServiceDesc for DataService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var DataService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "flipt.data.DataService", - HandlerType: (*DataServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "EvaluationSnapshotNamespace", - Handler: _DataService_EvaluationSnapshotNamespace_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "data/data.proto", -} diff --git a/rpc/flipt/evaluation/evaluation.pb.go b/rpc/flipt/evaluation/evaluation.pb.go index e58e037923..68560fc048 100644 --- a/rpc/flipt/evaluation/evaluation.pb.go +++ b/rpc/flipt/evaluation/evaluation.pb.go @@ -7,6 +7,7 @@ package evaluation import ( + flipt "go.flipt.io/flipt/rpc/flipt" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" @@ -729,6 +730,774 @@ func (x *ErrorEvaluationResponse) GetReason() ErrorEvaluationReason { return ErrorEvaluationReason_UNKNOWN_ERROR_EVALUATION_REASON } +type EvaluationDistribution struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"` + VariantId string `protobuf:"bytes,3,opt,name=variant_id,json=variantId,proto3" json:"variant_id,omitempty"` + VariantKey string `protobuf:"bytes,4,opt,name=variant_key,json=variantKey,proto3" json:"variant_key,omitempty"` + VariantAttachment string `protobuf:"bytes,5,opt,name=variant_attachment,json=variantAttachment,proto3" json:"variant_attachment,omitempty"` + Rollout float32 `protobuf:"fixed32,6,opt,name=rollout,proto3" json:"rollout,omitempty"` +} + +func (x *EvaluationDistribution) Reset() { + *x = EvaluationDistribution{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationDistribution) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationDistribution) ProtoMessage() {} + +func (x *EvaluationDistribution) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[7] + 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 EvaluationDistribution.ProtoReflect.Descriptor instead. +func (*EvaluationDistribution) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{7} +} + +func (x *EvaluationDistribution) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *EvaluationDistribution) GetRuleId() string { + if x != nil { + return x.RuleId + } + return "" +} + +func (x *EvaluationDistribution) GetVariantId() string { + if x != nil { + return x.VariantId + } + return "" +} + +func (x *EvaluationDistribution) GetVariantKey() string { + if x != nil { + return x.VariantKey + } + return "" +} + +func (x *EvaluationDistribution) GetVariantAttachment() string { + if x != nil { + return x.VariantAttachment + } + return "" +} + +func (x *EvaluationDistribution) GetRollout() float32 { + if x != nil { + return x.Rollout + } + return 0 +} + +type EvaluationRollout struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type flipt.RolloutType `protobuf:"varint,1,opt,name=type,proto3,enum=flipt.RolloutType" json:"type,omitempty"` + Rank int32 `protobuf:"varint,2,opt,name=rank,proto3" json:"rank,omitempty"` + // Types that are assignable to Rule: + // + // *EvaluationRollout_Segment + // *EvaluationRollout_Threshold + Rule isEvaluationRollout_Rule `protobuf_oneof:"rule"` +} + +func (x *EvaluationRollout) Reset() { + *x = EvaluationRollout{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationRollout) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationRollout) ProtoMessage() {} + +func (x *EvaluationRollout) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[8] + 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 EvaluationRollout.ProtoReflect.Descriptor instead. +func (*EvaluationRollout) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{8} +} + +func (x *EvaluationRollout) GetType() flipt.RolloutType { + if x != nil { + return x.Type + } + return flipt.RolloutType(0) +} + +func (x *EvaluationRollout) GetRank() int32 { + if x != nil { + return x.Rank + } + return 0 +} + +func (m *EvaluationRollout) GetRule() isEvaluationRollout_Rule { + if m != nil { + return m.Rule + } + return nil +} + +func (x *EvaluationRollout) GetSegment() *EvaluationRolloutSegment { + if x, ok := x.GetRule().(*EvaluationRollout_Segment); ok { + return x.Segment + } + return nil +} + +func (x *EvaluationRollout) GetThreshold() *EvaluationRolloutThreshold { + if x, ok := x.GetRule().(*EvaluationRollout_Threshold); ok { + return x.Threshold + } + return nil +} + +type isEvaluationRollout_Rule interface { + isEvaluationRollout_Rule() +} + +type EvaluationRollout_Segment struct { + Segment *EvaluationRolloutSegment `protobuf:"bytes,3,opt,name=segment,proto3,oneof"` +} + +type EvaluationRollout_Threshold struct { + Threshold *EvaluationRolloutThreshold `protobuf:"bytes,4,opt,name=threshold,proto3,oneof"` +} + +func (*EvaluationRollout_Segment) isEvaluationRollout_Rule() {} + +func (*EvaluationRollout_Threshold) isEvaluationRollout_Rule() {} + +type EvaluationRolloutThreshold struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Percentage float32 `protobuf:"fixed32,1,opt,name=percentage,proto3" json:"percentage,omitempty"` + Value bool `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *EvaluationRolloutThreshold) Reset() { + *x = EvaluationRolloutThreshold{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationRolloutThreshold) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationRolloutThreshold) ProtoMessage() {} + +func (x *EvaluationRolloutThreshold) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[9] + 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 EvaluationRolloutThreshold.ProtoReflect.Descriptor instead. +func (*EvaluationRolloutThreshold) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{9} +} + +func (x *EvaluationRolloutThreshold) GetPercentage() float32 { + if x != nil { + return x.Percentage + } + return 0 +} + +func (x *EvaluationRolloutThreshold) GetValue() bool { + if x != nil { + return x.Value + } + return false +} + +type EvaluationRolloutSegment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` + SegmentOperator flipt.SegmentOperator `protobuf:"varint,2,opt,name=segment_operator,json=segmentOperator,proto3,enum=flipt.SegmentOperator" json:"segment_operator,omitempty"` + Segments []*EvaluationSegment `protobuf:"bytes,3,rep,name=segments,proto3" json:"segments,omitempty"` +} + +func (x *EvaluationRolloutSegment) Reset() { + *x = EvaluationRolloutSegment{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationRolloutSegment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationRolloutSegment) ProtoMessage() {} + +func (x *EvaluationRolloutSegment) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[10] + 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 EvaluationRolloutSegment.ProtoReflect.Descriptor instead. +func (*EvaluationRolloutSegment) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{10} +} + +func (x *EvaluationRolloutSegment) GetValue() bool { + if x != nil { + return x.Value + } + return false +} + +func (x *EvaluationRolloutSegment) GetSegmentOperator() flipt.SegmentOperator { + if x != nil { + return x.SegmentOperator + } + return flipt.SegmentOperator(0) +} + +func (x *EvaluationRolloutSegment) GetSegments() []*EvaluationSegment { + if x != nil { + return x.Segments + } + return nil +} + +type EvaluationSegment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + MatchType flipt.MatchType `protobuf:"varint,4,opt,name=match_type,json=matchType,proto3,enum=flipt.MatchType" json:"match_type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Constraints []*EvaluationConstraint `protobuf:"bytes,7,rep,name=constraints,proto3" json:"constraints,omitempty"` +} + +func (x *EvaluationSegment) Reset() { + *x = EvaluationSegment{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationSegment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationSegment) ProtoMessage() {} + +func (x *EvaluationSegment) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[11] + 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 EvaluationSegment.ProtoReflect.Descriptor instead. +func (*EvaluationSegment) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{11} +} + +func (x *EvaluationSegment) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *EvaluationSegment) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EvaluationSegment) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *EvaluationSegment) GetMatchType() flipt.MatchType { + if x != nil { + return x.MatchType + } + return flipt.MatchType(0) +} + +func (x *EvaluationSegment) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *EvaluationSegment) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *EvaluationSegment) GetConstraints() []*EvaluationConstraint { + if x != nil { + return x.Constraints + } + return nil +} + +type EvaluationFlag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"` + Type flipt.FlagType `protobuf:"varint,5,opt,name=type,proto3,enum=flipt.FlagType" json:"type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Rules []*EvaluationRule `protobuf:"bytes,8,rep,name=rules,proto3" json:"rules,omitempty"` + Rollouts []*EvaluationRollout `protobuf:"bytes,9,rep,name=rollouts,proto3" json:"rollouts,omitempty"` +} + +func (x *EvaluationFlag) Reset() { + *x = EvaluationFlag{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationFlag) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationFlag) ProtoMessage() {} + +func (x *EvaluationFlag) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[12] + 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 EvaluationFlag.ProtoReflect.Descriptor instead. +func (*EvaluationFlag) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{12} +} + +func (x *EvaluationFlag) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *EvaluationFlag) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EvaluationFlag) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *EvaluationFlag) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *EvaluationFlag) GetType() flipt.FlagType { + if x != nil { + return x.Type + } + return flipt.FlagType(0) +} + +func (x *EvaluationFlag) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *EvaluationFlag) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *EvaluationFlag) GetRules() []*EvaluationRule { + if x != nil { + return x.Rules + } + return nil +} + +func (x *EvaluationFlag) GetRollouts() []*EvaluationRollout { + if x != nil { + return x.Rollouts + } + return nil +} + +type EvaluationConstraint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type flipt.ComparisonType `protobuf:"varint,2,opt,name=type,proto3,enum=flipt.ComparisonType" json:"type,omitempty"` + Property string `protobuf:"bytes,3,opt,name=property,proto3" json:"property,omitempty"` + Operator string `protobuf:"bytes,4,opt,name=operator,proto3" json:"operator,omitempty"` + Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *EvaluationConstraint) Reset() { + *x = EvaluationConstraint{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationConstraint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationConstraint) ProtoMessage() {} + +func (x *EvaluationConstraint) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[13] + 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 EvaluationConstraint.ProtoReflect.Descriptor instead. +func (*EvaluationConstraint) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{13} +} + +func (x *EvaluationConstraint) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *EvaluationConstraint) GetType() flipt.ComparisonType { + if x != nil { + return x.Type + } + return flipt.ComparisonType(0) +} + +func (x *EvaluationConstraint) GetProperty() string { + if x != nil { + return x.Property + } + return "" +} + +func (x *EvaluationConstraint) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *EvaluationConstraint) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type EvaluationRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Segments []*EvaluationSegment `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"` + Rank int32 `protobuf:"varint,3,opt,name=rank,proto3" json:"rank,omitempty"` + SegmentOperator flipt.SegmentOperator `protobuf:"varint,4,opt,name=segment_operator,json=segmentOperator,proto3,enum=flipt.SegmentOperator" json:"segment_operator,omitempty"` + Distributions []*EvaluationDistribution `protobuf:"bytes,5,rep,name=distributions,proto3" json:"distributions,omitempty"` +} + +func (x *EvaluationRule) Reset() { + *x = EvaluationRule{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationRule) ProtoMessage() {} + +func (x *EvaluationRule) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[14] + 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 EvaluationRule.ProtoReflect.Descriptor instead. +func (*EvaluationRule) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{14} +} + +func (x *EvaluationRule) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *EvaluationRule) GetSegments() []*EvaluationSegment { + if x != nil { + return x.Segments + } + return nil +} + +func (x *EvaluationRule) GetRank() int32 { + if x != nil { + return x.Rank + } + return 0 +} + +func (x *EvaluationRule) GetSegmentOperator() flipt.SegmentOperator { + if x != nil { + return x.SegmentOperator + } + return flipt.SegmentOperator(0) +} + +func (x *EvaluationRule) GetDistributions() []*EvaluationDistribution { + if x != nil { + return x.Distributions + } + return nil +} + +type EvaluationNamespaceSnapshot struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Namespace *flipt.Namespace `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + Flags []*EvaluationFlag `protobuf:"bytes,2,rep,name=flags,proto3" json:"flags,omitempty"` +} + +func (x *EvaluationNamespaceSnapshot) Reset() { + *x = EvaluationNamespaceSnapshot{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationNamespaceSnapshot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationNamespaceSnapshot) ProtoMessage() {} + +func (x *EvaluationNamespaceSnapshot) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[15] + 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 EvaluationNamespaceSnapshot.ProtoReflect.Descriptor instead. +func (*EvaluationNamespaceSnapshot) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{15} +} + +func (x *EvaluationNamespaceSnapshot) GetNamespace() *flipt.Namespace { + if x != nil { + return x.Namespace + } + return nil +} + +func (x *EvaluationNamespaceSnapshot) GetFlags() []*EvaluationFlag { + if x != nil { + return x.Flags + } + return nil +} + +type EvaluationNamespaceSnapshotRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *EvaluationNamespaceSnapshotRequest) Reset() { + *x = EvaluationNamespaceSnapshotRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_evaluation_evaluation_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EvaluationNamespaceSnapshotRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvaluationNamespaceSnapshotRequest) ProtoMessage() {} + +func (x *EvaluationNamespaceSnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_evaluation_evaluation_proto_msgTypes[16] + 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 EvaluationNamespaceSnapshotRequest.ProtoReflect.Descriptor instead. +func (*EvaluationNamespaceSnapshotRequest) Descriptor() ([]byte, []int) { + return file_evaluation_evaluation_proto_rawDescGZIP(), []int{16} +} + +func (x *EvaluationNamespaceSnapshotRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + var File_evaluation_evaluation_proto protoreflect.FileDescriptor var file_evaluation_evaluation_proto_rawDesc = []byte{ @@ -737,165 +1506,304 @@ var file_evaluation_evaluation_proto_rawDesc = []byte{ 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0x97, 0x02, 0x0a, 0x11, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x6c, - 0x61, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x6c, - 0x61, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x3a, - 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, 0x16, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x22, 0xb4, 0x01, 0x0a, 0x17, 0x42, 0x61, 0x74, 0x63, 0x68, 0x45, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, + 0x1a, 0x0b, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x02, + 0x0a, 0x11, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x6c, 0x61, 0x67, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x6c, 0x61, 0x67, 0x4b, + 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, + 0x4a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, + 0x12, 0x3f, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x03, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x22, 0xb4, 0x01, 0x0a, 0x17, 0x42, 0x61, 0x74, 0x63, 0x68, 0x45, 0x76, 0x61, 0x6c, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x09, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x22, 0xe6, 0x02, 0x0a, 0x12, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, + 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, + 0x10, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, + 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, + 0x61, 0x6e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x45, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, + 0x52, 0x0f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x52, 0x0a, 0x0e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x69, 0x70, + 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x9d, 0x02, 0x0a, 0x19, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x69, 0x70, + 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x38, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x6c, 0x61, 0x67, 0x4b, 0x65, + 0x79, 0x22, 0x8c, 0x03, 0x0a, 0x19, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, + 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, + 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x22, 0xe6, 0x02, 0x0a, 0x12, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x58, 0x0a, 0x10, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x69, - 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, - 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x65, - 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x45, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x6c, 0x61, 0x67, 0x4b, 0x65, 0x79, + 0x22, 0x9a, 0x01, 0x0a, 0x17, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x66, 0x6c, 0x61, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9d, 0x02, 0x0a, 0x19, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, - 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, - 0x69, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, - 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xca, 0x01, + 0x0a, 0x16, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x4b, 0x65, + 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x22, 0xed, 0x01, 0x0a, 0x11, 0x45, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, + 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x46, 0x0a, 0x07, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, + 0x75, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, + 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x54, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x52, 0x0a, 0x1a, 0x45, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb4, + 0x01, 0x0a, 0x18, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, + 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x41, 0x0a, 0x10, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x66, 0x6c, + 0x69, 0x70, 0x74, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x11, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x74, 0x73, 0x22, 0x86, 0x03, 0x0a, 0x0e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, + 0x46, 0x6c, 0x61, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x6c, 0x61, - 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x6c, 0x61, - 0x67, 0x4b, 0x65, 0x79, 0x22, 0x8c, 0x03, 0x0a, 0x19, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, - 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, - 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x38, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x6c, 0x61, 0x67, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x6c, 0x61, 0x67, - 0x4b, 0x65, 0x79, 0x22, 0x9a, 0x01, 0x0a, 0x17, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x66, 0x6c, 0x61, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, - 0x3f, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x27, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x2a, 0x92, 0x01, 0x0a, 0x10, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x49, 0x53, - 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, 0x54, - 0x43, 0x48, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, - 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, - 0x54, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0x63, 0x0a, 0x15, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x23, - 0x0a, 0x1f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x08, + 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, + 0x6f, 0x75, 0x74, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x22, 0x9f, 0x01, + 0x0a, 0x14, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1a, 0x0a, + 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x88, 0x02, 0x0a, 0x0e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, + 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x41, 0x0a, 0x10, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x0d, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x1b, 0x45, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x69, 0x70, + 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x05, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x22, 0x36, 0x0a, 0x22, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x2a, 0x92, 0x01, 0x0a, 0x10, 0x45, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x1d, 0x0a, 0x19, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x23, + 0x0a, 0x1f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, - 0x4e, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x2a, 0x88, 0x01, 0x0a, 0x16, 0x45, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x56, 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, - 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, - 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x42, - 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, + 0x4e, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x56, 0x41, + 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x02, + 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x41, 0x4c, + 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x03, 0x2a, + 0x63, 0x0a, 0x15, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x25, 0x0a, + 0x21, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x10, 0x01, 0x2a, 0x88, 0x01, 0x0a, 0x16, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x24, 0x0a, 0x20, 0x56, 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x02, 0x32, 0xb1, 0x02, 0x0a, 0x11, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x07, 0x42, - 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, - 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, - 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x07, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x69, - 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x6e, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x05, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x45, 0x76, 0x61, 0x6c, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, + 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, + 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, + 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x32, + 0xb1, 0x02, 0x0a, 0x11, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x07, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, + 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, + 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, + 0x23, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x45, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x05, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x28, 0x5a, 0x26, 0x67, 0x6f, 0x2e, - 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x69, 0x6f, 0x2f, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2f, 0x72, - 0x70, 0x63, 0x2f, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x45, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x32, 0x92, 0x01, 0x0a, 0x0b, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1b, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x66, 0x6c, 0x69, 0x70, + 0x74, 0x2e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x28, 0x5a, 0x26, 0x67, 0x6f, 0x2e, 0x66, + 0x6c, 0x69, 0x70, 0x74, 0x2e, 0x69, 0x6f, 0x2f, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2f, 0x72, 0x70, + 0x63, 0x2f, 0x66, 0x6c, 0x69, 0x70, 0x74, 0x2f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -911,23 +1819,39 @@ func file_evaluation_evaluation_proto_rawDescGZIP() []byte { } var file_evaluation_evaluation_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_evaluation_evaluation_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_evaluation_evaluation_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_evaluation_evaluation_proto_goTypes = []interface{}{ - (EvaluationReason)(0), // 0: flipt.evaluation.EvaluationReason - (ErrorEvaluationReason)(0), // 1: flipt.evaluation.ErrorEvaluationReason - (EvaluationResponseType)(0), // 2: flipt.evaluation.EvaluationResponseType - (*EvaluationRequest)(nil), // 3: flipt.evaluation.EvaluationRequest - (*BatchEvaluationRequest)(nil), // 4: flipt.evaluation.BatchEvaluationRequest - (*BatchEvaluationResponse)(nil), // 5: flipt.evaluation.BatchEvaluationResponse - (*EvaluationResponse)(nil), // 6: flipt.evaluation.EvaluationResponse - (*BooleanEvaluationResponse)(nil), // 7: flipt.evaluation.BooleanEvaluationResponse - (*VariantEvaluationResponse)(nil), // 8: flipt.evaluation.VariantEvaluationResponse - (*ErrorEvaluationResponse)(nil), // 9: flipt.evaluation.ErrorEvaluationResponse - nil, // 10: flipt.evaluation.EvaluationRequest.ContextEntry - (*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp + (EvaluationReason)(0), // 0: flipt.evaluation.EvaluationReason + (ErrorEvaluationReason)(0), // 1: flipt.evaluation.ErrorEvaluationReason + (EvaluationResponseType)(0), // 2: flipt.evaluation.EvaluationResponseType + (*EvaluationRequest)(nil), // 3: flipt.evaluation.EvaluationRequest + (*BatchEvaluationRequest)(nil), // 4: flipt.evaluation.BatchEvaluationRequest + (*BatchEvaluationResponse)(nil), // 5: flipt.evaluation.BatchEvaluationResponse + (*EvaluationResponse)(nil), // 6: flipt.evaluation.EvaluationResponse + (*BooleanEvaluationResponse)(nil), // 7: flipt.evaluation.BooleanEvaluationResponse + (*VariantEvaluationResponse)(nil), // 8: flipt.evaluation.VariantEvaluationResponse + (*ErrorEvaluationResponse)(nil), // 9: flipt.evaluation.ErrorEvaluationResponse + (*EvaluationDistribution)(nil), // 10: flipt.evaluation.EvaluationDistribution + (*EvaluationRollout)(nil), // 11: flipt.evaluation.EvaluationRollout + (*EvaluationRolloutThreshold)(nil), // 12: flipt.evaluation.EvaluationRolloutThreshold + (*EvaluationRolloutSegment)(nil), // 13: flipt.evaluation.EvaluationRolloutSegment + (*EvaluationSegment)(nil), // 14: flipt.evaluation.EvaluationSegment + (*EvaluationFlag)(nil), // 15: flipt.evaluation.EvaluationFlag + (*EvaluationConstraint)(nil), // 16: flipt.evaluation.EvaluationConstraint + (*EvaluationRule)(nil), // 17: flipt.evaluation.EvaluationRule + (*EvaluationNamespaceSnapshot)(nil), // 18: flipt.evaluation.EvaluationNamespaceSnapshot + (*EvaluationNamespaceSnapshotRequest)(nil), // 19: flipt.evaluation.EvaluationNamespaceSnapshotRequest + nil, // 20: flipt.evaluation.EvaluationRequest.ContextEntry + (*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp + (flipt.RolloutType)(0), // 22: flipt.RolloutType + (flipt.SegmentOperator)(0), // 23: flipt.SegmentOperator + (flipt.MatchType)(0), // 24: flipt.MatchType + (flipt.FlagType)(0), // 25: flipt.FlagType + (flipt.ComparisonType)(0), // 26: flipt.ComparisonType + (*flipt.Namespace)(nil), // 27: flipt.Namespace } var file_evaluation_evaluation_proto_depIdxs = []int32{ - 10, // 0: flipt.evaluation.EvaluationRequest.context:type_name -> flipt.evaluation.EvaluationRequest.ContextEntry + 20, // 0: flipt.evaluation.EvaluationRequest.context:type_name -> flipt.evaluation.EvaluationRequest.ContextEntry 3, // 1: flipt.evaluation.BatchEvaluationRequest.requests:type_name -> flipt.evaluation.EvaluationRequest 6, // 2: flipt.evaluation.BatchEvaluationResponse.responses:type_name -> flipt.evaluation.EvaluationResponse 2, // 3: flipt.evaluation.EvaluationResponse.type:type_name -> flipt.evaluation.EvaluationResponseType @@ -935,21 +1859,43 @@ var file_evaluation_evaluation_proto_depIdxs = []int32{ 8, // 5: flipt.evaluation.EvaluationResponse.variant_response:type_name -> flipt.evaluation.VariantEvaluationResponse 9, // 6: flipt.evaluation.EvaluationResponse.error_response:type_name -> flipt.evaluation.ErrorEvaluationResponse 0, // 7: flipt.evaluation.BooleanEvaluationResponse.reason:type_name -> flipt.evaluation.EvaluationReason - 11, // 8: flipt.evaluation.BooleanEvaluationResponse.timestamp:type_name -> google.protobuf.Timestamp + 21, // 8: flipt.evaluation.BooleanEvaluationResponse.timestamp:type_name -> google.protobuf.Timestamp 0, // 9: flipt.evaluation.VariantEvaluationResponse.reason:type_name -> flipt.evaluation.EvaluationReason - 11, // 10: flipt.evaluation.VariantEvaluationResponse.timestamp:type_name -> google.protobuf.Timestamp + 21, // 10: flipt.evaluation.VariantEvaluationResponse.timestamp:type_name -> google.protobuf.Timestamp 1, // 11: flipt.evaluation.ErrorEvaluationResponse.reason:type_name -> flipt.evaluation.ErrorEvaluationReason - 3, // 12: flipt.evaluation.EvaluationService.Boolean:input_type -> flipt.evaluation.EvaluationRequest - 3, // 13: flipt.evaluation.EvaluationService.Variant:input_type -> flipt.evaluation.EvaluationRequest - 4, // 14: flipt.evaluation.EvaluationService.Batch:input_type -> flipt.evaluation.BatchEvaluationRequest - 7, // 15: flipt.evaluation.EvaluationService.Boolean:output_type -> flipt.evaluation.BooleanEvaluationResponse - 8, // 16: flipt.evaluation.EvaluationService.Variant:output_type -> flipt.evaluation.VariantEvaluationResponse - 5, // 17: flipt.evaluation.EvaluationService.Batch:output_type -> flipt.evaluation.BatchEvaluationResponse - 15, // [15:18] is the sub-list for method output_type - 12, // [12:15] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 22, // 12: flipt.evaluation.EvaluationRollout.type:type_name -> flipt.RolloutType + 13, // 13: flipt.evaluation.EvaluationRollout.segment:type_name -> flipt.evaluation.EvaluationRolloutSegment + 12, // 14: flipt.evaluation.EvaluationRollout.threshold:type_name -> flipt.evaluation.EvaluationRolloutThreshold + 23, // 15: flipt.evaluation.EvaluationRolloutSegment.segment_operator:type_name -> flipt.SegmentOperator + 14, // 16: flipt.evaluation.EvaluationRolloutSegment.segments:type_name -> flipt.evaluation.EvaluationSegment + 24, // 17: flipt.evaluation.EvaluationSegment.match_type:type_name -> flipt.MatchType + 21, // 18: flipt.evaluation.EvaluationSegment.created_at:type_name -> google.protobuf.Timestamp + 21, // 19: flipt.evaluation.EvaluationSegment.updated_at:type_name -> google.protobuf.Timestamp + 16, // 20: flipt.evaluation.EvaluationSegment.constraints:type_name -> flipt.evaluation.EvaluationConstraint + 25, // 21: flipt.evaluation.EvaluationFlag.type:type_name -> flipt.FlagType + 21, // 22: flipt.evaluation.EvaluationFlag.created_at:type_name -> google.protobuf.Timestamp + 21, // 23: flipt.evaluation.EvaluationFlag.updated_at:type_name -> google.protobuf.Timestamp + 17, // 24: flipt.evaluation.EvaluationFlag.rules:type_name -> flipt.evaluation.EvaluationRule + 11, // 25: flipt.evaluation.EvaluationFlag.rollouts:type_name -> flipt.evaluation.EvaluationRollout + 26, // 26: flipt.evaluation.EvaluationConstraint.type:type_name -> flipt.ComparisonType + 14, // 27: flipt.evaluation.EvaluationRule.segments:type_name -> flipt.evaluation.EvaluationSegment + 23, // 28: flipt.evaluation.EvaluationRule.segment_operator:type_name -> flipt.SegmentOperator + 10, // 29: flipt.evaluation.EvaluationRule.distributions:type_name -> flipt.evaluation.EvaluationDistribution + 27, // 30: flipt.evaluation.EvaluationNamespaceSnapshot.namespace:type_name -> flipt.Namespace + 15, // 31: flipt.evaluation.EvaluationNamespaceSnapshot.flags:type_name -> flipt.evaluation.EvaluationFlag + 3, // 32: flipt.evaluation.EvaluationService.Boolean:input_type -> flipt.evaluation.EvaluationRequest + 3, // 33: flipt.evaluation.EvaluationService.Variant:input_type -> flipt.evaluation.EvaluationRequest + 4, // 34: flipt.evaluation.EvaluationService.Batch:input_type -> flipt.evaluation.BatchEvaluationRequest + 19, // 35: flipt.evaluation.DataService.EvaluationSnapshotNamespace:input_type -> flipt.evaluation.EvaluationNamespaceSnapshotRequest + 7, // 36: flipt.evaluation.EvaluationService.Boolean:output_type -> flipt.evaluation.BooleanEvaluationResponse + 8, // 37: flipt.evaluation.EvaluationService.Variant:output_type -> flipt.evaluation.VariantEvaluationResponse + 5, // 38: flipt.evaluation.EvaluationService.Batch:output_type -> flipt.evaluation.BatchEvaluationResponse + 18, // 39: flipt.evaluation.DataService.EvaluationSnapshotNamespace:output_type -> flipt.evaluation.EvaluationNamespaceSnapshot + 36, // [36:40] is the sub-list for method output_type + 32, // [32:36] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name } func init() { file_evaluation_evaluation_proto_init() } @@ -1042,21 +1988,145 @@ func file_evaluation_evaluation_proto_init() { return nil } } + file_evaluation_evaluation_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationDistribution); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationRollout); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationRolloutThreshold); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationRolloutSegment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationSegment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationFlag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationConstraint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationRule); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationNamespaceSnapshot); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_evaluation_evaluation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvaluationNamespaceSnapshotRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_evaluation_evaluation_proto_msgTypes[3].OneofWrappers = []interface{}{ (*EvaluationResponse_BooleanResponse)(nil), (*EvaluationResponse_VariantResponse)(nil), (*EvaluationResponse_ErrorResponse)(nil), } + file_evaluation_evaluation_proto_msgTypes[8].OneofWrappers = []interface{}{ + (*EvaluationRollout_Segment)(nil), + (*EvaluationRollout_Threshold)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_evaluation_evaluation_proto_rawDesc, NumEnums: 3, - NumMessages: 8, + NumMessages: 18, NumExtensions: 0, - NumServices: 1, + NumServices: 2, }, GoTypes: file_evaluation_evaluation_proto_goTypes, DependencyIndexes: file_evaluation_evaluation_proto_depIdxs, diff --git a/rpc/flipt/evaluation/evaluation.pb.gw.go b/rpc/flipt/evaluation/evaluation.pb.gw.go index 97ed19b3cc..fe26054cf4 100644 --- a/rpc/flipt/evaluation/evaluation.pb.gw.go +++ b/rpc/flipt/evaluation/evaluation.pb.gw.go @@ -133,6 +133,58 @@ func local_request_EvaluationService_Batch_0(ctx context.Context, marshaler runt } +func request_DataService_EvaluationSnapshotNamespace_0(ctx context.Context, marshaler runtime.Marshaler, client DataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq EvaluationNamespaceSnapshotRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["key"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "key") + } + + protoReq.Key, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key", err) + } + + msg, err := client.EvaluationSnapshotNamespace(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_DataService_EvaluationSnapshotNamespace_0(ctx context.Context, marshaler runtime.Marshaler, server DataServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq EvaluationNamespaceSnapshotRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["key"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "key") + } + + protoReq.Key, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key", err) + } + + msg, err := server.EvaluationSnapshotNamespace(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterEvaluationServiceHandlerServer registers the http handlers for service EvaluationService to "mux". // UnaryRPC :call EvaluationServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -217,6 +269,40 @@ func RegisterEvaluationServiceHandlerServer(ctx context.Context, mux *runtime.Se return nil } +// RegisterDataServiceHandlerServer registers the http handlers for service DataService to "mux". +// UnaryRPC :call DataServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterDataServiceHandlerFromEndpoint instead. +func RegisterDataServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server DataServiceServer) error { + + mux.Handle("GET", pattern_DataService_EvaluationSnapshotNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.evaluation.DataService/EvaluationSnapshotNamespace", runtime.WithHTTPPathPattern("/internal/v1/evaluation/snapshot/namespace/{key}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_DataService_EvaluationSnapshotNamespace_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_DataService_EvaluationSnapshotNamespace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + // RegisterEvaluationServiceHandlerFromEndpoint is same as RegisterEvaluationServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterEvaluationServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { @@ -339,3 +425,74 @@ var ( forward_EvaluationService_Batch_0 = runtime.ForwardResponseMessage ) + +// RegisterDataServiceHandlerFromEndpoint is same as RegisterDataServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterDataServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.DialContext(ctx, endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterDataServiceHandler(ctx, mux, conn) +} + +// RegisterDataServiceHandler registers the http handlers for service DataService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterDataServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterDataServiceHandlerClient(ctx, mux, NewDataServiceClient(conn)) +} + +// RegisterDataServiceHandlerClient registers the http handlers for service DataService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "DataServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "DataServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "DataServiceClient" to call the correct interceptors. +func RegisterDataServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client DataServiceClient) error { + + mux.Handle("GET", pattern_DataService_EvaluationSnapshotNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.evaluation.DataService/EvaluationSnapshotNamespace", runtime.WithHTTPPathPattern("/internal/v1/evaluation/snapshot/namespace/{key}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_DataService_EvaluationSnapshotNamespace_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_DataService_EvaluationSnapshotNamespace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_DataService_EvaluationSnapshotNamespace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"internal", "v1", "evaluation", "snapshot", "namespace", "key"}, "")) +) + +var ( + forward_DataService_EvaluationSnapshotNamespace_0 = runtime.ForwardResponseMessage +) diff --git a/rpc/flipt/evaluation/evaluation.proto b/rpc/flipt/evaluation/evaluation.proto index bb72d10196..df97420fe2 100644 --- a/rpc/flipt/evaluation/evaluation.proto +++ b/rpc/flipt/evaluation/evaluation.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package flipt.evaluation; import "google/protobuf/timestamp.proto"; +import "flipt.proto"; option go_package = "go.flipt.io/flipt/rpc/flipt/evaluation"; @@ -84,3 +85,83 @@ service EvaluationService { rpc Variant(EvaluationRequest) returns (VariantEvaluationResponse) {} rpc Batch(BatchEvaluationRequest) returns (BatchEvaluationResponse) {} } + +message EvaluationDistribution { + string id = 1; + string rule_id = 2; + string variant_id = 3; + string variant_key = 4; + string variant_attachment = 5; + float rollout = 6; +} + +message EvaluationRollout { + flipt.RolloutType type = 1; + int32 rank = 2; + oneof rule { + EvaluationRolloutSegment segment = 3; + EvaluationRolloutThreshold threshold = 4; + } +} + +message EvaluationRolloutThreshold { + float percentage = 1; + bool value = 2; +} + +message EvaluationRolloutSegment { + bool value = 1; + flipt.SegmentOperator segment_operator = 2; + repeated EvaluationSegment segments = 3; +} + +message EvaluationSegment { + string key = 1; + string name = 2; + string description = 3; + flipt.MatchType match_type = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + repeated EvaluationConstraint constraints = 7; +} + +message EvaluationFlag { + string key = 1; + string name = 2; + string description = 3; + bool enabled = 4; + flipt.FlagType type = 5; + google.protobuf.Timestamp created_at = 6; + google.protobuf.Timestamp updated_at = 7; + repeated EvaluationRule rules = 8; + repeated EvaluationRollout rollouts = 9; +} + +message EvaluationConstraint { + string id = 1; + flipt.ComparisonType type = 2; + string property = 3; + string operator = 4; + string value = 5; +} + +message EvaluationRule { + string id = 1; + repeated EvaluationSegment segments = 2; + int32 rank = 3; + flipt.SegmentOperator segment_operator = 4; + repeated EvaluationDistribution distributions = 5; +} + +message EvaluationNamespaceSnapshot { + flipt.Namespace namespace = 1; + repeated EvaluationFlag flags = 2; +} + +message EvaluationNamespaceSnapshotRequest { + string key = 1; +} + +service DataService { + rpc EvaluationSnapshotNamespace(EvaluationNamespaceSnapshotRequest) returns (EvaluationNamespaceSnapshot); +} diff --git a/rpc/flipt/evaluation/evaluation_grpc.pb.go b/rpc/flipt/evaluation/evaluation_grpc.pb.go index 2aff45684e..537d680e50 100644 --- a/rpc/flipt/evaluation/evaluation_grpc.pb.go +++ b/rpc/flipt/evaluation/evaluation_grpc.pb.go @@ -181,3 +181,93 @@ var EvaluationService_ServiceDesc = grpc.ServiceDesc{ Streams: []grpc.StreamDesc{}, Metadata: "evaluation/evaluation.proto", } + +const ( + DataService_EvaluationSnapshotNamespace_FullMethodName = "/flipt.evaluation.DataService/EvaluationSnapshotNamespace" +) + +// DataServiceClient is the client API for DataService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DataServiceClient interface { + EvaluationSnapshotNamespace(ctx context.Context, in *EvaluationNamespaceSnapshotRequest, opts ...grpc.CallOption) (*EvaluationNamespaceSnapshot, error) +} + +type dataServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewDataServiceClient(cc grpc.ClientConnInterface) DataServiceClient { + return &dataServiceClient{cc} +} + +func (c *dataServiceClient) EvaluationSnapshotNamespace(ctx context.Context, in *EvaluationNamespaceSnapshotRequest, opts ...grpc.CallOption) (*EvaluationNamespaceSnapshot, error) { + out := new(EvaluationNamespaceSnapshot) + err := c.cc.Invoke(ctx, DataService_EvaluationSnapshotNamespace_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// DataServiceServer is the server API for DataService service. +// All implementations must embed UnimplementedDataServiceServer +// for forward compatibility +type DataServiceServer interface { + EvaluationSnapshotNamespace(context.Context, *EvaluationNamespaceSnapshotRequest) (*EvaluationNamespaceSnapshot, error) + mustEmbedUnimplementedDataServiceServer() +} + +// UnimplementedDataServiceServer must be embedded to have forward compatible implementations. +type UnimplementedDataServiceServer struct { +} + +func (UnimplementedDataServiceServer) EvaluationSnapshotNamespace(context.Context, *EvaluationNamespaceSnapshotRequest) (*EvaluationNamespaceSnapshot, error) { + return nil, status.Errorf(codes.Unimplemented, "method EvaluationSnapshotNamespace not implemented") +} +func (UnimplementedDataServiceServer) mustEmbedUnimplementedDataServiceServer() {} + +// UnsafeDataServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DataServiceServer will +// result in compilation errors. +type UnsafeDataServiceServer interface { + mustEmbedUnimplementedDataServiceServer() +} + +func RegisterDataServiceServer(s grpc.ServiceRegistrar, srv DataServiceServer) { + s.RegisterService(&DataService_ServiceDesc, srv) +} + +func _DataService_EvaluationSnapshotNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EvaluationNamespaceSnapshotRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DataServiceServer).EvaluationSnapshotNamespace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: DataService_EvaluationSnapshotNamespace_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DataServiceServer).EvaluationSnapshotNamespace(ctx, req.(*EvaluationNamespaceSnapshotRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// DataService_ServiceDesc is the grpc.ServiceDesc for DataService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DataService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "flipt.evaluation.DataService", + HandlerType: (*DataServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "EvaluationSnapshotNamespace", + Handler: _DataService_EvaluationSnapshotNamespace_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "evaluation/evaluation.proto", +} diff --git a/rpc/flipt/flipt.yaml b/rpc/flipt/flipt.yaml index ebad8489a0..8535049bab 100644 --- a/rpc/flipt/flipt.yaml +++ b/rpc/flipt/flipt.yaml @@ -313,5 +313,5 @@ http: get: /auth/v1/method/github/callback # internal routes - - selector: flipt.data.DataService.EvaluationSnapshotNamespace - get: /internal/v1/evaluation/snapshot/namespace/{key} \ No newline at end of file + - selector: flipt.evaluation.DataService.EvaluationSnapshotNamespace + get: /internal/v1/evaluation/snapshot/namespace/{key} diff --git a/sdk/go/evaluation.sdk.gen.go b/sdk/go/evaluation.sdk.gen.go index 2a1c894f75..ed57289df5 100644 --- a/sdk/go/evaluation.sdk.gen.go +++ b/sdk/go/evaluation.sdk.gen.go @@ -7,12 +7,28 @@ import ( evaluation "go.flipt.io/flipt/rpc/flipt/evaluation" ) +type EvaluationClient interface { + EvaluationServiceClient() evaluation.EvaluationServiceClient + DataServiceClient() evaluation.DataServiceClient +} + type Evaluation struct { + transport EvaluationClient + tokenProvider ClientTokenProvider +} + +type EvaluationService struct { transport evaluation.EvaluationServiceClient tokenProvider ClientTokenProvider } -func (x *Evaluation) Boolean(ctx context.Context, v *evaluation.EvaluationRequest) (*evaluation.BooleanEvaluationResponse, error) { +func (s Evaluation) EvaluationService() *EvaluationService { + return &EvaluationService{ + transport: s.transport.EvaluationServiceClient(), + tokenProvider: s.tokenProvider, + } +} +func (x *EvaluationService) Boolean(ctx context.Context, v *evaluation.EvaluationRequest) (*evaluation.BooleanEvaluationResponse, error) { ctx, err := authenticate(ctx, x.tokenProvider) if err != nil { return nil, err @@ -20,7 +36,7 @@ func (x *Evaluation) Boolean(ctx context.Context, v *evaluation.EvaluationReques return x.transport.Boolean(ctx, v) } -func (x *Evaluation) Variant(ctx context.Context, v *evaluation.EvaluationRequest) (*evaluation.VariantEvaluationResponse, error) { +func (x *EvaluationService) Variant(ctx context.Context, v *evaluation.EvaluationRequest) (*evaluation.VariantEvaluationResponse, error) { ctx, err := authenticate(ctx, x.tokenProvider) if err != nil { return nil, err @@ -28,10 +44,29 @@ func (x *Evaluation) Variant(ctx context.Context, v *evaluation.EvaluationReques return x.transport.Variant(ctx, v) } -func (x *Evaluation) Batch(ctx context.Context, v *evaluation.BatchEvaluationRequest) (*evaluation.BatchEvaluationResponse, error) { +func (x *EvaluationService) Batch(ctx context.Context, v *evaluation.BatchEvaluationRequest) (*evaluation.BatchEvaluationResponse, error) { ctx, err := authenticate(ctx, x.tokenProvider) if err != nil { return nil, err } return x.transport.Batch(ctx, v) } + +type DataService struct { + transport evaluation.DataServiceClient + tokenProvider ClientTokenProvider +} + +func (s Evaluation) DataService() *DataService { + return &DataService{ + transport: s.transport.DataServiceClient(), + tokenProvider: s.tokenProvider, + } +} +func (x *DataService) EvaluationSnapshotNamespace(ctx context.Context, v *evaluation.EvaluationNamespaceSnapshotRequest) (*evaluation.EvaluationNamespaceSnapshot, error) { + ctx, err := authenticate(ctx, x.tokenProvider) + if err != nil { + return nil, err + } + return x.transport.EvaluationSnapshotNamespace(ctx, v) +} diff --git a/sdk/go/grpc/grpc.sdk.gen.go b/sdk/go/grpc/grpc.sdk.gen.go index 757b836741..b1387c99a0 100644 --- a/sdk/go/grpc/grpc.sdk.gen.go +++ b/sdk/go/grpc/grpc.sdk.gen.go @@ -5,7 +5,6 @@ package grpc import ( flipt "go.flipt.io/flipt/rpc/flipt" auth "go.flipt.io/flipt/rpc/flipt/auth" - data "go.flipt.io/flipt/rpc/flipt/data" evaluation "go.flipt.io/flipt/rpc/flipt/evaluation" meta "go.flipt.io/flipt/rpc/flipt/meta" _go "go.flipt.io/flipt/sdk/go" @@ -58,14 +57,22 @@ func (t Transport) FliptClient() flipt.FliptClient { return flipt.NewFliptClient(t.cc) } -func (t Transport) DataClient() data.DataServiceClient { - return data.NewDataServiceClient(t.cc) +type evaluationClient struct { + cc grpc.ClientConnInterface } -func (t Transport) EvaluationClient() evaluation.EvaluationServiceClient { +func (t evaluationClient) EvaluationServiceClient() evaluation.EvaluationServiceClient { return evaluation.NewEvaluationServiceClient(t.cc) } +func (t evaluationClient) DataServiceClient() evaluation.DataServiceClient { + return evaluation.NewDataServiceClient(t.cc) +} + +func (t Transport) EvaluationClient() _go.EvaluationClient { + return evaluationClient{cc: t.cc} +} + func (t Transport) MetaClient() meta.MetadataServiceClient { return meta.NewMetadataServiceClient(t.cc) } diff --git a/sdk/go/http/evaluation.sdk.gen.go b/sdk/go/http/evaluation.sdk.gen.go index ac6c812053..1a4bfb1da4 100644 --- a/sdk/go/http/evaluation.sdk.gen.go +++ b/sdk/go/http/evaluation.sdk.gen.go @@ -5,7 +5,9 @@ package http import ( bytes "bytes" context "context" + fmt "fmt" evaluation "go.flipt.io/flipt/rpc/flipt/evaluation" + _go "go.flipt.io/flipt/sdk/go" grpc "google.golang.org/grpc" protojson "google.golang.org/protobuf/encoding/protojson" io "io" @@ -13,12 +15,21 @@ import ( url "net/url" ) -type EvaluationServiceClient struct { +type evaluationClient struct { client *http.Client addr string } -func (x *EvaluationServiceClient) Boolean(ctx context.Context, v *evaluation.EvaluationRequest, _ ...grpc.CallOption) (*evaluation.BooleanEvaluationResponse, error) { +func (t evaluationClient) EvaluationServiceClient() evaluation.EvaluationServiceClient { + return &evaluationServiceClient{client: t.client, addr: t.addr} +} + +type evaluationServiceClient struct { + client *http.Client + addr string +} + +func (x *evaluationServiceClient) Boolean(ctx context.Context, v *evaluation.EvaluationRequest, _ ...grpc.CallOption) (*evaluation.BooleanEvaluationResponse, error) { var body io.Reader var values url.Values reqData, err := protojson.Marshal(v) @@ -50,7 +61,7 @@ func (x *EvaluationServiceClient) Boolean(ctx context.Context, v *evaluation.Eva return &output, nil } -func (x *EvaluationServiceClient) Variant(ctx context.Context, v *evaluation.EvaluationRequest, _ ...grpc.CallOption) (*evaluation.VariantEvaluationResponse, error) { +func (x *evaluationServiceClient) Variant(ctx context.Context, v *evaluation.EvaluationRequest, _ ...grpc.CallOption) (*evaluation.VariantEvaluationResponse, error) { var body io.Reader var values url.Values reqData, err := protojson.Marshal(v) @@ -82,7 +93,7 @@ func (x *EvaluationServiceClient) Variant(ctx context.Context, v *evaluation.Eva return &output, nil } -func (x *EvaluationServiceClient) Batch(ctx context.Context, v *evaluation.BatchEvaluationRequest, _ ...grpc.CallOption) (*evaluation.BatchEvaluationResponse, error) { +func (x *evaluationServiceClient) Batch(ctx context.Context, v *evaluation.BatchEvaluationRequest, _ ...grpc.CallOption) (*evaluation.BatchEvaluationResponse, error) { var body io.Reader var values url.Values reqData, err := protojson.Marshal(v) @@ -114,6 +125,42 @@ func (x *EvaluationServiceClient) Batch(ctx context.Context, v *evaluation.Batch return &output, nil } -func (t Transport) EvaluationClient() evaluation.EvaluationServiceClient { - return &EvaluationServiceClient{client: t.client, addr: t.addr} +func (t evaluationClient) DataServiceClient() evaluation.DataServiceClient { + return &dataServiceClient{client: t.client, addr: t.addr} +} + +type dataServiceClient struct { + client *http.Client + addr string +} + +func (x *dataServiceClient) EvaluationSnapshotNamespace(ctx context.Context, v *evaluation.EvaluationNamespaceSnapshotRequest, _ ...grpc.CallOption) (*evaluation.EvaluationNamespaceSnapshot, error) { + var body io.Reader + var values url.Values + req, err := http.NewRequestWithContext(ctx, http.MethodGet, x.addr+fmt.Sprintf("/internal/v1/evaluation/snapshot/namespace/%v", v.Key), body) + if err != nil { + return nil, err + } + req.URL.RawQuery = values.Encode() + resp, err := x.client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + var output evaluation.EvaluationNamespaceSnapshot + respData, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + if err := checkResponse(resp, respData); err != nil { + return nil, err + } + if err := (protojson.UnmarshalOptions{DiscardUnknown: true}).Unmarshal(respData, &output); err != nil { + return nil, err + } + return &output, nil +} + +func (t Transport) EvaluationClient() _go.EvaluationClient { + return evaluationClient{client: t.client, addr: t.addr} } diff --git a/sdk/go/sdk.gen.go b/sdk/go/sdk.gen.go index 3cc61abba0..a50383b193 100644 --- a/sdk/go/sdk.gen.go +++ b/sdk/go/sdk.gen.go @@ -5,8 +5,6 @@ package sdk import ( context "context" flipt "go.flipt.io/flipt/rpc/flipt" - data "go.flipt.io/flipt/rpc/flipt/data" - evaluation "go.flipt.io/flipt/rpc/flipt/evaluation" meta "go.flipt.io/flipt/rpc/flipt/meta" metadata "google.golang.org/grpc/metadata" ) @@ -14,8 +12,7 @@ import ( type Transport interface { AuthClient() AuthClient FliptClient() flipt.FliptClient - DataClient() data.DataServiceClient - EvaluationClient() evaluation.EvaluationServiceClient + EvaluationClient() EvaluationClient MetaClient() meta.MetadataServiceClient } @@ -82,13 +79,6 @@ func (s SDK) Flipt() *Flipt { } } -func (s SDK) Data() *Data { - return &Data{ - transport: s.transport.DataClient(), - tokenProvider: s.tokenProvider, - } -} - func (s SDK) Evaluation() *Evaluation { return &Evaluation{ transport: s.transport.EvaluationClient(),