From 4ca51fc6e9def0a597b3981e1361f82062decccf Mon Sep 17 00:00:00 2001 From: Vishnu Soman Date: Thu, 23 Mar 2023 18:14:39 +0530 Subject: [PATCH] Display summary data per deployment - Modified the observability to include Summary data per deployment - Added deployment name to struct PodInfo - Modified codebase to get details of replicasets and statefulset along with deployments - Modified codebase to include deployment name as part of PodInfo Signed-off-by: Vishnu Soman --- src/cluster/k8sClientHandler.go | 116 +++++- src/libs/dbHandler.go | 11 + src/libs/mysqlHandler.go | 56 +++ src/libs/sqliteHandler.go | 56 +++ src/observability/kubearmor.go | 2 + src/observability/observability.go | 24 ++ src/observability/summarizer.go | 2 +- src/observability/summary.go | 34 ++ .../v1/observability/observability.pb.go | 374 +++++++++++------- .../v1/observability/observability.proto | 32 +- .../v1/observability/observability_grpc.pb.go | 91 ++++- src/server/grpcServer.go | 11 + src/types/observability.go | 1 + 13 files changed, 642 insertions(+), 168 deletions(-) diff --git a/src/cluster/k8sClientHandler.go b/src/cluster/k8sClientHandler.go index 84adcb55..9d3378b7 100644 --- a/src/cluster/k8sClientHandler.go +++ b/src/cluster/k8sClientHandler.go @@ -4,7 +4,6 @@ import ( "context" "errors" "flag" - "io/ioutil" "os" "path/filepath" "sort" @@ -21,7 +20,7 @@ import ( _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" ) -var parsed bool = false +var parsed = false var kubeconfig *string func isInCluster() bool { @@ -98,7 +97,7 @@ func ConnectInClusterAPIClient() *kubernetes.Clientset { port = "6443" } - read, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/token") + read, err := os.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/token") if err != nil { log.Error().Msg(err.Error()) return nil @@ -446,17 +445,112 @@ func GetDeploymentsFromK8sClient() []types.Deployment { continue } - var label string + if d.Spec.Selector.MatchLabels != nil { + var labels []string - for k, v := range d.Spec.Selector.MatchLabels { - label = k + "=" + v + for k, v := range d.Spec.Selector.MatchLabels { + label := k + "=" + v + labels = append(labels, label) + } + + results = append(results, types.Deployment{ + Name: d.Name, + Namespace: d.Namespace, + Labels: strings.Join(labels, ","), + }) } + } + + results = append(results, GetReplicaSetsFromK8sClient()...) + results = append(results, GetStatefulSetsFromK8sClient()...) + + return results +} + +// ================= // +// == ReplicaSet == // +// ================= // + +func GetReplicaSetsFromK8sClient() []types.Deployment { + results := []types.Deployment{} + + client := ConnectK8sClient() + if client == nil { + return results + } + + // get namespaces from k8s api client + replicasets, err := client.AppsV1().ReplicaSets("").List(context.Background(), metav1.ListOptions{}) + if err != nil { + log.Error().Msg(err.Error()) + return results + } - results = append(results, types.Deployment{ - Name: d.Name, - Namespace: d.Namespace, - Labels: label, - }) + for _, rs := range replicasets.Items { + if rs.OwnerReferences == nil { + if rs.Namespace == "kube-system" { + continue + } + + if rs.Spec.Selector.MatchLabels != nil { + var labels []string + + for k, v := range rs.Spec.Selector.MatchLabels { + label := k + "=" + v + labels = append(labels, label) + } + + results = append(results, types.Deployment{ + Name: rs.Name, + Namespace: rs.Namespace, + Labels: strings.Join(labels, ","), + }) + } + } + } + return results +} + +// ================= // +// == StatefulSet == // +// ================= // + +func GetStatefulSetsFromK8sClient() []types.Deployment { + results := []types.Deployment{} + + client := ConnectK8sClient() + if client == nil { + return results + } + + // get namespaces from k8s api client + statefulset, err := client.AppsV1().StatefulSets("").List(context.Background(), metav1.ListOptions{}) + if err != nil { + log.Error().Msg(err.Error()) + return results + } + + for _, sts := range statefulset.Items { + if sts.OwnerReferences == nil { + if sts.Namespace == "kube-system" { + continue + } + + if sts.Spec.Selector.MatchLabels != nil { + var labels []string + + for k, v := range sts.Spec.Selector.MatchLabels { + label := k + "=" + v + labels = append(labels, label) + } + + results = append(results, types.Deployment{ + Name: sts.Name, + Namespace: sts.Namespace, + Labels: strings.Join(labels, ","), + }) + } + } } return results } diff --git a/src/libs/dbHandler.go b/src/libs/dbHandler.go index ad74830c..9553752c 100644 --- a/src/libs/dbHandler.go +++ b/src/libs/dbHandler.go @@ -359,6 +359,17 @@ func GetPodNames(cfg types.ConfigDB, filter types.ObsPodDetail) ([]string, error return res, err } +func GetDeployNames(cfg types.ConfigDB, filter types.ObsPodDetail) ([]string, error) { + res := []string{} + var err = errors.New("unknown db driver") + if cfg.DBDriver == "mysql" { + res, err = GetDeployNamesMySQL(cfg, filter) + } else if cfg.DBDriver == "sqlite3" { + res, err = GetDeployNamesSQLite(cfg, filter) + } + return res, err +} + // =============== // // == Policy DB == // // =============== // diff --git a/src/libs/mysqlHandler.go b/src/libs/mysqlHandler.go index 674e4631..75439112 100644 --- a/src/libs/mysqlHandler.go +++ b/src/libs/mysqlHandler.go @@ -1572,6 +1572,10 @@ func GetPodNamesMySQL(cfg types.ConfigDB, filter types.ObsPodDetail) ([]string, concatWhereClause(&whereClause, "container_name") sysargs = append(sysargs, filter.ContainerName) } + if filter.DeployName != "" { + concatWhereClause(&whereClause, "deployment_name") + sysargs = append(sysargs, filter.DeployName) + } results, err = db.Query(query+whereClause, sysargs...) if err != nil { @@ -1593,6 +1597,58 @@ func GetPodNamesMySQL(cfg types.ConfigDB, filter types.ObsPodDetail) ([]string, return resPodNames, err } +func GetDeployNamesMySQL(cfg types.ConfigDB, filter types.ObsPodDetail) ([]string, error) { + db := connectMySQL(cfg) + defer db.Close() + + resDeployNames := []string{} + + var results *sql.Rows + var err error + + // Get podnames from system table + query := "SELECT deployment_name FROM " + TableSystemSummarySQLite + " " + + var whereClause string + var sysargs []interface{} + + if filter.ClusterName != "" { + concatWhereClause(&whereClause, "cluster_name") + sysargs = append(sysargs, filter.ClusterName) + } + if filter.Namespace != "" { + concatWhereClause(&whereClause, "namespace_name") + sysargs = append(sysargs, filter.Namespace) + } + if filter.DeployName != "" { + concatWhereClause(&whereClause, "deployment_name") + sysargs = append(sysargs, filter.DeployName) + } + if filter.Labels != "" { + concatWhereClause(&whereClause, "labels") + sysargs = append(sysargs, filter.Labels) + } + + results, err = db.Query(query+whereClause, sysargs...) + if err != nil { + log.Error().Msg(err.Error()) + return nil, err + } + defer results.Close() + + for results.Next() { + var locDeployName string + if err := results.Scan( + &locDeployName, + ); err != nil { + return nil, err + } + resDeployNames = append(resDeployNames, locDeployName) + } + + return resDeployNames, err +} + // =============== // // == Policy DB == // // =============== // diff --git a/src/libs/sqliteHandler.go b/src/libs/sqliteHandler.go index 09094b82..84060ecc 100644 --- a/src/libs/sqliteHandler.go +++ b/src/libs/sqliteHandler.go @@ -1579,6 +1579,10 @@ func GetPodNamesSQLite(cfg types.ConfigDB, filter types.ObsPodDetail) ([]string, concatWhereClause(&whereClause, "container_name") sysargs = append(sysargs, filter.ContainerName) } + if filter.DeployName != "" { + concatWhereClause(&whereClause, "deployment_name") + sysargs = append(sysargs, filter.DeployName) + } results, err = db.Query(query+whereClause, sysargs...) if err != nil { @@ -1600,6 +1604,58 @@ func GetPodNamesSQLite(cfg types.ConfigDB, filter types.ObsPodDetail) ([]string, return resPodNames, err } +func GetDeployNamesSQLite(cfg types.ConfigDB, filter types.ObsPodDetail) ([]string, error) { + db := connectSQLite(cfg, config.GetCfgObservabilityDBName()) + defer db.Close() + + resDeployNames := []string{} + + var results *sql.Rows + var err error + + // Get podnames from system table + query := "SELECT deployment_name FROM " + TableSystemSummarySQLite + " " + + var whereClause string + var sysargs []interface{} + + if filter.ClusterName != "" { + concatWhereClause(&whereClause, "cluster_name") + sysargs = append(sysargs, filter.ClusterName) + } + if filter.Namespace != "" { + concatWhereClause(&whereClause, "namespace_name") + sysargs = append(sysargs, filter.Namespace) + } + if filter.DeployName != "" { + concatWhereClause(&whereClause, "deployment_name") + sysargs = append(sysargs, filter.DeployName) + } + if filter.Labels != "" { + concatWhereClause(&whereClause, "labels") + sysargs = append(sysargs, filter.Labels) + } + + results, err = db.Query(query+whereClause, sysargs...) + if err != nil { + log.Error().Msg(err.Error()) + return nil, err + } + defer results.Close() + + for results.Next() { + var locDeployName string + if err := results.Scan( + &locDeployName, + ); err != nil { + return nil, err + } + resDeployNames = append(resDeployNames, locDeployName) + } + + return resDeployNames, err +} + // =============== // // == Policy DB == // // =============== // diff --git a/src/observability/kubearmor.go b/src/observability/kubearmor.go index d7b3b55c..2b774bb4 100644 --- a/src/observability/kubearmor.go +++ b/src/observability/kubearmor.go @@ -229,6 +229,7 @@ func GetKubearmorSummaryData(req *opb.Request) ([]types.SysObsProcFileData, []ty ContainerName: req.ContainerName, ClusterName: req.ClusterName, Labels: req.Label, + Deployment: req.DeployName, }) if err != nil { return nil, nil, nil, types.ObsPodDetail{} @@ -241,6 +242,7 @@ func GetKubearmorSummaryData(req *opb.Request) ([]types.SysObsProcFileData, []ty podInfo.ContainerName = ss.ContainerName podInfo.Labels = ss.Labels podInfo.Namespace = ss.NamespaceName + podInfo.DeployName = ss.Deployment } t := time.Unix(ss.UpdatedTime, 0) diff --git a/src/observability/observability.go b/src/observability/observability.go index 328d3c87..2a52d647 100644 --- a/src/observability/observability.go +++ b/src/observability/observability.go @@ -115,6 +115,7 @@ func GetPodNames(request *opb.Request) (opb.PodNameResponse, error) { ClusterName: request.ClusterName, ContainerName: request.ContainerName, Labels: request.Label, + DeployName: request.DeployName, }) if err != nil { return opb.PodNameResponse{}, err @@ -128,3 +129,26 @@ func GetPodNames(request *opb.Request) (opb.PodNameResponse, error) { return opb.PodNameResponse{PodName: result}, nil } + +func GetDeployNames(request *opb.Request) (opb.DeployNameResponse, error) { + + result, err := libs.GetDeployNames(CfgDB, types.ObsPodDetail{ + PodName: request.PodName, + Namespace: request.NameSpace, + ClusterName: request.ClusterName, + ContainerName: request.ContainerName, + Labels: request.Label, + DeployName: request.DeployName, + }) + if err != nil { + return opb.DeployNameResponse{}, err + } + + result = common.StringDeDuplication(result) + + if len(result) <= 0 { + return opb.DeployNameResponse{}, errors.New("no pods matching the input request") + } + + return opb.DeployNameResponse{DeployName: result}, nil +} diff --git a/src/observability/summarizer.go b/src/observability/summarizer.go index cc7f3f3c..5a77244c 100644 --- a/src/observability/summarizer.go +++ b/src/observability/summarizer.go @@ -127,7 +127,7 @@ func convertSysLogToSysSummaryMap(syslogs []*pb.Alert) { sysSummary.Deployment = "" for _, d := range deployments { - if d.Labels == syslog.Labels && d.Namespace == syslog.NamespaceName { + if strings.Contains(syslog.Labels, d.Labels) && d.Namespace == syslog.NamespaceName { sysSummary.Deployment = d.Name break } diff --git a/src/observability/summary.go b/src/observability/summary.go index 3f20c011..1cd9b349 100644 --- a/src/observability/summary.go +++ b/src/observability/summary.go @@ -26,6 +26,7 @@ func GetSummaryData(request *opb.Request) (*opb.Response, error) { outNwResp := []*opb.SysNwSummaryData{} bindNwResp := []*opb.SysNwSummaryData{} + resp.DeploymentName = podInfo.DeployName resp.PodName = podInfo.PodName resp.ClusterName = podInfo.ClusterName resp.Namespace = podInfo.Namespace @@ -148,3 +149,36 @@ func GetSummaryData(request *opb.Request) (*opb.Response, error) { return &resp, err } + +func GetSummaryDataPerDeploy(request *opb.Request) (*opb.Response, error) { + resp := opb.Response{} + var err error = nil + + podResp, err := GetPodNames(&opb.Request{DeployName: request.DeployName}) + if err != nil { + return nil, errors.New("no system summary info present for the requested deployment") + } + var podNames []string + for _, pod := range podResp.PodName { + request.PodName = pod + podDataResp, err := GetSummaryData(request) + if err != nil { + return nil, errors.New("no system summary info present for the requested pod") + } + resp.IngressData = append(resp.IngressData, podDataResp.IngressData...) + resp.EgressData = append(resp.EgressData, podDataResp.EgressData...) + resp.ProcessData = append(resp.ProcessData, podDataResp.ProcessData...) + resp.FileData = append(resp.FileData, podDataResp.FileData...) + resp.IngressConnection = append(resp.IngressConnection, podDataResp.IngressConnection...) + resp.EgressConnection = append(resp.EgressConnection, podDataResp.EgressConnection...) + resp.BindConnection = append(resp.BindConnection, podDataResp.BindConnection...) + resp.DeploymentName = podDataResp.DeploymentName + resp.ClusterName = podDataResp.ClusterName + resp.Namespace = podDataResp.Namespace + resp.Label = podDataResp.Label + resp.ContainerName = podDataResp.ContainerName + podNames = append(podNames, pod) + } + resp.PodName = strings.Join(podNames, ",") + return &resp, err +} diff --git a/src/protobuf/v1/observability/observability.pb.go b/src/protobuf/v1/observability/observability.pb.go index cc166ec5..56eaaf4e 100644 --- a/src/protobuf/v1/observability/observability.pb.go +++ b/src/protobuf/v1/observability/observability.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 -// protoc v3.19.6 +// protoc-gen-go v1.30.0 +// protoc v3.15.8 // source: v1/observability/observability.proto package observability @@ -32,6 +32,7 @@ type Request struct { ContainerName string `protobuf:"bytes,5,opt,name=ContainerName,proto3" json:"ContainerName,omitempty"` Type string `protobuf:"bytes,6,opt,name=Type,proto3" json:"Type,omitempty"` Aggregate bool `protobuf:"varint,7,opt,name=Aggregate,proto3" json:"Aggregate,omitempty"` + DeployName string `protobuf:"bytes,8,opt,name=DeployName,proto3" json:"DeployName,omitempty"` } func (x *Request) Reset() { @@ -115,23 +116,31 @@ func (x *Request) GetAggregate() bool { return false } +func (x *Request) GetDeployName() string { + if x != nil { + return x.DeployName + } + return "" +} + type Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PodName string `protobuf:"bytes,1,opt,name=PodName,proto3" json:"PodName,omitempty"` - ClusterName string `protobuf:"bytes,2,opt,name=ClusterName,proto3" json:"ClusterName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=Namespace,proto3" json:"Namespace,omitempty"` - Label string `protobuf:"bytes,4,opt,name=Label,proto3" json:"Label,omitempty"` - ContainerName string `protobuf:"bytes,5,opt,name=ContainerName,proto3" json:"ContainerName,omitempty"` - ProcessData []*SysProcFileSummaryData `protobuf:"bytes,6,rep,name=ProcessData,proto3" json:"ProcessData,omitempty"` - FileData []*SysProcFileSummaryData `protobuf:"bytes,7,rep,name=FileData,proto3" json:"FileData,omitempty"` - IngressConnection []*SysNwSummaryData `protobuf:"bytes,8,rep,name=IngressConnection,proto3" json:"IngressConnection,omitempty"` - EgressConnection []*SysNwSummaryData `protobuf:"bytes,9,rep,name=EgressConnection,proto3" json:"EgressConnection,omitempty"` - IngressData []*CiliumSummData `protobuf:"bytes,10,rep,name=IngressData,proto3" json:"IngressData,omitempty"` - EgressData []*CiliumSummData `protobuf:"bytes,11,rep,name=EgressData,proto3" json:"EgressData,omitempty"` - BindConnection []*SysNwSummaryData `protobuf:"bytes,12,rep,name=BindConnection,proto3" json:"BindConnection,omitempty"` + DeploymentName string `protobuf:"bytes,1,opt,name=DeploymentName,proto3" json:"DeploymentName,omitempty"` + PodName string `protobuf:"bytes,2,opt,name=PodName,proto3" json:"PodName,omitempty"` + ClusterName string `protobuf:"bytes,3,opt,name=ClusterName,proto3" json:"ClusterName,omitempty"` + Namespace string `protobuf:"bytes,4,opt,name=Namespace,proto3" json:"Namespace,omitempty"` + Label string `protobuf:"bytes,5,opt,name=Label,proto3" json:"Label,omitempty"` + ContainerName string `protobuf:"bytes,6,opt,name=ContainerName,proto3" json:"ContainerName,omitempty"` + ProcessData []*SysProcFileSummaryData `protobuf:"bytes,7,rep,name=ProcessData,proto3" json:"ProcessData,omitempty"` + FileData []*SysProcFileSummaryData `protobuf:"bytes,8,rep,name=FileData,proto3" json:"FileData,omitempty"` + IngressConnection []*SysNwSummaryData `protobuf:"bytes,9,rep,name=IngressConnection,proto3" json:"IngressConnection,omitempty"` + EgressConnection []*SysNwSummaryData `protobuf:"bytes,10,rep,name=EgressConnection,proto3" json:"EgressConnection,omitempty"` + IngressData []*CiliumSummData `protobuf:"bytes,11,rep,name=IngressData,proto3" json:"IngressData,omitempty"` + EgressData []*CiliumSummData `protobuf:"bytes,12,rep,name=EgressData,proto3" json:"EgressData,omitempty"` + BindConnection []*SysNwSummaryData `protobuf:"bytes,13,rep,name=BindConnection,proto3" json:"BindConnection,omitempty"` } func (x *Response) Reset() { @@ -166,6 +175,13 @@ func (*Response) Descriptor() ([]byte, []int) { return file_v1_observability_observability_proto_rawDescGZIP(), []int{1} } +func (x *Response) GetDeploymentName() string { + if x != nil { + return x.DeploymentName + } + return "" +} + func (x *Response) GetPodName() string { if x != nil { return x.PodName @@ -606,13 +622,60 @@ func (x *PodNameResponse) GetPodName() []string { return nil } +type DeployNameResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeployName []string `protobuf:"bytes,1,rep,name=DeployName,proto3" json:"DeployName,omitempty"` +} + +func (x *DeployNameResponse) Reset() { + *x = DeployNameResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_observability_observability_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeployNameResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeployNameResponse) ProtoMessage() {} + +func (x *DeployNameResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_observability_observability_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 DeployNameResponse.ProtoReflect.Descriptor instead. +func (*DeployNameResponse) Descriptor() ([]byte, []int) { + return file_v1_observability_observability_proto_rawDescGZIP(), []int{6} +} + +func (x *DeployNameResponse) GetDeployName() []string { + if x != nil { + return x.DeployName + } + return nil +} + var File_v1_observability_observability_proto protoreflect.FileDescriptor var file_v1_observability_observability_proto_rawDesc = []byte{ 0x0a, 0x24, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xd1, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x71, + 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xf1, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, @@ -625,112 +688,130 @@ var file_v1_observability_observability_proto_rawDesc = []byte{ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x22, 0xa6, 0x05, 0x0a, - 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x6f, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x6f, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x4a, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x63, 0x46, - 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x08, 0x46, - 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x2e, 0x53, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x50, 0x0a, 0x11, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, + 0x08, 0x52, 0x09, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xce, 0x05, 0x0a, + 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, - 0x53, 0x79, 0x73, 0x4e, 0x77, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x11, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x10, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x2e, 0x53, 0x79, 0x73, 0x4e, 0x77, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x10, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0b, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x69, 0x6c, 0x69, - 0x75, 0x6d, 0x53, 0x75, 0x6d, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x49, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0a, 0x45, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x31, - 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x43, - 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x53, 0x75, 0x6d, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x45, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4a, 0x0a, 0x0e, 0x42, 0x69, 0x6e, - 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x4e, 0x77, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x16, 0x53, 0x79, 0x73, 0x50, 0x72, 0x6f, - 0x63, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x98, 0x02, 0x0a, 0x10, 0x53, - 0x79, 0x73, 0x4e, 0x77, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x49, 0x50, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x69, 0x6e, 0x64, 0x50, - 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x42, 0x69, 0x6e, 0x64, 0x50, - 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0e, 0x43, 0x69, 0x6c, 0x69, 0x75, 0x6d, - 0x53, 0x75, 0x6d, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x72, 0x63, 0x50, - 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x44, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x44, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x65, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x44, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x65, 0x73, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x44, 0x65, 0x73, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, - 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2b, - 0x0a, 0x0f, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0x9e, 0x01, 0x0a, 0x0d, - 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, - 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4b, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x19, - 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x31, 0x2e, 0x6f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x6f, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x49, 0x5a, 0x47, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x63, 0x63, 0x75, 0x6b, - 0x6e, 0x6f, 0x78, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x53, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x63, + 0x46, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x08, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x11, 0x49, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x4e, 0x77, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x11, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x10, 0x45, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x4e, 0x77, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x45, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0b, 0x49, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x2e, 0x43, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x53, 0x75, 0x6d, 0x6d, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x0b, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x40, 0x0a, 0x0a, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x53, 0x75, 0x6d, + 0x6d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x4a, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x31, 0x2e, 0x6f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x79, 0x73, + 0x4e, 0x77, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x42, + 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, + 0x0a, 0x16, 0x53, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x98, 0x02, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x4e, 0x77, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x50, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x12, 0x12, 0x0a, + 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x42, + 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x86, 0x02, + 0x0a, 0x0e, 0x43, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x53, 0x75, 0x6d, 0x6d, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x16, 0x0a, 0x06, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x65, 0x73, 0x74, + 0x50, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x65, 0x73, 0x74, 0x50, + 0x6f, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x44, 0x65, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x65, 0x73, 0x74, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x44, 0x65, 0x73, + 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2b, 0x0a, 0x0f, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x6f, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x50, 0x6f, 0x64, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x34, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0xbc, 0x02, 0x0a, 0x0d, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1a, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, + 0x10, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x76, + 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x49, 0x5a, 0x47, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x63, 0x63, 0x75, 0x6b, 0x6e, 0x6f, 0x78, 0x2f, + 0x61, 0x75, 0x74, 0x6f, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -745,7 +826,7 @@ func file_v1_observability_observability_proto_rawDescGZIP() []byte { return file_v1_observability_observability_proto_rawDescData } -var file_v1_observability_observability_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_v1_observability_observability_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_v1_observability_observability_proto_goTypes = []interface{}{ (*Request)(nil), // 0: v1.observability.Request (*Response)(nil), // 1: v1.observability.Response @@ -753,24 +834,29 @@ var file_v1_observability_observability_proto_goTypes = []interface{}{ (*SysNwSummaryData)(nil), // 3: v1.observability.SysNwSummaryData (*CiliumSummData)(nil), // 4: v1.observability.CiliumSummData (*PodNameResponse)(nil), // 5: v1.observability.PodNameResponse + (*DeployNameResponse)(nil), // 6: v1.observability.DeployNameResponse } var file_v1_observability_observability_proto_depIdxs = []int32{ - 2, // 0: v1.observability.Response.ProcessData:type_name -> v1.observability.SysProcFileSummaryData - 2, // 1: v1.observability.Response.FileData:type_name -> v1.observability.SysProcFileSummaryData - 3, // 2: v1.observability.Response.IngressConnection:type_name -> v1.observability.SysNwSummaryData - 3, // 3: v1.observability.Response.EgressConnection:type_name -> v1.observability.SysNwSummaryData - 4, // 4: v1.observability.Response.IngressData:type_name -> v1.observability.CiliumSummData - 4, // 5: v1.observability.Response.EgressData:type_name -> v1.observability.CiliumSummData - 3, // 6: v1.observability.Response.BindConnection:type_name -> v1.observability.SysNwSummaryData - 0, // 7: v1.observability.Observability.Summary:input_type -> v1.observability.Request - 0, // 8: v1.observability.Observability.GetPodNames:input_type -> v1.observability.Request - 1, // 9: v1.observability.Observability.Summary:output_type -> v1.observability.Response - 5, // 10: v1.observability.Observability.GetPodNames:output_type -> v1.observability.PodNameResponse - 9, // [9:11] is the sub-list for method output_type - 7, // [7:9] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 2, // 0: v1.observability.Response.ProcessData:type_name -> v1.observability.SysProcFileSummaryData + 2, // 1: v1.observability.Response.FileData:type_name -> v1.observability.SysProcFileSummaryData + 3, // 2: v1.observability.Response.IngressConnection:type_name -> v1.observability.SysNwSummaryData + 3, // 3: v1.observability.Response.EgressConnection:type_name -> v1.observability.SysNwSummaryData + 4, // 4: v1.observability.Response.IngressData:type_name -> v1.observability.CiliumSummData + 4, // 5: v1.observability.Response.EgressData:type_name -> v1.observability.CiliumSummData + 3, // 6: v1.observability.Response.BindConnection:type_name -> v1.observability.SysNwSummaryData + 0, // 7: v1.observability.Observability.Summary:input_type -> v1.observability.Request + 0, // 8: v1.observability.Observability.SummaryPerDeploy:input_type -> v1.observability.Request + 0, // 9: v1.observability.Observability.GetPodNames:input_type -> v1.observability.Request + 0, // 10: v1.observability.Observability.GetDeployNames:input_type -> v1.observability.Request + 1, // 11: v1.observability.Observability.Summary:output_type -> v1.observability.Response + 1, // 12: v1.observability.Observability.SummaryPerDeploy:output_type -> v1.observability.Response + 5, // 13: v1.observability.Observability.GetPodNames:output_type -> v1.observability.PodNameResponse + 6, // 14: v1.observability.Observability.GetDeployNames:output_type -> v1.observability.DeployNameResponse + 11, // [11:15] is the sub-list for method output_type + 7, // [7:11] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_v1_observability_observability_proto_init() } @@ -851,6 +937,18 @@ func file_v1_observability_observability_proto_init() { return nil } } + file_v1_observability_observability_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeployNameResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -858,7 +956,7 @@ func file_v1_observability_observability_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_v1_observability_observability_proto_rawDesc, NumEnums: 0, - NumMessages: 6, + NumMessages: 7, NumExtensions: 0, NumServices: 1, }, diff --git a/src/protobuf/v1/observability/observability.proto b/src/protobuf/v1/observability/observability.proto index 0fc21e88..6d0fca21 100644 --- a/src/protobuf/v1/observability/observability.proto +++ b/src/protobuf/v1/observability/observability.proto @@ -6,7 +6,9 @@ option go_package = "github.com/accuknox/auto-policy-discovery/src/protobuf/v1/o service Observability { rpc Summary(Request) returns (Response); + rpc SummaryPerDeploy(Request) returns (Response); rpc GetPodNames (Request) returns (PodNameResponse); + rpc GetDeployNames (Request) returns (DeployNameResponse); } message Request{ @@ -17,21 +19,23 @@ message Request{ string ContainerName = 5; string Type = 6; bool Aggregate = 7; + string DeployName = 8; } message Response{ - string PodName = 1; - string ClusterName = 2; - string Namespace = 3; - string Label = 4; - string ContainerName = 5; - repeated SysProcFileSummaryData ProcessData = 6; - repeated SysProcFileSummaryData FileData = 7; - repeated SysNwSummaryData IngressConnection = 8; - repeated SysNwSummaryData EgressConnection = 9; - repeated CiliumSummData IngressData = 10; - repeated CiliumSummData EgressData = 11; - repeated SysNwSummaryData BindConnection = 12; + string DeploymentName = 1; + string PodName = 2; + string ClusterName = 3; + string Namespace = 4; + string Label = 5; + string ContainerName = 6; + repeated SysProcFileSummaryData ProcessData = 7; + repeated SysProcFileSummaryData FileData = 8; + repeated SysNwSummaryData IngressConnection = 9; + repeated SysNwSummaryData EgressConnection = 10; + repeated CiliumSummData IngressData = 11; + repeated CiliumSummData EgressData = 12; + repeated SysNwSummaryData BindConnection = 13; } message SysProcFileSummaryData { @@ -72,3 +76,7 @@ message PodNameResponse { repeated string PodName = 1; } +message DeployNameResponse{ + repeated string DeployName = 1; +} + diff --git a/src/protobuf/v1/observability/observability_grpc.pb.go b/src/protobuf/v1/observability/observability_grpc.pb.go index b148d5ca..995d9d8b 100644 --- a/src/protobuf/v1/observability/observability_grpc.pb.go +++ b/src/protobuf/v1/observability/observability_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.6 +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.15.8 // source: v1/observability/observability.proto package observability @@ -18,12 +18,21 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 +const ( + Observability_Summary_FullMethodName = "/v1.observability.Observability/Summary" + Observability_SummaryPerDeploy_FullMethodName = "/v1.observability.Observability/SummaryPerDeploy" + Observability_GetPodNames_FullMethodName = "/v1.observability.Observability/GetPodNames" + Observability_GetDeployNames_FullMethodName = "/v1.observability.Observability/GetDeployNames" +) + // ObservabilityClient is the client API for Observability 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 ObservabilityClient interface { Summary(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) + SummaryPerDeploy(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) GetPodNames(ctx context.Context, in *Request, opts ...grpc.CallOption) (*PodNameResponse, error) + GetDeployNames(ctx context.Context, in *Request, opts ...grpc.CallOption) (*DeployNameResponse, error) } type observabilityClient struct { @@ -36,7 +45,16 @@ func NewObservabilityClient(cc grpc.ClientConnInterface) ObservabilityClient { func (c *observabilityClient) Summary(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) { out := new(Response) - err := c.cc.Invoke(ctx, "/v1.observability.Observability/Summary", in, out, opts...) + err := c.cc.Invoke(ctx, Observability_Summary_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *observabilityClient) SummaryPerDeploy(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) { + out := new(Response) + err := c.cc.Invoke(ctx, Observability_SummaryPerDeploy_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -45,7 +63,16 @@ func (c *observabilityClient) Summary(ctx context.Context, in *Request, opts ... func (c *observabilityClient) GetPodNames(ctx context.Context, in *Request, opts ...grpc.CallOption) (*PodNameResponse, error) { out := new(PodNameResponse) - err := c.cc.Invoke(ctx, "/v1.observability.Observability/GetPodNames", in, out, opts...) + err := c.cc.Invoke(ctx, Observability_GetPodNames_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *observabilityClient) GetDeployNames(ctx context.Context, in *Request, opts ...grpc.CallOption) (*DeployNameResponse, error) { + out := new(DeployNameResponse) + err := c.cc.Invoke(ctx, Observability_GetDeployNames_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -57,7 +84,9 @@ func (c *observabilityClient) GetPodNames(ctx context.Context, in *Request, opts // for forward compatibility type ObservabilityServer interface { Summary(context.Context, *Request) (*Response, error) + SummaryPerDeploy(context.Context, *Request) (*Response, error) GetPodNames(context.Context, *Request) (*PodNameResponse, error) + GetDeployNames(context.Context, *Request) (*DeployNameResponse, error) mustEmbedUnimplementedObservabilityServer() } @@ -68,9 +97,15 @@ type UnimplementedObservabilityServer struct { func (UnimplementedObservabilityServer) Summary(context.Context, *Request) (*Response, error) { return nil, status.Errorf(codes.Unimplemented, "method Summary not implemented") } +func (UnimplementedObservabilityServer) SummaryPerDeploy(context.Context, *Request) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method SummaryPerDeploy not implemented") +} func (UnimplementedObservabilityServer) GetPodNames(context.Context, *Request) (*PodNameResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPodNames not implemented") } +func (UnimplementedObservabilityServer) GetDeployNames(context.Context, *Request) (*DeployNameResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDeployNames not implemented") +} func (UnimplementedObservabilityServer) mustEmbedUnimplementedObservabilityServer() {} // UnsafeObservabilityServer may be embedded to opt out of forward compatibility for this service. @@ -94,7 +129,7 @@ func _Observability_Summary_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/v1.observability.Observability/Summary", + FullMethod: Observability_Summary_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ObservabilityServer).Summary(ctx, req.(*Request)) @@ -102,6 +137,24 @@ func _Observability_Summary_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _Observability_SummaryPerDeploy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Request) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ObservabilityServer).SummaryPerDeploy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Observability_SummaryPerDeploy_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ObservabilityServer).SummaryPerDeploy(ctx, req.(*Request)) + } + return interceptor(ctx, in, info, handler) +} + func _Observability_GetPodNames_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Request) if err := dec(in); err != nil { @@ -112,7 +165,7 @@ func _Observability_GetPodNames_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/v1.observability.Observability/GetPodNames", + FullMethod: Observability_GetPodNames_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ObservabilityServer).GetPodNames(ctx, req.(*Request)) @@ -120,6 +173,24 @@ func _Observability_GetPodNames_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Observability_GetDeployNames_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Request) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ObservabilityServer).GetDeployNames(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Observability_GetDeployNames_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ObservabilityServer).GetDeployNames(ctx, req.(*Request)) + } + return interceptor(ctx, in, info, handler) +} + // Observability_ServiceDesc is the grpc.ServiceDesc for Observability service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -131,10 +202,18 @@ var Observability_ServiceDesc = grpc.ServiceDesc{ MethodName: "Summary", Handler: _Observability_Summary_Handler, }, + { + MethodName: "SummaryPerDeploy", + Handler: _Observability_SummaryPerDeploy_Handler, + }, { MethodName: "GetPodNames", Handler: _Observability_GetPodNames_Handler, }, + { + MethodName: "GetDeployNames", + Handler: _Observability_GetDeployNames_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "v1/observability/observability.proto", diff --git a/src/server/grpcServer.go b/src/server/grpcServer.go index 743b0f7f..7aa8441c 100644 --- a/src/server/grpcServer.go +++ b/src/server/grpcServer.go @@ -260,11 +260,22 @@ func (s *observabilityServer) Summary(ctx context.Context, in *opb.Request) (*op return resp, err } +// Service to fetch summary data per deployment +func (s *observabilityServer) SummaryPerDeploy(ctx context.Context, in *opb.Request) (*opb.Response, error) { + resp, err := obs.GetSummaryDataPerDeploy(in) + return resp, err +} + func (s *observabilityServer) GetPodNames(ctx context.Context, in *opb.Request) (*opb.PodNameResponse, error) { resp, err := obs.GetPodNames(in) return &resp, err } +func (s *observabilityServer) GetDeployNames(ctx context.Context, in *opb.Request) (*opb.DeployNameResponse, error) { + resp, err := obs.GetDeployNames(in) + return &resp, err +} + // =============== // // == Publisher == // // =============== // diff --git a/src/types/observability.go b/src/types/observability.go index 4dcdee04..0019b415 100644 --- a/src/types/observability.go +++ b/src/types/observability.go @@ -170,6 +170,7 @@ type ObsPodDetail struct { ClusterName string ContainerName string Labels string + DeployName string } type SysObsProcFileData struct {