---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: privatelinks.eks.infra.pingcap.com
spec:
  group: eks.infra.pingcap.com
  names:
    kind: Privatelink
    listKind: PrivatelinkList
    plural: privatelinks
    shortNames:
    - pl
    singular: privatelink
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: READY
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    - jsonPath: .metadata.annotations.infra\.pingcap\.com/endpoint-dns
      name: ENDPOINT-DNS
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Privatelink is the Schema for the privatelinks API
        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: PrivatelinkSpec defines the desired state of Privatelink
            properties:
              clientProviderRef:
                description: |-
                  ClientProviderRef specifies the crossplane provider for provisioning
                  vpc endpoint.
                  If not specified, will use the default role to create AWS resources
                  under TiDB cloud's account.
                type: string
              serverProviderRef:
                description: |-
                  ServerProviderRef specifies the crossplane provider reference for
                  provisioning vpc endpoint service.
                  If not specified, will use the default role to create AWS resources
                  under TiDB cloud's account.
                type: string
              service:
                description: Service specifies the NLB to be exposed as vpc endpoint
                  service.
                properties:
                  arn:
                    description: ARN specifies the NLB ARN for the private link resource.
                    type: string
                  target:
                    description: Target specifies the service target.
                    properties:
                      apiVersion:
                        description: API version of the referent.
                        type: string
                      fieldPath:
                        description: |-
                          If referring to a piece of an object instead of an entire object, this string
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                        type: string
                      resourceVersion:
                        description: |-
                          Specific resourceVersion to which this reference is made, if any.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                        type: string
                      uid:
                        description: |-
                          UID of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                type: object
              vpcInfo:
                description: VpcInfo specifies the VPC information for the vpc endpoint.
                properties:
                  region:
                    description: Region specifies the region for the vpc endpoint.
                    type: string
                  securityGroupIDs:
                    description: SecurityGroupID specifies the security group ids
                      for the vpc endpoint.
                    items:
                      type: string
                    minItems: 1
                    type: array
                  subnetIDs:
                    description: SubnetIDs specifies the subnet ids for the vpc endpoint.
                    items:
                      type: string
                    minItems: 1
                    type: array
                  vpcID:
                    description: VpcID specifies the vpc id for the vpc endpoint.
                    pattern: ^vpc-.*$
                    type: string
                required:
                - region
                - securityGroupIDs
                - subnetIDs
                - vpcID
                type: object
            required:
            - service
            - vpcInfo
            type: object
          status:
            description: PrivatelinkStatus defines the observed state of Privatelink
            properties:
              conditions:
                description: Conditions defines current status of the EKSConnection.
                items:
                  description: Condition defines an observation of a Cluster API resource
                    operational state.
                  properties:
                    lastTransitionTime:
                      description: |-
                        Last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    status:
                      description: Status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: |-
                        Type of condition in CamelCase or in foo.example.com/CamelCase.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
