apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: argocdexports.argoproj.io
spec:
  group: argoproj.io
  names:
    kind: ArgoCDExport
    listKind: ArgoCDExportList
    plural: argocdexports
    singular: argocdexport
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ArgoCDExport is the Schema for the argocdexports 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: ArgoCDExportSpec defines the desired state of ArgoCDExport
            properties:
              argocd:
                description: Argocd is the name of the ArgoCD instance to export.
                type: string
              image:
                description: Image is the container image to use for the export Job.
                type: string
              schedule:
                description: Schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
                type: string
              storage:
                description: Storage defines the storage configuration options.
                properties:
                  backend:
                    description: Backend defines the storage backend to use, must
                      be "local" (the default), "aws", "azure" or "gcp".
                    type: string
                  pvc:
                    description: PVC is the desired characteristics for a PersistentVolumeClaim.
                    properties:
                      accessModes:
                        description: 'AccessModes contains the desired access modes
                          the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                        items:
                          type: string
                        type: array
                      dataSource:
                        description: 'This field can be used to specify either: *
                          An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot
                          - Beta) * An existing PVC (PersistentVolumeClaim) * An existing
                          custom resource/object that implements data population (Alpha)
                          In order to use VolumeSnapshot object types, the appropriate
                          feature gate must be enabled (VolumeSnapshotDataSource or
                          AnyVolumeDataSource) If the provisioner or an external controller
                          can support the specified data source, it will create a
                          new volume based on the contents of the specified data source.
                          If the specified data source is not supported, the volume
                          will not be created and the failure will be reported as
                          an event. In the future, we plan to support more data source
                          types and the behavior of the provisioner may change.'
                        properties:
                          apiGroup:
                            description: APIGroup is the group for the resource being
                              referenced. If APIGroup is not specified, the specified
                              Kind must be in the core API group. For any other third-party
                              types, APIGroup is required.
                            type: string
                          kind:
                            description: Kind is the type of resource being referenced
                            type: string
                          name:
                            description: Name is the name of resource being referenced
                            type: string
                        required:
                        - kind
                        - name
                        type: object
                      resources:
                        description: 'Resources represents the minimum resources the
                          volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                        properties:
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: 'Limits describes the maximum amount of compute
                              resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: 'Requests describes the minimum amount of
                              compute resources required. If Requests is omitted for
                              a container, it defaults to Limits if that is explicitly
                              specified, otherwise to an implementation-defined value.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                      selector:
                        description: A label query over volumes to consider for binding.
                        properties:
                          matchExpressions:
                            description: matchExpressions is a list of label selector
                              requirements. The requirements are ANDed.
                            items:
                              description: A label selector requirement is a selector
                                that contains values, a key, and an operator that
                                relates the key and values.
                              properties:
                                key:
                                  description: key is the label key that the selector
                                    applies to.
                                  type: string
                                operator:
                                  description: operator represents a key's relationship
                                    to a set of values. Valid operators are In, NotIn,
                                    Exists and DoesNotExist.
                                  type: string
                                values:
                                  description: values is an array of string values.
                                    If the operator is In or NotIn, the values array
                                    must be non-empty. If the operator is Exists or
                                    DoesNotExist, the values array must be empty.
                                    This array is replaced during a strategic merge
                                    patch.
                                  items:
                                    type: string
                                  type: array
                              required:
                              - key
                              - operator
                              type: object
                            type: array
                          matchLabels:
                            additionalProperties:
                              type: string
                            description: matchLabels is a map of {key,value} pairs.
                              A single {key,value} in the matchLabels map is equivalent
                              to an element of matchExpressions, whose key field is
                              "key", the operator is "In", and the values array contains
                              only "value". The requirements are ANDed.
                            type: object
                        type: object
                      storageClassName:
                        description: 'Name of the StorageClass required by the claim.
                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                        type: string
                      volumeMode:
                        description: volumeMode defines what type of volume is required
                          by the claim. Value of Filesystem is implied when not included
                          in claim spec.
                        type: string
                      volumeName:
                        description: VolumeName is the binding reference to the PersistentVolume
                          backing this claim.
                        type: string
                    type: object
                  secretName:
                    description: SecretName is the name of a Secret with encryption
                      key, credentials, etc.
                    type: string
                type: object
              version:
                description: Version is the tag/digest to use for the export Job container
                  image.
                type: string
            required:
            - argocd
            type: object
          status:
            description: ArgoCDExportStatus defines the observed state of ArgoCDExport
            properties:
              phase:
                description: 'Phase is a simple, high-level summary of where the ArgoCDExport
                  is in its lifecycle. There are five possible phase values: Pending:
                  The ArgoCDExport has been accepted by the Kubernetes system, but
                  one or more of the required resources have not been created. Running:
                  All of the containers for the ArgoCDExport are still running, or
                  in the process of starting or restarting. Succeeded: All containers
                  for the ArgoCDExport have terminated in success, and will not be
                  restarted. Failed: At least one container has terminated in failure,
                  either exited with non-zero status or was terminated by the system.
                  Unknown: For some reason the state of the ArgoCDExport could not
                  be obtained.'
                type: string
            required:
            - phase
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
