...

Source file src/github.com/emissary-ingress/emissary/v3/pkg/api/envoy/service/discovery/v2/hds.pb.go

Documentation: github.com/emissary-ingress/emissary/v3/pkg/api/envoy/service/discovery/v2

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // versions:
     3  // 	protoc-gen-go v1.28.1
     4  // 	protoc        v3.21.12
     5  // source: envoy/service/discovery/v2/hds.proto
     6  
     7  package discoveryv2
     8  
     9  import (
    10  	context "context"
    11  	_ "github.com/cncf/xds/go/udpa/annotations"
    12  	core "github.com/emissary-ingress/emissary/v3/pkg/api/envoy/api/v2/core"
    13  	endpoint "github.com/emissary-ingress/emissary/v3/pkg/api/envoy/api/v2/endpoint"
    14  	duration "github.com/golang/protobuf/ptypes/duration"
    15  	_ "google.golang.org/genproto/googleapis/api/annotations"
    16  	grpc "google.golang.org/grpc"
    17  	codes "google.golang.org/grpc/codes"
    18  	status "google.golang.org/grpc/status"
    19  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    20  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    21  	reflect "reflect"
    22  	sync "sync"
    23  )
    24  
    25  const (
    26  	// Verify that this generated code is sufficiently up-to-date.
    27  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    28  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    29  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    30  )
    31  
    32  // Different Envoy instances may have different capabilities (e.g. Redis)
    33  // and/or have ports enabled for different protocols.
    34  type Capability_Protocol int32
    35  
    36  const (
    37  	Capability_HTTP  Capability_Protocol = 0
    38  	Capability_TCP   Capability_Protocol = 1
    39  	Capability_REDIS Capability_Protocol = 2
    40  )
    41  
    42  // Enum value maps for Capability_Protocol.
    43  var (
    44  	Capability_Protocol_name = map[int32]string{
    45  		0: "HTTP",
    46  		1: "TCP",
    47  		2: "REDIS",
    48  	}
    49  	Capability_Protocol_value = map[string]int32{
    50  		"HTTP":  0,
    51  		"TCP":   1,
    52  		"REDIS": 2,
    53  	}
    54  )
    55  
    56  func (x Capability_Protocol) Enum() *Capability_Protocol {
    57  	p := new(Capability_Protocol)
    58  	*p = x
    59  	return p
    60  }
    61  
    62  func (x Capability_Protocol) String() string {
    63  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    64  }
    65  
    66  func (Capability_Protocol) Descriptor() protoreflect.EnumDescriptor {
    67  	return file_envoy_service_discovery_v2_hds_proto_enumTypes[0].Descriptor()
    68  }
    69  
    70  func (Capability_Protocol) Type() protoreflect.EnumType {
    71  	return &file_envoy_service_discovery_v2_hds_proto_enumTypes[0]
    72  }
    73  
    74  func (x Capability_Protocol) Number() protoreflect.EnumNumber {
    75  	return protoreflect.EnumNumber(x)
    76  }
    77  
    78  // Deprecated: Use Capability_Protocol.Descriptor instead.
    79  func (Capability_Protocol) EnumDescriptor() ([]byte, []int) {
    80  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{0, 0}
    81  }
    82  
    83  // Defines supported protocols etc, so the management server can assign proper
    84  // endpoints to healthcheck.
    85  type Capability struct {
    86  	state         protoimpl.MessageState
    87  	sizeCache     protoimpl.SizeCache
    88  	unknownFields protoimpl.UnknownFields
    89  
    90  	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"`
    91  }
    92  
    93  func (x *Capability) Reset() {
    94  	*x = Capability{}
    95  	if protoimpl.UnsafeEnabled {
    96  		mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[0]
    97  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    98  		ms.StoreMessageInfo(mi)
    99  	}
   100  }
   101  
   102  func (x *Capability) String() string {
   103  	return protoimpl.X.MessageStringOf(x)
   104  }
   105  
   106  func (*Capability) ProtoMessage() {}
   107  
   108  func (x *Capability) ProtoReflect() protoreflect.Message {
   109  	mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[0]
   110  	if protoimpl.UnsafeEnabled && x != nil {
   111  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   112  		if ms.LoadMessageInfo() == nil {
   113  			ms.StoreMessageInfo(mi)
   114  		}
   115  		return ms
   116  	}
   117  	return mi.MessageOf(x)
   118  }
   119  
   120  // Deprecated: Use Capability.ProtoReflect.Descriptor instead.
   121  func (*Capability) Descriptor() ([]byte, []int) {
   122  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{0}
   123  }
   124  
   125  func (x *Capability) GetHealthCheckProtocols() []Capability_Protocol {
   126  	if x != nil {
   127  		return x.HealthCheckProtocols
   128  	}
   129  	return nil
   130  }
   131  
   132  type HealthCheckRequest struct {
   133  	state         protoimpl.MessageState
   134  	sizeCache     protoimpl.SizeCache
   135  	unknownFields protoimpl.UnknownFields
   136  
   137  	Node       *core.Node  `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
   138  	Capability *Capability `protobuf:"bytes,2,opt,name=capability,proto3" json:"capability,omitempty"`
   139  }
   140  
   141  func (x *HealthCheckRequest) Reset() {
   142  	*x = HealthCheckRequest{}
   143  	if protoimpl.UnsafeEnabled {
   144  		mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[1]
   145  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   146  		ms.StoreMessageInfo(mi)
   147  	}
   148  }
   149  
   150  func (x *HealthCheckRequest) String() string {
   151  	return protoimpl.X.MessageStringOf(x)
   152  }
   153  
   154  func (*HealthCheckRequest) ProtoMessage() {}
   155  
   156  func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message {
   157  	mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[1]
   158  	if protoimpl.UnsafeEnabled && x != nil {
   159  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   160  		if ms.LoadMessageInfo() == nil {
   161  			ms.StoreMessageInfo(mi)
   162  		}
   163  		return ms
   164  	}
   165  	return mi.MessageOf(x)
   166  }
   167  
   168  // Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead.
   169  func (*HealthCheckRequest) Descriptor() ([]byte, []int) {
   170  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{1}
   171  }
   172  
   173  func (x *HealthCheckRequest) GetNode() *core.Node {
   174  	if x != nil {
   175  		return x.Node
   176  	}
   177  	return nil
   178  }
   179  
   180  func (x *HealthCheckRequest) GetCapability() *Capability {
   181  	if x != nil {
   182  		return x.Capability
   183  	}
   184  	return nil
   185  }
   186  
   187  type EndpointHealth struct {
   188  	state         protoimpl.MessageState
   189  	sizeCache     protoimpl.SizeCache
   190  	unknownFields protoimpl.UnknownFields
   191  
   192  	Endpoint     *endpoint.Endpoint `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
   193  	HealthStatus core.HealthStatus  `protobuf:"varint,2,opt,name=health_status,json=healthStatus,proto3,enum=envoy.api.v2.core.HealthStatus" json:"health_status,omitempty"`
   194  }
   195  
   196  func (x *EndpointHealth) Reset() {
   197  	*x = EndpointHealth{}
   198  	if protoimpl.UnsafeEnabled {
   199  		mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[2]
   200  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   201  		ms.StoreMessageInfo(mi)
   202  	}
   203  }
   204  
   205  func (x *EndpointHealth) String() string {
   206  	return protoimpl.X.MessageStringOf(x)
   207  }
   208  
   209  func (*EndpointHealth) ProtoMessage() {}
   210  
   211  func (x *EndpointHealth) ProtoReflect() protoreflect.Message {
   212  	mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[2]
   213  	if protoimpl.UnsafeEnabled && x != nil {
   214  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   215  		if ms.LoadMessageInfo() == nil {
   216  			ms.StoreMessageInfo(mi)
   217  		}
   218  		return ms
   219  	}
   220  	return mi.MessageOf(x)
   221  }
   222  
   223  // Deprecated: Use EndpointHealth.ProtoReflect.Descriptor instead.
   224  func (*EndpointHealth) Descriptor() ([]byte, []int) {
   225  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{2}
   226  }
   227  
   228  func (x *EndpointHealth) GetEndpoint() *endpoint.Endpoint {
   229  	if x != nil {
   230  		return x.Endpoint
   231  	}
   232  	return nil
   233  }
   234  
   235  func (x *EndpointHealth) GetHealthStatus() core.HealthStatus {
   236  	if x != nil {
   237  		return x.HealthStatus
   238  	}
   239  	return core.HealthStatus(0)
   240  }
   241  
   242  type EndpointHealthResponse struct {
   243  	state         protoimpl.MessageState
   244  	sizeCache     protoimpl.SizeCache
   245  	unknownFields protoimpl.UnknownFields
   246  
   247  	EndpointsHealth []*EndpointHealth `protobuf:"bytes,1,rep,name=endpoints_health,json=endpointsHealth,proto3" json:"endpoints_health,omitempty"`
   248  }
   249  
   250  func (x *EndpointHealthResponse) Reset() {
   251  	*x = EndpointHealthResponse{}
   252  	if protoimpl.UnsafeEnabled {
   253  		mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[3]
   254  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   255  		ms.StoreMessageInfo(mi)
   256  	}
   257  }
   258  
   259  func (x *EndpointHealthResponse) String() string {
   260  	return protoimpl.X.MessageStringOf(x)
   261  }
   262  
   263  func (*EndpointHealthResponse) ProtoMessage() {}
   264  
   265  func (x *EndpointHealthResponse) ProtoReflect() protoreflect.Message {
   266  	mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[3]
   267  	if protoimpl.UnsafeEnabled && x != nil {
   268  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   269  		if ms.LoadMessageInfo() == nil {
   270  			ms.StoreMessageInfo(mi)
   271  		}
   272  		return ms
   273  	}
   274  	return mi.MessageOf(x)
   275  }
   276  
   277  // Deprecated: Use EndpointHealthResponse.ProtoReflect.Descriptor instead.
   278  func (*EndpointHealthResponse) Descriptor() ([]byte, []int) {
   279  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{3}
   280  }
   281  
   282  func (x *EndpointHealthResponse) GetEndpointsHealth() []*EndpointHealth {
   283  	if x != nil {
   284  		return x.EndpointsHealth
   285  	}
   286  	return nil
   287  }
   288  
   289  type HealthCheckRequestOrEndpointHealthResponse struct {
   290  	state         protoimpl.MessageState
   291  	sizeCache     protoimpl.SizeCache
   292  	unknownFields protoimpl.UnknownFields
   293  
   294  	// Types that are assignable to RequestType:
   295  	//	*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest
   296  	//	*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse
   297  	RequestType isHealthCheckRequestOrEndpointHealthResponse_RequestType `protobuf_oneof:"request_type"`
   298  }
   299  
   300  func (x *HealthCheckRequestOrEndpointHealthResponse) Reset() {
   301  	*x = HealthCheckRequestOrEndpointHealthResponse{}
   302  	if protoimpl.UnsafeEnabled {
   303  		mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[4]
   304  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   305  		ms.StoreMessageInfo(mi)
   306  	}
   307  }
   308  
   309  func (x *HealthCheckRequestOrEndpointHealthResponse) String() string {
   310  	return protoimpl.X.MessageStringOf(x)
   311  }
   312  
   313  func (*HealthCheckRequestOrEndpointHealthResponse) ProtoMessage() {}
   314  
   315  func (x *HealthCheckRequestOrEndpointHealthResponse) ProtoReflect() protoreflect.Message {
   316  	mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[4]
   317  	if protoimpl.UnsafeEnabled && x != nil {
   318  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   319  		if ms.LoadMessageInfo() == nil {
   320  			ms.StoreMessageInfo(mi)
   321  		}
   322  		return ms
   323  	}
   324  	return mi.MessageOf(x)
   325  }
   326  
   327  // Deprecated: Use HealthCheckRequestOrEndpointHealthResponse.ProtoReflect.Descriptor instead.
   328  func (*HealthCheckRequestOrEndpointHealthResponse) Descriptor() ([]byte, []int) {
   329  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{4}
   330  }
   331  
   332  func (m *HealthCheckRequestOrEndpointHealthResponse) GetRequestType() isHealthCheckRequestOrEndpointHealthResponse_RequestType {
   333  	if m != nil {
   334  		return m.RequestType
   335  	}
   336  	return nil
   337  }
   338  
   339  func (x *HealthCheckRequestOrEndpointHealthResponse) GetHealthCheckRequest() *HealthCheckRequest {
   340  	if x, ok := x.GetRequestType().(*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest); ok {
   341  		return x.HealthCheckRequest
   342  	}
   343  	return nil
   344  }
   345  
   346  func (x *HealthCheckRequestOrEndpointHealthResponse) GetEndpointHealthResponse() *EndpointHealthResponse {
   347  	if x, ok := x.GetRequestType().(*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse); ok {
   348  		return x.EndpointHealthResponse
   349  	}
   350  	return nil
   351  }
   352  
   353  type isHealthCheckRequestOrEndpointHealthResponse_RequestType interface {
   354  	isHealthCheckRequestOrEndpointHealthResponse_RequestType()
   355  }
   356  
   357  type HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest struct {
   358  	HealthCheckRequest *HealthCheckRequest `protobuf:"bytes,1,opt,name=health_check_request,json=healthCheckRequest,proto3,oneof"`
   359  }
   360  
   361  type HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse struct {
   362  	EndpointHealthResponse *EndpointHealthResponse `protobuf:"bytes,2,opt,name=endpoint_health_response,json=endpointHealthResponse,proto3,oneof"`
   363  }
   364  
   365  func (*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest) isHealthCheckRequestOrEndpointHealthResponse_RequestType() {
   366  }
   367  
   368  func (*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse) isHealthCheckRequestOrEndpointHealthResponse_RequestType() {
   369  }
   370  
   371  type LocalityEndpoints struct {
   372  	state         protoimpl.MessageState
   373  	sizeCache     protoimpl.SizeCache
   374  	unknownFields protoimpl.UnknownFields
   375  
   376  	Locality  *core.Locality       `protobuf:"bytes,1,opt,name=locality,proto3" json:"locality,omitempty"`
   377  	Endpoints []*endpoint.Endpoint `protobuf:"bytes,2,rep,name=endpoints,proto3" json:"endpoints,omitempty"`
   378  }
   379  
   380  func (x *LocalityEndpoints) Reset() {
   381  	*x = LocalityEndpoints{}
   382  	if protoimpl.UnsafeEnabled {
   383  		mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[5]
   384  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   385  		ms.StoreMessageInfo(mi)
   386  	}
   387  }
   388  
   389  func (x *LocalityEndpoints) String() string {
   390  	return protoimpl.X.MessageStringOf(x)
   391  }
   392  
   393  func (*LocalityEndpoints) ProtoMessage() {}
   394  
   395  func (x *LocalityEndpoints) ProtoReflect() protoreflect.Message {
   396  	mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[5]
   397  	if protoimpl.UnsafeEnabled && x != nil {
   398  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   399  		if ms.LoadMessageInfo() == nil {
   400  			ms.StoreMessageInfo(mi)
   401  		}
   402  		return ms
   403  	}
   404  	return mi.MessageOf(x)
   405  }
   406  
   407  // Deprecated: Use LocalityEndpoints.ProtoReflect.Descriptor instead.
   408  func (*LocalityEndpoints) Descriptor() ([]byte, []int) {
   409  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{5}
   410  }
   411  
   412  func (x *LocalityEndpoints) GetLocality() *core.Locality {
   413  	if x != nil {
   414  		return x.Locality
   415  	}
   416  	return nil
   417  }
   418  
   419  func (x *LocalityEndpoints) GetEndpoints() []*endpoint.Endpoint {
   420  	if x != nil {
   421  		return x.Endpoints
   422  	}
   423  	return nil
   424  }
   425  
   426  // The cluster name and locality is provided to Envoy for the endpoints that it
   427  // health checks to support statistics reporting, logging and debugging by the
   428  // Envoy instance (outside of HDS). For maximum usefulness, it should match the
   429  // same cluster structure as that provided by EDS.
   430  type ClusterHealthCheck struct {
   431  	state         protoimpl.MessageState
   432  	sizeCache     protoimpl.SizeCache
   433  	unknownFields protoimpl.UnknownFields
   434  
   435  	ClusterName       string               `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
   436  	HealthChecks      []*core.HealthCheck  `protobuf:"bytes,2,rep,name=health_checks,json=healthChecks,proto3" json:"health_checks,omitempty"`
   437  	LocalityEndpoints []*LocalityEndpoints `protobuf:"bytes,3,rep,name=locality_endpoints,json=localityEndpoints,proto3" json:"locality_endpoints,omitempty"`
   438  }
   439  
   440  func (x *ClusterHealthCheck) Reset() {
   441  	*x = ClusterHealthCheck{}
   442  	if protoimpl.UnsafeEnabled {
   443  		mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[6]
   444  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   445  		ms.StoreMessageInfo(mi)
   446  	}
   447  }
   448  
   449  func (x *ClusterHealthCheck) String() string {
   450  	return protoimpl.X.MessageStringOf(x)
   451  }
   452  
   453  func (*ClusterHealthCheck) ProtoMessage() {}
   454  
   455  func (x *ClusterHealthCheck) ProtoReflect() protoreflect.Message {
   456  	mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[6]
   457  	if protoimpl.UnsafeEnabled && x != nil {
   458  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   459  		if ms.LoadMessageInfo() == nil {
   460  			ms.StoreMessageInfo(mi)
   461  		}
   462  		return ms
   463  	}
   464  	return mi.MessageOf(x)
   465  }
   466  
   467  // Deprecated: Use ClusterHealthCheck.ProtoReflect.Descriptor instead.
   468  func (*ClusterHealthCheck) Descriptor() ([]byte, []int) {
   469  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{6}
   470  }
   471  
   472  func (x *ClusterHealthCheck) GetClusterName() string {
   473  	if x != nil {
   474  		return x.ClusterName
   475  	}
   476  	return ""
   477  }
   478  
   479  func (x *ClusterHealthCheck) GetHealthChecks() []*core.HealthCheck {
   480  	if x != nil {
   481  		return x.HealthChecks
   482  	}
   483  	return nil
   484  }
   485  
   486  func (x *ClusterHealthCheck) GetLocalityEndpoints() []*LocalityEndpoints {
   487  	if x != nil {
   488  		return x.LocalityEndpoints
   489  	}
   490  	return nil
   491  }
   492  
   493  type HealthCheckSpecifier struct {
   494  	state         protoimpl.MessageState
   495  	sizeCache     protoimpl.SizeCache
   496  	unknownFields protoimpl.UnknownFields
   497  
   498  	ClusterHealthChecks []*ClusterHealthCheck `protobuf:"bytes,1,rep,name=cluster_health_checks,json=clusterHealthChecks,proto3" json:"cluster_health_checks,omitempty"`
   499  	// The default is 1 second.
   500  	Interval *duration.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"`
   501  }
   502  
   503  func (x *HealthCheckSpecifier) Reset() {
   504  	*x = HealthCheckSpecifier{}
   505  	if protoimpl.UnsafeEnabled {
   506  		mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[7]
   507  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   508  		ms.StoreMessageInfo(mi)
   509  	}
   510  }
   511  
   512  func (x *HealthCheckSpecifier) String() string {
   513  	return protoimpl.X.MessageStringOf(x)
   514  }
   515  
   516  func (*HealthCheckSpecifier) ProtoMessage() {}
   517  
   518  func (x *HealthCheckSpecifier) ProtoReflect() protoreflect.Message {
   519  	mi := &file_envoy_service_discovery_v2_hds_proto_msgTypes[7]
   520  	if protoimpl.UnsafeEnabled && x != nil {
   521  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   522  		if ms.LoadMessageInfo() == nil {
   523  			ms.StoreMessageInfo(mi)
   524  		}
   525  		return ms
   526  	}
   527  	return mi.MessageOf(x)
   528  }
   529  
   530  // Deprecated: Use HealthCheckSpecifier.ProtoReflect.Descriptor instead.
   531  func (*HealthCheckSpecifier) Descriptor() ([]byte, []int) {
   532  	return file_envoy_service_discovery_v2_hds_proto_rawDescGZIP(), []int{7}
   533  }
   534  
   535  func (x *HealthCheckSpecifier) GetClusterHealthChecks() []*ClusterHealthCheck {
   536  	if x != nil {
   537  		return x.ClusterHealthChecks
   538  	}
   539  	return nil
   540  }
   541  
   542  func (x *HealthCheckSpecifier) GetInterval() *duration.Duration {
   543  	if x != nil {
   544  		return x.Interval
   545  	}
   546  	return nil
   547  }
   548  
   549  var File_envoy_service_discovery_v2_hds_proto protoreflect.FileDescriptor
   550  
   551  var file_envoy_service_discovery_v2_hds_proto_rawDesc = []byte{
   552  	0x0a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f,
   553  	0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x68, 0x64, 0x73,
   554  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65,
   555  	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e,
   556  	0x76, 0x32, 0x1a, 0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32,
   557  	0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
   558  	0x1a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63,
   559  	0x6f, 0x72, 0x65, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b,
   560  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70,
   561  	0x69, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x65, 0x6e,
   562  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
   563  	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
   564  	0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
   565  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
   566  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
   567  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
   568  	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e,
   569  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
   570  	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70,
   571  	0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c,
   572  	0x69, 0x74, 0x79, 0x12, 0x65, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68,
   573  	0x65, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20,
   574  	0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76,
   575  	0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32,
   576  	0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x74,
   577  	0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x14, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63,
   578  	0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0x28, 0x0a, 0x08, 0x50, 0x72,
   579  	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00,
   580  	0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x44,
   581  	0x49, 0x53, 0x10, 0x02, 0x22, 0x89, 0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43,
   582  	0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e,
   583  	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
   584  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f,
   585  	0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x61, 0x70, 0x61,
   586  	0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65,
   587  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73,
   588  	0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69,
   589  	0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
   590  	0x22, 0x93, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61,
   591  	0x6c, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18,
   592  	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70,
   593  	0x69, 0x2e, 0x76, 0x32, 0x2e, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x45, 0x6e,
   594  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
   595  	0x12, 0x44, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
   596  	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
   597  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c,
   598  	0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
   599  	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6f, 0x0a, 0x16, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69,
   600  	0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
   601  	0x12, 0x55, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65,
   602  	0x61, 0x6c, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76,
   603  	0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f,
   604  	0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
   605  	0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
   606  	0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x90, 0x02, 0x0a, 0x2a, 0x48, 0x65, 0x61, 0x6c,
   607  	0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x72,
   608  	0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65,
   609  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x14, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
   610  	0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01,
   611  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72,
   612  	0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76,
   613  	0x32, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71,
   614  	0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68,
   615  	0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6e, 0x0a, 0x18, 0x65, 0x6e,
   616  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x72, 0x65,
   617  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65,
   618  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73,
   619  	0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69,
   620  	0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
   621  	0x48, 0x00, 0x52, 0x16, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c,
   622  	0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x72, 0x65,
   623  	0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x11, 0x4c,
   624  	0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
   625  	0x12, 0x37, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01,
   626  	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
   627  	0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52,
   628  	0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x65, 0x6e, 0x64,
   629  	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65,
   630  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x65, 0x6e, 0x64, 0x70,
   631  	0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x65,
   632  	0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x12, 0x43, 0x6c, 0x75,
   633  	0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12,
   634  	0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
   635  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61,
   636  	0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65,
   637  	0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
   638  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65,
   639  	0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74,
   640  	0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x5c, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
   641  	0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20,
   642  	0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76,
   643  	0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32,
   644  	0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
   645  	0x74, 0x73, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70,
   646  	0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x14, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
   647  	0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x62,
   648  	0x0a, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
   649  	0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
   650  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69,
   651  	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74,
   652  	0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x13, 0x63,
   653  	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63,
   654  	0x6b, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02,
   655  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
   656  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
   657  	0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x32, 0xea, 0x02, 0x0a, 0x16, 0x48, 0x65,
   658  	0x61, 0x6c, 0x74, 0x68, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72,
   659  	0x76, 0x69, 0x63, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48,
   660  	0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x46, 0x2e, 0x65, 0x6e, 0x76,
   661  	0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f,
   662  	0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68,
   663  	0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x72, 0x45, 0x6e, 0x64, 0x70,
   664  	0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
   665  	0x73, 0x65, 0x1a, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
   666  	0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e,
   667  	0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x69,
   668  	0x66, 0x69, 0x65, 0x72, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0xb9, 0x01, 0x0a, 0x10, 0x46,
   669  	0x65, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12,
   670  	0x46, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
   671  	0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61,
   672  	0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f,
   673  	0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52,
   674  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
   675  	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
   676  	0x79, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b,
   677  	0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02,
   678  	0x1c, 0x22, 0x1a, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
   679  	0x3a, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x82, 0xd3, 0xe4,
   680  	0x93, 0x02, 0x03, 0x3a, 0x01, 0x2a, 0x42, 0xaf, 0x01, 0x0a, 0x28, 0x69, 0x6f, 0x2e, 0x65, 0x6e,
   681  	0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73,
   682  	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
   683  	0x2e, 0x76, 0x32, 0x42, 0x08, 0x48, 0x64, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
   684  	0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f,
   685  	0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x67, 0x6f, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
   686  	0x6c, 0x2d, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x73, 0x65,
   687  	0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2f,
   688  	0x76, 0x32, 0x3b, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x76, 0x32, 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  }
  1101  

View as plain text