---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.0
  name: filesystems.efs.aws.crossplane.io
spec:
  group: efs.aws.crossplane.io
  names:
    categories:
    - crossplane
    - managed
    - aws
    kind: FileSystem
    listKind: FileSystemList
    plural: filesystems
    singular: filesystem
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: READY
      type: string
    - jsonPath: .status.conditions[?(@.type=='Synced')].status
      name: SYNCED
      type: string
    - jsonPath: .metadata.annotations.crossplane\.io/external-name
      name: EXTERNAL-NAME
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: FileSystem is the Schema for the FileSystems 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: FileSystemSpec defines the desired state of FileSystem
            properties:
              deletionPolicy:
                default: Delete
                description: |-
                  DeletionPolicy specifies what will happen to the underlying external
                  when this managed resource is deleted - either "Delete" or "Orphan" the
                  external resource.
                  This field is planned to be deprecated in favor of the ManagementPolicies
                  field in a future release. Currently, both could be set independently and
                  non-default values would be honored if the feature flag is enabled.
                  See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223
                enum:
                - Orphan
                - Delete
                type: string
              forProvider:
                description: FileSystemParameters defines the desired state of FileSystem
                properties:
                  availabilityZoneName:
                    description: |-
                      Used to create a file system that uses One Zone storage classes. It specifies
                      the Amazon Web Services Availability Zone in which to create the file system.
                      Use the format us-east-1a to specify the Availability Zone. For more information
                      about One Zone storage classes, see Using EFS storage classes (https://docs.aws.amazon.com/efs/latest/ug/storage-classes.html)
                      in the Amazon EFS User Guide.

                      One Zone storage classes are not available in all Availability Zones in Amazon
                      Web Services Regions where Amazon EFS is available.
                    type: string
                  backup:
                    description: |-
                      Specifies whether automatic backups are enabled on the file system that you
                      are creating. Set the value to true to enable automatic backups. If you are
                      creating a file system that uses One Zone storage classes, automatic backups
                      are enabled by default. For more information, see Automatic backups (https://docs.aws.amazon.com/efs/latest/ug/awsbackup.html#automatic-backups)
                      in the Amazon EFS User Guide.

                      Default is false. However, if you specify an AvailabilityZoneName, the default
                      is true.

                      Backup is not available in all Amazon Web Services Regions where Amazon EFS
                      is available.
                    type: boolean
                  encrypted:
                    description: |-
                      A Boolean value that, if true, creates an encrypted file system. When creating
                      an encrypted file system, you have the option of specifying an existing Key
                      Management Service key (KMS key). If you don't specify a KMS key, then the
                      default KMS key for Amazon EFS, /aws/elasticfilesystem, is used to protect
                      the encrypted file system.
                    type: boolean
                  kmsKeyID:
                    description: |-
                      The ID of the KMS key that you want to use to protect the encrypted file
                      system. This parameter is required only if you want to use a non-default
                      KMS key. If this parameter is not specified, the default KMS key for Amazon
                      EFS is used. You can specify a KMS key ID using the following formats:

                         * Key ID - A unique identifier of the key, for example 1234abcd-12ab-34cd-56ef-1234567890ab.

                         * ARN - An Amazon Resource Name (ARN) for the key, for example arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

                         * Key alias - A previously created display name for a key, for example
                         alias/projectKey1.

                         * Key alias ARN - An ARN for a key alias, for example arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

                      If you use KmsKeyId, you must set the CreateFileSystemRequest$Encrypted parameter
                      to true.

                      EFS accepts only symmetric KMS keys. You cannot use asymmetric KMS keys with
                      Amazon EFS file systems.
                    type: string
                  kmsKeyIdRef:
                    description: |-
                      KMSKeyIDRef is a reference to an Key used to set
                      the KMSKeyID.
                    properties:
                      name:
                        description: Name of the referenced object.
                        type: string
                      policy:
                        description: Policies for referencing.
                        properties:
                          resolution:
                            default: Required
                            description: |-
                              Resolution specifies whether resolution of this reference is required.
                              The default is 'Required', which means the reconcile will fail if the
                              reference cannot be resolved. 'Optional' means this reference will be
                              a no-op if it cannot be resolved.
                            enum:
                            - Required
                            - Optional
                            type: string
                          resolve:
                            description: |-
                              Resolve specifies when this reference should be resolved. The default
                              is 'IfNotPresent', which will attempt to resolve the reference only when
                              the corresponding field is not present. Use 'Always' to resolve the
                              reference on every reconcile.
                            enum:
                            - Always
                            - IfNotPresent
                            type: string
                        type: object
                    required:
                    - name
                    type: object
                  kmsKeyIdSelector:
                    description: |-
                      KMSKeyIDSelector selects references to Key used
                      to set the KMSKeyID.
                    properties:
                      matchControllerRef:
                        description: |-
                          MatchControllerRef ensures an object with the same controller reference
                          as the selecting object is selected.
                        type: boolean
                      matchLabels:
                        additionalProperties:
                          type: string
                        description: MatchLabels ensures an object with matching labels
                          is selected.
                        type: object
                      policy:
                        description: Policies for selection.
                        properties:
                          resolution:
                            default: Required
                            description: |-
                              Resolution specifies whether resolution of this reference is required.
                              The default is 'Required', which means the reconcile will fail if the
                              reference cannot be resolved. 'Optional' means this reference will be
                              a no-op if it cannot be resolved.
                            enum:
                            - Required
                            - Optional
                            type: string
                          resolve:
                            description: |-
                              Resolve specifies when this reference should be resolved. The default
                              is 'IfNotPresent', which will attempt to resolve the reference only when
                              the corresponding field is not present. Use 'Always' to resolve the
                              reference on every reconcile.
                            enum:
                            - Always
                            - IfNotPresent
                            type: string
                        type: object
                    type: object
                  performanceMode:
                    description: |-
                      The performance mode of the file system. We recommend generalPurpose performance
                      mode for most file systems. File systems using the maxIO performance mode
                      can scale to higher levels of aggregate throughput and operations per second
                      with a tradeoff of slightly higher latencies for most file operations. The
                      performance mode can't be changed after the file system has been created.

                      The maxIO mode is not supported on file systems using One Zone storage classes.

                      Default is generalPurpose.
                    type: string
                  provisionedThroughputInMibps:
                    description: |-
                      The throughput, measured in MiB/s, that you want to provision for a file
                      system that you're creating. Valid values are 1-1024. Required if ThroughputMode
                      is set to provisioned. The upper limit for throughput is 1024 MiB/s. You
                      can get this limit increased by contacting AWS Support. For more information,
                      see Amazon EFS Limits That You Can Increase (https://docs.aws.amazon.com/efs/latest/ug/limits.html#soft-limits)
                      in the Amazon EFS User Guide.
                    format: int64
                    type: integer
                  region:
                    description: Region is which region the FileSystem will be created.
                    type: string
                  tags:
                    description: |-
                      Use to create one or more tags associated with the file system. Each tag
                      is a user-defined key-value pair. Name your file system on creation by including
                      a "Key":"Name","Value":"{value}" key-value pair. Each key must be unique.
                      For more information, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)
                      in the Amazon Web Services General Reference Guide.
                    items:
                      properties:
                        key:
                          type: string
                        value:
                          type: string
                      type: object
                    type: array
                  throughputMode:
                    description: |-
                      Specifies the throughput mode for the file system. The mode can be bursting,
                      provisioned, or elastic. If you set ThroughputMode to provisioned, you must
                      also set a value for ProvisionedThroughputInMibps. After you create the file
                      system, you can decrease your file system's throughput in Provisioned Throughput
                      mode or change between the throughput modes, with certain time restrictions.
                      For more information, see Specifying throughput with provisioned mode (https://docs.aws.amazon.com/efs/latest/ug/performance.html#provisioned-throughput)
                      in the Amazon EFS User Guide.

                      Default is bursting.
                    type: string
                required:
                - region
                type: object
              managementPolicies:
                default:
                - '*'
                description: |-
                  THIS IS A BETA FIELD. It is on by default but can be opted out
                  through a Crossplane feature flag.
                  ManagementPolicies specify the array of actions Crossplane is allowed to
                  take on the managed and external resources.
                  This field is planned to replace the DeletionPolicy field in a future
                  release. Currently, both could be set independently and non-default
                  values would be honored if the feature flag is enabled. If both are
                  custom, the DeletionPolicy field will be ignored.
                  See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223
                  and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md
                items:
                  description: |-
                    A ManagementAction represents an action that the Crossplane controllers
                    can take on an external resource.
                  enum:
                  - Observe
                  - Create
                  - Update
                  - Delete
                  - LateInitialize
                  - '*'
                  type: string
                type: array
              providerConfigRef:
                default:
                  name: default
                description: |-
                  ProviderConfigReference specifies how the provider that will be used to
                  create, observe, update, and delete this managed resource should be
                  configured.
                properties:
                  name:
                    description: Name of the referenced object.
                    type: string
                  policy:
                    description: Policies for referencing.
                    properties:
                      resolution:
                        default: Required
                        description: |-
                          Resolution specifies whether resolution of this reference is required.
                          The default is 'Required', which means the reconcile will fail if the
                          reference cannot be resolved. 'Optional' means this reference will be
                          a no-op if it cannot be resolved.
                        enum:
                        - Required
                        - Optional
                        type: string
                      resolve:
                        description: |-
                          Resolve specifies when this reference should be resolved. The default
                          is 'IfNotPresent', which will attempt to resolve the reference only when
                          the corresponding field is not present. Use 'Always' to resolve the
                          reference on every reconcile.
                        enum:
                        - Always
                        - IfNotPresent
                        type: string
                    type: object
                required:
                - name
                type: object
              publishConnectionDetailsTo:
                description: |-
                  PublishConnectionDetailsTo specifies the connection secret config which
                  contains a name, metadata and a reference to secret store config to
                  which any connection details for this managed resource should be written.
                  Connection details frequently include the endpoint, username,
                  and password required to connect to the managed resource.
                properties:
                  configRef:
                    default:
                      name: default
                    description: |-
                      SecretStoreConfigRef specifies which secret store config should be used
                      for this ConnectionSecret.
                    properties:
                      name:
                        description: Name of the referenced object.
                        type: string
                      policy:
                        description: Policies for referencing.
                        properties:
                          resolution:
                            default: Required
                            description: |-
                              Resolution specifies whether resolution of this reference is required.
                              The default is 'Required', which means the reconcile will fail if the
                              reference cannot be resolved. 'Optional' means this reference will be
                              a no-op if it cannot be resolved.
                            enum:
                            - Required
                            - Optional
                            type: string
                          resolve:
                            description: |-
                              Resolve specifies when this reference should be resolved. The default
                              is 'IfNotPresent', which will attempt to resolve the reference only when
                              the corresponding field is not present. Use 'Always' to resolve the
                              reference on every reconcile.
                            enum:
                            - Always
                            - IfNotPresent
                            type: string
                        type: object
                    required:
                    - name
                    type: object
                  metadata:
                    description: Metadata is the metadata for connection secret.
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations are the annotations to be added to connection secret.
                          - For Kubernetes secrets, this will be used as "metadata.annotations".
                          - It is up to Secret Store implementation for others store types.
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Labels are the labels/tags to be added to connection secret.
                          - For Kubernetes secrets, this will be used as "metadata.labels".
                          - It is up to Secret Store implementation for others store types.
                        type: object
                      type:
                        description: |-
                          Type is the SecretType for the connection secret.
                          - Only valid for Kubernetes Secret Stores.
                        type: string
                    type: object
                  name:
                    description: Name is the name of the connection secret.
                    type: string
                required:
                - name
                type: object
              writeConnectionSecretToRef:
                description: |-
                  WriteConnectionSecretToReference specifies the namespace and name of a
                  Secret to which any connection details for this managed resource should
                  be written. Connection details frequently include the endpoint, username,
                  and password required to connect to the managed resource.
                  This field is planned to be replaced in a future release in favor of
                  PublishConnectionDetailsTo. Currently, both could be set independently
                  and connection details would be published to both without affecting
                  each other.
                properties:
                  name:
                    description: Name of the secret.
                    type: string
                  namespace:
                    description: Namespace of the secret.
                    type: string
                required:
                - name
                - namespace
                type: object
            required:
            - forProvider
            type: object
          status:
            description: FileSystemStatus defines the observed state of FileSystem.
            properties:
              atProvider:
                description: FileSystemObservation defines the observed state of FileSystem
                properties:
                  availabilityZoneID:
                    description: |-
                      The unique and consistent identifier of the Availability Zone in which the
                      file system's One Zone storage classes exist. For example, use1-az1 is an
                      Availability Zone ID for the us-east-1 Amazon Web Services Region, and it
                      has the same location in every Amazon Web Services account.
                    type: string
                  creationTime:
                    description: The time that the file system was created, in seconds
                      (since 1970-01-01T00:00:00Z).
                    format: date-time
                    type: string
                  creationToken:
                    description: The opaque string specified in the request.
                    type: string
                  fileSystemARN:
                    description: |-
                      The Amazon Resource Name (ARN) for the EFS file system, in the format arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id
                      . Example with sample data: arn:aws:elasticfilesystem:us-west-2:1111333322228888:file-system/fs-01234567
                    type: string
                  fileSystemID:
                    description: The ID of the file system, assigned by Amazon EFS.
                    type: string
                  lifeCycleState:
                    description: The lifecycle phase of the file system.
                    type: string
                  name:
                    description: |-
                      You can add tags to a file system, including a Name tag. For more information,
                      see CreateFileSystem. If the file system has a Name tag, Amazon EFS returns
                      the value in this field.
                    type: string
                  numberOfMountTargets:
                    description: |-
                      The current number of mount targets that the file system has. For more information,
                      see CreateMountTarget.
                    format: int64
                    type: integer
                  ownerID:
                    description: The Amazon Web Services account that created the
                      file system.
                    type: string
                  sizeInBytes:
                    description: |-
                      The latest known metered size (in bytes) of data stored in the file system,
                      in its Value field, and the time at which that size was determined in its
                      Timestamp field. The Timestamp value is the integer number of seconds since
                      1970-01-01T00:00:00Z. The SizeInBytes value doesn't represent the size of
                      a consistent snapshot of the file system, but it is eventually consistent
                      when there are no writes to the file system. That is, SizeInBytes represents
                      actual size only if the file system is not modified for a period longer than
                      a couple of hours. Otherwise, the value is not the exact size that the file
                      system was at any point in time.
                    properties:
                      timestamp:
                        format: date-time
                        type: string
                      value:
                        format: int64
                        type: integer
                      valueInIA:
                        format: int64
                        type: integer
                      valueInStandard:
                        format: int64
                        type: integer
                    type: object
                type: object
              conditions:
                description: Conditions of the resource.
                items:
                  description: A Condition that may apply to a resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        LastTransitionTime is the last time this condition transitioned from one
                        status to another.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A Message containing details about this condition's last transition from
                        one status to another, if any.
                      type: string
                    observedGeneration:
                      description: |-
                        ObservedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      type: integer
                    reason:
                      description: A Reason for this condition's last transition from
                        one status to another.
                      type: string
                    status:
                      description: Status of this condition; is it currently True,
                        False, or Unknown?
                      type: string
                    type:
                      description: |-
                        Type of this condition. At most one of each condition type may apply to
                        a resource at any point in time.
                      type: string
                  required:
                  - lastTransitionTime
                  - reason
                  - status
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - type
                x-kubernetes-list-type: map
              observedGeneration:
                description: |-
                  ObservedGeneration is the latest metadata.generation
                  which resulted in either a ready state, or stalled due to error
                  it can not recover from without human intervention.
                format: int64
                type: integer
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
