---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.3
  name: meshretries.kuma.io
spec:
  group: kuma.io
  names:
    categories:
    - kuma
    kind: MeshRetry
    listKind: MeshRetryList
    plural: meshretries
    singular: meshretry
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.targetRef.kind
      name: TargetRef Kind
      type: string
    - jsonPath: .spec.targetRef.name
      name: TargetRef Name
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: Spec is the specification of the Kuma MeshRetry resource.
            properties:
              targetRef:
                description: |-
                  TargetRef is a reference to the resource the policy takes an effect on.
                  The resource could be either a real store object or virtual resource
                  defined inplace.
                properties:
                  kind:
                    description: Kind of the referenced resource
                    enum:
                    - Mesh
                    - MeshSubset
                    - MeshGateway
                    - MeshService
                    - MeshExternalService
                    - MeshMultiZoneService
                    - MeshServiceSubset
                    - MeshHTTPRoute
                    type: string
                  labels:
                    additionalProperties:
                      type: string
                    description: |-
                      Labels are used to select group of MeshServices that match labels. Either Labels or
                      Name and Namespace can be used.
                    type: object
                  mesh:
                    description: Mesh is reserved for future use to identify cross
                      mesh resources.
                    type: string
                  name:
                    description: |-
                      Name of the referenced resource. Can only be used with kinds: `MeshService`,
                      `MeshServiceSubset` and `MeshGatewayRoute`
                    type: string
                  namespace:
                    description: |-
                      Namespace specifies the namespace of target resource. If empty only resources in policy namespace
                      will be targeted.
                    type: string
                  proxyTypes:
                    description: |-
                      ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                      all data plane types are targeted by the policy.
                    items:
                      enum:
                      - Sidecar
                      - Gateway
                      type: string
                    minItems: 1
                    type: array
                  sectionName:
                    description: |-
                      SectionName is used to target specific section of resource.
                      For example, you can target port from MeshService.ports[] by its name. Only traffic to this port will be affected.
                    type: string
                  tags:
                    additionalProperties:
                      type: string
                    description: |-
                      Tags used to select a subset of proxies by tags. Can only be used with kinds
                      `MeshSubset` and `MeshServiceSubset`
                    type: object
                type: object
              to:
                description: To list makes a match between the consumed services and
                  corresponding configurations
                items:
                  properties:
                    default:
                      description: |-
                        Default is a configuration specific to the group of destinations referenced in
                        'targetRef'
                      properties:
                        grpc:
                          description: GRPC defines a configuration of retries for
                            GRPC traffic
                          properties:
                            backOff:
                              description: |-
                                BackOff is a configuration of durations which will be used in an exponential
                                backoff strategy between retries.
                              properties:
                                baseInterval:
                                  default: 25ms
                                  description: |-
                                    BaseInterval is an amount of time which should be taken between retries.
                                    Must be greater than zero. Values less than 1 ms are rounded up to 1 ms.
                                  type: string
                                maxInterval:
                                  description: |-
                                    MaxInterval is a maximal amount of time which will be taken between retries.
                                    Default is 10 times the "BaseInterval".
                                  type: string
                              type: object
                            numRetries:
                              description: |-
                                NumRetries is the number of attempts that will be made on failed (and
                                retriable) requests. If not set, the default value is 1.
                              format: int32
                              type: integer
                            perTryTimeout:
                              description: |-
                                PerTryTimeout is the maximum amount of time each retry attempt can take
                                before it times out. If not set, the global request timeout for the route
                                will be used. Setting this value to 0 will disable the per-try timeout.
                              type: string
                            rateLimitedBackOff:
                              description: |-
                                RateLimitedBackOff is a configuration of backoff which will be used when
                                the upstream returns one of the headers configured.
                              properties:
                                maxInterval:
                                  default: 300s
                                  description: MaxInterval is a maximal amount of
                                    time which will be taken between retries.
                                  type: string
                                resetHeaders:
                                  description: |-
                                    ResetHeaders specifies the list of headers (like Retry-After or X-RateLimit-Reset)
                                    to match against the response. Headers are tried in order, and matched
                                    case-insensitive. The first header to be parsed successfully is used.
                                    If no headers match the default exponential BackOff is used instead.
                                  items:
                                    properties:
                                      format:
                                        description: The format of the reset header.
                                        enum:
                                        - Seconds
                                        - UnixTimestamp
                                        type: string
                                      name:
                                        description: The Name of the reset header.
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                    required:
                                    - format
                                    - name
                                    type: object
                                  type: array
                              type: object
                            retryOn:
                              description: RetryOn is a list of conditions which will
                                cause a retry.
                              example:
                              - Canceled
                              - DeadlineExceeded
                              - Internal
                              - ResourceExhausted
                              - Unavailable
                              items:
                                enum:
                                - Canceled
                                - DeadlineExceeded
                                - Internal
                                - ResourceExhausted
                                - Unavailable
                                type: string
                              type: array
                          type: object
                        http:
                          description: HTTP defines a configuration of retries for
                            HTTP traffic
                          properties:
                            backOff:
                              description: |-
                                BackOff is a configuration of durations which will be used in exponential
                                backoff strategy between retries.
                              properties:
                                baseInterval:
                                  default: 25ms
                                  description: |-
                                    BaseInterval is an amount of time which should be taken between retries.
                                    Must be greater than zero. Values less than 1 ms are rounded up to 1 ms.
                                  type: string
                                maxInterval:
                                  description: |-
                                    MaxInterval is a maximal amount of time which will be taken between retries.
                                    Default is 10 times the "BaseInterval".
                                  type: string
                              type: object
                            hostSelection:
                              description: |-
                                HostSelection is a list of predicates that dictate how hosts should be selected
                                when requests are retried.
                              items:
                                properties:
                                  predicate:
                                    description: Type is requested predicate mode.
                                    enum:
                                    - OmitPreviousHosts
                                    - OmitHostsWithTags
                                    - OmitPreviousPriorities
                                    type: string
                                  tags:
                                    additionalProperties:
                                      type: string
                                    description: |-
                                      Tags is a map of metadata to match against for selecting the omitted hosts. Required if Type is
                                      OmitHostsWithTags
                                    type: object
                                  updateFrequency:
                                    default: 2
                                    description: |-
                                      UpdateFrequency is how often the priority load should be updated based on previously attempted priorities.
                                      Used for OmitPreviousPriorities.
                                    format: int32
                                    type: integer
                                required:
                                - predicate
                                type: object
                              type: array
                            hostSelectionMaxAttempts:
                              description: |-
                                HostSelectionMaxAttempts is the maximum number of times host selection will be
                                reattempted before giving up, at which point the host that was last selected will
                                be routed to. If unspecified, this will default to retrying once.
                              format: int64
                              type: integer
                            numRetries:
                              description: |-
                                NumRetries is the number of attempts that will be made on failed (and
                                retriable) requests.  If not set, the default value is 1.
                              format: int32
                              type: integer
                            perTryTimeout:
                              description: |-
                                PerTryTimeout is the amount of time after which retry attempt should time out.
                                If left unspecified, the global route timeout for the request will be used.
                                Consequently, when using a 5xx based retry policy, a request that times out
                                will not be retried as the total timeout budget would have been exhausted.
                                Setting this timeout to 0 will disable it.
                              type: string
                            rateLimitedBackOff:
                              description: |-
                                RateLimitedBackOff is a configuration of backoff which will be used
                                when the upstream returns one of the headers configured.
                              properties:
                                maxInterval:
                                  default: 300s
                                  description: MaxInterval is a maximal amount of
                                    time which will be taken between retries.
                                  type: string
                                resetHeaders:
                                  description: |-
                                    ResetHeaders specifies the list of headers (like Retry-After or X-RateLimit-Reset)
                                    to match against the response. Headers are tried in order, and matched
                                    case-insensitive. The first header to be parsed successfully is used.
                                    If no headers match the default exponential BackOff is used instead.
                                  items:
                                    properties:
                                      format:
                                        description: The format of the reset header.
                                        enum:
                                        - Seconds
                                        - UnixTimestamp
                                        type: string
                                      name:
                                        description: The Name of the reset header.
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                    required:
                                    - format
                                    - name
                                    type: object
                                  type: array
                              type: object
                            retriableRequestHeaders:
                              description: |-
                                RetriableRequestHeaders is an HTTP headers which must be present in the request
                                for retries to be attempted.
                              items:
                                description: |-
                                  HeaderMatch describes how to select an HTTP route by matching HTTP request
                                  headers.
                                properties:
                                  name:
                                    description: |-
                                      Name is the name of the HTTP Header to be matched. Name MUST be lower case
                                      as they will be handled with case insensitivity (See https://tools.ietf.org/html/rfc7230#section-3.2).
                                    maxLength: 256
                                    minLength: 1
                                    pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                    type: string
                                  type:
                                    default: Exact
                                    description: Type specifies how to match against
                                      the value of the header.
                                    enum:
                                    - Exact
                                    - Present
                                    - RegularExpression
                                    - Absent
                                    - Prefix
                                    type: string
                                  value:
                                    description: Value is the value of HTTP Header
                                      to be matched.
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                            retriableResponseHeaders:
                              description: |-
                                RetriableResponseHeaders is an HTTP response headers that trigger a retry
                                if present in the response. A retry will be triggered if any of the header
                                matches the upstream response headers.
                              items:
                                description: |-
                                  HeaderMatch describes how to select an HTTP route by matching HTTP request
                                  headers.
                                properties:
                                  name:
                                    description: |-
                                      Name is the name of the HTTP Header to be matched. Name MUST be lower case
                                      as they will be handled with case insensitivity (See https://tools.ietf.org/html/rfc7230#section-3.2).
                                    maxLength: 256
                                    minLength: 1
                                    pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                    type: string
                                  type:
                                    default: Exact
                                    description: Type specifies how to match against
                                      the value of the header.
                                    enum:
                                    - Exact
                                    - Present
                                    - RegularExpression
                                    - Absent
                                    - Prefix
                                    type: string
                                  value:
                                    description: Value is the value of HTTP Header
                                      to be matched.
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                            retryOn:
                              description: |-
                                RetryOn is a list of conditions which will cause a retry. Available values are:
                                [5XX, GatewayError, Reset, Retriable4xx, ConnectFailure, EnvoyRatelimited,
                                RefusedStream, Http3PostConnectFailure, HttpMethodConnect, HttpMethodDelete,
                                HttpMethodGet, HttpMethodHead, HttpMethodOptions, HttpMethodPatch,
                                HttpMethodPost, HttpMethodPut, HttpMethodTrace].
                                Also, any HTTP status code (500, 503, etc.).
                              example:
                              - 5XX
                              - GatewayError
                              - Reset
                              - Retriable4xx
                              - ConnectFailure
                              - EnvoyRatelimited
                              - RefusedStream
                              - Http3PostConnectFailure
                              - HttpMethodConnect
                              - HttpMethodDelete
                              - HttpMethodGet
                              - HttpMethodHead
                              - HttpMethodOptions
                              - HttpMethodPatch
                              - HttpMethodPost
                              - HttpMethodPut
                              - HttpMethodTrace
                              - "500"
                              - "503"
                              items:
                                type: string
                              type: array
                          type: object
                        tcp:
                          description: TCP defines a configuration of retries for
                            TCP traffic
                          properties:
                            maxConnectAttempt:
                              description: |-
                                MaxConnectAttempt is a maximal amount of TCP connection attempts
                                which will be made before giving up
                              format: int32
                              type: integer
                          type: object
                      type: object
                    targetRef:
                      description: |-
                        TargetRef is a reference to the resource that represents a group of
                        destinations.
                      properties:
                        kind:
                          description: Kind of the referenced resource
                          enum:
                          - Mesh
                          - MeshSubset
                          - MeshGateway
                          - MeshService
                          - MeshExternalService
                          - MeshMultiZoneService
                          - MeshServiceSubset
                          - MeshHTTPRoute
                          type: string
                        labels:
                          additionalProperties:
                            type: string
                          description: |-
                            Labels are used to select group of MeshServices that match labels. Either Labels or
                            Name and Namespace can be used.
                          type: object
                        mesh:
                          description: Mesh is reserved for future use to identify
                            cross mesh resources.
                          type: string
                        name:
                          description: |-
                            Name of the referenced resource. Can only be used with kinds: `MeshService`,
                            `MeshServiceSubset` and `MeshGatewayRoute`
                          type: string
                        namespace:
                          description: |-
                            Namespace specifies the namespace of target resource. If empty only resources in policy namespace
                            will be targeted.
                          type: string
                        proxyTypes:
                          description: |-
                            ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                            all data plane types are targeted by the policy.
                          items:
                            enum:
                            - Sidecar
                            - Gateway
                            type: string
                          minItems: 1
                          type: array
                        sectionName:
                          description: |-
                            SectionName is used to target specific section of resource.
                            For example, you can target port from MeshService.ports[] by its name. Only traffic to this port will be affected.
                          type: string
                        tags:
                          additionalProperties:
                            type: string
                          description: |-
                            Tags used to select a subset of proxies by tags. Can only be used with kinds
                            `MeshSubset` and `MeshServiceSubset`
                          type: object
                      type: object
                  required:
                  - targetRef
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
