apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    api-approved.openshift.io: https://github.com/openshift/api/pull/639
    include.release.openshift.io/self-managed-high-availability: "true"
    include.release.openshift.io/single-node-developer: "true"
  name: podnetworkconnectivitychecks.controlplane.operator.openshift.io
spec:
  group: controlplane.operator.openshift.io
  names:
    kind: PodNetworkConnectivityCheck
    listKind: PodNetworkConnectivityCheckList
    plural: podnetworkconnectivitychecks
    singular: podnetworkconnectivitycheck
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          description: "PodNetworkConnectivityCheck \n Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support."
          type: object
          required:
            - spec
          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 defines the source and target of the connectivity check
              type: object
              required:
                - sourcePod
                - targetEndpoint
              properties:
                sourcePod:
                  description: SourcePod names the pod from which the condition will be checked
                  type: string
                  pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                targetEndpoint:
                  description: EndpointAddress to check. A TCP address of the form host:port. Note that if host is a DNS name, then the check would fail if the DNS name cannot be resolved. Specify an IP address for host to bypass DNS name lookup.
                  type: string
                  pattern: ^\S+:\d*$
                tlsClientCert:
                  description: TLSClientCert, if specified, references a kubernetes.io/tls type secret with 'tls.crt' and 'tls.key' entries containing an optional TLS client certificate and key to be used when checking endpoints that require a client certificate in order to gracefully preform the scan without causing excessive logging in the endpoint process. The secret must exist in the same namespace as this resource.
                  type: object
                  required:
                    - name
                  properties:
                    name:
                      description: name is the metadata.name of the referenced secret
                      type: string
            status:
              description: Status contains the observed status of the connectivity check
              type: object
              properties:
                conditions:
                  description: Conditions summarize the status of the check
                  type: array
                  items:
                    description: PodNetworkConnectivityCheckCondition represents the overall status of the pod network connectivity.
                    type: object
                    required:
                      - lastTransitionTime
                      - status
                      - type
                    properties:
                      lastTransitionTime:
                        description: Last time the condition transitioned from one status to another.
                        type: string
                        format: date-time
                        nullable: true
                      message:
                        description: Message indicating details about last transition in a human readable format.
                        type: string
                      reason:
                        description: Reason for the condition's last status transition in a machine readable format.
                        type: string
                      status:
                        description: Status of the condition
                        type: string
                      type:
                        description: Type of the condition
                        type: string
                failures:
                  description: Failures contains logs of unsuccessful check actions
                  type: array
                  items:
                    description: LogEntry records events
                    type: object
                    required:
                      - success
                      - time
                    properties:
                      latency:
                        description: Latency records how long the action mentioned in the entry took.
                        type: string
                        nullable: true
                      message:
                        description: Message explaining status in a human readable format.
                        type: string
                      reason:
                        description: Reason for status in a machine readable format.
                        type: string
                      success:
                        description: Success indicates if the log entry indicates a success or failure.
                        type: boolean
                      time:
                        description: Start time of check action.
                        type: string
                        format: date-time
                        nullable: true
                outages:
                  description: Outages contains logs of time periods of outages
                  type: array
                  items:
                    description: OutageEntry records time period of an outage
                    type: object
                    required:
                      - start
                    properties:
                      end:
                        description: End of outage detected
                        type: string
                        format: date-time
                        nullable: true
                      endLogs:
                        description: EndLogs contains log entries related to the end of this outage. Should contain the success entry that resolved the outage and possibly a few of the failure log entries that preceded it.
                        type: array
                        items:
                          description: LogEntry records events
                          type: object
                          required:
                            - success
                            - time
                          properties:
                            latency:
                              description: Latency records how long the action mentioned in the entry took.
                              type: string
                              nullable: true
                            message:
                              description: Message explaining status in a human readable format.
                              type: string
                            reason:
                              description: Reason for status in a machine readable format.
                              type: string
                            success:
                              description: Success indicates if the log entry indicates a success or failure.
                              type: boolean
                            time:
                              description: Start time of check action.
                              type: string
                              format: date-time
                              nullable: true
                      message:
                        description: Message summarizes outage details in a human readable format.
                        type: string
                      start:
                        description: Start of outage detected
                        type: string
                        format: date-time
                        nullable: true
                      startLogs:
                        description: StartLogs contains log entries related to the start of this outage. Should contain the original failure, any entries where the failure mode changed.
                        type: array
                        items:
                          description: LogEntry records events
                          type: object
                          required:
                            - success
                            - time
                          properties:
                            latency:
                              description: Latency records how long the action mentioned in the entry took.
                              type: string
                              nullable: true
                            message:
                              description: Message explaining status in a human readable format.
                              type: string
                            reason:
                              description: Reason for status in a machine readable format.
                              type: string
                            success:
                              description: Success indicates if the log entry indicates a success or failure.
                              type: boolean
                            time:
                              description: Start time of check action.
                              type: string
                              format: date-time
                              nullable: true
                successes:
                  description: Successes contains logs successful check actions
                  type: array
                  items:
                    description: LogEntry records events
                    type: object
                    required:
                      - success
                      - time
                    properties:
                      latency:
                        description: Latency records how long the action mentioned in the entry took.
                        type: string
                        nullable: true
                      message:
                        description: Message explaining status in a human readable format.
                        type: string
                      reason:
                        description: Reason for status in a machine readable format.
                        type: string
                      success:
                        description: Success indicates if the log entry indicates a success or failure.
                        type: boolean
                      time:
                        description: Start time of check action.
                        type: string
                        format: date-time
                        nullable: true
      served: true
      storage: true
      subresources:
        status: {}
