---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.0
  name: endpointsliceexports.networking.fleet.azure.com
spec:
  group: networking.fleet.azure.com
  names:
    categories:
    - fleet-networking
    kind: EndpointSliceExport
    listKind: EndpointSliceExportList
    plural: endpointsliceexports
    singular: endpointsliceexport
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: |-
          EndpointSliceExport is a data transport type that member clusters in the fleet use to upload the spec of an
          EndpointSlice to the hub cluster.
        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: EndpointSliceExportSpec specifies the spec of an exported
              EndpointSlice.
            properties:
              addressType:
                default: IPv4
                description: |-
                  The type of addresses carried by this EndpointSliceExport.
                  At this stage only IPv4 addresses are supported.
                enum:
                - IPv4
                type: string
              endpointSliceReference:
                description: The reference to the source EndpointSlice.
                properties:
                  apiVersion:
                    description: The API version of the referred object.
                    type: string
                  clusterId:
                    description: The ID of the cluster where the object is exported.
                    type: string
                  exportedSince:
                    description: |-
                      The timestamp from a local clock when the generation of the object is exported.
                      This field is marked as optional for backwards compatibility reasons.
                    format: date-time
                    type: string
                  generation:
                    description: The generation of the referred object.
                    format: int64
                    type: integer
                  kind:
                    description: The kind of the referred object.
                    type: string
                  name:
                    description: The name of the referred object.
                    type: string
                  namespace:
                    description: The namespace of the referred object.
                    type: string
                  namespacedName:
                    description: The namespaced name of the referred object.
                    type: string
                  resourceVersion:
                    description: The resource version of the referred object.
                    type: string
                  uid:
                    description: The UID of the referred object.
                    type: string
                required:
                - clusterId
                - generation
                - kind
                - name
                - namespace
                - namespacedName
                - resourceVersion
                - uid
                type: object
                x-kubernetes-map-type: atomic
              endpoints:
                description: A list of unique endpoints in the exported EndpointSlice.
                items:
                  description: Endpoint includes all exported addresses from a logical
                    backend.
                  properties:
                    addresses:
                      description: |-
                        Addresses of the Endpoint.
                        Addresses should be interpreted per its owner EndpointSliceExport's addressType field. This field contains
                        at least one address and at maximum 100; for more information about this constraint,
                        see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#endpoint-v1beta1-discovery-k8s-io.
                      items:
                        type: string
                      type: array
                  required:
                  - addresses
                  type: object
                type: array
                x-kubernetes-list-type: atomic
              ownerServiceReference:
                description: The reference to the owner Service.
                properties:
                  name:
                    description: The name of the owner Service.
                    type: string
                  namespace:
                    description: The namespace of the owner Service.
                    type: string
                  namespacedName:
                    description: The namespaced name (key) of the owner Service.
                    type: string
                required:
                - name
                - namespace
                - namespacedName
                type: object
              ports:
                description: |-
                  The list of ports exported by each endpoint in this EndpointSliceExport. Each port must have a unique name.
                  When the field is empty, it indicates that there are no defined ports. When a port is defined with a nil
                  port value, it indicates that all ports are exported. Each slice may include a maximum of 100 ports.
                items:
                  description: EndpointPort represents a Port used by an EndpointSlice
                  properties:
                    appProtocol:
                      description: |-
                        The application protocol for this port.
                        This is used as a hint for implementations to offer richer behavior for protocols that they understand.
                        This field follows standard Kubernetes label syntax.
                        Valid values are either:

                        * Un-prefixed protocol names - reserved for IANA standard service names (as per
                        RFC-6335 and https://www.iana.org/assignments/service-names).

                        * Kubernetes-defined prefixed names:
                          * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
                          * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
                          * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455

                        * Other protocols should use implementation-defined prefixed names such as
                        mycompany.com/my-custom-protocol.
                      type: string
                    name:
                      description: |-
                        name represents the name of this port. All ports in an EndpointSlice must have a unique name.
                        If the EndpointSlice is derived from a Kubernetes service, this corresponds to the Service.ports[].name.
                        Name must either be an empty string or pass DNS_LABEL validation:
                        * must be no more than 63 characters long.
                        * must consist of lower case alphanumeric characters or '-'.
                        * must start and end with an alphanumeric character.
                        Default is empty string.
                      type: string
                    port:
                      description: |-
                        port represents the port number of the endpoint.
                        If this is not specified, ports are not restricted and must be
                        interpreted in the context of the specific consumer.
                      format: int32
                      type: integer
                    protocol:
                      default: TCP
                      description: |-
                        protocol represents the IP protocol for this port.
                        Must be UDP, TCP, or SCTP.
                        Default is TCP.
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
                x-kubernetes-list-type: atomic
            required:
            - addressType
            - endpointSliceReference
            - endpoints
            - ownerServiceReference
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
