apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: dnsrecords.ingress.operator.openshift.io
  annotations:
    api-approved.openshift.io: https://github.com/openshift/api/pull/584
    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: Namespaced
  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: []
