diff --git a/gen/go/qdrant/cloud/booking/v1/booking.pb.go b/gen/go/qdrant/cloud/booking/v1/booking.pb.go index 33a897a6..c479c5b1 100644 --- a/gen/go/qdrant/cloud/booking/v1/booking.pb.go +++ b/gen/go/qdrant/cloud/booking/v1/booking.pb.go @@ -912,7 +912,10 @@ type ResourceConfiguration struct { Disk string `protobuf:"bytes,3,opt,name=disk,proto3" json:"disk,omitempty"` // The amount of GPU (e.g., "1000m" (1 vGPU)) // This is an optional field, if it is not set no GPU is provided. - Gpu *string `protobuf:"bytes,4,opt,name=gpu,proto3,oneof" json:"gpu,omitempty"` + Gpu *string `protobuf:"bytes,4,opt,name=gpu,proto3,oneof" json:"gpu,omitempty"` + // The amount of GPU RAM (e.g., "1GiB") + // This is an optional field, if it is not set no GPU is provided. + GpuRam *string `protobuf:"bytes,5,opt,name=gpu_ram,json=gpuRam,proto3,oneof" json:"gpu_ram,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -975,6 +978,13 @@ func (x *ResourceConfiguration) GetGpu() string { return "" } +func (x *ResourceConfiguration) GetGpuRam() string { + if x != nil && x.GpuRam != nil { + return *x.GpuRam + } + return "" +} + // ResourceConfigurationFilter defines the resource configuration filter for listing packages. type ResourceConfigurationFilter struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1878,13 +1888,16 @@ const file_qdrant_cloud_booking_v1_booking_proto_rawDesc = "" + "\x13disk_price_per_hour\x18\x01 \x01(\rR\x10diskPricePerHour\"\xaa\x01\n" + "-AvailableStoragePerformanceTierConfigurations\x12S\n" + "\x11storage_tier_type\x18\x01 \x01(\x0e2'.qdrant.cloud.common.v1.StorageTierTypeR\x0fstorageTierType\x12$\n" + - "\x0eprice_per_hour\x18\x02 \x01(\rR\fpricePerHour\"\x92\x01\n" + + "\x0eprice_per_hour\x18\x02 \x01(\rR\fpricePerHour\"\xc5\x01\n" + "\x15ResourceConfiguration\x12\x19\n" + "\x03ram\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x03ram\x12\x19\n" + "\x03cpu\x18\x02 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x03cpu\x12\x1b\n" + "\x04disk\x18\x03 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x04disk\x12\x1e\n" + - "\x03gpu\x18\x04 \x01(\tB\a\xbaH\x04r\x02\x10\x01H\x00R\x03gpu\x88\x01\x01B\x06\n" + - "\x04_gpu\"\xc0\x01\n" + + "\x03gpu\x18\x04 \x01(\tB\a\xbaH\x04r\x02\x10\x01H\x00R\x03gpu\x88\x01\x01\x12%\n" + + "\agpu_ram\x18\x05 \x01(\tB\a\xbaH\x04r\x02\x10\x01H\x01R\x06gpuRam\x88\x01\x01B\x06\n" + + "\x04_gpuB\n" + + "\n" + + "\b_gpu_ram\"\xc0\x01\n" + "\x1bResourceConfigurationFilter\x12\x1e\n" + "\x03ram\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01H\x00R\x03ram\x88\x01\x01\x12\x1e\n" + "\x03cpu\x18\x02 \x01(\tB\a\xbaH\x04r\x02\x10\x01H\x01R\x03cpu\x88\x01\x01\x12 \n" + diff --git a/gen/go/qdrant/cloud/cluster/v1/cluster.pb.go b/gen/go/qdrant/cloud/cluster/v1/cluster.pb.go index fa8f0e22..50ad9434 100644 --- a/gen/go/qdrant/cloud/cluster/v1/cluster.pb.go +++ b/gen/go/qdrant/cloud/cluster/v1/cluster.pb.go @@ -3461,7 +3461,9 @@ type ClusterNodeResourcesSummary struct { // CPU resources Cpu *ClusterNodeResources `protobuf:"bytes,3,opt,name=cpu,proto3" json:"cpu,omitempty"` // GPU resources, empty if cluster has no GPU - Gpu *ClusterNodeResources `protobuf:"bytes,4,opt,name=gpu,proto3,oneof" json:"gpu,omitempty"` + Gpu *ClusterNodeResources `protobuf:"bytes,4,opt,name=gpu,proto3,oneof" json:"gpu,omitempty"` + // GPU RAM, empty if cluster has not GPU. + GpuRam *ClusterNodeResources `protobuf:"bytes,5,opt,name=gpu_ram,json=gpuRam,proto3,oneof" json:"gpu_ram,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -3524,6 +3526,13 @@ func (x *ClusterNodeResourcesSummary) GetGpu() *ClusterNodeResources { return nil } +func (x *ClusterNodeResourcesSummary) GetGpuRam() *ClusterNodeResources { + if x != nil { + return x.GpuRam + } + return nil +} + // ClusterNodeResources represents the allocation of various resources for a cluster per node. type ClusterNodeResources struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4156,13 +4165,16 @@ const file_qdrant_cloud_cluster_v1_cluster_proto_rawDesc = "" + "\x0fClusterEndpoint\x12\x1a\n" + "\x03url\x18\x01 \x01(\tB\b\xbaH\x05r\x03\x88\x01\x01R\x03url\x12$\n" + "\trest_port\x18\x02 \x01(\x05B\a\xbaH\x04\x1a\x02 \x00R\brestPort\x12$\n" + - "\tgrpc_port\x18\x03 \x01(\x05B\a\xbaH\x04\x1a\x02 \x00R\bgrpcPort\"\xc8\x02\n" + + "\tgrpc_port\x18\x03 \x01(\x05B\a\xbaH\x04\x1a\x02 \x00R\bgrpcPort\"\xa1\x03\n" + "\x1bClusterNodeResourcesSummary\x12I\n" + "\x04disk\x18\x01 \x01(\v2-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x04disk\x12G\n" + "\x03ram\x18\x02 \x01(\v2-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x03ram\x12G\n" + "\x03cpu\x18\x03 \x01(\v2-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x03cpu\x12D\n" + - "\x03gpu\x18\x04 \x01(\v2-.qdrant.cloud.cluster.v1.ClusterNodeResourcesH\x00R\x03gpu\x88\x01\x01B\x06\n" + - "\x04_gpu\"\xfa\x01\n" + + "\x03gpu\x18\x04 \x01(\v2-.qdrant.cloud.cluster.v1.ClusterNodeResourcesH\x00R\x03gpu\x88\x01\x01\x12K\n" + + "\agpu_ram\x18\x05 \x01(\v2-.qdrant.cloud.cluster.v1.ClusterNodeResourcesH\x01R\x06gpuRam\x88\x01\x01B\x06\n" + + "\x04_gpuB\n" + + "\n" + + "\b_gpu_ram\"\xfa\x01\n" + "\x14ClusterNodeResources\x12\"\n" + "\x04base\x18\x01 \x01(\x01B\x0e\xbaH\v\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x04base\x124\n" + "\rcomplimentary\x18\x02 \x01(\x01B\x0e\xbaH\v\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\rcomplimentary\x12.\n" + @@ -4448,39 +4460,40 @@ var file_qdrant_cloud_cluster_v1_cluster_proto_depIdxs = []int32{ 53, // 54: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.ram:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources 53, // 55: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.cpu:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources 53, // 56: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.gpu:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources - 10, // 57: qdrant.cloud.cluster.v1.ClusterScalabilityInfo.status:type_name -> qdrant.cloud.cluster.v1.ClusterScalabilityStatus - 35, // 58: qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster - 11, // 59: qdrant.cloud.cluster.v1.ClusterService.ListClusters:input_type -> qdrant.cloud.cluster.v1.ListClustersRequest - 13, // 60: qdrant.cloud.cluster.v1.ClusterService.GetCluster:input_type -> qdrant.cloud.cluster.v1.GetClusterRequest - 15, // 61: qdrant.cloud.cluster.v1.ClusterService.CreateCluster:input_type -> qdrant.cloud.cluster.v1.CreateClusterRequest - 56, // 62: qdrant.cloud.cluster.v1.ClusterService.CreateClusterFromBackup:input_type -> qdrant.cloud.cluster.v1.CreateClusterFromBackupRequest - 17, // 63: qdrant.cloud.cluster.v1.ClusterService.UpdateCluster:input_type -> qdrant.cloud.cluster.v1.UpdateClusterRequest - 19, // 64: qdrant.cloud.cluster.v1.ClusterService.DeleteCluster:input_type -> qdrant.cloud.cluster.v1.DeleteClusterRequest - 21, // 65: qdrant.cloud.cluster.v1.ClusterService.RestartCluster:input_type -> qdrant.cloud.cluster.v1.RestartClusterRequest - 23, // 66: qdrant.cloud.cluster.v1.ClusterService.SuspendCluster:input_type -> qdrant.cloud.cluster.v1.SuspendClusterRequest - 25, // 67: qdrant.cloud.cluster.v1.ClusterService.UnsuspendCluster:input_type -> qdrant.cloud.cluster.v1.UnsuspendClusterRequest - 27, // 68: qdrant.cloud.cluster.v1.ClusterService.EnableClusterJwtRbac:input_type -> qdrant.cloud.cluster.v1.EnableClusterJwtRbacRequest - 29, // 69: qdrant.cloud.cluster.v1.ClusterService.SuggestClusterName:input_type -> qdrant.cloud.cluster.v1.SuggestClusterNameRequest - 31, // 70: qdrant.cloud.cluster.v1.ClusterService.ListQdrantReleases:input_type -> qdrant.cloud.cluster.v1.ListQdrantReleasesRequest - 33, // 71: qdrant.cloud.cluster.v1.ClusterService.GetQdrantRelease:input_type -> qdrant.cloud.cluster.v1.GetQdrantReleaseRequest - 12, // 72: qdrant.cloud.cluster.v1.ClusterService.ListClusters:output_type -> qdrant.cloud.cluster.v1.ListClustersResponse - 14, // 73: qdrant.cloud.cluster.v1.ClusterService.GetCluster:output_type -> qdrant.cloud.cluster.v1.GetClusterResponse - 16, // 74: qdrant.cloud.cluster.v1.ClusterService.CreateCluster:output_type -> qdrant.cloud.cluster.v1.CreateClusterResponse - 57, // 75: qdrant.cloud.cluster.v1.ClusterService.CreateClusterFromBackup:output_type -> qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse - 18, // 76: qdrant.cloud.cluster.v1.ClusterService.UpdateCluster:output_type -> qdrant.cloud.cluster.v1.UpdateClusterResponse - 20, // 77: qdrant.cloud.cluster.v1.ClusterService.DeleteCluster:output_type -> qdrant.cloud.cluster.v1.DeleteClusterResponse - 22, // 78: qdrant.cloud.cluster.v1.ClusterService.RestartCluster:output_type -> qdrant.cloud.cluster.v1.RestartClusterResponse - 24, // 79: qdrant.cloud.cluster.v1.ClusterService.SuspendCluster:output_type -> qdrant.cloud.cluster.v1.SuspendClusterResponse - 26, // 80: qdrant.cloud.cluster.v1.ClusterService.UnsuspendCluster:output_type -> qdrant.cloud.cluster.v1.UnsuspendClusterResponse - 28, // 81: qdrant.cloud.cluster.v1.ClusterService.EnableClusterJwtRbac:output_type -> qdrant.cloud.cluster.v1.EnableClusterJwtRbacResponse - 30, // 82: qdrant.cloud.cluster.v1.ClusterService.SuggestClusterName:output_type -> qdrant.cloud.cluster.v1.SuggestClusterNameResponse - 32, // 83: qdrant.cloud.cluster.v1.ClusterService.ListQdrantReleases:output_type -> qdrant.cloud.cluster.v1.ListQdrantReleasesResponse - 34, // 84: qdrant.cloud.cluster.v1.ClusterService.GetQdrantRelease:output_type -> qdrant.cloud.cluster.v1.GetQdrantReleaseResponse - 72, // [72:85] is the sub-list for method output_type - 59, // [59:72] is the sub-list for method input_type - 59, // [59:59] is the sub-list for extension type_name - 59, // [59:59] is the sub-list for extension extendee - 0, // [0:59] is the sub-list for field type_name + 53, // 57: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.gpu_ram:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources + 10, // 58: qdrant.cloud.cluster.v1.ClusterScalabilityInfo.status:type_name -> qdrant.cloud.cluster.v1.ClusterScalabilityStatus + 35, // 59: qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster + 11, // 60: qdrant.cloud.cluster.v1.ClusterService.ListClusters:input_type -> qdrant.cloud.cluster.v1.ListClustersRequest + 13, // 61: qdrant.cloud.cluster.v1.ClusterService.GetCluster:input_type -> qdrant.cloud.cluster.v1.GetClusterRequest + 15, // 62: qdrant.cloud.cluster.v1.ClusterService.CreateCluster:input_type -> qdrant.cloud.cluster.v1.CreateClusterRequest + 56, // 63: qdrant.cloud.cluster.v1.ClusterService.CreateClusterFromBackup:input_type -> qdrant.cloud.cluster.v1.CreateClusterFromBackupRequest + 17, // 64: qdrant.cloud.cluster.v1.ClusterService.UpdateCluster:input_type -> qdrant.cloud.cluster.v1.UpdateClusterRequest + 19, // 65: qdrant.cloud.cluster.v1.ClusterService.DeleteCluster:input_type -> qdrant.cloud.cluster.v1.DeleteClusterRequest + 21, // 66: qdrant.cloud.cluster.v1.ClusterService.RestartCluster:input_type -> qdrant.cloud.cluster.v1.RestartClusterRequest + 23, // 67: qdrant.cloud.cluster.v1.ClusterService.SuspendCluster:input_type -> qdrant.cloud.cluster.v1.SuspendClusterRequest + 25, // 68: qdrant.cloud.cluster.v1.ClusterService.UnsuspendCluster:input_type -> qdrant.cloud.cluster.v1.UnsuspendClusterRequest + 27, // 69: qdrant.cloud.cluster.v1.ClusterService.EnableClusterJwtRbac:input_type -> qdrant.cloud.cluster.v1.EnableClusterJwtRbacRequest + 29, // 70: qdrant.cloud.cluster.v1.ClusterService.SuggestClusterName:input_type -> qdrant.cloud.cluster.v1.SuggestClusterNameRequest + 31, // 71: qdrant.cloud.cluster.v1.ClusterService.ListQdrantReleases:input_type -> qdrant.cloud.cluster.v1.ListQdrantReleasesRequest + 33, // 72: qdrant.cloud.cluster.v1.ClusterService.GetQdrantRelease:input_type -> qdrant.cloud.cluster.v1.GetQdrantReleaseRequest + 12, // 73: qdrant.cloud.cluster.v1.ClusterService.ListClusters:output_type -> qdrant.cloud.cluster.v1.ListClustersResponse + 14, // 74: qdrant.cloud.cluster.v1.ClusterService.GetCluster:output_type -> qdrant.cloud.cluster.v1.GetClusterResponse + 16, // 75: qdrant.cloud.cluster.v1.ClusterService.CreateCluster:output_type -> qdrant.cloud.cluster.v1.CreateClusterResponse + 57, // 76: qdrant.cloud.cluster.v1.ClusterService.CreateClusterFromBackup:output_type -> qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse + 18, // 77: qdrant.cloud.cluster.v1.ClusterService.UpdateCluster:output_type -> qdrant.cloud.cluster.v1.UpdateClusterResponse + 20, // 78: qdrant.cloud.cluster.v1.ClusterService.DeleteCluster:output_type -> qdrant.cloud.cluster.v1.DeleteClusterResponse + 22, // 79: qdrant.cloud.cluster.v1.ClusterService.RestartCluster:output_type -> qdrant.cloud.cluster.v1.RestartClusterResponse + 24, // 80: qdrant.cloud.cluster.v1.ClusterService.SuspendCluster:output_type -> qdrant.cloud.cluster.v1.SuspendClusterResponse + 26, // 81: qdrant.cloud.cluster.v1.ClusterService.UnsuspendCluster:output_type -> qdrant.cloud.cluster.v1.UnsuspendClusterResponse + 28, // 82: qdrant.cloud.cluster.v1.ClusterService.EnableClusterJwtRbac:output_type -> qdrant.cloud.cluster.v1.EnableClusterJwtRbacResponse + 30, // 83: qdrant.cloud.cluster.v1.ClusterService.SuggestClusterName:output_type -> qdrant.cloud.cluster.v1.SuggestClusterNameResponse + 32, // 84: qdrant.cloud.cluster.v1.ClusterService.ListQdrantReleases:output_type -> qdrant.cloud.cluster.v1.ListQdrantReleasesResponse + 34, // 85: qdrant.cloud.cluster.v1.ClusterService.GetQdrantRelease:output_type -> qdrant.cloud.cluster.v1.GetQdrantReleaseResponse + 73, // [73:86] is the sub-list for method output_type + 60, // [60:73] is the sub-list for method input_type + 60, // [60:60] is the sub-list for extension type_name + 60, // [60:60] is the sub-list for extension extendee + 0, // [0:60] is the sub-list for field type_name } func init() { file_qdrant_cloud_cluster_v1_cluster_proto_init() } diff --git a/gen/go/qdrant/cloud/monitoring/v1/monitoring.pb.go b/gen/go/qdrant/cloud/monitoring/v1/monitoring.pb.go index 7cf8ca5f..026afdfa 100644 --- a/gen/go/qdrant/cloud/monitoring/v1/monitoring.pb.go +++ b/gen/go/qdrant/cloud/monitoring/v1/monitoring.pb.go @@ -356,7 +356,11 @@ type GetClusterUsageMetricsResponse struct { // Timeseries of request latency across the cluster. Latency []*Metric `protobuf:"bytes,8,rep,name=latency,proto3" json:"latency,omitempty"` // Per-node metrics. - Nodes []*ClusterNodeUsageMetrics `protobuf:"bytes,9,rep,name=nodes,proto3" json:"nodes,omitempty"` + Nodes []*ClusterNodeUsageMetrics `protobuf:"bytes,9,rep,name=nodes,proto3" json:"nodes,omitempty"` + // Timeseries of overall GPU usage across the cluster. + Gpu []*Metric `protobuf:"bytes,10,rep,name=gpu,proto3" json:"gpu,omitempty"` + // Timeseries of overall GPU RAM usage across the cluster. + GpuRam []*Metric `protobuf:"bytes,11,rep,name=gpu_ram,json=gpuRam,proto3" json:"gpu_ram,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -454,6 +458,20 @@ func (x *GetClusterUsageMetricsResponse) GetNodes() []*ClusterNodeUsageMetrics { return nil } +func (x *GetClusterUsageMetricsResponse) GetGpu() []*Metric { + if x != nil { + return x.Gpu + } + return nil +} + +func (x *GetClusterUsageMetricsResponse) GetGpuRam() []*Metric { + if x != nil { + return x.GpuRam + } + return nil +} + // GetClusterLogsRequest is the request for the GetClusterLogs function type GetClusterLogsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -915,7 +933,11 @@ type ClusterNodeMetrics struct { // Overview of RSS memory usage by the Qdrant database. RamQdrantRss *ClusterMetricOverview `protobuf:"bytes,6,opt,name=ram_qdrant_rss,json=ramQdrantRss,proto3" json:"ram_qdrant_rss,omitempty"` // Overview of disk usage. - Disk *ClusterMetricOverview `protobuf:"bytes,7,opt,name=disk,proto3" json:"disk,omitempty"` + Disk *ClusterMetricOverview `protobuf:"bytes,7,opt,name=disk,proto3" json:"disk,omitempty"` + // optional Overview of GPU usage. + Gpu *ClusterMetricOverview `protobuf:"bytes,8,opt,name=gpu,proto3,oneof" json:"gpu,omitempty"` + // Overview of GPU RAM usage. + GpuRam *ClusterMetricOverview `protobuf:"bytes,9,opt,name=gpu_ram,json=gpuRam,proto3,oneof" json:"gpu_ram,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -999,6 +1021,20 @@ func (x *ClusterNodeMetrics) GetDisk() *ClusterMetricOverview { return nil } +func (x *ClusterNodeMetrics) GetGpu() *ClusterMetricOverview { + if x != nil { + return x.Gpu + } + return nil +} + +func (x *ClusterNodeMetrics) GetGpuRam() *ClusterMetricOverview { + if x != nil { + return x.GpuRam + } + return nil +} + // ClusterMetricOverview contains both the average values of a metric over // predefined intervals, and the total available value of that resource. type ClusterMetricOverview struct { @@ -1181,7 +1217,11 @@ type ClusterNodeUsageMetrics struct { // Timeseries of RSS memory usage by the Qdrant database for the node. RamQdrantRss []*Metric `protobuf:"bytes,6,rep,name=ram_qdrant_rss,json=ramQdrantRss,proto3" json:"ram_qdrant_rss,omitempty"` // Timeseries of disk usage for the node. - Disk []*Metric `protobuf:"bytes,7,rep,name=disk,proto3" json:"disk,omitempty"` + Disk []*Metric `protobuf:"bytes,7,rep,name=disk,proto3" json:"disk,omitempty"` + // Timeseries of gpu usage for the node. + Gpu []*Metric `protobuf:"bytes,8,rep,name=gpu,proto3" json:"gpu,omitempty"` + // Timeseries of GPU RAM usage for the node. + GpuRam []*Metric `protobuf:"bytes,9,rep,name=gpu_ram,json=gpuRam,proto3" json:"gpu_ram,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1265,6 +1305,20 @@ func (x *ClusterNodeUsageMetrics) GetDisk() []*Metric { return nil } +func (x *ClusterNodeUsageMetrics) GetGpu() []*Metric { + if x != nil { + return x.Gpu + } + return nil +} + +func (x *ClusterNodeUsageMetrics) GetGpuRam() []*Metric { + if x != nil { + return x.GpuRam + } + return nil +} + // A single metric data point. type Metric struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1401,7 +1455,7 @@ const file_qdrant_cloud_monitoring_v1_monitoring_proto_rawDesc = "" + "(get_cluster_usage_metrics.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\b\n" + "\x06_sinceB\b\n" + "\x06_untilB\r\n" + - "\v_aggregator\"\xcb\x04\n" + + "\v_aggregator\"\xbe\x05\n" + "\x1eGetClusterUsageMetricsResponse\x124\n" + "\x03cpu\x18\x01 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x03cpu\x124\n" + "\x03ram\x18\x02 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x03ram\x12?\n" + @@ -1411,7 +1465,10 @@ const file_qdrant_cloud_monitoring_v1_monitoring_proto_rawDesc = "" + "\x04disk\x18\x06 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x04disk\x124\n" + "\x03rps\x18\a \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x03rps\x12<\n" + "\alatency\x18\b \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\alatency\x12I\n" + - "\x05nodes\x18\t \x03(\v23.qdrant.cloud.monitoring.v1.ClusterNodeUsageMetricsR\x05nodes\"\xf0\x02\n" + + "\x05nodes\x18\t \x03(\v23.qdrant.cloud.monitoring.v1.ClusterNodeUsageMetricsR\x05nodes\x124\n" + + "\x03gpu\x18\n" + + " \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x03gpu\x12;\n" + + "\agpu_ram\x18\v \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x06gpuRam\"\xf0\x02\n" + "\x15GetClusterLogsRequest\x12'\n" + "\n" + "account_id\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12'\n" + @@ -1455,7 +1512,7 @@ const file_qdrant_cloud_monitoring_v1_monitoring_proto_rawDesc = "" + "\x06models\x18\x01 \x03(\v28.qdrant.cloud.monitoring.v1.ClusterInferenceModelMetricsR\x06models\"\x91\x01\n" + "\x1cClusterInferenceModelMetrics\x125\n" + "\x12inference_model_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x10inferenceModelId\x12:\n" + - "\x06values\x18\x02 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x06values\"\xac\x04\n" + + "\x06values\x18\x02 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x06values\"\xeb\x05\n" + "\x12ClusterNodeMetrics\x12 \n" + "\anode_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x06nodeId\x12K\n" + "\x03cpu\x18\x02 \x01(\v21.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x03cpu\x12K\n" + @@ -1463,7 +1520,12 @@ const file_qdrant_cloud_monitoring_v1_monitoring_proto_rawDesc = "" + "\tram_cache\x18\x04 \x01(\v21.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\bramCache\x12R\n" + "\aram_rss\x18\x05 \x01(\v21.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x06ramRss\x12_\n" + "\x0eram_qdrant_rss\x18\x06 \x01(\v21.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\framQdrantRss\x12M\n" + - "\x04disk\x18\a \x01(\v21.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x04disk\"\x9f\x01\n" + + "\x04disk\x18\a \x01(\v21.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x04disk\x12P\n" + + "\x03gpu\x18\b \x01(\v21.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x00H\x00R\x03gpu\x88\x01\x01\x12W\n" + + "\agpu_ram\x18\t \x01(\v21.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x00H\x01R\x06gpuRam\x88\x01\x01B\x06\n" + + "\x04_gpuB\n" + + "\n" + + "\b_gpu_ram\"\x9f\x01\n" + "\x15ClusterMetricOverview\x12=\n" + "\x03avg\x18\x01 \x03(\v2+.qdrant.cloud.monitoring.v1.IntervalAverageR\x03avg\x12G\n" + "\x05total\x18\x02 \x01(\v2).qdrant.cloud.monitoring.v1.ResourceValueB\x06\xbaH\x03\xc8\x01\x01R\x05total\"v\n" + @@ -1472,7 +1534,7 @@ const file_qdrant_cloud_monitoring_v1_monitoring_proto_rawDesc = "" + "\x05value\x18\x02 \x01(\x01B\x0e\xbaH\v\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\"R\n" + "\rResourceValue\x12$\n" + "\x05value\x18\x01 \x01(\x01B\x0e\xbaH\v\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\x12\x1b\n" + - "\x04unit\x18\x02 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x04unit\"\xa7\x03\n" + + "\x04unit\x18\x02 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x04unit\"\x9a\x04\n" + "\x17ClusterNodeUsageMetrics\x12 \n" + "\anode_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x06nodeId\x124\n" + "\x03cpu\x18\x02 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x03cpu\x124\n" + @@ -1480,7 +1542,9 @@ const file_qdrant_cloud_monitoring_v1_monitoring_proto_rawDesc = "" + "\tram_cache\x18\x04 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\bramCache\x12;\n" + "\aram_rss\x18\x05 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x06ramRss\x12H\n" + "\x0eram_qdrant_rss\x18\x06 \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\framQdrantRss\x126\n" + - "\x04disk\x18\a \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x04disk\"p\n" + + "\x04disk\x18\a \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x04disk\x124\n" + + "\x03gpu\x18\b \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x03gpu\x12;\n" + + "\agpu_ram\x18\t \x03(\v2\".qdrant.cloud.monitoring.v1.MetricR\x06gpuRam\"p\n" + "\x06Metric\x12@\n" + "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\ttimestamp\x12$\n" + "\x05value\x18\x02 \x01(\x01B\x0e\xbaH\v\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\"o\n" + @@ -1575,49 +1639,55 @@ var file_qdrant_cloud_monitoring_v1_monitoring_proto_depIdxs = []int32{ 18, // 10: qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse.rps:type_name -> qdrant.cloud.monitoring.v1.Metric 18, // 11: qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse.latency:type_name -> qdrant.cloud.monitoring.v1.Metric 17, // 12: qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse.nodes:type_name -> qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics - 20, // 13: qdrant.cloud.monitoring.v1.GetClusterLogsRequest.since:type_name -> google.protobuf.Timestamp - 20, // 14: qdrant.cloud.monitoring.v1.GetClusterLogsRequest.until:type_name -> google.protobuf.Timestamp - 19, // 15: qdrant.cloud.monitoring.v1.GetClusterLogsResponse.items:type_name -> qdrant.cloud.monitoring.v1.LogEntry - 20, // 16: qdrant.cloud.monitoring.v1.GetClusterEventsRequest.since:type_name -> google.protobuf.Timestamp - 20, // 17: qdrant.cloud.monitoring.v1.GetClusterEventsRequest.until:type_name -> google.protobuf.Timestamp - 19, // 18: qdrant.cloud.monitoring.v1.GetClusterEventsResponse.items:type_name -> qdrant.cloud.monitoring.v1.LogEntry - 20, // 19: qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest.since:type_name -> google.protobuf.Timestamp - 20, // 20: qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest.until:type_name -> google.protobuf.Timestamp - 1, // 21: qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest.interval:type_name -> qdrant.cloud.monitoring.v1.InferenceMetricsInterval - 12, // 22: qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsResponse.models:type_name -> qdrant.cloud.monitoring.v1.ClusterInferenceModelMetrics - 18, // 23: qdrant.cloud.monitoring.v1.ClusterInferenceModelMetrics.values:type_name -> qdrant.cloud.monitoring.v1.Metric - 14, // 24: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.cpu:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview - 14, // 25: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.ram:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview - 14, // 26: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.ram_cache:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview - 14, // 27: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.ram_rss:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview - 14, // 28: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.ram_qdrant_rss:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview - 14, // 29: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.disk:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview - 15, // 30: qdrant.cloud.monitoring.v1.ClusterMetricOverview.avg:type_name -> qdrant.cloud.monitoring.v1.IntervalAverage - 16, // 31: qdrant.cloud.monitoring.v1.ClusterMetricOverview.total:type_name -> qdrant.cloud.monitoring.v1.ResourceValue - 21, // 32: qdrant.cloud.monitoring.v1.IntervalAverage.interval:type_name -> google.protobuf.Duration - 18, // 33: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.cpu:type_name -> qdrant.cloud.monitoring.v1.Metric - 18, // 34: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.ram:type_name -> qdrant.cloud.monitoring.v1.Metric - 18, // 35: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.ram_cache:type_name -> qdrant.cloud.monitoring.v1.Metric - 18, // 36: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.ram_rss:type_name -> qdrant.cloud.monitoring.v1.Metric - 18, // 37: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.ram_qdrant_rss:type_name -> qdrant.cloud.monitoring.v1.Metric - 18, // 38: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.disk:type_name -> qdrant.cloud.monitoring.v1.Metric - 20, // 39: qdrant.cloud.monitoring.v1.Metric.timestamp:type_name -> google.protobuf.Timestamp - 20, // 40: qdrant.cloud.monitoring.v1.LogEntry.timestamp:type_name -> google.protobuf.Timestamp - 2, // 41: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterSummaryMetrics:input_type -> qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsRequest - 4, // 42: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterUsageMetrics:input_type -> qdrant.cloud.monitoring.v1.GetClusterUsageMetricsRequest - 6, // 43: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterLogs:input_type -> qdrant.cloud.monitoring.v1.GetClusterLogsRequest - 8, // 44: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterEvents:input_type -> qdrant.cloud.monitoring.v1.GetClusterEventsRequest - 10, // 45: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterInferenceMetrics:input_type -> qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest - 3, // 46: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterSummaryMetrics:output_type -> qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsResponse - 5, // 47: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterUsageMetrics:output_type -> qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse - 7, // 48: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterLogs:output_type -> qdrant.cloud.monitoring.v1.GetClusterLogsResponse - 9, // 49: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterEvents:output_type -> qdrant.cloud.monitoring.v1.GetClusterEventsResponse - 11, // 50: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterInferenceMetrics:output_type -> qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsResponse - 46, // [46:51] is the sub-list for method output_type - 41, // [41:46] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 18, // 13: qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse.gpu:type_name -> qdrant.cloud.monitoring.v1.Metric + 18, // 14: qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse.gpu_ram:type_name -> qdrant.cloud.monitoring.v1.Metric + 20, // 15: qdrant.cloud.monitoring.v1.GetClusterLogsRequest.since:type_name -> google.protobuf.Timestamp + 20, // 16: qdrant.cloud.monitoring.v1.GetClusterLogsRequest.until:type_name -> google.protobuf.Timestamp + 19, // 17: qdrant.cloud.monitoring.v1.GetClusterLogsResponse.items:type_name -> qdrant.cloud.monitoring.v1.LogEntry + 20, // 18: qdrant.cloud.monitoring.v1.GetClusterEventsRequest.since:type_name -> google.protobuf.Timestamp + 20, // 19: qdrant.cloud.monitoring.v1.GetClusterEventsRequest.until:type_name -> google.protobuf.Timestamp + 19, // 20: qdrant.cloud.monitoring.v1.GetClusterEventsResponse.items:type_name -> qdrant.cloud.monitoring.v1.LogEntry + 20, // 21: qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest.since:type_name -> google.protobuf.Timestamp + 20, // 22: qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest.until:type_name -> google.protobuf.Timestamp + 1, // 23: qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest.interval:type_name -> qdrant.cloud.monitoring.v1.InferenceMetricsInterval + 12, // 24: qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsResponse.models:type_name -> qdrant.cloud.monitoring.v1.ClusterInferenceModelMetrics + 18, // 25: qdrant.cloud.monitoring.v1.ClusterInferenceModelMetrics.values:type_name -> qdrant.cloud.monitoring.v1.Metric + 14, // 26: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.cpu:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview + 14, // 27: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.ram:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview + 14, // 28: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.ram_cache:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview + 14, // 29: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.ram_rss:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview + 14, // 30: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.ram_qdrant_rss:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview + 14, // 31: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.disk:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview + 14, // 32: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.gpu:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview + 14, // 33: qdrant.cloud.monitoring.v1.ClusterNodeMetrics.gpu_ram:type_name -> qdrant.cloud.monitoring.v1.ClusterMetricOverview + 15, // 34: qdrant.cloud.monitoring.v1.ClusterMetricOverview.avg:type_name -> qdrant.cloud.monitoring.v1.IntervalAverage + 16, // 35: qdrant.cloud.monitoring.v1.ClusterMetricOverview.total:type_name -> qdrant.cloud.monitoring.v1.ResourceValue + 21, // 36: qdrant.cloud.monitoring.v1.IntervalAverage.interval:type_name -> google.protobuf.Duration + 18, // 37: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.cpu:type_name -> qdrant.cloud.monitoring.v1.Metric + 18, // 38: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.ram:type_name -> qdrant.cloud.monitoring.v1.Metric + 18, // 39: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.ram_cache:type_name -> qdrant.cloud.monitoring.v1.Metric + 18, // 40: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.ram_rss:type_name -> qdrant.cloud.monitoring.v1.Metric + 18, // 41: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.ram_qdrant_rss:type_name -> qdrant.cloud.monitoring.v1.Metric + 18, // 42: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.disk:type_name -> qdrant.cloud.monitoring.v1.Metric + 18, // 43: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.gpu:type_name -> qdrant.cloud.monitoring.v1.Metric + 18, // 44: qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics.gpu_ram:type_name -> qdrant.cloud.monitoring.v1.Metric + 20, // 45: qdrant.cloud.monitoring.v1.Metric.timestamp:type_name -> google.protobuf.Timestamp + 20, // 46: qdrant.cloud.monitoring.v1.LogEntry.timestamp:type_name -> google.protobuf.Timestamp + 2, // 47: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterSummaryMetrics:input_type -> qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsRequest + 4, // 48: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterUsageMetrics:input_type -> qdrant.cloud.monitoring.v1.GetClusterUsageMetricsRequest + 6, // 49: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterLogs:input_type -> qdrant.cloud.monitoring.v1.GetClusterLogsRequest + 8, // 50: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterEvents:input_type -> qdrant.cloud.monitoring.v1.GetClusterEventsRequest + 10, // 51: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterInferenceMetrics:input_type -> qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest + 3, // 52: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterSummaryMetrics:output_type -> qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsResponse + 5, // 53: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterUsageMetrics:output_type -> qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse + 7, // 54: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterLogs:output_type -> qdrant.cloud.monitoring.v1.GetClusterLogsResponse + 9, // 55: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterEvents:output_type -> qdrant.cloud.monitoring.v1.GetClusterEventsResponse + 11, // 56: qdrant.cloud.monitoring.v1.MonitoringService.GetClusterInferenceMetrics:output_type -> qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsResponse + 52, // [52:57] is the sub-list for method output_type + 47, // [47:52] is the sub-list for method input_type + 47, // [47:47] is the sub-list for extension type_name + 47, // [47:47] is the sub-list for extension extendee + 0, // [0:47] is the sub-list for field type_name } func init() { file_qdrant_cloud_monitoring_v1_monitoring_proto_init() } @@ -1629,6 +1699,7 @@ func file_qdrant_cloud_monitoring_v1_monitoring_proto_init() { file_qdrant_cloud_monitoring_v1_monitoring_proto_msgTypes[4].OneofWrappers = []any{} file_qdrant_cloud_monitoring_v1_monitoring_proto_msgTypes[6].OneofWrappers = []any{} file_qdrant_cloud_monitoring_v1_monitoring_proto_msgTypes[8].OneofWrappers = []any{} + file_qdrant_cloud_monitoring_v1_monitoring_proto_msgTypes[11].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/gen/openapiv2/qdrant/cloud/booking/v1/booking.swagger.json b/gen/openapiv2/qdrant/cloud/booking/v1/booking.swagger.json index 2d7c3715..92157db6 100644 --- a/gen/openapiv2/qdrant/cloud/booking/v1/booking.swagger.json +++ b/gen/openapiv2/qdrant/cloud/booking/v1/booking.swagger.json @@ -802,6 +802,10 @@ "gpu": { "type": "string", "description": "The amount of GPU (e.g., \"1000m\" (1 vGPU))\nThis is an optional field, if it is not set no GPU is provided." + }, + "gpuRam": { + "type": "string", + "description": "The amount of GPU RAM (e.g., \"1GiB\")\nThis is an optional field, if it is not set no GPU is provided." } }, "description": "ResourceConfiguration defines the resource configuration for a package." diff --git a/gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json b/gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json index 28635c92..fa115da0 100644 --- a/gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json +++ b/gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json @@ -1027,6 +1027,10 @@ "gpu": { "$ref": "#/definitions/v1ClusterNodeResources", "title": "GPU resources, empty if cluster has no GPU" + }, + "gpuRam": { + "$ref": "#/definitions/v1ClusterNodeResources", + "description": "GPU RAM, empty if cluster has not GPU." } }, "description": "ClusterNodeResourcesSummary represents the resources used in this cluster per node." diff --git a/gen/openapiv2/qdrant/cloud/monitoring/v1/monitoring.swagger.json b/gen/openapiv2/qdrant/cloud/monitoring/v1/monitoring.swagger.json index f262918e..f2e2c1d1 100644 --- a/gen/openapiv2/qdrant/cloud/monitoring/v1/monitoring.swagger.json +++ b/gen/openapiv2/qdrant/cloud/monitoring/v1/monitoring.swagger.json @@ -419,6 +419,14 @@ "disk": { "$ref": "#/definitions/v1ClusterMetricOverview", "description": "Overview of disk usage." + }, + "gpu": { + "$ref": "#/definitions/v1ClusterMetricOverview", + "description": "optional Overview of GPU usage." + }, + "gpuRam": { + "$ref": "#/definitions/v1ClusterMetricOverview", + "description": "Overview of GPU RAM usage." } }, "description": "ClusterNodeMetrics contains metric overview for a node." @@ -477,6 +485,22 @@ "$ref": "#/definitions/v1Metric" }, "description": "Timeseries of disk usage for the node." + }, + "gpu": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Metric" + }, + "description": "Timeseries of gpu usage for the node." + }, + "gpuRam": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Metric" + }, + "description": "Timeseries of GPU RAM usage for the node." } }, "description": "ClusterNodeUsageMetrics defines per-node usage metrics." @@ -611,6 +635,22 @@ "$ref": "#/definitions/v1ClusterNodeUsageMetrics" }, "description": "Per-node metrics." + }, + "gpu": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Metric" + }, + "description": "Timeseries of overall GPU usage across the cluster." + }, + "gpuRam": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Metric" + }, + "description": "Timeseries of overall GPU RAM usage across the cluster." } }, "title": "GetClusterUsageMetricsResponse is the response from the GetClusterUsageMetrics function" diff --git a/gen/python/qdrant/cloud/booking/v1/booking_pb2.py b/gen/python/qdrant/cloud/booking/v1/booking_pb2.py index f3fb9fbb..f69e9f5a 100644 --- a/gen/python/qdrant/cloud/booking/v1/booking_pb2.py +++ b/gen/python/qdrant/cloud/booking/v1/booking_pb2.py @@ -27,7 +27,7 @@ from qdrant.cloud.common.v1 import common_pb2 as qdrant_dot_cloud_dot_common_dot_v1_dot_common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%qdrant/cloud/booking/v1/booking.proto\x12\x17qdrant.cloud.booking.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a#qdrant/cloud/common/v1/common.proto\"\xaa\x05\n\x13ListPackagesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01\x12\x42\n\x08statuses\x18\x04 \x03(\x0e\x32&.qdrant.cloud.booking.v1.PackageStatusR\x08statuses\x12^\n\rmin_resources\x18\x05 \x01(\x0b\x32\x34.qdrant.cloud.booking.v1.ResourceConfigurationFilterH\x01R\x0cminResources\x88\x01\x01\x12\x1e\n\x08multi_az\x18\x06 \x01(\x08H\x02R\x07multiAz\x88\x01\x01\x12\x15\n\x03gpu\x18\x07 \x01(\x08H\x03R\x03gpu\x88\x01\x01:\xce\x01\xbaH\xca\x01\x1a\xc7\x01\n.list_packages.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_idB\x10\n\x0e_min_resourcesB\x0b\n\t_multi_azB\x06\n\x04_gpu\"N\n\x14ListPackagesResponse\x12\x36\n\x05items\x18\x01 \x03(\x0b\x32 .qdrant.cloud.booking.v1.PackageR\x05items\"\x9d\x04\n\x19ListGlobalPackagesRequest\x12\x33\n\x11\x63loud_provider_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01\x12^\n\rmin_resources\x18\x03 \x01(\x0b\x32\x34.qdrant.cloud.booking.v1.ResourceConfigurationFilterH\x01R\x0cminResources\x88\x01\x01\x12\x15\n\x03gpu\x18\x04 \x01(\x08H\x02R\x03gpu\x88\x01\x01:\xd5\x01\xbaH\xd1\x01\x1a\xce\x01\n5list_global_packages.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_idB\x10\n\x0e_min_resourcesB\x06\n\x04_gpu\"T\n\x1aListGlobalPackagesResponse\x12\x36\n\x05items\x18\x01 \x03(\x0b\x32 .qdrant.cloud.booking.v1.PackageR\x05items\"\xc0\x03\n\x11GetPackageRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x18\n\x02id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x11\x63loud_provider_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01:\xce\x01\xbaH\xca\x01\x1a\xc7\x01\n.list_packages.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_id\"X\n\x12GetPackageResponse\x12\x42\n\x07package\x18\x01 \x01(\x0b\x32 .qdrant.cloud.booking.v1.PackageB\x06\xbaH\x03\xc8\x01\x01R\x07package\"\xc9\x06\n\x07Package\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12/\n\x04name\x18\x02 \x01(\tB\x1b\xbaH\x18r\x16\x10\x03\x18@2\x10^[a-zA-Z0-9-_]+$R\x04name\x12%\n\x04type\x18\x03 \x01(\tB\x11\xbaH\x0er\x0cR\x04\x66reeR\x04paidR\x04type\x12\x65\n\x16resource_configuration\x18\x04 \x01(\x0b\x32..qdrant.cloud.booking.v1.ResourceConfigurationR\x15resourceConfiguration\x12-\n\x08\x63urrency\x18\x05 \x01(\tB\x11\xbaH\x0er\x0c\x32\n^[A-Z]{3}$R\x08\x63urrency\x12=\n\x17unit_int_price_per_hour\x18\x06 \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x00R\x13unitIntPricePerHour\x12J\n\x06status\x18\x07 \x01(\x0e\x32&.qdrant.cloud.booking.v1.PackageStatusB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x06status\x12\x44\n\x04tier\x18\t \x01(\x0e\x32$.qdrant.cloud.booking.v1.PackageTierB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x04tier\x12\x80\x01\n\x1e\x61vailable_additional_resources\x18\x08 \x01(\x0b\x32\x35.qdrant.cloud.booking.v1.AvailableAdditionalResourcesH\x00R\x1c\x61vailableAdditionalResources\x88\x01\x01\x12\xa3\x01\n%available_storage_tier_configurations\x18\n \x03(\x0b\x32\x46.qdrant.cloud.booking.v1.AvailableStoragePerformanceTierConfigurationsB\x08\xbaH\x05\x92\x01\x02\x08\x01R\"availableStorageTierConfigurations\x12\x19\n\x08multi_az\x18\x0b \x01(\x08R\x07multiAzB!\n\x1f_available_additional_resources\"M\n\x1c\x41vailableAdditionalResources\x12-\n\x13\x64isk_price_per_hour\x18\x01 \x01(\rR\x10\x64iskPricePerHour\"\xaa\x01\n-AvailableStoragePerformanceTierConfigurations\x12S\n\x11storage_tier_type\x18\x01 \x01(\x0e\x32\'.qdrant.cloud.common.v1.StorageTierTypeR\x0fstorageTierType\x12$\n\x0eprice_per_hour\x18\x02 \x01(\rR\x0cpricePerHour\"\x92\x01\n\x15ResourceConfiguration\x12\x19\n\x03ram\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03ram\x12\x19\n\x03\x63pu\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03\x63pu\x12\x1b\n\x04\x64isk\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04\x64isk\x12\x1e\n\x03gpu\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03gpu\x88\x01\x01\x42\x06\n\x04_gpu\"\xc0\x01\n\x1bResourceConfigurationFilter\x12\x1e\n\x03ram\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03ram\x88\x01\x01\x12\x1e\n\x03\x63pu\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\x03\x63pu\x88\x01\x01\x12 \n\x04\x64isk\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x02R\x04\x64isk\x88\x01\x01\x12\x1e\n\x03gpu\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x03R\x03gpu\x88\x01\x01\x42\x06\n\x04_ramB\x06\n\x04_cpuB\x07\n\x05_diskB\x06\n\x04_gpu\"\xa3\x05\n\x0fGetQuoteRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01\x12/\n\x0fnumber_of_nodes\x18\x04 \x01(\rB\x07\xbaH\x04*\x02(\x01R\rnumberOfNodes\x12\'\n\npackage_id\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tpackageId\x12\x37\n\x13\x61\x64\x64itional_disk_gib\x18\x06 \x01(\rB\x07\xbaH\x04*\x02(\x00R\x11\x61\x64\x64itionalDiskGib\x12X\n\x11storage_tier_type\x18\x07 \x01(\x0e\x32\'.qdrant.cloud.common.v1.StorageTierTypeH\x01R\x0fstorageTierType\x88\x01\x01:\xca\x01\xbaH\xc6\x01\x1a\xc3\x01\n*get_quote.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_idB\x14\n\x12_storage_tier_type\"\x8f\x02\n\x10GetQuoteResponse\x12-\n\x08\x63urrency\x18\x01 \x01(\tB\x11\xbaH\x0er\x0c\x32\n^[A-Z]{3}$R\x08\x63urrency\x12>\n\x17original_price_per_hour\x18\x02 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\x14originalPricePerHour\x12\x42\n\x19\x64iscounted_price_per_hour\x18\x03 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\x16\x64iscountedPricePerHour\x12H\n\x13\x64iscount_percentage\x18\x04 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00Y@)\x00\x00\x00\x00\x00\x00\x00\x00R\x12\x64iscountPercentage\"\xf7\x03\n\x15GetBackupQuoteRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01\x12\x34\n\x0f\x62\x61\x63kup_size_gib\x18\x05 \x01(\rB\x07\xbaH\x04*\x02 \x00H\x01R\rbackupSizeGib\x88\x01\x01:\xd1\x01\xbaH\xcd\x01\x1a\xca\x01\n1get_backup_quote.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_idB\x12\n\x10_backup_size_gib\"\x95\x02\n\x16GetBackupQuoteResponse\x12-\n\x08\x63urrency\x18\x01 \x01(\tB\x11\xbaH\x0er\x0c\x32\n^[A-Z]{3}$R\x08\x63urrency\x12>\n\x17original_price_per_hour\x18\x02 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\x14originalPricePerHour\x12\x42\n\x19\x64iscounted_price_per_hour\x18\x03 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\x16\x64iscountedPricePerHour\x12H\n\x13\x64iscount_percentage\x18\x04 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00Y@)\x00\x00\x00\x00\x00\x00\x00\x00R\x12\x64iscountPercentage\"\xbc\x01\n\x1aListInferenceModelsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12@\n\x18\x63loud_provider_region_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x15\x63loudProviderRegionId\"\\\n\x1bListInferenceModelsResponse\x12=\n\x05items\x18\x01 \x03(\x0b\x32\'.qdrant.cloud.booking.v1.InferenceModelR\x05items\"\xbd\x01\n\x1bListStorageTierTypesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12@\n\x18\x63loud_provider_region_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x15\x63loudProviderRegionId\"[\n\x1cListStorageTierTypesResponse\x12;\n\x05items\x18\x01 \x03(\x0b\x32%.qdrant.cloud.booking.v1.StorageTiersR\x05items\"\x81\x05\n\x0eInferenceModel\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04name\x12\x1d\n\x05title\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05title\x12)\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0b\x64\x65scription\x12P\n\x0bvector_type\x18\x05 \x01(\x0e\x32#.qdrant.cloud.booking.v1.VectorTypeB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\nvectorType\x12N\n\x08modality\x18\x06 \x01(\x0e\x32&.qdrant.cloud.booking.v1.ModelModalityB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x08modality\x12\x1f\n\x06vendor\x18\x07 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06vendor\x12$\n\x0eunit_int_price\x18\x08 \x01(\rR\x0cunitIntPrice\x12\x1f\n\x0bis_external\x18\t \x01(\x08R\nisExternal\x12+\n\x0e\x64imensionality\x18\n \x01(\rH\x00R\x0e\x64imensionality\x88\x01\x01\x12\x38\n\x16max_tokens_per_request\x18\x0b \x01(\rH\x01R\x13maxTokensPerRequest\x88\x01\x01\x12\x39\n\x11\x65xternal_docs_url\x18\x0c \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x01H\x02R\x0f\x65xternalDocsUrl\x88\x01\x01\x42\x11\n\x0f_dimensionalityB\x19\n\x17_max_tokens_per_requestB\x14\n\x12_external_docs_url\"c\n\x0cStorageTiers\x12S\n\x11storage_tier_type\x18\x01 \x01(\x0e\x32\'.qdrant.cloud.common.v1.StorageTierTypeR\x0fstorageTierType*j\n\rPackageStatus\x12\x1e\n\x1aPACKAGE_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15PACKAGE_STATUS_ACTIVE\x10\x01\x12\x1e\n\x1aPACKAGE_STATUS_DEACTIVATED\x10\x02*g\n\x0bPackageTier\x12#\n\x1fPACKAGE_TIER_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15PACKAGE_TIER_STANDARD\x10\x01\x12\x18\n\x14PACKAGE_TIER_PREMIUM\x10\x02*o\n\nVectorType\x12\x1b\n\x17VECTOR_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11VECTOR_TYPE_DENSE\x10\x01\x12\x16\n\x12VECTOR_TYPE_SPARSE\x10\x02\x12\x15\n\x11VECTOR_TYPE_MULTI\x10\x03*b\n\rModelModality\x12\x1e\n\x1aMODEL_MODALITY_UNSPECIFIED\x10\x00\x12\x17\n\x13MODEL_MODALITY_TEXT\x10\x01\x12\x18\n\x14MODEL_MODALITY_IMAGE\x10\x02\x32\xe9\x0b\n\x0e\x42ookingService\x12\x8a\x02\n\x0cListPackages\x12,.qdrant.cloud.booking.v1.ListPackagesRequest\x1a-.qdrant.cloud.booking.v1.ListPackagesResponse\"\x9c\x01\x8a\xb5\x18\x00\xba\xb5\x18&\n\x11\x63loud_provider_id\x12\x11\x63loud_provider_id\xba\xb5\x18\x34\n\x18\x63loud_provider_region_id\x12\x18\x63loud_provider_region_id\x82\xd3\xe4\x93\x02\x30\x12./api/booking/v1/accounts/{account_id}/packages\x12\xba\x01\n\nGetPackage\x12*.qdrant.cloud.booking.v1.GetPackageRequest\x1a+.qdrant.cloud.booking.v1.GetPackageResponse\"S\x8a\xb5\x18\x00\xba\xb5\x18\x10\n\npackage_id\x12\x02id\x82\xd3\xe4\x93\x02\x35\x12\x33/api/booking/v1/accounts/{account_id}/packages/{id}\x12\x86\x02\n\x12ListGlobalPackages\x12\x32.qdrant.cloud.booking.v1.ListGlobalPackagesRequest\x1a\x33.qdrant.cloud.booking.v1.ListGlobalPackagesResponse\"\x86\x01\x98\xb5\x18\x00\xba\xb5\x18&\n\x11\x63loud_provider_id\x12\x11\x63loud_provider_id\xba\xb5\x18\x34\n\x18\x63loud_provider_region_id\x12\x18\x63loud_provider_region_id\x82\xd3\xe4\x93\x02\x1a\x12\x18/api/booking/v1/packages\x12\xa9\x01\n\x08GetQuote\x12(.qdrant.cloud.booking.v1.GetQuoteRequest\x1a).qdrant.cloud.booking.v1.GetQuoteResponse\"H\x8a\xb5\x18\x0ewrite:clusters\x82\xd3\xe4\x93\x02\x30\"+/api/booking/v1/accounts/{account_id}/quote:\x01*\x12\xc1\x01\n\x0eGetBackupQuote\x12..qdrant.cloud.booking.v1.GetBackupQuoteRequest\x1a/.qdrant.cloud.booking.v1.GetBackupQuoteResponse\"N\x8a\xb5\x18\rwrite:backups\x82\xd3\xe4\x93\x02\x37\"2/api/booking/v1/accounts/{account_id}/backup-quote:\x01*\x12\xc4\x01\n\x13ListInferenceModels\x12\x33.qdrant.cloud.booking.v1.ListInferenceModelsRequest\x1a\x34.qdrant.cloud.booking.v1.ListInferenceModelsResponse\"B\x8a\xb5\x18\x00\x82\xd3\xe4\x93\x02\x38\x12\x36/api/booking/v1/accounts/{account_id}/inference-models\x12\xc4\x01\n\x14ListStorageTierTypes\x12\x34.qdrant.cloud.booking.v1.ListStorageTierTypesRequest\x1a\x35.qdrant.cloud.booking.v1.ListStorageTierTypesResponse\"?\x8a\xb5\x18\x00\x82\xd3\xe4\x93\x02\x35\x12\x33/api/booking/v1/accounts/{account_id}/storage-tiers\x1a\x06\xc2\xb5\x18\x02\x08\x01\x42\xfe\x01\n\x1b\x63om.qdrant.cloud.booking.v1B\x0c\x42ookingProtoP\x01ZRgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/booking/v1;bookingv1\xa2\x02\x03QCB\xaa\x02\x17Qdrant.Cloud.Booking.V1\xca\x02\x17Qdrant\\Cloud\\Booking\\V1\xe2\x02#Qdrant\\Cloud\\Booking\\V1\\GPBMetadata\xea\x02\x1aQdrant::Cloud::Booking::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%qdrant/cloud/booking/v1/booking.proto\x12\x17qdrant.cloud.booking.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a#qdrant/cloud/common/v1/common.proto\"\xaa\x05\n\x13ListPackagesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01\x12\x42\n\x08statuses\x18\x04 \x03(\x0e\x32&.qdrant.cloud.booking.v1.PackageStatusR\x08statuses\x12^\n\rmin_resources\x18\x05 \x01(\x0b\x32\x34.qdrant.cloud.booking.v1.ResourceConfigurationFilterH\x01R\x0cminResources\x88\x01\x01\x12\x1e\n\x08multi_az\x18\x06 \x01(\x08H\x02R\x07multiAz\x88\x01\x01\x12\x15\n\x03gpu\x18\x07 \x01(\x08H\x03R\x03gpu\x88\x01\x01:\xce\x01\xbaH\xca\x01\x1a\xc7\x01\n.list_packages.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_idB\x10\n\x0e_min_resourcesB\x0b\n\t_multi_azB\x06\n\x04_gpu\"N\n\x14ListPackagesResponse\x12\x36\n\x05items\x18\x01 \x03(\x0b\x32 .qdrant.cloud.booking.v1.PackageR\x05items\"\x9d\x04\n\x19ListGlobalPackagesRequest\x12\x33\n\x11\x63loud_provider_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01\x12^\n\rmin_resources\x18\x03 \x01(\x0b\x32\x34.qdrant.cloud.booking.v1.ResourceConfigurationFilterH\x01R\x0cminResources\x88\x01\x01\x12\x15\n\x03gpu\x18\x04 \x01(\x08H\x02R\x03gpu\x88\x01\x01:\xd5\x01\xbaH\xd1\x01\x1a\xce\x01\n5list_global_packages.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_idB\x10\n\x0e_min_resourcesB\x06\n\x04_gpu\"T\n\x1aListGlobalPackagesResponse\x12\x36\n\x05items\x18\x01 \x03(\x0b\x32 .qdrant.cloud.booking.v1.PackageR\x05items\"\xc0\x03\n\x11GetPackageRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x18\n\x02id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x11\x63loud_provider_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01:\xce\x01\xbaH\xca\x01\x1a\xc7\x01\n.list_packages.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_id\"X\n\x12GetPackageResponse\x12\x42\n\x07package\x18\x01 \x01(\x0b\x32 .qdrant.cloud.booking.v1.PackageB\x06\xbaH\x03\xc8\x01\x01R\x07package\"\xc9\x06\n\x07Package\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12/\n\x04name\x18\x02 \x01(\tB\x1b\xbaH\x18r\x16\x10\x03\x18@2\x10^[a-zA-Z0-9-_]+$R\x04name\x12%\n\x04type\x18\x03 \x01(\tB\x11\xbaH\x0er\x0cR\x04\x66reeR\x04paidR\x04type\x12\x65\n\x16resource_configuration\x18\x04 \x01(\x0b\x32..qdrant.cloud.booking.v1.ResourceConfigurationR\x15resourceConfiguration\x12-\n\x08\x63urrency\x18\x05 \x01(\tB\x11\xbaH\x0er\x0c\x32\n^[A-Z]{3}$R\x08\x63urrency\x12=\n\x17unit_int_price_per_hour\x18\x06 \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x00R\x13unitIntPricePerHour\x12J\n\x06status\x18\x07 \x01(\x0e\x32&.qdrant.cloud.booking.v1.PackageStatusB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x06status\x12\x44\n\x04tier\x18\t \x01(\x0e\x32$.qdrant.cloud.booking.v1.PackageTierB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x04tier\x12\x80\x01\n\x1e\x61vailable_additional_resources\x18\x08 \x01(\x0b\x32\x35.qdrant.cloud.booking.v1.AvailableAdditionalResourcesH\x00R\x1c\x61vailableAdditionalResources\x88\x01\x01\x12\xa3\x01\n%available_storage_tier_configurations\x18\n \x03(\x0b\x32\x46.qdrant.cloud.booking.v1.AvailableStoragePerformanceTierConfigurationsB\x08\xbaH\x05\x92\x01\x02\x08\x01R\"availableStorageTierConfigurations\x12\x19\n\x08multi_az\x18\x0b \x01(\x08R\x07multiAzB!\n\x1f_available_additional_resources\"M\n\x1c\x41vailableAdditionalResources\x12-\n\x13\x64isk_price_per_hour\x18\x01 \x01(\rR\x10\x64iskPricePerHour\"\xaa\x01\n-AvailableStoragePerformanceTierConfigurations\x12S\n\x11storage_tier_type\x18\x01 \x01(\x0e\x32\'.qdrant.cloud.common.v1.StorageTierTypeR\x0fstorageTierType\x12$\n\x0eprice_per_hour\x18\x02 \x01(\rR\x0cpricePerHour\"\xc5\x01\n\x15ResourceConfiguration\x12\x19\n\x03ram\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03ram\x12\x19\n\x03\x63pu\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03\x63pu\x12\x1b\n\x04\x64isk\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04\x64isk\x12\x1e\n\x03gpu\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03gpu\x88\x01\x01\x12%\n\x07gpu_ram\x18\x05 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\x06gpuRam\x88\x01\x01\x42\x06\n\x04_gpuB\n\n\x08_gpu_ram\"\xc0\x01\n\x1bResourceConfigurationFilter\x12\x1e\n\x03ram\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03ram\x88\x01\x01\x12\x1e\n\x03\x63pu\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\x03\x63pu\x88\x01\x01\x12 \n\x04\x64isk\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x02R\x04\x64isk\x88\x01\x01\x12\x1e\n\x03gpu\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x03R\x03gpu\x88\x01\x01\x42\x06\n\x04_ramB\x06\n\x04_cpuB\x07\n\x05_diskB\x06\n\x04_gpu\"\xa3\x05\n\x0fGetQuoteRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01\x12/\n\x0fnumber_of_nodes\x18\x04 \x01(\rB\x07\xbaH\x04*\x02(\x01R\rnumberOfNodes\x12\'\n\npackage_id\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tpackageId\x12\x37\n\x13\x61\x64\x64itional_disk_gib\x18\x06 \x01(\rB\x07\xbaH\x04*\x02(\x00R\x11\x61\x64\x64itionalDiskGib\x12X\n\x11storage_tier_type\x18\x07 \x01(\x0e\x32\'.qdrant.cloud.common.v1.StorageTierTypeH\x01R\x0fstorageTierType\x88\x01\x01:\xca\x01\xbaH\xc6\x01\x1a\xc3\x01\n*get_quote.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_idB\x14\n\x12_storage_tier_type\"\x8f\x02\n\x10GetQuoteResponse\x12-\n\x08\x63urrency\x18\x01 \x01(\tB\x11\xbaH\x0er\x0c\x32\n^[A-Z]{3}$R\x08\x63urrency\x12>\n\x17original_price_per_hour\x18\x02 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\x14originalPricePerHour\x12\x42\n\x19\x64iscounted_price_per_hour\x18\x03 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\x16\x64iscountedPricePerHour\x12H\n\x13\x64iscount_percentage\x18\x04 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00Y@)\x00\x00\x00\x00\x00\x00\x00\x00R\x12\x64iscountPercentage\"\xf7\x03\n\x15GetBackupQuoteRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x45\n\x18\x63loud_provider_region_id\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x15\x63loudProviderRegionId\x88\x01\x01\x12\x34\n\x0f\x62\x61\x63kup_size_gib\x18\x05 \x01(\rB\x07\xbaH\x04*\x02 \x00H\x01R\rbackupSizeGib\x88\x01\x01:\xd1\x01\xbaH\xcd\x01\x1a\xca\x01\n1get_backup_quote.cloud_provider_region_id_present\x12Kcloud_provider_region_id is required when cloud_provider_id is not \'hybrid\'\x1aHthis.cloud_provider_id == \'hybrid\' || has(this.cloud_provider_region_id)B\x1b\n\x19_cloud_provider_region_idB\x12\n\x10_backup_size_gib\"\x95\x02\n\x16GetBackupQuoteResponse\x12-\n\x08\x63urrency\x18\x01 \x01(\tB\x11\xbaH\x0er\x0c\x32\n^[A-Z]{3}$R\x08\x63urrency\x12>\n\x17original_price_per_hour\x18\x02 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\x14originalPricePerHour\x12\x42\n\x19\x64iscounted_price_per_hour\x18\x03 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\x16\x64iscountedPricePerHour\x12H\n\x13\x64iscount_percentage\x18\x04 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00Y@)\x00\x00\x00\x00\x00\x00\x00\x00R\x12\x64iscountPercentage\"\xbc\x01\n\x1aListInferenceModelsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12@\n\x18\x63loud_provider_region_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x15\x63loudProviderRegionId\"\\\n\x1bListInferenceModelsResponse\x12=\n\x05items\x18\x01 \x03(\x0b\x32\'.qdrant.cloud.booking.v1.InferenceModelR\x05items\"\xbd\x01\n\x1bListStorageTierTypesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x33\n\x11\x63loud_provider_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12@\n\x18\x63loud_provider_region_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x15\x63loudProviderRegionId\"[\n\x1cListStorageTierTypesResponse\x12;\n\x05items\x18\x01 \x03(\x0b\x32%.qdrant.cloud.booking.v1.StorageTiersR\x05items\"\x81\x05\n\x0eInferenceModel\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04name\x12\x1d\n\x05title\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05title\x12)\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0b\x64\x65scription\x12P\n\x0bvector_type\x18\x05 \x01(\x0e\x32#.qdrant.cloud.booking.v1.VectorTypeB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\nvectorType\x12N\n\x08modality\x18\x06 \x01(\x0e\x32&.qdrant.cloud.booking.v1.ModelModalityB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x08modality\x12\x1f\n\x06vendor\x18\x07 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06vendor\x12$\n\x0eunit_int_price\x18\x08 \x01(\rR\x0cunitIntPrice\x12\x1f\n\x0bis_external\x18\t \x01(\x08R\nisExternal\x12+\n\x0e\x64imensionality\x18\n \x01(\rH\x00R\x0e\x64imensionality\x88\x01\x01\x12\x38\n\x16max_tokens_per_request\x18\x0b \x01(\rH\x01R\x13maxTokensPerRequest\x88\x01\x01\x12\x39\n\x11\x65xternal_docs_url\x18\x0c \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x01H\x02R\x0f\x65xternalDocsUrl\x88\x01\x01\x42\x11\n\x0f_dimensionalityB\x19\n\x17_max_tokens_per_requestB\x14\n\x12_external_docs_url\"c\n\x0cStorageTiers\x12S\n\x11storage_tier_type\x18\x01 \x01(\x0e\x32\'.qdrant.cloud.common.v1.StorageTierTypeR\x0fstorageTierType*j\n\rPackageStatus\x12\x1e\n\x1aPACKAGE_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15PACKAGE_STATUS_ACTIVE\x10\x01\x12\x1e\n\x1aPACKAGE_STATUS_DEACTIVATED\x10\x02*g\n\x0bPackageTier\x12#\n\x1fPACKAGE_TIER_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15PACKAGE_TIER_STANDARD\x10\x01\x12\x18\n\x14PACKAGE_TIER_PREMIUM\x10\x02*o\n\nVectorType\x12\x1b\n\x17VECTOR_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11VECTOR_TYPE_DENSE\x10\x01\x12\x16\n\x12VECTOR_TYPE_SPARSE\x10\x02\x12\x15\n\x11VECTOR_TYPE_MULTI\x10\x03*b\n\rModelModality\x12\x1e\n\x1aMODEL_MODALITY_UNSPECIFIED\x10\x00\x12\x17\n\x13MODEL_MODALITY_TEXT\x10\x01\x12\x18\n\x14MODEL_MODALITY_IMAGE\x10\x02\x32\xe9\x0b\n\x0e\x42ookingService\x12\x8a\x02\n\x0cListPackages\x12,.qdrant.cloud.booking.v1.ListPackagesRequest\x1a-.qdrant.cloud.booking.v1.ListPackagesResponse\"\x9c\x01\x8a\xb5\x18\x00\xba\xb5\x18&\n\x11\x63loud_provider_id\x12\x11\x63loud_provider_id\xba\xb5\x18\x34\n\x18\x63loud_provider_region_id\x12\x18\x63loud_provider_region_id\x82\xd3\xe4\x93\x02\x30\x12./api/booking/v1/accounts/{account_id}/packages\x12\xba\x01\n\nGetPackage\x12*.qdrant.cloud.booking.v1.GetPackageRequest\x1a+.qdrant.cloud.booking.v1.GetPackageResponse\"S\x8a\xb5\x18\x00\xba\xb5\x18\x10\n\npackage_id\x12\x02id\x82\xd3\xe4\x93\x02\x35\x12\x33/api/booking/v1/accounts/{account_id}/packages/{id}\x12\x86\x02\n\x12ListGlobalPackages\x12\x32.qdrant.cloud.booking.v1.ListGlobalPackagesRequest\x1a\x33.qdrant.cloud.booking.v1.ListGlobalPackagesResponse\"\x86\x01\x98\xb5\x18\x00\xba\xb5\x18&\n\x11\x63loud_provider_id\x12\x11\x63loud_provider_id\xba\xb5\x18\x34\n\x18\x63loud_provider_region_id\x12\x18\x63loud_provider_region_id\x82\xd3\xe4\x93\x02\x1a\x12\x18/api/booking/v1/packages\x12\xa9\x01\n\x08GetQuote\x12(.qdrant.cloud.booking.v1.GetQuoteRequest\x1a).qdrant.cloud.booking.v1.GetQuoteResponse\"H\x8a\xb5\x18\x0ewrite:clusters\x82\xd3\xe4\x93\x02\x30\"+/api/booking/v1/accounts/{account_id}/quote:\x01*\x12\xc1\x01\n\x0eGetBackupQuote\x12..qdrant.cloud.booking.v1.GetBackupQuoteRequest\x1a/.qdrant.cloud.booking.v1.GetBackupQuoteResponse\"N\x8a\xb5\x18\rwrite:backups\x82\xd3\xe4\x93\x02\x37\"2/api/booking/v1/accounts/{account_id}/backup-quote:\x01*\x12\xc4\x01\n\x13ListInferenceModels\x12\x33.qdrant.cloud.booking.v1.ListInferenceModelsRequest\x1a\x34.qdrant.cloud.booking.v1.ListInferenceModelsResponse\"B\x8a\xb5\x18\x00\x82\xd3\xe4\x93\x02\x38\x12\x36/api/booking/v1/accounts/{account_id}/inference-models\x12\xc4\x01\n\x14ListStorageTierTypes\x12\x34.qdrant.cloud.booking.v1.ListStorageTierTypesRequest\x1a\x35.qdrant.cloud.booking.v1.ListStorageTierTypesResponse\"?\x8a\xb5\x18\x00\x82\xd3\xe4\x93\x02\x35\x12\x33/api/booking/v1/accounts/{account_id}/storage-tiers\x1a\x06\xc2\xb5\x18\x02\x08\x01\x42\xfe\x01\n\x1b\x63om.qdrant.cloud.booking.v1B\x0c\x42ookingProtoP\x01ZRgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/booking/v1;bookingv1\xa2\x02\x03QCB\xaa\x02\x17Qdrant.Cloud.Booking.V1\xca\x02\x17Qdrant\\Cloud\\Booking\\V1\xe2\x02#Qdrant\\Cloud\\Booking\\V1\\GPBMetadata\xea\x02\x1aQdrant::Cloud::Booking::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -85,6 +85,8 @@ _globals['_RESOURCECONFIGURATION'].fields_by_name['disk']._serialized_options = b'\272H\004r\002\020\001' _globals['_RESOURCECONFIGURATION'].fields_by_name['gpu']._loaded_options = None _globals['_RESOURCECONFIGURATION'].fields_by_name['gpu']._serialized_options = b'\272H\004r\002\020\001' + _globals['_RESOURCECONFIGURATION'].fields_by_name['gpu_ram']._loaded_options = None + _globals['_RESOURCECONFIGURATION'].fields_by_name['gpu_ram']._serialized_options = b'\272H\004r\002\020\001' _globals['_RESOURCECONFIGURATIONFILTER'].fields_by_name['ram']._loaded_options = None _globals['_RESOURCECONFIGURATIONFILTER'].fields_by_name['ram']._serialized_options = b'\272H\004r\002\020\001' _globals['_RESOURCECONFIGURATIONFILTER'].fields_by_name['cpu']._loaded_options = None @@ -177,14 +179,14 @@ _globals['_BOOKINGSERVICE'].methods_by_name['ListInferenceModels']._serialized_options = b'\212\265\030\000\202\323\344\223\0028\0226/api/booking/v1/accounts/{account_id}/inference-models' _globals['_BOOKINGSERVICE'].methods_by_name['ListStorageTierTypes']._loaded_options = None _globals['_BOOKINGSERVICE'].methods_by_name['ListStorageTierTypes']._serialized_options = b'\212\265\030\000\202\323\344\223\0025\0223/api/booking/v1/accounts/{account_id}/storage-tiers' - _globals['_PACKAGESTATUS']._serialized_start=6591 - _globals['_PACKAGESTATUS']._serialized_end=6697 - _globals['_PACKAGETIER']._serialized_start=6699 - _globals['_PACKAGETIER']._serialized_end=6802 - _globals['_VECTORTYPE']._serialized_start=6804 - _globals['_VECTORTYPE']._serialized_end=6915 - _globals['_MODELMODALITY']._serialized_start=6917 - _globals['_MODELMODALITY']._serialized_end=7015 + _globals['_PACKAGESTATUS']._serialized_start=6642 + _globals['_PACKAGESTATUS']._serialized_end=6748 + _globals['_PACKAGETIER']._serialized_start=6750 + _globals['_PACKAGETIER']._serialized_end=6853 + _globals['_VECTORTYPE']._serialized_start=6855 + _globals['_VECTORTYPE']._serialized_end=6966 + _globals['_MODELMODALITY']._serialized_start=6968 + _globals['_MODELMODALITY']._serialized_end=7066 _globals['_LISTPACKAGESREQUEST']._serialized_start=163 _globals['_LISTPACKAGESREQUEST']._serialized_end=845 _globals['_LISTPACKAGESRESPONSE']._serialized_start=847 @@ -204,29 +206,29 @@ _globals['_AVAILABLESTORAGEPERFORMANCETIERCONFIGURATIONS']._serialized_start=3022 _globals['_AVAILABLESTORAGEPERFORMANCETIERCONFIGURATIONS']._serialized_end=3192 _globals['_RESOURCECONFIGURATION']._serialized_start=3195 - _globals['_RESOURCECONFIGURATION']._serialized_end=3341 - _globals['_RESOURCECONFIGURATIONFILTER']._serialized_start=3344 - _globals['_RESOURCECONFIGURATIONFILTER']._serialized_end=3536 - _globals['_GETQUOTEREQUEST']._serialized_start=3539 - _globals['_GETQUOTEREQUEST']._serialized_end=4214 - _globals['_GETQUOTERESPONSE']._serialized_start=4217 - _globals['_GETQUOTERESPONSE']._serialized_end=4488 - _globals['_GETBACKUPQUOTEREQUEST']._serialized_start=4491 - _globals['_GETBACKUPQUOTEREQUEST']._serialized_end=4994 - _globals['_GETBACKUPQUOTERESPONSE']._serialized_start=4997 - _globals['_GETBACKUPQUOTERESPONSE']._serialized_end=5274 - _globals['_LISTINFERENCEMODELSREQUEST']._serialized_start=5277 - _globals['_LISTINFERENCEMODELSREQUEST']._serialized_end=5465 - _globals['_LISTINFERENCEMODELSRESPONSE']._serialized_start=5467 - _globals['_LISTINFERENCEMODELSRESPONSE']._serialized_end=5559 - _globals['_LISTSTORAGETIERTYPESREQUEST']._serialized_start=5562 - _globals['_LISTSTORAGETIERTYPESREQUEST']._serialized_end=5751 - _globals['_LISTSTORAGETIERTYPESRESPONSE']._serialized_start=5753 - _globals['_LISTSTORAGETIERTYPESRESPONSE']._serialized_end=5844 - _globals['_INFERENCEMODEL']._serialized_start=5847 - _globals['_INFERENCEMODEL']._serialized_end=6488 - _globals['_STORAGETIERS']._serialized_start=6490 - _globals['_STORAGETIERS']._serialized_end=6589 - _globals['_BOOKINGSERVICE']._serialized_start=7018 - _globals['_BOOKINGSERVICE']._serialized_end=8531 + _globals['_RESOURCECONFIGURATION']._serialized_end=3392 + _globals['_RESOURCECONFIGURATIONFILTER']._serialized_start=3395 + _globals['_RESOURCECONFIGURATIONFILTER']._serialized_end=3587 + _globals['_GETQUOTEREQUEST']._serialized_start=3590 + _globals['_GETQUOTEREQUEST']._serialized_end=4265 + _globals['_GETQUOTERESPONSE']._serialized_start=4268 + _globals['_GETQUOTERESPONSE']._serialized_end=4539 + _globals['_GETBACKUPQUOTEREQUEST']._serialized_start=4542 + _globals['_GETBACKUPQUOTEREQUEST']._serialized_end=5045 + _globals['_GETBACKUPQUOTERESPONSE']._serialized_start=5048 + _globals['_GETBACKUPQUOTERESPONSE']._serialized_end=5325 + _globals['_LISTINFERENCEMODELSREQUEST']._serialized_start=5328 + _globals['_LISTINFERENCEMODELSREQUEST']._serialized_end=5516 + _globals['_LISTINFERENCEMODELSRESPONSE']._serialized_start=5518 + _globals['_LISTINFERENCEMODELSRESPONSE']._serialized_end=5610 + _globals['_LISTSTORAGETIERTYPESREQUEST']._serialized_start=5613 + _globals['_LISTSTORAGETIERTYPESREQUEST']._serialized_end=5802 + _globals['_LISTSTORAGETIERTYPESRESPONSE']._serialized_start=5804 + _globals['_LISTSTORAGETIERTYPESRESPONSE']._serialized_end=5895 + _globals['_INFERENCEMODEL']._serialized_start=5898 + _globals['_INFERENCEMODEL']._serialized_end=6539 + _globals['_STORAGETIERS']._serialized_start=6541 + _globals['_STORAGETIERS']._serialized_end=6640 + _globals['_BOOKINGSERVICE']._serialized_start=7069 + _globals['_BOOKINGSERVICE']._serialized_end=8582 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/qdrant/cloud/booking/v1/booking_pb2.pyi b/gen/python/qdrant/cloud/booking/v1/booking_pb2.pyi index a44e7a87..9a375d86 100644 --- a/gen/python/qdrant/cloud/booking/v1/booking_pb2.pyi +++ b/gen/python/qdrant/cloud/booking/v1/booking_pb2.pyi @@ -149,16 +149,18 @@ class AvailableStoragePerformanceTierConfigurations(_message.Message): def __init__(self, storage_tier_type: _Optional[_Union[_common_pb2.StorageTierType, str]] = ..., price_per_hour: _Optional[int] = ...) -> None: ... class ResourceConfiguration(_message.Message): - __slots__ = ("ram", "cpu", "disk", "gpu") + __slots__ = ("ram", "cpu", "disk", "gpu", "gpu_ram") RAM_FIELD_NUMBER: _ClassVar[int] CPU_FIELD_NUMBER: _ClassVar[int] DISK_FIELD_NUMBER: _ClassVar[int] GPU_FIELD_NUMBER: _ClassVar[int] + GPU_RAM_FIELD_NUMBER: _ClassVar[int] ram: str cpu: str disk: str gpu: str - def __init__(self, ram: _Optional[str] = ..., cpu: _Optional[str] = ..., disk: _Optional[str] = ..., gpu: _Optional[str] = ...) -> None: ... + gpu_ram: str + def __init__(self, ram: _Optional[str] = ..., cpu: _Optional[str] = ..., disk: _Optional[str] = ..., gpu: _Optional[str] = ..., gpu_ram: _Optional[str] = ...) -> None: ... class ResourceConfigurationFilter(_message.Message): __slots__ = ("ram", "cpu", "disk", "gpu") diff --git a/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py b/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py index 112b40ef..46c306cf 100644 --- a/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py +++ b/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py @@ -29,7 +29,7 @@ from qdrant.cloud.event.v1 import events_pb2 as qdrant_dot_cloud_dot_event_dot_v1_dot_events__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%qdrant/cloud/cluster/v1/cluster.proto\x12\x17qdrant.cloud.cluster.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#qdrant/cloud/common/v1/common.proto\x1a\"qdrant/cloud/event/v1/events.proto\"\xb2\x06\n\x13ListClustersRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x38\n\x11\x63loud_provider_id\x18\n \x01(\tB\x07\xbaH\x04r\x02\x10\x03H\x00R\x0f\x63loudProviderId\x88\x01\x01\x12\x45\n\x18\x63loud_provider_region_id\x18\x0b \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\x15\x63loudProviderRegionId\x88\x01\x01\x12,\n\tpage_size\x18\x14 \x01(\x05\x42\n\xbaH\x07\x1a\x05\x18\xfa\x01 \x00H\x02R\x08pageSize\x88\x01\x01\x12+\n\npage_token\x18\x15 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x03R\tpageToken\x88\x01\x01:\xc5\x03\xbaH\xc1\x03\x1a\xb1\x01\n\'list_clusters.cloud_provider_id_present\x12\x42\x63loud_provider_id is required when cloud_provider_region_id is set\x1a\x42!has(this.cloud_provider_region_id) || has(this.cloud_provider_id)\x1a\x8a\x02\n cluster.cloud_provider_region_id\x12Hcloud_provider_region_id must be a UUID if cloud_provider_id is \'hybrid\'\x1a\x9b\x01this.cloud_provider_region_id.matches(\'^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\') || this.cloud_provider_id!= \'hybrid\'B\x14\n\x12_cloud_provider_idB\x1b\n\x19_cloud_provider_region_idB\x0c\n\n_page_sizeB\r\n\x0b_page_token\"\xd4\x01\n\x14ListClustersResponse\x12\x36\n\x05items\x18\x01 \x03(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x05items\x12+\n\ntotal_size\x18\n \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x00H\x00R\ttotalSize\x88\x01\x01\x12\x34\n\x0fnext_page_token\x18\x0b \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\rnextPageToken\x88\x01\x01\x42\r\n\x0b_total_sizeB\x12\n\x10_next_page_token\"e\n\x11GetClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"X\n\x12GetClusterResponse\x12\x42\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterB\x06\xbaH\x03\xc8\x01\x01R\x07\x63luster\"\xcd\x02\n\x14\x43reateClusterRequest\x12\x42\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterB\x06\xbaH\x03\xc8\x01\x01R\x07\x63luster:\xf0\x01\xbaH\xec\x01\x1a\xe9\x01\n\"create_cluster.no_read_only_fields\x12Nread-only fields (id, created_at, deleted_at, state) must not be set on create\x1asthis.cluster.id == \'\' && !has(this.cluster.created_at) && !has(this.cluster.deleted_at) && !has(this.cluster.state)\"\xc4\x01\n\x15\x43reateClusterResponse\x12\x42\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterB\x06\xbaH\x03\xc8\x01\x01R\x07\x63luster:g\xbaHd\x1a\x62\n\x1c\x63reate_cluster.state_present\x12)state is required for an existing cluster\x1a\x17has(this.cluster.state)\"\xb9\x01\n\x14UpdateClusterRequest\x12\x42\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterB\x06\xbaH\x03\xc8\x01\x01R\x07\x63luster:]\xbaHZ\x1aX\n\x19update_cluster.id_present\x12$cluster.id is required for an update\x1a\x15this.cluster.id != \'\'\"\xc4\x01\n\x15UpdateClusterResponse\x12\x42\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterB\x06\xbaH\x03\xc8\x01\x01R\x07\x63luster:g\xbaHd\x1a\x62\n\x1cupdate_cluster.state_present\x12)state is required for an existing cluster\x1a\x17has(this.cluster.state)\"\xa7\x01\n\x14\x44\x65leteClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12*\n\x0e\x64\x65lete_backups\x18\x03 \x01(\x08H\x00R\rdeleteBackups\x88\x01\x01\x42\x11\n\x0f_delete_backups\"\x17\n\x15\x44\x65leteClusterResponse\"i\n\x15RestartClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"\x18\n\x16RestartClusterResponse\"i\n\x15SuspendClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"\x18\n\x16SuspendClusterResponse\"k\n\x17UnsuspendClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"\x1a\n\x18UnsuspendClusterResponse\"o\n\x1b\x45nableClusterJwtRbacRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"\x1e\n\x1c\x45nableClusterJwtRbacResponse\"D\n\x19SuggestClusterNameRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"9\n\x1aSuggestClusterNameResponse\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04name\"\x81\x01\n\x19ListQdrantReleasesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12,\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\tclusterId\x88\x01\x01\x42\r\n\x0b_cluster_id\"Z\n\x1aListQdrantReleasesResponse\x12<\n\x05items\x18\x01 \x03(\x0b\x32&.qdrant.cloud.cluster.v1.QdrantReleaseR\x05items\"e\n\x17GetQdrantReleaseRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07version\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07version\"d\n\x18GetQdrantReleaseResponse\x12H\n\x07release\x18\x01 \x01(\x0b\x32&.qdrant.cloud.cluster.v1.QdrantReleaseB\x06\xbaH\x03\xc8\x01\x01R\x07release\"\xdc\t\n\x07\x43luster\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\'\n\naccount_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12/\n\x04name\x18\x04 \x01(\tB\x1b\xbaH\x18r\x16\x10\x02\x18@2\x10^[a-zA-Z0-9-_]+$R\x04name\x12\x39\n\ndeleted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tdeletedAt\x12\x33\n\x11\x63loud_provider_id\x18\n \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12@\n\x18\x63loud_provider_region_id\x18\x0b \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x15\x63loudProviderRegionId\x12\x42\n\x06labels\x18\x0c \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10\nR\x06labels\x12\xc7\x01\n\x15\x63ost_allocation_label\x18\r \x01(\tB\x8d\x01\xbaH\x89\x01r\x86\x01\x18\xfd\x01\x32\x80\x01^([a-z0-9A-Z]([-a-z0-9A-Z]*[a-z0-9A-Z])?(\\.[a-z0-9A-Z]([-a-z0-9A-Z]*[a-z0-9A-Z])?)*\\/)?([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$H\x00R\x13\x63ostAllocationLabel\x88\x01\x01\x12[\n\rconfiguration\x18\x14 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterConfigurationB\x06\xbaH\x03\xc8\x01\x01R\rconfiguration\x12;\n\x05state\x18\x64 \x01(\x0b\x32%.qdrant.cloud.cluster.v1.ClusterStateR\x05state:\xb7\x03\xbaH\xb3\x03\x1a\xa3\x01\n\ncluster.id\x12\x1avalue must be a valid UUID\x1aythis.id.matches(\'^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\') || !has(this.created_at)\x1a\x8a\x02\n cluster.cloud_provider_region_id\x12Hcloud_provider_region_id must be a UUID if cloud_provider_id is \'hybrid\'\x1a\x9b\x01this.cloud_provider_region_id.matches(\'^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\') || this.cloud_provider_id!= \'hybrid\'B\x18\n\x16_cost_allocation_label\"\xde\x0f\n\x14\x43lusterConfiguration\x12\x44\n\x10last_modified_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastModifiedAt\x12/\n\x0fnumber_of_nodes\x18\x02 \x01(\rB\x07\xbaH\x04*\x02(\x01R\rnumberOfNodes\x12\x45\n\x07version\x18\x03 \x01(\tB&\xbaH#r!2\x1f^(v(\\d+)\\.(\\d+)\\.(\\d+)|latest)$H\x00R\x07version\x88\x01\x01\x12\'\n\npackage_id\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tpackageId\x12\x64\n\x14\x61\x64\x64itional_resources\x18\x05 \x01(\x0b\x32,.qdrant.cloud.cluster.v1.AdditionalResourcesH\x01R\x13\x61\x64\x64itionalResources\x88\x01\x01\x12j\n\x16\x64\x61tabase_configuration\x18\x07 \x01(\x0b\x32..qdrant.cloud.cluster.v1.DatabaseConfigurationH\x02R\x15\x64\x61tabaseConfiguration\x88\x01\x01\x12O\n\rnode_selector\x18\x08 \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0cnodeSelector\x12O\n\x0btolerations\x18\t \x03(\x0b\x32#.qdrant.cloud.cluster.v1.TolerationB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0btolerations\x12L\n\x0b\x61nnotations\x18\n \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0b\x61nnotations\x12H\n\x18\x61llowed_ip_source_ranges\x18\x0b \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10(\"\x05r\x03\xf0\x01\x01R\x15\x61llowedIpSourceRanges\x12_\n\x0cservice_type\x18\x0c \x01(\x0e\x32+.qdrant.cloud.cluster.v1.ClusterServiceTypeB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x03R\x0bserviceType\x88\x01\x01\x12[\n\x13service_annotations\x18\r \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10@R\x12serviceAnnotations\x12I\n\npod_labels\x18\x0e \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10\nR\tpodLabels\x12\x46\n\x17reserved_cpu_percentage\x18\x14 \x01(\rB\t\xbaH\x06*\x04\x18P(\x01H\x04R\x15reservedCpuPercentage\x88\x01\x01\x12L\n\x1areserved_memory_percentage\x18\x15 \x01(\rB\t\xbaH\x06*\x04\x18P(\x01H\x05R\x18reservedMemoryPercentage\x88\x01\x01\x12`\n\x08gpu_type\x18\x16 \x01(\x0e\x32\x34.qdrant.cloud.cluster.v1.ClusterConfigurationGpuTypeB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x06R\x07gpuType\x88\x01\x01\x12r\n\x0erestart_policy\x18\x17 \x01(\x0e\x32:.qdrant.cloud.cluster.v1.ClusterConfigurationRestartPolicyB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x07R\rrestartPolicy\x88\x01\x01\x12~\n\x12rebalance_strategy\x18\x18 \x01(\x0e\x32>.qdrant.cloud.cluster.v1.ClusterConfigurationRebalanceStrategyB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x08R\x11rebalanceStrategy\x88\x01\x01\x12z\n\x1btopology_spread_constraints\x18\x19 \x03(\x0b\x32\x30.qdrant.cloud.common.v1.TopologySpreadConstraintB\x08\xbaH\x05\x92\x01\x02\x10\nR\x19topologySpreadConstraints\x12}\n\x1d\x63luster_storage_configuration\x18\x1a \x01(\x0b\x32\x34.qdrant.cloud.cluster.v1.ClusterStorageConfigurationH\tR\x1b\x63lusterStorageConfiguration\x88\x01\x01\x42\n\n\x08_versionB\x17\n\x15_additional_resourcesB\x19\n\x17_database_configurationB\x0f\n\r_service_typeB\x1a\n\x18_reserved_cpu_percentageB\x1d\n\x1b_reserved_memory_percentageB\x0b\n\t_gpu_typeB\x11\n\x0f_restart_policyB\x15\n\x13_rebalance_strategyB \n\x1e_cluster_storage_configuration\"\xf1\x05\n\x15\x44\x61tabaseConfiguration\x12]\n\ncollection\x18\x01 \x01(\x0b\x32\x38.qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionH\x00R\ncollection\x88\x01\x01\x12T\n\x07storage\x18\x02 \x01(\x0b\x32\x35.qdrant.cloud.cluster.v1.DatabaseConfigurationStorageH\x01R\x07storage\x88\x01\x01\x12T\n\x07service\x18\x03 \x01(\x0b\x32\x35.qdrant.cloud.cluster.v1.DatabaseConfigurationServiceH\x02R\x07service\x88\x01\x01\x12\x64\n\tlog_level\x18\x04 \x01(\x0e\x32\x36.qdrant.cloud.cluster.v1.DatabaseConfigurationLogLevelB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x03R\x08logLevel\x88\x01\x01\x12H\n\x03tls\x18\x05 \x01(\x0b\x32\x31.qdrant.cloud.cluster.v1.DatabaseConfigurationTlsH\x04R\x03tls\x88\x01\x01\x12Z\n\tinference\x18\x06 \x01(\x0b\x32\x37.qdrant.cloud.cluster.v1.DatabaseConfigurationInferenceH\x05R\tinference\x88\x01\x01\x12\x64\n\raudit_logging\x18\x07 \x01(\x0b\x32:.qdrant.cloud.cluster.v1.DatabaseConfigurationAuditLoggingH\x06R\x0c\x61uditLogging\x88\x01\x01\x42\r\n\x0b_collectionB\n\n\x08_storageB\n\n\x08_serviceB\x0c\n\n_log_levelB\x06\n\x04_tlsB\x0c\n\n_inferenceB\x10\n\x0e_audit_logging\"\xc6\x02\n\x1f\x44\x61tabaseConfigurationCollection\x12;\n\x12replication_factor\x18\x01 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x11replicationFactor\x88\x01\x01\x12\x46\n\x18write_consistency_factor\x18\x02 \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x01H\x01R\x16writeConsistencyFactor\x88\x01\x01\x12^\n\x07vectors\x18\x03 \x01(\x0b\x32?.qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionVectorsH\x02R\x07vectors\x88\x01\x01\x42\x15\n\x13_replication_factorB\x1b\n\x19_write_consistency_factorB\n\n\x08_vectors\"R\n&DatabaseConfigurationCollectionVectors\x12\x1c\n\x07on_disk\x18\x01 \x01(\x08H\x00R\x06onDisk\x88\x01\x01\x42\n\n\x08_on_disk\"\x97\x01\n\x1c\x44\x61tabaseConfigurationStorage\x12g\n\x0bperformance\x18\x01 \x01(\x0b\x32@.qdrant.cloud.cluster.v1.DatabaseConfigurationStoragePerformanceH\x00R\x0bperformance\x88\x01\x01\x42\x0e\n\x0c_performance\"\xb2\x01\n\'DatabaseConfigurationStoragePerformance\x12\x35\n\x14optimizer_cpu_budget\x18\x01 \x01(\x05H\x00R\x12optimizerCpuBudget\x88\x01\x01\x12&\n\x0c\x61sync_scorer\x18\x02 \x01(\x08H\x01R\x0b\x61syncScorer\x88\x01\x01\x42\x17\n\x15_optimizer_cpu_budgetB\x0f\n\r_async_scorer\"\x93\x02\n\x1c\x44\x61tabaseConfigurationService\x12\x42\n\x07\x61pi_key\x18\x01 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefH\x00R\x06\x61piKey\x88\x01\x01\x12T\n\x11read_only_api_key\x18\x02 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefH\x01R\x0ereadOnlyApiKey\x88\x01\x01\x12\"\n\nenable_tls\x18\x04 \x01(\x08H\x02R\tenableTls\x88\x01\x01\x42\n\n\x08_api_keyB\x14\n\x12_read_only_api_keyB\r\n\x0b_enable_tlsJ\x04\x08\x03\x10\x04\"\x9c\x01\n\x18\x44\x61tabaseConfigurationTls\x12@\n\x04\x63\x65rt\x18\x01 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefB\x06\xbaH\x03\xc8\x01\x01R\x04\x63\x65rt\x12>\n\x03key\x18\x02 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefB\x06\xbaH\x03\xc8\x01\x01R\x03key\":\n\x1e\x44\x61tabaseConfigurationInference\x12\x18\n\x07\x65nabled\x18\x01 \x01(\x08R\x07\x65nabled\")\n\x13\x41\x64\x64itionalResources\x12\x12\n\x04\x64isk\x18\x03 \x01(\rR\x04\x64isk\"\xb6\x02\n!DatabaseConfigurationAuditLogging\x12\x18\n\x07\x65nabled\x18\x01 \x01(\x08R\x07\x65nabled\x12J\n\x08rotation\x18\x02 \x01(\x0e\x32).qdrant.cloud.cluster.v1.AuditLogRotationH\x00R\x08rotation\x88\x01\x01\x12\x33\n\rmax_log_files\x18\x03 \x01(\rB\n\xbaH\x07*\x05\x18\xe8\x07(\x01H\x01R\x0bmaxLogFiles\x88\x01\x01\x12;\n\x17trust_forwarded_headers\x18\x04 \x01(\x08H\x02R\x15trustForwardedHeaders\x88\x01\x01\x42\x0b\n\t_rotationB\x10\n\x0e_max_log_filesB\x1a\n\x18_trust_forwarded_headers\"\xa4\n\n\nToleration\x12\x1f\n\x03key\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\xbd\x02H\x00R\x03key\x88\x01\x01\x12X\n\x08operator\x18\x02 \x01(\x0e\x32+.qdrant.cloud.cluster.v1.TolerationOperatorB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x01R\x08operator\x88\x01\x01\x12M\n\x05value\x18\x03 \x01(\tB2\xbaH/r-2+(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?H\x02R\x05value\x88\x01\x01\x12R\n\x06\x65\x66\x66\x65\x63t\x18\x04 \x01(\x0e\x32).qdrant.cloud.cluster.v1.TolerationEffectB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x03R\x06\x65\x66\x66\x65\x63t\x88\x01\x01\x12;\n\x12toleration_seconds\x18\x05 \x01(\x04\x42\x07\xbaH\x04\x32\x02(\x00H\x04R\x11tolerationSeconds\x88\x01\x01:\xf9\x06\xbaH\xf5\x06\x1at\n\x1btoleration.value_for_exists\x12-value must not be set when operator is Exists\x1a&this.operator != 1 || !has(this.value)\x1a\xae\x01\n\x1atoleration.value_for_equal\x12Qvalue must be set when operator is Equal (or is not set, which defaults to Equal)\x1a=(has(this.operator) && this.operator != 2) || has(this.value)\x1a\xa7\x02\n\"toleration.key_format_when_present\x12\x44key must be a valid Kubernetes qualified name when set and non-empty\x1a\xba\x01!has(this.key) || this.key == \'\' || this.key.matches(\'^([A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])?(\\\\.[A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])?)*\\\\/)?([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$\')\x1a\x8a\x01\n$toleration.key_empty_requires_exists\x12)operator must be \'Exists\' if key is empty\x1a\x37(has(this.key) && this.key != \'\') || this.operator == 1\x1a\x94\x01\n%toleration.seconds_only_for_noexecute\x12\x38tolerationSeconds is only valid when effect is NoExecute\x1a\x31!has(this.toleration_seconds) || this.effect == 3B\x06\n\x04_keyB\x0b\n\t_operatorB\x08\n\x06_valueB\t\n\x07_effectB\x15\n\x13_toleration_seconds\"\xee\x03\n\x1b\x43lusterStorageConfiguration\x12S\n\x11storage_tier_type\x18\x01 \x01(\x0e\x32\'.qdrant.cloud.common.v1.StorageTierTypeR\x0fstorageTierType\x12\x42\n\x16\x64\x61tabase_storage_class\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x14\x64\x61tabaseStorageClass\x88\x01\x01\x12\x42\n\x16snapshot_storage_class\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\x14snapshotStorageClass\x88\x01\x01\x12@\n\x15volume_snapshot_class\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x02R\x13volumeSnapshotClass\x88\x01\x01\x12\x44\n\x17volume_attributes_class\x18\x05 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x03R\x15volumeAttributesClass\x88\x01\x01\x42\x19\n\x17_database_storage_classB\x19\n\x17_snapshot_storage_classB\x18\n\x16_volume_snapshot_classB\x1a\n\x18_volume_attributes_class\"\xd3\x04\n\x0c\x43lusterState\x12!\n\x07version\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07version\x12\x19\n\x08nodes_up\x18\x02 \x01(\rR\x07nodesUp\x12=\n\x0crestarted_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0brestartedAt\x12\x45\n\x05phase\x18\x04 \x01(\x0e\x32%.qdrant.cloud.cluster.v1.ClusterPhaseB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05phase\x12\x16\n\x06reason\x18\x05 \x01(\tR\x06reason\x12L\n\x08\x65ndpoint\x18\x06 \x01(\x0b\x32(.qdrant.cloud.cluster.v1.ClusterEndpointB\x06\xbaH\x03\xc8\x01\x01R\x08\x65ndpoint\x12Z\n\tresources\x18\x07 \x01(\x0b\x32\x34.qdrant.cloud.cluster.v1.ClusterNodeResourcesSummaryB\x06\xbaH\x03\xc8\x01\x01R\tresources\x12\x62\n\x10scalability_info\x18\x08 \x01(\x0b\x32/.qdrant.cloud.cluster.v1.ClusterScalabilityInfoB\x06\xbaH\x03\xc8\x01\x01R\x0fscalabilityInfo\x12>\n\x05nodes\x18\t \x03(\x0b\x32(.qdrant.cloud.cluster.v1.ClusterNodeInfoR\x05nodes\x12\x19\n\x08jwt_rbac\x18\n \x01(\x08R\x07jwtRbac\"\xdc\x02\n\x0f\x43lusterNodeInfo\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04name\x12\x39\n\nstarted_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x18\n\x07version\x18\x03 \x01(\tR\x07version\x12\x44\n\x08\x65ndpoint\x18\x04 \x01(\x0b\x32(.qdrant.cloud.cluster.v1.ClusterEndpointR\x08\x65ndpoint\x12I\n\x05state\x18\n \x01(\x0e\x32).qdrant.cloud.cluster.v1.ClusterNodeStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12\x30\n\x11\x61vailability_zone\x18\x0b \x01(\tH\x00R\x10\x61vailabilityZone\x88\x01\x01\x42\x14\n\x12_availability_zone\"y\n\x0f\x43lusterEndpoint\x12\x1a\n\x03url\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x01R\x03url\x12$\n\trest_port\x18\x02 \x01(\x05\x42\x07\xbaH\x04\x1a\x02 \x00R\x08restPort\x12$\n\tgrpc_port\x18\x03 \x01(\x05\x42\x07\xbaH\x04\x1a\x02 \x00R\x08grpcPort\"\xc8\x02\n\x1b\x43lusterNodeResourcesSummary\x12I\n\x04\x64isk\x18\x01 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x04\x64isk\x12G\n\x03ram\x18\x02 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x03ram\x12G\n\x03\x63pu\x18\x03 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x03\x63pu\x12\x44\n\x03gpu\x18\x04 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesH\x00R\x03gpu\x88\x01\x01\x42\x06\n\x04_gpu\"\xfa\x01\n\x14\x43lusterNodeResources\x12\"\n\x04\x62\x61se\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x04\x62\x61se\x12\x34\n\rcomplimentary\x18\x02 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\rcomplimentary\x12.\n\nadditional\x18\x03 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\nadditional\x12*\n\x08reserved\x18\x04 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x08reserved\x12,\n\tavailable\x18\x05 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\tavailable\"\xa0\x01\n\x16\x43lusterScalabilityInfo\x12U\n\x06status\x18\x01 \x01(\x0e\x32\x31.qdrant.cloud.cluster.v1.ClusterScalabilityStatusB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x06status\x12$\n\x06reason\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x06reason\x88\x01\x01\x42\t\n\x07_reason\"\x93\x02\n\rQdrantRelease\x12!\n\x07version\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07version\x12\x18\n\x07\x64\x65\x66\x61ult\x18\x02 \x01(\x08R\x07\x64\x65\x66\x61ult\x12\x39\n\x11release_notes_url\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x01H\x00R\x0freleaseNotesUrl\x88\x01\x01\x12&\n\x07remarks\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\x07remarks\x88\x01\x01\x12\x1e\n\x0b\x65nd_of_life\x18\x05 \x01(\x08R\tendOfLife\x12 \n\x0bunavailable\x18\x06 \x01(\x08R\x0bunavailableB\x14\n\x12_release_notes_urlB\n\n\x08_remarks\"\xb0\x01\n\x1e\x43reateClusterFromBackupRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12%\n\tbackup_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x08\x62\x61\x63kupId\x12>\n\x0c\x63luster_name\x18\x03 \x01(\tB\x1b\xbaH\x18r\x16\x10\x04\x18@2\x10^[a-zA-Z0-9-_]+$R\x0b\x63lusterName\"e\n\x1f\x43reateClusterFromBackupResponse\x12\x42\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterB\x06\xbaH\x03\xc8\x01\x01R\x07\x63luster*\xab\x01\n\x12\x43lusterServiceType\x12$\n CLUSTER_SERVICE_TYPE_UNSPECIFIED\x10\x00\x12#\n\x1f\x43LUSTER_SERVICE_TYPE_CLUSTER_IP\x10\x01\x12\"\n\x1e\x43LUSTER_SERVICE_TYPE_NODE_PORT\x10\x02\x12&\n\"CLUSTER_SERVICE_TYPE_LOAD_BALANCER\x10\x03*\xa0\x01\n\x1b\x43lusterConfigurationGpuType\x12.\n*CLUSTER_CONFIGURATION_GPU_TYPE_UNSPECIFIED\x10\x00\x12)\n%CLUSTER_CONFIGURATION_GPU_TYPE_NVIDIA\x10\x01\x12&\n\"CLUSTER_CONFIGURATION_GPU_TYPE_AMD\x10\x02*\xf2\x01\n!ClusterConfigurationRestartPolicy\x12\x34\n0CLUSTER_CONFIGURATION_RESTART_POLICY_UNSPECIFIED\x10\x00\x12\x30\n,CLUSTER_CONFIGURATION_RESTART_POLICY_ROLLING\x10\x01\x12\x31\n-CLUSTER_CONFIGURATION_RESTART_POLICY_PARALLEL\x10\x02\x12\x32\n.CLUSTER_CONFIGURATION_RESTART_POLICY_AUTOMATIC\x10\x03*\x8e\x02\n%ClusterConfigurationRebalanceStrategy\x12\x38\n4CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_UNSPECIFIED\x10\x00\x12\x35\n1CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_COUNT\x10\x01\x12\x34\n0CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_SIZE\x10\x02\x12>\n:CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_COUNT_AND_SIZE\x10\x03*\xd5\x02\n\x1d\x44\x61tabaseConfigurationLogLevel\x12\x30\n,DATABASE_CONFIGURATION_LOG_LEVEL_UNSPECIFIED\x10\x00\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_TRACE\x10\x01\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_DEBUG\x10\x02\x12)\n%DATABASE_CONFIGURATION_LOG_LEVEL_INFO\x10\x03\x12)\n%DATABASE_CONFIGURATION_LOG_LEVEL_WARN\x10\x04\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_ERROR\x10\x05\x12(\n$DATABASE_CONFIGURATION_LOG_LEVEL_OFF\x10\x06*s\n\x10\x41uditLogRotation\x12\"\n\x1e\x41UDIT_LOG_ROTATION_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41UDIT_LOG_ROTATION_DAILY\x10\x01\x12\x1d\n\x19\x41UDIT_LOG_ROTATION_HOURLY\x10\x02*x\n\x12TolerationOperator\x12#\n\x1fTOLERATION_OPERATOR_UNSPECIFIED\x10\x00\x12\x1e\n\x1aTOLERATION_OPERATOR_EXISTS\x10\x01\x12\x1d\n\x19TOLERATION_OPERATOR_EQUAL\x10\x02*\xa4\x01\n\x10TolerationEffect\x12!\n\x1dTOLERATION_EFFECT_UNSPECIFIED\x10\x00\x12!\n\x1dTOLERATION_EFFECT_NO_SCHEDULE\x10\x01\x12(\n$TOLERATION_EFFECT_PREFER_NO_SCHEDULE\x10\x02\x12 \n\x1cTOLERATION_EFFECT_NO_EXECUTE\x10\x03*\xdf\x04\n\x0c\x43lusterPhase\x12\x1d\n\x19\x43LUSTER_PHASE_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43LUSTER_PHASE_CREATING\x10\x01\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_CREATE\x10\x02\x12\x1a\n\x16\x43LUSTER_PHASE_UPDATING\x10\x03\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_UPDATE\x10\x04\x12\x19\n\x15\x43LUSTER_PHASE_SCALING\x10\x05\x12\x1b\n\x17\x43LUSTER_PHASE_UPGRADING\x10\x06\x12\x1c\n\x18\x43LUSTER_PHASE_SUSPENDING\x10\x07\x12\x1b\n\x17\x43LUSTER_PHASE_SUSPENDED\x10\x08\x12#\n\x1f\x43LUSTER_PHASE_FAILED_TO_SUSPEND\x10\t\x12\x1a\n\x16\x43LUSTER_PHASE_RESUMING\x10\n\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_RESUME\x10\x0b\x12\x19\n\x15\x43LUSTER_PHASE_HEALTHY\x10\x0c\x12\x1b\n\x17\x43LUSTER_PHASE_NOT_READY\x10\r\x12\x1f\n\x1b\x43LUSTER_PHASE_RECOVERY_MODE\x10\x0e\x12$\n CLUSTER_PHASE_MANUAL_MAINTENANCE\x10\x0f\x12 \n\x1c\x43LUSTER_PHASE_FAILED_TO_SYNC\x10\x10\x12\x1b\n\x17\x43LUSTER_PHASE_NOT_FOUND\x10\x11\x12\x1a\n\x16\x43LUSTER_PHASE_DELETING\x10\x12*\xde\x01\n\x10\x43lusterNodeState\x12\"\n\x1e\x43LUSTER_NODE_STATE_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x43LUSTER_NODE_STATE_STARTING\x10\x01\x12\x1e\n\x1a\x43LUSTER_NODE_STATE_HEALTHY\x10\x02\x12 \n\x1c\x43LUSTER_NODE_STATE_UNHEALTHY\x10\x03\x12 \n\x1c\x43LUSTER_NODE_STATE_SUSPENDED\x10\x04\x12!\n\x1d\x43LUSTER_NODE_STATE_RECOVERING\x10\x05*\x9c\x01\n\x18\x43lusterScalabilityStatus\x12*\n&CLUSTER_SCALABILITY_STATUS_UNSPECIFIED\x10\x00\x12+\n\'CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE\x10\x01\x12\'\n#CLUSTER_SCALABILITY_STATUS_SCALABLE\x10\x02\x32\xcb\x1e\n\x0e\x43lusterService\x12\xb4\x01\n\x0cListClusters\x12,.qdrant.cloud.cluster.v1.ListClustersRequest\x1a-.qdrant.cloud.cluster.v1.ListClustersResponse\"G\x8a\xb5\x18\rread:clusters\x82\xd3\xe4\x93\x02\x30\x12./api/cluster/v1/accounts/{account_id}/clusters\x12\xd7\x01\n\nGetCluster\x12*.qdrant.cloud.cluster.v1.GetClusterRequest\x1a+.qdrant.cloud.cluster.v1.GetClusterResponse\"p\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02=\x12;/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}\x12\xd9\x02\n\rCreateCluster\x12-.qdrant.cloud.cluster.v1.CreateClusterRequest\x1a..qdrant.cloud.cluster.v1.CreateClusterResponse\"\xe8\x01\x8a\xb5\x18\x0ewrite:clusters\x92\xb5\x18\x12\x63luster.account_id\xba\xb5\x18\x1c\n\x0c\x63luster_name\x12\x0c\x63luster.name\xca\xf3\x18[\x08\x01\x12\x07\x63luster\"\x0fresp.cluster.id*=/accounts/{req.cluster.account_id}/clusters/{resp.cluster.id}\x82\xd3\xe4\x93\x02;\"6/api/cluster/v1/accounts/{cluster.account_id}/clusters:\x01*\x12\xb4\x03\n\x17\x43reateClusterFromBackup\x12\x37.qdrant.cloud.cluster.v1.CreateClusterFromBackupRequest\x1a\x38.qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse\"\xa5\x02\x8a\xb5\x18\x0frestore:backups\x8a\xb5\x18\x0ewrite:clusters\xa8\xb5\x18\x01\xba\xb5\x18\x16\n\tbackup_id\x12\tbackup_id\xba\xb5\x18\x1c\n\x0c\x63luster_name\x12\x0c\x63luster_name\xca\xf3\x18t\x08\x01\x12\x07\x63luster\"\x0fresp.cluster.id*5/accounts/{req.account_id}/clusters/{resp.cluster.id}R\x1f\n\x0e\x66rom_backup_id\x12\rreq.backup_id\x82\xd3\xe4\x93\x02\x44\"B/api/cluster/v1/accounts/{account_id}/backups/{backup_id}/clusters\x12\xe0\x02\n\rUpdateCluster\x12-.qdrant.cloud.cluster.v1.UpdateClusterRequest\x1a..qdrant.cloud.cluster.v1.UpdateClusterResponse\"\xef\x01\x8a\xb5\x18\x0ewrite:clusters\x92\xb5\x18\x12\x63luster.account_id\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster.id\xca\xf3\x18Y\x08\x02\x12\x07\x63luster\"\x0ereq.cluster.id*.qdrant.cloud.cluster.v1.ClusterConfigurationRebalanceStrategyB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x08R\x11rebalanceStrategy\x88\x01\x01\x12z\n\x1btopology_spread_constraints\x18\x19 \x03(\x0b\x32\x30.qdrant.cloud.common.v1.TopologySpreadConstraintB\x08\xbaH\x05\x92\x01\x02\x10\nR\x19topologySpreadConstraints\x12}\n\x1d\x63luster_storage_configuration\x18\x1a \x01(\x0b\x32\x34.qdrant.cloud.cluster.v1.ClusterStorageConfigurationH\tR\x1b\x63lusterStorageConfiguration\x88\x01\x01\x42\n\n\x08_versionB\x17\n\x15_additional_resourcesB\x19\n\x17_database_configurationB\x0f\n\r_service_typeB\x1a\n\x18_reserved_cpu_percentageB\x1d\n\x1b_reserved_memory_percentageB\x0b\n\t_gpu_typeB\x11\n\x0f_restart_policyB\x15\n\x13_rebalance_strategyB \n\x1e_cluster_storage_configuration\"\xf1\x05\n\x15\x44\x61tabaseConfiguration\x12]\n\ncollection\x18\x01 \x01(\x0b\x32\x38.qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionH\x00R\ncollection\x88\x01\x01\x12T\n\x07storage\x18\x02 \x01(\x0b\x32\x35.qdrant.cloud.cluster.v1.DatabaseConfigurationStorageH\x01R\x07storage\x88\x01\x01\x12T\n\x07service\x18\x03 \x01(\x0b\x32\x35.qdrant.cloud.cluster.v1.DatabaseConfigurationServiceH\x02R\x07service\x88\x01\x01\x12\x64\n\tlog_level\x18\x04 \x01(\x0e\x32\x36.qdrant.cloud.cluster.v1.DatabaseConfigurationLogLevelB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x03R\x08logLevel\x88\x01\x01\x12H\n\x03tls\x18\x05 \x01(\x0b\x32\x31.qdrant.cloud.cluster.v1.DatabaseConfigurationTlsH\x04R\x03tls\x88\x01\x01\x12Z\n\tinference\x18\x06 \x01(\x0b\x32\x37.qdrant.cloud.cluster.v1.DatabaseConfigurationInferenceH\x05R\tinference\x88\x01\x01\x12\x64\n\raudit_logging\x18\x07 \x01(\x0b\x32:.qdrant.cloud.cluster.v1.DatabaseConfigurationAuditLoggingH\x06R\x0c\x61uditLogging\x88\x01\x01\x42\r\n\x0b_collectionB\n\n\x08_storageB\n\n\x08_serviceB\x0c\n\n_log_levelB\x06\n\x04_tlsB\x0c\n\n_inferenceB\x10\n\x0e_audit_logging\"\xc6\x02\n\x1f\x44\x61tabaseConfigurationCollection\x12;\n\x12replication_factor\x18\x01 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x11replicationFactor\x88\x01\x01\x12\x46\n\x18write_consistency_factor\x18\x02 \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x01H\x01R\x16writeConsistencyFactor\x88\x01\x01\x12^\n\x07vectors\x18\x03 \x01(\x0b\x32?.qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionVectorsH\x02R\x07vectors\x88\x01\x01\x42\x15\n\x13_replication_factorB\x1b\n\x19_write_consistency_factorB\n\n\x08_vectors\"R\n&DatabaseConfigurationCollectionVectors\x12\x1c\n\x07on_disk\x18\x01 \x01(\x08H\x00R\x06onDisk\x88\x01\x01\x42\n\n\x08_on_disk\"\x97\x01\n\x1c\x44\x61tabaseConfigurationStorage\x12g\n\x0bperformance\x18\x01 \x01(\x0b\x32@.qdrant.cloud.cluster.v1.DatabaseConfigurationStoragePerformanceH\x00R\x0bperformance\x88\x01\x01\x42\x0e\n\x0c_performance\"\xb2\x01\n\'DatabaseConfigurationStoragePerformance\x12\x35\n\x14optimizer_cpu_budget\x18\x01 \x01(\x05H\x00R\x12optimizerCpuBudget\x88\x01\x01\x12&\n\x0c\x61sync_scorer\x18\x02 \x01(\x08H\x01R\x0b\x61syncScorer\x88\x01\x01\x42\x17\n\x15_optimizer_cpu_budgetB\x0f\n\r_async_scorer\"\x93\x02\n\x1c\x44\x61tabaseConfigurationService\x12\x42\n\x07\x61pi_key\x18\x01 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefH\x00R\x06\x61piKey\x88\x01\x01\x12T\n\x11read_only_api_key\x18\x02 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefH\x01R\x0ereadOnlyApiKey\x88\x01\x01\x12\"\n\nenable_tls\x18\x04 \x01(\x08H\x02R\tenableTls\x88\x01\x01\x42\n\n\x08_api_keyB\x14\n\x12_read_only_api_keyB\r\n\x0b_enable_tlsJ\x04\x08\x03\x10\x04\"\x9c\x01\n\x18\x44\x61tabaseConfigurationTls\x12@\n\x04\x63\x65rt\x18\x01 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefB\x06\xbaH\x03\xc8\x01\x01R\x04\x63\x65rt\x12>\n\x03key\x18\x02 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefB\x06\xbaH\x03\xc8\x01\x01R\x03key\":\n\x1e\x44\x61tabaseConfigurationInference\x12\x18\n\x07\x65nabled\x18\x01 \x01(\x08R\x07\x65nabled\")\n\x13\x41\x64\x64itionalResources\x12\x12\n\x04\x64isk\x18\x03 \x01(\rR\x04\x64isk\"\xb6\x02\n!DatabaseConfigurationAuditLogging\x12\x18\n\x07\x65nabled\x18\x01 \x01(\x08R\x07\x65nabled\x12J\n\x08rotation\x18\x02 \x01(\x0e\x32).qdrant.cloud.cluster.v1.AuditLogRotationH\x00R\x08rotation\x88\x01\x01\x12\x33\n\rmax_log_files\x18\x03 \x01(\rB\n\xbaH\x07*\x05\x18\xe8\x07(\x01H\x01R\x0bmaxLogFiles\x88\x01\x01\x12;\n\x17trust_forwarded_headers\x18\x04 \x01(\x08H\x02R\x15trustForwardedHeaders\x88\x01\x01\x42\x0b\n\t_rotationB\x10\n\x0e_max_log_filesB\x1a\n\x18_trust_forwarded_headers\"\xa4\n\n\nToleration\x12\x1f\n\x03key\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\xbd\x02H\x00R\x03key\x88\x01\x01\x12X\n\x08operator\x18\x02 \x01(\x0e\x32+.qdrant.cloud.cluster.v1.TolerationOperatorB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x01R\x08operator\x88\x01\x01\x12M\n\x05value\x18\x03 \x01(\tB2\xbaH/r-2+(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?H\x02R\x05value\x88\x01\x01\x12R\n\x06\x65\x66\x66\x65\x63t\x18\x04 \x01(\x0e\x32).qdrant.cloud.cluster.v1.TolerationEffectB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x03R\x06\x65\x66\x66\x65\x63t\x88\x01\x01\x12;\n\x12toleration_seconds\x18\x05 \x01(\x04\x42\x07\xbaH\x04\x32\x02(\x00H\x04R\x11tolerationSeconds\x88\x01\x01:\xf9\x06\xbaH\xf5\x06\x1at\n\x1btoleration.value_for_exists\x12-value must not be set when operator is Exists\x1a&this.operator != 1 || !has(this.value)\x1a\xae\x01\n\x1atoleration.value_for_equal\x12Qvalue must be set when operator is Equal (or is not set, which defaults to Equal)\x1a=(has(this.operator) && this.operator != 2) || has(this.value)\x1a\xa7\x02\n\"toleration.key_format_when_present\x12\x44key must be a valid Kubernetes qualified name when set and non-empty\x1a\xba\x01!has(this.key) || this.key == \'\' || this.key.matches(\'^([A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])?(\\\\.[A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])?)*\\\\/)?([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$\')\x1a\x8a\x01\n$toleration.key_empty_requires_exists\x12)operator must be \'Exists\' if key is empty\x1a\x37(has(this.key) && this.key != \'\') || this.operator == 1\x1a\x94\x01\n%toleration.seconds_only_for_noexecute\x12\x38tolerationSeconds is only valid when effect is NoExecute\x1a\x31!has(this.toleration_seconds) || this.effect == 3B\x06\n\x04_keyB\x0b\n\t_operatorB\x08\n\x06_valueB\t\n\x07_effectB\x15\n\x13_toleration_seconds\"\xee\x03\n\x1b\x43lusterStorageConfiguration\x12S\n\x11storage_tier_type\x18\x01 \x01(\x0e\x32\'.qdrant.cloud.common.v1.StorageTierTypeR\x0fstorageTierType\x12\x42\n\x16\x64\x61tabase_storage_class\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x14\x64\x61tabaseStorageClass\x88\x01\x01\x12\x42\n\x16snapshot_storage_class\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\x14snapshotStorageClass\x88\x01\x01\x12@\n\x15volume_snapshot_class\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x02R\x13volumeSnapshotClass\x88\x01\x01\x12\x44\n\x17volume_attributes_class\x18\x05 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x03R\x15volumeAttributesClass\x88\x01\x01\x42\x19\n\x17_database_storage_classB\x19\n\x17_snapshot_storage_classB\x18\n\x16_volume_snapshot_classB\x1a\n\x18_volume_attributes_class\"\xd3\x04\n\x0c\x43lusterState\x12!\n\x07version\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07version\x12\x19\n\x08nodes_up\x18\x02 \x01(\rR\x07nodesUp\x12=\n\x0crestarted_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0brestartedAt\x12\x45\n\x05phase\x18\x04 \x01(\x0e\x32%.qdrant.cloud.cluster.v1.ClusterPhaseB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05phase\x12\x16\n\x06reason\x18\x05 \x01(\tR\x06reason\x12L\n\x08\x65ndpoint\x18\x06 \x01(\x0b\x32(.qdrant.cloud.cluster.v1.ClusterEndpointB\x06\xbaH\x03\xc8\x01\x01R\x08\x65ndpoint\x12Z\n\tresources\x18\x07 \x01(\x0b\x32\x34.qdrant.cloud.cluster.v1.ClusterNodeResourcesSummaryB\x06\xbaH\x03\xc8\x01\x01R\tresources\x12\x62\n\x10scalability_info\x18\x08 \x01(\x0b\x32/.qdrant.cloud.cluster.v1.ClusterScalabilityInfoB\x06\xbaH\x03\xc8\x01\x01R\x0fscalabilityInfo\x12>\n\x05nodes\x18\t \x03(\x0b\x32(.qdrant.cloud.cluster.v1.ClusterNodeInfoR\x05nodes\x12\x19\n\x08jwt_rbac\x18\n \x01(\x08R\x07jwtRbac\"\xdc\x02\n\x0f\x43lusterNodeInfo\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04name\x12\x39\n\nstarted_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x18\n\x07version\x18\x03 \x01(\tR\x07version\x12\x44\n\x08\x65ndpoint\x18\x04 \x01(\x0b\x32(.qdrant.cloud.cluster.v1.ClusterEndpointR\x08\x65ndpoint\x12I\n\x05state\x18\n \x01(\x0e\x32).qdrant.cloud.cluster.v1.ClusterNodeStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12\x30\n\x11\x61vailability_zone\x18\x0b \x01(\tH\x00R\x10\x61vailabilityZone\x88\x01\x01\x42\x14\n\x12_availability_zone\"y\n\x0f\x43lusterEndpoint\x12\x1a\n\x03url\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x01R\x03url\x12$\n\trest_port\x18\x02 \x01(\x05\x42\x07\xbaH\x04\x1a\x02 \x00R\x08restPort\x12$\n\tgrpc_port\x18\x03 \x01(\x05\x42\x07\xbaH\x04\x1a\x02 \x00R\x08grpcPort\"\xa1\x03\n\x1b\x43lusterNodeResourcesSummary\x12I\n\x04\x64isk\x18\x01 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x04\x64isk\x12G\n\x03ram\x18\x02 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x03ram\x12G\n\x03\x63pu\x18\x03 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesB\x06\xbaH\x03\xc8\x01\x01R\x03\x63pu\x12\x44\n\x03gpu\x18\x04 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesH\x00R\x03gpu\x88\x01\x01\x12K\n\x07gpu_ram\x18\x05 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesH\x01R\x06gpuRam\x88\x01\x01\x42\x06\n\x04_gpuB\n\n\x08_gpu_ram\"\xfa\x01\n\x14\x43lusterNodeResources\x12\"\n\x04\x62\x61se\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x04\x62\x61se\x12\x34\n\rcomplimentary\x18\x02 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\rcomplimentary\x12.\n\nadditional\x18\x03 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\nadditional\x12*\n\x08reserved\x18\x04 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x08reserved\x12,\n\tavailable\x18\x05 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\tavailable\"\xa0\x01\n\x16\x43lusterScalabilityInfo\x12U\n\x06status\x18\x01 \x01(\x0e\x32\x31.qdrant.cloud.cluster.v1.ClusterScalabilityStatusB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x06status\x12$\n\x06reason\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x06reason\x88\x01\x01\x42\t\n\x07_reason\"\x93\x02\n\rQdrantRelease\x12!\n\x07version\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07version\x12\x18\n\x07\x64\x65\x66\x61ult\x18\x02 \x01(\x08R\x07\x64\x65\x66\x61ult\x12\x39\n\x11release_notes_url\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x01H\x00R\x0freleaseNotesUrl\x88\x01\x01\x12&\n\x07remarks\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x01R\x07remarks\x88\x01\x01\x12\x1e\n\x0b\x65nd_of_life\x18\x05 \x01(\x08R\tendOfLife\x12 \n\x0bunavailable\x18\x06 \x01(\x08R\x0bunavailableB\x14\n\x12_release_notes_urlB\n\n\x08_remarks\"\xb0\x01\n\x1e\x43reateClusterFromBackupRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12%\n\tbackup_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x08\x62\x61\x63kupId\x12>\n\x0c\x63luster_name\x18\x03 \x01(\tB\x1b\xbaH\x18r\x16\x10\x04\x18@2\x10^[a-zA-Z0-9-_]+$R\x0b\x63lusterName\"e\n\x1f\x43reateClusterFromBackupResponse\x12\x42\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterB\x06\xbaH\x03\xc8\x01\x01R\x07\x63luster*\xab\x01\n\x12\x43lusterServiceType\x12$\n CLUSTER_SERVICE_TYPE_UNSPECIFIED\x10\x00\x12#\n\x1f\x43LUSTER_SERVICE_TYPE_CLUSTER_IP\x10\x01\x12\"\n\x1e\x43LUSTER_SERVICE_TYPE_NODE_PORT\x10\x02\x12&\n\"CLUSTER_SERVICE_TYPE_LOAD_BALANCER\x10\x03*\xa0\x01\n\x1b\x43lusterConfigurationGpuType\x12.\n*CLUSTER_CONFIGURATION_GPU_TYPE_UNSPECIFIED\x10\x00\x12)\n%CLUSTER_CONFIGURATION_GPU_TYPE_NVIDIA\x10\x01\x12&\n\"CLUSTER_CONFIGURATION_GPU_TYPE_AMD\x10\x02*\xf2\x01\n!ClusterConfigurationRestartPolicy\x12\x34\n0CLUSTER_CONFIGURATION_RESTART_POLICY_UNSPECIFIED\x10\x00\x12\x30\n,CLUSTER_CONFIGURATION_RESTART_POLICY_ROLLING\x10\x01\x12\x31\n-CLUSTER_CONFIGURATION_RESTART_POLICY_PARALLEL\x10\x02\x12\x32\n.CLUSTER_CONFIGURATION_RESTART_POLICY_AUTOMATIC\x10\x03*\x8e\x02\n%ClusterConfigurationRebalanceStrategy\x12\x38\n4CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_UNSPECIFIED\x10\x00\x12\x35\n1CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_COUNT\x10\x01\x12\x34\n0CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_SIZE\x10\x02\x12>\n:CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_COUNT_AND_SIZE\x10\x03*\xd5\x02\n\x1d\x44\x61tabaseConfigurationLogLevel\x12\x30\n,DATABASE_CONFIGURATION_LOG_LEVEL_UNSPECIFIED\x10\x00\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_TRACE\x10\x01\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_DEBUG\x10\x02\x12)\n%DATABASE_CONFIGURATION_LOG_LEVEL_INFO\x10\x03\x12)\n%DATABASE_CONFIGURATION_LOG_LEVEL_WARN\x10\x04\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_ERROR\x10\x05\x12(\n$DATABASE_CONFIGURATION_LOG_LEVEL_OFF\x10\x06*s\n\x10\x41uditLogRotation\x12\"\n\x1e\x41UDIT_LOG_ROTATION_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41UDIT_LOG_ROTATION_DAILY\x10\x01\x12\x1d\n\x19\x41UDIT_LOG_ROTATION_HOURLY\x10\x02*x\n\x12TolerationOperator\x12#\n\x1fTOLERATION_OPERATOR_UNSPECIFIED\x10\x00\x12\x1e\n\x1aTOLERATION_OPERATOR_EXISTS\x10\x01\x12\x1d\n\x19TOLERATION_OPERATOR_EQUAL\x10\x02*\xa4\x01\n\x10TolerationEffect\x12!\n\x1dTOLERATION_EFFECT_UNSPECIFIED\x10\x00\x12!\n\x1dTOLERATION_EFFECT_NO_SCHEDULE\x10\x01\x12(\n$TOLERATION_EFFECT_PREFER_NO_SCHEDULE\x10\x02\x12 \n\x1cTOLERATION_EFFECT_NO_EXECUTE\x10\x03*\xdf\x04\n\x0c\x43lusterPhase\x12\x1d\n\x19\x43LUSTER_PHASE_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43LUSTER_PHASE_CREATING\x10\x01\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_CREATE\x10\x02\x12\x1a\n\x16\x43LUSTER_PHASE_UPDATING\x10\x03\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_UPDATE\x10\x04\x12\x19\n\x15\x43LUSTER_PHASE_SCALING\x10\x05\x12\x1b\n\x17\x43LUSTER_PHASE_UPGRADING\x10\x06\x12\x1c\n\x18\x43LUSTER_PHASE_SUSPENDING\x10\x07\x12\x1b\n\x17\x43LUSTER_PHASE_SUSPENDED\x10\x08\x12#\n\x1f\x43LUSTER_PHASE_FAILED_TO_SUSPEND\x10\t\x12\x1a\n\x16\x43LUSTER_PHASE_RESUMING\x10\n\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_RESUME\x10\x0b\x12\x19\n\x15\x43LUSTER_PHASE_HEALTHY\x10\x0c\x12\x1b\n\x17\x43LUSTER_PHASE_NOT_READY\x10\r\x12\x1f\n\x1b\x43LUSTER_PHASE_RECOVERY_MODE\x10\x0e\x12$\n CLUSTER_PHASE_MANUAL_MAINTENANCE\x10\x0f\x12 \n\x1c\x43LUSTER_PHASE_FAILED_TO_SYNC\x10\x10\x12\x1b\n\x17\x43LUSTER_PHASE_NOT_FOUND\x10\x11\x12\x1a\n\x16\x43LUSTER_PHASE_DELETING\x10\x12*\xde\x01\n\x10\x43lusterNodeState\x12\"\n\x1e\x43LUSTER_NODE_STATE_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x43LUSTER_NODE_STATE_STARTING\x10\x01\x12\x1e\n\x1a\x43LUSTER_NODE_STATE_HEALTHY\x10\x02\x12 \n\x1c\x43LUSTER_NODE_STATE_UNHEALTHY\x10\x03\x12 \n\x1c\x43LUSTER_NODE_STATE_SUSPENDED\x10\x04\x12!\n\x1d\x43LUSTER_NODE_STATE_RECOVERING\x10\x05*\x9c\x01\n\x18\x43lusterScalabilityStatus\x12*\n&CLUSTER_SCALABILITY_STATUS_UNSPECIFIED\x10\x00\x12+\n\'CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE\x10\x01\x12\'\n#CLUSTER_SCALABILITY_STATUS_SCALABLE\x10\x02\x32\xcb\x1e\n\x0e\x43lusterService\x12\xb4\x01\n\x0cListClusters\x12,.qdrant.cloud.cluster.v1.ListClustersRequest\x1a-.qdrant.cloud.cluster.v1.ListClustersResponse\"G\x8a\xb5\x18\rread:clusters\x82\xd3\xe4\x93\x02\x30\x12./api/cluster/v1/accounts/{account_id}/clusters\x12\xd7\x01\n\nGetCluster\x12*.qdrant.cloud.cluster.v1.GetClusterRequest\x1a+.qdrant.cloud.cluster.v1.GetClusterResponse\"p\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02=\x12;/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}\x12\xd9\x02\n\rCreateCluster\x12-.qdrant.cloud.cluster.v1.CreateClusterRequest\x1a..qdrant.cloud.cluster.v1.CreateClusterResponse\"\xe8\x01\x8a\xb5\x18\x0ewrite:clusters\x92\xb5\x18\x12\x63luster.account_id\xba\xb5\x18\x1c\n\x0c\x63luster_name\x12\x0c\x63luster.name\xca\xf3\x18[\x08\x01\x12\x07\x63luster\"\x0fresp.cluster.id*=/accounts/{req.cluster.account_id}/clusters/{resp.cluster.id}\x82\xd3\xe4\x93\x02;\"6/api/cluster/v1/accounts/{cluster.account_id}/clusters:\x01*\x12\xb4\x03\n\x17\x43reateClusterFromBackup\x12\x37.qdrant.cloud.cluster.v1.CreateClusterFromBackupRequest\x1a\x38.qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse\"\xa5\x02\x8a\xb5\x18\x0frestore:backups\x8a\xb5\x18\x0ewrite:clusters\xa8\xb5\x18\x01\xba\xb5\x18\x16\n\tbackup_id\x12\tbackup_id\xba\xb5\x18\x1c\n\x0c\x63luster_name\x12\x0c\x63luster_name\xca\xf3\x18t\x08\x01\x12\x07\x63luster\"\x0fresp.cluster.id*5/accounts/{req.account_id}/clusters/{resp.cluster.id}R\x1f\n\x0e\x66rom_backup_id\x12\rreq.backup_id\x82\xd3\xe4\x93\x02\x44\"B/api/cluster/v1/accounts/{account_id}/backups/{backup_id}/clusters\x12\xe0\x02\n\rUpdateCluster\x12-.qdrant.cloud.cluster.v1.UpdateClusterRequest\x1a..qdrant.cloud.cluster.v1.UpdateClusterResponse\"\xef\x01\x8a\xb5\x18\x0ewrite:clusters\x92\xb5\x18\x12\x63luster.account_id\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster.id\xca\xf3\x18Y\x08\x02\x12\x07\x63luster\"\x0ereq.cluster.id* None: ... class ClusterNodeResourcesSummary(_message.Message): - __slots__ = ("disk", "ram", "cpu", "gpu") + __slots__ = ("disk", "ram", "cpu", "gpu", "gpu_ram") DISK_FIELD_NUMBER: _ClassVar[int] RAM_FIELD_NUMBER: _ClassVar[int] CPU_FIELD_NUMBER: _ClassVar[int] GPU_FIELD_NUMBER: _ClassVar[int] + GPU_RAM_FIELD_NUMBER: _ClassVar[int] disk: ClusterNodeResources ram: ClusterNodeResources cpu: ClusterNodeResources gpu: ClusterNodeResources - def __init__(self, disk: _Optional[_Union[ClusterNodeResources, _Mapping]] = ..., ram: _Optional[_Union[ClusterNodeResources, _Mapping]] = ..., cpu: _Optional[_Union[ClusterNodeResources, _Mapping]] = ..., gpu: _Optional[_Union[ClusterNodeResources, _Mapping]] = ...) -> None: ... + gpu_ram: ClusterNodeResources + def __init__(self, disk: _Optional[_Union[ClusterNodeResources, _Mapping]] = ..., ram: _Optional[_Union[ClusterNodeResources, _Mapping]] = ..., cpu: _Optional[_Union[ClusterNodeResources, _Mapping]] = ..., gpu: _Optional[_Union[ClusterNodeResources, _Mapping]] = ..., gpu_ram: _Optional[_Union[ClusterNodeResources, _Mapping]] = ...) -> None: ... class ClusterNodeResources(_message.Message): __slots__ = ("base", "complimentary", "additional", "reserved", "available") diff --git a/gen/python/qdrant/cloud/monitoring/v1/monitoring_pb2.py b/gen/python/qdrant/cloud/monitoring/v1/monitoring_pb2.py index 2d2ba57d..1c0455f8 100644 --- a/gen/python/qdrant/cloud/monitoring/v1/monitoring_pb2.py +++ b/gen/python/qdrant/cloud/monitoring/v1/monitoring_pb2.py @@ -29,7 +29,7 @@ from qdrant.cloud.common.v1 import common_pb2 as qdrant_dot_cloud_dot_common_dot_v1_dot_common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+qdrant/cloud/monitoring/v1/monitoring.proto\x12\x1aqdrant.cloud.monitoring.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#qdrant/cloud/common/v1/common.proto\"s\n\x1fGetClusterSummaryMetricsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"h\n GetClusterSummaryMetricsResponse\x12\x44\n\x05nodes\x18\x01 \x03(\x0b\x32..qdrant.cloud.monitoring.v1.ClusterNodeMetricsR\x05nodes\"\xeb\x03\n\x1dGetClusterUsageMetricsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12\x35\n\x05since\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x05since\x88\x01\x01\x12\x35\n\x05until\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x05until\x88\x01\x01\x12W\n\naggregator\x18\x05 \x01(\x0e\x32&.qdrant.cloud.monitoring.v1.AggregatorB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x02R\naggregator\x88\x01\x01:\x8d\x01\xbaH\x89\x01\x1a\x86\x01\n(get_cluster_usage_metrics.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\x08\n\x06_sinceB\x08\n\x06_untilB\r\n\x0b_aggregator\"\xcb\x04\n\x1eGetClusterUsageMetricsResponse\x12\x34\n\x03\x63pu\x18\x01 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03\x63pu\x12\x34\n\x03ram\x18\x02 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03ram\x12?\n\tram_cache\x18\x03 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x08ramCache\x12;\n\x07ram_rss\x18\x04 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x06ramRss\x12H\n\x0eram_qdrant_rss\x18\x05 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x0cramQdrantRss\x12\x36\n\x04\x64isk\x18\x06 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x04\x64isk\x12\x34\n\x03rps\x18\x07 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03rps\x12<\n\x07latency\x18\x08 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x07latency\x12I\n\x05nodes\x18\t \x03(\x0b\x32\x33.qdrant.cloud.monitoring.v1.ClusterNodeUsageMetricsR\x05nodes\"\xf0\x02\n\x15GetClusterLogsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12\x35\n\x05since\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x05since\x88\x01\x01\x12\x35\n\x05until\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x05until\x88\x01\x01:\x82\x01\xbaH\x7f\x1a}\n\x1fget_cluster_logs.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\x08\n\x06_sinceB\x08\n\x06_until\"T\n\x16GetClusterLogsResponse\x12:\n\x05items\x18\x01 \x03(\x0b\x32$.qdrant.cloud.monitoring.v1.LogEntryR\x05items\"\xf5\x02\n\x17GetClusterEventsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12\x35\n\x05since\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x05since\x88\x01\x01\x12\x35\n\x05until\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x05until\x88\x01\x01:\x85\x01\xbaH\x81\x01\x1a\x7f\n!get_cluster_events.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\x08\n\x06_sinceB\x08\n\x06_until\"V\n\x18GetClusterEventsResponse\x12:\n\x05items\x18\x01 \x03(\x0b\x32$.qdrant.cloud.monitoring.v1.LogEntryR\x05items\"\xce\x04\n!GetClusterInferenceMetricsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12\x35\n\x05since\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x05since\x88\x01\x01\x12\x35\n\x05until\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x05until\x88\x01\x01\x12\x61\n\x08interval\x18\x05 \x01(\x0e\x32\x34.qdrant.cloud.monitoring.v1.InferenceMetricsIntervalB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x02R\x08interval\x88\x01\x01\x12:\n\x12inference_model_id\x18\x06 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x03R\x10inferenceModelId\x88\x01\x01:\x91\x01\xbaH\x8d\x01\x1a\x8a\x01\n,get_cluster_inference_metrics.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\x08\n\x06_sinceB\x08\n\x06_untilB\x0b\n\t_intervalB\x15\n\x13_inference_model_id\"v\n\"GetClusterInferenceMetricsResponse\x12P\n\x06models\x18\x01 \x03(\x0b\x32\x38.qdrant.cloud.monitoring.v1.ClusterInferenceModelMetricsR\x06models\"\x91\x01\n\x1c\x43lusterInferenceModelMetrics\x12\x35\n\x12inference_model_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x10inferenceModelId\x12:\n\x06values\x18\x02 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x06values\"\xac\x04\n\x12\x43lusterNodeMetrics\x12 \n\x07node_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06nodeId\x12K\n\x03\x63pu\x18\x02 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x03\x63pu\x12K\n\x03ram\x18\x03 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x03ram\x12V\n\tram_cache\x18\x04 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x08ramCache\x12R\n\x07ram_rss\x18\x05 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x06ramRss\x12_\n\x0eram_qdrant_rss\x18\x06 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x0cramQdrantRss\x12M\n\x04\x64isk\x18\x07 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x04\x64isk\"\x9f\x01\n\x15\x43lusterMetricOverview\x12=\n\x03\x61vg\x18\x01 \x03(\x0b\x32+.qdrant.cloud.monitoring.v1.IntervalAverageR\x03\x61vg\x12G\n\x05total\x18\x02 \x01(\x0b\x32).qdrant.cloud.monitoring.v1.ResourceValueB\x06\xbaH\x03\xc8\x01\x01R\x05total\"v\n\x0fIntervalAverage\x12=\n\x08interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x06\xbaH\x03\xc8\x01\x01R\x08interval\x12$\n\x05value\x18\x02 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\"R\n\rResourceValue\x12$\n\x05value\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\x12\x1b\n\x04unit\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04unit\"\xa7\x03\n\x17\x43lusterNodeUsageMetrics\x12 \n\x07node_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06nodeId\x12\x34\n\x03\x63pu\x18\x02 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03\x63pu\x12\x34\n\x03ram\x18\x03 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03ram\x12?\n\tram_cache\x18\x04 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x08ramCache\x12;\n\x07ram_rss\x18\x05 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x06ramRss\x12H\n\x0eram_qdrant_rss\x18\x06 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x0cramQdrantRss\x12\x36\n\x04\x64isk\x18\x07 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x04\x64isk\"p\n\x06Metric\x12@\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\ttimestamp\x12$\n\x05value\x18\x02 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\"o\n\x08LogEntry\x12@\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\ttimestamp\x12!\n\x07message\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07message*x\n\nAggregator\x12\x1a\n\x16\x41GGREGATOR_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x41GGREGATOR_SUM\x10\x01\x12\x12\n\x0e\x41GGREGATOR_AVG\x10\x02\x12\x12\n\x0e\x41GGREGATOR_MAX\x10\x03\x12\x12\n\x0e\x41GGREGATOR_MIN\x10\x04*\xb5\x01\n\x18InferenceMetricsInterval\x12*\n&INFERENCE_METRICS_INTERVAL_UNSPECIFIED\x10\x00\x12\"\n\x1eINFERENCE_METRICS_INTERVAL_DAY\x10\x01\x12#\n\x1fINFERENCE_METRICS_INTERVAL_WEEK\x10\x02\x12$\n INFERENCE_METRICS_INTERVAL_MONTH\x10\x03\x32\xe0\n\n\x11MonitoringService\x12\x9a\x02\n\x18GetClusterSummaryMetrics\x12;.qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsRequest\x1a<.qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsResponse\"\x82\x01\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02O\x12M/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/summary-metrics\x12\x92\x02\n\x16GetClusterUsageMetrics\x12\x39.qdrant.cloud.monitoring.v1.GetClusterUsageMetricsRequest\x1a:.qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse\"\x80\x01\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02M\x12K/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/usage-metrics\x12\xf0\x01\n\x0eGetClusterLogs\x12\x31.qdrant.cloud.monitoring.v1.GetClusterLogsRequest\x1a\x32.qdrant.cloud.monitoring.v1.GetClusterLogsResponse\"w\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02\x44\x12\x42/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/logs\x12\xf8\x01\n\x10GetClusterEvents\x12\x33.qdrant.cloud.monitoring.v1.GetClusterEventsRequest\x1a\x34.qdrant.cloud.monitoring.v1.GetClusterEventsResponse\"y\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02\x46\x12\x44/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/events\x12\xa2\x02\n\x1aGetClusterInferenceMetrics\x12=.qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest\x1a>.qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsResponse\"\x84\x01\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02Q\x12O/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/metrics/inference\x1a\x06\xc2\xb5\x18\x02\x08\x01\x42\x96\x02\n\x1e\x63om.qdrant.cloud.monitoring.v1B\x0fMonitoringProtoP\x01ZXgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/monitoring/v1;monitoringv1\xa2\x02\x03QCM\xaa\x02\x1aQdrant.Cloud.Monitoring.V1\xca\x02\x1aQdrant\\Cloud\\Monitoring\\V1\xe2\x02&Qdrant\\Cloud\\Monitoring\\V1\\GPBMetadata\xea\x02\x1dQdrant::Cloud::Monitoring::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+qdrant/cloud/monitoring/v1/monitoring.proto\x12\x1aqdrant.cloud.monitoring.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#qdrant/cloud/common/v1/common.proto\"s\n\x1fGetClusterSummaryMetricsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"h\n GetClusterSummaryMetricsResponse\x12\x44\n\x05nodes\x18\x01 \x03(\x0b\x32..qdrant.cloud.monitoring.v1.ClusterNodeMetricsR\x05nodes\"\xeb\x03\n\x1dGetClusterUsageMetricsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12\x35\n\x05since\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x05since\x88\x01\x01\x12\x35\n\x05until\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x05until\x88\x01\x01\x12W\n\naggregator\x18\x05 \x01(\x0e\x32&.qdrant.cloud.monitoring.v1.AggregatorB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x02R\naggregator\x88\x01\x01:\x8d\x01\xbaH\x89\x01\x1a\x86\x01\n(get_cluster_usage_metrics.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\x08\n\x06_sinceB\x08\n\x06_untilB\r\n\x0b_aggregator\"\xbe\x05\n\x1eGetClusterUsageMetricsResponse\x12\x34\n\x03\x63pu\x18\x01 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03\x63pu\x12\x34\n\x03ram\x18\x02 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03ram\x12?\n\tram_cache\x18\x03 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x08ramCache\x12;\n\x07ram_rss\x18\x04 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x06ramRss\x12H\n\x0eram_qdrant_rss\x18\x05 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x0cramQdrantRss\x12\x36\n\x04\x64isk\x18\x06 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x04\x64isk\x12\x34\n\x03rps\x18\x07 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03rps\x12<\n\x07latency\x18\x08 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x07latency\x12I\n\x05nodes\x18\t \x03(\x0b\x32\x33.qdrant.cloud.monitoring.v1.ClusterNodeUsageMetricsR\x05nodes\x12\x34\n\x03gpu\x18\n \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03gpu\x12;\n\x07gpu_ram\x18\x0b \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x06gpuRam\"\xf0\x02\n\x15GetClusterLogsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12\x35\n\x05since\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x05since\x88\x01\x01\x12\x35\n\x05until\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x05until\x88\x01\x01:\x82\x01\xbaH\x7f\x1a}\n\x1fget_cluster_logs.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\x08\n\x06_sinceB\x08\n\x06_until\"T\n\x16GetClusterLogsResponse\x12:\n\x05items\x18\x01 \x03(\x0b\x32$.qdrant.cloud.monitoring.v1.LogEntryR\x05items\"\xf5\x02\n\x17GetClusterEventsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12\x35\n\x05since\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x05since\x88\x01\x01\x12\x35\n\x05until\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x05until\x88\x01\x01:\x85\x01\xbaH\x81\x01\x1a\x7f\n!get_cluster_events.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\x08\n\x06_sinceB\x08\n\x06_until\"V\n\x18GetClusterEventsResponse\x12:\n\x05items\x18\x01 \x03(\x0b\x32$.qdrant.cloud.monitoring.v1.LogEntryR\x05items\"\xce\x04\n!GetClusterInferenceMetricsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12\x35\n\x05since\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x05since\x88\x01\x01\x12\x35\n\x05until\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x05until\x88\x01\x01\x12\x61\n\x08interval\x18\x05 \x01(\x0e\x32\x34.qdrant.cloud.monitoring.v1.InferenceMetricsIntervalB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00H\x02R\x08interval\x88\x01\x01\x12:\n\x12inference_model_id\x18\x06 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x03R\x10inferenceModelId\x88\x01\x01:\x91\x01\xbaH\x8d\x01\x1a\x8a\x01\n,get_cluster_inference_metrics.until_gt_since\x12\x19until must be after since\x1a?!has(this.since) || !has(this.until) || this.until > this.sinceB\x08\n\x06_sinceB\x08\n\x06_untilB\x0b\n\t_intervalB\x15\n\x13_inference_model_id\"v\n\"GetClusterInferenceMetricsResponse\x12P\n\x06models\x18\x01 \x03(\x0b\x32\x38.qdrant.cloud.monitoring.v1.ClusterInferenceModelMetricsR\x06models\"\x91\x01\n\x1c\x43lusterInferenceModelMetrics\x12\x35\n\x12inference_model_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x10inferenceModelId\x12:\n\x06values\x18\x02 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x06values\"\xeb\x05\n\x12\x43lusterNodeMetrics\x12 \n\x07node_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06nodeId\x12K\n\x03\x63pu\x18\x02 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x03\x63pu\x12K\n\x03ram\x18\x03 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x03ram\x12V\n\tram_cache\x18\x04 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x08ramCache\x12R\n\x07ram_rss\x18\x05 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x06ramRss\x12_\n\x0eram_qdrant_rss\x18\x06 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x0cramQdrantRss\x12M\n\x04\x64isk\x18\x07 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x01R\x04\x64isk\x12P\n\x03gpu\x18\x08 \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x00H\x00R\x03gpu\x88\x01\x01\x12W\n\x07gpu_ram\x18\t \x01(\x0b\x32\x31.qdrant.cloud.monitoring.v1.ClusterMetricOverviewB\x06\xbaH\x03\xc8\x01\x00H\x01R\x06gpuRam\x88\x01\x01\x42\x06\n\x04_gpuB\n\n\x08_gpu_ram\"\x9f\x01\n\x15\x43lusterMetricOverview\x12=\n\x03\x61vg\x18\x01 \x03(\x0b\x32+.qdrant.cloud.monitoring.v1.IntervalAverageR\x03\x61vg\x12G\n\x05total\x18\x02 \x01(\x0b\x32).qdrant.cloud.monitoring.v1.ResourceValueB\x06\xbaH\x03\xc8\x01\x01R\x05total\"v\n\x0fIntervalAverage\x12=\n\x08interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x06\xbaH\x03\xc8\x01\x01R\x08interval\x12$\n\x05value\x18\x02 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\"R\n\rResourceValue\x12$\n\x05value\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\x12\x1b\n\x04unit\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04unit\"\x9a\x04\n\x17\x43lusterNodeUsageMetrics\x12 \n\x07node_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06nodeId\x12\x34\n\x03\x63pu\x18\x02 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03\x63pu\x12\x34\n\x03ram\x18\x03 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03ram\x12?\n\tram_cache\x18\x04 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x08ramCache\x12;\n\x07ram_rss\x18\x05 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x06ramRss\x12H\n\x0eram_qdrant_rss\x18\x06 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x0cramQdrantRss\x12\x36\n\x04\x64isk\x18\x07 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x04\x64isk\x12\x34\n\x03gpu\x18\x08 \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x03gpu\x12;\n\x07gpu_ram\x18\t \x03(\x0b\x32\".qdrant.cloud.monitoring.v1.MetricR\x06gpuRam\"p\n\x06Metric\x12@\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\ttimestamp\x12$\n\x05value\x18\x02 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00R\x05value\"o\n\x08LogEntry\x12@\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\ttimestamp\x12!\n\x07message\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07message*x\n\nAggregator\x12\x1a\n\x16\x41GGREGATOR_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x41GGREGATOR_SUM\x10\x01\x12\x12\n\x0e\x41GGREGATOR_AVG\x10\x02\x12\x12\n\x0e\x41GGREGATOR_MAX\x10\x03\x12\x12\n\x0e\x41GGREGATOR_MIN\x10\x04*\xb5\x01\n\x18InferenceMetricsInterval\x12*\n&INFERENCE_METRICS_INTERVAL_UNSPECIFIED\x10\x00\x12\"\n\x1eINFERENCE_METRICS_INTERVAL_DAY\x10\x01\x12#\n\x1fINFERENCE_METRICS_INTERVAL_WEEK\x10\x02\x12$\n INFERENCE_METRICS_INTERVAL_MONTH\x10\x03\x32\xe0\n\n\x11MonitoringService\x12\x9a\x02\n\x18GetClusterSummaryMetrics\x12;.qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsRequest\x1a<.qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsResponse\"\x82\x01\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02O\x12M/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/summary-metrics\x12\x92\x02\n\x16GetClusterUsageMetrics\x12\x39.qdrant.cloud.monitoring.v1.GetClusterUsageMetricsRequest\x1a:.qdrant.cloud.monitoring.v1.GetClusterUsageMetricsResponse\"\x80\x01\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02M\x12K/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/usage-metrics\x12\xf0\x01\n\x0eGetClusterLogs\x12\x31.qdrant.cloud.monitoring.v1.GetClusterLogsRequest\x1a\x32.qdrant.cloud.monitoring.v1.GetClusterLogsResponse\"w\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02\x44\x12\x42/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/logs\x12\xf8\x01\n\x10GetClusterEvents\x12\x33.qdrant.cloud.monitoring.v1.GetClusterEventsRequest\x1a\x34.qdrant.cloud.monitoring.v1.GetClusterEventsResponse\"y\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02\x46\x12\x44/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/events\x12\xa2\x02\n\x1aGetClusterInferenceMetrics\x12=.qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsRequest\x1a>.qdrant.cloud.monitoring.v1.GetClusterInferenceMetricsResponse\"\x84\x01\x8a\xb5\x18\rread:clusters\xba\xb5\x18\x18\n\ncluster_id\x12\ncluster_id\x82\xd3\xe4\x93\x02Q\x12O/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/metrics/inference\x1a\x06\xc2\xb5\x18\x02\x08\x01\x42\x96\x02\n\x1e\x63om.qdrant.cloud.monitoring.v1B\x0fMonitoringProtoP\x01ZXgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/monitoring/v1;monitoringv1\xa2\x02\x03QCM\xaa\x02\x1aQdrant.Cloud.Monitoring.V1\xca\x02\x1aQdrant\\Cloud\\Monitoring\\V1\xe2\x02&Qdrant\\Cloud\\Monitoring\\V1\\GPBMetadata\xea\x02\x1dQdrant::Cloud::Monitoring::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -87,6 +87,10 @@ _globals['_CLUSTERNODEMETRICS'].fields_by_name['ram_qdrant_rss']._serialized_options = b'\272H\003\310\001\001' _globals['_CLUSTERNODEMETRICS'].fields_by_name['disk']._loaded_options = None _globals['_CLUSTERNODEMETRICS'].fields_by_name['disk']._serialized_options = b'\272H\003\310\001\001' + _globals['_CLUSTERNODEMETRICS'].fields_by_name['gpu']._loaded_options = None + _globals['_CLUSTERNODEMETRICS'].fields_by_name['gpu']._serialized_options = b'\272H\003\310\001\000' + _globals['_CLUSTERNODEMETRICS'].fields_by_name['gpu_ram']._loaded_options = None + _globals['_CLUSTERNODEMETRICS'].fields_by_name['gpu_ram']._serialized_options = b'\272H\003\310\001\000' _globals['_CLUSTERMETRICOVERVIEW'].fields_by_name['total']._loaded_options = None _globals['_CLUSTERMETRICOVERVIEW'].fields_by_name['total']._serialized_options = b'\272H\003\310\001\001' _globals['_INTERVALAVERAGE'].fields_by_name['interval']._loaded_options = None @@ -119,10 +123,10 @@ _globals['_MONITORINGSERVICE'].methods_by_name['GetClusterEvents']._serialized_options = b'\212\265\030\rread:clusters\272\265\030\030\n\ncluster_id\022\ncluster_id\202\323\344\223\002F\022D/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/events' _globals['_MONITORINGSERVICE'].methods_by_name['GetClusterInferenceMetrics']._loaded_options = None _globals['_MONITORINGSERVICE'].methods_by_name['GetClusterInferenceMetrics']._serialized_options = b'\212\265\030\rread:clusters\272\265\030\030\n\ncluster_id\022\ncluster_id\202\323\344\223\002Q\022O/api/monitoring/v1/accounts/{account_id}/cluster/{cluster_id}/metrics/inference' - _globals['_AGGREGATOR']._serialized_start=4903 - _globals['_AGGREGATOR']._serialized_end=5023 - _globals['_INFERENCEMETRICSINTERVAL']._serialized_start=5026 - _globals['_INFERENCEMETRICSINTERVAL']._serialized_end=5207 + _globals['_AGGREGATOR']._serialized_start=5324 + _globals['_AGGREGATOR']._serialized_end=5444 + _globals['_INFERENCEMETRICSINTERVAL']._serialized_start=5447 + _globals['_INFERENCEMETRICSINTERVAL']._serialized_end=5628 _globals['_GETCLUSTERSUMMARYMETRICSREQUEST']._serialized_start=236 _globals['_GETCLUSTERSUMMARYMETRICSREQUEST']._serialized_end=351 _globals['_GETCLUSTERSUMMARYMETRICSRESPONSE']._serialized_start=353 @@ -130,35 +134,35 @@ _globals['_GETCLUSTERUSAGEMETRICSREQUEST']._serialized_start=460 _globals['_GETCLUSTERUSAGEMETRICSREQUEST']._serialized_end=951 _globals['_GETCLUSTERUSAGEMETRICSRESPONSE']._serialized_start=954 - _globals['_GETCLUSTERUSAGEMETRICSRESPONSE']._serialized_end=1541 - _globals['_GETCLUSTERLOGSREQUEST']._serialized_start=1544 - _globals['_GETCLUSTERLOGSREQUEST']._serialized_end=1912 - _globals['_GETCLUSTERLOGSRESPONSE']._serialized_start=1914 - _globals['_GETCLUSTERLOGSRESPONSE']._serialized_end=1998 - _globals['_GETCLUSTEREVENTSREQUEST']._serialized_start=2001 - _globals['_GETCLUSTEREVENTSREQUEST']._serialized_end=2374 - _globals['_GETCLUSTEREVENTSRESPONSE']._serialized_start=2376 - _globals['_GETCLUSTEREVENTSRESPONSE']._serialized_end=2462 - _globals['_GETCLUSTERINFERENCEMETRICSREQUEST']._serialized_start=2465 - _globals['_GETCLUSTERINFERENCEMETRICSREQUEST']._serialized_end=3055 - _globals['_GETCLUSTERINFERENCEMETRICSRESPONSE']._serialized_start=3057 - _globals['_GETCLUSTERINFERENCEMETRICSRESPONSE']._serialized_end=3175 - _globals['_CLUSTERINFERENCEMODELMETRICS']._serialized_start=3178 - _globals['_CLUSTERINFERENCEMODELMETRICS']._serialized_end=3323 - _globals['_CLUSTERNODEMETRICS']._serialized_start=3326 - _globals['_CLUSTERNODEMETRICS']._serialized_end=3882 - _globals['_CLUSTERMETRICOVERVIEW']._serialized_start=3885 - _globals['_CLUSTERMETRICOVERVIEW']._serialized_end=4044 - _globals['_INTERVALAVERAGE']._serialized_start=4046 - _globals['_INTERVALAVERAGE']._serialized_end=4164 - _globals['_RESOURCEVALUE']._serialized_start=4166 - _globals['_RESOURCEVALUE']._serialized_end=4248 - _globals['_CLUSTERNODEUSAGEMETRICS']._serialized_start=4251 - _globals['_CLUSTERNODEUSAGEMETRICS']._serialized_end=4674 - _globals['_METRIC']._serialized_start=4676 - _globals['_METRIC']._serialized_end=4788 - _globals['_LOGENTRY']._serialized_start=4790 - _globals['_LOGENTRY']._serialized_end=4901 - _globals['_MONITORINGSERVICE']._serialized_start=5210 - _globals['_MONITORINGSERVICE']._serialized_end=6586 + _globals['_GETCLUSTERUSAGEMETRICSRESPONSE']._serialized_end=1656 + _globals['_GETCLUSTERLOGSREQUEST']._serialized_start=1659 + _globals['_GETCLUSTERLOGSREQUEST']._serialized_end=2027 + _globals['_GETCLUSTERLOGSRESPONSE']._serialized_start=2029 + _globals['_GETCLUSTERLOGSRESPONSE']._serialized_end=2113 + _globals['_GETCLUSTEREVENTSREQUEST']._serialized_start=2116 + _globals['_GETCLUSTEREVENTSREQUEST']._serialized_end=2489 + _globals['_GETCLUSTEREVENTSRESPONSE']._serialized_start=2491 + _globals['_GETCLUSTEREVENTSRESPONSE']._serialized_end=2577 + _globals['_GETCLUSTERINFERENCEMETRICSREQUEST']._serialized_start=2580 + _globals['_GETCLUSTERINFERENCEMETRICSREQUEST']._serialized_end=3170 + _globals['_GETCLUSTERINFERENCEMETRICSRESPONSE']._serialized_start=3172 + _globals['_GETCLUSTERINFERENCEMETRICSRESPONSE']._serialized_end=3290 + _globals['_CLUSTERINFERENCEMODELMETRICS']._serialized_start=3293 + _globals['_CLUSTERINFERENCEMODELMETRICS']._serialized_end=3438 + _globals['_CLUSTERNODEMETRICS']._serialized_start=3441 + _globals['_CLUSTERNODEMETRICS']._serialized_end=4188 + _globals['_CLUSTERMETRICOVERVIEW']._serialized_start=4191 + _globals['_CLUSTERMETRICOVERVIEW']._serialized_end=4350 + _globals['_INTERVALAVERAGE']._serialized_start=4352 + _globals['_INTERVALAVERAGE']._serialized_end=4470 + _globals['_RESOURCEVALUE']._serialized_start=4472 + _globals['_RESOURCEVALUE']._serialized_end=4554 + _globals['_CLUSTERNODEUSAGEMETRICS']._serialized_start=4557 + _globals['_CLUSTERNODEUSAGEMETRICS']._serialized_end=5095 + _globals['_METRIC']._serialized_start=5097 + _globals['_METRIC']._serialized_end=5209 + _globals['_LOGENTRY']._serialized_start=5211 + _globals['_LOGENTRY']._serialized_end=5322 + _globals['_MONITORINGSERVICE']._serialized_start=5631 + _globals['_MONITORINGSERVICE']._serialized_end=7007 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/qdrant/cloud/monitoring/v1/monitoring_pb2.pyi b/gen/python/qdrant/cloud/monitoring/v1/monitoring_pb2.pyi index 051f7298..93200877 100644 --- a/gen/python/qdrant/cloud/monitoring/v1/monitoring_pb2.pyi +++ b/gen/python/qdrant/cloud/monitoring/v1/monitoring_pb2.pyi @@ -67,7 +67,7 @@ class GetClusterUsageMetricsRequest(_message.Message): def __init__(self, account_id: _Optional[str] = ..., cluster_id: _Optional[str] = ..., since: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., until: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., aggregator: _Optional[_Union[Aggregator, str]] = ...) -> None: ... class GetClusterUsageMetricsResponse(_message.Message): - __slots__ = ("cpu", "ram", "ram_cache", "ram_rss", "ram_qdrant_rss", "disk", "rps", "latency", "nodes") + __slots__ = ("cpu", "ram", "ram_cache", "ram_rss", "ram_qdrant_rss", "disk", "rps", "latency", "nodes", "gpu", "gpu_ram") CPU_FIELD_NUMBER: _ClassVar[int] RAM_FIELD_NUMBER: _ClassVar[int] RAM_CACHE_FIELD_NUMBER: _ClassVar[int] @@ -77,6 +77,8 @@ class GetClusterUsageMetricsResponse(_message.Message): RPS_FIELD_NUMBER: _ClassVar[int] LATENCY_FIELD_NUMBER: _ClassVar[int] NODES_FIELD_NUMBER: _ClassVar[int] + GPU_FIELD_NUMBER: _ClassVar[int] + GPU_RAM_FIELD_NUMBER: _ClassVar[int] cpu: _containers.RepeatedCompositeFieldContainer[Metric] ram: _containers.RepeatedCompositeFieldContainer[Metric] ram_cache: _containers.RepeatedCompositeFieldContainer[Metric] @@ -86,7 +88,9 @@ class GetClusterUsageMetricsResponse(_message.Message): rps: _containers.RepeatedCompositeFieldContainer[Metric] latency: _containers.RepeatedCompositeFieldContainer[Metric] nodes: _containers.RepeatedCompositeFieldContainer[ClusterNodeUsageMetrics] - def __init__(self, cpu: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_cache: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_rss: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_qdrant_rss: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., disk: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., rps: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., latency: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., nodes: _Optional[_Iterable[_Union[ClusterNodeUsageMetrics, _Mapping]]] = ...) -> None: ... + gpu: _containers.RepeatedCompositeFieldContainer[Metric] + gpu_ram: _containers.RepeatedCompositeFieldContainer[Metric] + def __init__(self, cpu: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_cache: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_rss: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_qdrant_rss: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., disk: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., rps: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., latency: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., nodes: _Optional[_Iterable[_Union[ClusterNodeUsageMetrics, _Mapping]]] = ..., gpu: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., gpu_ram: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ...) -> None: ... class GetClusterLogsRequest(_message.Message): __slots__ = ("account_id", "cluster_id", "since", "until") @@ -155,7 +159,7 @@ class ClusterInferenceModelMetrics(_message.Message): def __init__(self, inference_model_id: _Optional[str] = ..., values: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ...) -> None: ... class ClusterNodeMetrics(_message.Message): - __slots__ = ("node_id", "cpu", "ram", "ram_cache", "ram_rss", "ram_qdrant_rss", "disk") + __slots__ = ("node_id", "cpu", "ram", "ram_cache", "ram_rss", "ram_qdrant_rss", "disk", "gpu", "gpu_ram") NODE_ID_FIELD_NUMBER: _ClassVar[int] CPU_FIELD_NUMBER: _ClassVar[int] RAM_FIELD_NUMBER: _ClassVar[int] @@ -163,6 +167,8 @@ class ClusterNodeMetrics(_message.Message): RAM_RSS_FIELD_NUMBER: _ClassVar[int] RAM_QDRANT_RSS_FIELD_NUMBER: _ClassVar[int] DISK_FIELD_NUMBER: _ClassVar[int] + GPU_FIELD_NUMBER: _ClassVar[int] + GPU_RAM_FIELD_NUMBER: _ClassVar[int] node_id: str cpu: ClusterMetricOverview ram: ClusterMetricOverview @@ -170,7 +176,9 @@ class ClusterNodeMetrics(_message.Message): ram_rss: ClusterMetricOverview ram_qdrant_rss: ClusterMetricOverview disk: ClusterMetricOverview - def __init__(self, node_id: _Optional[str] = ..., cpu: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., ram: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., ram_cache: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., ram_rss: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., ram_qdrant_rss: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., disk: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ...) -> None: ... + gpu: ClusterMetricOverview + gpu_ram: ClusterMetricOverview + def __init__(self, node_id: _Optional[str] = ..., cpu: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., ram: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., ram_cache: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., ram_rss: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., ram_qdrant_rss: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., disk: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., gpu: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ..., gpu_ram: _Optional[_Union[ClusterMetricOverview, _Mapping]] = ...) -> None: ... class ClusterMetricOverview(_message.Message): __slots__ = ("avg", "total") @@ -197,7 +205,7 @@ class ResourceValue(_message.Message): def __init__(self, value: _Optional[float] = ..., unit: _Optional[str] = ...) -> None: ... class ClusterNodeUsageMetrics(_message.Message): - __slots__ = ("node_id", "cpu", "ram", "ram_cache", "ram_rss", "ram_qdrant_rss", "disk") + __slots__ = ("node_id", "cpu", "ram", "ram_cache", "ram_rss", "ram_qdrant_rss", "disk", "gpu", "gpu_ram") NODE_ID_FIELD_NUMBER: _ClassVar[int] CPU_FIELD_NUMBER: _ClassVar[int] RAM_FIELD_NUMBER: _ClassVar[int] @@ -205,6 +213,8 @@ class ClusterNodeUsageMetrics(_message.Message): RAM_RSS_FIELD_NUMBER: _ClassVar[int] RAM_QDRANT_RSS_FIELD_NUMBER: _ClassVar[int] DISK_FIELD_NUMBER: _ClassVar[int] + GPU_FIELD_NUMBER: _ClassVar[int] + GPU_RAM_FIELD_NUMBER: _ClassVar[int] node_id: str cpu: _containers.RepeatedCompositeFieldContainer[Metric] ram: _containers.RepeatedCompositeFieldContainer[Metric] @@ -212,7 +222,9 @@ class ClusterNodeUsageMetrics(_message.Message): ram_rss: _containers.RepeatedCompositeFieldContainer[Metric] ram_qdrant_rss: _containers.RepeatedCompositeFieldContainer[Metric] disk: _containers.RepeatedCompositeFieldContainer[Metric] - def __init__(self, node_id: _Optional[str] = ..., cpu: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_cache: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_rss: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_qdrant_rss: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., disk: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ...) -> None: ... + gpu: _containers.RepeatedCompositeFieldContainer[Metric] + gpu_ram: _containers.RepeatedCompositeFieldContainer[Metric] + def __init__(self, node_id: _Optional[str] = ..., cpu: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_cache: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_rss: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., ram_qdrant_rss: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., disk: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., gpu: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ..., gpu_ram: _Optional[_Iterable[_Union[Metric, _Mapping]]] = ...) -> None: ... class Metric(_message.Message): __slots__ = ("timestamp", "value") diff --git a/gen/typescript/qdrant/cloud/booking/v1/booking_pb.d.ts b/gen/typescript/qdrant/cloud/booking/v1/booking_pb.d.ts index 269b4a00..b795652c 100644 --- a/gen/typescript/qdrant/cloud/booking/v1/booking_pb.d.ts +++ b/gen/typescript/qdrant/cloud/booking/v1/booking_pb.d.ts @@ -456,6 +456,14 @@ export declare type ResourceConfiguration = Message<"qdrant.cloud.booking.v1.Res * @generated from field: optional string gpu = 4; */ gpu?: string; + + /** + * The amount of GPU RAM (e.g., "1GiB") + * This is an optional field, if it is not set no GPU is provided. + * + * @generated from field: optional string gpu_ram = 5; + */ + gpuRam?: string; }; export declare type ResourceConfigurationValid = ResourceConfiguration; diff --git a/gen/typescript/qdrant/cloud/booking/v1/booking_pb.js b/gen/typescript/qdrant/cloud/booking/v1/booking_pb.js index 31e60be8..2fd6b392 100644 --- a/gen/typescript/qdrant/cloud/booking/v1/booking_pb.js +++ b/gen/typescript/qdrant/cloud/booking/v1/booking_pb.js @@ -11,7 +11,7 @@ import { file_qdrant_cloud_common_v1_common } from "../../common/v1/common_pb.js * Describes the file qdrant/cloud/booking/v1/booking.proto. */ export const file_qdrant_cloud_booking_v1_booking = /*@__PURE__*/ - fileDesc("CiVxZHJhbnQvY2xvdWQvYm9va2luZy92MS9ib29raW5nLnByb3RvEhdxZHJhbnQuY2xvdWQuYm9va2luZy52MSLRBAoTTGlzdFBhY2thZ2VzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIiChFjbG91ZF9wcm92aWRlcl9pZBgCIAEoCUIHukgEcgIQAxIuChhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQYAyABKAlCB7pIBHICEAFIAIgBARI4CghzdGF0dXNlcxgEIAMoDjImLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlBhY2thZ2VTdGF0dXMSUAoNbWluX3Jlc291cmNlcxgFIAEoCzI0LnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlJlc291cmNlQ29uZmlndXJhdGlvbkZpbHRlckgBiAEBEhUKCG11bHRpX2F6GAYgASgISAKIAQESEAoDZ3B1GAcgASgISAOIAQE6zgG6SMoBGscBCi5saXN0X3BhY2thZ2VzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZF9wcmVzZW50EktjbG91ZF9wcm92aWRlcl9yZWdpb25faWQgaXMgcmVxdWlyZWQgd2hlbiBjbG91ZF9wcm92aWRlcl9pZCBpcyBub3QgJ2h5YnJpZCcaSHRoaXMuY2xvdWRfcHJvdmlkZXJfaWQgPT0gJ2h5YnJpZCcgfHwgaGFzKHRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkKUIbChlfY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkQhAKDl9taW5fcmVzb3VyY2VzQgsKCV9tdWx0aV9hekIGCgRfZ3B1IkcKFExpc3RQYWNrYWdlc1Jlc3BvbnNlEi8KBWl0ZW1zGAEgAygLMiAucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuUGFja2FnZSLiAwoZTGlzdEdsb2JhbFBhY2thZ2VzUmVxdWVzdBIiChFjbG91ZF9wcm92aWRlcl9pZBgBIAEoCUIHukgEcgIQAxIuChhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQYAiABKAlCB7pIBHICEAFIAIgBARJQCg1taW5fcmVzb3VyY2VzGAMgASgLMjQucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuUmVzb3VyY2VDb25maWd1cmF0aW9uRmlsdGVySAGIAQESEAoDZ3B1GAQgASgISAKIAQE61QG6SNEBGs4BCjVsaXN0X2dsb2JhbF9wYWNrYWdlcy5jbG91ZF9wcm92aWRlcl9yZWdpb25faWRfcHJlc2VudBJLY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkIGlzIHJlcXVpcmVkIHdoZW4gY2xvdWRfcHJvdmlkZXJfaWQgaXMgbm90ICdoeWJyaWQnGkh0aGlzLmNsb3VkX3Byb3ZpZGVyX2lkID09ICdoeWJyaWQnIHx8IGhhcyh0aGlzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZClCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZEIQCg5fbWluX3Jlc291cmNlc0IGCgRfZ3B1Ik0KGkxpc3RHbG9iYWxQYWNrYWdlc1Jlc3BvbnNlEi8KBWl0ZW1zGAEgAygLMiAucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuUGFja2FnZSKJAwoRR2V0UGFja2FnZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESFAoCaWQYAiABKAlCCLpIBXIDsAEBEiIKEWNsb3VkX3Byb3ZpZGVyX2lkGAMgASgJQge6SARyAhADEi4KGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgEIAEoCUIHukgEcgIQAUgAiAEBOs4BukjKARrHAQoubGlzdF9wYWNrYWdlcy5jbG91ZF9wcm92aWRlcl9yZWdpb25faWRfcHJlc2VudBJLY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkIGlzIHJlcXVpcmVkIHdoZW4gY2xvdWRfcHJvdmlkZXJfaWQgaXMgbm90ICdoeWJyaWQnGkh0aGlzLmNsb3VkX3Byb3ZpZGVyX2lkID09ICdoeWJyaWQnIHx8IGhhcyh0aGlzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZClCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCJPChJHZXRQYWNrYWdlUmVzcG9uc2USOQoHcGFja2FnZRgBIAEoCzIgLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlBhY2thZ2VCBrpIA8gBASKoBQoHUGFja2FnZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESKQoEbmFtZRgCIAEoCUIbukgYchYQAxhAMhBeW2EtekEtWjAtOS1fXSskEh8KBHR5cGUYAyABKAlCEbpIDnIMUgRmcmVlUgRwYWlkEk4KFnJlc291cmNlX2NvbmZpZ3VyYXRpb24YBCABKAsyLi5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5SZXNvdXJjZUNvbmZpZ3VyYXRpb24SIwoIY3VycmVuY3kYBSABKAlCEbpIDnIMMgpeW0EtWl17M30kEigKF3VuaXRfaW50X3ByaWNlX3Blcl9ob3VyGAYgASgFQge6SAQaAigAEkIKBnN0YXR1cxgHIAEoDjImLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlBhY2thZ2VTdGF0dXNCCrpIB4IBBBABIAASPgoEdGllchgJIAEoDjIkLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlBhY2thZ2VUaWVyQgq6SAeCAQQQASAAEmIKHmF2YWlsYWJsZV9hZGRpdGlvbmFsX3Jlc291cmNlcxgIIAEoCzI1LnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkF2YWlsYWJsZUFkZGl0aW9uYWxSZXNvdXJjZXNIAIgBARJ/CiVhdmFpbGFibGVfc3RvcmFnZV90aWVyX2NvbmZpZ3VyYXRpb25zGAogAygLMkYucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuQXZhaWxhYmxlU3RvcmFnZVBlcmZvcm1hbmNlVGllckNvbmZpZ3VyYXRpb25zQgi6SAWSAQIIARIQCghtdWx0aV9hehgLIAEoCEIhCh9fYXZhaWxhYmxlX2FkZGl0aW9uYWxfcmVzb3VyY2VzIjsKHEF2YWlsYWJsZUFkZGl0aW9uYWxSZXNvdXJjZXMSGwoTZGlza19wcmljZV9wZXJfaG91chgBIAEoDSKLAQotQXZhaWxhYmxlU3RvcmFnZVBlcmZvcm1hbmNlVGllckNvbmZpZ3VyYXRpb25zEkIKEXN0b3JhZ2VfdGllcl90eXBlGAEgASgOMicucWRyYW50LmNsb3VkLmNvbW1vbi52MS5TdG9yYWdlVGllclR5cGUSFgoOcHJpY2VfcGVyX2hvdXIYAiABKA0ifQoVUmVzb3VyY2VDb25maWd1cmF0aW9uEhQKA3JhbRgBIAEoCUIHukgEcgIQARIUCgNjcHUYAiABKAlCB7pIBHICEAESFQoEZGlzaxgDIAEoCUIHukgEcgIQARIZCgNncHUYBCABKAlCB7pIBHICEAFIAIgBAUIGCgRfZ3B1IqsBChtSZXNvdXJjZUNvbmZpZ3VyYXRpb25GaWx0ZXISGQoDcmFtGAEgASgJQge6SARyAhABSACIAQESGQoDY3B1GAIgASgJQge6SARyAhABSAGIAQESGgoEZGlzaxgDIAEoCUIHukgEcgIQAUgCiAEBEhkKA2dwdRgEIAEoCUIHukgEcgIQAUgDiAEBQgYKBF9yYW1CBgoEX2NwdUIHCgVfZGlza0IGCgRfZ3B1IrIECg9HZXRRdW90ZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESIgoRY2xvdWRfcHJvdmlkZXJfaWQYAiABKAlCB7pIBHICEAMSLgoYY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkGAMgASgJQge6SARyAhABSACIAQESIAoPbnVtYmVyX29mX25vZGVzGAQgASgNQge6SAQqAigBEhwKCnBhY2thZ2VfaWQYBSABKAlCCLpIBXIDsAEBEiQKE2FkZGl0aW9uYWxfZGlza19naWIYBiABKA1CB7pIBCoCKAASRwoRc3RvcmFnZV90aWVyX3R5cGUYByABKA4yJy5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlN0b3JhZ2VUaWVyVHlwZUgBiAEBOsoBukjGARrDAQoqZ2V0X3F1b3RlLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZF9wcmVzZW50EktjbG91ZF9wcm92aWRlcl9yZWdpb25faWQgaXMgcmVxdWlyZWQgd2hlbiBjbG91ZF9wcm92aWRlcl9pZCBpcyBub3QgJ2h5YnJpZCcaSHRoaXMuY2xvdWRfcHJvdmlkZXJfaWQgPT0gJ2h5YnJpZCcgfHwgaGFzKHRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkKUIbChlfY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkQhQKEl9zdG9yYWdlX3RpZXJfdHlwZSLDAQoQR2V0UXVvdGVSZXNwb25zZRIjCghjdXJyZW5jeRgBIAEoCUIRukgOcgwyCl5bQS1aXXszfSQSKAoXb3JpZ2luYWxfcHJpY2VfcGVyX2hvdXIYAiABKANCB7pIBCICKAASKgoZZGlzY291bnRlZF9wcmljZV9wZXJfaG91chgDIAEoA0IHukgEIgIoABI0ChNkaXNjb3VudF9wZXJjZW50YWdlGAQgASgBQhe6SBQSEhkAAAAAAABZQCkAAAAAAAAAACK1AwoVR2V0QmFja3VwUXVvdGVSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEiIKEWNsb3VkX3Byb3ZpZGVyX2lkGAIgASgJQge6SARyAhADEi4KGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgEIAEoCUIHukgEcgIQAUgAiAEBEiUKD2JhY2t1cF9zaXplX2dpYhgFIAEoDUIHukgEKgIgAEgBiAEBOtEBukjNARrKAQoxZ2V0X2JhY2t1cF9xdW90ZS5jbG91ZF9wcm92aWRlcl9yZWdpb25faWRfcHJlc2VudBJLY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkIGlzIHJlcXVpcmVkIHdoZW4gY2xvdWRfcHJvdmlkZXJfaWQgaXMgbm90ICdoeWJyaWQnGkh0aGlzLmNsb3VkX3Byb3ZpZGVyX2lkID09ICdoeWJyaWQnIHx8IGhhcyh0aGlzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZClCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZEISChBfYmFja3VwX3NpemVfZ2liIskBChZHZXRCYWNrdXBRdW90ZVJlc3BvbnNlEiMKCGN1cnJlbmN5GAEgASgJQhG6SA5yDDIKXltBLVpdezN9JBIoChdvcmlnaW5hbF9wcmljZV9wZXJfaG91chgCIAEoA0IHukgEIgIoABIqChlkaXNjb3VudGVkX3ByaWNlX3Blcl9ob3VyGAMgASgDQge6SAQiAigAEjQKE2Rpc2NvdW50X3BlcmNlbnRhZ2UYBCABKAFCF7pIFBISGQAAAAAAAFlAKQAAAAAAAAAAIokBChpMaXN0SW5mZXJlbmNlTW9kZWxzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIiChFjbG91ZF9wcm92aWRlcl9pZBgCIAEoCUIHukgEcgIQAxIpChhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQYAyABKAlCB7pIBHICEAEiVQobTGlzdEluZmVyZW5jZU1vZGVsc1Jlc3BvbnNlEjYKBWl0ZW1zGAEgAygLMicucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuSW5mZXJlbmNlTW9kZWwiigEKG0xpc3RTdG9yYWdlVGllclR5cGVzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIiChFjbG91ZF9wcm92aWRlcl9pZBgCIAEoCUIHukgEcgIQAxIpChhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQYAyABKAlCB7pIBHICEAEiVAocTGlzdFN0b3JhZ2VUaWVyVHlwZXNSZXNwb25zZRI0CgVpdGVtcxgBIAMoCzIlLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlN0b3JhZ2VUaWVycyL1AwoOSW5mZXJlbmNlTW9kZWwSFAoCaWQYASABKAlCCLpIBXIDsAEBEhUKBG5hbWUYAiABKAlCB7pIBHICEAESFgoFdGl0bGUYAyABKAlCB7pIBHICEAESHAoLZGVzY3JpcHRpb24YBCABKAlCB7pIBHICEAESRAoLdmVjdG9yX3R5cGUYBSABKA4yIy5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5WZWN0b3JUeXBlQgq6SAeCAQQQASAAEkQKCG1vZGFsaXR5GAYgASgOMiYucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuTW9kZWxNb2RhbGl0eUIKukgHggEEEAEgABIXCgZ2ZW5kb3IYByABKAlCB7pIBHICEAESFgoOdW5pdF9pbnRfcHJpY2UYCCABKA0SEwoLaXNfZXh0ZXJuYWwYCSABKAgSGwoOZGltZW5zaW9uYWxpdHkYCiABKA1IAIgBARIjChZtYXhfdG9rZW5zX3Blcl9yZXF1ZXN0GAsgASgNSAGIAQESKAoRZXh0ZXJuYWxfZG9jc191cmwYDCABKAlCCLpIBXIDiAEBSAKIAQFCEQoPX2RpbWVuc2lvbmFsaXR5QhkKF19tYXhfdG9rZW5zX3Blcl9yZXF1ZXN0QhQKEl9leHRlcm5hbF9kb2NzX3VybCJSCgxTdG9yYWdlVGllcnMSQgoRc3RvcmFnZV90aWVyX3R5cGUYASABKA4yJy5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlN0b3JhZ2VUaWVyVHlwZSpqCg1QYWNrYWdlU3RhdHVzEh4KGlBBQ0tBR0VfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGQoVUEFDS0FHRV9TVEFUVVNfQUNUSVZFEAESHgoaUEFDS0FHRV9TVEFUVVNfREVBQ1RJVkFURUQQAipnCgtQYWNrYWdlVGllchIjCh9QQUNLQUdFX1RJRVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGQoVUEFDS0FHRV9USUVSX1NUQU5EQVJEEAESGAoUUEFDS0FHRV9USUVSX1BSRU1JVU0QAipvCgpWZWN0b3JUeXBlEhsKF1ZFQ1RPUl9UWVBFX1VOU1BFQ0lGSUVEEAASFQoRVkVDVE9SX1RZUEVfREVOU0UQARIWChJWRUNUT1JfVFlQRV9TUEFSU0UQAhIVChFWRUNUT1JfVFlQRV9NVUxUSRADKmIKDU1vZGVsTW9kYWxpdHkSHgoaTU9ERUxfTU9EQUxJVFlfVU5TUEVDSUZJRUQQABIXChNNT0RFTF9NT0RBTElUWV9URVhUEAESGAoUTU9ERUxfTU9EQUxJVFlfSU1BR0UQAjLpCwoOQm9va2luZ1NlcnZpY2USigIKDExpc3RQYWNrYWdlcxIsLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkxpc3RQYWNrYWdlc1JlcXVlc3QaLS5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5MaXN0UGFja2FnZXNSZXNwb25zZSKcAYq1GAC6tRgmChFjbG91ZF9wcm92aWRlcl9pZBIRY2xvdWRfcHJvdmlkZXJfaWS6tRg0ChhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQSGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZILT5JMCMBIuL2FwaS9ib29raW5nL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9wYWNrYWdlcxK6AQoKR2V0UGFja2FnZRIqLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkdldFBhY2thZ2VSZXF1ZXN0GisucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuR2V0UGFja2FnZVJlc3BvbnNlIlOKtRgAurUYEAoKcGFja2FnZV9pZBICaWSC0+STAjUSMy9hcGkvYm9va2luZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcGFja2FnZXMve2lkfRKGAgoSTGlzdEdsb2JhbFBhY2thZ2VzEjIucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuTGlzdEdsb2JhbFBhY2thZ2VzUmVxdWVzdBozLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkxpc3RHbG9iYWxQYWNrYWdlc1Jlc3BvbnNlIoYBmLUYALq1GCYKEWNsb3VkX3Byb3ZpZGVyX2lkEhFjbG91ZF9wcm92aWRlcl9pZLq1GDQKGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBIYY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkgtPkkwIaEhgvYXBpL2Jvb2tpbmcvdjEvcGFja2FnZXMSqQEKCEdldFF1b3RlEigucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuR2V0UXVvdGVSZXF1ZXN0GikucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuR2V0UXVvdGVSZXNwb25zZSJIirUYDndyaXRlOmNsdXN0ZXJzgtPkkwIwOgEqIisvYXBpL2Jvb2tpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L3F1b3RlEsEBCg5HZXRCYWNrdXBRdW90ZRIuLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkdldEJhY2t1cFF1b3RlUmVxdWVzdBovLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkdldEJhY2t1cFF1b3RlUmVzcG9uc2UiToq1GA13cml0ZTpiYWNrdXBzgtPkkwI3OgEqIjIvYXBpL2Jvb2tpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2JhY2t1cC1xdW90ZRLEAQoTTGlzdEluZmVyZW5jZU1vZGVscxIzLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkxpc3RJbmZlcmVuY2VNb2RlbHNSZXF1ZXN0GjQucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuTGlzdEluZmVyZW5jZU1vZGVsc1Jlc3BvbnNlIkKKtRgAgtPkkwI4EjYvYXBpL2Jvb2tpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2luZmVyZW5jZS1tb2RlbHMSxAEKFExpc3RTdG9yYWdlVGllclR5cGVzEjQucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuTGlzdFN0b3JhZ2VUaWVyVHlwZXNSZXF1ZXN0GjUucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuTGlzdFN0b3JhZ2VUaWVyVHlwZXNSZXNwb25zZSI/irUYAILT5JMCNRIzL2FwaS9ib29raW5nL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9zdG9yYWdlLXRpZXJzGgbCtRgCCAFC/gEKG2NvbS5xZHJhbnQuY2xvdWQuYm9va2luZy52MUIMQm9va2luZ1Byb3RvUAFaUmdpdGh1Yi5jb20vcWRyYW50L3FkcmFudC1jbG91ZC1wdWJsaWMtYXBpL2dlbi9nby9xZHJhbnQvY2xvdWQvYm9va2luZy92MTtib29raW5ndjGiAgNRQ0KqAhdRZHJhbnQuQ2xvdWQuQm9va2luZy5WMcoCF1FkcmFudFxDbG91ZFxCb29raW5nXFYx4gIjUWRyYW50XENsb3VkXEJvb2tpbmdcVjFcR1BCTWV0YWRhdGHqAhpRZHJhbnQ6OkNsb3VkOjpCb29raW5nOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_api_annotations, file_qdrant_cloud_common_v1_common]); + fileDesc("CiVxZHJhbnQvY2xvdWQvYm9va2luZy92MS9ib29raW5nLnByb3RvEhdxZHJhbnQuY2xvdWQuYm9va2luZy52MSLRBAoTTGlzdFBhY2thZ2VzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIiChFjbG91ZF9wcm92aWRlcl9pZBgCIAEoCUIHukgEcgIQAxIuChhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQYAyABKAlCB7pIBHICEAFIAIgBARI4CghzdGF0dXNlcxgEIAMoDjImLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlBhY2thZ2VTdGF0dXMSUAoNbWluX3Jlc291cmNlcxgFIAEoCzI0LnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlJlc291cmNlQ29uZmlndXJhdGlvbkZpbHRlckgBiAEBEhUKCG11bHRpX2F6GAYgASgISAKIAQESEAoDZ3B1GAcgASgISAOIAQE6zgG6SMoBGscBCi5saXN0X3BhY2thZ2VzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZF9wcmVzZW50EktjbG91ZF9wcm92aWRlcl9yZWdpb25faWQgaXMgcmVxdWlyZWQgd2hlbiBjbG91ZF9wcm92aWRlcl9pZCBpcyBub3QgJ2h5YnJpZCcaSHRoaXMuY2xvdWRfcHJvdmlkZXJfaWQgPT0gJ2h5YnJpZCcgfHwgaGFzKHRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkKUIbChlfY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkQhAKDl9taW5fcmVzb3VyY2VzQgsKCV9tdWx0aV9hekIGCgRfZ3B1IkcKFExpc3RQYWNrYWdlc1Jlc3BvbnNlEi8KBWl0ZW1zGAEgAygLMiAucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuUGFja2FnZSLiAwoZTGlzdEdsb2JhbFBhY2thZ2VzUmVxdWVzdBIiChFjbG91ZF9wcm92aWRlcl9pZBgBIAEoCUIHukgEcgIQAxIuChhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQYAiABKAlCB7pIBHICEAFIAIgBARJQCg1taW5fcmVzb3VyY2VzGAMgASgLMjQucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuUmVzb3VyY2VDb25maWd1cmF0aW9uRmlsdGVySAGIAQESEAoDZ3B1GAQgASgISAKIAQE61QG6SNEBGs4BCjVsaXN0X2dsb2JhbF9wYWNrYWdlcy5jbG91ZF9wcm92aWRlcl9yZWdpb25faWRfcHJlc2VudBJLY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkIGlzIHJlcXVpcmVkIHdoZW4gY2xvdWRfcHJvdmlkZXJfaWQgaXMgbm90ICdoeWJyaWQnGkh0aGlzLmNsb3VkX3Byb3ZpZGVyX2lkID09ICdoeWJyaWQnIHx8IGhhcyh0aGlzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZClCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZEIQCg5fbWluX3Jlc291cmNlc0IGCgRfZ3B1Ik0KGkxpc3RHbG9iYWxQYWNrYWdlc1Jlc3BvbnNlEi8KBWl0ZW1zGAEgAygLMiAucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuUGFja2FnZSKJAwoRR2V0UGFja2FnZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESFAoCaWQYAiABKAlCCLpIBXIDsAEBEiIKEWNsb3VkX3Byb3ZpZGVyX2lkGAMgASgJQge6SARyAhADEi4KGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgEIAEoCUIHukgEcgIQAUgAiAEBOs4BukjKARrHAQoubGlzdF9wYWNrYWdlcy5jbG91ZF9wcm92aWRlcl9yZWdpb25faWRfcHJlc2VudBJLY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkIGlzIHJlcXVpcmVkIHdoZW4gY2xvdWRfcHJvdmlkZXJfaWQgaXMgbm90ICdoeWJyaWQnGkh0aGlzLmNsb3VkX3Byb3ZpZGVyX2lkID09ICdoeWJyaWQnIHx8IGhhcyh0aGlzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZClCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCJPChJHZXRQYWNrYWdlUmVzcG9uc2USOQoHcGFja2FnZRgBIAEoCzIgLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlBhY2thZ2VCBrpIA8gBASKoBQoHUGFja2FnZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESKQoEbmFtZRgCIAEoCUIbukgYchYQAxhAMhBeW2EtekEtWjAtOS1fXSskEh8KBHR5cGUYAyABKAlCEbpIDnIMUgRmcmVlUgRwYWlkEk4KFnJlc291cmNlX2NvbmZpZ3VyYXRpb24YBCABKAsyLi5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5SZXNvdXJjZUNvbmZpZ3VyYXRpb24SIwoIY3VycmVuY3kYBSABKAlCEbpIDnIMMgpeW0EtWl17M30kEigKF3VuaXRfaW50X3ByaWNlX3Blcl9ob3VyGAYgASgFQge6SAQaAigAEkIKBnN0YXR1cxgHIAEoDjImLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlBhY2thZ2VTdGF0dXNCCrpIB4IBBBABIAASPgoEdGllchgJIAEoDjIkLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlBhY2thZ2VUaWVyQgq6SAeCAQQQASAAEmIKHmF2YWlsYWJsZV9hZGRpdGlvbmFsX3Jlc291cmNlcxgIIAEoCzI1LnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkF2YWlsYWJsZUFkZGl0aW9uYWxSZXNvdXJjZXNIAIgBARJ/CiVhdmFpbGFibGVfc3RvcmFnZV90aWVyX2NvbmZpZ3VyYXRpb25zGAogAygLMkYucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuQXZhaWxhYmxlU3RvcmFnZVBlcmZvcm1hbmNlVGllckNvbmZpZ3VyYXRpb25zQgi6SAWSAQIIARIQCghtdWx0aV9hehgLIAEoCEIhCh9fYXZhaWxhYmxlX2FkZGl0aW9uYWxfcmVzb3VyY2VzIjsKHEF2YWlsYWJsZUFkZGl0aW9uYWxSZXNvdXJjZXMSGwoTZGlza19wcmljZV9wZXJfaG91chgBIAEoDSKLAQotQXZhaWxhYmxlU3RvcmFnZVBlcmZvcm1hbmNlVGllckNvbmZpZ3VyYXRpb25zEkIKEXN0b3JhZ2VfdGllcl90eXBlGAEgASgOMicucWRyYW50LmNsb3VkLmNvbW1vbi52MS5TdG9yYWdlVGllclR5cGUSFgoOcHJpY2VfcGVyX2hvdXIYAiABKA0iqAEKFVJlc291cmNlQ29uZmlndXJhdGlvbhIUCgNyYW0YASABKAlCB7pIBHICEAESFAoDY3B1GAIgASgJQge6SARyAhABEhUKBGRpc2sYAyABKAlCB7pIBHICEAESGQoDZ3B1GAQgASgJQge6SARyAhABSACIAQESHQoHZ3B1X3JhbRgFIAEoCUIHukgEcgIQAUgBiAEBQgYKBF9ncHVCCgoIX2dwdV9yYW0iqwEKG1Jlc291cmNlQ29uZmlndXJhdGlvbkZpbHRlchIZCgNyYW0YASABKAlCB7pIBHICEAFIAIgBARIZCgNjcHUYAiABKAlCB7pIBHICEAFIAYgBARIaCgRkaXNrGAMgASgJQge6SARyAhABSAKIAQESGQoDZ3B1GAQgASgJQge6SARyAhABSAOIAQFCBgoEX3JhbUIGCgRfY3B1QgcKBV9kaXNrQgYKBF9ncHUisgQKD0dldFF1b3RlUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIiChFjbG91ZF9wcm92aWRlcl9pZBgCIAEoCUIHukgEcgIQAxIuChhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQYAyABKAlCB7pIBHICEAFIAIgBARIgCg9udW1iZXJfb2Zfbm9kZXMYBCABKA1CB7pIBCoCKAESHAoKcGFja2FnZV9pZBgFIAEoCUIIukgFcgOwAQESJAoTYWRkaXRpb25hbF9kaXNrX2dpYhgGIAEoDUIHukgEKgIoABJHChFzdG9yYWdlX3RpZXJfdHlwZRgHIAEoDjInLnFkcmFudC5jbG91ZC5jb21tb24udjEuU3RvcmFnZVRpZXJUeXBlSAGIAQE6ygG6SMYBGsMBCipnZXRfcXVvdGUuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkX3ByZXNlbnQSS2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCBpcyByZXF1aXJlZCB3aGVuIGNsb3VkX3Byb3ZpZGVyX2lkIGlzIG5vdCAnaHlicmlkJxpIdGhpcy5jbG91ZF9wcm92aWRlcl9pZCA9PSAnaHlicmlkJyB8fCBoYXModGhpcy5jbG91ZF9wcm92aWRlcl9yZWdpb25faWQpQhsKGV9jbG91ZF9wcm92aWRlcl9yZWdpb25faWRCFAoSX3N0b3JhZ2VfdGllcl90eXBlIsMBChBHZXRRdW90ZVJlc3BvbnNlEiMKCGN1cnJlbmN5GAEgASgJQhG6SA5yDDIKXltBLVpdezN9JBIoChdvcmlnaW5hbF9wcmljZV9wZXJfaG91chgCIAEoA0IHukgEIgIoABIqChlkaXNjb3VudGVkX3ByaWNlX3Blcl9ob3VyGAMgASgDQge6SAQiAigAEjQKE2Rpc2NvdW50X3BlcmNlbnRhZ2UYBCABKAFCF7pIFBISGQAAAAAAAFlAKQAAAAAAAAAAIrUDChVHZXRCYWNrdXBRdW90ZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESIgoRY2xvdWRfcHJvdmlkZXJfaWQYAiABKAlCB7pIBHICEAMSLgoYY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkGAQgASgJQge6SARyAhABSACIAQESJQoPYmFja3VwX3NpemVfZ2liGAUgASgNQge6SAQqAiAASAGIAQE60QG6SM0BGsoBCjFnZXRfYmFja3VwX3F1b3RlLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZF9wcmVzZW50EktjbG91ZF9wcm92aWRlcl9yZWdpb25faWQgaXMgcmVxdWlyZWQgd2hlbiBjbG91ZF9wcm92aWRlcl9pZCBpcyBub3QgJ2h5YnJpZCcaSHRoaXMuY2xvdWRfcHJvdmlkZXJfaWQgPT0gJ2h5YnJpZCcgfHwgaGFzKHRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkKUIbChlfY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkQhIKEF9iYWNrdXBfc2l6ZV9naWIiyQEKFkdldEJhY2t1cFF1b3RlUmVzcG9uc2USIwoIY3VycmVuY3kYASABKAlCEbpIDnIMMgpeW0EtWl17M30kEigKF29yaWdpbmFsX3ByaWNlX3Blcl9ob3VyGAIgASgDQge6SAQiAigAEioKGWRpc2NvdW50ZWRfcHJpY2VfcGVyX2hvdXIYAyABKANCB7pIBCICKAASNAoTZGlzY291bnRfcGVyY2VudGFnZRgEIAEoAUIXukgUEhIZAAAAAAAAWUApAAAAAAAAAAAiiQEKGkxpc3RJbmZlcmVuY2VNb2RlbHNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEiIKEWNsb3VkX3Byb3ZpZGVyX2lkGAIgASgJQge6SARyAhADEikKGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgDIAEoCUIHukgEcgIQASJVChtMaXN0SW5mZXJlbmNlTW9kZWxzUmVzcG9uc2USNgoFaXRlbXMYASADKAsyJy5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5JbmZlcmVuY2VNb2RlbCKKAQobTGlzdFN0b3JhZ2VUaWVyVHlwZXNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEiIKEWNsb3VkX3Byb3ZpZGVyX2lkGAIgASgJQge6SARyAhADEikKGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgDIAEoCUIHukgEcgIQASJUChxMaXN0U3RvcmFnZVRpZXJUeXBlc1Jlc3BvbnNlEjQKBWl0ZW1zGAEgAygLMiUucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuU3RvcmFnZVRpZXJzIvUDCg5JbmZlcmVuY2VNb2RlbBIUCgJpZBgBIAEoCUIIukgFcgOwAQESFQoEbmFtZRgCIAEoCUIHukgEcgIQARIWCgV0aXRsZRgDIAEoCUIHukgEcgIQARIcCgtkZXNjcmlwdGlvbhgEIAEoCUIHukgEcgIQARJECgt2ZWN0b3JfdHlwZRgFIAEoDjIjLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLlZlY3RvclR5cGVCCrpIB4IBBBABIAASRAoIbW9kYWxpdHkYBiABKA4yJi5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5Nb2RlbE1vZGFsaXR5Qgq6SAeCAQQQASAAEhcKBnZlbmRvchgHIAEoCUIHukgEcgIQARIWCg51bml0X2ludF9wcmljZRgIIAEoDRITCgtpc19leHRlcm5hbBgJIAEoCBIbCg5kaW1lbnNpb25hbGl0eRgKIAEoDUgAiAEBEiMKFm1heF90b2tlbnNfcGVyX3JlcXVlc3QYCyABKA1IAYgBARIoChFleHRlcm5hbF9kb2NzX3VybBgMIAEoCUIIukgFcgOIAQFIAogBAUIRCg9fZGltZW5zaW9uYWxpdHlCGQoXX21heF90b2tlbnNfcGVyX3JlcXVlc3RCFAoSX2V4dGVybmFsX2RvY3NfdXJsIlIKDFN0b3JhZ2VUaWVycxJCChFzdG9yYWdlX3RpZXJfdHlwZRgBIAEoDjInLnFkcmFudC5jbG91ZC5jb21tb24udjEuU3RvcmFnZVRpZXJUeXBlKmoKDVBhY2thZ2VTdGF0dXMSHgoaUEFDS0FHRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIZChVQQUNLQUdFX1NUQVRVU19BQ1RJVkUQARIeChpQQUNLQUdFX1NUQVRVU19ERUFDVElWQVRFRBACKmcKC1BhY2thZ2VUaWVyEiMKH1BBQ0tBR0VfVElFUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIZChVQQUNLQUdFX1RJRVJfU1RBTkRBUkQQARIYChRQQUNLQUdFX1RJRVJfUFJFTUlVTRACKm8KClZlY3RvclR5cGUSGwoXVkVDVE9SX1RZUEVfVU5TUEVDSUZJRUQQABIVChFWRUNUT1JfVFlQRV9ERU5TRRABEhYKElZFQ1RPUl9UWVBFX1NQQVJTRRACEhUKEVZFQ1RPUl9UWVBFX01VTFRJEAMqYgoNTW9kZWxNb2RhbGl0eRIeChpNT0RFTF9NT0RBTElUWV9VTlNQRUNJRklFRBAAEhcKE01PREVMX01PREFMSVRZX1RFWFQQARIYChRNT0RFTF9NT0RBTElUWV9JTUFHRRACMukLCg5Cb29raW5nU2VydmljZRKKAgoMTGlzdFBhY2thZ2VzEiwucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuTGlzdFBhY2thZ2VzUmVxdWVzdBotLnFkcmFudC5jbG91ZC5ib29raW5nLnYxLkxpc3RQYWNrYWdlc1Jlc3BvbnNlIpwBirUYALq1GCYKEWNsb3VkX3Byb3ZpZGVyX2lkEhFjbG91ZF9wcm92aWRlcl9pZLq1GDQKGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBIYY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkgtPkkwIwEi4vYXBpL2Jvb2tpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L3BhY2thZ2VzEroBCgpHZXRQYWNrYWdlEioucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuR2V0UGFja2FnZVJlcXVlc3QaKy5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5HZXRQYWNrYWdlUmVzcG9uc2UiU4q1GAC6tRgQCgpwYWNrYWdlX2lkEgJpZILT5JMCNRIzL2FwaS9ib29raW5nL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9wYWNrYWdlcy97aWR9EoYCChJMaXN0R2xvYmFsUGFja2FnZXMSMi5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5MaXN0R2xvYmFsUGFja2FnZXNSZXF1ZXN0GjMucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuTGlzdEdsb2JhbFBhY2thZ2VzUmVzcG9uc2UihgGYtRgAurUYJgoRY2xvdWRfcHJvdmlkZXJfaWQSEWNsb3VkX3Byb3ZpZGVyX2lkurUYNAoYY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkEhhjbG91ZF9wcm92aWRlcl9yZWdpb25faWSC0+STAhoSGC9hcGkvYm9va2luZy92MS9wYWNrYWdlcxKpAQoIR2V0UXVvdGUSKC5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5HZXRRdW90ZVJlcXVlc3QaKS5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5HZXRRdW90ZVJlc3BvbnNlIkiKtRgOd3JpdGU6Y2x1c3RlcnOC0+STAjA6ASoiKy9hcGkvYm9va2luZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcXVvdGUSwQEKDkdldEJhY2t1cFF1b3RlEi4ucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuR2V0QmFja3VwUXVvdGVSZXF1ZXN0Gi8ucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuR2V0QmFja3VwUXVvdGVSZXNwb25zZSJOirUYDXdyaXRlOmJhY2t1cHOC0+STAjc6ASoiMi9hcGkvYm9va2luZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vYmFja3VwLXF1b3RlEsQBChNMaXN0SW5mZXJlbmNlTW9kZWxzEjMucWRyYW50LmNsb3VkLmJvb2tpbmcudjEuTGlzdEluZmVyZW5jZU1vZGVsc1JlcXVlc3QaNC5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5MaXN0SW5mZXJlbmNlTW9kZWxzUmVzcG9uc2UiQoq1GACC0+STAjgSNi9hcGkvYm9va2luZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vaW5mZXJlbmNlLW1vZGVscxLEAQoUTGlzdFN0b3JhZ2VUaWVyVHlwZXMSNC5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5MaXN0U3RvcmFnZVRpZXJUeXBlc1JlcXVlc3QaNS5xZHJhbnQuY2xvdWQuYm9va2luZy52MS5MaXN0U3RvcmFnZVRpZXJUeXBlc1Jlc3BvbnNlIj+KtRgAgtPkkwI1EjMvYXBpL2Jvb2tpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L3N0b3JhZ2UtdGllcnMaBsK1GAIIAUL+AQobY29tLnFkcmFudC5jbG91ZC5ib29raW5nLnYxQgxCb29raW5nUHJvdG9QAVpSZ2l0aHViLmNvbS9xZHJhbnQvcWRyYW50LWNsb3VkLXB1YmxpYy1hcGkvZ2VuL2dvL3FkcmFudC9jbG91ZC9ib29raW5nL3YxO2Jvb2tpbmd2MaICA1FDQqoCF1FkcmFudC5DbG91ZC5Cb29raW5nLlYxygIXUWRyYW50XENsb3VkXEJvb2tpbmdcVjHiAiNRZHJhbnRcQ2xvdWRcQm9va2luZ1xWMVxHUEJNZXRhZGF0YeoCGlFkcmFudDo6Q2xvdWQ6OkJvb2tpbmc6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_qdrant_cloud_common_v1_common]); /** * Describes the message qdrant.cloud.booking.v1.ListPackagesRequest. diff --git a/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts b/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts index 340b4ed0..75541ad7 100644 --- a/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts +++ b/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts @@ -2188,6 +2188,13 @@ export declare type ClusterNodeResourcesSummary = Message<"qdrant.cloud.cluster. * @generated from field: optional qdrant.cloud.cluster.v1.ClusterNodeResources gpu = 4; */ gpu?: ClusterNodeResources; + + /** + * GPU RAM, empty if cluster has not GPU. + * + * @generated from field: optional qdrant.cloud.cluster.v1.ClusterNodeResources gpu_ram = 5; + */ + gpuRam?: ClusterNodeResources; }; /** @@ -2223,6 +2230,13 @@ export declare type ClusterNodeResourcesSummaryValid = Message<"qdrant.cloud.clu * @generated from field: optional qdrant.cloud.cluster.v1.ClusterNodeResources gpu = 4; */ gpu?: ClusterNodeResourcesValid; + + /** + * GPU RAM, empty if cluster has not GPU. + * + * @generated from field: optional qdrant.cloud.cluster.v1.ClusterNodeResources gpu_ram = 5; + */ + gpuRam?: ClusterNodeResourcesValid; }; /** diff --git a/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.js b/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.js index 27b649f6..24f1c2ce 100644 --- a/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.js +++ b/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.js @@ -13,7 +13,7 @@ import { file_qdrant_cloud_event_v1_events } from "../../event/v1/events_pb.js"; * Describes the file qdrant/cloud/cluster/v1/cluster.proto. */ export const file_qdrant_cloud_cluster_v1_cluster = /*@__PURE__*/ - fileDesc("CiVxZHJhbnQvY2xvdWQvY2x1c3Rlci92MS9jbHVzdGVyLnByb3RvEhdxZHJhbnQuY2xvdWQuY2x1c3Rlci52MSLqBQoTTGlzdENsdXN0ZXJzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARInChFjbG91ZF9wcm92aWRlcl9pZBgKIAEoCUIHukgEcgIQA0gAiAEBEi4KGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgLIAEoCUIHukgEcgIQAUgBiAEBEiIKCXBhZ2Vfc2l6ZRgUIAEoBUIKukgHGgUY+gEgAEgCiAEBEiAKCnBhZ2VfdG9rZW4YFSABKAlCB7pIBHICEAFIA4gBATrFA7pIwQMasQEKJ2xpc3RfY2x1c3RlcnMuY2xvdWRfcHJvdmlkZXJfaWRfcHJlc2VudBJCY2xvdWRfcHJvdmlkZXJfaWQgaXMgcmVxdWlyZWQgd2hlbiBjbG91ZF9wcm92aWRlcl9yZWdpb25faWQgaXMgc2V0GkIhaGFzKHRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkKSB8fCBoYXModGhpcy5jbG91ZF9wcm92aWRlcl9pZCkaigIKIGNsdXN0ZXIuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkEkhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQgbXVzdCBiZSBhIFVVSUQgaWYgY2xvdWRfcHJvdmlkZXJfaWQgaXMgJ2h5YnJpZCcamwF0aGlzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZC5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpIHx8IHRoaXMuY2xvdWRfcHJvdmlkZXJfaWQhPSAnaHlicmlkJ0IUChJfY2xvdWRfcHJvdmlkZXJfaWRCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZEIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuIrMBChRMaXN0Q2x1c3RlcnNSZXNwb25zZRIvCgVpdGVtcxgBIAMoCzIgLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXISIAoKdG90YWxfc2l6ZRgKIAEoBUIHukgEGgIoAEgAiAEBEiUKD25leHRfcGFnZV90b2tlbhgLIAEoCUIHukgEcgIQAUgBiAEBQg0KC190b3RhbF9zaXplQhIKEF9uZXh0X3BhZ2VfdG9rZW4iTwoRR2V0Q2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiTwoSR2V0Q2x1c3RlclJlc3BvbnNlEjkKB2NsdXN0ZXIYASABKAsyIC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyQga6SAPIAQEixAIKFENyZWF0ZUNsdXN0ZXJSZXF1ZXN0EjkKB2NsdXN0ZXIYASABKAsyIC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyQga6SAPIAQE68AG6SOwBGukBCiJjcmVhdGVfY2x1c3Rlci5ub19yZWFkX29ubHlfZmllbGRzEk5yZWFkLW9ubHkgZmllbGRzIChpZCwgY3JlYXRlZF9hdCwgZGVsZXRlZF9hdCwgc3RhdGUpIG11c3Qgbm90IGJlIHNldCBvbiBjcmVhdGUac3RoaXMuY2x1c3Rlci5pZCA9PSAnJyAmJiAhaGFzKHRoaXMuY2x1c3Rlci5jcmVhdGVkX2F0KSAmJiAhaGFzKHRoaXMuY2x1c3Rlci5kZWxldGVkX2F0KSAmJiAhaGFzKHRoaXMuY2x1c3Rlci5zdGF0ZSkiuwEKFUNyZWF0ZUNsdXN0ZXJSZXNwb25zZRI5CgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckIGukgDyAEBOme6SGQaYgocY3JlYXRlX2NsdXN0ZXIuc3RhdGVfcHJlc2VudBIpc3RhdGUgaXMgcmVxdWlyZWQgZm9yIGFuIGV4aXN0aW5nIGNsdXN0ZXIaF2hhcyh0aGlzLmNsdXN0ZXIuc3RhdGUpIrABChRVcGRhdGVDbHVzdGVyUmVxdWVzdBI5CgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckIGukgDyAEBOl26SFoaWAoZdXBkYXRlX2NsdXN0ZXIuaWRfcHJlc2VudBIkY2x1c3Rlci5pZCBpcyByZXF1aXJlZCBmb3IgYW4gdXBkYXRlGhV0aGlzLmNsdXN0ZXIuaWQgIT0gJyciuwEKFVVwZGF0ZUNsdXN0ZXJSZXNwb25zZRI5CgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckIGukgDyAEBOme6SGQaYgocdXBkYXRlX2NsdXN0ZXIuc3RhdGVfcHJlc2VudBIpc3RhdGUgaXMgcmVxdWlyZWQgZm9yIGFuIGV4aXN0aW5nIGNsdXN0ZXIaF2hhcyh0aGlzLmNsdXN0ZXIuc3RhdGUpIoIBChREZWxldGVDbHVzdGVyUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIcCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABARIbCg5kZWxldGVfYmFja3VwcxgDIAEoCEgAiAEBQhEKD19kZWxldGVfYmFja3VwcyIXChVEZWxldGVDbHVzdGVyUmVzcG9uc2UiUwoVUmVzdGFydENsdXN0ZXJSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBIhgKFlJlc3RhcnRDbHVzdGVyUmVzcG9uc2UiUwoVU3VzcGVuZENsdXN0ZXJSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBIhgKFlN1c3BlbmRDbHVzdGVyUmVzcG9uc2UiVQoXVW5zdXNwZW5kQ2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiGgoYVW5zdXNwZW5kQ2x1c3RlclJlc3BvbnNlIlkKG0VuYWJsZUNsdXN0ZXJKd3RSYmFjUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIcCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABASIeChxFbmFibGVDbHVzdGVySnd0UmJhY1Jlc3BvbnNlIjkKGVN1Z2dlc3RDbHVzdGVyTmFtZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiMwoaU3VnZ2VzdENsdXN0ZXJOYW1lUmVzcG9uc2USFQoEbmFtZRgBIAEoCUIHukgEcgIQASJrChlMaXN0UWRyYW50UmVsZWFzZXNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEiEKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBSACIAQFCDQoLX2NsdXN0ZXJfaWQiUwoaTGlzdFFkcmFudFJlbGVhc2VzUmVzcG9uc2USNQoFaXRlbXMYASADKAsyJi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5RZHJhbnRSZWxlYXNlIlEKF0dldFFkcmFudFJlbGVhc2VSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhgKB3ZlcnNpb24YAiABKAlCB7pIBHICEAEiWwoYR2V0UWRyYW50UmVsZWFzZVJlc3BvbnNlEj8KB3JlbGVhc2UYASABKAsyJi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5RZHJhbnRSZWxlYXNlQga6SAPIAQEi1ggKB0NsdXN0ZXISCgoCaWQYASABKAkSLgoKY3JlYXRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHAoKYWNjb3VudF9pZBgDIAEoCUIIukgFcgOwAQESKQoEbmFtZRgEIAEoCUIbukgYchYQAhhAMhBeW2EtekEtWjAtOS1fXSskEi4KCmRlbGV0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiIKEWNsb3VkX3Byb3ZpZGVyX2lkGAogASgJQge6SARyAhADEikKGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgLIAEoCUIHukgEcgIQARI6CgZsYWJlbHMYDCADKAsyIC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLktleVZhbHVlQgi6SAWSAQIQChKyAQoVY29zdF9hbGxvY2F0aW9uX2xhYmVsGA0gASgJQo0BukiJAXKGARj9ATKAAV4oW2EtejAtOUEtWl0oWy1hLXowLTlBLVpdKlthLXowLTlBLVpdKT8oXC5bYS16MC05QS1aXShbLWEtejAtOUEtWl0qW2EtejAtOUEtWl0pPykqXC8pPyhbQS1aYS16MC05XVstQS1aYS16MC05Xy5dKik/W0EtWmEtejAtOV0kSACIAQESTAoNY29uZmlndXJhdGlvbhgUIAEoCzItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJDb25maWd1cmF0aW9uQga6SAPIAQESNAoFc3RhdGUYZCABKAsyJS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyU3RhdGU6twO6SLMDGqMBCgpjbHVzdGVyLmlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp5dGhpcy5pZC5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpIHx8ICFoYXModGhpcy5jcmVhdGVkX2F0KRqKAgogY2x1c3Rlci5jbG91ZF9wcm92aWRlcl9yZWdpb25faWQSSGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCBtdXN0IGJlIGEgVVVJRCBpZiBjbG91ZF9wcm92aWRlcl9pZCBpcyAnaHlicmlkJxqbAXRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgfHwgdGhpcy5jbG91ZF9wcm92aWRlcl9pZCE9ICdoeWJyaWQnQhgKFl9jb3N0X2FsbG9jYXRpb25fbGFiZWwigA0KFENsdXN0ZXJDb25maWd1cmF0aW9uEjQKEGxhc3RfbW9kaWZpZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiAKD251bWJlcl9vZl9ub2RlcxgCIAEoDUIHukgEKgIoARI8Cgd2ZXJzaW9uGAMgASgJQia6SCNyITIfXih2KFxkKylcLihcZCspXC4oXGQrKXxsYXRlc3QpJEgAiAEBEhwKCnBhY2thZ2VfaWQYBCABKAlCCLpIBXIDsAEBEk8KFGFkZGl0aW9uYWxfcmVzb3VyY2VzGAUgASgLMiwucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQWRkaXRpb25hbFJlc291cmNlc0gBiAEBElMKFmRhdGFiYXNlX2NvbmZpZ3VyYXRpb24YByABKAsyLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25IAogBARJBCg1ub2RlX3NlbGVjdG9yGAggAygLMiAucWRyYW50LmNsb3VkLmNvbW1vbi52MS5LZXlWYWx1ZUIIukgFkgECEAoSQgoLdG9sZXJhdGlvbnMYCSADKAsyIy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5Ub2xlcmF0aW9uQgi6SAWSAQIQChI/Cgthbm5vdGF0aW9ucxgKIAMoCzIgLnFkcmFudC5jbG91ZC5jb21tb24udjEuS2V5VmFsdWVCCLpIBZIBAhAKEjEKGGFsbG93ZWRfaXBfc291cmNlX3JhbmdlcxgLIAMoCUIPukgMkgEJECgiBXID8AEBElIKDHNlcnZpY2VfdHlwZRgMIAEoDjIrLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJTZXJ2aWNlVHlwZUIKukgHggEEEAEgAEgDiAEBEkcKE3NlcnZpY2VfYW5ub3RhdGlvbnMYDSADKAsyIC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLktleVZhbHVlQgi6SAWSAQIQQBI+Cgpwb2RfbGFiZWxzGA4gAygLMiAucWRyYW50LmNsb3VkLmNvbW1vbi52MS5LZXlWYWx1ZUIIukgFkgECEAoSLwoXcmVzZXJ2ZWRfY3B1X3BlcmNlbnRhZ2UYFCABKA1CCbpIBioEGFAoAUgEiAEBEjIKGnJlc2VydmVkX21lbW9yeV9wZXJjZW50YWdlGBUgASgNQgm6SAYqBBhQKAFIBYgBARJXCghncHVfdHlwZRgWIAEoDjI0LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJDb25maWd1cmF0aW9uR3B1VHlwZUIKukgHggEEEAEgAEgGiAEBEmMKDnJlc3RhcnRfcG9saWN5GBcgASgOMjoucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckNvbmZpZ3VyYXRpb25SZXN0YXJ0UG9saWN5Qgq6SAeCAQQQASAASAeIAQESawoScmViYWxhbmNlX3N0cmF0ZWd5GBggASgOMj4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckNvbmZpZ3VyYXRpb25SZWJhbGFuY2VTdHJhdGVneUIKukgHggEEEAEgAEgIiAEBEl8KG3RvcG9sb2d5X3NwcmVhZF9jb25zdHJhaW50cxgZIAMoCzIwLnFkcmFudC5jbG91ZC5jb21tb24udjEuVG9wb2xvZ3lTcHJlYWRDb25zdHJhaW50Qgi6SAWSAQIQChJgCh1jbHVzdGVyX3N0b3JhZ2VfY29uZmlndXJhdGlvbhgaIAEoCzI0LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJTdG9yYWdlQ29uZmlndXJhdGlvbkgJiAEBQgoKCF92ZXJzaW9uQhcKFV9hZGRpdGlvbmFsX3Jlc291cmNlc0IZChdfZGF0YWJhc2VfY29uZmlndXJhdGlvbkIPCg1fc2VydmljZV90eXBlQhoKGF9yZXNlcnZlZF9jcHVfcGVyY2VudGFnZUIdChtfcmVzZXJ2ZWRfbWVtb3J5X3BlcmNlbnRhZ2VCCwoJX2dwdV90eXBlQhEKD19yZXN0YXJ0X3BvbGljeUIVChNfcmViYWxhbmNlX3N0cmF0ZWd5QiAKHl9jbHVzdGVyX3N0b3JhZ2VfY29uZmlndXJhdGlvbiKrBQoVRGF0YWJhc2VDb25maWd1cmF0aW9uElEKCmNvbGxlY3Rpb24YASABKAsyOC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uSACIAQESSwoHc3RvcmFnZRgCIAEoCzI1LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvblN0b3JhZ2VIAYgBARJLCgdzZXJ2aWNlGAMgASgLMjUucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uU2VydmljZUgCiAEBEloKCWxvZ19sZXZlbBgEIAEoDjI2LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvbkxvZ0xldmVsQgq6SAeCAQQQASAASAOIAQESQwoDdGxzGAUgASgLMjEucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uVGxzSASIAQESTwoJaW5mZXJlbmNlGAYgASgLMjcucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uSW5mZXJlbmNlSAWIAQESVgoNYXVkaXRfbG9nZ2luZxgHIAEoCzI6LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvbkF1ZGl0TG9nZ2luZ0gGiAEBQg0KC19jb2xsZWN0aW9uQgoKCF9zdG9yYWdlQgoKCF9zZXJ2aWNlQgwKCl9sb2dfbGV2ZWxCBgoEX3Rsc0IMCgpfaW5mZXJlbmNlQhAKDl9hdWRpdF9sb2dnaW5nIpICCh9EYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uEigKEnJlcGxpY2F0aW9uX2ZhY3RvchgBIAEoDUIHukgEKgIoAUgAiAEBEi4KGHdyaXRlX2NvbnNpc3RlbmN5X2ZhY3RvchgCIAEoBUIHukgEGgIoAUgBiAEBElUKB3ZlY3RvcnMYAyABKAsyPy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uVmVjdG9yc0gCiAEBQhUKE19yZXBsaWNhdGlvbl9mYWN0b3JCGwoZX3dyaXRlX2NvbnNpc3RlbmN5X2ZhY3RvckIKCghfdmVjdG9ycyJKCiZEYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uVmVjdG9ycxIUCgdvbl9kaXNrGAEgASgISACIAQFCCgoIX29uX2Rpc2siigEKHERhdGFiYXNlQ29uZmlndXJhdGlvblN0b3JhZ2USWgoLcGVyZm9ybWFuY2UYASABKAsyQC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25TdG9yYWdlUGVyZm9ybWFuY2VIAIgBAUIOCgxfcGVyZm9ybWFuY2UikQEKJ0RhdGFiYXNlQ29uZmlndXJhdGlvblN0b3JhZ2VQZXJmb3JtYW5jZRIhChRvcHRpbWl6ZXJfY3B1X2J1ZGdldBgBIAEoBUgAiAEBEhkKDGFzeW5jX3Njb3JlchgCIAEoCEgBiAEBQhcKFV9vcHRpbWl6ZXJfY3B1X2J1ZGdldEIPCg1fYXN5bmNfc2NvcmVyIvABChxEYXRhYmFzZUNvbmZpZ3VyYXRpb25TZXJ2aWNlEjoKB2FwaV9rZXkYASABKAsyJC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlNlY3JldEtleVJlZkgAiAEBEkQKEXJlYWRfb25seV9hcGlfa2V5GAIgASgLMiQucWRyYW50LmNsb3VkLmNvbW1vbi52MS5TZWNyZXRLZXlSZWZIAYgBARIXCgplbmFibGVfdGxzGAQgASgISAKIAQFCCgoIX2FwaV9rZXlCFAoSX3JlYWRfb25seV9hcGlfa2V5Qg0KC19lbmFibGVfdGxzSgQIAxAEIpEBChhEYXRhYmFzZUNvbmZpZ3VyYXRpb25UbHMSOgoEY2VydBgBIAEoCzIkLnFkcmFudC5jbG91ZC5jb21tb24udjEuU2VjcmV0S2V5UmVmQga6SAPIAQESOQoDa2V5GAIgASgLMiQucWRyYW50LmNsb3VkLmNvbW1vbi52MS5TZWNyZXRLZXlSZWZCBrpIA8gBASIxCh5EYXRhYmFzZUNvbmZpZ3VyYXRpb25JbmZlcmVuY2USDwoHZW5hYmxlZBgBIAEoCCIjChNBZGRpdGlvbmFsUmVzb3VyY2VzEgwKBGRpc2sYAyABKA0i/wEKIURhdGFiYXNlQ29uZmlndXJhdGlvbkF1ZGl0TG9nZ2luZxIPCgdlbmFibGVkGAEgASgIEkAKCHJvdGF0aW9uGAIgASgOMikucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQXVkaXRMb2dSb3RhdGlvbkgAiAEBEiYKDW1heF9sb2dfZmlsZXMYAyABKA1CCrpIByoFGOgHKAFIAYgBARIkChd0cnVzdF9mb3J3YXJkZWRfaGVhZGVycxgEIAEoCEgCiAEBQgsKCV9yb3RhdGlvbkIQCg5fbWF4X2xvZ19maWxlc0IaChhfdHJ1c3RfZm9yd2FyZGVkX2hlYWRlcnMi8wkKClRvbGVyYXRpb24SGgoDa2V5GAEgASgJQgi6SAVyAxi9AkgAiAEBEk4KCG9wZXJhdG9yGAIgASgOMisucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVG9sZXJhdGlvbk9wZXJhdG9yQgq6SAeCAQQQASAASAGIAQESRgoFdmFsdWUYAyABKAlCMrpIL3ItMisoKFtBLVphLXowLTldWy1BLVphLXowLTlfLl0qKT9bQS1aYS16MC05XSk/SAKIAQESSgoGZWZmZWN0GAQgASgOMikucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVG9sZXJhdGlvbkVmZmVjdEIKukgHggEEEAEgAEgDiAEBEigKEnRvbGVyYXRpb25fc2Vjb25kcxgFIAEoBEIHukgEMgIoAEgEiAEBOvkGukj1Bhp0Cht0b2xlcmF0aW9uLnZhbHVlX2Zvcl9leGlzdHMSLXZhbHVlIG11c3Qgbm90IGJlIHNldCB3aGVuIG9wZXJhdG9yIGlzIEV4aXN0cxomdGhpcy5vcGVyYXRvciAhPSAxIHx8ICFoYXModGhpcy52YWx1ZSkargEKGnRvbGVyYXRpb24udmFsdWVfZm9yX2VxdWFsElF2YWx1ZSBtdXN0IGJlIHNldCB3aGVuIG9wZXJhdG9yIGlzIEVxdWFsIChvciBpcyBub3Qgc2V0LCB3aGljaCBkZWZhdWx0cyB0byBFcXVhbCkaPShoYXModGhpcy5vcGVyYXRvcikgJiYgdGhpcy5vcGVyYXRvciAhPSAyKSB8fCBoYXModGhpcy52YWx1ZSkapwIKInRvbGVyYXRpb24ua2V5X2Zvcm1hdF93aGVuX3ByZXNlbnQSRGtleSBtdXN0IGJlIGEgdmFsaWQgS3ViZXJuZXRlcyBxdWFsaWZpZWQgbmFtZSB3aGVuIHNldCBhbmQgbm9uLWVtcHR5GroBIWhhcyh0aGlzLmtleSkgfHwgdGhpcy5rZXkgPT0gJycgfHwgdGhpcy5rZXkubWF0Y2hlcygnXihbQS1aYS16MC05XShbLUEtWmEtejAtOV0qW0EtWmEtejAtOV0pPyhcXC5bQS1aYS16MC05XShbLUEtWmEtejAtOV0qW0EtWmEtejAtOV0pPykqXFwvKT8oW0EtWmEtejAtOV1bLUEtWmEtejAtOV8uXSopP1tBLVphLXowLTldJCcpGooBCiR0b2xlcmF0aW9uLmtleV9lbXB0eV9yZXF1aXJlc19leGlzdHMSKW9wZXJhdG9yIG11c3QgYmUgJ0V4aXN0cycgaWYga2V5IGlzIGVtcHR5GjcoaGFzKHRoaXMua2V5KSAmJiB0aGlzLmtleSAhPSAnJykgfHwgdGhpcy5vcGVyYXRvciA9PSAxGpQBCiV0b2xlcmF0aW9uLnNlY29uZHNfb25seV9mb3Jfbm9leGVjdXRlEjh0b2xlcmF0aW9uU2Vjb25kcyBpcyBvbmx5IHZhbGlkIHdoZW4gZWZmZWN0IGlzIE5vRXhlY3V0ZRoxIWhhcyh0aGlzLnRvbGVyYXRpb25fc2Vjb25kcykgfHwgdGhpcy5lZmZlY3QgPT0gM0IGCgRfa2V5QgsKCV9vcGVyYXRvckIICgZfdmFsdWVCCQoHX2VmZmVjdEIVChNfdG9sZXJhdGlvbl9zZWNvbmRzIoUDChtDbHVzdGVyU3RvcmFnZUNvbmZpZ3VyYXRpb24SQgoRc3RvcmFnZV90aWVyX3R5cGUYASABKA4yJy5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlN0b3JhZ2VUaWVyVHlwZRIsChZkYXRhYmFzZV9zdG9yYWdlX2NsYXNzGAIgASgJQge6SARyAhABSACIAQESLAoWc25hcHNob3Rfc3RvcmFnZV9jbGFzcxgDIAEoCUIHukgEcgIQAUgBiAEBEisKFXZvbHVtZV9zbmFwc2hvdF9jbGFzcxgEIAEoCUIHukgEcgIQAUgCiAEBEi0KF3ZvbHVtZV9hdHRyaWJ1dGVzX2NsYXNzGAUgASgJQge6SARyAhABSAOIAQFCGQoXX2RhdGFiYXNlX3N0b3JhZ2VfY2xhc3NCGQoXX3NuYXBzaG90X3N0b3JhZ2VfY2xhc3NCGAoWX3ZvbHVtZV9zbmFwc2hvdF9jbGFzc0IaChhfdm9sdW1lX2F0dHJpYnV0ZXNfY2xhc3Mi7wMKDENsdXN0ZXJTdGF0ZRIYCgd2ZXJzaW9uGAEgASgJQge6SARyAhABEhAKCG5vZGVzX3VwGAIgASgNEjAKDHJlc3RhcnRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPgoFcGhhc2UYBCABKA4yJS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyUGhhc2VCCLpIBYIBAhABEg4KBnJlYXNvbhgFIAEoCRJCCghlbmRwb2ludBgGIAEoCzIoLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJFbmRwb2ludEIGukgDyAEBEk8KCXJlc291cmNlcxgHIAEoCzI0LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJOb2RlUmVzb3VyY2VzU3VtbWFyeUIGukgDyAEBElEKEHNjYWxhYmlsaXR5X2luZm8YCCABKAsyLy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyU2NhbGFiaWxpdHlJbmZvQga6SAPIAQESNwoFbm9kZXMYCSADKAsyKC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyTm9kZUluZm8SEAoIand0X3JiYWMYCiABKAginwIKD0NsdXN0ZXJOb2RlSW5mbxIVCgRuYW1lGAEgASgJQge6SARyAhABEi4KCnN0YXJ0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB3ZlcnNpb24YAyABKAkSOgoIZW5kcG9pbnQYBCABKAsyKC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyRW5kcG9pbnQSQgoFc3RhdGUYCiABKA4yKS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyTm9kZVN0YXRlQgi6SAWCAQIQARIeChFhdmFpbGFiaWxpdHlfem9uZRgLIAEoCUgAiAEBQhQKEl9hdmFpbGFiaWxpdHlfem9uZSJgCg9DbHVzdGVyRW5kcG9pbnQSFQoDdXJsGAEgASgJQgi6SAVyA4gBARIaCglyZXN0X3BvcnQYAiABKAVCB7pIBBoCIAASGgoJZ3JwY19wb3J0GAMgASgFQge6SAQaAiAAIrMCChtDbHVzdGVyTm9kZVJlc291cmNlc1N1bW1hcnkSQwoEZGlzaxgBIAEoCzItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJOb2RlUmVzb3VyY2VzQga6SAPIAQESQgoDcmFtGAIgASgLMi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXNCBrpIA8gBARJCCgNjcHUYAyABKAsyLS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyTm9kZVJlc291cmNlc0IGukgDyAEBEj8KA2dwdRgEIAEoCzItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJOb2RlUmVzb3VyY2VzSACIAQFCBgoEX2dwdSLEAQoUQ2x1c3Rlck5vZGVSZXNvdXJjZXMSHAoEYmFzZRgBIAEoAUIOukgLEgkpAAAAAAAAAAASJQoNY29tcGxpbWVudGFyeRgCIAEoAUIOukgLEgkpAAAAAAAAAAASIgoKYWRkaXRpb25hbBgDIAEoAUIOukgLEgkpAAAAAAAAAAASIAoIcmVzZXJ2ZWQYBCABKAFCDrpICxIJKQAAAAAAAAAAEiEKCWF2YWlsYWJsZRgFIAEoAUIOukgLEgkpAAAAAAAAAAAikAEKFkNsdXN0ZXJTY2FsYWJpbGl0eUluZm8STQoGc3RhdHVzGAEgASgOMjEucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlclNjYWxhYmlsaXR5U3RhdHVzQgq6SAeCAQQQASAAEhwKBnJlYXNvbhgCIAEoCUIHukgEcgIQAUgAiAEBQgkKB19yZWFzb24izwEKDVFkcmFudFJlbGVhc2USGAoHdmVyc2lvbhgBIAEoCUIHukgEcgIQARIPCgdkZWZhdWx0GAIgASgIEigKEXJlbGVhc2Vfbm90ZXNfdXJsGAMgASgJQgi6SAVyA4gBAUgAiAEBEh0KB3JlbWFya3MYBCABKAlCB7pIBHICEAFIAYgBARITCgtlbmRfb2ZfbGlmZRgFIAEoCBITCgt1bmF2YWlsYWJsZRgGIAEoCEIUChJfcmVsZWFzZV9ub3Rlc191cmxCCgoIX3JlbWFya3MijgEKHkNyZWF0ZUNsdXN0ZXJGcm9tQmFja3VwUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIbCgliYWNrdXBfaWQYAiABKAlCCLpIBXIDsAEBEjEKDGNsdXN0ZXJfbmFtZRgDIAEoCUIbukgYchYQBBhAMhBeW2EtekEtWjAtOS1fXSskIlwKH0NyZWF0ZUNsdXN0ZXJGcm9tQmFja3VwUmVzcG9uc2USOQoHY2x1c3RlchgBIAEoCzIgLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJCBrpIA8gBASqrAQoSQ2x1c3RlclNlcnZpY2VUeXBlEiQKIENMVVNURVJfU0VSVklDRV9UWVBFX1VOU1BFQ0lGSUVEEAASIwofQ0xVU1RFUl9TRVJWSUNFX1RZUEVfQ0xVU1RFUl9JUBABEiIKHkNMVVNURVJfU0VSVklDRV9UWVBFX05PREVfUE9SVBACEiYKIkNMVVNURVJfU0VSVklDRV9UWVBFX0xPQURfQkFMQU5DRVIQAyqgAQobQ2x1c3RlckNvbmZpZ3VyYXRpb25HcHVUeXBlEi4KKkNMVVNURVJfQ09ORklHVVJBVElPTl9HUFVfVFlQRV9VTlNQRUNJRklFRBAAEikKJUNMVVNURVJfQ09ORklHVVJBVElPTl9HUFVfVFlQRV9OVklESUEQARImCiJDTFVTVEVSX0NPTkZJR1VSQVRJT05fR1BVX1RZUEVfQU1EEAIq8gEKIUNsdXN0ZXJDb25maWd1cmF0aW9uUmVzdGFydFBvbGljeRI0CjBDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVTVEFSVF9QT0xJQ1lfVU5TUEVDSUZJRUQQABIwCixDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVTVEFSVF9QT0xJQ1lfUk9MTElORxABEjEKLUNMVVNURVJfQ09ORklHVVJBVElPTl9SRVNUQVJUX1BPTElDWV9QQVJBTExFTBACEjIKLkNMVVNURVJfQ09ORklHVVJBVElPTl9SRVNUQVJUX1BPTElDWV9BVVRPTUFUSUMQAyqOAgolQ2x1c3RlckNvbmZpZ3VyYXRpb25SZWJhbGFuY2VTdHJhdGVneRI4CjRDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVCQUxBTkNFX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASNQoxQ0xVU1RFUl9DT05GSUdVUkFUSU9OX1JFQkFMQU5DRV9TVFJBVEVHWV9CWV9DT1VOVBABEjQKMENMVVNURVJfQ09ORklHVVJBVElPTl9SRUJBTEFOQ0VfU1RSQVRFR1lfQllfU0laRRACEj4KOkNMVVNURVJfQ09ORklHVVJBVElPTl9SRUJBTEFOQ0VfU1RSQVRFR1lfQllfQ09VTlRfQU5EX1NJWkUQAyrVAgodRGF0YWJhc2VDb25maWd1cmF0aW9uTG9nTGV2ZWwSMAosREFUQUJBU0VfQ09ORklHVVJBVElPTl9MT0dfTEVWRUxfVU5TUEVDSUZJRUQQABIqCiZEQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9UUkFDRRABEioKJkRBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX0RFQlVHEAISKQolREFUQUJBU0VfQ09ORklHVVJBVElPTl9MT0dfTEVWRUxfSU5GTxADEikKJURBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX1dBUk4QBBIqCiZEQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9FUlJPUhAFEigKJERBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX09GRhAGKnMKEEF1ZGl0TG9nUm90YXRpb24SIgoeQVVESVRfTE9HX1JPVEFUSU9OX1VOU1BFQ0lGSUVEEAASHAoYQVVESVRfTE9HX1JPVEFUSU9OX0RBSUxZEAESHQoZQVVESVRfTE9HX1JPVEFUSU9OX0hPVVJMWRACKngKElRvbGVyYXRpb25PcGVyYXRvchIjCh9UT0xFUkFUSU9OX09QRVJBVE9SX1VOU1BFQ0lGSUVEEAASHgoaVE9MRVJBVElPTl9PUEVSQVRPUl9FWElTVFMQARIdChlUT0xFUkFUSU9OX09QRVJBVE9SX0VRVUFMEAIqpAEKEFRvbGVyYXRpb25FZmZlY3QSIQodVE9MRVJBVElPTl9FRkZFQ1RfVU5TUEVDSUZJRUQQABIhCh1UT0xFUkFUSU9OX0VGRkVDVF9OT19TQ0hFRFVMRRABEigKJFRPTEVSQVRJT05fRUZGRUNUX1BSRUZFUl9OT19TQ0hFRFVMRRACEiAKHFRPTEVSQVRJT05fRUZGRUNUX05PX0VYRUNVVEUQAyrfBAoMQ2x1c3RlclBoYXNlEh0KGUNMVVNURVJfUEhBU0VfVU5TUEVDSUZJRUQQABIaChZDTFVTVEVSX1BIQVNFX0NSRUFUSU5HEAESIgoeQ0xVU1RFUl9QSEFTRV9GQUlMRURfVE9fQ1JFQVRFEAISGgoWQ0xVU1RFUl9QSEFTRV9VUERBVElORxADEiIKHkNMVVNURVJfUEhBU0VfRkFJTEVEX1RPX1VQREFURRAEEhkKFUNMVVNURVJfUEhBU0VfU0NBTElORxAFEhsKF0NMVVNURVJfUEhBU0VfVVBHUkFESU5HEAYSHAoYQ0xVU1RFUl9QSEFTRV9TVVNQRU5ESU5HEAcSGwoXQ0xVU1RFUl9QSEFTRV9TVVNQRU5ERUQQCBIjCh9DTFVTVEVSX1BIQVNFX0ZBSUxFRF9UT19TVVNQRU5EEAkSGgoWQ0xVU1RFUl9QSEFTRV9SRVNVTUlORxAKEiIKHkNMVVNURVJfUEhBU0VfRkFJTEVEX1RPX1JFU1VNRRALEhkKFUNMVVNURVJfUEhBU0VfSEVBTFRIWRAMEhsKF0NMVVNURVJfUEhBU0VfTk9UX1JFQURZEA0SHwobQ0xVU1RFUl9QSEFTRV9SRUNPVkVSWV9NT0RFEA4SJAogQ0xVU1RFUl9QSEFTRV9NQU5VQUxfTUFJTlRFTkFOQ0UQDxIgChxDTFVTVEVSX1BIQVNFX0ZBSUxFRF9UT19TWU5DEBASGwoXQ0xVU1RFUl9QSEFTRV9OT1RfRk9VTkQQERIaChZDTFVTVEVSX1BIQVNFX0RFTEVUSU5HEBIq3gEKEENsdXN0ZXJOb2RlU3RhdGUSIgoeQ0xVU1RFUl9OT0RFX1NUQVRFX1VOU1BFQ0lGSUVEEAASHwobQ0xVU1RFUl9OT0RFX1NUQVRFX1NUQVJUSU5HEAESHgoaQ0xVU1RFUl9OT0RFX1NUQVRFX0hFQUxUSFkQAhIgChxDTFVTVEVSX05PREVfU1RBVEVfVU5IRUFMVEhZEAMSIAocQ0xVU1RFUl9OT0RFX1NUQVRFX1NVU1BFTkRFRBAEEiEKHUNMVVNURVJfTk9ERV9TVEFURV9SRUNPVkVSSU5HEAUqnAEKGENsdXN0ZXJTY2FsYWJpbGl0eVN0YXR1cxIqCiZDTFVTVEVSX1NDQUxBQklMSVRZX1NUQVRVU19VTlNQRUNJRklFRBAAEisKJ0NMVVNURVJfU0NBTEFCSUxJVFlfU1RBVFVTX05PVF9TQ0FMQUJMRRABEicKI0NMVVNURVJfU0NBTEFCSUxJVFlfU1RBVFVTX1NDQUxBQkxFEAIyyx4KDkNsdXN0ZXJTZXJ2aWNlErQBCgxMaXN0Q2x1c3RlcnMSLC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5MaXN0Q2x1c3RlcnNSZXF1ZXN0Gi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuTGlzdENsdXN0ZXJzUmVzcG9uc2UiR4q1GA1yZWFkOmNsdXN0ZXJzgtPkkwIwEi4vYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzEtcBCgpHZXRDbHVzdGVyEioucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuR2V0Q2x1c3RlclJlcXVlc3QaKy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5HZXRDbHVzdGVyUmVzcG9uc2UicIq1GA1yZWFkOmNsdXN0ZXJzurUYGAoKY2x1c3Rlcl9pZBIKY2x1c3Rlcl9pZILT5JMCPRI7L2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9jbHVzdGVycy97Y2x1c3Rlcl9pZH0S2QIKDUNyZWF0ZUNsdXN0ZXISLS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DcmVhdGVDbHVzdGVyUmVxdWVzdBouLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNyZWF0ZUNsdXN0ZXJSZXNwb25zZSLoAYq1GA53cml0ZTpjbHVzdGVyc5K1GBJjbHVzdGVyLmFjY291bnRfaWS6tRgcCgxjbHVzdGVyX25hbWUSDGNsdXN0ZXIubmFtZcrzGFsIARIHY2x1c3RlciIPcmVzcC5jbHVzdGVyLmlkKj0vYWNjb3VudHMve3JlcS5jbHVzdGVyLmFjY291bnRfaWR9L2NsdXN0ZXJzL3tyZXNwLmNsdXN0ZXIuaWR9gtPkkwI7OgEqIjYvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2NsdXN0ZXIuYWNjb3VudF9pZH0vY2x1c3RlcnMStAMKF0NyZWF0ZUNsdXN0ZXJGcm9tQmFja3VwEjcucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ3JlYXRlQ2x1c3RlckZyb21CYWNrdXBSZXF1ZXN0GjgucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ3JlYXRlQ2x1c3RlckZyb21CYWNrdXBSZXNwb25zZSKlAoq1GA9yZXN0b3JlOmJhY2t1cHOKtRgOd3JpdGU6Y2x1c3RlcnOotRgBurUYFgoJYmFja3VwX2lkEgliYWNrdXBfaWS6tRgcCgxjbHVzdGVyX25hbWUSDGNsdXN0ZXJfbmFtZcrzGHQIARIHY2x1c3RlciIPcmVzcC5jbHVzdGVyLmlkKjUvYWNjb3VudHMve3JlcS5hY2NvdW50X2lkfS9jbHVzdGVycy97cmVzcC5jbHVzdGVyLmlkfVIfCg5mcm9tX2JhY2t1cF9pZBINcmVxLmJhY2t1cF9pZILT5JMCRCJCL2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9iYWNrdXBzL3tiYWNrdXBfaWR9L2NsdXN0ZXJzEuACCg1VcGRhdGVDbHVzdGVyEi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVXBkYXRlQ2x1c3RlclJlcXVlc3QaLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5VcGRhdGVDbHVzdGVyUmVzcG9uc2Ui7wGKtRgOd3JpdGU6Y2x1c3RlcnOStRgSY2x1c3Rlci5hY2NvdW50X2lkurUYGAoKY2x1c3Rlcl9pZBIKY2x1c3Rlci5pZMrzGFkIAhIHY2x1c3RlciIOcmVxLmNsdXN0ZXIuaWQqPC9hY2NvdW50cy97cmVxLmNsdXN0ZXIuYWNjb3VudF9pZH0vY2x1c3RlcnMve3JlcS5jbHVzdGVyLmlkfYLT5JMCSDoBKhpDL2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3tjbHVzdGVyLmFjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyLmlkfRK4AgoNRGVsZXRlQ2x1c3RlchItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRlbGV0ZUNsdXN0ZXJSZXF1ZXN0Gi4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGVsZXRlQ2x1c3RlclJlc3BvbnNlIscBirUYD2RlbGV0ZTpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWTK8xhRCAMSB2NsdXN0ZXIiDnJlcS5jbHVzdGVyX2lkKjQvYWNjb3VudHMve3JlcS5hY2NvdW50X2lkfS9jbHVzdGVycy97cmVxLmNsdXN0ZXJfaWR9gtPkkwI9KjsvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfRLLAgoOUmVzdGFydENsdXN0ZXISLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5SZXN0YXJ0Q2x1c3RlclJlcXVlc3QaLy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5SZXN0YXJ0Q2x1c3RlclJlc3BvbnNlItcBirUYDndyaXRlOmNsdXN0ZXJzurUYGAoKY2x1c3Rlcl9pZBIKY2x1c3Rlcl9pZMrzGFoIBBIHY2x1c3RlciIOcmVxLmNsdXN0ZXJfaWQqNC9hY2NvdW50cy97cmVxLmFjY291bnRfaWR9L2NsdXN0ZXJzL3tyZXEuY2x1c3Rlcl9pZH0yB3Jlc3RhcnSC0+STAkUiQy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMve2NsdXN0ZXJfaWR9L3Jlc3RhcnQSywIKDlN1c3BlbmRDbHVzdGVyEi4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VzcGVuZENsdXN0ZXJSZXF1ZXN0Gi8ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VzcGVuZENsdXN0ZXJSZXNwb25zZSLXAYq1GA53cml0ZTpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWTK8xhaCAQSB2NsdXN0ZXIiDnJlcS5jbHVzdGVyX2lkKjQvYWNjb3VudHMve3JlcS5hY2NvdW50X2lkfS9jbHVzdGVycy97cmVxLmNsdXN0ZXJfaWR9MgdzdXNwZW5kgtPkkwJFIkMvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfS9zdXNwZW5kEtUCChBVbnN1c3BlbmRDbHVzdGVyEjAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVW5zdXNwZW5kQ2x1c3RlclJlcXVlc3QaMS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5VbnN1c3BlbmRDbHVzdGVyUmVzcG9uc2Ui2wGKtRgOd3JpdGU6Y2x1c3RlcnO6tRgYCgpjbHVzdGVyX2lkEgpjbHVzdGVyX2lkyvMYXAgEEgdjbHVzdGVyIg5yZXEuY2x1c3Rlcl9pZCo0L2FjY291bnRzL3tyZXEuYWNjb3VudF9pZH0vY2x1c3RlcnMve3JlcS5jbHVzdGVyX2lkfTIJdW5zdXNwZW5kgtPkkwJHIkUvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfS91bnN1c3BlbmQS6QIKFEVuYWJsZUNsdXN0ZXJKd3RSYmFjEjQucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRW5hYmxlQ2x1c3Rlckp3dFJiYWNSZXF1ZXN0GjUucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRW5hYmxlQ2x1c3Rlckp3dFJiYWNSZXNwb25zZSLjAYq1GA53cml0ZTpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWTK8xhjCAQSB2NsdXN0ZXIiDnJlcS5jbHVzdGVyX2lkKjQvYWNjb3VudHMve3JlcS5hY2NvdW50X2lkfS9jbHVzdGVycy97cmVxLmNsdXN0ZXJfaWR9MhBlbmFibGVkLWp3dC1yYmFjgtPkkwJIIkYvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfS9lbmFibGUtand0EsYBChJTdWdnZXN0Q2x1c3Rlck5hbWUSMi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5TdWdnZXN0Q2x1c3Rlck5hbWVSZXF1ZXN0GjMucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VnZ2VzdENsdXN0ZXJOYW1lUmVzcG9uc2UiR4q1GACC0+STAj0SOy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMvc3VnZ2VzdC1uYW1lEuIBChJMaXN0UWRyYW50UmVsZWFzZXMSMi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5MaXN0UWRyYW50UmVsZWFzZXNSZXF1ZXN0GjMucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuTGlzdFFkcmFudFJlbGVhc2VzUmVzcG9uc2UiY4q1GA1yZWFkOmNsdXN0ZXJzurUYGAoKY2x1c3Rlcl9pZBIKY2x1c3Rlcl9pZILT5JMCMBIuL2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9yZWxlYXNlcxLgAQoQR2V0UWRyYW50UmVsZWFzZRIwLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkdldFFkcmFudFJlbGVhc2VSZXF1ZXN0GjEucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuR2V0UWRyYW50UmVsZWFzZVJlc3BvbnNlImeKtRgNcmVhZDpjbHVzdGVyc7q1GBIKB3ZlcnNpb24SB3ZlcnNpb26C0+STAjoSOC9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcmVsZWFzZXMve3ZlcnNpb259GgbCtRgCCAFC/gEKG2NvbS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MUIMQ2x1c3RlclByb3RvUAFaUmdpdGh1Yi5jb20vcWRyYW50L3FkcmFudC1jbG91ZC1wdWJsaWMtYXBpL2dlbi9nby9xZHJhbnQvY2xvdWQvY2x1c3Rlci92MTtjbHVzdGVydjGiAgNRQ0OqAhdRZHJhbnQuQ2xvdWQuQ2x1c3Rlci5WMcoCF1FkcmFudFxDbG91ZFxDbHVzdGVyXFYx4gIjUWRyYW50XENsb3VkXENsdXN0ZXJcVjFcR1BCTWV0YWRhdGHqAhpRZHJhbnQ6OkNsb3VkOjpDbHVzdGVyOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_timestamp, file_qdrant_cloud_common_v1_common, file_qdrant_cloud_event_v1_events]); + fileDesc("CiVxZHJhbnQvY2xvdWQvY2x1c3Rlci92MS9jbHVzdGVyLnByb3RvEhdxZHJhbnQuY2xvdWQuY2x1c3Rlci52MSLqBQoTTGlzdENsdXN0ZXJzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARInChFjbG91ZF9wcm92aWRlcl9pZBgKIAEoCUIHukgEcgIQA0gAiAEBEi4KGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgLIAEoCUIHukgEcgIQAUgBiAEBEiIKCXBhZ2Vfc2l6ZRgUIAEoBUIKukgHGgUY+gEgAEgCiAEBEiAKCnBhZ2VfdG9rZW4YFSABKAlCB7pIBHICEAFIA4gBATrFA7pIwQMasQEKJ2xpc3RfY2x1c3RlcnMuY2xvdWRfcHJvdmlkZXJfaWRfcHJlc2VudBJCY2xvdWRfcHJvdmlkZXJfaWQgaXMgcmVxdWlyZWQgd2hlbiBjbG91ZF9wcm92aWRlcl9yZWdpb25faWQgaXMgc2V0GkIhaGFzKHRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkKSB8fCBoYXModGhpcy5jbG91ZF9wcm92aWRlcl9pZCkaigIKIGNsdXN0ZXIuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkEkhjbG91ZF9wcm92aWRlcl9yZWdpb25faWQgbXVzdCBiZSBhIFVVSUQgaWYgY2xvdWRfcHJvdmlkZXJfaWQgaXMgJ2h5YnJpZCcamwF0aGlzLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZC5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpIHx8IHRoaXMuY2xvdWRfcHJvdmlkZXJfaWQhPSAnaHlicmlkJ0IUChJfY2xvdWRfcHJvdmlkZXJfaWRCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZEIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuIrMBChRMaXN0Q2x1c3RlcnNSZXNwb25zZRIvCgVpdGVtcxgBIAMoCzIgLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXISIAoKdG90YWxfc2l6ZRgKIAEoBUIHukgEGgIoAEgAiAEBEiUKD25leHRfcGFnZV90b2tlbhgLIAEoCUIHukgEcgIQAUgBiAEBQg0KC190b3RhbF9zaXplQhIKEF9uZXh0X3BhZ2VfdG9rZW4iTwoRR2V0Q2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiTwoSR2V0Q2x1c3RlclJlc3BvbnNlEjkKB2NsdXN0ZXIYASABKAsyIC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyQga6SAPIAQEixAIKFENyZWF0ZUNsdXN0ZXJSZXF1ZXN0EjkKB2NsdXN0ZXIYASABKAsyIC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyQga6SAPIAQE68AG6SOwBGukBCiJjcmVhdGVfY2x1c3Rlci5ub19yZWFkX29ubHlfZmllbGRzEk5yZWFkLW9ubHkgZmllbGRzIChpZCwgY3JlYXRlZF9hdCwgZGVsZXRlZF9hdCwgc3RhdGUpIG11c3Qgbm90IGJlIHNldCBvbiBjcmVhdGUac3RoaXMuY2x1c3Rlci5pZCA9PSAnJyAmJiAhaGFzKHRoaXMuY2x1c3Rlci5jcmVhdGVkX2F0KSAmJiAhaGFzKHRoaXMuY2x1c3Rlci5kZWxldGVkX2F0KSAmJiAhaGFzKHRoaXMuY2x1c3Rlci5zdGF0ZSkiuwEKFUNyZWF0ZUNsdXN0ZXJSZXNwb25zZRI5CgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckIGukgDyAEBOme6SGQaYgocY3JlYXRlX2NsdXN0ZXIuc3RhdGVfcHJlc2VudBIpc3RhdGUgaXMgcmVxdWlyZWQgZm9yIGFuIGV4aXN0aW5nIGNsdXN0ZXIaF2hhcyh0aGlzLmNsdXN0ZXIuc3RhdGUpIrABChRVcGRhdGVDbHVzdGVyUmVxdWVzdBI5CgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckIGukgDyAEBOl26SFoaWAoZdXBkYXRlX2NsdXN0ZXIuaWRfcHJlc2VudBIkY2x1c3Rlci5pZCBpcyByZXF1aXJlZCBmb3IgYW4gdXBkYXRlGhV0aGlzLmNsdXN0ZXIuaWQgIT0gJyciuwEKFVVwZGF0ZUNsdXN0ZXJSZXNwb25zZRI5CgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckIGukgDyAEBOme6SGQaYgocdXBkYXRlX2NsdXN0ZXIuc3RhdGVfcHJlc2VudBIpc3RhdGUgaXMgcmVxdWlyZWQgZm9yIGFuIGV4aXN0aW5nIGNsdXN0ZXIaF2hhcyh0aGlzLmNsdXN0ZXIuc3RhdGUpIoIBChREZWxldGVDbHVzdGVyUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIcCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABARIbCg5kZWxldGVfYmFja3VwcxgDIAEoCEgAiAEBQhEKD19kZWxldGVfYmFja3VwcyIXChVEZWxldGVDbHVzdGVyUmVzcG9uc2UiUwoVUmVzdGFydENsdXN0ZXJSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBIhgKFlJlc3RhcnRDbHVzdGVyUmVzcG9uc2UiUwoVU3VzcGVuZENsdXN0ZXJSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBIhgKFlN1c3BlbmRDbHVzdGVyUmVzcG9uc2UiVQoXVW5zdXNwZW5kQ2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiGgoYVW5zdXNwZW5kQ2x1c3RlclJlc3BvbnNlIlkKG0VuYWJsZUNsdXN0ZXJKd3RSYmFjUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIcCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABASIeChxFbmFibGVDbHVzdGVySnd0UmJhY1Jlc3BvbnNlIjkKGVN1Z2dlc3RDbHVzdGVyTmFtZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiMwoaU3VnZ2VzdENsdXN0ZXJOYW1lUmVzcG9uc2USFQoEbmFtZRgBIAEoCUIHukgEcgIQASJrChlMaXN0UWRyYW50UmVsZWFzZXNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEiEKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBSACIAQFCDQoLX2NsdXN0ZXJfaWQiUwoaTGlzdFFkcmFudFJlbGVhc2VzUmVzcG9uc2USNQoFaXRlbXMYASADKAsyJi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5RZHJhbnRSZWxlYXNlIlEKF0dldFFkcmFudFJlbGVhc2VSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhgKB3ZlcnNpb24YAiABKAlCB7pIBHICEAEiWwoYR2V0UWRyYW50UmVsZWFzZVJlc3BvbnNlEj8KB3JlbGVhc2UYASABKAsyJi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5RZHJhbnRSZWxlYXNlQga6SAPIAQEi1ggKB0NsdXN0ZXISCgoCaWQYASABKAkSLgoKY3JlYXRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHAoKYWNjb3VudF9pZBgDIAEoCUIIukgFcgOwAQESKQoEbmFtZRgEIAEoCUIbukgYchYQAhhAMhBeW2EtekEtWjAtOS1fXSskEi4KCmRlbGV0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiIKEWNsb3VkX3Byb3ZpZGVyX2lkGAogASgJQge6SARyAhADEikKGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgLIAEoCUIHukgEcgIQARI6CgZsYWJlbHMYDCADKAsyIC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLktleVZhbHVlQgi6SAWSAQIQChKyAQoVY29zdF9hbGxvY2F0aW9uX2xhYmVsGA0gASgJQo0BukiJAXKGARj9ATKAAV4oW2EtejAtOUEtWl0oWy1hLXowLTlBLVpdKlthLXowLTlBLVpdKT8oXC5bYS16MC05QS1aXShbLWEtejAtOUEtWl0qW2EtejAtOUEtWl0pPykqXC8pPyhbQS1aYS16MC05XVstQS1aYS16MC05Xy5dKik/W0EtWmEtejAtOV0kSACIAQESTAoNY29uZmlndXJhdGlvbhgUIAEoCzItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJDb25maWd1cmF0aW9uQga6SAPIAQESNAoFc3RhdGUYZCABKAsyJS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyU3RhdGU6twO6SLMDGqMBCgpjbHVzdGVyLmlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp5dGhpcy5pZC5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpIHx8ICFoYXModGhpcy5jcmVhdGVkX2F0KRqKAgogY2x1c3Rlci5jbG91ZF9wcm92aWRlcl9yZWdpb25faWQSSGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCBtdXN0IGJlIGEgVVVJRCBpZiBjbG91ZF9wcm92aWRlcl9pZCBpcyAnaHlicmlkJxqbAXRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgfHwgdGhpcy5jbG91ZF9wcm92aWRlcl9pZCE9ICdoeWJyaWQnQhgKFl9jb3N0X2FsbG9jYXRpb25fbGFiZWwigA0KFENsdXN0ZXJDb25maWd1cmF0aW9uEjQKEGxhc3RfbW9kaWZpZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiAKD251bWJlcl9vZl9ub2RlcxgCIAEoDUIHukgEKgIoARI8Cgd2ZXJzaW9uGAMgASgJQia6SCNyITIfXih2KFxkKylcLihcZCspXC4oXGQrKXxsYXRlc3QpJEgAiAEBEhwKCnBhY2thZ2VfaWQYBCABKAlCCLpIBXIDsAEBEk8KFGFkZGl0aW9uYWxfcmVzb3VyY2VzGAUgASgLMiwucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQWRkaXRpb25hbFJlc291cmNlc0gBiAEBElMKFmRhdGFiYXNlX2NvbmZpZ3VyYXRpb24YByABKAsyLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25IAogBARJBCg1ub2RlX3NlbGVjdG9yGAggAygLMiAucWRyYW50LmNsb3VkLmNvbW1vbi52MS5LZXlWYWx1ZUIIukgFkgECEAoSQgoLdG9sZXJhdGlvbnMYCSADKAsyIy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5Ub2xlcmF0aW9uQgi6SAWSAQIQChI/Cgthbm5vdGF0aW9ucxgKIAMoCzIgLnFkcmFudC5jbG91ZC5jb21tb24udjEuS2V5VmFsdWVCCLpIBZIBAhAKEjEKGGFsbG93ZWRfaXBfc291cmNlX3JhbmdlcxgLIAMoCUIPukgMkgEJECgiBXID8AEBElIKDHNlcnZpY2VfdHlwZRgMIAEoDjIrLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJTZXJ2aWNlVHlwZUIKukgHggEEEAEgAEgDiAEBEkcKE3NlcnZpY2VfYW5ub3RhdGlvbnMYDSADKAsyIC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLktleVZhbHVlQgi6SAWSAQIQQBI+Cgpwb2RfbGFiZWxzGA4gAygLMiAucWRyYW50LmNsb3VkLmNvbW1vbi52MS5LZXlWYWx1ZUIIukgFkgECEAoSLwoXcmVzZXJ2ZWRfY3B1X3BlcmNlbnRhZ2UYFCABKA1CCbpIBioEGFAoAUgEiAEBEjIKGnJlc2VydmVkX21lbW9yeV9wZXJjZW50YWdlGBUgASgNQgm6SAYqBBhQKAFIBYgBARJXCghncHVfdHlwZRgWIAEoDjI0LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJDb25maWd1cmF0aW9uR3B1VHlwZUIKukgHggEEEAEgAEgGiAEBEmMKDnJlc3RhcnRfcG9saWN5GBcgASgOMjoucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckNvbmZpZ3VyYXRpb25SZXN0YXJ0UG9saWN5Qgq6SAeCAQQQASAASAeIAQESawoScmViYWxhbmNlX3N0cmF0ZWd5GBggASgOMj4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckNvbmZpZ3VyYXRpb25SZWJhbGFuY2VTdHJhdGVneUIKukgHggEEEAEgAEgIiAEBEl8KG3RvcG9sb2d5X3NwcmVhZF9jb25zdHJhaW50cxgZIAMoCzIwLnFkcmFudC5jbG91ZC5jb21tb24udjEuVG9wb2xvZ3lTcHJlYWRDb25zdHJhaW50Qgi6SAWSAQIQChJgCh1jbHVzdGVyX3N0b3JhZ2VfY29uZmlndXJhdGlvbhgaIAEoCzI0LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJTdG9yYWdlQ29uZmlndXJhdGlvbkgJiAEBQgoKCF92ZXJzaW9uQhcKFV9hZGRpdGlvbmFsX3Jlc291cmNlc0IZChdfZGF0YWJhc2VfY29uZmlndXJhdGlvbkIPCg1fc2VydmljZV90eXBlQhoKGF9yZXNlcnZlZF9jcHVfcGVyY2VudGFnZUIdChtfcmVzZXJ2ZWRfbWVtb3J5X3BlcmNlbnRhZ2VCCwoJX2dwdV90eXBlQhEKD19yZXN0YXJ0X3BvbGljeUIVChNfcmViYWxhbmNlX3N0cmF0ZWd5QiAKHl9jbHVzdGVyX3N0b3JhZ2VfY29uZmlndXJhdGlvbiKrBQoVRGF0YWJhc2VDb25maWd1cmF0aW9uElEKCmNvbGxlY3Rpb24YASABKAsyOC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uSACIAQESSwoHc3RvcmFnZRgCIAEoCzI1LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvblN0b3JhZ2VIAYgBARJLCgdzZXJ2aWNlGAMgASgLMjUucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uU2VydmljZUgCiAEBEloKCWxvZ19sZXZlbBgEIAEoDjI2LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvbkxvZ0xldmVsQgq6SAeCAQQQASAASAOIAQESQwoDdGxzGAUgASgLMjEucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uVGxzSASIAQESTwoJaW5mZXJlbmNlGAYgASgLMjcucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uSW5mZXJlbmNlSAWIAQESVgoNYXVkaXRfbG9nZ2luZxgHIAEoCzI6LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvbkF1ZGl0TG9nZ2luZ0gGiAEBQg0KC19jb2xsZWN0aW9uQgoKCF9zdG9yYWdlQgoKCF9zZXJ2aWNlQgwKCl9sb2dfbGV2ZWxCBgoEX3Rsc0IMCgpfaW5mZXJlbmNlQhAKDl9hdWRpdF9sb2dnaW5nIpICCh9EYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uEigKEnJlcGxpY2F0aW9uX2ZhY3RvchgBIAEoDUIHukgEKgIoAUgAiAEBEi4KGHdyaXRlX2NvbnNpc3RlbmN5X2ZhY3RvchgCIAEoBUIHukgEGgIoAUgBiAEBElUKB3ZlY3RvcnMYAyABKAsyPy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uVmVjdG9yc0gCiAEBQhUKE19yZXBsaWNhdGlvbl9mYWN0b3JCGwoZX3dyaXRlX2NvbnNpc3RlbmN5X2ZhY3RvckIKCghfdmVjdG9ycyJKCiZEYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uVmVjdG9ycxIUCgdvbl9kaXNrGAEgASgISACIAQFCCgoIX29uX2Rpc2siigEKHERhdGFiYXNlQ29uZmlndXJhdGlvblN0b3JhZ2USWgoLcGVyZm9ybWFuY2UYASABKAsyQC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25TdG9yYWdlUGVyZm9ybWFuY2VIAIgBAUIOCgxfcGVyZm9ybWFuY2UikQEKJ0RhdGFiYXNlQ29uZmlndXJhdGlvblN0b3JhZ2VQZXJmb3JtYW5jZRIhChRvcHRpbWl6ZXJfY3B1X2J1ZGdldBgBIAEoBUgAiAEBEhkKDGFzeW5jX3Njb3JlchgCIAEoCEgBiAEBQhcKFV9vcHRpbWl6ZXJfY3B1X2J1ZGdldEIPCg1fYXN5bmNfc2NvcmVyIvABChxEYXRhYmFzZUNvbmZpZ3VyYXRpb25TZXJ2aWNlEjoKB2FwaV9rZXkYASABKAsyJC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlNlY3JldEtleVJlZkgAiAEBEkQKEXJlYWRfb25seV9hcGlfa2V5GAIgASgLMiQucWRyYW50LmNsb3VkLmNvbW1vbi52MS5TZWNyZXRLZXlSZWZIAYgBARIXCgplbmFibGVfdGxzGAQgASgISAKIAQFCCgoIX2FwaV9rZXlCFAoSX3JlYWRfb25seV9hcGlfa2V5Qg0KC19lbmFibGVfdGxzSgQIAxAEIpEBChhEYXRhYmFzZUNvbmZpZ3VyYXRpb25UbHMSOgoEY2VydBgBIAEoCzIkLnFkcmFudC5jbG91ZC5jb21tb24udjEuU2VjcmV0S2V5UmVmQga6SAPIAQESOQoDa2V5GAIgASgLMiQucWRyYW50LmNsb3VkLmNvbW1vbi52MS5TZWNyZXRLZXlSZWZCBrpIA8gBASIxCh5EYXRhYmFzZUNvbmZpZ3VyYXRpb25JbmZlcmVuY2USDwoHZW5hYmxlZBgBIAEoCCIjChNBZGRpdGlvbmFsUmVzb3VyY2VzEgwKBGRpc2sYAyABKA0i/wEKIURhdGFiYXNlQ29uZmlndXJhdGlvbkF1ZGl0TG9nZ2luZxIPCgdlbmFibGVkGAEgASgIEkAKCHJvdGF0aW9uGAIgASgOMikucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQXVkaXRMb2dSb3RhdGlvbkgAiAEBEiYKDW1heF9sb2dfZmlsZXMYAyABKA1CCrpIByoFGOgHKAFIAYgBARIkChd0cnVzdF9mb3J3YXJkZWRfaGVhZGVycxgEIAEoCEgCiAEBQgsKCV9yb3RhdGlvbkIQCg5fbWF4X2xvZ19maWxlc0IaChhfdHJ1c3RfZm9yd2FyZGVkX2hlYWRlcnMi8wkKClRvbGVyYXRpb24SGgoDa2V5GAEgASgJQgi6SAVyAxi9AkgAiAEBEk4KCG9wZXJhdG9yGAIgASgOMisucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVG9sZXJhdGlvbk9wZXJhdG9yQgq6SAeCAQQQASAASAGIAQESRgoFdmFsdWUYAyABKAlCMrpIL3ItMisoKFtBLVphLXowLTldWy1BLVphLXowLTlfLl0qKT9bQS1aYS16MC05XSk/SAKIAQESSgoGZWZmZWN0GAQgASgOMikucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVG9sZXJhdGlvbkVmZmVjdEIKukgHggEEEAEgAEgDiAEBEigKEnRvbGVyYXRpb25fc2Vjb25kcxgFIAEoBEIHukgEMgIoAEgEiAEBOvkGukj1Bhp0Cht0b2xlcmF0aW9uLnZhbHVlX2Zvcl9leGlzdHMSLXZhbHVlIG11c3Qgbm90IGJlIHNldCB3aGVuIG9wZXJhdG9yIGlzIEV4aXN0cxomdGhpcy5vcGVyYXRvciAhPSAxIHx8ICFoYXModGhpcy52YWx1ZSkargEKGnRvbGVyYXRpb24udmFsdWVfZm9yX2VxdWFsElF2YWx1ZSBtdXN0IGJlIHNldCB3aGVuIG9wZXJhdG9yIGlzIEVxdWFsIChvciBpcyBub3Qgc2V0LCB3aGljaCBkZWZhdWx0cyB0byBFcXVhbCkaPShoYXModGhpcy5vcGVyYXRvcikgJiYgdGhpcy5vcGVyYXRvciAhPSAyKSB8fCBoYXModGhpcy52YWx1ZSkapwIKInRvbGVyYXRpb24ua2V5X2Zvcm1hdF93aGVuX3ByZXNlbnQSRGtleSBtdXN0IGJlIGEgdmFsaWQgS3ViZXJuZXRlcyBxdWFsaWZpZWQgbmFtZSB3aGVuIHNldCBhbmQgbm9uLWVtcHR5GroBIWhhcyh0aGlzLmtleSkgfHwgdGhpcy5rZXkgPT0gJycgfHwgdGhpcy5rZXkubWF0Y2hlcygnXihbQS1aYS16MC05XShbLUEtWmEtejAtOV0qW0EtWmEtejAtOV0pPyhcXC5bQS1aYS16MC05XShbLUEtWmEtejAtOV0qW0EtWmEtejAtOV0pPykqXFwvKT8oW0EtWmEtejAtOV1bLUEtWmEtejAtOV8uXSopP1tBLVphLXowLTldJCcpGooBCiR0b2xlcmF0aW9uLmtleV9lbXB0eV9yZXF1aXJlc19leGlzdHMSKW9wZXJhdG9yIG11c3QgYmUgJ0V4aXN0cycgaWYga2V5IGlzIGVtcHR5GjcoaGFzKHRoaXMua2V5KSAmJiB0aGlzLmtleSAhPSAnJykgfHwgdGhpcy5vcGVyYXRvciA9PSAxGpQBCiV0b2xlcmF0aW9uLnNlY29uZHNfb25seV9mb3Jfbm9leGVjdXRlEjh0b2xlcmF0aW9uU2Vjb25kcyBpcyBvbmx5IHZhbGlkIHdoZW4gZWZmZWN0IGlzIE5vRXhlY3V0ZRoxIWhhcyh0aGlzLnRvbGVyYXRpb25fc2Vjb25kcykgfHwgdGhpcy5lZmZlY3QgPT0gM0IGCgRfa2V5QgsKCV9vcGVyYXRvckIICgZfdmFsdWVCCQoHX2VmZmVjdEIVChNfdG9sZXJhdGlvbl9zZWNvbmRzIoUDChtDbHVzdGVyU3RvcmFnZUNvbmZpZ3VyYXRpb24SQgoRc3RvcmFnZV90aWVyX3R5cGUYASABKA4yJy5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlN0b3JhZ2VUaWVyVHlwZRIsChZkYXRhYmFzZV9zdG9yYWdlX2NsYXNzGAIgASgJQge6SARyAhABSACIAQESLAoWc25hcHNob3Rfc3RvcmFnZV9jbGFzcxgDIAEoCUIHukgEcgIQAUgBiAEBEisKFXZvbHVtZV9zbmFwc2hvdF9jbGFzcxgEIAEoCUIHukgEcgIQAUgCiAEBEi0KF3ZvbHVtZV9hdHRyaWJ1dGVzX2NsYXNzGAUgASgJQge6SARyAhABSAOIAQFCGQoXX2RhdGFiYXNlX3N0b3JhZ2VfY2xhc3NCGQoXX3NuYXBzaG90X3N0b3JhZ2VfY2xhc3NCGAoWX3ZvbHVtZV9zbmFwc2hvdF9jbGFzc0IaChhfdm9sdW1lX2F0dHJpYnV0ZXNfY2xhc3Mi7wMKDENsdXN0ZXJTdGF0ZRIYCgd2ZXJzaW9uGAEgASgJQge6SARyAhABEhAKCG5vZGVzX3VwGAIgASgNEjAKDHJlc3RhcnRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPgoFcGhhc2UYBCABKA4yJS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyUGhhc2VCCLpIBYIBAhABEg4KBnJlYXNvbhgFIAEoCRJCCghlbmRwb2ludBgGIAEoCzIoLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJFbmRwb2ludEIGukgDyAEBEk8KCXJlc291cmNlcxgHIAEoCzI0LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJOb2RlUmVzb3VyY2VzU3VtbWFyeUIGukgDyAEBElEKEHNjYWxhYmlsaXR5X2luZm8YCCABKAsyLy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyU2NhbGFiaWxpdHlJbmZvQga6SAPIAQESNwoFbm9kZXMYCSADKAsyKC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyTm9kZUluZm8SEAoIand0X3JiYWMYCiABKAginwIKD0NsdXN0ZXJOb2RlSW5mbxIVCgRuYW1lGAEgASgJQge6SARyAhABEi4KCnN0YXJ0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB3ZlcnNpb24YAyABKAkSOgoIZW5kcG9pbnQYBCABKAsyKC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyRW5kcG9pbnQSQgoFc3RhdGUYCiABKA4yKS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyTm9kZVN0YXRlQgi6SAWCAQIQARIeChFhdmFpbGFiaWxpdHlfem9uZRgLIAEoCUgAiAEBQhQKEl9hdmFpbGFiaWxpdHlfem9uZSJgCg9DbHVzdGVyRW5kcG9pbnQSFQoDdXJsGAEgASgJQgi6SAVyA4gBARIaCglyZXN0X3BvcnQYAiABKAVCB7pIBBoCIAASGgoJZ3JwY19wb3J0GAMgASgFQge6SAQaAiAAIoQDChtDbHVzdGVyTm9kZVJlc291cmNlc1N1bW1hcnkSQwoEZGlzaxgBIAEoCzItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJOb2RlUmVzb3VyY2VzQga6SAPIAQESQgoDcmFtGAIgASgLMi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXNCBrpIA8gBARJCCgNjcHUYAyABKAsyLS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyTm9kZVJlc291cmNlc0IGukgDyAEBEj8KA2dwdRgEIAEoCzItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJOb2RlUmVzb3VyY2VzSACIAQESQwoHZ3B1X3JhbRgFIAEoCzItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJOb2RlUmVzb3VyY2VzSAGIAQFCBgoEX2dwdUIKCghfZ3B1X3JhbSLEAQoUQ2x1c3Rlck5vZGVSZXNvdXJjZXMSHAoEYmFzZRgBIAEoAUIOukgLEgkpAAAAAAAAAAASJQoNY29tcGxpbWVudGFyeRgCIAEoAUIOukgLEgkpAAAAAAAAAAASIgoKYWRkaXRpb25hbBgDIAEoAUIOukgLEgkpAAAAAAAAAAASIAoIcmVzZXJ2ZWQYBCABKAFCDrpICxIJKQAAAAAAAAAAEiEKCWF2YWlsYWJsZRgFIAEoAUIOukgLEgkpAAAAAAAAAAAikAEKFkNsdXN0ZXJTY2FsYWJpbGl0eUluZm8STQoGc3RhdHVzGAEgASgOMjEucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlclNjYWxhYmlsaXR5U3RhdHVzQgq6SAeCAQQQASAAEhwKBnJlYXNvbhgCIAEoCUIHukgEcgIQAUgAiAEBQgkKB19yZWFzb24izwEKDVFkcmFudFJlbGVhc2USGAoHdmVyc2lvbhgBIAEoCUIHukgEcgIQARIPCgdkZWZhdWx0GAIgASgIEigKEXJlbGVhc2Vfbm90ZXNfdXJsGAMgASgJQgi6SAVyA4gBAUgAiAEBEh0KB3JlbWFya3MYBCABKAlCB7pIBHICEAFIAYgBARITCgtlbmRfb2ZfbGlmZRgFIAEoCBITCgt1bmF2YWlsYWJsZRgGIAEoCEIUChJfcmVsZWFzZV9ub3Rlc191cmxCCgoIX3JlbWFya3MijgEKHkNyZWF0ZUNsdXN0ZXJGcm9tQmFja3VwUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIbCgliYWNrdXBfaWQYAiABKAlCCLpIBXIDsAEBEjEKDGNsdXN0ZXJfbmFtZRgDIAEoCUIbukgYchYQBBhAMhBeW2EtekEtWjAtOS1fXSskIlwKH0NyZWF0ZUNsdXN0ZXJGcm9tQmFja3VwUmVzcG9uc2USOQoHY2x1c3RlchgBIAEoCzIgLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJCBrpIA8gBASqrAQoSQ2x1c3RlclNlcnZpY2VUeXBlEiQKIENMVVNURVJfU0VSVklDRV9UWVBFX1VOU1BFQ0lGSUVEEAASIwofQ0xVU1RFUl9TRVJWSUNFX1RZUEVfQ0xVU1RFUl9JUBABEiIKHkNMVVNURVJfU0VSVklDRV9UWVBFX05PREVfUE9SVBACEiYKIkNMVVNURVJfU0VSVklDRV9UWVBFX0xPQURfQkFMQU5DRVIQAyqgAQobQ2x1c3RlckNvbmZpZ3VyYXRpb25HcHVUeXBlEi4KKkNMVVNURVJfQ09ORklHVVJBVElPTl9HUFVfVFlQRV9VTlNQRUNJRklFRBAAEikKJUNMVVNURVJfQ09ORklHVVJBVElPTl9HUFVfVFlQRV9OVklESUEQARImCiJDTFVTVEVSX0NPTkZJR1VSQVRJT05fR1BVX1RZUEVfQU1EEAIq8gEKIUNsdXN0ZXJDb25maWd1cmF0aW9uUmVzdGFydFBvbGljeRI0CjBDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVTVEFSVF9QT0xJQ1lfVU5TUEVDSUZJRUQQABIwCixDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVTVEFSVF9QT0xJQ1lfUk9MTElORxABEjEKLUNMVVNURVJfQ09ORklHVVJBVElPTl9SRVNUQVJUX1BPTElDWV9QQVJBTExFTBACEjIKLkNMVVNURVJfQ09ORklHVVJBVElPTl9SRVNUQVJUX1BPTElDWV9BVVRPTUFUSUMQAyqOAgolQ2x1c3RlckNvbmZpZ3VyYXRpb25SZWJhbGFuY2VTdHJhdGVneRI4CjRDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVCQUxBTkNFX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASNQoxQ0xVU1RFUl9DT05GSUdVUkFUSU9OX1JFQkFMQU5DRV9TVFJBVEVHWV9CWV9DT1VOVBABEjQKMENMVVNURVJfQ09ORklHVVJBVElPTl9SRUJBTEFOQ0VfU1RSQVRFR1lfQllfU0laRRACEj4KOkNMVVNURVJfQ09ORklHVVJBVElPTl9SRUJBTEFOQ0VfU1RSQVRFR1lfQllfQ09VTlRfQU5EX1NJWkUQAyrVAgodRGF0YWJhc2VDb25maWd1cmF0aW9uTG9nTGV2ZWwSMAosREFUQUJBU0VfQ09ORklHVVJBVElPTl9MT0dfTEVWRUxfVU5TUEVDSUZJRUQQABIqCiZEQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9UUkFDRRABEioKJkRBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX0RFQlVHEAISKQolREFUQUJBU0VfQ09ORklHVVJBVElPTl9MT0dfTEVWRUxfSU5GTxADEikKJURBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX1dBUk4QBBIqCiZEQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9FUlJPUhAFEigKJERBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX09GRhAGKnMKEEF1ZGl0TG9nUm90YXRpb24SIgoeQVVESVRfTE9HX1JPVEFUSU9OX1VOU1BFQ0lGSUVEEAASHAoYQVVESVRfTE9HX1JPVEFUSU9OX0RBSUxZEAESHQoZQVVESVRfTE9HX1JPVEFUSU9OX0hPVVJMWRACKngKElRvbGVyYXRpb25PcGVyYXRvchIjCh9UT0xFUkFUSU9OX09QRVJBVE9SX1VOU1BFQ0lGSUVEEAASHgoaVE9MRVJBVElPTl9PUEVSQVRPUl9FWElTVFMQARIdChlUT0xFUkFUSU9OX09QRVJBVE9SX0VRVUFMEAIqpAEKEFRvbGVyYXRpb25FZmZlY3QSIQodVE9MRVJBVElPTl9FRkZFQ1RfVU5TUEVDSUZJRUQQABIhCh1UT0xFUkFUSU9OX0VGRkVDVF9OT19TQ0hFRFVMRRABEigKJFRPTEVSQVRJT05fRUZGRUNUX1BSRUZFUl9OT19TQ0hFRFVMRRACEiAKHFRPTEVSQVRJT05fRUZGRUNUX05PX0VYRUNVVEUQAyrfBAoMQ2x1c3RlclBoYXNlEh0KGUNMVVNURVJfUEhBU0VfVU5TUEVDSUZJRUQQABIaChZDTFVTVEVSX1BIQVNFX0NSRUFUSU5HEAESIgoeQ0xVU1RFUl9QSEFTRV9GQUlMRURfVE9fQ1JFQVRFEAISGgoWQ0xVU1RFUl9QSEFTRV9VUERBVElORxADEiIKHkNMVVNURVJfUEhBU0VfRkFJTEVEX1RPX1VQREFURRAEEhkKFUNMVVNURVJfUEhBU0VfU0NBTElORxAFEhsKF0NMVVNURVJfUEhBU0VfVVBHUkFESU5HEAYSHAoYQ0xVU1RFUl9QSEFTRV9TVVNQRU5ESU5HEAcSGwoXQ0xVU1RFUl9QSEFTRV9TVVNQRU5ERUQQCBIjCh9DTFVTVEVSX1BIQVNFX0ZBSUxFRF9UT19TVVNQRU5EEAkSGgoWQ0xVU1RFUl9QSEFTRV9SRVNVTUlORxAKEiIKHkNMVVNURVJfUEhBU0VfRkFJTEVEX1RPX1JFU1VNRRALEhkKFUNMVVNURVJfUEhBU0VfSEVBTFRIWRAMEhsKF0NMVVNURVJfUEhBU0VfTk9UX1JFQURZEA0SHwobQ0xVU1RFUl9QSEFTRV9SRUNPVkVSWV9NT0RFEA4SJAogQ0xVU1RFUl9QSEFTRV9NQU5VQUxfTUFJTlRFTkFOQ0UQDxIgChxDTFVTVEVSX1BIQVNFX0ZBSUxFRF9UT19TWU5DEBASGwoXQ0xVU1RFUl9QSEFTRV9OT1RfRk9VTkQQERIaChZDTFVTVEVSX1BIQVNFX0RFTEVUSU5HEBIq3gEKEENsdXN0ZXJOb2RlU3RhdGUSIgoeQ0xVU1RFUl9OT0RFX1NUQVRFX1VOU1BFQ0lGSUVEEAASHwobQ0xVU1RFUl9OT0RFX1NUQVRFX1NUQVJUSU5HEAESHgoaQ0xVU1RFUl9OT0RFX1NUQVRFX0hFQUxUSFkQAhIgChxDTFVTVEVSX05PREVfU1RBVEVfVU5IRUFMVEhZEAMSIAocQ0xVU1RFUl9OT0RFX1NUQVRFX1NVU1BFTkRFRBAEEiEKHUNMVVNURVJfTk9ERV9TVEFURV9SRUNPVkVSSU5HEAUqnAEKGENsdXN0ZXJTY2FsYWJpbGl0eVN0YXR1cxIqCiZDTFVTVEVSX1NDQUxBQklMSVRZX1NUQVRVU19VTlNQRUNJRklFRBAAEisKJ0NMVVNURVJfU0NBTEFCSUxJVFlfU1RBVFVTX05PVF9TQ0FMQUJMRRABEicKI0NMVVNURVJfU0NBTEFCSUxJVFlfU1RBVFVTX1NDQUxBQkxFEAIyyx4KDkNsdXN0ZXJTZXJ2aWNlErQBCgxMaXN0Q2x1c3RlcnMSLC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5MaXN0Q2x1c3RlcnNSZXF1ZXN0Gi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuTGlzdENsdXN0ZXJzUmVzcG9uc2UiR4q1GA1yZWFkOmNsdXN0ZXJzgtPkkwIwEi4vYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzEtcBCgpHZXRDbHVzdGVyEioucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuR2V0Q2x1c3RlclJlcXVlc3QaKy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5HZXRDbHVzdGVyUmVzcG9uc2UicIq1GA1yZWFkOmNsdXN0ZXJzurUYGAoKY2x1c3Rlcl9pZBIKY2x1c3Rlcl9pZILT5JMCPRI7L2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9jbHVzdGVycy97Y2x1c3Rlcl9pZH0S2QIKDUNyZWF0ZUNsdXN0ZXISLS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DcmVhdGVDbHVzdGVyUmVxdWVzdBouLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNyZWF0ZUNsdXN0ZXJSZXNwb25zZSLoAYq1GA53cml0ZTpjbHVzdGVyc5K1GBJjbHVzdGVyLmFjY291bnRfaWS6tRgcCgxjbHVzdGVyX25hbWUSDGNsdXN0ZXIubmFtZcrzGFsIARIHY2x1c3RlciIPcmVzcC5jbHVzdGVyLmlkKj0vYWNjb3VudHMve3JlcS5jbHVzdGVyLmFjY291bnRfaWR9L2NsdXN0ZXJzL3tyZXNwLmNsdXN0ZXIuaWR9gtPkkwI7OgEqIjYvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2NsdXN0ZXIuYWNjb3VudF9pZH0vY2x1c3RlcnMStAMKF0NyZWF0ZUNsdXN0ZXJGcm9tQmFja3VwEjcucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ3JlYXRlQ2x1c3RlckZyb21CYWNrdXBSZXF1ZXN0GjgucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ3JlYXRlQ2x1c3RlckZyb21CYWNrdXBSZXNwb25zZSKlAoq1GA9yZXN0b3JlOmJhY2t1cHOKtRgOd3JpdGU6Y2x1c3RlcnOotRgBurUYFgoJYmFja3VwX2lkEgliYWNrdXBfaWS6tRgcCgxjbHVzdGVyX25hbWUSDGNsdXN0ZXJfbmFtZcrzGHQIARIHY2x1c3RlciIPcmVzcC5jbHVzdGVyLmlkKjUvYWNjb3VudHMve3JlcS5hY2NvdW50X2lkfS9jbHVzdGVycy97cmVzcC5jbHVzdGVyLmlkfVIfCg5mcm9tX2JhY2t1cF9pZBINcmVxLmJhY2t1cF9pZILT5JMCRCJCL2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9iYWNrdXBzL3tiYWNrdXBfaWR9L2NsdXN0ZXJzEuACCg1VcGRhdGVDbHVzdGVyEi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVXBkYXRlQ2x1c3RlclJlcXVlc3QaLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5VcGRhdGVDbHVzdGVyUmVzcG9uc2Ui7wGKtRgOd3JpdGU6Y2x1c3RlcnOStRgSY2x1c3Rlci5hY2NvdW50X2lkurUYGAoKY2x1c3Rlcl9pZBIKY2x1c3Rlci5pZMrzGFkIAhIHY2x1c3RlciIOcmVxLmNsdXN0ZXIuaWQqPC9hY2NvdW50cy97cmVxLmNsdXN0ZXIuYWNjb3VudF9pZH0vY2x1c3RlcnMve3JlcS5jbHVzdGVyLmlkfYLT5JMCSDoBKhpDL2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3tjbHVzdGVyLmFjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyLmlkfRK4AgoNRGVsZXRlQ2x1c3RlchItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRlbGV0ZUNsdXN0ZXJSZXF1ZXN0Gi4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGVsZXRlQ2x1c3RlclJlc3BvbnNlIscBirUYD2RlbGV0ZTpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWTK8xhRCAMSB2NsdXN0ZXIiDnJlcS5jbHVzdGVyX2lkKjQvYWNjb3VudHMve3JlcS5hY2NvdW50X2lkfS9jbHVzdGVycy97cmVxLmNsdXN0ZXJfaWR9gtPkkwI9KjsvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfRLLAgoOUmVzdGFydENsdXN0ZXISLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5SZXN0YXJ0Q2x1c3RlclJlcXVlc3QaLy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5SZXN0YXJ0Q2x1c3RlclJlc3BvbnNlItcBirUYDndyaXRlOmNsdXN0ZXJzurUYGAoKY2x1c3Rlcl9pZBIKY2x1c3Rlcl9pZMrzGFoIBBIHY2x1c3RlciIOcmVxLmNsdXN0ZXJfaWQqNC9hY2NvdW50cy97cmVxLmFjY291bnRfaWR9L2NsdXN0ZXJzL3tyZXEuY2x1c3Rlcl9pZH0yB3Jlc3RhcnSC0+STAkUiQy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMve2NsdXN0ZXJfaWR9L3Jlc3RhcnQSywIKDlN1c3BlbmRDbHVzdGVyEi4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VzcGVuZENsdXN0ZXJSZXF1ZXN0Gi8ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VzcGVuZENsdXN0ZXJSZXNwb25zZSLXAYq1GA53cml0ZTpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWTK8xhaCAQSB2NsdXN0ZXIiDnJlcS5jbHVzdGVyX2lkKjQvYWNjb3VudHMve3JlcS5hY2NvdW50X2lkfS9jbHVzdGVycy97cmVxLmNsdXN0ZXJfaWR9MgdzdXNwZW5kgtPkkwJFIkMvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfS9zdXNwZW5kEtUCChBVbnN1c3BlbmRDbHVzdGVyEjAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVW5zdXNwZW5kQ2x1c3RlclJlcXVlc3QaMS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5VbnN1c3BlbmRDbHVzdGVyUmVzcG9uc2Ui2wGKtRgOd3JpdGU6Y2x1c3RlcnO6tRgYCgpjbHVzdGVyX2lkEgpjbHVzdGVyX2lkyvMYXAgEEgdjbHVzdGVyIg5yZXEuY2x1c3Rlcl9pZCo0L2FjY291bnRzL3tyZXEuYWNjb3VudF9pZH0vY2x1c3RlcnMve3JlcS5jbHVzdGVyX2lkfTIJdW5zdXNwZW5kgtPkkwJHIkUvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfS91bnN1c3BlbmQS6QIKFEVuYWJsZUNsdXN0ZXJKd3RSYmFjEjQucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRW5hYmxlQ2x1c3Rlckp3dFJiYWNSZXF1ZXN0GjUucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRW5hYmxlQ2x1c3Rlckp3dFJiYWNSZXNwb25zZSLjAYq1GA53cml0ZTpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWTK8xhjCAQSB2NsdXN0ZXIiDnJlcS5jbHVzdGVyX2lkKjQvYWNjb3VudHMve3JlcS5hY2NvdW50X2lkfS9jbHVzdGVycy97cmVxLmNsdXN0ZXJfaWR9MhBlbmFibGVkLWp3dC1yYmFjgtPkkwJIIkYvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfS9lbmFibGUtand0EsYBChJTdWdnZXN0Q2x1c3Rlck5hbWUSMi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5TdWdnZXN0Q2x1c3Rlck5hbWVSZXF1ZXN0GjMucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VnZ2VzdENsdXN0ZXJOYW1lUmVzcG9uc2UiR4q1GACC0+STAj0SOy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMvc3VnZ2VzdC1uYW1lEuIBChJMaXN0UWRyYW50UmVsZWFzZXMSMi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5MaXN0UWRyYW50UmVsZWFzZXNSZXF1ZXN0GjMucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuTGlzdFFkcmFudFJlbGVhc2VzUmVzcG9uc2UiY4q1GA1yZWFkOmNsdXN0ZXJzurUYGAoKY2x1c3Rlcl9pZBIKY2x1c3Rlcl9pZILT5JMCMBIuL2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9yZWxlYXNlcxLgAQoQR2V0UWRyYW50UmVsZWFzZRIwLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkdldFFkcmFudFJlbGVhc2VSZXF1ZXN0GjEucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuR2V0UWRyYW50UmVsZWFzZVJlc3BvbnNlImeKtRgNcmVhZDpjbHVzdGVyc7q1GBIKB3ZlcnNpb24SB3ZlcnNpb26C0+STAjoSOC9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcmVsZWFzZXMve3ZlcnNpb259GgbCtRgCCAFC/gEKG2NvbS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MUIMQ2x1c3RlclByb3RvUAFaUmdpdGh1Yi5jb20vcWRyYW50L3FkcmFudC1jbG91ZC1wdWJsaWMtYXBpL2dlbi9nby9xZHJhbnQvY2xvdWQvY2x1c3Rlci92MTtjbHVzdGVydjGiAgNRQ0OqAhdRZHJhbnQuQ2xvdWQuQ2x1c3Rlci5WMcoCF1FkcmFudFxDbG91ZFxDbHVzdGVyXFYx4gIjUWRyYW50XENsb3VkXENsdXN0ZXJcVjFcR1BCTWV0YWRhdGHqAhpRZHJhbnQ6OkNsb3VkOjpDbHVzdGVyOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_timestamp, file_qdrant_cloud_common_v1_common, file_qdrant_cloud_event_v1_events]); /** * Describes the message qdrant.cloud.cluster.v1.ListClustersRequest. diff --git a/gen/typescript/qdrant/cloud/monitoring/v1/monitoring_pb.d.ts b/gen/typescript/qdrant/cloud/monitoring/v1/monitoring_pb.d.ts index a721b718..22c24c27 100644 --- a/gen/typescript/qdrant/cloud/monitoring/v1/monitoring_pb.d.ts +++ b/gen/typescript/qdrant/cloud/monitoring/v1/monitoring_pb.d.ts @@ -201,6 +201,20 @@ export declare type GetClusterUsageMetricsResponse = Message<"qdrant.cloud.monit * @generated from field: repeated qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics nodes = 9; */ nodes: ClusterNodeUsageMetrics[]; + + /** + * Timeseries of overall GPU usage across the cluster. + * + * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric gpu = 10; + */ + gpu: Metric[]; + + /** + * Timeseries of overall GPU RAM usage across the cluster. + * + * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric gpu_ram = 11; + */ + gpuRam: Metric[]; }; /** @@ -271,6 +285,20 @@ export declare type GetClusterUsageMetricsResponseValid = Message<"qdrant.cloud. * @generated from field: repeated qdrant.cloud.monitoring.v1.ClusterNodeUsageMetrics nodes = 9; */ nodes: ClusterNodeUsageMetricsValid[]; + + /** + * Timeseries of overall GPU usage across the cluster. + * + * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric gpu = 10; + */ + gpu: MetricValid[]; + + /** + * Timeseries of overall GPU RAM usage across the cluster. + * + * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric gpu_ram = 11; + */ + gpuRam: MetricValid[]; }; /** @@ -641,6 +669,20 @@ export declare type ClusterNodeMetrics = Message<"qdrant.cloud.monitoring.v1.Clu * @generated from field: qdrant.cloud.monitoring.v1.ClusterMetricOverview disk = 7; */ disk?: ClusterMetricOverview; + + /** + * optional Overview of GPU usage. + * + * @generated from field: optional qdrant.cloud.monitoring.v1.ClusterMetricOverview gpu = 8; + */ + gpu?: ClusterMetricOverview; + + /** + * Overview of GPU RAM usage. + * + * @generated from field: optional qdrant.cloud.monitoring.v1.ClusterMetricOverview gpu_ram = 9; + */ + gpuRam?: ClusterMetricOverview; }; /** @@ -697,6 +739,20 @@ export declare type ClusterNodeMetricsValid = Message<"qdrant.cloud.monitoring.v * @generated from field: qdrant.cloud.monitoring.v1.ClusterMetricOverview disk = 7; */ disk: ClusterMetricOverviewValid; + + /** + * optional Overview of GPU usage. + * + * @generated from field: optional qdrant.cloud.monitoring.v1.ClusterMetricOverview gpu = 8; + */ + gpu?: ClusterMetricOverviewValid; + + /** + * Overview of GPU RAM usage. + * + * @generated from field: optional qdrant.cloud.monitoring.v1.ClusterMetricOverview gpu_ram = 9; + */ + gpuRam?: ClusterMetricOverviewValid; }; /** @@ -886,6 +942,20 @@ export declare type ClusterNodeUsageMetrics = Message<"qdrant.cloud.monitoring.v * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric disk = 7; */ disk: Metric[]; + + /** + * Timeseries of gpu usage for the node. + * + * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric gpu = 8; + */ + gpu: Metric[]; + + /** + * Timeseries of GPU RAM usage for the node. + * + * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric gpu_ram = 9; + */ + gpuRam: Metric[]; }; /** @@ -942,6 +1012,20 @@ export declare type ClusterNodeUsageMetricsValid = Message<"qdrant.cloud.monitor * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric disk = 7; */ disk: MetricValid[]; + + /** + * Timeseries of gpu usage for the node. + * + * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric gpu = 8; + */ + gpu: MetricValid[]; + + /** + * Timeseries of GPU RAM usage for the node. + * + * @generated from field: repeated qdrant.cloud.monitoring.v1.Metric gpu_ram = 9; + */ + gpuRam: MetricValid[]; }; /** diff --git a/gen/typescript/qdrant/cloud/monitoring/v1/monitoring_pb.js b/gen/typescript/qdrant/cloud/monitoring/v1/monitoring_pb.js index 9afe0cf1..3fecbdd7 100644 --- a/gen/typescript/qdrant/cloud/monitoring/v1/monitoring_pb.js +++ b/gen/typescript/qdrant/cloud/monitoring/v1/monitoring_pb.js @@ -12,7 +12,7 @@ import { file_qdrant_cloud_common_v1_common } from "../../common/v1/common_pb.js * Describes the file qdrant/cloud/monitoring/v1/monitoring.proto. */ export const file_qdrant_cloud_monitoring_v1_monitoring = /*@__PURE__*/ - fileDesc("CitxZHJhbnQvY2xvdWQvbW9uaXRvcmluZy92MS9tb25pdG9yaW5nLnByb3RvEhpxZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MSJdCh9HZXRDbHVzdGVyU3VtbWFyeU1ldHJpY3NSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBImEKIEdldENsdXN0ZXJTdW1tYXJ5TWV0cmljc1Jlc3BvbnNlEj0KBW5vZGVzGAEgAygLMi4ucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuQ2x1c3Rlck5vZGVNZXRyaWNzIrsDCh1HZXRDbHVzdGVyVXNhZ2VNZXRyaWNzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIcCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABARIuCgVzaW5jZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARJLCgphZ2dyZWdhdG9yGAUgASgOMiYucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuQWdncmVnYXRvckIKukgHggEEEAEgAEgCiAEBOo0BukiJARqGAQooZ2V0X2NsdXN0ZXJfdXNhZ2VfbWV0cmljcy51bnRpbF9ndF9zaW5jZRIZdW50aWwgbXVzdCBiZSBhZnRlciBzaW5jZRo/IWhhcyh0aGlzLnNpbmNlKSB8fCAhaGFzKHRoaXMudW50aWwpIHx8IHRoaXMudW50aWwgPiB0aGlzLnNpbmNlQggKBl9zaW5jZUIICgZfdW50aWxCDQoLX2FnZ3JlZ2F0b3IihgQKHkdldENsdXN0ZXJVc2FnZU1ldHJpY3NSZXNwb25zZRIvCgNjcHUYASADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSLwoDcmFtGAIgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjUKCXJhbV9jYWNoZRgDIAMoCzIiLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLk1ldHJpYxIzCgdyYW1fcnNzGAQgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjoKDnJhbV9xZHJhbnRfcnNzGAUgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjAKBGRpc2sYBiADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSLwoDcnBzGAcgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjMKB2xhdGVuY3kYCCADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSQgoFbm9kZXMYCSADKAsyMy5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5DbHVzdGVyTm9kZVVzYWdlTWV0cmljcyLMAgoVR2V0Q2x1c3RlckxvZ3NSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBEi4KBXNpbmNlGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEi4KBXVudGlsGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBOoIBukh/Gn0KH2dldF9jbHVzdGVyX2xvZ3MudW50aWxfZ3Rfc2luY2USGXVudGlsIG11c3QgYmUgYWZ0ZXIgc2luY2UaPyFoYXModGhpcy5zaW5jZSkgfHwgIWhhcyh0aGlzLnVudGlsKSB8fCB0aGlzLnVudGlsID4gdGhpcy5zaW5jZUIICgZfc2luY2VCCAoGX3VudGlsIk0KFkdldENsdXN0ZXJMb2dzUmVzcG9uc2USMwoFaXRlbXMYASADKAsyJC5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5Mb2dFbnRyeSLRAgoXR2V0Q2x1c3RlckV2ZW50c1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQESLgoFc2luY2UYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESLgoFdW50aWwYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQE6hQG6SIEBGn8KIWdldF9jbHVzdGVyX2V2ZW50cy51bnRpbF9ndF9zaW5jZRIZdW50aWwgbXVzdCBiZSBhZnRlciBzaW5jZRo/IWhhcyh0aGlzLnNpbmNlKSB8fCAhaGFzKHRoaXMudW50aWwpIHx8IHRoaXMudW50aWwgPiB0aGlzLnNpbmNlQggKBl9zaW5jZUIICgZfdW50aWwiTwoYR2V0Q2x1c3RlckV2ZW50c1Jlc3BvbnNlEjMKBWl0ZW1zGAEgAygLMiQucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTG9nRW50cnkijgQKIUdldENsdXN0ZXJJbmZlcmVuY2VNZXRyaWNzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIcCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABARIuCgVzaW5jZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARJXCghpbnRlcnZhbBgFIAEoDjI0LnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkluZmVyZW5jZU1ldHJpY3NJbnRlcnZhbEIKukgHggEEEAEgAEgCiAEBEigKEmluZmVyZW5jZV9tb2RlbF9pZBgGIAEoCUIHukgEcgIQAUgDiAEBOpEBukiNARqKAQosZ2V0X2NsdXN0ZXJfaW5mZXJlbmNlX21ldHJpY3MudW50aWxfZ3Rfc2luY2USGXVudGlsIG11c3QgYmUgYWZ0ZXIgc2luY2UaPyFoYXModGhpcy5zaW5jZSkgfHwgIWhhcyh0aGlzLnVudGlsKSB8fCB0aGlzLnVudGlsID4gdGhpcy5zaW5jZUIICgZfc2luY2VCCAoGX3VudGlsQgsKCV9pbnRlcnZhbEIVChNfaW5mZXJlbmNlX21vZGVsX2lkIm4KIkdldENsdXN0ZXJJbmZlcmVuY2VNZXRyaWNzUmVzcG9uc2USSAoGbW9kZWxzGAEgAygLMjgucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuQ2x1c3RlckluZmVyZW5jZU1vZGVsTWV0cmljcyJ3ChxDbHVzdGVySW5mZXJlbmNlTW9kZWxNZXRyaWNzEiMKEmluZmVyZW5jZV9tb2RlbF9pZBgBIAEoCUIHukgEcgIQARIyCgZ2YWx1ZXMYAiADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMi9AMKEkNsdXN0ZXJOb2RlTWV0cmljcxIYCgdub2RlX2lkGAEgASgJQge6SARyAhABEkYKA2NwdRgCIAEoCzIxLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkNsdXN0ZXJNZXRyaWNPdmVydmlld0IGukgDyAEBEkYKA3JhbRgDIAEoCzIxLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkNsdXN0ZXJNZXRyaWNPdmVydmlld0IGukgDyAEBEkwKCXJhbV9jYWNoZRgEIAEoCzIxLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkNsdXN0ZXJNZXRyaWNPdmVydmlld0IGukgDyAEBEkoKB3JhbV9yc3MYBSABKAsyMS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5DbHVzdGVyTWV0cmljT3ZlcnZpZXdCBrpIA8gBARJRCg5yYW1fcWRyYW50X3JzcxgGIAEoCzIxLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkNsdXN0ZXJNZXRyaWNPdmVydmlld0IGukgDyAEBEkcKBGRpc2sYByABKAsyMS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5DbHVzdGVyTWV0cmljT3ZlcnZpZXdCBrpIA8gBASKTAQoVQ2x1c3Rlck1ldHJpY092ZXJ2aWV3EjgKA2F2ZxgBIAMoCzIrLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkludGVydmFsQXZlcmFnZRJACgV0b3RhbBgCIAEoCzIpLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLlJlc291cmNlVmFsdWVCBrpIA8gBASJlCg9JbnRlcnZhbEF2ZXJhZ2USMwoIaW50ZXJ2YWwYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CBrpIA8gBARIdCgV2YWx1ZRgCIAEoAUIOukgLEgkpAAAAAAAAAAAiRQoNUmVzb3VyY2VWYWx1ZRIdCgV2YWx1ZRgBIAEoAUIOukgLEgkpAAAAAAAAAAASFQoEdW5pdBgCIAEoCUIHukgEcgIQASLvAgoXQ2x1c3Rlck5vZGVVc2FnZU1ldHJpY3MSGAoHbm9kZV9pZBgBIAEoCUIHukgEcgIQARIvCgNjcHUYAiADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSLwoDcmFtGAMgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjUKCXJhbV9jYWNoZRgEIAMoCzIiLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLk1ldHJpYxIzCgdyYW1fcnNzGAUgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjoKDnJhbV9xZHJhbnRfcnNzGAYgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjAKBGRpc2sYByADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMiXgoGTWV0cmljEjUKCXRpbWVzdGFtcBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIdCgV2YWx1ZRgCIAEoAUIOukgLEgkpAAAAAAAAAAAiWwoITG9nRW50cnkSNQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB21lc3NhZ2UYAiABKAlCB7pIBHICEAEqeAoKQWdncmVnYXRvchIaChZBR0dSRUdBVE9SX1VOU1BFQ0lGSUVEEAASEgoOQUdHUkVHQVRPUl9TVU0QARISCg5BR0dSRUdBVE9SX0FWRxACEhIKDkFHR1JFR0FUT1JfTUFYEAMSEgoOQUdHUkVHQVRPUl9NSU4QBCq1AQoYSW5mZXJlbmNlTWV0cmljc0ludGVydmFsEioKJklORkVSRU5DRV9NRVRSSUNTX0lOVEVSVkFMX1VOU1BFQ0lGSUVEEAASIgoeSU5GRVJFTkNFX01FVFJJQ1NfSU5URVJWQUxfREFZEAESIwofSU5GRVJFTkNFX01FVFJJQ1NfSU5URVJWQUxfV0VFSxACEiQKIElORkVSRU5DRV9NRVRSSUNTX0lOVEVSVkFMX01PTlRIEAMy4AoKEU1vbml0b3JpbmdTZXJ2aWNlEpoCChhHZXRDbHVzdGVyU3VtbWFyeU1ldHJpY3MSOy5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5HZXRDbHVzdGVyU3VtbWFyeU1ldHJpY3NSZXF1ZXN0GjwucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuR2V0Q2x1c3RlclN1bW1hcnlNZXRyaWNzUmVzcG9uc2UiggGKtRgNcmVhZDpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWSC0+STAk8STS9hcGkvbW9uaXRvcmluZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3Rlci97Y2x1c3Rlcl9pZH0vc3VtbWFyeS1tZXRyaWNzEpICChZHZXRDbHVzdGVyVXNhZ2VNZXRyaWNzEjkucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuR2V0Q2x1c3RlclVzYWdlTWV0cmljc1JlcXVlc3QaOi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5HZXRDbHVzdGVyVXNhZ2VNZXRyaWNzUmVzcG9uc2UigAGKtRgNcmVhZDpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWSC0+STAk0SSy9hcGkvbW9uaXRvcmluZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3Rlci97Y2x1c3Rlcl9pZH0vdXNhZ2UtbWV0cmljcxLwAQoOR2V0Q2x1c3RlckxvZ3MSMS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5HZXRDbHVzdGVyTG9nc1JlcXVlc3QaMi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5HZXRDbHVzdGVyTG9nc1Jlc3BvbnNlIneKtRgNcmVhZDpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWSC0+STAkQSQi9hcGkvbW9uaXRvcmluZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3Rlci97Y2x1c3Rlcl9pZH0vbG9ncxL4AQoQR2V0Q2x1c3RlckV2ZW50cxIzLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkdldENsdXN0ZXJFdmVudHNSZXF1ZXN0GjQucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuR2V0Q2x1c3RlckV2ZW50c1Jlc3BvbnNlInmKtRgNcmVhZDpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWSC0+STAkYSRC9hcGkvbW9uaXRvcmluZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3Rlci97Y2x1c3Rlcl9pZH0vZXZlbnRzEqICChpHZXRDbHVzdGVySW5mZXJlbmNlTWV0cmljcxI9LnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkdldENsdXN0ZXJJbmZlcmVuY2VNZXRyaWNzUmVxdWVzdBo+LnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkdldENsdXN0ZXJJbmZlcmVuY2VNZXRyaWNzUmVzcG9uc2UihAGKtRgNcmVhZDpjbHVzdGVyc7q1GBgKCmNsdXN0ZXJfaWQSCmNsdXN0ZXJfaWSC0+STAlESTy9hcGkvbW9uaXRvcmluZy92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3Rlci97Y2x1c3Rlcl9pZH0vbWV0cmljcy9pbmZlcmVuY2UaBsK1GAIIAUKWAgoeY29tLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxQg9Nb25pdG9yaW5nUHJvdG9QAVpYZ2l0aHViLmNvbS9xZHJhbnQvcWRyYW50LWNsb3VkLXB1YmxpYy1hcGkvZ2VuL2dvL3FkcmFudC9jbG91ZC9tb25pdG9yaW5nL3YxO21vbml0b3Jpbmd2MaICA1FDTaoCGlFkcmFudC5DbG91ZC5Nb25pdG9yaW5nLlYxygIaUWRyYW50XENsb3VkXE1vbml0b3JpbmdcVjHiAiZRZHJhbnRcQ2xvdWRcTW9uaXRvcmluZ1xWMVxHUEJNZXRhZGF0YeoCHVFkcmFudDo6Q2xvdWQ6Ok1vbml0b3Jpbmc6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_duration, file_google_protobuf_timestamp, file_qdrant_cloud_common_v1_common]); + fileDesc("CitxZHJhbnQvY2xvdWQvbW9uaXRvcmluZy92MS9tb25pdG9yaW5nLnByb3RvEhpxZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MSJdCh9HZXRDbHVzdGVyU3VtbWFyeU1ldHJpY3NSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBImEKIEdldENsdXN0ZXJTdW1tYXJ5TWV0cmljc1Jlc3BvbnNlEj0KBW5vZGVzGAEgAygLMi4ucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuQ2x1c3Rlck5vZGVNZXRyaWNzIrsDCh1HZXRDbHVzdGVyVXNhZ2VNZXRyaWNzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIcCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABARIuCgVzaW5jZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARJLCgphZ2dyZWdhdG9yGAUgASgOMiYucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuQWdncmVnYXRvckIKukgHggEEEAEgAEgCiAEBOo0BukiJARqGAQooZ2V0X2NsdXN0ZXJfdXNhZ2VfbWV0cmljcy51bnRpbF9ndF9zaW5jZRIZdW50aWwgbXVzdCBiZSBhZnRlciBzaW5jZRo/IWhhcyh0aGlzLnNpbmNlKSB8fCAhaGFzKHRoaXMudW50aWwpIHx8IHRoaXMudW50aWwgPiB0aGlzLnNpbmNlQggKBl9zaW5jZUIICgZfdW50aWxCDQoLX2FnZ3JlZ2F0b3Ii7AQKHkdldENsdXN0ZXJVc2FnZU1ldHJpY3NSZXNwb25zZRIvCgNjcHUYASADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSLwoDcmFtGAIgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjUKCXJhbV9jYWNoZRgDIAMoCzIiLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLk1ldHJpYxIzCgdyYW1fcnNzGAQgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjoKDnJhbV9xZHJhbnRfcnNzGAUgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjAKBGRpc2sYBiADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSLwoDcnBzGAcgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEjMKB2xhdGVuY3kYCCADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSQgoFbm9kZXMYCSADKAsyMy5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5DbHVzdGVyTm9kZVVzYWdlTWV0cmljcxIvCgNncHUYCiADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSMwoHZ3B1X3JhbRgLIAMoCzIiLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLk1ldHJpYyLMAgoVR2V0Q2x1c3RlckxvZ3NSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBEi4KBXNpbmNlGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEi4KBXVudGlsGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBOoIBukh/Gn0KH2dldF9jbHVzdGVyX2xvZ3MudW50aWxfZ3Rfc2luY2USGXVudGlsIG11c3QgYmUgYWZ0ZXIgc2luY2UaPyFoYXModGhpcy5zaW5jZSkgfHwgIWhhcyh0aGlzLnVudGlsKSB8fCB0aGlzLnVudGlsID4gdGhpcy5zaW5jZUIICgZfc2luY2VCCAoGX3VudGlsIk0KFkdldENsdXN0ZXJMb2dzUmVzcG9uc2USMwoFaXRlbXMYASADKAsyJC5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5Mb2dFbnRyeSLRAgoXR2V0Q2x1c3RlckV2ZW50c1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQESLgoFc2luY2UYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESLgoFdW50aWwYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQE6hQG6SIEBGn8KIWdldF9jbHVzdGVyX2V2ZW50cy51bnRpbF9ndF9zaW5jZRIZdW50aWwgbXVzdCBiZSBhZnRlciBzaW5jZRo/IWhhcyh0aGlzLnNpbmNlKSB8fCAhaGFzKHRoaXMudW50aWwpIHx8IHRoaXMudW50aWwgPiB0aGlzLnNpbmNlQggKBl9zaW5jZUIICgZfdW50aWwiTwoYR2V0Q2x1c3RlckV2ZW50c1Jlc3BvbnNlEjMKBWl0ZW1zGAEgAygLMiQucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTG9nRW50cnkijgQKIUdldENsdXN0ZXJJbmZlcmVuY2VNZXRyaWNzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIcCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABARIuCgVzaW5jZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARJXCghpbnRlcnZhbBgFIAEoDjI0LnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkluZmVyZW5jZU1ldHJpY3NJbnRlcnZhbEIKukgHggEEEAEgAEgCiAEBEigKEmluZmVyZW5jZV9tb2RlbF9pZBgGIAEoCUIHukgEcgIQAUgDiAEBOpEBukiNARqKAQosZ2V0X2NsdXN0ZXJfaW5mZXJlbmNlX21ldHJpY3MudW50aWxfZ3Rfc2luY2USGXVudGlsIG11c3QgYmUgYWZ0ZXIgc2luY2UaPyFoYXModGhpcy5zaW5jZSkgfHwgIWhhcyh0aGlzLnVudGlsKSB8fCB0aGlzLnVudGlsID4gdGhpcy5zaW5jZUIICgZfc2luY2VCCAoGX3VudGlsQgsKCV9pbnRlcnZhbEIVChNfaW5mZXJlbmNlX21vZGVsX2lkIm4KIkdldENsdXN0ZXJJbmZlcmVuY2VNZXRyaWNzUmVzcG9uc2USSAoGbW9kZWxzGAEgAygLMjgucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuQ2x1c3RlckluZmVyZW5jZU1vZGVsTWV0cmljcyJ3ChxDbHVzdGVySW5mZXJlbmNlTW9kZWxNZXRyaWNzEiMKEmluZmVyZW5jZV9tb2RlbF9pZBgBIAEoCUIHukgEcgIQARIyCgZ2YWx1ZXMYAiADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMipgUKEkNsdXN0ZXJOb2RlTWV0cmljcxIYCgdub2RlX2lkGAEgASgJQge6SARyAhABEkYKA2NwdRgCIAEoCzIxLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkNsdXN0ZXJNZXRyaWNPdmVydmlld0IGukgDyAEBEkYKA3JhbRgDIAEoCzIxLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkNsdXN0ZXJNZXRyaWNPdmVydmlld0IGukgDyAEBEkwKCXJhbV9jYWNoZRgEIAEoCzIxLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkNsdXN0ZXJNZXRyaWNPdmVydmlld0IGukgDyAEBEkoKB3JhbV9yc3MYBSABKAsyMS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5DbHVzdGVyTWV0cmljT3ZlcnZpZXdCBrpIA8gBARJRCg5yYW1fcWRyYW50X3JzcxgGIAEoCzIxLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkNsdXN0ZXJNZXRyaWNPdmVydmlld0IGukgDyAEBEkcKBGRpc2sYByABKAsyMS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5DbHVzdGVyTWV0cmljT3ZlcnZpZXdCBrpIA8gBARJLCgNncHUYCCABKAsyMS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5DbHVzdGVyTWV0cmljT3ZlcnZpZXdCBrpIA8gBAEgAiAEBEk8KB2dwdV9yYW0YCSABKAsyMS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5DbHVzdGVyTWV0cmljT3ZlcnZpZXdCBrpIA8gBAEgBiAEBQgYKBF9ncHVCCgoIX2dwdV9yYW0ikwEKFUNsdXN0ZXJNZXRyaWNPdmVydmlldxI4CgNhdmcYASADKAsyKy5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5JbnRlcnZhbEF2ZXJhZ2USQAoFdG90YWwYAiABKAsyKS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5SZXNvdXJjZVZhbHVlQga6SAPIAQEiZQoPSW50ZXJ2YWxBdmVyYWdlEjMKCGludGVydmFsGAEgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQga6SAPIAQESHQoFdmFsdWUYAiABKAFCDrpICxIJKQAAAAAAAAAAIkUKDVJlc291cmNlVmFsdWUSHQoFdmFsdWUYASABKAFCDrpICxIJKQAAAAAAAAAAEhUKBHVuaXQYAiABKAlCB7pIBHICEAEi1QMKF0NsdXN0ZXJOb2RlVXNhZ2VNZXRyaWNzEhgKB25vZGVfaWQYASABKAlCB7pIBHICEAESLwoDY3B1GAIgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEi8KA3JhbRgDIAMoCzIiLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLk1ldHJpYxI1CglyYW1fY2FjaGUYBCADKAsyIi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5NZXRyaWMSMwoHcmFtX3JzcxgFIAMoCzIiLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLk1ldHJpYxI6Cg5yYW1fcWRyYW50X3JzcxgGIAMoCzIiLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLk1ldHJpYxIwCgRkaXNrGAcgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljEi8KA2dwdRgIIAMoCzIiLnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLk1ldHJpYxIzCgdncHVfcmFtGAkgAygLMiIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuTWV0cmljIl4KBk1ldHJpYxI1Cgl0aW1lc3RhbXAYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESHQoFdmFsdWUYAiABKAFCDrpICxIJKQAAAAAAAAAAIlsKCExvZ0VudHJ5EjUKCXRpbWVzdGFtcBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgdtZXNzYWdlGAIgASgJQge6SARyAhABKngKCkFnZ3JlZ2F0b3ISGgoWQUdHUkVHQVRPUl9VTlNQRUNJRklFRBAAEhIKDkFHR1JFR0FUT1JfU1VNEAESEgoOQUdHUkVHQVRPUl9BVkcQAhISCg5BR0dSRUdBVE9SX01BWBADEhIKDkFHR1JFR0FUT1JfTUlOEAQqtQEKGEluZmVyZW5jZU1ldHJpY3NJbnRlcnZhbBIqCiZJTkZFUkVOQ0VfTUVUUklDU19JTlRFUlZBTF9VTlNQRUNJRklFRBAAEiIKHklORkVSRU5DRV9NRVRSSUNTX0lOVEVSVkFMX0RBWRABEiMKH0lORkVSRU5DRV9NRVRSSUNTX0lOVEVSVkFMX1dFRUsQAhIkCiBJTkZFUkVOQ0VfTUVUUklDU19JTlRFUlZBTF9NT05USBADMuAKChFNb25pdG9yaW5nU2VydmljZRKaAgoYR2V0Q2x1c3RlclN1bW1hcnlNZXRyaWNzEjsucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuR2V0Q2x1c3RlclN1bW1hcnlNZXRyaWNzUmVxdWVzdBo8LnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkdldENsdXN0ZXJTdW1tYXJ5TWV0cmljc1Jlc3BvbnNlIoIBirUYDXJlYWQ6Y2x1c3RlcnO6tRgYCgpjbHVzdGVyX2lkEgpjbHVzdGVyX2lkgtPkkwJPEk0vYXBpL21vbml0b3JpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXIve2NsdXN0ZXJfaWR9L3N1bW1hcnktbWV0cmljcxKSAgoWR2V0Q2x1c3RlclVzYWdlTWV0cmljcxI5LnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkdldENsdXN0ZXJVc2FnZU1ldHJpY3NSZXF1ZXN0GjoucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuR2V0Q2x1c3RlclVzYWdlTWV0cmljc1Jlc3BvbnNlIoABirUYDXJlYWQ6Y2x1c3RlcnO6tRgYCgpjbHVzdGVyX2lkEgpjbHVzdGVyX2lkgtPkkwJNEksvYXBpL21vbml0b3JpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXIve2NsdXN0ZXJfaWR9L3VzYWdlLW1ldHJpY3MS8AEKDkdldENsdXN0ZXJMb2dzEjEucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuR2V0Q2x1c3RlckxvZ3NSZXF1ZXN0GjIucWRyYW50LmNsb3VkLm1vbml0b3JpbmcudjEuR2V0Q2x1c3RlckxvZ3NSZXNwb25zZSJ3irUYDXJlYWQ6Y2x1c3RlcnO6tRgYCgpjbHVzdGVyX2lkEgpjbHVzdGVyX2lkgtPkkwJEEkIvYXBpL21vbml0b3JpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXIve2NsdXN0ZXJfaWR9L2xvZ3MS+AEKEEdldENsdXN0ZXJFdmVudHMSMy5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5HZXRDbHVzdGVyRXZlbnRzUmVxdWVzdBo0LnFkcmFudC5jbG91ZC5tb25pdG9yaW5nLnYxLkdldENsdXN0ZXJFdmVudHNSZXNwb25zZSJ5irUYDXJlYWQ6Y2x1c3RlcnO6tRgYCgpjbHVzdGVyX2lkEgpjbHVzdGVyX2lkgtPkkwJGEkQvYXBpL21vbml0b3JpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXIve2NsdXN0ZXJfaWR9L2V2ZW50cxKiAgoaR2V0Q2x1c3RlckluZmVyZW5jZU1ldHJpY3MSPS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5HZXRDbHVzdGVySW5mZXJlbmNlTWV0cmljc1JlcXVlc3QaPi5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MS5HZXRDbHVzdGVySW5mZXJlbmNlTWV0cmljc1Jlc3BvbnNlIoQBirUYDXJlYWQ6Y2x1c3RlcnO6tRgYCgpjbHVzdGVyX2lkEgpjbHVzdGVyX2lkgtPkkwJREk8vYXBpL21vbml0b3JpbmcvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXIve2NsdXN0ZXJfaWR9L21ldHJpY3MvaW5mZXJlbmNlGgbCtRgCCAFClgIKHmNvbS5xZHJhbnQuY2xvdWQubW9uaXRvcmluZy52MUIPTW9uaXRvcmluZ1Byb3RvUAFaWGdpdGh1Yi5jb20vcWRyYW50L3FkcmFudC1jbG91ZC1wdWJsaWMtYXBpL2dlbi9nby9xZHJhbnQvY2xvdWQvbW9uaXRvcmluZy92MTttb25pdG9yaW5ndjGiAgNRQ02qAhpRZHJhbnQuQ2xvdWQuTW9uaXRvcmluZy5WMcoCGlFkcmFudFxDbG91ZFxNb25pdG9yaW5nXFYx4gImUWRyYW50XENsb3VkXE1vbml0b3JpbmdcVjFcR1BCTWV0YWRhdGHqAh1RZHJhbnQ6OkNsb3VkOjpNb25pdG9yaW5nOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_duration, file_google_protobuf_timestamp, file_qdrant_cloud_common_v1_common]); /** * Describes the message qdrant.cloud.monitoring.v1.GetClusterSummaryMetricsRequest. diff --git a/proto/qdrant/cloud/booking/v1/booking.proto b/proto/qdrant/cloud/booking/v1/booking.proto index d3a3f255..7a775605 100644 --- a/proto/qdrant/cloud/booking/v1/booking.proto +++ b/proto/qdrant/cloud/booking/v1/booking.proto @@ -318,6 +318,9 @@ message ResourceConfiguration { // The amount of GPU (e.g., "1000m" (1 vGPU)) // This is an optional field, if it is not set no GPU is provided. optional string gpu = 4 [(buf.validate.field).string.min_len = 1]; + // The amount of GPU RAM (e.g., "1GiB") + // This is an optional field, if it is not set no GPU is provided. + optional string gpu_ram = 5 [(buf.validate.field).string.min_len = 1]; } // ResourceConfigurationFilter defines the resource configuration filter for listing packages. diff --git a/proto/qdrant/cloud/cluster/v1/cluster.proto b/proto/qdrant/cloud/cluster/v1/cluster.proto index 2bc2b8cd..4adedf77 100644 --- a/proto/qdrant/cloud/cluster/v1/cluster.proto +++ b/proto/qdrant/cloud/cluster/v1/cluster.proto @@ -1117,6 +1117,8 @@ message ClusterNodeResourcesSummary { ClusterNodeResources cpu = 3 [(buf.validate.field).required = true]; // GPU resources, empty if cluster has no GPU optional ClusterNodeResources gpu = 4; + // GPU RAM, empty if cluster has not GPU. + optional ClusterNodeResources gpu_ram = 5; } // ClusterNodeResources represents the allocation of various resources for a cluster per node. diff --git a/proto/qdrant/cloud/monitoring/v1/monitoring.proto b/proto/qdrant/cloud/monitoring/v1/monitoring.proto index a0879177..2c188789 100644 --- a/proto/qdrant/cloud/monitoring/v1/monitoring.proto +++ b/proto/qdrant/cloud/monitoring/v1/monitoring.proto @@ -155,6 +155,10 @@ message GetClusterUsageMetricsResponse { repeated Metric latency = 8; // Per-node metrics. repeated ClusterNodeUsageMetrics nodes = 9; + // Timeseries of overall GPU usage across the cluster. + repeated Metric gpu = 10; + // Timeseries of overall GPU RAM usage across the cluster. + repeated Metric gpu_ram = 11; } // GetClusterLogsRequest is the request for the GetClusterLogs function @@ -272,6 +276,10 @@ message ClusterNodeMetrics { ClusterMetricOverview ram_qdrant_rss = 6 [(buf.validate.field).required = true]; // Overview of disk usage. ClusterMetricOverview disk = 7 [(buf.validate.field).required = true]; + // optional Overview of GPU usage. + optional ClusterMetricOverview gpu = 8 [(buf.validate.field).required = false]; + // Overview of GPU RAM usage. + optional ClusterMetricOverview gpu_ram = 9 [(buf.validate.field).required = false]; } // ClusterMetricOverview contains both the average values of a metric over @@ -315,6 +323,10 @@ message ClusterNodeUsageMetrics { repeated Metric ram_qdrant_rss = 6; // Timeseries of disk usage for the node. repeated Metric disk = 7; + // Timeseries of gpu usage for the node. + repeated Metric gpu = 8; + // Timeseries of GPU RAM usage for the node. + repeated Metric gpu_ram = 9; } // A single metric data point.