From febc543ce03c08efaf50e250c5673cc87f30d9e1 Mon Sep 17 00:00:00 2001 From: tzvonimir Date: Tue, 24 Feb 2026 01:00:11 +0100 Subject: [PATCH] Fix proto gen --- gen/api/v1/apiv1connect/cluster.connect.go | 37 +- gen/api/v1/apiv1connect/operator.connect.go | 159 -- .../apiv1connect/operator_health.connect.go | 132 -- gen/api/v1/cluster.pb.go | 774 +++++++- gen/api/v1/cluster_grpc.pb.go | 47 +- gen/api/v1/operator.pb.go | 1641 ----------------- gen/api/v1/operator_grpc.pb.go | 183 -- gen/api/v1/operator_health.pb.go | 713 ------- gen/api/v1/operator_health_grpc.pb.go | 146 -- proto/dakr_proto_descriptor.bin | Bin 333768 -> 326688 bytes 10 files changed, 768 insertions(+), 3064 deletions(-) delete mode 100644 gen/api/v1/apiv1connect/operator.connect.go delete mode 100644 gen/api/v1/apiv1connect/operator_health.connect.go delete mode 100644 gen/api/v1/operator.pb.go delete mode 100644 gen/api/v1/operator_grpc.pb.go delete mode 100644 gen/api/v1/operator_health.pb.go delete mode 100644 gen/api/v1/operator_health_grpc.pb.go diff --git a/gen/api/v1/apiv1connect/cluster.connect.go b/gen/api/v1/apiv1connect/cluster.connect.go index ded452dc..1734cb6e 100644 --- a/gen/api/v1/apiv1connect/cluster.connect.go +++ b/gen/api/v1/apiv1connect/cluster.connect.go @@ -45,6 +45,9 @@ const ( // ClusterServiceGetNetworkDependenciesProcedure is the fully-qualified name of the ClusterService's // GetNetworkDependencies RPC. ClusterServiceGetNetworkDependenciesProcedure = "/api.v1.ClusterService/GetNetworkDependencies" + // ClusterServiceGetNetworkMetricsTimeSeriesProcedure is the fully-qualified name of the + // ClusterService's GetNetworkMetricsTimeSeries RPC. + ClusterServiceGetNetworkMetricsTimeSeriesProcedure = "/api.v1.ClusterService/GetNetworkMetricsTimeSeries" ) // ClusterServiceClient is a client for the api.v1.ClusterService service. @@ -57,6 +60,8 @@ type ClusterServiceClient interface { CreateClusterToken(context.Context, *connect.Request[v1.CreateClusterTokenRequest]) (*connect.Response[v1.CreateClusterTokenResponse], error) // GetNetworkDependencies returns workload-level network dependencies for visualization GetNetworkDependencies(context.Context, *connect.Request[v1.GetNetworkDependenciesRequest]) (*connect.Response[v1.GetNetworkDependenciesResponse], error) + // GetNetworkMetricsTimeSeries returns time-bucketed network metrics for charts + GetNetworkMetricsTimeSeries(context.Context, *connect.Request[v1.GetNetworkMetricsTimeSeriesRequest]) (*connect.Response[v1.GetNetworkMetricsTimeSeriesResponse], error) } // NewClusterServiceClient constructs a client for the api.v1.ClusterService service. By default, it @@ -89,15 +94,21 @@ func NewClusterServiceClient(httpClient connect.HTTPClient, baseURL string, opts baseURL+ClusterServiceGetNetworkDependenciesProcedure, opts..., ), + getNetworkMetricsTimeSeries: connect.NewClient[v1.GetNetworkMetricsTimeSeriesRequest, v1.GetNetworkMetricsTimeSeriesResponse]( + httpClient, + baseURL+ClusterServiceGetNetworkMetricsTimeSeriesProcedure, + opts..., + ), } } // clusterServiceClient implements ClusterServiceClient. type clusterServiceClient struct { - getClustersBasicInfo *connect.Client[v1.GetClustersBasicInfoRequest, v1.GetClustersBasicInfoResponse] - getClustersWithMetrics *connect.Client[v1.GetClustersWithMetricsRequest, v1.GetClustersWithMetricsResponse] - createClusterToken *connect.Client[v1.CreateClusterTokenRequest, v1.CreateClusterTokenResponse] - getNetworkDependencies *connect.Client[v1.GetNetworkDependenciesRequest, v1.GetNetworkDependenciesResponse] + getClustersBasicInfo *connect.Client[v1.GetClustersBasicInfoRequest, v1.GetClustersBasicInfoResponse] + getClustersWithMetrics *connect.Client[v1.GetClustersWithMetricsRequest, v1.GetClustersWithMetricsResponse] + createClusterToken *connect.Client[v1.CreateClusterTokenRequest, v1.CreateClusterTokenResponse] + getNetworkDependencies *connect.Client[v1.GetNetworkDependenciesRequest, v1.GetNetworkDependenciesResponse] + getNetworkMetricsTimeSeries *connect.Client[v1.GetNetworkMetricsTimeSeriesRequest, v1.GetNetworkMetricsTimeSeriesResponse] } // GetClustersBasicInfo calls api.v1.ClusterService.GetClustersBasicInfo. @@ -120,6 +131,11 @@ func (c *clusterServiceClient) GetNetworkDependencies(ctx context.Context, req * return c.getNetworkDependencies.CallUnary(ctx, req) } +// GetNetworkMetricsTimeSeries calls api.v1.ClusterService.GetNetworkMetricsTimeSeries. +func (c *clusterServiceClient) GetNetworkMetricsTimeSeries(ctx context.Context, req *connect.Request[v1.GetNetworkMetricsTimeSeriesRequest]) (*connect.Response[v1.GetNetworkMetricsTimeSeriesResponse], error) { + return c.getNetworkMetricsTimeSeries.CallUnary(ctx, req) +} + // ClusterServiceHandler is an implementation of the api.v1.ClusterService service. type ClusterServiceHandler interface { // GetClustersBasicInfo retrieves basic information for all clusters in a team @@ -130,6 +146,8 @@ type ClusterServiceHandler interface { CreateClusterToken(context.Context, *connect.Request[v1.CreateClusterTokenRequest]) (*connect.Response[v1.CreateClusterTokenResponse], error) // GetNetworkDependencies returns workload-level network dependencies for visualization GetNetworkDependencies(context.Context, *connect.Request[v1.GetNetworkDependenciesRequest]) (*connect.Response[v1.GetNetworkDependenciesResponse], error) + // GetNetworkMetricsTimeSeries returns time-bucketed network metrics for charts + GetNetworkMetricsTimeSeries(context.Context, *connect.Request[v1.GetNetworkMetricsTimeSeriesRequest]) (*connect.Response[v1.GetNetworkMetricsTimeSeriesResponse], error) } // NewClusterServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -158,6 +176,11 @@ func NewClusterServiceHandler(svc ClusterServiceHandler, opts ...connect.Handler svc.GetNetworkDependencies, opts..., ) + clusterServiceGetNetworkMetricsTimeSeriesHandler := connect.NewUnaryHandler( + ClusterServiceGetNetworkMetricsTimeSeriesProcedure, + svc.GetNetworkMetricsTimeSeries, + opts..., + ) return "/api.v1.ClusterService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case ClusterServiceGetClustersBasicInfoProcedure: @@ -168,6 +191,8 @@ func NewClusterServiceHandler(svc ClusterServiceHandler, opts ...connect.Handler clusterServiceCreateClusterTokenHandler.ServeHTTP(w, r) case ClusterServiceGetNetworkDependenciesProcedure: clusterServiceGetNetworkDependenciesHandler.ServeHTTP(w, r) + case ClusterServiceGetNetworkMetricsTimeSeriesProcedure: + clusterServiceGetNetworkMetricsTimeSeriesHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -192,3 +217,7 @@ func (UnimplementedClusterServiceHandler) CreateClusterToken(context.Context, *c func (UnimplementedClusterServiceHandler) GetNetworkDependencies(context.Context, *connect.Request[v1.GetNetworkDependenciesRequest]) (*connect.Response[v1.GetNetworkDependenciesResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ClusterService.GetNetworkDependencies is not implemented")) } + +func (UnimplementedClusterServiceHandler) GetNetworkMetricsTimeSeries(context.Context, *connect.Request[v1.GetNetworkMetricsTimeSeriesRequest]) (*connect.Response[v1.GetNetworkMetricsTimeSeriesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ClusterService.GetNetworkMetricsTimeSeries is not implemented")) +} diff --git a/gen/api/v1/apiv1connect/operator.connect.go b/gen/api/v1/apiv1connect/operator.connect.go deleted file mode 100644 index 51f0aae4..00000000 --- a/gen/api/v1/apiv1connect/operator.connect.go +++ /dev/null @@ -1,159 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: api/v1/operator.proto - -package apiv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/devzero-inc/zxporter/gen/api/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion0_1_0 - -const ( - // OperatorServiceName is the fully-qualified name of the OperatorService service. - OperatorServiceName = "api.v1.OperatorService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // OperatorServiceGetOperatorsProcedure is the fully-qualified name of the OperatorService's - // GetOperators RPC. - OperatorServiceGetOperatorsProcedure = "/api.v1.OperatorService/GetOperators" - // OperatorServiceGetOperatorMetadataProcedure is the fully-qualified name of the OperatorService's - // GetOperatorMetadata RPC. - OperatorServiceGetOperatorMetadataProcedure = "/api.v1.OperatorService/GetOperatorMetadata" - // OperatorServiceGetOCIRegistriesProcedure is the fully-qualified name of the OperatorService's - // GetOCIRegistries RPC. - OperatorServiceGetOCIRegistriesProcedure = "/api.v1.OperatorService/GetOCIRegistries" -) - -// OperatorServiceClient is a client for the api.v1.OperatorService service. -type OperatorServiceClient interface { - GetOperators(context.Context, *connect.Request[v1.GetOperatorsRequest]) (*connect.Response[v1.GetOperatorsResponse], error) - GetOperatorMetadata(context.Context, *connect.Request[v1.GetOperatorMetadataRequest]) (*connect.Response[v1.GetOperatorMetadataResponse], error) - GetOCIRegistries(context.Context, *connect.Request[v1.GetOCIRegistriesRequest]) (*connect.Response[v1.GetOCIRegistriesResponse], error) -} - -// NewOperatorServiceClient constructs a client for the api.v1.OperatorService service. By default, -// it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, and -// sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() -// or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewOperatorServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) OperatorServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - return &operatorServiceClient{ - getOperators: connect.NewClient[v1.GetOperatorsRequest, v1.GetOperatorsResponse]( - httpClient, - baseURL+OperatorServiceGetOperatorsProcedure, - opts..., - ), - getOperatorMetadata: connect.NewClient[v1.GetOperatorMetadataRequest, v1.GetOperatorMetadataResponse]( - httpClient, - baseURL+OperatorServiceGetOperatorMetadataProcedure, - opts..., - ), - getOCIRegistries: connect.NewClient[v1.GetOCIRegistriesRequest, v1.GetOCIRegistriesResponse]( - httpClient, - baseURL+OperatorServiceGetOCIRegistriesProcedure, - opts..., - ), - } -} - -// operatorServiceClient implements OperatorServiceClient. -type operatorServiceClient struct { - getOperators *connect.Client[v1.GetOperatorsRequest, v1.GetOperatorsResponse] - getOperatorMetadata *connect.Client[v1.GetOperatorMetadataRequest, v1.GetOperatorMetadataResponse] - getOCIRegistries *connect.Client[v1.GetOCIRegistriesRequest, v1.GetOCIRegistriesResponse] -} - -// GetOperators calls api.v1.OperatorService.GetOperators. -func (c *operatorServiceClient) GetOperators(ctx context.Context, req *connect.Request[v1.GetOperatorsRequest]) (*connect.Response[v1.GetOperatorsResponse], error) { - return c.getOperators.CallUnary(ctx, req) -} - -// GetOperatorMetadata calls api.v1.OperatorService.GetOperatorMetadata. -func (c *operatorServiceClient) GetOperatorMetadata(ctx context.Context, req *connect.Request[v1.GetOperatorMetadataRequest]) (*connect.Response[v1.GetOperatorMetadataResponse], error) { - return c.getOperatorMetadata.CallUnary(ctx, req) -} - -// GetOCIRegistries calls api.v1.OperatorService.GetOCIRegistries. -func (c *operatorServiceClient) GetOCIRegistries(ctx context.Context, req *connect.Request[v1.GetOCIRegistriesRequest]) (*connect.Response[v1.GetOCIRegistriesResponse], error) { - return c.getOCIRegistries.CallUnary(ctx, req) -} - -// OperatorServiceHandler is an implementation of the api.v1.OperatorService service. -type OperatorServiceHandler interface { - GetOperators(context.Context, *connect.Request[v1.GetOperatorsRequest]) (*connect.Response[v1.GetOperatorsResponse], error) - GetOperatorMetadata(context.Context, *connect.Request[v1.GetOperatorMetadataRequest]) (*connect.Response[v1.GetOperatorMetadataResponse], error) - GetOCIRegistries(context.Context, *connect.Request[v1.GetOCIRegistriesRequest]) (*connect.Response[v1.GetOCIRegistriesResponse], error) -} - -// NewOperatorServiceHandler builds an HTTP handler from the service implementation. It returns the -// path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewOperatorServiceHandler(svc OperatorServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - operatorServiceGetOperatorsHandler := connect.NewUnaryHandler( - OperatorServiceGetOperatorsProcedure, - svc.GetOperators, - opts..., - ) - operatorServiceGetOperatorMetadataHandler := connect.NewUnaryHandler( - OperatorServiceGetOperatorMetadataProcedure, - svc.GetOperatorMetadata, - opts..., - ) - operatorServiceGetOCIRegistriesHandler := connect.NewUnaryHandler( - OperatorServiceGetOCIRegistriesProcedure, - svc.GetOCIRegistries, - opts..., - ) - return "/api.v1.OperatorService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case OperatorServiceGetOperatorsProcedure: - operatorServiceGetOperatorsHandler.ServeHTTP(w, r) - case OperatorServiceGetOperatorMetadataProcedure: - operatorServiceGetOperatorMetadataHandler.ServeHTTP(w, r) - case OperatorServiceGetOCIRegistriesProcedure: - operatorServiceGetOCIRegistriesHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedOperatorServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedOperatorServiceHandler struct{} - -func (UnimplementedOperatorServiceHandler) GetOperators(context.Context, *connect.Request[v1.GetOperatorsRequest]) (*connect.Response[v1.GetOperatorsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.OperatorService.GetOperators is not implemented")) -} - -func (UnimplementedOperatorServiceHandler) GetOperatorMetadata(context.Context, *connect.Request[v1.GetOperatorMetadataRequest]) (*connect.Response[v1.GetOperatorMetadataResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.OperatorService.GetOperatorMetadata is not implemented")) -} - -func (UnimplementedOperatorServiceHandler) GetOCIRegistries(context.Context, *connect.Request[v1.GetOCIRegistriesRequest]) (*connect.Response[v1.GetOCIRegistriesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.OperatorService.GetOCIRegistries is not implemented")) -} diff --git a/gen/api/v1/apiv1connect/operator_health.connect.go b/gen/api/v1/apiv1connect/operator_health.connect.go deleted file mode 100644 index 4ea9d15a..00000000 --- a/gen/api/v1/apiv1connect/operator_health.connect.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: api/v1/operator_health.proto - -package apiv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/devzero-inc/zxporter/gen/api/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion0_1_0 - -const ( - // OperatorHealthServiceName is the fully-qualified name of the OperatorHealthService service. - OperatorHealthServiceName = "api.v1.OperatorHealthService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // OperatorHealthServiceReportHealthProcedure is the fully-qualified name of the - // OperatorHealthService's ReportHealth RPC. - OperatorHealthServiceReportHealthProcedure = "/api.v1.OperatorHealthService/ReportHealth" - // OperatorHealthServiceGetClusterOperatorHealthProcedure is the fully-qualified name of the - // OperatorHealthService's GetClusterOperatorHealth RPC. - OperatorHealthServiceGetClusterOperatorHealthProcedure = "/api.v1.OperatorHealthService/GetClusterOperatorHealth" -) - -// OperatorHealthServiceClient is a client for the api.v1.OperatorHealthService service. -type OperatorHealthServiceClient interface { - ReportHealth(context.Context, *connect.Request[v1.ReportHealthRequest]) (*connect.Response[v1.ReportHealthResponse], error) - GetClusterOperatorHealth(context.Context, *connect.Request[v1.GetClusterOperatorHealthRequest]) (*connect.Response[v1.GetClusterOperatorHealthResponse], error) -} - -// NewOperatorHealthServiceClient constructs a client for the api.v1.OperatorHealthService service. -// By default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped -// responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewOperatorHealthServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) OperatorHealthServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - return &operatorHealthServiceClient{ - reportHealth: connect.NewClient[v1.ReportHealthRequest, v1.ReportHealthResponse]( - httpClient, - baseURL+OperatorHealthServiceReportHealthProcedure, - opts..., - ), - getClusterOperatorHealth: connect.NewClient[v1.GetClusterOperatorHealthRequest, v1.GetClusterOperatorHealthResponse]( - httpClient, - baseURL+OperatorHealthServiceGetClusterOperatorHealthProcedure, - opts..., - ), - } -} - -// operatorHealthServiceClient implements OperatorHealthServiceClient. -type operatorHealthServiceClient struct { - reportHealth *connect.Client[v1.ReportHealthRequest, v1.ReportHealthResponse] - getClusterOperatorHealth *connect.Client[v1.GetClusterOperatorHealthRequest, v1.GetClusterOperatorHealthResponse] -} - -// ReportHealth calls api.v1.OperatorHealthService.ReportHealth. -func (c *operatorHealthServiceClient) ReportHealth(ctx context.Context, req *connect.Request[v1.ReportHealthRequest]) (*connect.Response[v1.ReportHealthResponse], error) { - return c.reportHealth.CallUnary(ctx, req) -} - -// GetClusterOperatorHealth calls api.v1.OperatorHealthService.GetClusterOperatorHealth. -func (c *operatorHealthServiceClient) GetClusterOperatorHealth(ctx context.Context, req *connect.Request[v1.GetClusterOperatorHealthRequest]) (*connect.Response[v1.GetClusterOperatorHealthResponse], error) { - return c.getClusterOperatorHealth.CallUnary(ctx, req) -} - -// OperatorHealthServiceHandler is an implementation of the api.v1.OperatorHealthService service. -type OperatorHealthServiceHandler interface { - ReportHealth(context.Context, *connect.Request[v1.ReportHealthRequest]) (*connect.Response[v1.ReportHealthResponse], error) - GetClusterOperatorHealth(context.Context, *connect.Request[v1.GetClusterOperatorHealthRequest]) (*connect.Response[v1.GetClusterOperatorHealthResponse], error) -} - -// NewOperatorHealthServiceHandler builds an HTTP handler from the service implementation. It -// returns the path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewOperatorHealthServiceHandler(svc OperatorHealthServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - operatorHealthServiceReportHealthHandler := connect.NewUnaryHandler( - OperatorHealthServiceReportHealthProcedure, - svc.ReportHealth, - opts..., - ) - operatorHealthServiceGetClusterOperatorHealthHandler := connect.NewUnaryHandler( - OperatorHealthServiceGetClusterOperatorHealthProcedure, - svc.GetClusterOperatorHealth, - opts..., - ) - return "/api.v1.OperatorHealthService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case OperatorHealthServiceReportHealthProcedure: - operatorHealthServiceReportHealthHandler.ServeHTTP(w, r) - case OperatorHealthServiceGetClusterOperatorHealthProcedure: - operatorHealthServiceGetClusterOperatorHealthHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedOperatorHealthServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedOperatorHealthServiceHandler struct{} - -func (UnimplementedOperatorHealthServiceHandler) ReportHealth(context.Context, *connect.Request[v1.ReportHealthRequest]) (*connect.Response[v1.ReportHealthResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.OperatorHealthService.ReportHealth is not implemented")) -} - -func (UnimplementedOperatorHealthServiceHandler) GetClusterOperatorHealth(context.Context, *connect.Request[v1.GetClusterOperatorHealthRequest]) (*connect.Response[v1.GetClusterOperatorHealthResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.OperatorHealthService.GetClusterOperatorHealth is not implemented")) -} diff --git a/gen/api/v1/cluster.pb.go b/gen/api/v1/cluster.pb.go index e90050d8..81013692 100644 --- a/gen/api/v1/cluster.pb.go +++ b/gen/api/v1/cluster.pb.go @@ -893,6 +893,446 @@ func (x *GetNetworkDependenciesResponse) GetEdges() []*DependencyEdge { return nil } +// Request for network metrics time-series data +type GetNetworkMetricsTimeSeriesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + SrcNamespaces []string `protobuf:"bytes,4,rep,name=src_namespaces,json=srcNamespaces,proto3" json:"src_namespaces,omitempty"` // Filter by source namespaces (optional) + SrcWorkloads []string `protobuf:"bytes,5,rep,name=src_workloads,json=srcWorkloads,proto3" json:"src_workloads,omitempty"` // Filter by source workloads (optional) + TrafficTypes []string `protobuf:"bytes,6,rep,name=traffic_types,json=trafficTypes,proto3" json:"traffic_types,omitempty"` // Filter by traffic types (optional) + MaxDataPoints int32 `protobuf:"varint,7,opt,name=max_data_points,json=maxDataPoints,proto3" json:"max_data_points,omitempty"` // Maximum data points to return (default 288) +} + +func (x *GetNetworkMetricsTimeSeriesRequest) Reset() { + *x = GetNetworkMetricsTimeSeriesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_cluster_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNetworkMetricsTimeSeriesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNetworkMetricsTimeSeriesRequest) ProtoMessage() {} + +func (x *GetNetworkMetricsTimeSeriesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_cluster_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNetworkMetricsTimeSeriesRequest.ProtoReflect.Descriptor instead. +func (*GetNetworkMetricsTimeSeriesRequest) Descriptor() ([]byte, []int) { + return file_api_v1_cluster_proto_rawDescGZIP(), []int{13} +} + +func (x *GetNetworkMetricsTimeSeriesRequest) GetClusterId() string { + if x != nil { + return x.ClusterId + } + return "" +} + +func (x *GetNetworkMetricsTimeSeriesRequest) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *GetNetworkMetricsTimeSeriesRequest) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *GetNetworkMetricsTimeSeriesRequest) GetSrcNamespaces() []string { + if x != nil { + return x.SrcNamespaces + } + return nil +} + +func (x *GetNetworkMetricsTimeSeriesRequest) GetSrcWorkloads() []string { + if x != nil { + return x.SrcWorkloads + } + return nil +} + +func (x *GetNetworkMetricsTimeSeriesRequest) GetTrafficTypes() []string { + if x != nil { + return x.TrafficTypes + } + return nil +} + +func (x *GetNetworkMetricsTimeSeriesRequest) GetMaxDataPoints() int32 { + if x != nil { + return x.MaxDataPoints + } + return 0 +} + +// Response with time-bucketed network metrics +type GetNetworkMetricsTimeSeriesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Buckets []*NetworkTimeSeriesBucket `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty"` + Zones []*TimeSeriesZone `protobuf:"bytes,2,rep,name=zones,proto3" json:"zones,omitempty"` +} + +func (x *GetNetworkMetricsTimeSeriesResponse) Reset() { + *x = GetNetworkMetricsTimeSeriesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_cluster_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNetworkMetricsTimeSeriesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNetworkMetricsTimeSeriesResponse) ProtoMessage() {} + +func (x *GetNetworkMetricsTimeSeriesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_cluster_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNetworkMetricsTimeSeriesResponse.ProtoReflect.Descriptor instead. +func (*GetNetworkMetricsTimeSeriesResponse) Descriptor() ([]byte, []int) { + return file_api_v1_cluster_proto_rawDescGZIP(), []int{14} +} + +func (x *GetNetworkMetricsTimeSeriesResponse) GetBuckets() []*NetworkTimeSeriesBucket { + if x != nil { + return x.Buckets + } + return nil +} + +func (x *GetNetworkMetricsTimeSeriesResponse) GetZones() []*TimeSeriesZone { + if x != nil { + return x.Zones + } + return nil +} + +// Describes a resolution zone in the response +type TimeSeriesZone struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + BucketSize string `protobuf:"bytes,3,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` // "15m", "30m", "1h", "12h", "1d", "7d" + PointCount int32 `protobuf:"varint,4,opt,name=point_count,json=pointCount,proto3" json:"point_count,omitempty"` +} + +func (x *TimeSeriesZone) Reset() { + *x = TimeSeriesZone{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_cluster_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TimeSeriesZone) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TimeSeriesZone) ProtoMessage() {} + +func (x *TimeSeriesZone) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_cluster_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TimeSeriesZone.ProtoReflect.Descriptor instead. +func (*TimeSeriesZone) Descriptor() ([]byte, []int) { + return file_api_v1_cluster_proto_rawDescGZIP(), []int{15} +} + +func (x *TimeSeriesZone) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *TimeSeriesZone) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *TimeSeriesZone) GetBucketSize() string { + if x != nil { + return x.BucketSize + } + return "" +} + +func (x *TimeSeriesZone) GetPointCount() int32 { + if x != nil { + return x.PointCount + } + return 0 +} + +// A single time-series data point +type NetworkTimeSeriesBucket struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + TrafficType string `protobuf:"bytes,2,opt,name=traffic_type,json=trafficType,proto3" json:"traffic_type,omitempty"` + TxBytes int64 `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"` + RxBytes int64 `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"` + Cost float64 `protobuf:"fixed64,5,opt,name=cost,proto3" json:"cost,omitempty"` + TxPackets int64 `protobuf:"varint,6,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"` + RxPackets int64 `protobuf:"varint,7,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"` + SampleCount int32 `protobuf:"varint,8,opt,name=sample_count,json=sampleCount,proto3" json:"sample_count,omitempty"` + TxBytesPercentiles *NetworkPercentileValues `protobuf:"bytes,9,opt,name=tx_bytes_percentiles,json=txBytesPercentiles,proto3" json:"tx_bytes_percentiles,omitempty"` + RxBytesPercentiles *NetworkPercentileValues `protobuf:"bytes,10,opt,name=rx_bytes_percentiles,json=rxBytesPercentiles,proto3" json:"rx_bytes_percentiles,omitempty"` + CostPercentiles *NetworkPercentileValues `protobuf:"bytes,11,opt,name=cost_percentiles,json=costPercentiles,proto3" json:"cost_percentiles,omitempty"` + ZoneBucketSize string `protobuf:"bytes,12,opt,name=zone_bucket_size,json=zoneBucketSize,proto3" json:"zone_bucket_size,omitempty"` // Bucket size of the zone this point belongs to +} + +func (x *NetworkTimeSeriesBucket) Reset() { + *x = NetworkTimeSeriesBucket{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_cluster_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NetworkTimeSeriesBucket) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkTimeSeriesBucket) ProtoMessage() {} + +func (x *NetworkTimeSeriesBucket) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_cluster_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkTimeSeriesBucket.ProtoReflect.Descriptor instead. +func (*NetworkTimeSeriesBucket) Descriptor() ([]byte, []int) { + return file_api_v1_cluster_proto_rawDescGZIP(), []int{16} +} + +func (x *NetworkTimeSeriesBucket) GetTimestamp() *timestamppb.Timestamp { + if x != nil { + return x.Timestamp + } + return nil +} + +func (x *NetworkTimeSeriesBucket) GetTrafficType() string { + if x != nil { + return x.TrafficType + } + return "" +} + +func (x *NetworkTimeSeriesBucket) GetTxBytes() int64 { + if x != nil { + return x.TxBytes + } + return 0 +} + +func (x *NetworkTimeSeriesBucket) GetRxBytes() int64 { + if x != nil { + return x.RxBytes + } + return 0 +} + +func (x *NetworkTimeSeriesBucket) GetCost() float64 { + if x != nil { + return x.Cost + } + return 0 +} + +func (x *NetworkTimeSeriesBucket) GetTxPackets() int64 { + if x != nil { + return x.TxPackets + } + return 0 +} + +func (x *NetworkTimeSeriesBucket) GetRxPackets() int64 { + if x != nil { + return x.RxPackets + } + return 0 +} + +func (x *NetworkTimeSeriesBucket) GetSampleCount() int32 { + if x != nil { + return x.SampleCount + } + return 0 +} + +func (x *NetworkTimeSeriesBucket) GetTxBytesPercentiles() *NetworkPercentileValues { + if x != nil { + return x.TxBytesPercentiles + } + return nil +} + +func (x *NetworkTimeSeriesBucket) GetRxBytesPercentiles() *NetworkPercentileValues { + if x != nil { + return x.RxBytesPercentiles + } + return nil +} + +func (x *NetworkTimeSeriesBucket) GetCostPercentiles() *NetworkPercentileValues { + if x != nil { + return x.CostPercentiles + } + return nil +} + +func (x *NetworkTimeSeriesBucket) GetZoneBucketSize() string { + if x != nil { + return x.ZoneBucketSize + } + return "" +} + +// Percentile values extracted from tdigest for network metrics +type NetworkPercentileValues struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + P50 float64 `protobuf:"fixed64,1,opt,name=p50,proto3" json:"p50,omitempty"` + P75 float64 `protobuf:"fixed64,2,opt,name=p75,proto3" json:"p75,omitempty"` + P90 float64 `protobuf:"fixed64,3,opt,name=p90,proto3" json:"p90,omitempty"` + P95 float64 `protobuf:"fixed64,4,opt,name=p95,proto3" json:"p95,omitempty"` + P99 float64 `protobuf:"fixed64,5,opt,name=p99,proto3" json:"p99,omitempty"` +} + +func (x *NetworkPercentileValues) Reset() { + *x = NetworkPercentileValues{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v1_cluster_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NetworkPercentileValues) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkPercentileValues) ProtoMessage() {} + +func (x *NetworkPercentileValues) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_cluster_proto_msgTypes[17] + 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 NetworkPercentileValues.ProtoReflect.Descriptor instead. +func (*NetworkPercentileValues) Descriptor() ([]byte, []int) { + return file_api_v1_cluster_proto_rawDescGZIP(), []int{17} +} + +func (x *NetworkPercentileValues) GetP50() float64 { + if x != nil { + return x.P50 + } + return 0 +} + +func (x *NetworkPercentileValues) GetP75() float64 { + if x != nil { + return x.P75 + } + return 0 +} + +func (x *NetworkPercentileValues) GetP90() float64 { + if x != nil { + return x.P90 + } + return 0 +} + +func (x *NetworkPercentileValues) GetP95() float64 { + if x != nil { + return x.P95 + } + return 0 +} + +func (x *NetworkPercentileValues) GetP99() float64 { + if x != nil { + return x.P99 + } + return 0 +} + var File_api_v1_cluster_proto protoreflect.FileDescriptor var file_api_v1_cluster_proto_rawDesc = []byte{ @@ -1039,42 +1479,135 @@ var file_api_v1_cluster_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, - 0x65, 0x73, 0x32, 0xa2, 0x03, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, - 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, - 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, - 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, - 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x85, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x7a, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, - 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, - 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x22, 0xce, 0x02, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x72, + 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x72, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x72, 0x63, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, + 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x05, 0x7a, + 0x6f, 0x6e, 0x65, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbd, 0x04, 0x0a, 0x17, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, + 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x74, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x72, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x51, 0x0a, 0x14, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x12, + 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x52, 0x12, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x52, 0x0f, 0x63, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, + 0x73, 0x12, 0x28, 0x0a, 0x10, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x7a, 0x6f, 0x6e, + 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x73, 0x0a, 0x17, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x35, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x37, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, + 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03, + 0x70, 0x39, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10, + 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x39, + 0x32, 0x9a, 0x04, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x54, + 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x85, 0x01, + 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, + 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x7a, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, 0x65, + 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, + 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, + 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1089,60 +1622,77 @@ func file_api_v1_cluster_proto_rawDescGZIP() []byte { return file_api_v1_cluster_proto_rawDescData } -var file_api_v1_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_api_v1_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_api_v1_cluster_proto_goTypes = []interface{}{ - (*GetClustersBasicInfoRequest)(nil), // 0: api.v1.GetClustersBasicInfoRequest - (*GetClustersBasicInfoResponse)(nil), // 1: api.v1.GetClustersBasicInfoResponse - (*GetClustersWithMetricsRequest)(nil), // 2: api.v1.GetClustersWithMetricsRequest - (*GetClustersWithMetricsResponse)(nil), // 3: api.v1.GetClustersWithMetricsResponse - (*CreateClusterTokenRequest)(nil), // 4: api.v1.CreateClusterTokenRequest - (*CreateClusterTokenResponse)(nil), // 5: api.v1.CreateClusterTokenResponse - (*GetNetworkDependenciesRequest)(nil), // 6: api.v1.GetNetworkDependenciesRequest - (*WorkloadNode)(nil), // 7: api.v1.WorkloadNode - (*ExternalNode)(nil), // 8: api.v1.ExternalNode - (*ServiceNode)(nil), // 9: api.v1.ServiceNode - (*CloudResourceNode)(nil), // 10: api.v1.CloudResourceNode - (*DependencyEdge)(nil), // 11: api.v1.DependencyEdge - (*GetNetworkDependenciesResponse)(nil), // 12: api.v1.GetNetworkDependenciesResponse - (*Cluster)(nil), // 13: api.v1.Cluster - (*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp - (*ResourceMetrics)(nil), // 15: api.v1.ResourceMetrics - (*CostInfo)(nil), // 16: api.v1.CostInfo - (*NodeInfo)(nil), // 17: api.v1.NodeInfo - (*CostDataPoint)(nil), // 18: api.v1.CostDataPoint - (*ResourceDataPoint)(nil), // 19: api.v1.ResourceDataPoint + (*GetClustersBasicInfoRequest)(nil), // 0: api.v1.GetClustersBasicInfoRequest + (*GetClustersBasicInfoResponse)(nil), // 1: api.v1.GetClustersBasicInfoResponse + (*GetClustersWithMetricsRequest)(nil), // 2: api.v1.GetClustersWithMetricsRequest + (*GetClustersWithMetricsResponse)(nil), // 3: api.v1.GetClustersWithMetricsResponse + (*CreateClusterTokenRequest)(nil), // 4: api.v1.CreateClusterTokenRequest + (*CreateClusterTokenResponse)(nil), // 5: api.v1.CreateClusterTokenResponse + (*GetNetworkDependenciesRequest)(nil), // 6: api.v1.GetNetworkDependenciesRequest + (*WorkloadNode)(nil), // 7: api.v1.WorkloadNode + (*ExternalNode)(nil), // 8: api.v1.ExternalNode + (*ServiceNode)(nil), // 9: api.v1.ServiceNode + (*CloudResourceNode)(nil), // 10: api.v1.CloudResourceNode + (*DependencyEdge)(nil), // 11: api.v1.DependencyEdge + (*GetNetworkDependenciesResponse)(nil), // 12: api.v1.GetNetworkDependenciesResponse + (*GetNetworkMetricsTimeSeriesRequest)(nil), // 13: api.v1.GetNetworkMetricsTimeSeriesRequest + (*GetNetworkMetricsTimeSeriesResponse)(nil), // 14: api.v1.GetNetworkMetricsTimeSeriesResponse + (*TimeSeriesZone)(nil), // 15: api.v1.TimeSeriesZone + (*NetworkTimeSeriesBucket)(nil), // 16: api.v1.NetworkTimeSeriesBucket + (*NetworkPercentileValues)(nil), // 17: api.v1.NetworkPercentileValues + (*Cluster)(nil), // 18: api.v1.Cluster + (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp + (*ResourceMetrics)(nil), // 20: api.v1.ResourceMetrics + (*CostInfo)(nil), // 21: api.v1.CostInfo + (*NodeInfo)(nil), // 22: api.v1.NodeInfo + (*CostDataPoint)(nil), // 23: api.v1.CostDataPoint + (*ResourceDataPoint)(nil), // 24: api.v1.ResourceDataPoint } var file_api_v1_cluster_proto_depIdxs = []int32{ - 13, // 0: api.v1.GetClustersBasicInfoResponse.clusters:type_name -> api.v1.Cluster - 14, // 1: api.v1.GetClustersWithMetricsRequest.start_time:type_name -> google.protobuf.Timestamp - 14, // 2: api.v1.GetClustersWithMetricsRequest.end_time:type_name -> google.protobuf.Timestamp - 13, // 3: api.v1.GetClustersWithMetricsResponse.clusters:type_name -> api.v1.Cluster - 15, // 4: api.v1.GetClustersWithMetricsResponse.resource_metrics:type_name -> api.v1.ResourceMetrics - 16, // 5: api.v1.GetClustersWithMetricsResponse.cost_info:type_name -> api.v1.CostInfo - 17, // 6: api.v1.GetClustersWithMetricsResponse.node_info:type_name -> api.v1.NodeInfo - 18, // 7: api.v1.GetClustersWithMetricsResponse.cost_data_points:type_name -> api.v1.CostDataPoint - 19, // 8: api.v1.GetClustersWithMetricsResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint - 14, // 9: api.v1.GetNetworkDependenciesRequest.start_time:type_name -> google.protobuf.Timestamp - 14, // 10: api.v1.GetNetworkDependenciesRequest.end_time:type_name -> google.protobuf.Timestamp + 18, // 0: api.v1.GetClustersBasicInfoResponse.clusters:type_name -> api.v1.Cluster + 19, // 1: api.v1.GetClustersWithMetricsRequest.start_time:type_name -> google.protobuf.Timestamp + 19, // 2: api.v1.GetClustersWithMetricsRequest.end_time:type_name -> google.protobuf.Timestamp + 18, // 3: api.v1.GetClustersWithMetricsResponse.clusters:type_name -> api.v1.Cluster + 20, // 4: api.v1.GetClustersWithMetricsResponse.resource_metrics:type_name -> api.v1.ResourceMetrics + 21, // 5: api.v1.GetClustersWithMetricsResponse.cost_info:type_name -> api.v1.CostInfo + 22, // 6: api.v1.GetClustersWithMetricsResponse.node_info:type_name -> api.v1.NodeInfo + 23, // 7: api.v1.GetClustersWithMetricsResponse.cost_data_points:type_name -> api.v1.CostDataPoint + 24, // 8: api.v1.GetClustersWithMetricsResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint + 19, // 9: api.v1.GetNetworkDependenciesRequest.start_time:type_name -> google.protobuf.Timestamp + 19, // 10: api.v1.GetNetworkDependenciesRequest.end_time:type_name -> google.protobuf.Timestamp 7, // 11: api.v1.DependencyEdge.src_workload:type_name -> api.v1.WorkloadNode 7, // 12: api.v1.DependencyEdge.dst_workload:type_name -> api.v1.WorkloadNode 8, // 13: api.v1.DependencyEdge.dst_external:type_name -> api.v1.ExternalNode 9, // 14: api.v1.DependencyEdge.dst_service:type_name -> api.v1.ServiceNode 10, // 15: api.v1.DependencyEdge.dst_cloud_resource:type_name -> api.v1.CloudResourceNode 11, // 16: api.v1.GetNetworkDependenciesResponse.edges:type_name -> api.v1.DependencyEdge - 0, // 17: api.v1.ClusterService.GetClustersBasicInfo:input_type -> api.v1.GetClustersBasicInfoRequest - 2, // 18: api.v1.ClusterService.GetClustersWithMetrics:input_type -> api.v1.GetClustersWithMetricsRequest - 4, // 19: api.v1.ClusterService.CreateClusterToken:input_type -> api.v1.CreateClusterTokenRequest - 6, // 20: api.v1.ClusterService.GetNetworkDependencies:input_type -> api.v1.GetNetworkDependenciesRequest - 1, // 21: api.v1.ClusterService.GetClustersBasicInfo:output_type -> api.v1.GetClustersBasicInfoResponse - 3, // 22: api.v1.ClusterService.GetClustersWithMetrics:output_type -> api.v1.GetClustersWithMetricsResponse - 5, // 23: api.v1.ClusterService.CreateClusterToken:output_type -> api.v1.CreateClusterTokenResponse - 12, // 24: api.v1.ClusterService.GetNetworkDependencies:output_type -> api.v1.GetNetworkDependenciesResponse - 21, // [21:25] is the sub-list for method output_type - 17, // [17:21] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 19, // 17: api.v1.GetNetworkMetricsTimeSeriesRequest.start_time:type_name -> google.protobuf.Timestamp + 19, // 18: api.v1.GetNetworkMetricsTimeSeriesRequest.end_time:type_name -> google.protobuf.Timestamp + 16, // 19: api.v1.GetNetworkMetricsTimeSeriesResponse.buckets:type_name -> api.v1.NetworkTimeSeriesBucket + 15, // 20: api.v1.GetNetworkMetricsTimeSeriesResponse.zones:type_name -> api.v1.TimeSeriesZone + 19, // 21: api.v1.TimeSeriesZone.start_time:type_name -> google.protobuf.Timestamp + 19, // 22: api.v1.TimeSeriesZone.end_time:type_name -> google.protobuf.Timestamp + 19, // 23: api.v1.NetworkTimeSeriesBucket.timestamp:type_name -> google.protobuf.Timestamp + 17, // 24: api.v1.NetworkTimeSeriesBucket.tx_bytes_percentiles:type_name -> api.v1.NetworkPercentileValues + 17, // 25: api.v1.NetworkTimeSeriesBucket.rx_bytes_percentiles:type_name -> api.v1.NetworkPercentileValues + 17, // 26: api.v1.NetworkTimeSeriesBucket.cost_percentiles:type_name -> api.v1.NetworkPercentileValues + 0, // 27: api.v1.ClusterService.GetClustersBasicInfo:input_type -> api.v1.GetClustersBasicInfoRequest + 2, // 28: api.v1.ClusterService.GetClustersWithMetrics:input_type -> api.v1.GetClustersWithMetricsRequest + 4, // 29: api.v1.ClusterService.CreateClusterToken:input_type -> api.v1.CreateClusterTokenRequest + 6, // 30: api.v1.ClusterService.GetNetworkDependencies:input_type -> api.v1.GetNetworkDependenciesRequest + 13, // 31: api.v1.ClusterService.GetNetworkMetricsTimeSeries:input_type -> api.v1.GetNetworkMetricsTimeSeriesRequest + 1, // 32: api.v1.ClusterService.GetClustersBasicInfo:output_type -> api.v1.GetClustersBasicInfoResponse + 3, // 33: api.v1.ClusterService.GetClustersWithMetrics:output_type -> api.v1.GetClustersWithMetricsResponse + 5, // 34: api.v1.ClusterService.CreateClusterToken:output_type -> api.v1.CreateClusterTokenResponse + 12, // 35: api.v1.ClusterService.GetNetworkDependencies:output_type -> api.v1.GetNetworkDependenciesResponse + 14, // 36: api.v1.ClusterService.GetNetworkMetricsTimeSeries:output_type -> api.v1.GetNetworkMetricsTimeSeriesResponse + 32, // [32:37] is the sub-list for method output_type + 27, // [27:32] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_api_v1_cluster_proto_init() } @@ -1309,6 +1859,66 @@ func file_api_v1_cluster_proto_init() { return nil } } + file_api_v1_cluster_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNetworkMetricsTimeSeriesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_cluster_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNetworkMetricsTimeSeriesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_cluster_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TimeSeriesZone); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_cluster_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NetworkTimeSeriesBucket); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v1_cluster_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NetworkPercentileValues); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_api_v1_cluster_proto_msgTypes[2].OneofWrappers = []interface{}{} type x struct{} @@ -1317,7 +1927,7 @@ func file_api_v1_cluster_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_v1_cluster_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 18, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/api/v1/cluster_grpc.pb.go b/gen/api/v1/cluster_grpc.pb.go index a8e41c24..576193b8 100644 --- a/gen/api/v1/cluster_grpc.pb.go +++ b/gen/api/v1/cluster_grpc.pb.go @@ -19,10 +19,11 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - ClusterService_GetClustersBasicInfo_FullMethodName = "/api.v1.ClusterService/GetClustersBasicInfo" - ClusterService_GetClustersWithMetrics_FullMethodName = "/api.v1.ClusterService/GetClustersWithMetrics" - ClusterService_CreateClusterToken_FullMethodName = "/api.v1.ClusterService/CreateClusterToken" - ClusterService_GetNetworkDependencies_FullMethodName = "/api.v1.ClusterService/GetNetworkDependencies" + ClusterService_GetClustersBasicInfo_FullMethodName = "/api.v1.ClusterService/GetClustersBasicInfo" + ClusterService_GetClustersWithMetrics_FullMethodName = "/api.v1.ClusterService/GetClustersWithMetrics" + ClusterService_CreateClusterToken_FullMethodName = "/api.v1.ClusterService/CreateClusterToken" + ClusterService_GetNetworkDependencies_FullMethodName = "/api.v1.ClusterService/GetNetworkDependencies" + ClusterService_GetNetworkMetricsTimeSeries_FullMethodName = "/api.v1.ClusterService/GetNetworkMetricsTimeSeries" ) // ClusterServiceClient is the client API for ClusterService service. @@ -37,6 +38,8 @@ type ClusterServiceClient interface { CreateClusterToken(ctx context.Context, in *CreateClusterTokenRequest, opts ...grpc.CallOption) (*CreateClusterTokenResponse, error) // GetNetworkDependencies returns workload-level network dependencies for visualization GetNetworkDependencies(ctx context.Context, in *GetNetworkDependenciesRequest, opts ...grpc.CallOption) (*GetNetworkDependenciesResponse, error) + // GetNetworkMetricsTimeSeries returns time-bucketed network metrics for charts + GetNetworkMetricsTimeSeries(ctx context.Context, in *GetNetworkMetricsTimeSeriesRequest, opts ...grpc.CallOption) (*GetNetworkMetricsTimeSeriesResponse, error) } type clusterServiceClient struct { @@ -83,6 +86,15 @@ func (c *clusterServiceClient) GetNetworkDependencies(ctx context.Context, in *G return out, nil } +func (c *clusterServiceClient) GetNetworkMetricsTimeSeries(ctx context.Context, in *GetNetworkMetricsTimeSeriesRequest, opts ...grpc.CallOption) (*GetNetworkMetricsTimeSeriesResponse, error) { + out := new(GetNetworkMetricsTimeSeriesResponse) + err := c.cc.Invoke(ctx, ClusterService_GetNetworkMetricsTimeSeries_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ClusterServiceServer is the server API for ClusterService service. // All implementations must embed UnimplementedClusterServiceServer // for forward compatibility @@ -95,6 +107,8 @@ type ClusterServiceServer interface { CreateClusterToken(context.Context, *CreateClusterTokenRequest) (*CreateClusterTokenResponse, error) // GetNetworkDependencies returns workload-level network dependencies for visualization GetNetworkDependencies(context.Context, *GetNetworkDependenciesRequest) (*GetNetworkDependenciesResponse, error) + // GetNetworkMetricsTimeSeries returns time-bucketed network metrics for charts + GetNetworkMetricsTimeSeries(context.Context, *GetNetworkMetricsTimeSeriesRequest) (*GetNetworkMetricsTimeSeriesResponse, error) mustEmbedUnimplementedClusterServiceServer() } @@ -114,6 +128,9 @@ func (UnimplementedClusterServiceServer) CreateClusterToken(context.Context, *Cr func (UnimplementedClusterServiceServer) GetNetworkDependencies(context.Context, *GetNetworkDependenciesRequest) (*GetNetworkDependenciesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetNetworkDependencies not implemented") } +func (UnimplementedClusterServiceServer) GetNetworkMetricsTimeSeries(context.Context, *GetNetworkMetricsTimeSeriesRequest) (*GetNetworkMetricsTimeSeriesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNetworkMetricsTimeSeries not implemented") +} func (UnimplementedClusterServiceServer) mustEmbedUnimplementedClusterServiceServer() {} // UnsafeClusterServiceServer may be embedded to opt out of forward compatibility for this service. @@ -199,6 +216,24 @@ func _ClusterService_GetNetworkDependencies_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _ClusterService_GetNetworkMetricsTimeSeries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNetworkMetricsTimeSeriesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServiceServer).GetNetworkMetricsTimeSeries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ClusterService_GetNetworkMetricsTimeSeries_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServiceServer).GetNetworkMetricsTimeSeries(ctx, req.(*GetNetworkMetricsTimeSeriesRequest)) + } + return interceptor(ctx, in, info, handler) +} + // ClusterService_ServiceDesc is the grpc.ServiceDesc for ClusterService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -222,6 +257,10 @@ var ClusterService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetNetworkDependencies", Handler: _ClusterService_GetNetworkDependencies_Handler, }, + { + MethodName: "GetNetworkMetricsTimeSeries", + Handler: _ClusterService_GetNetworkMetricsTimeSeries_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/v1/cluster.proto", diff --git a/gen/api/v1/operator.pb.go b/gen/api/v1/operator.pb.go deleted file mode 100644 index 0a0070ef..00000000 --- a/gen/api/v1/operator.pb.go +++ /dev/null @@ -1,1641 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc (unknown) -// source: api/v1/operator.proto - -package apiv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// Enums defining operator details -type OperatorType int32 - -const ( - OperatorType_OPERATOR_TYPE_UNSPECIFIED OperatorType = 0 - OperatorType_OPERATOR_TYPE_READ OperatorType = 1 - OperatorType_OPERATOR_TYPE_WRITE OperatorType = 2 - OperatorType_OPERATOR_TYPE_NODE OperatorType = 3 - OperatorType_OPERATOR_TYPE_SECURITY OperatorType = 4 - OperatorType_OPERATOR_TYPE_NETWORK OperatorType = 5 -) - -// Enum value maps for OperatorType. -var ( - OperatorType_name = map[int32]string{ - 0: "OPERATOR_TYPE_UNSPECIFIED", - 1: "OPERATOR_TYPE_READ", - 2: "OPERATOR_TYPE_WRITE", - 3: "OPERATOR_TYPE_NODE", - 4: "OPERATOR_TYPE_SECURITY", - 5: "OPERATOR_TYPE_NETWORK", - } - OperatorType_value = map[string]int32{ - "OPERATOR_TYPE_UNSPECIFIED": 0, - "OPERATOR_TYPE_READ": 1, - "OPERATOR_TYPE_WRITE": 2, - "OPERATOR_TYPE_NODE": 3, - "OPERATOR_TYPE_SECURITY": 4, - "OPERATOR_TYPE_NETWORK": 5, - } -) - -func (x OperatorType) Enum() *OperatorType { - p := new(OperatorType) - *p = x - return p -} - -func (x OperatorType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OperatorType) Descriptor() protoreflect.EnumDescriptor { - return file_api_v1_operator_proto_enumTypes[0].Descriptor() -} - -func (OperatorType) Type() protoreflect.EnumType { - return &file_api_v1_operator_proto_enumTypes[0] -} - -func (x OperatorType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use OperatorType.Descriptor instead. -func (OperatorType) EnumDescriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{0} -} - -type OperatorState int32 - -const ( - OperatorState_OPERATOR_STATE_UNSPECIFIED OperatorState = 0 - OperatorState_OPERATOR_STATE_DISABLED OperatorState = 1 - OperatorState_OPERATOR_STATE_OPERATIONAL OperatorState = 2 - OperatorState_OPERATOR_STATE_DEGRADED OperatorState = 3 - OperatorState_OPERATOR_STATE_ERROR OperatorState = 4 -) - -// Enum value maps for OperatorState. -var ( - OperatorState_name = map[int32]string{ - 0: "OPERATOR_STATE_UNSPECIFIED", - 1: "OPERATOR_STATE_DISABLED", - 2: "OPERATOR_STATE_OPERATIONAL", - 3: "OPERATOR_STATE_DEGRADED", - 4: "OPERATOR_STATE_ERROR", - } - OperatorState_value = map[string]int32{ - "OPERATOR_STATE_UNSPECIFIED": 0, - "OPERATOR_STATE_DISABLED": 1, - "OPERATOR_STATE_OPERATIONAL": 2, - "OPERATOR_STATE_DEGRADED": 3, - "OPERATOR_STATE_ERROR": 4, - } -) - -func (x OperatorState) Enum() *OperatorState { - p := new(OperatorState) - *p = x - return p -} - -func (x OperatorState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OperatorState) Descriptor() protoreflect.EnumDescriptor { - return file_api_v1_operator_proto_enumTypes[1].Descriptor() -} - -func (OperatorState) Type() protoreflect.EnumType { - return &file_api_v1_operator_proto_enumTypes[1] -} - -func (x OperatorState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use OperatorState.Descriptor instead. -func (OperatorState) EnumDescriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{1} -} - -type OperatorInstallMethod int32 - -const ( - OperatorInstallMethod_OPERATOR_INSTALL_METHOD_UNSPECIFIED OperatorInstallMethod = 0 - OperatorInstallMethod_OPERATOR_INSTALL_METHOD_MANIFEST OperatorInstallMethod = 1 - OperatorInstallMethod_OPERATOR_INSTALL_METHOD_HELM OperatorInstallMethod = 2 -) - -// Enum value maps for OperatorInstallMethod. -var ( - OperatorInstallMethod_name = map[int32]string{ - 0: "OPERATOR_INSTALL_METHOD_UNSPECIFIED", - 1: "OPERATOR_INSTALL_METHOD_MANIFEST", - 2: "OPERATOR_INSTALL_METHOD_HELM", - } - OperatorInstallMethod_value = map[string]int32{ - "OPERATOR_INSTALL_METHOD_UNSPECIFIED": 0, - "OPERATOR_INSTALL_METHOD_MANIFEST": 1, - "OPERATOR_INSTALL_METHOD_HELM": 2, - } -) - -func (x OperatorInstallMethod) Enum() *OperatorInstallMethod { - p := new(OperatorInstallMethod) - *p = x - return p -} - -func (x OperatorInstallMethod) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OperatorInstallMethod) Descriptor() protoreflect.EnumDescriptor { - return file_api_v1_operator_proto_enumTypes[2].Descriptor() -} - -func (OperatorInstallMethod) Type() protoreflect.EnumType { - return &file_api_v1_operator_proto_enumTypes[2] -} - -func (x OperatorInstallMethod) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use OperatorInstallMethod.Descriptor instead. -func (OperatorInstallMethod) EnumDescriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{2} -} - -// Operator describes basic details for any type of operator -type Operator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type OperatorType `protobuf:"varint,1,opt,name=type,proto3,enum=api.v1.OperatorType" json:"type,omitempty"` - InstallMethod OperatorInstallMethod `protobuf:"varint,2,opt,name=install_method,json=installMethod,proto3,enum=api.v1.OperatorInstallMethod" json:"install_method,omitempty"` - State OperatorState `protobuf:"varint,3,opt,name=state,proto3,enum=api.v1.OperatorState" json:"state,omitempty"` - DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` - Commit string `protobuf:"bytes,7,opt,name=commit,proto3" json:"commit,omitempty"` - IsOutdated bool `protobuf:"varint,8,opt,name=is_outdated,json=isOutdated,proto3" json:"is_outdated,omitempty"` - LatestAvailableVersion string `protobuf:"bytes,9,opt,name=latest_available_version,json=latestAvailableVersion,proto3" json:"latest_available_version,omitempty"` - ConnectedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=connected_at,json=connectedAt,proto3" json:"connected_at,omitempty"` -} - -func (x *Operator) Reset() { - *x = Operator{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Operator) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Operator) ProtoMessage() {} - -func (x *Operator) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Operator.ProtoReflect.Descriptor instead. -func (*Operator) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{0} -} - -func (x *Operator) GetType() OperatorType { - if x != nil { - return x.Type - } - return OperatorType_OPERATOR_TYPE_UNSPECIFIED -} - -func (x *Operator) GetInstallMethod() OperatorInstallMethod { - if x != nil { - return x.InstallMethod - } - return OperatorInstallMethod_OPERATOR_INSTALL_METHOD_UNSPECIFIED -} - -func (x *Operator) GetState() OperatorState { - if x != nil { - return x.State - } - return OperatorState_OPERATOR_STATE_UNSPECIFIED -} - -func (x *Operator) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" -} - -func (x *Operator) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *Operator) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *Operator) GetCommit() string { - if x != nil { - return x.Commit - } - return "" -} - -func (x *Operator) GetIsOutdated() bool { - if x != nil { - return x.IsOutdated - } - return false -} - -func (x *Operator) GetLatestAvailableVersion() string { - if x != nil { - return x.LatestAvailableVersion - } - return "" -} - -func (x *Operator) GetConnectedAt() *timestamppb.Timestamp { - if x != nil { - return x.ConnectedAt - } - return nil -} - -// Request and response for GetOperators -type GetOperatorsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *GetOperatorsRequest) Reset() { - *x = GetOperatorsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOperatorsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOperatorsRequest) ProtoMessage() {} - -func (x *GetOperatorsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetOperatorsRequest.ProtoReflect.Descriptor instead. -func (*GetOperatorsRequest) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{1} -} - -type GetOperatorsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Operators []*Operator `protobuf:"bytes,1,rep,name=operators,proto3" json:"operators,omitempty"` -} - -func (x *GetOperatorsResponse) Reset() { - *x = GetOperatorsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOperatorsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOperatorsResponse) ProtoMessage() {} - -func (x *GetOperatorsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetOperatorsResponse.ProtoReflect.Descriptor instead. -func (*GetOperatorsResponse) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{2} -} - -func (x *GetOperatorsResponse) GetOperators() []*Operator { - if x != nil { - return x.Operators - } - return nil -} - -// ConnectionMetric is reusable for any metric type -type ConnectionMetric struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - IsActive bool `protobuf:"varint,3,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` - LastSeen *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"` -} - -func (x *ConnectionMetric) Reset() { - *x = ConnectionMetric{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ConnectionMetric) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConnectionMetric) ProtoMessage() {} - -func (x *ConnectionMetric) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConnectionMetric.ProtoReflect.Descriptor instead. -func (*ConnectionMetric) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{3} -} - -func (x *ConnectionMetric) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" -} - -func (x *ConnectionMetric) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *ConnectionMetric) GetIsActive() bool { - if x != nil { - return x.IsActive - } - return false -} - -func (x *ConnectionMetric) GetLastSeen() *timestamppb.Timestamp { - if x != nil { - return x.LastSeen - } - return nil -} - -// Request and response for GetOperatorMetadata -type GetOperatorMetadataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type OperatorType `protobuf:"varint,1,opt,name=type,proto3,enum=api.v1.OperatorType" json:"type,omitempty"` - TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` -} - -func (x *GetOperatorMetadataRequest) Reset() { - *x = GetOperatorMetadataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOperatorMetadataRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOperatorMetadataRequest) ProtoMessage() {} - -func (x *GetOperatorMetadataRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetOperatorMetadataRequest.ProtoReflect.Descriptor instead. -func (*GetOperatorMetadataRequest) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{4} -} - -func (x *GetOperatorMetadataRequest) GetType() OperatorType { - if x != nil { - return x.Type - } - return OperatorType_OPERATOR_TYPE_UNSPECIFIED -} - -func (x *GetOperatorMetadataRequest) GetTeamId() string { - if x != nil { - return x.TeamId - } - return "" -} - -func (x *GetOperatorMetadataRequest) GetClusterId() string { - if x != nil { - return x.ClusterId - } - return "" -} - -// Specialized messages for each operator type -type ReadOperator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Operator *Operator `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` - ContainerMetrics *ConnectionMetric `protobuf:"bytes,2,opt,name=container_metrics,json=containerMetrics,proto3" json:"container_metrics,omitempty"` - NodeMetrics *ConnectionMetric `protobuf:"bytes,3,opt,name=node_metrics,json=nodeMetrics,proto3" json:"node_metrics,omitempty"` - SnapshotMetrics *ConnectionMetric `protobuf:"bytes,4,opt,name=snapshot_metrics,json=snapshotMetrics,proto3" json:"snapshot_metrics,omitempty"` - StorageMetrics *ConnectionMetric `protobuf:"bytes,5,opt,name=storage_metrics,json=storageMetrics,proto3" json:"storage_metrics,omitempty"` -} - -func (x *ReadOperator) Reset() { - *x = ReadOperator{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReadOperator) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReadOperator) ProtoMessage() {} - -func (x *ReadOperator) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReadOperator.ProtoReflect.Descriptor instead. -func (*ReadOperator) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{5} -} - -func (x *ReadOperator) GetOperator() *Operator { - if x != nil { - return x.Operator - } - return nil -} - -func (x *ReadOperator) GetContainerMetrics() *ConnectionMetric { - if x != nil { - return x.ContainerMetrics - } - return nil -} - -func (x *ReadOperator) GetNodeMetrics() *ConnectionMetric { - if x != nil { - return x.NodeMetrics - } - return nil -} - -func (x *ReadOperator) GetSnapshotMetrics() *ConnectionMetric { - if x != nil { - return x.SnapshotMetrics - } - return nil -} - -func (x *ReadOperator) GetStorageMetrics() *ConnectionMetric { - if x != nil { - return x.StorageMetrics - } - return nil -} - -type WriteOperator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Operator *Operator `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` - RecommendationMetrics *ConnectionMetric `protobuf:"bytes,2,opt,name=recommendation_metrics,json=recommendationMetrics,proto3" json:"recommendation_metrics,omitempty"` -} - -func (x *WriteOperator) Reset() { - *x = WriteOperator{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WriteOperator) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteOperator) ProtoMessage() {} - -func (x *WriteOperator) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_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 WriteOperator.ProtoReflect.Descriptor instead. -func (*WriteOperator) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{6} -} - -func (x *WriteOperator) GetOperator() *Operator { - if x != nil { - return x.Operator - } - return nil -} - -func (x *WriteOperator) GetRecommendationMetrics() *ConnectionMetric { - if x != nil { - return x.RecommendationMetrics - } - return nil -} - -type NodeOperator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Operator *Operator `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` - KarpenterDeployment *ConnectionMetric `protobuf:"bytes,2,opt,name=karpenter_deployment,json=karpenterDeployment,proto3" json:"karpenter_deployment,omitempty"` - NodeProvisioning *ConnectionMetric `protobuf:"bytes,3,opt,name=node_provisioning,json=nodeProvisioning,proto3" json:"node_provisioning,omitempty"` -} - -func (x *NodeOperator) Reset() { - *x = NodeOperator{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NodeOperator) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NodeOperator) ProtoMessage() {} - -func (x *NodeOperator) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NodeOperator.ProtoReflect.Descriptor instead. -func (*NodeOperator) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{7} -} - -func (x *NodeOperator) GetOperator() *Operator { - if x != nil { - return x.Operator - } - return nil -} - -func (x *NodeOperator) GetKarpenterDeployment() *ConnectionMetric { - if x != nil { - return x.KarpenterDeployment - } - return nil -} - -func (x *NodeOperator) GetNodeProvisioning() *ConnectionMetric { - if x != nil { - return x.NodeProvisioning - } - return nil -} - -type SecurityOperator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Operator *Operator `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` - SecurityMetrics *ConnectionMetric `protobuf:"bytes,2,opt,name=security_metrics,json=securityMetrics,proto3" json:"security_metrics,omitempty"` -} - -func (x *SecurityOperator) Reset() { - *x = SecurityOperator{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SecurityOperator) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SecurityOperator) ProtoMessage() {} - -func (x *SecurityOperator) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SecurityOperator.ProtoReflect.Descriptor instead. -func (*SecurityOperator) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{8} -} - -func (x *SecurityOperator) GetOperator() *Operator { - if x != nil { - return x.Operator - } - return nil -} - -func (x *SecurityOperator) GetSecurityMetrics() *ConnectionMetric { - if x != nil { - return x.SecurityMetrics - } - return nil -} - -type NetworkOperator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Operator *Operator `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` - NetworkMetrics *ConnectionMetric `protobuf:"bytes,2,opt,name=network_metrics,json=networkMetrics,proto3" json:"network_metrics,omitempty"` -} - -func (x *NetworkOperator) Reset() { - *x = NetworkOperator{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NetworkOperator) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NetworkOperator) ProtoMessage() {} - -func (x *NetworkOperator) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NetworkOperator.ProtoReflect.Descriptor instead. -func (*NetworkOperator) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{9} -} - -func (x *NetworkOperator) GetOperator() *Operator { - if x != nil { - return x.Operator - } - return nil -} - -func (x *NetworkOperator) GetNetworkMetrics() *ConnectionMetric { - if x != nil { - return x.NetworkMetrics - } - return nil -} - -// Oneof response to clarify returned operator type -type GetOperatorMetadataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Operator: - // - // *GetOperatorMetadataResponse_ReadOperator - // *GetOperatorMetadataResponse_WriteOperator - // *GetOperatorMetadataResponse_NodeOperator - // *GetOperatorMetadataResponse_SecurityOperator - // *GetOperatorMetadataResponse_NetworkOperator - Operator isGetOperatorMetadataResponse_Operator `protobuf_oneof:"operator"` -} - -func (x *GetOperatorMetadataResponse) Reset() { - *x = GetOperatorMetadataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOperatorMetadataResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOperatorMetadataResponse) ProtoMessage() {} - -func (x *GetOperatorMetadataResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetOperatorMetadataResponse.ProtoReflect.Descriptor instead. -func (*GetOperatorMetadataResponse) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{10} -} - -func (m *GetOperatorMetadataResponse) GetOperator() isGetOperatorMetadataResponse_Operator { - if m != nil { - return m.Operator - } - return nil -} - -func (x *GetOperatorMetadataResponse) GetReadOperator() *ReadOperator { - if x, ok := x.GetOperator().(*GetOperatorMetadataResponse_ReadOperator); ok { - return x.ReadOperator - } - return nil -} - -func (x *GetOperatorMetadataResponse) GetWriteOperator() *WriteOperator { - if x, ok := x.GetOperator().(*GetOperatorMetadataResponse_WriteOperator); ok { - return x.WriteOperator - } - return nil -} - -func (x *GetOperatorMetadataResponse) GetNodeOperator() *NodeOperator { - if x, ok := x.GetOperator().(*GetOperatorMetadataResponse_NodeOperator); ok { - return x.NodeOperator - } - return nil -} - -func (x *GetOperatorMetadataResponse) GetSecurityOperator() *SecurityOperator { - if x, ok := x.GetOperator().(*GetOperatorMetadataResponse_SecurityOperator); ok { - return x.SecurityOperator - } - return nil -} - -func (x *GetOperatorMetadataResponse) GetNetworkOperator() *NetworkOperator { - if x, ok := x.GetOperator().(*GetOperatorMetadataResponse_NetworkOperator); ok { - return x.NetworkOperator - } - return nil -} - -type isGetOperatorMetadataResponse_Operator interface { - isGetOperatorMetadataResponse_Operator() -} - -type GetOperatorMetadataResponse_ReadOperator struct { - ReadOperator *ReadOperator `protobuf:"bytes,1,opt,name=read_operator,json=readOperator,proto3,oneof"` -} - -type GetOperatorMetadataResponse_WriteOperator struct { - WriteOperator *WriteOperator `protobuf:"bytes,2,opt,name=write_operator,json=writeOperator,proto3,oneof"` -} - -type GetOperatorMetadataResponse_NodeOperator struct { - NodeOperator *NodeOperator `protobuf:"bytes,3,opt,name=node_operator,json=nodeOperator,proto3,oneof"` -} - -type GetOperatorMetadataResponse_SecurityOperator struct { - SecurityOperator *SecurityOperator `protobuf:"bytes,4,opt,name=security_operator,json=securityOperator,proto3,oneof"` -} - -type GetOperatorMetadataResponse_NetworkOperator struct { - NetworkOperator *NetworkOperator `protobuf:"bytes,5,opt,name=network_operator,json=networkOperator,proto3,oneof"` -} - -func (*GetOperatorMetadataResponse_ReadOperator) isGetOperatorMetadataResponse_Operator() {} - -func (*GetOperatorMetadataResponse_WriteOperator) isGetOperatorMetadataResponse_Operator() {} - -func (*GetOperatorMetadataResponse_NodeOperator) isGetOperatorMetadataResponse_Operator() {} - -func (*GetOperatorMetadataResponse_SecurityOperator) isGetOperatorMetadataResponse_Operator() {} - -func (*GetOperatorMetadataResponse_NetworkOperator) isGetOperatorMetadataResponse_Operator() {} - -type GetOCIRegistriesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` -} - -func (x *GetOCIRegistriesRequest) Reset() { - *x = GetOCIRegistriesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOCIRegistriesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOCIRegistriesRequest) ProtoMessage() {} - -func (x *GetOCIRegistriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetOCIRegistriesRequest.ProtoReflect.Descriptor instead. -func (*GetOCIRegistriesRequest) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{11} -} - -func (x *GetOCIRegistriesRequest) GetTeamId() string { - if x != nil { - return x.TeamId - } - return "" -} - -func (x *GetOCIRegistriesRequest) GetClusterId() string { - if x != nil { - return x.ClusterId - } - return "" -} - -// RegistryMirrorConfig represents a complete registry mirror configuration -type RegistryMirrorConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Registry name (e.g., "dockerhub", "ghcr") - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` // Whether this registry should be enabled - Upstream string `protobuf:"bytes,3,opt,name=upstream,proto3" json:"upstream,omitempty"` // Upstream registry URL (e.g., "https://registry-1.docker.io") - MirrorFor []string `protobuf:"bytes,4,rep,name=mirror_for,json=mirrorFor,proto3" json:"mirror_for,omitempty"` // List of domains to mirror (e.g., ["docker.io", "index.docker.io"]) - Ttl string `protobuf:"bytes,5,opt,name=ttl,proto3" json:"ttl,omitempty"` // Time-to-live for cached images (e.g., "168h") -} - -func (x *RegistryMirrorConfig) Reset() { - *x = RegistryMirrorConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RegistryMirrorConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegistryMirrorConfig) ProtoMessage() {} - -func (x *RegistryMirrorConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RegistryMirrorConfig.ProtoReflect.Descriptor instead. -func (*RegistryMirrorConfig) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{12} -} - -func (x *RegistryMirrorConfig) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *RegistryMirrorConfig) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *RegistryMirrorConfig) GetUpstream() string { - if x != nil { - return x.Upstream - } - return "" -} - -func (x *RegistryMirrorConfig) GetMirrorFor() []string { - if x != nil { - return x.MirrorFor - } - return nil -} - -func (x *RegistryMirrorConfig) GetTtl() string { - if x != nil { - return x.Ttl - } - return "" -} - -type GetOCIRegistriesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RegistryConfigs []*RegistryMirrorConfig `protobuf:"bytes,1,rep,name=registry_configs,json=registryConfigs,proto3" json:"registry_configs,omitempty"` -} - -func (x *GetOCIRegistriesResponse) Reset() { - *x = GetOCIRegistriesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOCIRegistriesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOCIRegistriesResponse) ProtoMessage() {} - -func (x *GetOCIRegistriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetOCIRegistriesResponse.ProtoReflect.Descriptor instead. -func (*GetOCIRegistriesResponse) Descriptor() ([]byte, []int) { - return file_api_v1_operator_proto_rawDescGZIP(), []int{13} -} - -func (x *GetOCIRegistriesResponse) GetRegistryConfigs() []*RegistryMirrorConfig { - if x != nil { - return x.RegistryConfigs - } - return nil -} - -var File_api_v1_operator_proto protoreflect.FileDescriptor - -var file_api_v1_operator_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, - 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xb8, 0x03, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0d, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2b, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4f, 0x75, 0x74, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x46, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, - 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x7e, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xc8, 0x02, 0x0a, 0x0c, 0x52, - 0x65, 0x61, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x08, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, - 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x10, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x12, 0x3b, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x43, 0x0a, - 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x52, 0x0f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x0d, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, - 0x15, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x4b, 0x0a, 0x14, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x13, 0x6b, - 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x85, 0x01, 0x0a, 0x10, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, - 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x10, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x22, 0x82, 0x01, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x41, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xf2, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x3b, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x47, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x10, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, - 0x0a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x51, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x4f, 0x43, 0x49, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x91, - 0x01, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x4d, 0x69, 0x72, 0x72, 0x6f, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, - 0x74, 0x6c, 0x22, 0x63, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, 0x43, 0x49, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, - 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2a, 0xad, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x45, 0x52, - 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x41, - 0x54, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, - 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, - 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x03, - 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, - 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, - 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x05, 0x2a, 0xa3, 0x01, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x45, - 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x45, - 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, - 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, - 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, - 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, - 0x44, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x2a, 0x88, 0x01, - 0x0a, 0x15, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x50, 0x45, 0x52, 0x41, - 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x5f, 0x4d, 0x45, 0x54, 0x48, - 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x24, 0x0a, 0x20, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x53, - 0x54, 0x41, 0x4c, 0x4c, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4d, 0x41, 0x4e, 0x49, - 0x46, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, - 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, - 0x44, 0x5f, 0x48, 0x45, 0x4c, 0x4d, 0x10, 0x02, 0x32, 0x93, 0x02, 0x0a, 0x0f, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, - 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x22, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x43, - 0x49, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x43, 0x49, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x43, 0x49, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x86, - 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, - 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x7a, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, - 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, - 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, - 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_api_v1_operator_proto_rawDescOnce sync.Once - file_api_v1_operator_proto_rawDescData = file_api_v1_operator_proto_rawDesc -) - -func file_api_v1_operator_proto_rawDescGZIP() []byte { - file_api_v1_operator_proto_rawDescOnce.Do(func() { - file_api_v1_operator_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_v1_operator_proto_rawDescData) - }) - return file_api_v1_operator_proto_rawDescData -} - -var file_api_v1_operator_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_api_v1_operator_proto_msgTypes = make([]protoimpl.MessageInfo, 14) -var file_api_v1_operator_proto_goTypes = []interface{}{ - (OperatorType)(0), // 0: api.v1.OperatorType - (OperatorState)(0), // 1: api.v1.OperatorState - (OperatorInstallMethod)(0), // 2: api.v1.OperatorInstallMethod - (*Operator)(nil), // 3: api.v1.Operator - (*GetOperatorsRequest)(nil), // 4: api.v1.GetOperatorsRequest - (*GetOperatorsResponse)(nil), // 5: api.v1.GetOperatorsResponse - (*ConnectionMetric)(nil), // 6: api.v1.ConnectionMetric - (*GetOperatorMetadataRequest)(nil), // 7: api.v1.GetOperatorMetadataRequest - (*ReadOperator)(nil), // 8: api.v1.ReadOperator - (*WriteOperator)(nil), // 9: api.v1.WriteOperator - (*NodeOperator)(nil), // 10: api.v1.NodeOperator - (*SecurityOperator)(nil), // 11: api.v1.SecurityOperator - (*NetworkOperator)(nil), // 12: api.v1.NetworkOperator - (*GetOperatorMetadataResponse)(nil), // 13: api.v1.GetOperatorMetadataResponse - (*GetOCIRegistriesRequest)(nil), // 14: api.v1.GetOCIRegistriesRequest - (*RegistryMirrorConfig)(nil), // 15: api.v1.RegistryMirrorConfig - (*GetOCIRegistriesResponse)(nil), // 16: api.v1.GetOCIRegistriesResponse - (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp -} -var file_api_v1_operator_proto_depIdxs = []int32{ - 0, // 0: api.v1.Operator.type:type_name -> api.v1.OperatorType - 2, // 1: api.v1.Operator.install_method:type_name -> api.v1.OperatorInstallMethod - 1, // 2: api.v1.Operator.state:type_name -> api.v1.OperatorState - 17, // 3: api.v1.Operator.connected_at:type_name -> google.protobuf.Timestamp - 3, // 4: api.v1.GetOperatorsResponse.operators:type_name -> api.v1.Operator - 17, // 5: api.v1.ConnectionMetric.last_seen:type_name -> google.protobuf.Timestamp - 0, // 6: api.v1.GetOperatorMetadataRequest.type:type_name -> api.v1.OperatorType - 3, // 7: api.v1.ReadOperator.operator:type_name -> api.v1.Operator - 6, // 8: api.v1.ReadOperator.container_metrics:type_name -> api.v1.ConnectionMetric - 6, // 9: api.v1.ReadOperator.node_metrics:type_name -> api.v1.ConnectionMetric - 6, // 10: api.v1.ReadOperator.snapshot_metrics:type_name -> api.v1.ConnectionMetric - 6, // 11: api.v1.ReadOperator.storage_metrics:type_name -> api.v1.ConnectionMetric - 3, // 12: api.v1.WriteOperator.operator:type_name -> api.v1.Operator - 6, // 13: api.v1.WriteOperator.recommendation_metrics:type_name -> api.v1.ConnectionMetric - 3, // 14: api.v1.NodeOperator.operator:type_name -> api.v1.Operator - 6, // 15: api.v1.NodeOperator.karpenter_deployment:type_name -> api.v1.ConnectionMetric - 6, // 16: api.v1.NodeOperator.node_provisioning:type_name -> api.v1.ConnectionMetric - 3, // 17: api.v1.SecurityOperator.operator:type_name -> api.v1.Operator - 6, // 18: api.v1.SecurityOperator.security_metrics:type_name -> api.v1.ConnectionMetric - 3, // 19: api.v1.NetworkOperator.operator:type_name -> api.v1.Operator - 6, // 20: api.v1.NetworkOperator.network_metrics:type_name -> api.v1.ConnectionMetric - 8, // 21: api.v1.GetOperatorMetadataResponse.read_operator:type_name -> api.v1.ReadOperator - 9, // 22: api.v1.GetOperatorMetadataResponse.write_operator:type_name -> api.v1.WriteOperator - 10, // 23: api.v1.GetOperatorMetadataResponse.node_operator:type_name -> api.v1.NodeOperator - 11, // 24: api.v1.GetOperatorMetadataResponse.security_operator:type_name -> api.v1.SecurityOperator - 12, // 25: api.v1.GetOperatorMetadataResponse.network_operator:type_name -> api.v1.NetworkOperator - 15, // 26: api.v1.GetOCIRegistriesResponse.registry_configs:type_name -> api.v1.RegistryMirrorConfig - 4, // 27: api.v1.OperatorService.GetOperators:input_type -> api.v1.GetOperatorsRequest - 7, // 28: api.v1.OperatorService.GetOperatorMetadata:input_type -> api.v1.GetOperatorMetadataRequest - 14, // 29: api.v1.OperatorService.GetOCIRegistries:input_type -> api.v1.GetOCIRegistriesRequest - 5, // 30: api.v1.OperatorService.GetOperators:output_type -> api.v1.GetOperatorsResponse - 13, // 31: api.v1.OperatorService.GetOperatorMetadata:output_type -> api.v1.GetOperatorMetadataResponse - 16, // 32: api.v1.OperatorService.GetOCIRegistries:output_type -> api.v1.GetOCIRegistriesResponse - 30, // [30:33] is the sub-list for method output_type - 27, // [27:30] is the sub-list for method input_type - 27, // [27:27] is the sub-list for extension type_name - 27, // [27:27] is the sub-list for extension extendee - 0, // [0:27] is the sub-list for field type_name -} - -func init() { file_api_v1_operator_proto_init() } -func file_api_v1_operator_proto_init() { - if File_api_v1_operator_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_api_v1_operator_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Operator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOperatorsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOperatorsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionMetric); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOperatorMetadataRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadOperator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteOperator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeOperator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecurityOperator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NetworkOperator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOperatorMetadataResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOCIRegistriesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegistryMirrorConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOCIRegistriesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_api_v1_operator_proto_msgTypes[10].OneofWrappers = []interface{}{ - (*GetOperatorMetadataResponse_ReadOperator)(nil), - (*GetOperatorMetadataResponse_WriteOperator)(nil), - (*GetOperatorMetadataResponse_NodeOperator)(nil), - (*GetOperatorMetadataResponse_SecurityOperator)(nil), - (*GetOperatorMetadataResponse_NetworkOperator)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_api_v1_operator_proto_rawDesc, - NumEnums: 3, - NumMessages: 14, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_api_v1_operator_proto_goTypes, - DependencyIndexes: file_api_v1_operator_proto_depIdxs, - EnumInfos: file_api_v1_operator_proto_enumTypes, - MessageInfos: file_api_v1_operator_proto_msgTypes, - }.Build() - File_api_v1_operator_proto = out.File - file_api_v1_operator_proto_rawDesc = nil - file_api_v1_operator_proto_goTypes = nil - file_api_v1_operator_proto_depIdxs = nil -} diff --git a/gen/api/v1/operator_grpc.pb.go b/gen/api/v1/operator_grpc.pb.go deleted file mode 100644 index 9dccf734..00000000 --- a/gen/api/v1/operator_grpc.pb.go +++ /dev/null @@ -1,183 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc (unknown) -// source: api/v1/operator.proto - -package apiv1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - OperatorService_GetOperators_FullMethodName = "/api.v1.OperatorService/GetOperators" - OperatorService_GetOperatorMetadata_FullMethodName = "/api.v1.OperatorService/GetOperatorMetadata" - OperatorService_GetOCIRegistries_FullMethodName = "/api.v1.OperatorService/GetOCIRegistries" -) - -// OperatorServiceClient is the client API for OperatorService 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 OperatorServiceClient interface { - GetOperators(ctx context.Context, in *GetOperatorsRequest, opts ...grpc.CallOption) (*GetOperatorsResponse, error) - GetOperatorMetadata(ctx context.Context, in *GetOperatorMetadataRequest, opts ...grpc.CallOption) (*GetOperatorMetadataResponse, error) - GetOCIRegistries(ctx context.Context, in *GetOCIRegistriesRequest, opts ...grpc.CallOption) (*GetOCIRegistriesResponse, error) -} - -type operatorServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewOperatorServiceClient(cc grpc.ClientConnInterface) OperatorServiceClient { - return &operatorServiceClient{cc} -} - -func (c *operatorServiceClient) GetOperators(ctx context.Context, in *GetOperatorsRequest, opts ...grpc.CallOption) (*GetOperatorsResponse, error) { - out := new(GetOperatorsResponse) - err := c.cc.Invoke(ctx, OperatorService_GetOperators_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *operatorServiceClient) GetOperatorMetadata(ctx context.Context, in *GetOperatorMetadataRequest, opts ...grpc.CallOption) (*GetOperatorMetadataResponse, error) { - out := new(GetOperatorMetadataResponse) - err := c.cc.Invoke(ctx, OperatorService_GetOperatorMetadata_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *operatorServiceClient) GetOCIRegistries(ctx context.Context, in *GetOCIRegistriesRequest, opts ...grpc.CallOption) (*GetOCIRegistriesResponse, error) { - out := new(GetOCIRegistriesResponse) - err := c.cc.Invoke(ctx, OperatorService_GetOCIRegistries_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// OperatorServiceServer is the server API for OperatorService service. -// All implementations must embed UnimplementedOperatorServiceServer -// for forward compatibility -type OperatorServiceServer interface { - GetOperators(context.Context, *GetOperatorsRequest) (*GetOperatorsResponse, error) - GetOperatorMetadata(context.Context, *GetOperatorMetadataRequest) (*GetOperatorMetadataResponse, error) - GetOCIRegistries(context.Context, *GetOCIRegistriesRequest) (*GetOCIRegistriesResponse, error) - mustEmbedUnimplementedOperatorServiceServer() -} - -// UnimplementedOperatorServiceServer must be embedded to have forward compatible implementations. -type UnimplementedOperatorServiceServer struct { -} - -func (UnimplementedOperatorServiceServer) GetOperators(context.Context, *GetOperatorsRequest) (*GetOperatorsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetOperators not implemented") -} -func (UnimplementedOperatorServiceServer) GetOperatorMetadata(context.Context, *GetOperatorMetadataRequest) (*GetOperatorMetadataResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetOperatorMetadata not implemented") -} -func (UnimplementedOperatorServiceServer) GetOCIRegistries(context.Context, *GetOCIRegistriesRequest) (*GetOCIRegistriesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetOCIRegistries not implemented") -} -func (UnimplementedOperatorServiceServer) mustEmbedUnimplementedOperatorServiceServer() {} - -// UnsafeOperatorServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to OperatorServiceServer will -// result in compilation errors. -type UnsafeOperatorServiceServer interface { - mustEmbedUnimplementedOperatorServiceServer() -} - -func RegisterOperatorServiceServer(s grpc.ServiceRegistrar, srv OperatorServiceServer) { - s.RegisterService(&OperatorService_ServiceDesc, srv) -} - -func _OperatorService_GetOperators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOperatorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperatorServiceServer).GetOperators(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: OperatorService_GetOperators_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperatorServiceServer).GetOperators(ctx, req.(*GetOperatorsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OperatorService_GetOperatorMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOperatorMetadataRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperatorServiceServer).GetOperatorMetadata(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: OperatorService_GetOperatorMetadata_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperatorServiceServer).GetOperatorMetadata(ctx, req.(*GetOperatorMetadataRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OperatorService_GetOCIRegistries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOCIRegistriesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperatorServiceServer).GetOCIRegistries(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: OperatorService_GetOCIRegistries_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperatorServiceServer).GetOCIRegistries(ctx, req.(*GetOCIRegistriesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// OperatorService_ServiceDesc is the grpc.ServiceDesc for OperatorService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var OperatorService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "api.v1.OperatorService", - HandlerType: (*OperatorServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetOperators", - Handler: _OperatorService_GetOperators_Handler, - }, - { - MethodName: "GetOperatorMetadata", - Handler: _OperatorService_GetOperatorMetadata_Handler, - }, - { - MethodName: "GetOCIRegistries", - Handler: _OperatorService_GetOCIRegistries_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "api/v1/operator.proto", -} diff --git a/gen/api/v1/operator_health.pb.go b/gen/api/v1/operator_health.pb.go deleted file mode 100644 index fb90cabe..00000000 --- a/gen/api/v1/operator_health.pb.go +++ /dev/null @@ -1,713 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc (unknown) -// source: api/v1/operator_health.proto - -package apiv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type HealthStatus int32 - -const ( - HealthStatus_HEALTH_STATUS_UNSPECIFIED HealthStatus = 0 - HealthStatus_HEALTH_STATUS_HEALTHY HealthStatus = 1 - HealthStatus_HEALTH_STATUS_DEGRADED HealthStatus = 2 - HealthStatus_HEALTH_STATUS_UNHEALTHY HealthStatus = 3 -) - -// Enum value maps for HealthStatus. -var ( - HealthStatus_name = map[int32]string{ - 0: "HEALTH_STATUS_UNSPECIFIED", - 1: "HEALTH_STATUS_HEALTHY", - 2: "HEALTH_STATUS_DEGRADED", - 3: "HEALTH_STATUS_UNHEALTHY", - } - HealthStatus_value = map[string]int32{ - "HEALTH_STATUS_UNSPECIFIED": 0, - "HEALTH_STATUS_HEALTHY": 1, - "HEALTH_STATUS_DEGRADED": 2, - "HEALTH_STATUS_UNHEALTHY": 3, - } -) - -func (x HealthStatus) Enum() *HealthStatus { - p := new(HealthStatus) - *p = x - return p -} - -func (x HealthStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (HealthStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_v1_operator_health_proto_enumTypes[0].Descriptor() -} - -func (HealthStatus) Type() protoreflect.EnumType { - return &file_api_v1_operator_health_proto_enumTypes[0] -} - -func (x HealthStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use HealthStatus.Descriptor instead. -func (HealthStatus) EnumDescriptor() ([]byte, []int) { - return file_api_v1_operator_health_proto_rawDescGZIP(), []int{0} -} - -type ComponentHealth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Status HealthStatus `protobuf:"varint,2,opt,name=status,proto3,enum=api.v1.HealthStatus" json:"status,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *ComponentHealth) Reset() { - *x = ComponentHealth{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_health_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ComponentHealth) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ComponentHealth) ProtoMessage() {} - -func (x *ComponentHealth) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_health_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ComponentHealth.ProtoReflect.Descriptor instead. -func (*ComponentHealth) Descriptor() ([]byte, []int) { - return file_api_v1_operator_health_proto_rawDescGZIP(), []int{0} -} - -func (x *ComponentHealth) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ComponentHealth) GetStatus() HealthStatus { - if x != nil { - return x.Status - } - return HealthStatus_HEALTH_STATUS_UNSPECIFIED -} - -func (x *ComponentHealth) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *ComponentHealth) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -type ReportHealthRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - OperatorType OperatorType `protobuf:"varint,2,opt,name=operator_type,json=operatorType,proto3,enum=api.v1.OperatorType" json:"operator_type,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - OverallStatus HealthStatus `protobuf:"varint,4,opt,name=overall_status,json=overallStatus,proto3,enum=api.v1.HealthStatus" json:"overall_status,omitempty"` - Components []*ComponentHealth `protobuf:"bytes,5,rep,name=components,proto3" json:"components,omitempty"` - UptimeSince *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=uptime_since,json=uptimeSince,proto3" json:"uptime_since,omitempty"` -} - -func (x *ReportHealthRequest) Reset() { - *x = ReportHealthRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_health_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReportHealthRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReportHealthRequest) ProtoMessage() {} - -func (x *ReportHealthRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_health_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReportHealthRequest.ProtoReflect.Descriptor instead. -func (*ReportHealthRequest) Descriptor() ([]byte, []int) { - return file_api_v1_operator_health_proto_rawDescGZIP(), []int{1} -} - -func (x *ReportHealthRequest) GetClusterId() string { - if x != nil { - return x.ClusterId - } - return "" -} - -func (x *ReportHealthRequest) GetOperatorType() OperatorType { - if x != nil { - return x.OperatorType - } - return OperatorType_OPERATOR_TYPE_UNSPECIFIED -} - -func (x *ReportHealthRequest) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *ReportHealthRequest) GetOverallStatus() HealthStatus { - if x != nil { - return x.OverallStatus - } - return HealthStatus_HEALTH_STATUS_UNSPECIFIED -} - -func (x *ReportHealthRequest) GetComponents() []*ComponentHealth { - if x != nil { - return x.Components - } - return nil -} - -func (x *ReportHealthRequest) GetUptimeSince() *timestamppb.Timestamp { - if x != nil { - return x.UptimeSince - } - return nil -} - -type ReportHealthResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ReportHealthResponse) Reset() { - *x = ReportHealthResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_health_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReportHealthResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReportHealthResponse) ProtoMessage() {} - -func (x *ReportHealthResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_health_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReportHealthResponse.ProtoReflect.Descriptor instead. -func (*ReportHealthResponse) Descriptor() ([]byte, []int) { - return file_api_v1_operator_health_proto_rawDescGZIP(), []int{2} -} - -type GetClusterOperatorHealthRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` -} - -func (x *GetClusterOperatorHealthRequest) Reset() { - *x = GetClusterOperatorHealthRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_health_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetClusterOperatorHealthRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClusterOperatorHealthRequest) ProtoMessage() {} - -func (x *GetClusterOperatorHealthRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_health_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClusterOperatorHealthRequest.ProtoReflect.Descriptor instead. -func (*GetClusterOperatorHealthRequest) Descriptor() ([]byte, []int) { - return file_api_v1_operator_health_proto_rawDescGZIP(), []int{3} -} - -func (x *GetClusterOperatorHealthRequest) GetClusterId() string { - if x != nil { - return x.ClusterId - } - return "" -} - -type GetClusterOperatorHealthResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Operators []*OperatorHealthStatus `protobuf:"bytes,1,rep,name=operators,proto3" json:"operators,omitempty"` -} - -func (x *GetClusterOperatorHealthResponse) Reset() { - *x = GetClusterOperatorHealthResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_health_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetClusterOperatorHealthResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClusterOperatorHealthResponse) ProtoMessage() {} - -func (x *GetClusterOperatorHealthResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_health_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClusterOperatorHealthResponse.ProtoReflect.Descriptor instead. -func (*GetClusterOperatorHealthResponse) Descriptor() ([]byte, []int) { - return file_api_v1_operator_health_proto_rawDescGZIP(), []int{4} -} - -func (x *GetClusterOperatorHealthResponse) GetOperators() []*OperatorHealthStatus { - if x != nil { - return x.Operators - } - return nil -} - -type OperatorHealthStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperatorType OperatorType `protobuf:"varint,1,opt,name=operator_type,json=operatorType,proto3,enum=api.v1.OperatorType" json:"operator_type,omitempty"` - OverallStatus HealthStatus `protobuf:"varint,2,opt,name=overall_status,json=overallStatus,proto3,enum=api.v1.HealthStatus" json:"overall_status,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - LastHeartbeat *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_heartbeat,json=lastHeartbeat,proto3" json:"last_heartbeat,omitempty"` - UptimeSince *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=uptime_since,json=uptimeSince,proto3" json:"uptime_since,omitempty"` - Components []*ComponentHealth `protobuf:"bytes,6,rep,name=components,proto3" json:"components,omitempty"` -} - -func (x *OperatorHealthStatus) Reset() { - *x = OperatorHealthStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_operator_health_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OperatorHealthStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OperatorHealthStatus) ProtoMessage() {} - -func (x *OperatorHealthStatus) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_operator_health_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OperatorHealthStatus.ProtoReflect.Descriptor instead. -func (*OperatorHealthStatus) Descriptor() ([]byte, []int) { - return file_api_v1_operator_health_proto_rawDescGZIP(), []int{5} -} - -func (x *OperatorHealthStatus) GetOperatorType() OperatorType { - if x != nil { - return x.OperatorType - } - return OperatorType_OPERATOR_TYPE_UNSPECIFIED -} - -func (x *OperatorHealthStatus) GetOverallStatus() HealthStatus { - if x != nil { - return x.OverallStatus - } - return HealthStatus_HEALTH_STATUS_UNSPECIFIED -} - -func (x *OperatorHealthStatus) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *OperatorHealthStatus) GetLastHeartbeat() *timestamppb.Timestamp { - if x != nil { - return x.LastHeartbeat - } - return nil -} - -func (x *OperatorHealthStatus) GetUptimeSince() *timestamppb.Timestamp { - if x != nil { - return x.UptimeSince - } - return nil -} - -func (x *OperatorHealthStatus) GetComponents() []*ComponentHealth { - if x != nil { - return x.Components - } - return nil -} - -var File_api_v1_operator_health_proto protoreflect.FileDescriptor - -var file_api_v1_operator_health_proto_rawDesc = []byte{ - 0x0a, 0x1c, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xed, - 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x41, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0xbe, - 0x02, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0e, 0x6f, 0x76, - 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0b, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x22, - 0x16, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x20, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x14, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, - 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x6f, 0x76, 0x65, - 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, - 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x70, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x75, 0x70, 0x74, 0x69, 0x6d, - 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2a, - 0x81, 0x01, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1d, 0x0a, 0x19, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x19, 0x0a, 0x15, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x45, - 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x47, 0x52, - 0x41, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, - 0x59, 0x10, 0x03, 0x32, 0xd1, 0x01, 0x0a, 0x15, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, - 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x1b, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x8c, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x13, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, - 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x7a, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2f, 0x67, - 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, - 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, - 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, - 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_api_v1_operator_health_proto_rawDescOnce sync.Once - file_api_v1_operator_health_proto_rawDescData = file_api_v1_operator_health_proto_rawDesc -) - -func file_api_v1_operator_health_proto_rawDescGZIP() []byte { - file_api_v1_operator_health_proto_rawDescOnce.Do(func() { - file_api_v1_operator_health_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_v1_operator_health_proto_rawDescData) - }) - return file_api_v1_operator_health_proto_rawDescData -} - -var file_api_v1_operator_health_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_api_v1_operator_health_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_api_v1_operator_health_proto_goTypes = []interface{}{ - (HealthStatus)(0), // 0: api.v1.HealthStatus - (*ComponentHealth)(nil), // 1: api.v1.ComponentHealth - (*ReportHealthRequest)(nil), // 2: api.v1.ReportHealthRequest - (*ReportHealthResponse)(nil), // 3: api.v1.ReportHealthResponse - (*GetClusterOperatorHealthRequest)(nil), // 4: api.v1.GetClusterOperatorHealthRequest - (*GetClusterOperatorHealthResponse)(nil), // 5: api.v1.GetClusterOperatorHealthResponse - (*OperatorHealthStatus)(nil), // 6: api.v1.OperatorHealthStatus - nil, // 7: api.v1.ComponentHealth.MetadataEntry - (OperatorType)(0), // 8: api.v1.OperatorType - (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp -} -var file_api_v1_operator_health_proto_depIdxs = []int32{ - 0, // 0: api.v1.ComponentHealth.status:type_name -> api.v1.HealthStatus - 7, // 1: api.v1.ComponentHealth.metadata:type_name -> api.v1.ComponentHealth.MetadataEntry - 8, // 2: api.v1.ReportHealthRequest.operator_type:type_name -> api.v1.OperatorType - 0, // 3: api.v1.ReportHealthRequest.overall_status:type_name -> api.v1.HealthStatus - 1, // 4: api.v1.ReportHealthRequest.components:type_name -> api.v1.ComponentHealth - 9, // 5: api.v1.ReportHealthRequest.uptime_since:type_name -> google.protobuf.Timestamp - 6, // 6: api.v1.GetClusterOperatorHealthResponse.operators:type_name -> api.v1.OperatorHealthStatus - 8, // 7: api.v1.OperatorHealthStatus.operator_type:type_name -> api.v1.OperatorType - 0, // 8: api.v1.OperatorHealthStatus.overall_status:type_name -> api.v1.HealthStatus - 9, // 9: api.v1.OperatorHealthStatus.last_heartbeat:type_name -> google.protobuf.Timestamp - 9, // 10: api.v1.OperatorHealthStatus.uptime_since:type_name -> google.protobuf.Timestamp - 1, // 11: api.v1.OperatorHealthStatus.components:type_name -> api.v1.ComponentHealth - 2, // 12: api.v1.OperatorHealthService.ReportHealth:input_type -> api.v1.ReportHealthRequest - 4, // 13: api.v1.OperatorHealthService.GetClusterOperatorHealth:input_type -> api.v1.GetClusterOperatorHealthRequest - 3, // 14: api.v1.OperatorHealthService.ReportHealth:output_type -> api.v1.ReportHealthResponse - 5, // 15: api.v1.OperatorHealthService.GetClusterOperatorHealth:output_type -> api.v1.GetClusterOperatorHealthResponse - 14, // [14:16] is the sub-list for method output_type - 12, // [12:14] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name -} - -func init() { file_api_v1_operator_health_proto_init() } -func file_api_v1_operator_health_proto_init() { - if File_api_v1_operator_health_proto != nil { - return - } - file_api_v1_operator_proto_init() - if !protoimpl.UnsafeEnabled { - file_api_v1_operator_health_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ComponentHealth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_health_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportHealthRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_health_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportHealthResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_health_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClusterOperatorHealthRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_health_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClusterOperatorHealthResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_operator_health_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OperatorHealthStatus); 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{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_api_v1_operator_health_proto_rawDesc, - NumEnums: 1, - NumMessages: 7, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_api_v1_operator_health_proto_goTypes, - DependencyIndexes: file_api_v1_operator_health_proto_depIdxs, - EnumInfos: file_api_v1_operator_health_proto_enumTypes, - MessageInfos: file_api_v1_operator_health_proto_msgTypes, - }.Build() - File_api_v1_operator_health_proto = out.File - file_api_v1_operator_health_proto_rawDesc = nil - file_api_v1_operator_health_proto_goTypes = nil - file_api_v1_operator_health_proto_depIdxs = nil -} diff --git a/gen/api/v1/operator_health_grpc.pb.go b/gen/api/v1/operator_health_grpc.pb.go deleted file mode 100644 index 81ea9925..00000000 --- a/gen/api/v1/operator_health_grpc.pb.go +++ /dev/null @@ -1,146 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc (unknown) -// source: api/v1/operator_health.proto - -package apiv1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - OperatorHealthService_ReportHealth_FullMethodName = "/api.v1.OperatorHealthService/ReportHealth" - OperatorHealthService_GetClusterOperatorHealth_FullMethodName = "/api.v1.OperatorHealthService/GetClusterOperatorHealth" -) - -// OperatorHealthServiceClient is the client API for OperatorHealthService 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 OperatorHealthServiceClient interface { - ReportHealth(ctx context.Context, in *ReportHealthRequest, opts ...grpc.CallOption) (*ReportHealthResponse, error) - GetClusterOperatorHealth(ctx context.Context, in *GetClusterOperatorHealthRequest, opts ...grpc.CallOption) (*GetClusterOperatorHealthResponse, error) -} - -type operatorHealthServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewOperatorHealthServiceClient(cc grpc.ClientConnInterface) OperatorHealthServiceClient { - return &operatorHealthServiceClient{cc} -} - -func (c *operatorHealthServiceClient) ReportHealth(ctx context.Context, in *ReportHealthRequest, opts ...grpc.CallOption) (*ReportHealthResponse, error) { - out := new(ReportHealthResponse) - err := c.cc.Invoke(ctx, OperatorHealthService_ReportHealth_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *operatorHealthServiceClient) GetClusterOperatorHealth(ctx context.Context, in *GetClusterOperatorHealthRequest, opts ...grpc.CallOption) (*GetClusterOperatorHealthResponse, error) { - out := new(GetClusterOperatorHealthResponse) - err := c.cc.Invoke(ctx, OperatorHealthService_GetClusterOperatorHealth_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// OperatorHealthServiceServer is the server API for OperatorHealthService service. -// All implementations must embed UnimplementedOperatorHealthServiceServer -// for forward compatibility -type OperatorHealthServiceServer interface { - ReportHealth(context.Context, *ReportHealthRequest) (*ReportHealthResponse, error) - GetClusterOperatorHealth(context.Context, *GetClusterOperatorHealthRequest) (*GetClusterOperatorHealthResponse, error) - mustEmbedUnimplementedOperatorHealthServiceServer() -} - -// UnimplementedOperatorHealthServiceServer must be embedded to have forward compatible implementations. -type UnimplementedOperatorHealthServiceServer struct { -} - -func (UnimplementedOperatorHealthServiceServer) ReportHealth(context.Context, *ReportHealthRequest) (*ReportHealthResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ReportHealth not implemented") -} -func (UnimplementedOperatorHealthServiceServer) GetClusterOperatorHealth(context.Context, *GetClusterOperatorHealthRequest) (*GetClusterOperatorHealthResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetClusterOperatorHealth not implemented") -} -func (UnimplementedOperatorHealthServiceServer) mustEmbedUnimplementedOperatorHealthServiceServer() {} - -// UnsafeOperatorHealthServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to OperatorHealthServiceServer will -// result in compilation errors. -type UnsafeOperatorHealthServiceServer interface { - mustEmbedUnimplementedOperatorHealthServiceServer() -} - -func RegisterOperatorHealthServiceServer(s grpc.ServiceRegistrar, srv OperatorHealthServiceServer) { - s.RegisterService(&OperatorHealthService_ServiceDesc, srv) -} - -func _OperatorHealthService_ReportHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReportHealthRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperatorHealthServiceServer).ReportHealth(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: OperatorHealthService_ReportHealth_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperatorHealthServiceServer).ReportHealth(ctx, req.(*ReportHealthRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OperatorHealthService_GetClusterOperatorHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClusterOperatorHealthRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperatorHealthServiceServer).GetClusterOperatorHealth(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: OperatorHealthService_GetClusterOperatorHealth_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperatorHealthServiceServer).GetClusterOperatorHealth(ctx, req.(*GetClusterOperatorHealthRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// OperatorHealthService_ServiceDesc is the grpc.ServiceDesc for OperatorHealthService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var OperatorHealthService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "api.v1.OperatorHealthService", - HandlerType: (*OperatorHealthServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ReportHealth", - Handler: _OperatorHealthService_ReportHealth_Handler, - }, - { - MethodName: "GetClusterOperatorHealth", - Handler: _OperatorHealthService_GetClusterOperatorHealth_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "api/v1/operator_health.proto", -} diff --git a/proto/dakr_proto_descriptor.bin b/proto/dakr_proto_descriptor.bin index 52b52e2e5d9547ce7743dab746fba30afc879326..abb42a233892c63c3cf97ba74d1b846f066fced7 100644 GIT binary patch delta 6592 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 YjYcD1UgT_xL{;8g931lSGsl_#1Gj{$h5!Hn