fork of https://github.com/sourcegraph/zoekt
0

Configure Feed

Select the types of activity you want to include in your feed.

at tngl 74 kB View raw
1{ 2 "$schema": "http://json-schema.org/draft-04/schema#", 3 "$ref": "#/definitions/XdsWrrLocalityLoadBalancingPolicyConfig", 4 "definitions": { 5 "XdsWrrLocalityLoadBalancingPolicyConfig": { 6 "properties": { 7 "childPolicy": { 8 "items": { 9 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 10 }, 11 "type": "array" 12 } 13 }, 14 "additionalProperties": true, 15 "type": "object", 16 "title": "Xds Wrr Locality Load Balancing Policy Config", 17 "description": "Configuration for the xds_wrr_locality load balancing policy." 18 }, 19 "grpc.lookup.v1.GrpcKeyBuilder": { 20 "properties": { 21 "names": { 22 "items": { 23 "$ref": "#/definitions/grpc.lookup.v1.GrpcKeyBuilder.Name" 24 }, 25 "type": "array" 26 }, 27 "extraKeys": { 28 "$ref": "#/definitions/grpc.lookup.v1.GrpcKeyBuilder.ExtraKeys", 29 "additionalProperties": true 30 }, 31 "headers": { 32 "items": { 33 "$ref": "#/definitions/grpc.lookup.v1.NameMatcher" 34 }, 35 "type": "array", 36 "description": "Extract keys from all listed headers. For gRPC, it is an error to specify \"required_match\" on the NameMatcher protos." 37 }, 38 "constantKeys": { 39 "additionalProperties": { 40 "type": "string" 41 }, 42 "type": "object", 43 "description": "You can optionally set one or more specific key/value pairs to be added to the key_map. This can be useful to identify which builder built the key, for example if you are suppressing the actual method, but need to separately cache and request all the matched methods." 44 } 45 }, 46 "additionalProperties": true, 47 "type": "object", 48 "title": "Grpc Key Builder", 49 "description": "A GrpcKeyBuilder applies to a given gRPC service, name, and headers." 50 }, 51 "grpc.lookup.v1.GrpcKeyBuilder.ExtraKeys": { 52 "properties": { 53 "host": { 54 "type": "string" 55 }, 56 "service": { 57 "type": "string" 58 }, 59 "method": { 60 "type": "string" 61 } 62 }, 63 "additionalProperties": true, 64 "type": "object", 65 "title": "Extra Keys", 66 "description": "If you wish to include the host, service, or method names as keys in the generated RouteLookupRequest, specify key names to use in the extra_keys submessage. If a key name is empty, no key will be set for that value. If this submessage is specified, the normal host/path fields will be left unset in the RouteLookupRequest. We are deprecating host/path in the RouteLookupRequest, so services should migrate to the ExtraKeys approach." 67 }, 68 "grpc.lookup.v1.GrpcKeyBuilder.Name": { 69 "properties": { 70 "service": { 71 "type": "string" 72 }, 73 "method": { 74 "type": "string" 75 } 76 }, 77 "additionalProperties": true, 78 "type": "object", 79 "title": "Name", 80 "description": "To match, one of the given Name fields must match; the service and method fields are specified as fixed strings. The service name is required and includes the proto package name. The method name may be omitted, in which case any method on the given service is matched." 81 }, 82 "grpc.lookup.v1.HttpKeyBuilder": { 83 "properties": { 84 "hostPatterns": { 85 "items": { 86 "type": "string" 87 }, 88 "type": "array", 89 "description": "host_pattern is an ordered list of host template patterns for the desired value. If any host_pattern values are specified, then at least one must match, and the last one wins and sets any specified variables. A host consists of labels separated by dots. Each label is matched against the label in the pattern as follows: - \"*\": Matches any single label. - \"**\": Matches zero or more labels (first or last part of host only). - \"{\u003cname\u003e=...}\": One or more label capture, where \"...\" can be any template that does not include a capture. - \"{\u003cname\u003e}\": A single label capture. Identical to {\u003cname\u003e=*}. Examples: - \"example.com\": Only applies to the exact host example.com. - \"*.example.com\": Matches subdomains of example.com. - \"**.example.com\": matches example.com, and all levels of subdomains. - \"{project}.example.com\": Extracts the third level subdomain. - \"{project=**}.example.com\": Extracts the third level+ subdomains. - \"{project=**}\": Extracts the entire host." 90 }, 91 "pathPatterns": { 92 "items": { 93 "type": "string" 94 }, 95 "type": "array", 96 "description": "path_pattern is an ordered list of path template patterns for the desired value. If any path_pattern values are specified, then at least one must match, and the last one wins and sets any specified variables. A path consists of segments separated by slashes. Each segment is matched against the segment in the pattern as follows: - \"*\": Matches any single segment. - \"**\": Matches zero or more segments (first or last part of path only). - \"{\u003cname\u003e=...}\": One or more segment capture, where \"...\" can be any template that does not include a capture. - \"{\u003cname\u003e}\": A single segment capture. Identical to {\u003cname\u003e=*}. A custom method may also be specified by appending \":\" and the custom method name or \"*\" to indicate any custom method (including no custom method). For example, \"/*/projects/{project_id}/**:*\" extracts `{project_id}` for any version, resource and custom method that includes it. By default, any custom method will be matched. Examples: - \"/v1/{name=messages/*}\": extracts a name like \"messages/12345\". - \"/v1/messages/{message_id}\": extracts a message_id like \"12345\". - \"/v1/users/{user_id}/messages/{message_id}\": extracts two key values." 97 }, 98 "queryParameters": { 99 "items": { 100 "$ref": "#/definitions/grpc.lookup.v1.NameMatcher" 101 }, 102 "type": "array", 103 "description": "List of query parameter names to try to match. For example: [\"parent\", \"name\", \"resource.name\"] We extract all the specified query_parameters (case-sensitively). If any are marked as \"required_match\" and are not present, this keybuilder fails to match. If a given parameter appears multiple times (?foo=a\u0026foo=b) we will report it as a comma-separated string (foo=a,b)." 104 }, 105 "headers": { 106 "items": { 107 "$ref": "#/definitions/grpc.lookup.v1.NameMatcher" 108 }, 109 "type": "array", 110 "description": "List of headers to try to match. We extract all the specified header values (case-insensitively). If any are marked as \"required_match\" and are not present, this keybuilder fails to match. If a given header appears multiple times in the request we will report it as a comma-separated string, in standard HTTP fashion." 111 }, 112 "constantKeys": { 113 "additionalProperties": { 114 "type": "string" 115 }, 116 "type": "object", 117 "description": "You can optionally set one or more specific key/value pairs to be added to the key_map. This can be useful to identify which builder built the key, for example if you are suppressing a lot of information from the URL, but need to separately cache and request URLs with that content." 118 } 119 }, 120 "additionalProperties": true, 121 "type": "object", 122 "title": "Http Key Builder", 123 "description": "An HttpKeyBuilder applies to a given HTTP URL and headers. Path and host patterns use the matching syntax from gRPC transcoding to extract named key/value pairs from the path and host components of the URL: https://github.com/googleapis/googleapis/blob/master/google/api/http.proto It is invalid to specify the same key name in multiple places in a pattern. For a service where the project id can be expressed either as a subdomain or in the path, separate HttpKeyBuilders must be used: host_pattern: 'example.com' path_pattern: '/{id}/{object}/**' host_pattern: '{id}.example.com' path_pattern: '/{object}/**' If the host is exactly 'example.com', the first path segment will be used as the id and the second segment as the object. If the host has a subdomain, the subdomain will be used as the id and the first segment as the object. If neither pattern matches, no keys will be extracted." 124 }, 125 "grpc.lookup.v1.NameMatcher": { 126 "properties": { 127 "key": { 128 "type": "string", 129 "description": "The name that will be used in the RLS key_map to refer to this value. If required_match is true, you may omit this field or set it to an empty string, in which case the matcher will require a match, but won't update the key_map." 130 }, 131 "names": { 132 "items": { 133 "type": "string" 134 }, 135 "type": "array", 136 "description": "Ordered list of names (headers or query parameter names) that can supply this value; the first one with a non-empty value is used." 137 }, 138 "requiredMatch": { 139 "type": "boolean", 140 "description": "If true, make this extraction required; the key builder will not match if no value is found." 141 } 142 }, 143 "additionalProperties": true, 144 "type": "object", 145 "title": "Name Matcher", 146 "description": "Extract a key based on a given name (e.g. header name or query parameter name). The name must match one of the names listed in the \"name\" field. If the \"required_match\" field is true, one of the specified names must be present for the keybuilder to match." 147 }, 148 "grpc.lookup.v1.RouteLookupConfig": { 149 "properties": { 150 "httpKeybuilders": { 151 "items": { 152 "$ref": "#/definitions/grpc.lookup.v1.HttpKeyBuilder" 153 }, 154 "type": "array", 155 "description": "Ordered specifications for constructing keys for HTTP requests. Last match wins. If no HttpKeyBuilder matches, an empty key_map will be sent to the lookup service; it should likely reply with a global default route and raise an alert." 156 }, 157 "grpcKeybuilders": { 158 "items": { 159 "$ref": "#/definitions/grpc.lookup.v1.GrpcKeyBuilder" 160 }, 161 "type": "array", 162 "description": "Unordered specifications for constructing keys for gRPC requests. All GrpcKeyBuilders on this list must have unique \"name\" fields so that the client is free to prebuild a hash map keyed by name. If no GrpcKeyBuilder matches, an empty key_map will be sent to the lookup service; it should likely reply with a global default route and raise an alert." 163 }, 164 "lookupService": { 165 "type": "string", 166 "description": "The name of the lookup service as a gRPC URI. Typically, this will be a subdomain of the target, such as \"lookup.datastore.googleapis.com\"." 167 }, 168 "lookupServiceTimeout": { 169 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 170 "type": "string", 171 "description": "Configure a timeout value for lookup service requests. Defaults to 10 seconds if not specified.", 172 "format": "regex" 173 }, 174 "maxAge": { 175 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 176 "type": "string", 177 "description": "How long are responses valid for (like HTTP Cache-Control). If omitted or zero, the longest valid cache time is used. This value is clamped to 5 minutes to avoid unflushable bad responses.", 178 "format": "regex" 179 }, 180 "staleAge": { 181 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 182 "type": "string", 183 "description": "After a response has been in the client cache for this amount of time and is re-requested, start an asynchronous RPC to re-validate it. This value should be less than max_age by at least the length of a typical RTT to the Route Lookup Service to fully mask the RTT latency. If omitted, keys are only re-requested after they have expired.", 184 "format": "regex" 185 }, 186 "cacheSizeBytes": { 187 "type": "string", 188 "description": "Rough indicator of amount of memory to use for the client cache. Some of the data structure overhead is not accounted for, so actual memory consumed will be somewhat greater than this value. If this field is omitted or set to zero, a client default will be used. The value may be capped to a lower amount based on client configuration." 189 }, 190 "validTargets": { 191 "items": { 192 "type": "string" 193 }, 194 "type": "array", 195 "description": "This is a list of all the possible targets that can be returned by the lookup service. If a target not on this list is returned, it will be treated the same as an unhealthy target." 196 }, 197 "defaultTarget": { 198 "type": "string", 199 "description": "This value provides a default target to use if needed. If set, it will be used if RLS returns an error, times out, or returns an invalid response. Note that requests can be routed only to a subdomain of the original target, e.g. \"us_east_1.cloudbigtable.googleapis.com\"." 200 } 201 }, 202 "additionalProperties": true, 203 "type": "object", 204 "title": "Route Lookup Config" 205 }, 206 "grpc.service_config.CdsConfig": { 207 "properties": { 208 "cluster": { 209 "type": "string", 210 "description": "Required." 211 } 212 }, 213 "additionalProperties": true, 214 "type": "object", 215 "title": "Cds Config", 216 "description": "Configuration for the cds LB policy." 217 }, 218 "grpc.service_config.EdsLoadBalancingPolicyConfig": { 219 "properties": { 220 "cluster": { 221 "type": "string", 222 "description": "Cluster name. Required." 223 }, 224 "edsServiceName": { 225 "type": "string", 226 "description": "EDS service name, as returned in CDS. May be unset if not specified in CDS." 227 }, 228 "lrsLoadReportingServerName": { 229 "additionalProperties": true, 230 "type": "string", 231 "description": "Server to send load reports to. If unset, no load reporting is done. If set to empty string, load reporting will be sent to the same server as we are getting xds data from." 232 }, 233 "localityPickingPolicy": { 234 "items": { 235 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 236 }, 237 "type": "array", 238 "description": "Locality-picking policy. This policy's config is expected to be in the format used by the weighted_target policy. Note that the config should include an empty value for the \"targets\" field; that empty value will be replaced by one that is dynamically generated based on the EDS data. Optional; defaults to \"weighted_target\"." 239 }, 240 "endpointPickingPolicy": { 241 "items": { 242 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 243 }, 244 "type": "array", 245 "description": "Endpoint-picking policy. This will be configured as the policy for each child in the locality-policy's config. Optional; defaults to \"round_robin\"." 246 } 247 }, 248 "additionalProperties": true, 249 "type": "object", 250 "title": "Eds Load Balancing Policy Config", 251 "description": "Configuration for eds LB policy." 252 }, 253 "grpc.service_config.GrpcLbConfig": { 254 "properties": { 255 "childPolicy": { 256 "items": { 257 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 258 }, 259 "type": "array", 260 "description": "Optional. What LB policy to use for routing between the backend addresses. If unset, defaults to round_robin. Currently, the only supported values are round_robin and pick_first. Note that this will be used both in balancer mode and in fallback mode. Multiple LB policies can be specified; clients will iterate through the list in order and stop at the first policy that they support." 261 }, 262 "serviceName": { 263 "type": "string", 264 "description": "Optional. If specified, overrides the name of the service to be sent to the balancer." 265 }, 266 "initialFallbackTimeout": { 267 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 268 "type": "string", 269 "description": "Optional. The timeout in seconds for receiving the server list from the LB server. Defaults to 10s.", 270 "format": "regex" 271 } 272 }, 273 "additionalProperties": true, 274 "type": "object", 275 "title": "Grpc Lb Config", 276 "description": "Configuration for grpclb LB policy." 277 }, 278 "grpc.service_config.LeastRequestLocalityLoadBalancingPolicyConfig": { 279 "properties": { 280 "choiceCount": { 281 "type": "string" 282 } 283 }, 284 "additionalProperties": true, 285 "type": "object", 286 "title": "Least Request Locality Load Balancing Policy Config", 287 "description": "Configuration for the least_request LB policy." 288 }, 289 "grpc.service_config.LoadBalancingConfig": { 290 "properties": { 291 "pick_first": { 292 "$ref": "#/definitions/grpc.service_config.PickFirstConfig", 293 "additionalProperties": true 294 }, 295 "round_robin": { 296 "$ref": "#/definitions/grpc.service_config.RoundRobinConfig", 297 "additionalProperties": true 298 }, 299 "weighted_round_robin": { 300 "$ref": "#/definitions/grpc.service_config.WeightedRoundRobinLbConfig", 301 "additionalProperties": true 302 }, 303 "grpclb": { 304 "$ref": "#/definitions/grpc.service_config.GrpcLbConfig", 305 "additionalProperties": true, 306 "description": "gRPC lookaside load balancing. This will eventually be deprecated by the new xDS-based local balancing policy." 307 }, 308 "priority_experimental": { 309 "$ref": "#/definitions/grpc.service_config.PriorityLoadBalancingPolicyConfig", 310 "additionalProperties": true, 311 "title": "REMAINING POLICIES ARE EXPERIMENTAL -- DO NOT USE", 312 "description": "REMAINING POLICIES ARE EXPERIMENTAL -- DO NOT USE" 313 }, 314 "weighted_target_experimental": { 315 "$ref": "#/definitions/grpc.service_config.WeightedTargetLoadBalancingPolicyConfig", 316 "additionalProperties": true 317 }, 318 "outlier_detection_experimental": { 319 "$ref": "#/definitions/grpc.service_config.OutlierDetectionLoadBalancingConfig", 320 "additionalProperties": true 321 }, 322 "rls_experimental": { 323 "$ref": "#/definitions/grpc.service_config.RlsLoadBalancingPolicyConfig", 324 "additionalProperties": true 325 }, 326 "xds_cluster_manager_experimental": { 327 "$ref": "#/definitions/grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig", 328 "additionalProperties": true, 329 "description": "xDS-based load balancing." 330 }, 331 "cds_experimental": { 332 "$ref": "#/definitions/grpc.service_config.CdsConfig", 333 "additionalProperties": true 334 }, 335 "xds_cluster_resolver_experimental": { 336 "$ref": "#/definitions/grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig", 337 "additionalProperties": true 338 }, 339 "xds_cluster_impl_experimental": { 340 "$ref": "#/definitions/grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig", 341 "additionalProperties": true 342 }, 343 "override_host_experimental": { 344 "$ref": "#/definitions/grpc.service_config.OverrideHostLoadBalancingPolicyConfig", 345 "additionalProperties": true 346 }, 347 "xds_wrr_locality_experimental": { 348 "$ref": "#/definitions/XdsWrrLocalityLoadBalancingPolicyConfig", 349 "additionalProperties": true 350 }, 351 "ring_hash_experimental": { 352 "$ref": "#/definitions/grpc.service_config.RingHashLoadBalancingConfig", 353 "additionalProperties": true 354 }, 355 "least_request_experimental": { 356 "$ref": "#/definitions/grpc.service_config.LeastRequestLocalityLoadBalancingPolicyConfig", 357 "additionalProperties": true 358 }, 359 "lrs_experimental": { 360 "$ref": "#/definitions/grpc.service_config.LrsLoadBalancingPolicyConfig", 361 "additionalProperties": true, 362 "description": "Deprecated xDS-related policies." 363 }, 364 "eds_experimental": { 365 "$ref": "#/definitions/grpc.service_config.EdsLoadBalancingPolicyConfig", 366 "additionalProperties": true 367 }, 368 "xds": { 369 "$ref": "#/definitions/grpc.service_config.XdsConfig", 370 "additionalProperties": true 371 }, 372 "xds_experimental": { 373 "$ref": "#/definitions/grpc.service_config.XdsConfig", 374 "additionalProperties": true 375 } 376 }, 377 "additionalProperties": true, 378 "type": "object", 379 "title": "Load Balancing Config", 380 "description": "Selects LB policy and provides corresponding configuration. In general, all instances of this field should be repeated. Clients will iterate through the list in order and stop at the first policy that they support. This allows the service config to specify custom policies that may not be known to all clients. - If the config for the first supported policy is invalid, the whole service config is invalid. - If the list doesn't contain any supported policy, the whole service config is invalid." 381 }, 382 "grpc.service_config.LrsLoadBalancingPolicyConfig": { 383 "properties": { 384 "clusterName": { 385 "type": "string", 386 "description": "Cluster name. Required." 387 }, 388 "edsServiceName": { 389 "type": "string", 390 "description": "EDS service name, as returned in CDS. May be unset if not specified in CDS." 391 }, 392 "lrsLoadReportingServerName": { 393 "type": "string", 394 "description": "Server to send load reports to. Required. If set to empty string, load reporting will be sent to the same server as we are getting xds data from." 395 }, 396 "locality": { 397 "$ref": "#/definitions/grpc.service_config.LrsLoadBalancingPolicyConfig.Locality", 398 "additionalProperties": true 399 }, 400 "childPolicy": { 401 "items": { 402 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 403 }, 404 "type": "array", 405 "description": "Endpoint-picking policy." 406 } 407 }, 408 "additionalProperties": true, 409 "type": "object", 410 "title": "Lrs Load Balancing Policy Config", 411 "description": "Configuration for lrs LB policy." 412 }, 413 "grpc.service_config.LrsLoadBalancingPolicyConfig.Locality": { 414 "properties": { 415 "region": { 416 "type": "string" 417 }, 418 "zone": { 419 "type": "string" 420 }, 421 "subzone": { 422 "type": "string" 423 } 424 }, 425 "additionalProperties": true, 426 "type": "object", 427 "title": "Locality", 428 "description": "The locality for which this policy will report load. Required." 429 }, 430 "grpc.service_config.MethodConfig": { 431 "properties": { 432 "name": { 433 "items": { 434 "$ref": "#/definitions/grpc.service_config.MethodConfig.Name" 435 }, 436 "type": "array" 437 }, 438 "waitForReady": { 439 "additionalProperties": true, 440 "type": "boolean", 441 "description": "Whether RPCs sent to this method should wait until the connection is ready by default. If false, the RPC will abort immediately if there is a transient failure connecting to the server. Otherwise, gRPC will attempt to connect until the deadline is exceeded. The value specified via the gRPC client API will override the value set here. However, note that setting the value in the client API will also affect transient errors encountered during name resolution, which cannot be caught by the value here, since the service config is obtained by the gRPC client via name resolution." 442 }, 443 "timeout": { 444 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 445 "type": "string", 446 "description": "The default timeout in seconds for RPCs sent to this method. This can be overridden in code. If no reply is received in the specified amount of time, the request is aborted and a DEADLINE_EXCEEDED error status is returned to the caller. The actual deadline used will be the minimum of the value specified here and the value set by the application via the gRPC client API. If either one is not set, then the other will be used. If neither is set, then the request has no deadline.", 447 "format": "regex" 448 }, 449 "maxRequestMessageBytes": { 450 "additionalProperties": true, 451 "type": "integer", 452 "description": "The maximum allowed payload size for an individual request or object in a stream (client-\u003eserver) in bytes. The size which is measured is the serialized payload after per-message compression (but before stream compression) in bytes. This applies both to streaming and non-streaming requests. The actual value used is the minimum of the value specified here and the value set by the application via the gRPC client API. If either one is not set, then the other will be used. If neither is set, then the built-in default is used. If a client attempts to send an object larger than this value, it will not be sent and the client will see a ClientError. Note that 0 is a valid value, meaning that the request message must be empty." 453 }, 454 "maxResponseMessageBytes": { 455 "additionalProperties": true, 456 "type": "integer", 457 "description": "The maximum allowed payload size for an individual response or object in a stream (server-\u003eclient) in bytes. The size which is measured is the serialized payload after per-message compression (but before stream compression) in bytes. This applies both to streaming and non-streaming requests. The actual value used is the minimum of the value specified here and the value set by the application via the gRPC client API. If either one is not set, then the other will be used. If neither is set, then the built-in default is used. If a server attempts to send an object larger than this value, it will not be sent, and a ServerError will be sent to the client instead. Note that 0 is a valid value, meaning that the response message must be empty." 458 }, 459 "retryPolicy": { 460 "$ref": "#/definitions/grpc.service_config.MethodConfig.RetryPolicy", 461 "additionalProperties": true 462 }, 463 "hedgingPolicy": { 464 "$ref": "#/definitions/grpc.service_config.MethodConfig.HedgingPolicy", 465 "additionalProperties": true 466 } 467 }, 468 "additionalProperties": true, 469 "type": "object", 470 "title": "Method Config", 471 "description": "Configuration for a method." 472 }, 473 "grpc.service_config.MethodConfig.HedgingPolicy": { 474 "properties": { 475 "maxAttempts": { 476 "type": "integer", 477 "description": "The hedging policy will send up to max_requests RPCs. This number represents the total number of all attempts, including the original attempt. This field is required and must be greater than 1. Any value greater than 5 will be treated as if it were 5." 478 }, 479 "hedgingDelay": { 480 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 481 "type": "string", 482 "description": "The first RPC will be sent immediately, but the max_requests-1 subsequent hedged RPCs will be sent at intervals of every hedging_delay. Set this to 0 to immediately send all max_requests RPCs.", 483 "format": "regex" 484 }, 485 "nonFatalStatusCodes": { 486 "items": { 487 "enum": [ 488 "OK", 489 0, 490 "CANCELLED", 491 1, 492 "UNKNOWN", 493 2, 494 "INVALID_ARGUMENT", 495 3, 496 "DEADLINE_EXCEEDED", 497 4, 498 "NOT_FOUND", 499 5, 500 "ALREADY_EXISTS", 501 6, 502 "PERMISSION_DENIED", 503 7, 504 "UNAUTHENTICATED", 505 16, 506 "RESOURCE_EXHAUSTED", 507 8, 508 "FAILED_PRECONDITION", 509 9, 510 "ABORTED", 511 10, 512 "OUT_OF_RANGE", 513 11, 514 "UNIMPLEMENTED", 515 12, 516 "INTERNAL", 517 13, 518 "UNAVAILABLE", 519 14, 520 "DATA_LOSS", 521 15 522 ] 523 }, 524 "type": "array", 525 "title": "Code", 526 "description": "The canonical error codes for gRPC APIs. Sometimes multiple error codes may apply. Services should return the most specific error code that applies. For example, prefer `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply. Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`." 527 } 528 }, 529 "additionalProperties": true, 530 "type": "object", 531 "title": "Hedging Policy", 532 "description": "The hedging policy for outgoing RPCs. Hedged RPCs may execute more than once on the server, so only idempotent methods should specify a hedging policy." 533 }, 534 "grpc.service_config.MethodConfig.Name": { 535 "properties": { 536 "service": { 537 "type": "string", 538 "description": "Required. Includes proto package name." 539 }, 540 "method": { 541 "type": "string" 542 } 543 }, 544 "additionalProperties": true, 545 "type": "object", 546 "title": "Name", 547 "description": "The names of the methods to which this configuration applies. - MethodConfig without names (empty list) will be skipped. - Each name entry must be unique across the entire ServiceConfig. - If the 'method' field is empty, this MethodConfig specifies the defaults for all methods for the specified service. - If the 'service' field is empty, the 'method' field must be empty, and this MethodConfig specifies the default for all methods (it's the default config). When determining which MethodConfig to use for a given RPC, the most specific match wins. For example, let's say that the service config contains the following MethodConfig entries: method_config { name { } ... } method_config { name { service: \"MyService\" } ... } method_config { name { service: \"MyService\" method: \"Foo\" } ... } MyService/Foo will use the third entry, because it exactly matches the service and method name. MyService/Bar will use the second entry, because it provides the default for all methods of MyService. AnotherService/Baz will use the first entry, because it doesn't match the other two. In JSON representation, value \"\", value `null`, and not present are the same. The following are the same Name: - { \"service\": \"s\" } - { \"service\": \"s\", \"method\": null } - { \"service\": \"s\", \"method\": \"\" }" 548 }, 549 "grpc.service_config.MethodConfig.RetryPolicy": { 550 "properties": { 551 "maxAttempts": { 552 "type": "integer", 553 "description": "The maximum number of RPC attempts, including the original attempt. This field is required and must be greater than 1. Any value greater than 5 will be treated as if it were 5." 554 }, 555 "initialBackoff": { 556 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 557 "type": "string", 558 "description": "Exponential backoff parameters. The initial retry attempt will occur at random(0, initial_backoff). In general, the nth attempt will occur at random(0, min(initial_backoff*backoff_multiplier**(n-1), max_backoff)). Required. Must be greater than zero.", 559 "format": "regex" 560 }, 561 "maxBackoff": { 562 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 563 "type": "string", 564 "description": "Required. Must be greater than zero.", 565 "format": "regex" 566 }, 567 "backoffMultiplier": { 568 "type": "number", 569 "description": "Required. Must be greater than zero." 570 }, 571 "retryableStatusCodes": { 572 "items": { 573 "enum": [ 574 "OK", 575 0, 576 "CANCELLED", 577 1, 578 "UNKNOWN", 579 2, 580 "INVALID_ARGUMENT", 581 3, 582 "DEADLINE_EXCEEDED", 583 4, 584 "NOT_FOUND", 585 5, 586 "ALREADY_EXISTS", 587 6, 588 "PERMISSION_DENIED", 589 7, 590 "UNAUTHENTICATED", 591 16, 592 "RESOURCE_EXHAUSTED", 593 8, 594 "FAILED_PRECONDITION", 595 9, 596 "ABORTED", 597 10, 598 "OUT_OF_RANGE", 599 11, 600 "UNIMPLEMENTED", 601 12, 602 "INTERNAL", 603 13, 604 "UNAVAILABLE", 605 14, 606 "DATA_LOSS", 607 15 608 ] 609 }, 610 "type": "array", 611 "title": "Code", 612 "description": "The canonical error codes for gRPC APIs. Sometimes multiple error codes may apply. Services should return the most specific error code that applies. For example, prefer `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply. Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`." 613 } 614 }, 615 "additionalProperties": true, 616 "type": "object", 617 "title": "Retry Policy", 618 "description": "The retry policy for outgoing RPCs." 619 }, 620 "grpc.service_config.OutlierDetectionLoadBalancingConfig": { 621 "properties": { 622 "interval": { 623 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 624 "type": "string", 625 "description": "The time interval between ejection analysis sweeps. This can result in both new ejections as well as addresses being returned to service. Defaults to 10000ms or 10s.", 626 "format": "regex" 627 }, 628 "baseEjectionTime": { 629 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 630 "type": "string", 631 "description": "The base time that as address is ejected for. The real time is equal to the base time multiplied by the number of times the address has been ejected. Defaults to 30000ms or 30s.", 632 "format": "regex" 633 }, 634 "maxEjectionTime": { 635 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 636 "type": "string", 637 "description": "The maximum time that an address is ejected for. If not specified, the default value (300000ms or 300s) or the base_ejection_time value is applied, whatever is larger.", 638 "format": "regex" 639 }, 640 "maxEjectionPercent": { 641 "additionalProperties": true, 642 "type": "integer", 643 "description": "The maximum % of an address list that can be ejected due to outlier detection. Defaults to 10% but will eject at least one address regardless of the value." 644 }, 645 "successRateEjection": { 646 "$ref": "#/definitions/grpc.service_config.OutlierDetectionLoadBalancingConfig.SuccessRateEjection", 647 "additionalProperties": true, 648 "description": "If set, success rate ejections will be performed" 649 }, 650 "failurePercentageEjection": { 651 "$ref": "#/definitions/grpc.service_config.OutlierDetectionLoadBalancingConfig.FailurePercentageEjection", 652 "additionalProperties": true, 653 "description": "If set, failure rate ejections will be performed" 654 }, 655 "childPolicy": { 656 "items": { 657 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 658 }, 659 "type": "array", 660 "description": "The config for the child policy" 661 } 662 }, 663 "additionalProperties": true, 664 "type": "object", 665 "title": "Outlier Detection Load Balancing Config", 666 "description": "Configuration for outlier_detection LB policy" 667 }, 668 "grpc.service_config.OutlierDetectionLoadBalancingConfig.FailurePercentageEjection": { 669 "properties": { 670 "threshold": { 671 "additionalProperties": true, 672 "type": "integer", 673 "description": "The failure percentage to use when determining failure percentage-based outlier detection. If the failure percentage of a given address is greater than or equal to this value, it will be ejected. Defaults to 85." 674 }, 675 "enforcementPercentage": { 676 "additionalProperties": true, 677 "type": "integer", 678 "description": "The % chance that an address will be actually ejected when an outlier status is detected through failure percentage statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100." 679 }, 680 "minimumHosts": { 681 "additionalProperties": true, 682 "type": "integer", 683 "description": "The minimum number of addresses in order to perform failure percentage-based ejection. If the total number of addresses is less than this value, failure percentage-based ejection will not be performed. Defaults to 5." 684 }, 685 "requestVolume": { 686 "additionalProperties": true, 687 "type": "integer", 688 "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to perform failure percentage-based ejection for this address. If the volume is lower than this setting, failure percentage-based ejection will not be performed for this host. Defaults to 50." 689 } 690 }, 691 "additionalProperties": true, 692 "type": "object", 693 "title": "Failure Percentage Ejection", 694 "description": "Parameters for the failure percentage algorithm. This algorithm ejects individual endpoints whose failure rate is greater than some threshold, independently of any other endpoint." 695 }, 696 "grpc.service_config.OutlierDetectionLoadBalancingConfig.SuccessRateEjection": { 697 "properties": { 698 "stdevFactor": { 699 "additionalProperties": true, 700 "type": "integer", 701 "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900." 702 }, 703 "enforcementPercentage": { 704 "additionalProperties": true, 705 "type": "integer", 706 "description": "The % chance that an address will be actually ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100." 707 }, 708 "minimumHosts": { 709 "additionalProperties": true, 710 "type": "integer", 711 "description": "The number of addresses that must have enough request volume to detect success rate outliers. If the number of addresses is less than this setting, outlier detection via success rate statistics is not performed for any addresses. Defaults to 5." 712 }, 713 "requestVolume": { 714 "additionalProperties": true, 715 "type": "integer", 716 "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this address in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that address. Defaults to 100." 717 } 718 }, 719 "additionalProperties": true, 720 "type": "object", 721 "title": "Success Rate Ejection", 722 "description": "Parameters for the success rate ejection algorithm. This algorithm monitors the request success rate for all endpoints and ejects individual endpoints whose success rates are statistical outliers." 723 }, 724 "grpc.service_config.OverrideHostLoadBalancingPolicyConfig": { 725 "properties": { 726 "overrideHostStatus": { 727 "items": { 728 "enum": [ 729 "UNKNOWN", 730 0, 731 "HEALTHY", 732 1, 733 "DRAINING", 734 3 735 ] 736 }, 737 "type": "array", 738 "title": "Health Status" 739 }, 740 "childPolicy": { 741 "items": { 742 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 743 }, 744 "type": "array" 745 } 746 }, 747 "additionalProperties": true, 748 "type": "object", 749 "title": "Override Host Load Balancing Policy Config", 750 "description": "Configuration for the override_host LB policy." 751 }, 752 "grpc.service_config.PickFirstConfig": { 753 "additionalProperties": true, 754 "type": "object", 755 "title": "Pick First Config", 756 "description": "Configuration for pick_first LB policy." 757 }, 758 "grpc.service_config.PriorityLoadBalancingPolicyConfig": { 759 "properties": { 760 "children": { 761 "additionalProperties": { 762 "$ref": "#/definitions/grpc.service_config.PriorityLoadBalancingPolicyConfig.Child", 763 "additionalProperties": true 764 }, 765 "type": "object" 766 }, 767 "priorities": { 768 "items": { 769 "type": "string" 770 }, 771 "type": "array", 772 "description": "A list of child names in decreasing priority order (i.e., first element is the highest priority)." 773 } 774 }, 775 "additionalProperties": true, 776 "type": "object", 777 "title": "Priority Load Balancing Policy Config", 778 "description": "Configuration for priority LB policy." 779 }, 780 "grpc.service_config.PriorityLoadBalancingPolicyConfig.Child": { 781 "properties": { 782 "config": { 783 "items": { 784 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 785 }, 786 "type": "array" 787 }, 788 "ignoreReresolutionRequests": { 789 "type": "boolean", 790 "description": "If true, will ignore reresolution requests from this child." 791 } 792 }, 793 "additionalProperties": true, 794 "type": "object", 795 "title": "Child", 796 "description": "A map of name to child policy configuration. The names are used to allow the priority policy to update existing child policies instead of creating new ones every time it receives a config update." 797 }, 798 "grpc.service_config.RingHashLoadBalancingConfig": { 799 "properties": { 800 "minRingSize": { 801 "type": "string", 802 "description": "A client-side option will cap these values to 4096. If either of these values are greater than the client-side cap, they will be treated as the client-side cap value. Optional, defaults to 1024, max 8M." 803 }, 804 "maxRingSize": { 805 "type": "string", 806 "description": "Optional, defaults to 4096, max 8M." 807 } 808 }, 809 "additionalProperties": true, 810 "type": "object", 811 "title": "Ring Hash Load Balancing Config", 812 "description": "Configuration for ring_hash LB policy." 813 }, 814 "grpc.service_config.RlsLoadBalancingPolicyConfig": { 815 "properties": { 816 "routeLookupConfig": { 817 "$ref": "#/definitions/grpc.lookup.v1.RouteLookupConfig", 818 "additionalProperties": true 819 }, 820 "routeLookupChannelServiceConfig": { 821 "$ref": "#/definitions/grpc.service_config.ServiceConfig", 822 "additionalProperties": true, 823 "description": "Service config to use for the RLS channel." 824 }, 825 "childPolicy": { 826 "items": { 827 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 828 }, 829 "type": "array" 830 }, 831 "childPolicyConfigTargetFieldName": { 832 "type": "string", 833 "description": "Field name to add to child policy config to contain the target name." 834 } 835 }, 836 "additionalProperties": true, 837 "type": "object", 838 "title": "Rls Load Balancing Policy Config", 839 "description": "Config for RLS LB policy." 840 }, 841 "grpc.service_config.RoundRobinConfig": { 842 "additionalProperties": true, 843 "type": "object", 844 "title": "Round Robin Config", 845 "description": "Configuration for round_robin LB policy." 846 }, 847 "grpc.service_config.ServiceConfig": { 848 "properties": { 849 "loadBalancingPolicy": { 850 "enum": [ 851 "UNSPECIFIED", 852 0, 853 "ROUND_ROBIN", 854 1 855 ], 856 "oneOf": [ 857 { 858 "type": "string" 859 }, 860 { 861 "type": "integer" 862 } 863 ], 864 "title": "Load Balancing Policy", 865 "description": "Load balancing policy. Note that load_balancing_policy is deprecated in favor of load_balancing_config; the former will be used only if the latter is unset. If no LB policy is configured here, then the default is pick_first. If the policy name is set via the client API, that value overrides the value specified here. If the deprecated load_balancing_policy field is used, note that if the resolver returns at least one balancer address (as opposed to backend addresses), gRPC will use grpclb (see https://github.com/grpc/grpc/blob/master/doc/load-balancing.md), regardless of what policy is configured here. However, if the resolver returns at least one backend address in addition to the balancer address(es), the client may fall back to the requested policy if it is unable to reach any of the grpclb load balancers." 866 }, 867 "loadBalancingConfig": { 868 "items": { 869 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 870 }, 871 "type": "array", 872 "description": "Multiple LB policies can be specified; clients will iterate through the list in order and stop at the first policy that they support. If none are supported, the service config is considered invalid." 873 }, 874 "methodConfig": { 875 "items": { 876 "$ref": "#/definitions/grpc.service_config.MethodConfig" 877 }, 878 "type": "array", 879 "description": "Per-method configuration." 880 }, 881 "retryThrottling": { 882 "$ref": "#/definitions/grpc.service_config.ServiceConfig.RetryThrottlingPolicy", 883 "additionalProperties": true 884 }, 885 "healthCheckConfig": { 886 "$ref": "#/definitions/grpc.service_config.ServiceConfig.HealthCheckConfig", 887 "additionalProperties": true 888 } 889 }, 890 "additionalProperties": true, 891 "type": "object", 892 "title": "Service Config", 893 "description": "A ServiceConfig represents information about a service but is not specific to any name resolver." 894 }, 895 "grpc.service_config.ServiceConfig.HealthCheckConfig": { 896 "properties": { 897 "serviceName": { 898 "additionalProperties": true, 899 "type": "string", 900 "description": "Service name to use in the health-checking request." 901 } 902 }, 903 "additionalProperties": true, 904 "type": "object", 905 "title": "Health Check Config" 906 }, 907 "grpc.service_config.ServiceConfig.RetryThrottlingPolicy": { 908 "properties": { 909 "maxTokens": { 910 "type": "integer", 911 "description": "The number of tokens starts at max_tokens. The token_count will always be between 0 and max_tokens. This field is required and must be greater than zero." 912 }, 913 "tokenRatio": { 914 "type": "number", 915 "description": "The amount of tokens to add on each successful RPC. Typically this will be some number between 0 and 1, e.g., 0.1. This field is required and must be greater than zero. Up to 3 decimal places are supported." 916 } 917 }, 918 "additionalProperties": true, 919 "type": "object", 920 "title": "Retry Throttling Policy", 921 "description": "If a RetryThrottlingPolicy is provided, gRPC will automatically throttle retry attempts and hedged RPCs when the client's ratio of failures to successes exceeds a threshold. For each server name, the gRPC client will maintain a token_count which is initially set to max_tokens. Every outgoing RPC (regardless of service or method invoked) will change token_count as follows: - Every failed RPC will decrement the token_count by 1. - Every successful RPC will increment the token_count by token_ratio. If token_count is less than or equal to max_tokens / 2, then RPCs will not be retried and hedged RPCs will not be sent." 922 }, 923 "grpc.service_config.WeightedRoundRobinLbConfig": { 924 "properties": { 925 "enableOobLoadReport": { 926 "additionalProperties": true, 927 "type": "boolean", 928 "description": "Whether to enable out-of-band utilization reporting collection from the endpoints. By default, per-request utilization reporting is used." 929 }, 930 "oobReportingPeriod": { 931 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 932 "type": "string", 933 "description": "Load reporting interval to request from the server. Note that the server may not provide reports as frequently as the client requests. Used only when enable_oob_load_report is true. Default is 10 seconds.", 934 "format": "regex" 935 }, 936 "blackoutPeriod": { 937 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 938 "type": "string", 939 "description": "A given endpoint must report load metrics continuously for at least this long before the endpoint weight will be used. This avoids churn when the set of endpoint addresses changes. Takes effect both immediately after we establish a connection to an endpoint and after weight_expiration_period has caused us to stop using the most recent load metrics. Default is 10 seconds.", 940 "format": "regex" 941 }, 942 "weightExpirationPeriod": { 943 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 944 "type": "string", 945 "description": "If a given endpoint has not reported load metrics in this long, then we stop using the reported weight. This ensures that we do not continue to use very stale weights. Once we stop using a stale value, if we later start seeing fresh reports again, the blackout_period applies. Defaults to 3 minutes.", 946 "format": "regex" 947 }, 948 "weightUpdatePeriod": { 949 "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)s$", 950 "type": "string", 951 "description": "How often endpoint weights are recalculated. Default is 1 second.", 952 "format": "regex" 953 } 954 }, 955 "additionalProperties": true, 956 "type": "object", 957 "title": "Weighted Round Robin Lb Config", 958 "description": "Configuration for weighted_round_robin LB policy." 959 }, 960 "grpc.service_config.WeightedTargetLoadBalancingPolicyConfig": { 961 "properties": { 962 "targets": { 963 "additionalProperties": { 964 "$ref": "#/definitions/grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target", 965 "additionalProperties": true 966 }, 967 "type": "object" 968 } 969 }, 970 "additionalProperties": true, 971 "type": "object", 972 "title": "Weighted Target Load Balancing Policy Config", 973 "description": "Configuration for weighted_target LB policy." 974 }, 975 "grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target": { 976 "properties": { 977 "weight": { 978 "type": "integer" 979 }, 980 "childPolicy": { 981 "items": { 982 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 983 }, 984 "type": "array" 985 } 986 }, 987 "additionalProperties": true, 988 "type": "object", 989 "title": "Target" 990 }, 991 "grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig": { 992 "properties": { 993 "cluster": { 994 "type": "string", 995 "description": "Cluster name. Required." 996 }, 997 "edsServiceName": { 998 "type": "string", 999 "description": "EDS service name. Not set if cluster is not an EDS cluster or if it does not specify an EDS service name." 1000 }, 1001 "lrsLoadReportingServerName": { 1002 "additionalProperties": true, 1003 "type": "string", 1004 "description": "Server to send load reports to. If unset, no load reporting is done. If set to empty string, load reporting will be sent to the same server as we are getting xds data from. DEPRECATED: Use new lrs_load_reporting_server field instead." 1005 }, 1006 "lrsLoadReportingServer": { 1007 "$ref": "#/definitions/grpc.service_config.XdsServer", 1008 "additionalProperties": true, 1009 "description": "LRS server to send load reports to. If not present, load reporting will be disabled. Supercedes lrs_load_reporting_server_name field." 1010 }, 1011 "maxConcurrentRequests": { 1012 "additionalProperties": true, 1013 "type": "integer", 1014 "description": "Maximum number of outstanding requests can be made to the upstream cluster. Default is 1024." 1015 }, 1016 "dropCategories": { 1017 "items": { 1018 "$ref": "#/definitions/grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.DropCategory" 1019 }, 1020 "type": "array" 1021 }, 1022 "childPolicy": { 1023 "items": { 1024 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 1025 }, 1026 "type": "array", 1027 "description": "Child policy." 1028 } 1029 }, 1030 "additionalProperties": true, 1031 "type": "object", 1032 "title": "Xds Cluster Impl Load Balancing Policy Config", 1033 "description": "Configuration for xds_cluster_impl LB policy." 1034 }, 1035 "grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.DropCategory": { 1036 "properties": { 1037 "category": { 1038 "type": "string" 1039 }, 1040 "requestsPerMillion": { 1041 "type": "integer" 1042 } 1043 }, 1044 "additionalProperties": true, 1045 "type": "object", 1046 "title": "Drop Category", 1047 "description": "Drop configuration." 1048 }, 1049 "grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig": { 1050 "properties": { 1051 "children": { 1052 "additionalProperties": { 1053 "$ref": "#/definitions/grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.Child", 1054 "additionalProperties": true 1055 }, 1056 "type": "object" 1057 } 1058 }, 1059 "additionalProperties": true, 1060 "type": "object", 1061 "title": "Xds Cluster Manager Load Balancing Policy Config", 1062 "description": "Configuration for xds_cluster_manager_experimental LB policy." 1063 }, 1064 "grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.Child": { 1065 "properties": { 1066 "childPolicy": { 1067 "items": { 1068 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 1069 }, 1070 "type": "array" 1071 } 1072 }, 1073 "additionalProperties": true, 1074 "type": "object", 1075 "title": "Child" 1076 }, 1077 "grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig": { 1078 "properties": { 1079 "discoveryMechanisms": { 1080 "items": { 1081 "$ref": "#/definitions/grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism" 1082 }, 1083 "type": "array", 1084 "description": "Ordered list of discovery mechanisms. Must have at least one element. Results from each discovery mechanism are concatenated together in successive priorities." 1085 }, 1086 "xdsLbPolicy": { 1087 "items": { 1088 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 1089 }, 1090 "type": "array", 1091 "description": "xDS LB policy. Will be used as the child config of the xds_cluster_impl LB policy." 1092 } 1093 }, 1094 "additionalProperties": true, 1095 "type": "object", 1096 "title": "Xds Cluster Resolver Load Balancing Policy Config", 1097 "description": "Configuration for xds_cluster_resolver LB policy." 1098 }, 1099 "grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism": { 1100 "properties": { 1101 "cluster": { 1102 "type": "string", 1103 "description": "Cluster name." 1104 }, 1105 "lrsLoadReportingServerName": { 1106 "additionalProperties": true, 1107 "type": "string", 1108 "description": "LRS server to send load reports to. If not present, load reporting will be disabled. If set to the empty string, load reporting will be sent to the same server that we obtained CDS data from. DEPRECATED: Use new lrs_load_reporting_server field instead." 1109 }, 1110 "lrsLoadReportingServer": { 1111 "$ref": "#/definitions/grpc.service_config.XdsServer", 1112 "additionalProperties": true, 1113 "description": "LRS server to send load reports to. If not present, load reporting will be disabled. Supercedes lrs_load_reporting_server_name field." 1114 }, 1115 "maxConcurrentRequests": { 1116 "additionalProperties": true, 1117 "type": "integer", 1118 "description": "Maximum number of outstanding requests can be made to the upstream cluster. Default is 1024." 1119 }, 1120 "type": { 1121 "enum": [ 1122 "UNKNOWN", 1123 0, 1124 "EDS", 1125 1, 1126 "LOGICAL_DNS", 1127 2 1128 ], 1129 "oneOf": [ 1130 { 1131 "type": "string" 1132 }, 1133 { 1134 "type": "integer" 1135 } 1136 ], 1137 "title": "Type" 1138 }, 1139 "edsServiceName": { 1140 "type": "string", 1141 "description": "For type EDS only. EDS service name, as returned in CDS. May be unset if not specified in CDS." 1142 }, 1143 "dnsHostname": { 1144 "type": "string", 1145 "description": "For type LOGICAL_DNS only. DNS name to resolve in \"host:port\" form." 1146 }, 1147 "outlierDetection": { 1148 "$ref": "#/definitions/grpc.service_config.OutlierDetectionLoadBalancingConfig", 1149 "additionalProperties": true, 1150 "description": "The configuration for outlier_detection child policies Within this message, the child_policy field will be ignored" 1151 }, 1152 "overrideHostStatus": { 1153 "items": { 1154 "enum": [ 1155 "UNKNOWN", 1156 0, 1157 "HEALTHY", 1158 1, 1159 "DRAINING", 1160 3 1161 ] 1162 }, 1163 "type": "array", 1164 "title": "Health Status" 1165 } 1166 }, 1167 "additionalProperties": true, 1168 "type": "object", 1169 "title": "Discovery Mechanism", 1170 "description": "Describes a discovery mechanism instance. For EDS or LOGICAL_DNS clusters, there will be exactly one DiscoveryMechanism, which will describe the cluster of the parent CDS policy. For aggregate clusters, there will be one DiscoveryMechanism for each underlying cluster." 1171 }, 1172 "grpc.service_config.XdsConfig": { 1173 "properties": { 1174 "balancerName": { 1175 "type": "string", 1176 "description": "Name of balancer to connect to." 1177 }, 1178 "childPolicy": { 1179 "items": { 1180 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 1181 }, 1182 "type": "array", 1183 "description": "Optional. What LB policy to use for intra-locality routing. If unset, will use whatever algorithm is specified by the balancer. Multiple LB policies can be specified; clients will iterate through the list in order and stop at the first policy that they support." 1184 }, 1185 "fallbackPolicy": { 1186 "items": { 1187 "$ref": "#/definitions/grpc.service_config.LoadBalancingConfig" 1188 }, 1189 "type": "array", 1190 "description": "Optional. What LB policy to use in fallback mode. If not specified, defaults to round_robin. Multiple LB policies can be specified; clients will iterate through the list in order and stop at the first policy that they support." 1191 }, 1192 "edsServiceName": { 1193 "type": "string", 1194 "description": "Optional. Name to use in EDS query. If not present, defaults to the server name from the target URI." 1195 }, 1196 "lrsLoadReportingServerName": { 1197 "additionalProperties": true, 1198 "type": "string", 1199 "description": "LRS server to send load reports to. If not present, load reporting will be disabled. If set to the empty string, load reporting will be sent to the same server that we obtained CDS data from." 1200 } 1201 }, 1202 "additionalProperties": true, 1203 "type": "object", 1204 "title": "Xds Config", 1205 "description": "Configuration for xds LB policy." 1206 }, 1207 "grpc.service_config.XdsServer": { 1208 "properties": { 1209 "server_uri": { 1210 "type": "string", 1211 "description": "Required." 1212 }, 1213 "channel_creds": { 1214 "items": { 1215 "$ref": "#/definitions/grpc.service_config.XdsServer.ChannelCredentials" 1216 }, 1217 "type": "array", 1218 "description": "A list of channel creds to use. The first supported type will be used." 1219 }, 1220 "server_features": { 1221 "items": { 1222 "oneOf": [ 1223 { 1224 "type": "array" 1225 }, 1226 { 1227 "type": "boolean" 1228 }, 1229 { 1230 "type": "number" 1231 }, 1232 { 1233 "type": "object" 1234 }, 1235 { 1236 "type": "string" 1237 } 1238 ], 1239 "title": "Value", 1240 "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value." 1241 }, 1242 "type": "array", 1243 "description": "A repeated list of server features." 1244 } 1245 }, 1246 "additionalProperties": true, 1247 "type": "object", 1248 "title": "Xds Server", 1249 "description": "Represents an xDS server." 1250 }, 1251 "grpc.service_config.XdsServer.ChannelCredentials": { 1252 "properties": { 1253 "type": { 1254 "type": "string", 1255 "description": "Required." 1256 }, 1257 "config": { 1258 "additionalProperties": true, 1259 "type": "object", 1260 "description": "Optional JSON config." 1261 } 1262 }, 1263 "additionalProperties": true, 1264 "type": "object", 1265 "title": "Channel Credentials" 1266 } 1267 } 1268}