diff --git a/filter/envoy/envoy-wasm-filters/src/lib.rs b/filter/envoy/envoy-wasm-filters/src/lib.rs index 3b052c3..4d6f682 100644 --- a/filter/envoy/envoy-wasm-filters/src/lib.rs +++ b/filter/envoy/envoy-wasm-filters/src/lib.rs @@ -55,6 +55,7 @@ struct Reqquest { struct Ressponse { headers: HashMap, body: String, + backend_latency_in_nanos: u64, } const MAX_BODY_SIZE: usize = 1_000_000; // 1 MB @@ -213,6 +214,16 @@ impl HttpContext for Plugin { if !body.is_empty() && body.len() <= MAX_BODY_SIZE { self.api_event.response.body = body; } + + if let Some(value) = self.get_property(vec!["response", "backend_latency"]) { + // Ensure the byte vector has at least 8 bytes for u64 + if value.len() >= 8 { + // Convert the first 8 bytes to an u64 (nanoseconds) + self.api_event.response.backend_latency_in_nanos = + u64::from_ne_bytes(value[..8].try_into().unwrap_or_default()); + } + } + Action::Continue } } diff --git a/protobuf/golang/sentryflow.pb.go b/protobuf/golang/sentryflow.pb.go index 97ca48b..314eed5 100644 --- a/protobuf/golang/sentryflow.pb.go +++ b/protobuf/golang/sentryflow.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v5.28.0 +// protoc-gen-go v1.36.5 +// protoc v5.29.3 // source: sentryflow.proto package golang @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -21,12 +22,11 @@ const ( ) type ClientInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + HostName string `protobuf:"bytes,1,opt,name=hostName,proto3" json:"hostName,omitempty"` + IPAddress string `protobuf:"bytes,2,opt,name=IPAddress,proto3" json:"IPAddress,omitempty"` unknownFields protoimpl.UnknownFields - - HostName string `protobuf:"bytes,1,opt,name=hostName,proto3" json:"hostName,omitempty"` - IPAddress string `protobuf:"bytes,2,opt,name=IPAddress,proto3" json:"IPAddress,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ClientInfo) Reset() { @@ -75,28 +75,27 @@ func (x *ClientInfo) GetIPAddress() string { // Deprecated: Marked as deprecated in sentryflow.proto. type APILog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + TimeStamp string `protobuf:"bytes,2,opt,name=timeStamp,proto3" json:"timeStamp,omitempty"` + SrcNamespace string `protobuf:"bytes,11,opt,name=srcNamespace,proto3" json:"srcNamespace,omitempty"` + SrcName string `protobuf:"bytes,12,opt,name=srcName,proto3" json:"srcName,omitempty"` + SrcLabel map[string]string `protobuf:"bytes,13,rep,name=srcLabel,proto3" json:"srcLabel,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + SrcType string `protobuf:"bytes,21,opt,name=srcType,proto3" json:"srcType,omitempty"` + SrcIP string `protobuf:"bytes,22,opt,name=srcIP,proto3" json:"srcIP,omitempty"` + SrcPort string `protobuf:"bytes,23,opt,name=srcPort,proto3" json:"srcPort,omitempty"` + DstNamespace string `protobuf:"bytes,31,opt,name=dstNamespace,proto3" json:"dstNamespace,omitempty"` + DstName string `protobuf:"bytes,32,opt,name=dstName,proto3" json:"dstName,omitempty"` + DstLabel map[string]string `protobuf:"bytes,33,rep,name=dstLabel,proto3" json:"dstLabel,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + DstType string `protobuf:"bytes,41,opt,name=dstType,proto3" json:"dstType,omitempty"` + DstIP string `protobuf:"bytes,42,opt,name=dstIP,proto3" json:"dstIP,omitempty"` + DstPort string `protobuf:"bytes,43,opt,name=dstPort,proto3" json:"dstPort,omitempty"` + Protocol string `protobuf:"bytes,51,opt,name=protocol,proto3" json:"protocol,omitempty"` + Method string `protobuf:"bytes,52,opt,name=method,proto3" json:"method,omitempty"` + Path string `protobuf:"bytes,53,opt,name=path,proto3" json:"path,omitempty"` + ResponseCode int32 `protobuf:"varint,54,opt,name=responseCode,proto3" json:"responseCode,omitempty"` unknownFields protoimpl.UnknownFields - - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - TimeStamp string `protobuf:"bytes,2,opt,name=timeStamp,proto3" json:"timeStamp,omitempty"` - SrcNamespace string `protobuf:"bytes,11,opt,name=srcNamespace,proto3" json:"srcNamespace,omitempty"` - SrcName string `protobuf:"bytes,12,opt,name=srcName,proto3" json:"srcName,omitempty"` - SrcLabel map[string]string `protobuf:"bytes,13,rep,name=srcLabel,proto3" json:"srcLabel,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - SrcType string `protobuf:"bytes,21,opt,name=srcType,proto3" json:"srcType,omitempty"` - SrcIP string `protobuf:"bytes,22,opt,name=srcIP,proto3" json:"srcIP,omitempty"` - SrcPort string `protobuf:"bytes,23,opt,name=srcPort,proto3" json:"srcPort,omitempty"` - DstNamespace string `protobuf:"bytes,31,opt,name=dstNamespace,proto3" json:"dstNamespace,omitempty"` - DstName string `protobuf:"bytes,32,opt,name=dstName,proto3" json:"dstName,omitempty"` - DstLabel map[string]string `protobuf:"bytes,33,rep,name=dstLabel,proto3" json:"dstLabel,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - DstType string `protobuf:"bytes,41,opt,name=dstType,proto3" json:"dstType,omitempty"` - DstIP string `protobuf:"bytes,42,opt,name=dstIP,proto3" json:"dstIP,omitempty"` - DstPort string `protobuf:"bytes,43,opt,name=dstPort,proto3" json:"dstPort,omitempty"` - Protocol string `protobuf:"bytes,51,opt,name=protocol,proto3" json:"protocol,omitempty"` - Method string `protobuf:"bytes,52,opt,name=method,proto3" json:"method,omitempty"` - Path string `protobuf:"bytes,53,opt,name=path,proto3" json:"path,omitempty"` - ResponseCode int32 `protobuf:"varint,54,opt,name=responseCode,proto3" json:"responseCode,omitempty"` + sizeCache protoimpl.SizeCache } func (x *APILog) Reset() { @@ -258,16 +257,15 @@ func (x *APILog) GetResponseCode() int32 { // APIEvent represents an event related to an API call, including metadata, // source and destination workloads, and network information. type APIEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + Source *Workload `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` + Destination *Workload `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` + Request *Request `protobuf:"bytes,5,opt,name=request,proto3" json:"request,omitempty"` + Response *Response `protobuf:"bytes,6,opt,name=response,proto3" json:"response,omitempty"` + Protocol string `protobuf:"bytes,7,opt,name=protocol,proto3" json:"protocol,omitempty"` unknownFields protoimpl.UnknownFields - - Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Source *Workload `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` - Destination *Workload `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` - Request *Request `protobuf:"bytes,5,opt,name=request,proto3" json:"request,omitempty"` - Response *Response `protobuf:"bytes,6,opt,name=response,proto3" json:"response,omitempty"` - Protocol string `protobuf:"bytes,7,opt,name=protocol,proto3" json:"protocol,omitempty"` + sizeCache protoimpl.SizeCache } func (x *APIEvent) Reset() { @@ -343,12 +341,9 @@ func (x *APIEvent) GetProtocol() string { } type Metadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ContextId uint32 `protobuf:"varint,1,opt,name=context_id,json=contextId,proto3" json:"context_id,omitempty"` - Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ContextId uint32 `protobuf:"varint,1,opt,name=context_id,json=contextId,proto3" json:"context_id,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Deprecated: Marked as deprecated in sentryflow.proto. IstioVersion string `protobuf:"bytes,3,opt,name=istio_version,json=istioVersion,proto3" json:"istio_version,omitempty"` MeshId string `protobuf:"bytes,4,opt,name=mesh_id,json=meshId,proto3" json:"mesh_id,omitempty"` @@ -359,6 +354,8 @@ type Metadata struct { ReceiverName string `protobuf:"bytes,6,opt,name=receiver_name,json=receiverName,proto3" json:"receiver_name,omitempty"` // Version of receiver (e.g., 1.26.2). ReceiverVersion string `protobuf:"bytes,7,opt,name=receiver_version,json=receiverVersion,proto3" json:"receiver_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Metadata) Reset() { @@ -445,10 +442,7 @@ func (x *Metadata) GetReceiverVersion() string { // non-Kubernetes resource. It serves as a source or destination for access // within a system. type Workload struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the workload. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The namespace in which the workload is deployed. This field is only applicable @@ -457,7 +451,9 @@ type Workload struct { // The IP address of the workload. Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"` // The port number used by the workload. - Port int32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"` + Port int32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Workload) Reset() { @@ -520,12 +516,11 @@ func (x *Workload) GetPort() int32 { // Request represents an incoming HTTP request. type Request struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` unknownFields protoimpl.UnknownFields - - Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Request) Reset() { @@ -574,12 +569,12 @@ func (x *Request) GetBody() string { // Response represents an outgoing HTTP response. type Response struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + BackendLatencyInNanos uint64 `protobuf:"varint,3,opt,name=backend_latency_in_nanos,json=backendLatencyInNanos,proto3" json:"backend_latency_in_nanos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Response) Reset() { @@ -626,12 +621,18 @@ func (x *Response) GetBody() string { return "" } +func (x *Response) GetBackendLatencyInNanos() uint64 { + if x != nil { + return x.BackendLatencyInNanos + } + return 0 +} + type APIMetrics struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PerAPICounts map[string]uint64 `protobuf:"bytes,1,rep,name=perAPICounts,proto3" json:"perAPICounts,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // @todo: add some more metrics here unknownFields protoimpl.UnknownFields - - PerAPICounts map[string]uint64 `protobuf:"bytes,1,rep,name=perAPICounts,proto3" json:"perAPICounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // @todo: add some more metrics here + sizeCache protoimpl.SizeCache } func (x *APIMetrics) Reset() { @@ -672,11 +673,10 @@ func (x *APIMetrics) GetPerAPICounts() map[string]uint64 { } type MetricValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value map[string]string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Value map[string]string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *MetricValue) Reset() { @@ -717,16 +717,15 @@ func (x *MetricValue) GetValue() map[string]string { } type EnvoyMetrics struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TimeStamp string `protobuf:"bytes,1,opt,name=timeStamp,proto3" json:"timeStamp,omitempty"` + Namespace string `protobuf:"bytes,11,opt,name=namespace,proto3" json:"namespace,omitempty"` + Name string `protobuf:"bytes,12,opt,name=name,proto3" json:"name,omitempty"` + IPAddress string `protobuf:"bytes,13,opt,name=IPAddress,proto3" json:"IPAddress,omitempty"` + Labels map[string]string `protobuf:"bytes,14,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Metrics map[string]*MetricValue `protobuf:"bytes,21,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - TimeStamp string `protobuf:"bytes,1,opt,name=timeStamp,proto3" json:"timeStamp,omitempty"` - Namespace string `protobuf:"bytes,11,opt,name=namespace,proto3" json:"namespace,omitempty"` - Name string `protobuf:"bytes,12,opt,name=name,proto3" json:"name,omitempty"` - IPAddress string `protobuf:"bytes,13,opt,name=IPAddress,proto3" json:"IPAddress,omitempty"` - Labels map[string]string `protobuf:"bytes,14,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Metrics map[string]*MetricValue `protobuf:"bytes,21,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *EnvoyMetrics) Reset() { @@ -803,7 +802,7 @@ func (x *EnvoyMetrics) GetMetrics() map[string]*MetricValue { var File_sentryflow_proto protoreflect.FileDescriptor -var file_sentryflow_proto_rawDesc = []byte{ +var file_sentryflow_proto_rawDesc = string([]byte{ 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x46, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, @@ -901,92 +900,96 @@ var file_sentryflow_proto_rawDesc = []byte{ 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 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, 0x95, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x73, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xce, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x62, 0x6f, 0x64, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 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, 0x99, 0x01, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, - 0x4a, 0x0a, 0x0c, 0x70, 0x65, 0x72, 0x41, 0x50, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x50, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x41, - 0x50, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, - 0x65, 0x72, 0x41, 0x50, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x50, - 0x65, 0x72, 0x41, 0x50, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 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, - 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x0b, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 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, 0x85, 0x03, - 0x0a, 0x0c, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 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, 0x1a, 0x51, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xbd, 0x02, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x3a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4c, 0x6f, - 0x67, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x41, 0x50, 0x49, 0x4c, 0x6f, 0x67, 0x22, 0x03, 0x88, 0x02, 0x01, 0x30, 0x01, - 0x12, 0x39, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x50, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x36, 0x0a, 0x0c, 0x53, - 0x65, 0x6e, 0x64, 0x41, 0x50, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x50, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, - 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x50, 0x49, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x50, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x30, 0x01, 0x12, 0x41, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x16, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x30, 0x01, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x35, 0x47, 0x53, 0x45, 0x43, 0x2f, 0x53, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x46, 0x6c, 0x6f, 0x77, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, - 0x6c, 0x61, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x62, 0x6f, 0x64, 0x79, 0x12, 0x37, 0x0a, 0x18, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, + 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x4c, + 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x1a, 0x3a, 0x0a, + 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 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, 0x99, 0x01, 0x0a, 0x0a, 0x41, 0x50, + 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x70, 0x65, 0x72, 0x41, + 0x50, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x50, 0x49, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x41, 0x50, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x65, 0x72, 0x41, 0x50, 0x49, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x41, 0x50, 0x49, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 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, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x38, 0x0a, 0x0a, + 0x56, 0x61, 0x6c, 0x75, 0x65, 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, 0x85, 0x03, 0x0a, 0x0c, 0x45, 0x6e, 0x76, 0x6f, 0x79, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x50, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x49, 0x50, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x15, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, + 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 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, 0x1a, 0x51, 0x0a, 0x0c, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xbd, + 0x02, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x3a, 0x0a, + 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4c, 0x6f, 0x67, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x1a, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x50, 0x49, 0x4c, + 0x6f, 0x67, 0x22, 0x03, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x39, 0x0a, 0x0b, 0x47, 0x65, 0x74, + 0x41, 0x50, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x12, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x50, 0x49, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x30, 0x01, 0x12, 0x36, 0x0a, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x41, 0x50, 0x49, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x41, 0x50, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x50, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x14, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x50, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x14, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x30, 0x01, 0x42, 0x2d, + 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x35, 0x47, 0x53, + 0x45, 0x43, 0x2f, 0x53, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_sentryflow_proto_rawDescOnce sync.Once - file_sentryflow_proto_rawDescData = file_sentryflow_proto_rawDesc + file_sentryflow_proto_rawDescData []byte ) func file_sentryflow_proto_rawDescGZIP() []byte { file_sentryflow_proto_rawDescOnce.Do(func() { - file_sentryflow_proto_rawDescData = protoimpl.X.CompressGZIP(file_sentryflow_proto_rawDescData) + file_sentryflow_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_sentryflow_proto_rawDesc), len(file_sentryflow_proto_rawDesc))) }) return file_sentryflow_proto_rawDescData } @@ -1053,7 +1056,7 @@ func file_sentryflow_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_sentryflow_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_sentryflow_proto_rawDesc), len(file_sentryflow_proto_rawDesc)), NumEnums: 0, NumMessages: 18, NumExtensions: 0, @@ -1064,7 +1067,6 @@ func file_sentryflow_proto_init() { MessageInfos: file_sentryflow_proto_msgTypes, }.Build() File_sentryflow_proto = out.File - file_sentryflow_proto_rawDesc = nil file_sentryflow_proto_goTypes = nil file_sentryflow_proto_depIdxs = nil } diff --git a/protobuf/golang/sentryflow_grpc.pb.go b/protobuf/golang/sentryflow_grpc.pb.go index ee392c7..4811a90 100644 --- a/protobuf/golang/sentryflow_grpc.pb.go +++ b/protobuf/golang/sentryflow_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.28.0 +// - protoc v5.29.3 // source: sentryflow.proto package golang diff --git a/protobuf/golang/sentryflow_metrics.pb.go b/protobuf/golang/sentryflow_metrics.pb.go index ea9b33c..d471f9b 100644 --- a/protobuf/golang/sentryflow_metrics.pb.go +++ b/protobuf/golang/sentryflow_metrics.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v5.28.0 +// protoc-gen-go v1.36.5 +// protoc v5.29.3 // source: sentryflow_metrics.proto package golang @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -21,11 +22,10 @@ const ( ) type APIClassifierRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + API []string `protobuf:"bytes,1,rep,name=API,proto3" json:"API,omitempty"` unknownFields protoimpl.UnknownFields - - API []string `protobuf:"bytes,1,rep,name=API,proto3" json:"API,omitempty"` + sizeCache protoimpl.SizeCache } func (x *APIClassifierRequest) Reset() { @@ -66,11 +66,10 @@ func (x *APIClassifierRequest) GetAPI() []string { } type APIClassifierResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + APIs map[string]uint64 `protobuf:"bytes,1,rep,name=APIs,proto3" json:"APIs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - APIs map[string]uint64 `protobuf:"bytes,1,rep,name=APIs,proto3" json:"APIs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *APIClassifierResponse) Reset() { @@ -112,7 +111,7 @@ func (x *APIClassifierResponse) GetAPIs() map[string]uint64 { var File_sentryflow_metrics_proto protoreflect.FileDescriptor -var file_sentryflow_metrics_proto_rawDesc = []byte{ +var file_sentryflow_metrics_proto_rawDesc = string([]byte{ 0x0a, 0x18, 0x73, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x28, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x43, 0x6c, 0x61, 0x73, 0x73, @@ -137,16 +136,16 @@ var file_sentryflow_metrics_proto_rawDesc = []byte{ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x35, 0x47, 0x53, 0x45, 0x43, 0x2f, 0x53, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_sentryflow_metrics_proto_rawDescOnce sync.Once - file_sentryflow_metrics_proto_rawDescData = file_sentryflow_metrics_proto_rawDesc + file_sentryflow_metrics_proto_rawDescData []byte ) func file_sentryflow_metrics_proto_rawDescGZIP() []byte { file_sentryflow_metrics_proto_rawDescOnce.Do(func() { - file_sentryflow_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_sentryflow_metrics_proto_rawDescData) + file_sentryflow_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_sentryflow_metrics_proto_rawDesc), len(file_sentryflow_metrics_proto_rawDesc))) }) return file_sentryflow_metrics_proto_rawDescData } @@ -177,7 +176,7 @@ func file_sentryflow_metrics_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_sentryflow_metrics_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_sentryflow_metrics_proto_rawDesc), len(file_sentryflow_metrics_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -188,7 +187,6 @@ func file_sentryflow_metrics_proto_init() { MessageInfos: file_sentryflow_metrics_proto_msgTypes, }.Build() File_sentryflow_metrics_proto = out.File - file_sentryflow_metrics_proto_rawDesc = nil file_sentryflow_metrics_proto_goTypes = nil file_sentryflow_metrics_proto_depIdxs = nil } diff --git a/protobuf/golang/sentryflow_metrics_grpc.pb.go b/protobuf/golang/sentryflow_metrics_grpc.pb.go index db8f5a7..0df1d0a 100644 --- a/protobuf/golang/sentryflow_metrics_grpc.pb.go +++ b/protobuf/golang/sentryflow_metrics_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.28.0 +// - protoc v5.29.3 // source: sentryflow_metrics.proto package golang diff --git a/protobuf/python/sentryflow_metrics_pb2.py b/protobuf/python/sentryflow_metrics_pb2.py index 0c70936..9d54835 100644 --- a/protobuf/python/sentryflow_metrics_pb2.py +++ b/protobuf/python/sentryflow_metrics_pb2.py @@ -2,7 +2,7 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # NO CHECKED-IN PROTOBUF GENCODE # source: sentryflow_metrics.proto -# Protobuf Python Version: 5.28.0 +# Protobuf Python Version: 5.29.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -12,8 +12,8 @@ _runtime_version.ValidateProtobufRuntimeVersion( _runtime_version.Domain.PUBLIC, 5, - 28, - 0, + 29, + 3, '', 'sentryflow_metrics.proto' ) diff --git a/protobuf/python/sentryflow_pb2.py b/protobuf/python/sentryflow_pb2.py index de1239f..ec20fcd 100644 --- a/protobuf/python/sentryflow_pb2.py +++ b/protobuf/python/sentryflow_pb2.py @@ -2,7 +2,7 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # NO CHECKED-IN PROTOBUF GENCODE # source: sentryflow.proto -# Protobuf Python Version: 5.28.0 +# Protobuf Python Version: 5.29.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -12,8 +12,8 @@ _runtime_version.ValidateProtobufRuntimeVersion( _runtime_version.Domain.PUBLIC, 5, - 28, - 0, + 29, + 3, '', 'sentryflow.proto' ) @@ -24,7 +24,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10sentryflow.proto\x12\x08protobuf\"1\n\nClientInfo\x12\x10\n\x08hostName\x18\x01 \x01(\t\x12\x11\n\tIPAddress\x18\x02 \x01(\t\"\xe7\x03\n\x06\x41PILog\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\ttimeStamp\x18\x02 \x01(\t\x12\x14\n\x0csrcNamespace\x18\x0b \x01(\t\x12\x0f\n\x07srcName\x18\x0c \x01(\t\x12\x30\n\x08srcLabel\x18\r \x03(\x0b\x32\x1e.protobuf.APILog.SrcLabelEntry\x12\x0f\n\x07srcType\x18\x15 \x01(\t\x12\r\n\x05srcIP\x18\x16 \x01(\t\x12\x0f\n\x07srcPort\x18\x17 \x01(\t\x12\x14\n\x0c\x64stNamespace\x18\x1f \x01(\t\x12\x0f\n\x07\x64stName\x18 \x01(\t\x12\x30\n\x08\x64stLabel\x18! \x03(\x0b\x32\x1e.protobuf.APILog.DstLabelEntry\x12\x0f\n\x07\x64stType\x18) \x01(\t\x12\r\n\x05\x64stIP\x18* \x01(\t\x12\x0f\n\x07\x64stPort\x18+ \x01(\t\x12\x10\n\x08protocol\x18\x33 \x01(\t\x12\x0e\n\x06method\x18\x34 \x01(\t\x12\x0c\n\x04path\x18\x35 \x01(\t\x12\x14\n\x0cresponseCode\x18\x36 \x01(\x05\x1a/\n\rSrcLabelEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rDstLabelEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:\x02\x18\x01\"\xd9\x01\n\x08\x41PIEvent\x12$\n\x08metadata\x18\x01 \x01(\x0b\x32\x12.protobuf.Metadata\x12\"\n\x06source\x18\x03 \x01(\x0b\x32\x12.protobuf.Workload\x12\'\n\x0b\x64\x65stination\x18\x04 \x01(\x0b\x32\x12.protobuf.Workload\x12\"\n\x07request\x18\x05 \x01(\x0b\x32\x11.protobuf.Request\x12$\n\x08response\x18\x06 \x01(\x0b\x32\x12.protobuf.Response\x12\x10\n\x08protocol\x18\x07 \x01(\t\"\xa1\x01\n\x08Metadata\x12\x12\n\ncontext_id\x18\x01 \x01(\r\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x19\n\ristio_version\x18\x03 \x01(\tB\x02\x18\x01\x12\x0f\n\x07mesh_id\x18\x04 \x01(\t\x12\x11\n\tnode_name\x18\x05 \x01(\t\x12\x15\n\rreceiver_name\x18\x06 \x01(\t\x12\x18\n\x10receiver_version\x18\x07 \x01(\t\"E\n\x08Workload\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\n\n\x02ip\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\x05\"x\n\x07Request\x12/\n\x07headers\x18\x01 \x03(\x0b\x32\x1e.protobuf.Request.HeadersEntry\x12\x0c\n\x04\x62ody\x18\x02 \x01(\t\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"z\n\x08Response\x12\x30\n\x07headers\x18\x01 \x03(\x0b\x32\x1f.protobuf.Response.HeadersEntry\x12\x0c\n\x04\x62ody\x18\x02 \x01(\t\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x7f\n\nAPIMetrics\x12<\n\x0cperAPICounts\x18\x01 \x03(\x0b\x32&.protobuf.APIMetrics.PerAPICountsEntry\x1a\x33\n\x11PerAPICountsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\"l\n\x0bMetricValue\x12/\n\x05value\x18\x01 \x03(\x0b\x32 .protobuf.MetricValue.ValueEntry\x1a,\n\nValueEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb5\x02\n\x0c\x45nvoyMetrics\x12\x11\n\ttimeStamp\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x0b \x01(\t\x12\x0c\n\x04name\x18\x0c \x01(\t\x12\x11\n\tIPAddress\x18\r \x01(\t\x12\x32\n\x06labels\x18\x0e \x03(\x0b\x32\".protobuf.EnvoyMetrics.LabelsEntry\x12\x34\n\x07metrics\x18\x15 \x03(\x0b\x32#.protobuf.EnvoyMetrics.MetricsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x45\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.protobuf.MetricValue:\x02\x38\x01\x32\xbd\x02\n\nSentryFlow\x12:\n\tGetAPILog\x12\x14.protobuf.ClientInfo\x1a\x10.protobuf.APILog\"\x03\x88\x02\x01\x30\x01\x12\x39\n\x0bGetAPIEvent\x12\x14.protobuf.ClientInfo\x1a\x12.protobuf.APIEvent0\x01\x12\x36\n\x0cSendAPIEvent\x12\x12.protobuf.APIEvent\x1a\x12.protobuf.APIEvent\x12=\n\rGetAPIMetrics\x12\x14.protobuf.ClientInfo\x1a\x14.protobuf.APIMetrics0\x01\x12\x41\n\x0fGetEnvoyMetrics\x12\x14.protobuf.ClientInfo\x1a\x16.protobuf.EnvoyMetrics0\x01\x42-Z+github.com/5GSEC/SentryFlow/protobuf/golangb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10sentryflow.proto\x12\x08protobuf\"1\n\nClientInfo\x12\x10\n\x08hostName\x18\x01 \x01(\t\x12\x11\n\tIPAddress\x18\x02 \x01(\t\"\xe7\x03\n\x06\x41PILog\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\ttimeStamp\x18\x02 \x01(\t\x12\x14\n\x0csrcNamespace\x18\x0b \x01(\t\x12\x0f\n\x07srcName\x18\x0c \x01(\t\x12\x30\n\x08srcLabel\x18\r \x03(\x0b\x32\x1e.protobuf.APILog.SrcLabelEntry\x12\x0f\n\x07srcType\x18\x15 \x01(\t\x12\r\n\x05srcIP\x18\x16 \x01(\t\x12\x0f\n\x07srcPort\x18\x17 \x01(\t\x12\x14\n\x0c\x64stNamespace\x18\x1f \x01(\t\x12\x0f\n\x07\x64stName\x18 \x01(\t\x12\x30\n\x08\x64stLabel\x18! \x03(\x0b\x32\x1e.protobuf.APILog.DstLabelEntry\x12\x0f\n\x07\x64stType\x18) \x01(\t\x12\r\n\x05\x64stIP\x18* \x01(\t\x12\x0f\n\x07\x64stPort\x18+ \x01(\t\x12\x10\n\x08protocol\x18\x33 \x01(\t\x12\x0e\n\x06method\x18\x34 \x01(\t\x12\x0c\n\x04path\x18\x35 \x01(\t\x12\x14\n\x0cresponseCode\x18\x36 \x01(\x05\x1a/\n\rSrcLabelEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rDstLabelEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:\x02\x18\x01\"\xd9\x01\n\x08\x41PIEvent\x12$\n\x08metadata\x18\x01 \x01(\x0b\x32\x12.protobuf.Metadata\x12\"\n\x06source\x18\x03 \x01(\x0b\x32\x12.protobuf.Workload\x12\'\n\x0b\x64\x65stination\x18\x04 \x01(\x0b\x32\x12.protobuf.Workload\x12\"\n\x07request\x18\x05 \x01(\x0b\x32\x11.protobuf.Request\x12$\n\x08response\x18\x06 \x01(\x0b\x32\x12.protobuf.Response\x12\x10\n\x08protocol\x18\x07 \x01(\t\"\xa1\x01\n\x08Metadata\x12\x12\n\ncontext_id\x18\x01 \x01(\r\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x19\n\ristio_version\x18\x03 \x01(\tB\x02\x18\x01\x12\x0f\n\x07mesh_id\x18\x04 \x01(\t\x12\x11\n\tnode_name\x18\x05 \x01(\t\x12\x15\n\rreceiver_name\x18\x06 \x01(\t\x12\x18\n\x10receiver_version\x18\x07 \x01(\t\"E\n\x08Workload\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\n\n\x02ip\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\x05\"x\n\x07Request\x12/\n\x07headers\x18\x01 \x03(\x0b\x32\x1e.protobuf.Request.HeadersEntry\x12\x0c\n\x04\x62ody\x18\x02 \x01(\t\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x9c\x01\n\x08Response\x12\x30\n\x07headers\x18\x01 \x03(\x0b\x32\x1f.protobuf.Response.HeadersEntry\x12\x0c\n\x04\x62ody\x18\x02 \x01(\t\x12 \n\x18\x62\x61\x63kend_latency_in_nanos\x18\x03 \x01(\x04\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x7f\n\nAPIMetrics\x12<\n\x0cperAPICounts\x18\x01 \x03(\x0b\x32&.protobuf.APIMetrics.PerAPICountsEntry\x1a\x33\n\x11PerAPICountsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\"l\n\x0bMetricValue\x12/\n\x05value\x18\x01 \x03(\x0b\x32 .protobuf.MetricValue.ValueEntry\x1a,\n\nValueEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb5\x02\n\x0c\x45nvoyMetrics\x12\x11\n\ttimeStamp\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x0b \x01(\t\x12\x0c\n\x04name\x18\x0c \x01(\t\x12\x11\n\tIPAddress\x18\r \x01(\t\x12\x32\n\x06labels\x18\x0e \x03(\x0b\x32\".protobuf.EnvoyMetrics.LabelsEntry\x12\x34\n\x07metrics\x18\x15 \x03(\x0b\x32#.protobuf.EnvoyMetrics.MetricsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x45\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.protobuf.MetricValue:\x02\x38\x01\x32\xbd\x02\n\nSentryFlow\x12:\n\tGetAPILog\x12\x14.protobuf.ClientInfo\x1a\x10.protobuf.APILog\"\x03\x88\x02\x01\x30\x01\x12\x39\n\x0bGetAPIEvent\x12\x14.protobuf.ClientInfo\x1a\x12.protobuf.APIEvent0\x01\x12\x36\n\x0cSendAPIEvent\x12\x12.protobuf.APIEvent\x1a\x12.protobuf.APIEvent\x12=\n\rGetAPIMetrics\x12\x14.protobuf.ClientInfo\x1a\x14.protobuf.APIMetrics0\x01\x12\x41\n\x0fGetEnvoyMetrics\x12\x14.protobuf.ClientInfo\x1a\x16.protobuf.EnvoyMetrics0\x01\x42-Z+github.com/5GSEC/SentryFlow/protobuf/golangb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -72,24 +72,24 @@ _globals['_REQUEST']._serialized_end=1146 _globals['_REQUEST_HEADERSENTRY']._serialized_start=1100 _globals['_REQUEST_HEADERSENTRY']._serialized_end=1146 - _globals['_RESPONSE']._serialized_start=1148 - _globals['_RESPONSE']._serialized_end=1270 + _globals['_RESPONSE']._serialized_start=1149 + _globals['_RESPONSE']._serialized_end=1305 _globals['_RESPONSE_HEADERSENTRY']._serialized_start=1100 _globals['_RESPONSE_HEADERSENTRY']._serialized_end=1146 - _globals['_APIMETRICS']._serialized_start=1272 - _globals['_APIMETRICS']._serialized_end=1399 - _globals['_APIMETRICS_PERAPICOUNTSENTRY']._serialized_start=1348 - _globals['_APIMETRICS_PERAPICOUNTSENTRY']._serialized_end=1399 - _globals['_METRICVALUE']._serialized_start=1401 - _globals['_METRICVALUE']._serialized_end=1509 - _globals['_METRICVALUE_VALUEENTRY']._serialized_start=1465 - _globals['_METRICVALUE_VALUEENTRY']._serialized_end=1509 - _globals['_ENVOYMETRICS']._serialized_start=1512 - _globals['_ENVOYMETRICS']._serialized_end=1821 - _globals['_ENVOYMETRICS_LABELSENTRY']._serialized_start=1705 - _globals['_ENVOYMETRICS_LABELSENTRY']._serialized_end=1750 - _globals['_ENVOYMETRICS_METRICSENTRY']._serialized_start=1752 - _globals['_ENVOYMETRICS_METRICSENTRY']._serialized_end=1821 - _globals['_SENTRYFLOW']._serialized_start=1824 - _globals['_SENTRYFLOW']._serialized_end=2141 + _globals['_APIMETRICS']._serialized_start=1307 + _globals['_APIMETRICS']._serialized_end=1434 + _globals['_APIMETRICS_PERAPICOUNTSENTRY']._serialized_start=1383 + _globals['_APIMETRICS_PERAPICOUNTSENTRY']._serialized_end=1434 + _globals['_METRICVALUE']._serialized_start=1436 + _globals['_METRICVALUE']._serialized_end=1544 + _globals['_METRICVALUE_VALUEENTRY']._serialized_start=1500 + _globals['_METRICVALUE_VALUEENTRY']._serialized_end=1544 + _globals['_ENVOYMETRICS']._serialized_start=1547 + _globals['_ENVOYMETRICS']._serialized_end=1856 + _globals['_ENVOYMETRICS_LABELSENTRY']._serialized_start=1740 + _globals['_ENVOYMETRICS_LABELSENTRY']._serialized_end=1785 + _globals['_ENVOYMETRICS_METRICSENTRY']._serialized_start=1787 + _globals['_ENVOYMETRICS_METRICSENTRY']._serialized_end=1856 + _globals['_SENTRYFLOW']._serialized_start=1859 + _globals['_SENTRYFLOW']._serialized_end=2176 # @@protoc_insertion_point(module_scope) diff --git a/protobuf/python/sentryflow_pb2.pyi b/protobuf/python/sentryflow_pb2.pyi index d069544..e72c830 100644 --- a/protobuf/python/sentryflow_pb2.pyi +++ b/protobuf/python/sentryflow_pb2.pyi @@ -129,7 +129,7 @@ class Request(_message.Message): def __init__(self, headers: _Optional[_Mapping[str, str]] = ..., body: _Optional[str] = ...) -> None: ... class Response(_message.Message): - __slots__ = ("headers", "body") + __slots__ = ("headers", "body", "backend_latency_in_nanos") class HeadersEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -139,9 +139,11 @@ class Response(_message.Message): def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... HEADERS_FIELD_NUMBER: _ClassVar[int] BODY_FIELD_NUMBER: _ClassVar[int] + BACKEND_LATENCY_IN_NANOS_FIELD_NUMBER: _ClassVar[int] headers: _containers.ScalarMap[str, str] body: str - def __init__(self, headers: _Optional[_Mapping[str, str]] = ..., body: _Optional[str] = ...) -> None: ... + backend_latency_in_nanos: int + def __init__(self, headers: _Optional[_Mapping[str, str]] = ..., body: _Optional[str] = ..., backend_latency_in_nanos: _Optional[int] = ...) -> None: ... class APIMetrics(_message.Message): __slots__ = ("perAPICounts",) diff --git a/protobuf/sentryflow.proto b/protobuf/sentryflow.proto index d496147..c301fb3 100644 --- a/protobuf/sentryflow.proto +++ b/protobuf/sentryflow.proto @@ -92,6 +92,7 @@ message Request { message Response { map headers = 1; string body = 2; + uint64 backend_latency_in_nanos = 3; } message APIMetrics {