apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: dnsrecords.ingress.operator.openshift.io
  annotations:
    include.release.openshift.io/ibm-cloud-managed: "true"
    include.release.openshift.io/self-managed-high-availability: "true"
    include.release.openshift.io/single-node-developer: "true"
spec:
  group: ingress.operator.openshift.io
  names:
    kind: DNSRecord
    listKind: DNSRecordList
    plural: dnsrecords
    singular: dnsrecord
  scope: ""
  versions:
  - name: v1
    served: true
    storage: true
    subresources:
      status: {}
    schema:
      openAPIV3Schema:
        description: "DNSRecord is a DNS record managed in the zones defined by dns.config.openshift.io/cluster
          .spec.publicZone and .spec.privateZone. \n Cluster admin manipulation of
          this resource is not supported. This resource is only for internal communication
          of OpenShift operators."
        type: object
        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 desired behavior of the
              dnsecord.
            type: object
            required:
            - dnsName
            - recordTTL
            - recordType
            - targets
            properties:
              dnsName:
                description: dnsName is the hostname of the DNS record
                type: string
                minLength: 1
              recordTTL:
                description: recordTTL is the record TTL in seconds. If zero, the
                  default is 30. RecordTTL will not be used in AWS regions Alias targets,
                  but will be used in CNAME targets, per AWS API contract.
                type: integer
                format: int64
                minimum: 0
              recordType:
                description: recordType is the DNS record type. For example, "A" or
                  "CNAME".
                type: string
                enum:
                - CNAME
                - A
              targets:
                description: targets are record targets.
                type: array
                minItems: 1
                items:
                  type: string
          status:
            description: status is the most recently observed status of the dnsRecord.
            type: object
            properties:
              observedGeneration:
                description: observedGeneration is the most recently observed generation
                  of the DNSRecord.  When the DNSRecord is updated, the controller
                  updates the corresponding record in each managed zone.  If an update
                  for a particular zone fails, that failure is recorded in the status
                  condition for the zone so that the controller can determine that
                  it needs to retry the update for that specific zone.
                type: integer
                format: int64
              zones:
                description: zones are the status of the record in each zone.
                type: array
                items:
                  description: DNSZoneStatus is the status of a record within a specific
                    zone.
                  type: object
                  properties:
                    conditions:
                      description: "conditions are any conditions associated with
                        the record in the zone. \n If publishing the record fails,
                        the \"Failed\" condition will be set with a reason and message
                        describing the cause of the failure."
                      type: array
                      items:
                        description: DNSZoneCondition is just the standard condition
                          fields.
                        type: object
                        required:
                        - status
                        - type
                        properties:
                          lastTransitionTime:
                            type: string
                            format: date-time
                          message:
                            type: string
                          reason:
                            type: string
                          status:
                            type: string
                            minLength: 1
                          type:
                            type: string
                            minLength: 1
                    dnsZone:
                      description: dnsZone is the zone where the record is published.
                      type: object
                      properties:
                        id:
                          description: "id is the identifier that can be used to find
                            the DNS hosted zone. \n on AWS zone can be fetched using
                            `ID` as id in [1] on Azure zone can be fetched using `ID`
                            as a pre-determined name in [2], on GCP zone can be fetched
                            using `ID` as a pre-determined name in [3]. \n [1]: https://docs.aws.amazon.com/cli/latest/reference/route53/get-hosted-zone.html#options
                            [2]: https://docs.microsoft.com/en-us/cli/azure/network/dns/zone?view=azure-cli-latest#az-network-dns-zone-show
                            [3]: https://cloud.google.com/dns/docs/reference/v1/managedZones/get"
                          type: string
                        tags:
                          description: "tags can be used to query the DNS hosted zone.
                            \n on AWS, resourcegroupstaggingapi [1] can be used to
                            fetch a zone using `Tags` as tag-filters, \n [1]: https://docs.aws.amazon.com/cli/latest/reference/resourcegroupstaggingapi/get-resources.html#options"
                          type: object
                          additionalProperties:
                            type: string
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
