github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/go-control-plane/envoy/service/discovery/v2/hds.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // versions: 3 // protoc-gen-go v1.25.0 4 // protoc v3.16.0 5 // source: envoy/service/discovery/v2/hds.proto 6 7 package envoy_service_discovery_v2 8 9 import ( 10 context "context" 11 _ "github.com/cncf/xds/go/udpa/annotations" 12 core "github.com/hxx258456/ccgo/go-control-plane/envoy/api/v2/core" 13 endpoint "github.com/hxx258456/ccgo/go-control-plane/envoy/api/v2/endpoint" 14 proto "github.com/golang/protobuf/proto" 15 duration "github.com/golang/protobuf/ptypes/duration" 16 _ "google.golang.org/genproto/googleapis/api/annotations" 17 grpc "github.com/hxx258456/ccgo/grpc" 18 codes "github.com/hxx258456/ccgo/grpc/codes" 19 status "github.com/hxx258456/ccgo/grpc/status" 20 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 21 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 22 reflect "reflect" 23 sync "sync" 24 ) 25 26 const ( 27 // Verify that this generated code is sufficiently up-to-date. 28 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 29 // Verify that runtime/protoimpl is sufficiently up-to-date. 30 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 31 ) 32 33 // This is a compile-time assertion that a sufficiently up-to-date version 34 // of the legacy proto package is being used. 35 const _ = proto.ProtoPackageIsVersion4 36 37 // Different Envoy instances may have different capabilities (e.g. Redis) 38 // and/or have ports enabled for different protocols. 39 type Capability_Protocol int32 40 41 const ( 42 Capability_HTTP Capability_Protocol = 0 43 Capability_TCP Capability_Protocol = 1 44 Capability_REDIS Capability_Protocol = 2 45 ) 46 47 // Enum value maps for Capability_Protocol. 48 var ( 49 Capability_Protocol_name = map[int32]string{ 50 0: "HTTP", 51 1: "TCP", 52 2: "REDIS", 53 } 54 Capability_Protocol_value = map[string]int32{ 55 "HTTP": 0, 56 "TCP": 1, 57 "REDIS": 2, 58 } 59 ) 60 61 func (x Capability_Protocol) Enum() *Capability_Protocol { 62 p := new(Capability_Protocol) 63 *p = x 64 return p 65 } 66 67 func (x Capability_Protocol) String() string { 68 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 69 } 70 71 func (Capability_Protocol) Descriptor() protoreflect.EnumDescriptor { 72 return file_envoy_service_discovery_v2_hds_proto_enumTypes[0].Descriptor() 73 } 74 75 func (Capability_Protocol) Type() protoreflect.EnumType { 76 return &file_envoy_service_discovery_v2_hds_proto_enumTypes[0] 77 } 78 79 func (x Capability_Protocol) Number() protoreflect.EnumNumber { 80 return protoreflect.EnumNumber(x) 81 } 82 83 // Deprecated: Use Capability_Protocol.Descriptor instead. 84 func (Capability_Protocol) EnumDescriptor() ([]byte, []int) { 85 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{0, 0} 86 } 87 88 // Defines supported protocols etc, so the management server can assign proper 89 // endpoints to healthcheck. 90 type Capability struct { 91 state protoimpl.MessageState 92 sizeCache protoimpl.SizeCache 93 unknownFields protoimpl.UnknownFields 94 95 HealthCheckProtocols []Capability_Protocol `protobuf:"varint,1,rep,packed,name=health_check_protocols,json=healthCheckProtocols,proto3,enum=envoy.service.discovery.v2.Capability_Protocol" json:"health_check_protocols,omitempty"` 96 } 97 98 func (x *Capability) Reset() { 99 *x = Capability{} 100 if protoimpl.UnsafeEnabled { 101 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[0] 102 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 103 ms.StoreMessageInfo(mi) 104 } 105 } 106 107 func (x *Capability) String() string { 108 return protoimpl.X.MessageStringOf(x) 109 } 110 111 func (*Capability) ProtoMessage() {} 112 113 func (x *Capability) ProtoReflect() protoreflect.Message { 114 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[0] 115 if protoimpl.UnsafeEnabled && x != nil { 116 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 117 if ms.LoadMessageInfo() == nil { 118 ms.StoreMessageInfo(mi) 119 } 120 return ms 121 } 122 return mi.MessageOf(x) 123 } 124 125 // Deprecated: Use Capability.ProtoReflect.Descriptor instead. 126 func (*Capability) Descriptor() ([]byte, []int) { 127 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{0} 128 } 129 130 func (x *Capability) GetHealthCheckProtocols() []Capability_Protocol { 131 if x != nil { 132 return x.HealthCheckProtocols 133 } 134 return nil 135 } 136 137 type HealthCheckRequest struct { 138 state protoimpl.MessageState 139 sizeCache protoimpl.SizeCache 140 unknownFields protoimpl.UnknownFields 141 142 Node *core.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` 143 Capability *Capability `protobuf:"bytes,2,opt,name=capability,proto3" json:"capability,omitempty"` 144 } 145 146 func (x *HealthCheckRequest) Reset() { 147 *x = HealthCheckRequest{} 148 if protoimpl.UnsafeEnabled { 149 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[1] 150 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 151 ms.StoreMessageInfo(mi) 152 } 153 } 154 155 func (x *HealthCheckRequest) String() string { 156 return protoimpl.X.MessageStringOf(x) 157 } 158 159 func (*HealthCheckRequest) ProtoMessage() {} 160 161 func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message { 162 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[1] 163 if protoimpl.UnsafeEnabled && x != nil { 164 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 165 if ms.LoadMessageInfo() == nil { 166 ms.StoreMessageInfo(mi) 167 } 168 return ms 169 } 170 return mi.MessageOf(x) 171 } 172 173 // Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead. 174 func (*HealthCheckRequest) Descriptor() ([]byte, []int) { 175 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{1} 176 } 177 178 func (x *HealthCheckRequest) GetNode() *core.Node { 179 if x != nil { 180 return x.Node 181 } 182 return nil 183 } 184 185 func (x *HealthCheckRequest) GetCapability() *Capability { 186 if x != nil { 187 return x.Capability 188 } 189 return nil 190 } 191 192 type EndpointHealth struct { 193 state protoimpl.MessageState 194 sizeCache protoimpl.SizeCache 195 unknownFields protoimpl.UnknownFields 196 197 Endpoint *endpoint.Endpoint `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` 198 HealthStatus core.HealthStatus `protobuf:"varint,2,opt,name=health_status,json=healthStatus,proto3,enum=envoy.api.v2.core.HealthStatus" json:"health_status,omitempty"` 199 } 200 201 func (x *EndpointHealth) Reset() { 202 *x = EndpointHealth{} 203 if protoimpl.UnsafeEnabled { 204 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[2] 205 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 206 ms.StoreMessageInfo(mi) 207 } 208 } 209 210 func (x *EndpointHealth) String() string { 211 return protoimpl.X.MessageStringOf(x) 212 } 213 214 func (*EndpointHealth) ProtoMessage() {} 215 216 func (x *EndpointHealth) ProtoReflect() protoreflect.Message { 217 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[2] 218 if protoimpl.UnsafeEnabled && x != nil { 219 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 220 if ms.LoadMessageInfo() == nil { 221 ms.StoreMessageInfo(mi) 222 } 223 return ms 224 } 225 return mi.MessageOf(x) 226 } 227 228 // Deprecated: Use EndpointHealth.ProtoReflect.Descriptor instead. 229 func (*EndpointHealth) Descriptor() ([]byte, []int) { 230 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{2} 231 } 232 233 func (x *EndpointHealth) GetEndpoint() *endpoint.Endpoint { 234 if x != nil { 235 return x.Endpoint 236 } 237 return nil 238 } 239 240 func (x *EndpointHealth) GetHealthStatus() core.HealthStatus { 241 if x != nil { 242 return x.HealthStatus 243 } 244 return core.HealthStatus_UNKNOWN 245 } 246 247 type EndpointHealthResponse struct { 248 state protoimpl.MessageState 249 sizeCache protoimpl.SizeCache 250 unknownFields protoimpl.UnknownFields 251 252 EndpointsHealth []*EndpointHealth `protobuf:"bytes,1,rep,name=endpoints_health,json=endpointsHealth,proto3" json:"endpoints_health,omitempty"` 253 } 254 255 func (x *EndpointHealthResponse) Reset() { 256 *x = EndpointHealthResponse{} 257 if protoimpl.UnsafeEnabled { 258 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[3] 259 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 260 ms.StoreMessageInfo(mi) 261 } 262 } 263 264 func (x *EndpointHealthResponse) String() string { 265 return protoimpl.X.MessageStringOf(x) 266 } 267 268 func (*EndpointHealthResponse) ProtoMessage() {} 269 270 func (x *EndpointHealthResponse) ProtoReflect() protoreflect.Message { 271 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[3] 272 if protoimpl.UnsafeEnabled && x != nil { 273 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 274 if ms.LoadMessageInfo() == nil { 275 ms.StoreMessageInfo(mi) 276 } 277 return ms 278 } 279 return mi.MessageOf(x) 280 } 281 282 // Deprecated: Use EndpointHealthResponse.ProtoReflect.Descriptor instead. 283 func (*EndpointHealthResponse) Descriptor() ([]byte, []int) { 284 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{3} 285 } 286 287 func (x *EndpointHealthResponse) GetEndpointsHealth() []*EndpointHealth { 288 if x != nil { 289 return x.EndpointsHealth 290 } 291 return nil 292 } 293 294 type HealthCheckRequestOrEndpointHealthResponse struct { 295 state protoimpl.MessageState 296 sizeCache protoimpl.SizeCache 297 unknownFields protoimpl.UnknownFields 298 299 // Types that are assignable to RequestType: 300 // *HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest 301 // *HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse 302 RequestType isHealthCheckRequestOrEndpointHealthResponse_RequestType `protobuf_oneof:"request_type"` 303 } 304 305 func (x *HealthCheckRequestOrEndpointHealthResponse) Reset() { 306 *x = HealthCheckRequestOrEndpointHealthResponse{} 307 if protoimpl.UnsafeEnabled { 308 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[4] 309 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 310 ms.StoreMessageInfo(mi) 311 } 312 } 313 314 func (x *HealthCheckRequestOrEndpointHealthResponse) String() string { 315 return protoimpl.X.MessageStringOf(x) 316 } 317 318 func (*HealthCheckRequestOrEndpointHealthResponse) ProtoMessage() {} 319 320 func (x *HealthCheckRequestOrEndpointHealthResponse) ProtoReflect() protoreflect.Message { 321 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[4] 322 if protoimpl.UnsafeEnabled && x != nil { 323 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 324 if ms.LoadMessageInfo() == nil { 325 ms.StoreMessageInfo(mi) 326 } 327 return ms 328 } 329 return mi.MessageOf(x) 330 } 331 332 // Deprecated: Use HealthCheckRequestOrEndpointHealthResponse.ProtoReflect.Descriptor instead. 333 func (*HealthCheckRequestOrEndpointHealthResponse) Descriptor() ([]byte, []int) { 334 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{4} 335 } 336 337 func (m *HealthCheckRequestOrEndpointHealthResponse) GetRequestType() isHealthCheckRequestOrEndpointHealthResponse_RequestType { 338 if m != nil { 339 return m.RequestType 340 } 341 return nil 342 } 343 344 func (x *HealthCheckRequestOrEndpointHealthResponse) GetHealthCheckRequest() *HealthCheckRequest { 345 if x, ok := x.GetRequestType().(*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest); ok { 346 return x.HealthCheckRequest 347 } 348 return nil 349 } 350 351 func (x *HealthCheckRequestOrEndpointHealthResponse) GetEndpointHealthResponse() *EndpointHealthResponse { 352 if x, ok := x.GetRequestType().(*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse); ok { 353 return x.EndpointHealthResponse 354 } 355 return nil 356 } 357 358 type isHealthCheckRequestOrEndpointHealthResponse_RequestType interface { 359 isHealthCheckRequestOrEndpointHealthResponse_RequestType() 360 } 361 362 type HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest struct { 363 HealthCheckRequest *HealthCheckRequest `protobuf:"bytes,1,opt,name=health_check_request,json=healthCheckRequest,proto3,oneof"` 364 } 365 366 type HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse struct { 367 EndpointHealthResponse *EndpointHealthResponse `protobuf:"bytes,2,opt,name=endpoint_health_response,json=endpointHealthResponse,proto3,oneof"` 368 } 369 370 func (*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest) isHealthCheckRequestOrEndpointHealthResponse_RequestType() { 371 } 372 373 func (*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse) isHealthCheckRequestOrEndpointHealthResponse_RequestType() { 374 } 375 376 type LocalityEndpoints struct { 377 state protoimpl.MessageState 378 sizeCache protoimpl.SizeCache 379 unknownFields protoimpl.UnknownFields 380 381 Locality *core.Locality `protobuf:"bytes,1,opt,name=locality,proto3" json:"locality,omitempty"` 382 Endpoints []*endpoint.Endpoint `protobuf:"bytes,2,rep,name=endpoints,proto3" json:"endpoints,omitempty"` 383 } 384 385 func (x *LocalityEndpoints) Reset() { 386 *x = LocalityEndpoints{} 387 if protoimpl.UnsafeEnabled { 388 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[5] 389 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 390 ms.StoreMessageInfo(mi) 391 } 392 } 393 394 func (x *LocalityEndpoints) String() string { 395 return protoimpl.X.MessageStringOf(x) 396 } 397 398 func (*LocalityEndpoints) ProtoMessage() {} 399 400 func (x *LocalityEndpoints) ProtoReflect() protoreflect.Message { 401 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[5] 402 if protoimpl.UnsafeEnabled && x != nil { 403 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 404 if ms.LoadMessageInfo() == nil { 405 ms.StoreMessageInfo(mi) 406 } 407 return ms 408 } 409 return mi.MessageOf(x) 410 } 411 412 // Deprecated: Use LocalityEndpoints.ProtoReflect.Descriptor instead. 413 func (*LocalityEndpoints) Descriptor() ([]byte, []int) { 414 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{5} 415 } 416 417 func (x *LocalityEndpoints) GetLocality() *core.Locality { 418 if x != nil { 419 return x.Locality 420 } 421 return nil 422 } 423 424 func (x *LocalityEndpoints) GetEndpoints() []*endpoint.Endpoint { 425 if x != nil { 426 return x.Endpoints 427 } 428 return nil 429 } 430 431 // The cluster name and locality is provided to Envoy for the endpoints that it 432 // health checks to support statistics reporting, logging and debugging by the 433 // Envoy instance (outside of HDS). For maximum usefulness, it should match the 434 // same cluster structure as that provided by EDS. 435 type ClusterHealthCheck struct { 436 state protoimpl.MessageState 437 sizeCache protoimpl.SizeCache 438 unknownFields protoimpl.UnknownFields 439 440 ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` 441 HealthChecks []*core.HealthCheck `protobuf:"bytes,2,rep,name=health_checks,json=healthChecks,proto3" json:"health_checks,omitempty"` 442 LocalityEndpoints []*LocalityEndpoints `protobuf:"bytes,3,rep,name=locality_endpoints,json=localityEndpoints,proto3" json:"locality_endpoints,omitempty"` 443 } 444 445 func (x *ClusterHealthCheck) Reset() { 446 *x = ClusterHealthCheck{} 447 if protoimpl.UnsafeEnabled { 448 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[6] 449 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 450 ms.StoreMessageInfo(mi) 451 } 452 } 453 454 func (x *ClusterHealthCheck) String() string { 455 return protoimpl.X.MessageStringOf(x) 456 } 457 458 func (*ClusterHealthCheck) ProtoMessage() {} 459 460 func (x *ClusterHealthCheck) ProtoReflect() protoreflect.Message { 461 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[6] 462 if protoimpl.UnsafeEnabled && x != nil { 463 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 464 if ms.LoadMessageInfo() == nil { 465 ms.StoreMessageInfo(mi) 466 } 467 return ms 468 } 469 return mi.MessageOf(x) 470 } 471 472 // Deprecated: Use ClusterHealthCheck.ProtoReflect.Descriptor instead. 473 func (*ClusterHealthCheck) Descriptor() ([]byte, []int) { 474 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{6} 475 } 476 477 func (x *ClusterHealthCheck) GetClusterName() string { 478 if x != nil { 479 return x.ClusterName 480 } 481 return "" 482 } 483 484 func (x *ClusterHealthCheck) GetHealthChecks() []*core.HealthCheck { 485 if x != nil { 486 return x.HealthChecks 487 } 488 return nil 489 } 490 491 func (x *ClusterHealthCheck) GetLocalityEndpoints() []*LocalityEndpoints { 492 if x != nil { 493 return x.LocalityEndpoints 494 } 495 return nil 496 } 497 498 type HealthCheckSpecifier struct { 499 state protoimpl.MessageState 500 sizeCache protoimpl.SizeCache 501 unknownFields protoimpl.UnknownFields 502 503 ClusterHealthChecks []*ClusterHealthCheck `protobuf:"bytes,1,rep,name=cluster_health_checks,json=clusterHealthChecks,proto3" json:"cluster_health_checks,omitempty"` 504 // The default is 1 second. 505 Interval *duration.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` 506 } 507 508 func (x *HealthCheckSpecifier) Reset() { 509 *x = HealthCheckSpecifier{} 510 if protoimpl.UnsafeEnabled { 511 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[7] 512 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 513 ms.StoreMessageInfo(mi) 514 } 515 } 516 517 func (x *HealthCheckSpecifier) String() string { 518 return protoimpl.X.MessageStringOf(x) 519 } 520 521 func (*HealthCheckSpecifier) ProtoMessage() {} 522 523 func (x *HealthCheckSpecifier) ProtoReflect() protoreflect.Message { 524 mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[7] 525 if protoimpl.UnsafeEnabled && x != nil { 526 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 527 if ms.LoadMessageInfo() == nil { 528 ms.StoreMessageInfo(mi) 529 } 530 return ms 531 } 532 return mi.MessageOf(x) 533 } 534 535 // Deprecated: Use HealthCheckSpecifier.ProtoReflect.Descriptor instead. 536 func (*HealthCheckSpecifier) Descriptor() ([]byte, []int) { 537 return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{7} 538 } 539 540 func (x *HealthCheckSpecifier) GetClusterHealthChecks() []*ClusterHealthCheck { 541 if x != nil { 542 return x.ClusterHealthChecks 543 } 544 return nil 545 } 546 547 func (x *HealthCheckSpecifier) GetInterval() *duration.Duration { 548 if x != nil { 549 return x.Interval 550 } 551 return nil 552 } 553 554 var File_envoy_service_discovery_v2_hds_proto protoreflect.FileDescriptor 555 556 var file_envoy_service_discovery_v2_hds_proto_rawDesc = []byte{ 557 0x0a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 558 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x68, 0x64, 0x73, 559 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 560 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 561 0x76, 0x32, 0x1a, 0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 562 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 563 0x1a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 564 0x6f, 0x72, 0x65, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 565 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 566 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x65, 0x6e, 567 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 568 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 569 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 570 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 571 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 572 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 573 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e, 574 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 575 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 576 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 577 0x69, 0x74, 0x79, 0x12, 0x65, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 578 0x65, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 579 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 580 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 581 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x74, 582 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x14, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 583 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0x28, 0x0a, 0x08, 0x50, 0x72, 584 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 585 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x44, 586 0x49, 0x53, 0x10, 0x02, 0x22, 0x89, 0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 587 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 588 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 589 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 590 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x61, 0x70, 0x61, 591 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 592 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 593 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 594 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 595 0x22, 0x93, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 596 0x6c, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 597 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 598 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 599 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 600 0x12, 0x44, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 601 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 602 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 603 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 604 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6f, 0x0a, 0x16, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 605 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 606 0x12, 0x55, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65, 607 0x61, 0x6c, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 608 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 609 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 610 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 611 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x90, 0x02, 0x0a, 0x2a, 0x48, 0x65, 0x61, 0x6c, 612 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x72, 613 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 614 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x14, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 615 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 616 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 617 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 618 0x32, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 619 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 620 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6e, 0x0a, 0x18, 0x65, 0x6e, 621 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x72, 0x65, 622 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 623 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 624 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 625 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 626 0x48, 0x00, 0x52, 0x16, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 627 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x72, 0x65, 628 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x11, 0x4c, 629 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 630 0x12, 0x37, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 631 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 632 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 633 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x65, 0x6e, 0x64, 634 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 635 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x65, 0x6e, 0x64, 0x70, 636 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x65, 637 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x12, 0x43, 0x6c, 0x75, 638 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 639 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 640 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 641 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 642 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 643 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 644 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 645 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x5c, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 646 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 647 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 648 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 649 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 650 0x74, 0x73, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 651 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x14, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 652 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x62, 653 0x0a, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 654 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 655 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 656 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 657 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x13, 0x63, 658 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 659 0x6b, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 660 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 661 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 662 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x32, 0xea, 0x02, 0x0a, 0x16, 0x48, 0x65, 663 0x61, 0x6c, 0x74, 0x68, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 664 0x76, 0x69, 0x63, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 665 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x46, 0x2e, 0x65, 0x6e, 0x76, 666 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 667 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 668 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x72, 0x45, 0x6e, 0x64, 0x70, 669 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 670 0x73, 0x65, 0x1a, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 671 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 672 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x69, 673 0x66, 0x69, 0x65, 0x72, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0xb9, 0x01, 0x0a, 0x10, 0x46, 674 0x65, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 675 0x46, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 676 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 677 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 678 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 679 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 680 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 681 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 682 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 683 0x1c, 0x22, 0x1a, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 684 0x3a, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x82, 0xd3, 0xe4, 685 0x93, 0x02, 0x03, 0x3a, 0x01, 0x2a, 0x42, 0x60, 0x0a, 0x28, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 686 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 687 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 688 0x76, 0x32, 0x42, 0x08, 0x48, 0x64, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x88, 0x01, 689 0x01, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x19, 0x12, 0x17, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 690 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 691 0xba, 0x80, 0xc8, 0xd1, 0x06, 0x02, 0x10, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 692 } 693 694 var ( 695 file_envoy_service_discovery_v2_hds_proto_rawDescOnce sync.Once 696 file_envoy_service_discovery_v2_hds_proto_rawDescData = file_envoy_service_discovery_v2_hds_proto_rawDesc 697 ) 698 699 func file_envoy_service_discovery_v2_hds_proto_rawDescGZIP() []byte { 700 file_envoy_service_discovery_v2_hds_proto_rawDescOnce.Do(func() { 701 file_envoy_service_discovery_v2_hds_proto_rawDescData = protoimpl.X.CompressGZIP(file_envoy_service_discovery_v2_hds_proto_rawDescData) 702 }) 703 return file_envoy_service_discovery_v2_hds_proto_rawDescData 704 } 705 706 var file_envoy_service_discovery_v2_hds_proto_enumTypes = make([]protoimpl.EnumInfo, 1) 707 var file_envoy_service_discovery_v2_hds_proto_msgTypes = make([]protoimpl.MessageInfo, 8) 708 var file_envoy_service_discovery_v2_hds_proto_goTypes = []interface{}{ 709 (Capability_Protocol)(0), // 0: envoy.service.discovery.v2.Capability.Protocol 710 (*Capability)(nil), // 1: envoy.service.discovery.v2.Capability 711 (*HealthCheckRequest)(nil), // 2: envoy.service.discovery.v2.HealthCheckRequest 712 (*EndpointHealth)(nil), // 3: envoy.service.discovery.v2.EndpointHealth 713 (*EndpointHealthResponse)(nil), // 4: envoy.service.discovery.v2.EndpointHealthResponse 714 (*HealthCheckRequestOrEndpointHealthResponse)(nil), // 5: envoy.service.discovery.v2.HealthCheckRequestOrEndpointHealthResponse 715 (*LocalityEndpoints)(nil), // 6: envoy.service.discovery.v2.LocalityEndpoints 716 (*ClusterHealthCheck)(nil), // 7: envoy.service.discovery.v2.ClusterHealthCheck 717 (*HealthCheckSpecifier)(nil), // 8: envoy.service.discovery.v2.HealthCheckSpecifier 718 (*core.Node)(nil), // 9: envoy.api.v2.core.Node 719 (*endpoint.Endpoint)(nil), // 10: envoy.api.v2.endpoint.Endpoint 720 (core.HealthStatus)(0), // 11: envoy.api.v2.core.HealthStatus 721 (*core.Locality)(nil), // 12: envoy.api.v2.core.Locality 722 (*core.HealthCheck)(nil), // 13: envoy.api.v2.core.HealthCheck 723 (*duration.Duration)(nil), // 14: google.protobuf.Duration 724 } 725 var file_envoy_service_discovery_v2_hds_proto_depIdxs = []int32{ 726 0, // 0: envoy.service.discovery.v2.Capability.health_check_protocols:type_name -> envoy.service.discovery.v2.Capability.Protocol 727 9, // 1: envoy.service.discovery.v2.HealthCheckRequest.node:type_name -> envoy.api.v2.core.Node 728 1, // 2: envoy.service.discovery.v2.HealthCheckRequest.capability:type_name -> envoy.service.discovery.v2.Capability 729 10, // 3: envoy.service.discovery.v2.EndpointHealth.endpoint:type_name -> envoy.api.v2.endpoint.Endpoint 730 11, // 4: envoy.service.discovery.v2.EndpointHealth.health_status:type_name -> envoy.api.v2.core.HealthStatus 731 3, // 5: envoy.service.discovery.v2.EndpointHealthResponse.endpoints_health:type_name -> envoy.service.discovery.v2.EndpointHealth 732 2, // 6: envoy.service.discovery.v2.HealthCheckRequestOrEndpointHealthResponse.health_check_request:type_name -> envoy.service.discovery.v2.HealthCheckRequest 733 4, // 7: envoy.service.discovery.v2.HealthCheckRequestOrEndpointHealthResponse.endpoint_health_response:type_name -> envoy.service.discovery.v2.EndpointHealthResponse 734 12, // 8: envoy.service.discovery.v2.LocalityEndpoints.locality:type_name -> envoy.api.v2.core.Locality 735 10, // 9: envoy.service.discovery.v2.LocalityEndpoints.endpoints:type_name -> envoy.api.v2.endpoint.Endpoint 736 13, // 10: envoy.service.discovery.v2.ClusterHealthCheck.health_checks:type_name -> envoy.api.v2.core.HealthCheck 737 6, // 11: envoy.service.discovery.v2.ClusterHealthCheck.locality_endpoints:type_name -> envoy.service.discovery.v2.LocalityEndpoints 738 7, // 12: envoy.service.discovery.v2.HealthCheckSpecifier.cluster_health_checks:type_name -> envoy.service.discovery.v2.ClusterHealthCheck 739 14, // 13: envoy.service.discovery.v2.HealthCheckSpecifier.interval:type_name -> google.protobuf.Duration 740 5, // 14: envoy.service.discovery.v2.HealthDiscoveryService.StreamHealthCheck:input_type -> envoy.service.discovery.v2.HealthCheckRequestOrEndpointHealthResponse 741 5, // 15: envoy.service.discovery.v2.HealthDiscoveryService.FetchHealthCheck:input_type -> envoy.service.discovery.v2.HealthCheckRequestOrEndpointHealthResponse 742 8, // 16: envoy.service.discovery.v2.HealthDiscoveryService.StreamHealthCheck:output_type -> envoy.service.discovery.v2.HealthCheckSpecifier 743 8, // 17: envoy.service.discovery.v2.HealthDiscoveryService.FetchHealthCheck:output_type -> envoy.service.discovery.v2.HealthCheckSpecifier 744 16, // [16:18] is the sub-list for method output_type 745 14, // [14:16] is the sub-list for method input_type 746 14, // [14:14] is the sub-list for extension type_name 747 14, // [14:14] is the sub-list for extension extendee 748 0, // [0:14] is the sub-list for field type_name 749 } 750 751 func init() { file_envoy_service_discovery_v2_hds_proto_init() } 752 func file_envoy_service_discovery_v2_hds_proto_init() { 753 if File_envoy_service_discovery_v2_hds_proto != nil { 754 return 755 } 756 if !protoimpl.UnsafeEnabled { 757 file_envoy_service_discovery_v2_hds_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 758 switch v := v.(*Capability); i { 759 case 0: 760 return &v.state 761 case 1: 762 return &v.sizeCache 763 case 2: 764 return &v.unknownFields 765 default: 766 return nil 767 } 768 } 769 file_envoy_service_discovery_v2_hds_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 770 switch v := v.(*HealthCheckRequest); i { 771 case 0: 772 return &v.state 773 case 1: 774 return &v.sizeCache 775 case 2: 776 return &v.unknownFields 777 default: 778 return nil 779 } 780 } 781 file_envoy_service_discovery_v2_hds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 782 switch v := v.(*EndpointHealth); i { 783 case 0: 784 return &v.state 785 case 1: 786 return &v.sizeCache 787 case 2: 788 return &v.unknownFields 789 default: 790 return nil 791 } 792 } 793 file_envoy_service_discovery_v2_hds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 794 switch v := v.(*EndpointHealthResponse); i { 795 case 0: 796 return &v.state 797 case 1: 798 return &v.sizeCache 799 case 2: 800 return &v.unknownFields 801 default: 802 return nil 803 } 804 } 805 file_envoy_service_discovery_v2_hds_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 806 switch v := v.(*HealthCheckRequestOrEndpointHealthResponse); i { 807 case 0: 808 return &v.state 809 case 1: 810 return &v.sizeCache 811 case 2: 812 return &v.unknownFields 813 default: 814 return nil 815 } 816 } 817 file_envoy_service_discovery_v2_hds_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 818 switch v := v.(*LocalityEndpoints); i { 819 case 0: 820 return &v.state 821 case 1: 822 return &v.sizeCache 823 case 2: 824 return &v.unknownFields 825 default: 826 return nil 827 } 828 } 829 file_envoy_service_discovery_v2_hds_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 830 switch v := v.(*ClusterHealthCheck); i { 831 case 0: 832 return &v.state 833 case 1: 834 return &v.sizeCache 835 case 2: 836 return &v.unknownFields 837 default: 838 return nil 839 } 840 } 841 file_envoy_service_discovery_v2_hds_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 842 switch v := v.(*HealthCheckSpecifier); i { 843 case 0: 844 return &v.state 845 case 1: 846 return &v.sizeCache 847 case 2: 848 return &v.unknownFields 849 default: 850 return nil 851 } 852 } 853 } 854 file_envoy_service_discovery_v2_hds_proto_msgTypes[4].OneofWrappers = []interface{}{ 855 (*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest)(nil), 856 (*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse)(nil), 857 } 858 type x struct{} 859 out := protoimpl.TypeBuilder{ 860 File: protoimpl.DescBuilder{ 861 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 862 RawDescriptor: file_envoy_service_discovery_v2_hds_proto_rawDesc, 863 NumEnums: 1, 864 NumMessages: 8, 865 NumExtensions: 0, 866 NumServices: 1, 867 }, 868 GoTypes: file_envoy_service_discovery_v2_hds_proto_goTypes, 869 DependencyIndexes: file_envoy_service_discovery_v2_hds_proto_depIdxs, 870 EnumInfos: file_envoy_service_discovery_v2_hds_proto_enumTypes, 871 MessageInfos: file_envoy_service_discovery_v2_hds_proto_msgTypes, 872 }.Build() 873 File_envoy_service_discovery_v2_hds_proto = out.File 874 file_envoy_service_discovery_v2_hds_proto_rawDesc = nil 875 file_envoy_service_discovery_v2_hds_proto_goTypes = nil 876 file_envoy_service_discovery_v2_hds_proto_depIdxs = nil 877 } 878 879 // Reference imports to suppress errors if they are not otherwise used. 880 var _ context.Context 881 var _ grpc.ClientConnInterface 882 883 // This is a compile-time assertion to ensure that this generated file 884 // is compatible with the grpc package it is being compiled against. 885 const _ = grpc.SupportPackageIsVersion6 886 887 // HealthDiscoveryServiceClient is the client API for HealthDiscoveryService service. 888 // 889 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 890 type HealthDiscoveryServiceClient interface { 891 // 1. Envoy starts up and if its can_healthcheck option in the static 892 // bootstrap config is enabled, sends HealthCheckRequest to the management 893 // server. It supplies its capabilities (which protocol it can health check 894 // with, what zone it resides in, etc.). 895 // 2. In response to (1), the management server designates this Envoy as a 896 // healthchecker to health check a subset of all upstream hosts for a given 897 // cluster (for example upstream Host 1 and Host 2). It streams 898 // HealthCheckSpecifier messages with cluster related configuration for all 899 // clusters this Envoy is designated to health check. Subsequent 900 // HealthCheckSpecifier message will be sent on changes to: 901 // a. Endpoints to health checks 902 // b. Per cluster configuration change 903 // 3. Envoy creates a health probe based on the HealthCheck config and sends 904 // it to endpoint(ip:port) of Host 1 and 2. Based on the HealthCheck 905 // configuration Envoy waits upon the arrival of the probe response and 906 // looks at the content of the response to decide whether the endpoint is 907 // healthy or not. If a response hasn't been received within the timeout 908 // interval, the endpoint health status is considered TIMEOUT. 909 // 4. Envoy reports results back in an EndpointHealthResponse message. 910 // Envoy streams responses as often as the interval configured by the 911 // management server in HealthCheckSpecifier. 912 // 5. The management Server collects health statuses for all endpoints in the 913 // cluster (for all clusters) and uses this information to construct 914 // EndpointDiscoveryResponse messages. 915 // 6. Once Envoy has a list of upstream endpoints to send traffic to, it load 916 // balances traffic to them without additional health checking. It may 917 // use inline healthcheck (i.e. consider endpoint UNHEALTHY if connection 918 // failed to a particular endpoint to account for health status propagation 919 // delay between HDS and EDS). 920 // By default, can_healthcheck is true. If can_healthcheck is false, Cluster 921 // configuration may not contain HealthCheck message. 922 // TODO(htuch): How is can_healthcheck communicated to CDS to ensure the above 923 // invariant? 924 // TODO(htuch): Add @amb67's diagram. 925 StreamHealthCheck(ctx context.Context, opts ...grpc.CallOption) (HealthDiscoveryService_StreamHealthCheckClient, error) 926 // TODO(htuch): Unlike the gRPC version, there is no stream-based binding of 927 // request/response. Should we add an identifier to the HealthCheckSpecifier 928 // to bind with the response? 929 FetchHealthCheck(ctx context.Context, in *HealthCheckRequestOrEndpointHealthResponse, opts ...grpc.CallOption) (*HealthCheckSpecifier, error) 930 } 931 932 type healthDiscoveryServiceClient struct { 933 cc grpc.ClientConnInterface 934 } 935 936 func NewHealthDiscoveryServiceClient(cc grpc.ClientConnInterface) HealthDiscoveryServiceClient { 937 return &healthDiscoveryServiceClient{cc} 938 } 939 940 func (c *healthDiscoveryServiceClient) StreamHealthCheck(ctx context.Context, opts ...grpc.CallOption) (HealthDiscoveryService_StreamHealthCheckClient, error) { 941 stream, err := c.cc.NewStream(ctx, &_HealthDiscoveryService_serviceDesc.Streams[0], "/envoy.service.discovery.v2.HealthDiscoveryService/StreamHealthCheck", opts...) 942 if err != nil { 943 return nil, err 944 } 945 x := &healthDiscoveryServiceStreamHealthCheckClient{stream} 946 return x, nil 947 } 948 949 type HealthDiscoveryService_StreamHealthCheckClient interface { 950 Send(*HealthCheckRequestOrEndpointHealthResponse) error 951 Recv() (*HealthCheckSpecifier, error) 952 grpc.ClientStream 953 } 954 955 type healthDiscoveryServiceStreamHealthCheckClient struct { 956 grpc.ClientStream 957 } 958 959 func (x *healthDiscoveryServiceStreamHealthCheckClient) Send(m *HealthCheckRequestOrEndpointHealthResponse) error { 960 return x.ClientStream.SendMsg(m) 961 } 962 963 func (x *healthDiscoveryServiceStreamHealthCheckClient) Recv() (*HealthCheckSpecifier, error) { 964 m := new(HealthCheckSpecifier) 965 if err := x.ClientStream.RecvMsg(m); err != nil { 966 return nil, err 967 } 968 return m, nil 969 } 970 971 func (c *healthDiscoveryServiceClient) FetchHealthCheck(ctx context.Context, in *HealthCheckRequestOrEndpointHealthResponse, opts ...grpc.CallOption) (*HealthCheckSpecifier, error) { 972 out := new(HealthCheckSpecifier) 973 err := c.cc.Invoke(ctx, "/envoy.service.discovery.v2.HealthDiscoveryService/FetchHealthCheck", in, out, opts...) 974 if err != nil { 975 return nil, err 976 } 977 return out, nil 978 } 979 980 // HealthDiscoveryServiceServer is the server API for HealthDiscoveryService service. 981 type HealthDiscoveryServiceServer interface { 982 // 1. Envoy starts up and if its can_healthcheck option in the static 983 // bootstrap config is enabled, sends HealthCheckRequest to the management 984 // server. It supplies its capabilities (which protocol it can health check 985 // with, what zone it resides in, etc.). 986 // 2. In response to (1), the management server designates this Envoy as a 987 // healthchecker to health check a subset of all upstream hosts for a given 988 // cluster (for example upstream Host 1 and Host 2). It streams 989 // HealthCheckSpecifier messages with cluster related configuration for all 990 // clusters this Envoy is designated to health check. Subsequent 991 // HealthCheckSpecifier message will be sent on changes to: 992 // a. Endpoints to health checks 993 // b. Per cluster configuration change 994 // 3. Envoy creates a health probe based on the HealthCheck config and sends 995 // it to endpoint(ip:port) of Host 1 and 2. Based on the HealthCheck 996 // configuration Envoy waits upon the arrival of the probe response and 997 // looks at the content of the response to decide whether the endpoint is 998 // healthy or not. If a response hasn't been received within the timeout 999 // interval, the endpoint health status is considered TIMEOUT. 1000 // 4. Envoy reports results back in an EndpointHealthResponse message. 1001 // Envoy streams responses as often as the interval configured by the 1002 // management server in HealthCheckSpecifier. 1003 // 5. The management Server collects health statuses for all endpoints in the 1004 // cluster (for all clusters) and uses this information to construct 1005 // EndpointDiscoveryResponse messages. 1006 // 6. Once Envoy has a list of upstream endpoints to send traffic to, it load 1007 // balances traffic to them without additional health checking. It may 1008 // use inline healthcheck (i.e. consider endpoint UNHEALTHY if connection 1009 // failed to a particular endpoint to account for health status propagation 1010 // delay between HDS and EDS). 1011 // By default, can_healthcheck is true. If can_healthcheck is false, Cluster 1012 // configuration may not contain HealthCheck message. 1013 // TODO(htuch): How is can_healthcheck communicated to CDS to ensure the above 1014 // invariant? 1015 // TODO(htuch): Add @amb67's diagram. 1016 StreamHealthCheck(HealthDiscoveryService_StreamHealthCheckServer) error 1017 // TODO(htuch): Unlike the gRPC version, there is no stream-based binding of 1018 // request/response. Should we add an identifier to the HealthCheckSpecifier 1019 // to bind with the response? 1020 FetchHealthCheck(context.Context, *HealthCheckRequestOrEndpointHealthResponse) (*HealthCheckSpecifier, error) 1021 } 1022 1023 // UnimplementedHealthDiscoveryServiceServer can be embedded to have forward compatible implementations. 1024 type UnimplementedHealthDiscoveryServiceServer struct { 1025 } 1026 1027 func (*UnimplementedHealthDiscoveryServiceServer) StreamHealthCheck(HealthDiscoveryService_StreamHealthCheckServer) error { 1028 return status.Errorf(codes.Unimplemented, "method StreamHealthCheck not implemented") 1029 } 1030 func (*UnimplementedHealthDiscoveryServiceServer) FetchHealthCheck(context.Context, *HealthCheckRequestOrEndpointHealthResponse) (*HealthCheckSpecifier, error) { 1031 return nil, status.Errorf(codes.Unimplemented, "method FetchHealthCheck not implemented") 1032 } 1033 1034 func RegisterHealthDiscoveryServiceServer(s *grpc.Server, srv HealthDiscoveryServiceServer) { 1035 s.RegisterService(&_HealthDiscoveryService_serviceDesc, srv) 1036 } 1037 1038 func _HealthDiscoveryService_StreamHealthCheck_Handler(srv interface{}, stream grpc.ServerStream) error { 1039 return srv.(HealthDiscoveryServiceServer).StreamHealthCheck(&healthDiscoveryServiceStreamHealthCheckServer{stream}) 1040 } 1041 1042 type HealthDiscoveryService_StreamHealthCheckServer interface { 1043 Send(*HealthCheckSpecifier) error 1044 Recv() (*HealthCheckRequestOrEndpointHealthResponse, error) 1045 grpc.ServerStream 1046 } 1047 1048 type healthDiscoveryServiceStreamHealthCheckServer struct { 1049 grpc.ServerStream 1050 } 1051 1052 func (x *healthDiscoveryServiceStreamHealthCheckServer) Send(m *HealthCheckSpecifier) error { 1053 return x.ServerStream.SendMsg(m) 1054 } 1055 1056 func (x *healthDiscoveryServiceStreamHealthCheckServer) Recv() (*HealthCheckRequestOrEndpointHealthResponse, error) { 1057 m := new(HealthCheckRequestOrEndpointHealthResponse) 1058 if err := x.ServerStream.RecvMsg(m); err != nil { 1059 return nil, err 1060 } 1061 return m, nil 1062 } 1063 1064 func _HealthDiscoveryService_FetchHealthCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 1065 in := new(HealthCheckRequestOrEndpointHealthResponse) 1066 if err := dec(in); err != nil { 1067 return nil, err 1068 } 1069 if interceptor == nil { 1070 return srv.(HealthDiscoveryServiceServer).FetchHealthCheck(ctx, in) 1071 } 1072 info := &grpc.UnaryServerInfo{ 1073 Server: srv, 1074 FullMethod: "/envoy.service.discovery.v2.HealthDiscoveryService/FetchHealthCheck", 1075 } 1076 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 1077 return srv.(HealthDiscoveryServiceServer).FetchHealthCheck(ctx, req.(*HealthCheckRequestOrEndpointHealthResponse)) 1078 } 1079 return interceptor(ctx, in, info, handler) 1080 } 1081 1082 var _HealthDiscoveryService_serviceDesc = grpc.ServiceDesc{ 1083 ServiceName: "envoy.service.discovery.v2.HealthDiscoveryService", 1084 HandlerType: (*HealthDiscoveryServiceServer)(nil), 1085 Methods: []grpc.MethodDesc{ 1086 { 1087 MethodName: "FetchHealthCheck", 1088 Handler: _HealthDiscoveryService_FetchHealthCheck_Handler, 1089 }, 1090 }, 1091 Streams: []grpc.StreamDesc{ 1092 { 1093 StreamName: "StreamHealthCheck", 1094 Handler: _HealthDiscoveryService_StreamHealthCheck_Handler, 1095 ServerStreams: true, 1096 ClientStreams: true, 1097 }, 1098 }, 1099 Metadata: "envoy/service/discovery/v2/hds.proto", 1100 }