---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  labels:
    operator.v2v.kubevirt.io: ""
  name: vmimportconfigs.v2v.kubevirt.io
spec:
  group: v2v.kubevirt.io
  names:
    categories:
    - all
    kind: VMImportConfig
    listKind: VMImportConfigList
    plural: vmimportconfigs
    singular: vmimportconfig
  scope: Cluster
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: VMImportConfig is the Schema for the vmimportconfigs API
        properties:
          apiVersion:
            description: APIVersion defines the versioned schema of this representation of an object
            type: string
          kind:
            description: Kind is a string value representing the REST resource this object represents
            type: string
          metadata:
            type: object
          spec:
            description: VMImportConfigSpec defines the desired state of VMImportConfig
            properties:
              imagePullPolicy:
                enum:
                - Always
                - IfNotPresent
                - Never
                type: string
              infra:
                description: Rules on which nodes vm import infrastructure pods will be scheduled
                properties:
                  affinity:
                    description: Affinity enables pod affinity/anti-affinity placement expanding the types of constraints that can be expressed with nodeSelector. affinity is going to be applied to the relevant kind of pods in parallel with nodeSelector See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity
                    properties:
                      nodeAffinity:
                        description: Node affinity is a group of node affinity scheduling rules.
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                preference:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                    matchFields:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                weight:
                                  type: integer
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            properties:
                              nodeSelectorTerms:
                                items:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                    matchFields:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                      podAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                podAffinityTerm:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                            type: object
                                          type: array
                                        matchLabels:
                                          type: object
                                      type: object
                                    namespaces:
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      type: string
                                  type: object
                                weight:
                                  type: integer
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                labelSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                    matchLabels:
                                      type: object
                                  type: object
                                namespaces:
                                  items:
                                    type: string
                                  type: array
                                topologyKey:
                                  type: string
                              type: object
                            type: array
                        type: object
                      podAntiAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                podAffinityTerm:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                            type: object
                                          type: array
                                        matchLabels:
                                          type: object
                                      type: object
                                    namespaces:
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      type: string
                                  type: object
                                weight:
                                  type: integer
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                labelSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                    matchLabels:
                                      type: object
                                  type: object
                                namespaces:
                                  items:
                                    type: string
                                  type: array
                                topologyKey:
                                  type: string
                              type: object
                            type: array
                        type: object
                    type: object
                  nodeSelector:
                    description: 'NodeSelector is the node selector applied to the relevant kind of pods It specifies a map of key-value pairs: for the pod to be eligible to run on a node, the node must have each of the indicated key-value pairs as labels (it can have additional labels as well). See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector'
                    type: object
                  tolerations:
                    description: Tolerations is a list of tolerations applied to the relevant kind of pods See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ for more info. These are additional tolerations other than default ones.
                    items:
                      properties:
                        effect:
                          type: string
                        key:
                          type: string
                        operator:
                          type: string
                        tolerationSeconds:
                          type: integer
                        value:
                          type: string
                      type: object
                    type: array
                type: object
            type: object
          status:
            description: VMImportConfigStatus defines the observed state of VMImportConfig
            properties:
              conditions:
                description: A list of current conditions of the VMImportConfig resource
                items:
                  properties:
                    lastHeartbeatTime:
                      description: Last time the state of the condition was checked
                      format: date-time
                      type: string
                    lastTransitionTime:
                      description: Last time the state of the condition changed
                      format: date-time
                      type: string
                    message:
                      description: Message related to the last condition change
                      type: string
                    reason:
                      description: Reason the last condition changed
                      type: string
                    status:
                      description: Current status of the condition, True, False, Unknown
                      type: string
                    type:
                      description: ConditionType is the state of the operator's reconciliation functionality.
                      type: string
                  type: object
                type: array
              observedVersion:
                description: The observed version of the VMImportConfig resource
                type: string
              operatorVersion:
                description: The version of the VMImportConfig resource as defined by the operator
                type: string
              phase:
                description: VMImportPhase is the current phase of the VMImport deployment
                type: string
              targetVersion:
                description: The desired version of the VMImportConfig resource
                type: string
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - name: v1beta1
    schema:
      openAPIV3Schema:
        description: VMImportConfig is the Schema for the vmimportconfigs API
        properties:
          apiVersion:
            description: APIVersion defines the versioned schema of this representation of an object
            type: string
          kind:
            description: Kind is a string value representing the REST resource this object represents
            type: string
          metadata:
            type: object
          spec:
            description: VMImportConfigSpec defines the desired state of VMImportConfig
            properties:
              imagePullPolicy:
                enum:
                - Always
                - IfNotPresent
                - Never
                type: string
              infra:
                description: Rules on which nodes vm import infrastructure pods will be scheduled
                properties:
                  affinity:
                    description: Affinity enables pod affinity/anti-affinity placement expanding the types of constraints that can be expressed with nodeSelector. affinity is going to be applied to the relevant kind of pods in parallel with nodeSelector See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity
                    properties:
                      nodeAffinity:
                        description: Node affinity is a group of node affinity scheduling rules.
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                preference:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                    matchFields:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                weight:
                                  type: integer
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            properties:
                              nodeSelectorTerms:
                                items:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                    matchFields:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                      podAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                podAffinityTerm:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                            type: object
                                          type: array
                                        matchLabels:
                                          type: object
                                      type: object
                                    namespaces:
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      type: string
                                  type: object
                                weight:
                                  type: integer
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                labelSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                    matchLabels:
                                      type: object
                                  type: object
                                namespaces:
                                  items:
                                    type: string
                                  type: array
                                topologyKey:
                                  type: string
                              type: object
                            type: array
                        type: object
                      podAntiAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                podAffinityTerm:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                            type: object
                                          type: array
                                        matchLabels:
                                          type: object
                                      type: object
                                    namespaces:
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      type: string
                                  type: object
                                weight:
                                  type: integer
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                labelSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                    matchLabels:
                                      type: object
                                  type: object
                                namespaces:
                                  items:
                                    type: string
                                  type: array
                                topologyKey:
                                  type: string
                              type: object
                            type: array
                        type: object
                    type: object
                  nodeSelector:
                    description: 'NodeSelector is the node selector applied to the relevant kind of pods It specifies a map of key-value pairs: for the pod to be eligible to run on a node, the node must have each of the indicated key-value pairs as labels (it can have additional labels as well). See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector'
                    type: object
                  tolerations:
                    description: Tolerations is a list of tolerations applied to the relevant kind of pods See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ for more info. These are additional tolerations other than default ones.
                    items:
                      properties:
                        effect:
                          type: string
                        key:
                          type: string
                        operator:
                          type: string
                        tolerationSeconds:
                          type: integer
                        value:
                          type: string
                      type: object
                    type: array
                type: object
            type: object
          status:
            description: Defines the status of the VMImportConfig installation
            properties:
              conditions:
                description: A list of current conditions of the VMImportConfigresource
                items:
                  description: Condition represents the state of the operator's reconciliation functionality.
                  properties:
                    lastHeartbeatTime:
                      format: date-time
                      type: string
                    lastTransitionTime:
                      format: date-time
                      type: string
                    message:
                      type: string
                    reason:
                      type: string
                    status:
                      type: string
                    type:
                      description: ConditionType is the state of the operator's reconciliation functionality.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              observedVersion:
                description: The observed version of the VMImportConfig resource
                type: string
              operatorVersion:
                description: The version of the VMImportConfig resource as defined by the operator
                type: string
              phase:
                description: Phase is the current phase of the VMImportConfig deployment
                type: string
              targetVersion:
                description: The desired version of the VMImportConfig resource
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
