---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.0
  name: serviceimports.networking.fleet.azure.com
spec:
  group: networking.fleet.azure.com
  names:
    categories:
    - fleet-networking
    kind: ServiceImport
    listKind: ServiceImportList
    plural: serviceimports
    shortNames:
    - svcimport
    singular: serviceimport
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ServiceImport describes a service imported from clusters in a
          ClusterSet.
        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
          status:
            description: |-
              status contains information about the exported services that form
              the multi-cluster service referenced by this ServiceImport.
            properties:
              clusters:
                description: clusters is the list of exporting clusters from which
                  this service was derived.
                items:
                  description: ClusterStatus contains service configuration mapped
                    to a specific source cluster.
                  properties:
                    cluster:
                      description: cluster is the name of the exporting cluster. Must
                        be a valid RFC-1123 DNS label.
                      type: string
                  required:
                  - cluster
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - cluster
                x-kubernetes-list-type: map
              ips:
                description: ip will be used as the VIP for this service when type
                  is ClusterSetIP.
                items:
                  type: string
                maxItems: 1
                type: array
              ports:
                items:
                  description: ServicePort represents the port on which the service
                    is exposed.
                  properties:
                    appProtocol:
                      description: |-
                        The application protocol for this port.
                        This field follows standard Kubernetes label syntax.
                        Un-prefixed names are reserved for IANA standard service names (as per
                        RFC-6335 and http://www.iana.org/assignments/service-names).
                        Non-standard protocols should use prefixed names such as
                        mycompany.com/my-custom-protocol.
                        Field can be enabled with ServiceAppProtocol feature gate.
                      type: string
                    name:
                      description: |-
                        The name of this port within the service. This must be a DNS_LABEL.
                        All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service,
                        this must match the 'name' field in the EndpointPort.
                        Optional if only one ServicePort is defined on this service.
                      type: string
                    port:
                      description: The port that will be exposed by this service.
                      format: int32
                      maximum: 65535
                      minimum: 1
                      type: integer
                    protocol:
                      default: TCP
                      description: |-
                        The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
                        Default is TCP.
                      enum:
                      - TCP
                      - UDP
                      - SCTP
                      type: string
                    targetPort:
                      anyOf:
                      - type: integer
                      - type: string
                      description: The port to access on the pods targeted by the
                        service.
                      x-kubernetes-int-or-string: true
                  required:
                  - port
                  type: object
                type: array
                x-kubernetes-list-type: atomic
              sessionAffinity:
                description: |-
                  Supports "ClientIP" and "None". Used to maintain session affinity.
                  Enable client IP based session affinity.
                  Must be ClientIP or None.
                  Defaults to None.
                  Ignored when type is Headless
                  More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                type: string
              sessionAffinityConfig:
                description: sessionAffinityConfig contains session affinity configuration.
                properties:
                  clientIP:
                    description: clientIP contains the configurations of Client IP
                      based session affinity.
                    properties:
                      timeoutSeconds:
                        description: |-
                          timeoutSeconds specifies the seconds of ClientIP type session sticky time.
                          The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP".
                          Default value is 10800(for 3 hours).
                        format: int32
                        type: integer
                    type: object
                type: object
              type:
                description: |-
                  type defines the type of this service.
                  Must be ClusterSetIP or Headless.
                enum:
                - ClusterSetIP
                - Headless
                type: string
            type: object
        type: object
        x-kubernetes-validations:
        - message: metadata.name max length is 63
          rule: size(self.metadata.name) < 64
    served: true
    storage: true
    subresources:
      status: {}
