{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.FSx.Types.DataRepositoryAssociation
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.FSx.Types.DataRepositoryAssociation where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.FSx.Types.DataRepositoryFailureDetails
import Amazonka.FSx.Types.DataRepositoryLifecycle
import Amazonka.FSx.Types.NFSDataRepositoryConfiguration
import Amazonka.FSx.Types.S3DataRepositoryConfiguration
import Amazonka.FSx.Types.Tag
import qualified Amazonka.Prelude as Prelude

-- | The configuration of a data repository association that links an Amazon
-- FSx for Lustre file system to an Amazon S3 bucket or an Amazon File
-- Cache resource to an Amazon S3 bucket or an NFS file system. The data
-- repository association configuration object is returned in the response
-- of the following operations:
--
-- -   @CreateDataRepositoryAssociation@
--
-- -   @UpdateDataRepositoryAssociation@
--
-- -   @DescribeDataRepositoryAssociations@
--
-- Data repository associations are supported only for an Amazon FSx for
-- Lustre file system with the @Persistent_2@ deployment type and for an
-- Amazon File Cache resource.
--
-- /See:/ 'newDataRepositoryAssociation' smart constructor.
data DataRepositoryAssociation = DataRepositoryAssociation'
  { -- | The system-generated, unique ID of the data repository association.
    DataRepositoryAssociation -> Maybe Text
associationId :: Prelude.Maybe Prelude.Text,
    -- | A boolean flag indicating whether an import data repository task to
    -- import metadata should run after the data repository association is
    -- created. The task runs if this flag is set to @true@.
    --
    -- @BatchImportMetaDataOnCreate@ is not supported for data repositories
    -- linked to an Amazon File Cache resource.
    DataRepositoryAssociation -> Maybe Bool
batchImportMetaDataOnCreate :: Prelude.Maybe Prelude.Bool,
    DataRepositoryAssociation -> Maybe POSIX
creationTime :: Prelude.Maybe Data.POSIX,
    -- | The path to the data repository that will be linked to the cache or file
    -- system.
    --
    -- -   For Amazon File Cache, the path can be an NFS data repository that
    --     will be linked to the cache. The path can be in one of two formats:
    --
    --     -   If you are not using the @DataRepositorySubdirectories@
    --         parameter, the path is to an NFS Export directory (or one of its
    --         subdirectories) in the format
    --         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
    --         single NFS Export to a single data repository association.
    --
    --     -   If you are using the @DataRepositorySubdirectories@ parameter,
    --         the path is the domain name of the NFS file system in the format
    --         @nfs:\/\/filer-domain-name@, which indicates the root of the
    --         subdirectories specified with the @DataRepositorySubdirectories@
    --         parameter.
    --
    -- -   For Amazon File Cache, the path can be an S3 bucket or prefix in the
    --     format @s3:\/\/myBucket\/myPrefix\/@.
    --
    -- -   For Amazon FSx for Lustre, the path can be an S3 bucket or prefix in
    --     the format @s3:\/\/myBucket\/myPrefix\/@.
    DataRepositoryAssociation -> Maybe Text
dataRepositoryPath :: Prelude.Maybe Prelude.Text,
    -- | For Amazon File Cache, a list of NFS Exports that will be linked with an
    -- NFS data repository association. All the subdirectories must be on a
    -- single NFS file system. The Export paths are in the format
    -- @\/exportpath1@. To use this parameter, you must configure
    -- @DataRepositoryPath@ as the domain name of the NFS file system. The NFS
    -- file system domain name in effect is the root of the subdirectories.
    -- Note that @DataRepositorySubdirectories@ is not supported for S3 data
    -- repositories.
    DataRepositoryAssociation -> Maybe [Text]
dataRepositorySubdirectories :: Prelude.Maybe [Prelude.Text],
    DataRepositoryAssociation -> Maybe DataRepositoryFailureDetails
failureDetails :: Prelude.Maybe DataRepositoryFailureDetails,
    -- | The globally unique ID of the Amazon File Cache resource.
    DataRepositoryAssociation -> Maybe Text
fileCacheId :: Prelude.Maybe Prelude.Text,
    -- | A path on the Amazon File Cache that points to a high-level directory
    -- (such as @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that
    -- will be mapped 1-1 with @DataRepositoryPath@. The leading forward slash
    -- in the path is required. Two data repository associations cannot have
    -- overlapping cache paths. For example, if a data repository is associated
    -- with cache path @\/ns1\/@, then you cannot link another data repository
    -- with cache path @\/ns1\/ns2@.
    --
    -- This path specifies the directory in your cache where files will be
    -- exported from. This cache directory can be linked to only one data
    -- repository (S3 or NFS) and no other data repository can be linked to the
    -- directory.
    --
    -- The cache path can only be set to root (\/) on an NFS DRA when
    -- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
    -- the cache path, you can create only one DRA on the cache.
    --
    -- The cache path cannot be set to root (\/) for an S3 DRA.
    DataRepositoryAssociation -> Maybe Text
fileCachePath :: Prelude.Maybe Prelude.Text,
    DataRepositoryAssociation -> Maybe Text
fileSystemId :: Prelude.Maybe Prelude.Text,
    -- | A path on the Amazon FSx for Lustre file system that points to a
    -- high-level directory (such as @\/ns1\/@) or subdirectory (such as
    -- @\/ns1\/subdir\/@) that will be mapped 1-1 with @DataRepositoryPath@.
    -- The leading forward slash in the name is required. Two data repository
    -- associations cannot have overlapping file system paths. For example, if
    -- a data repository is associated with file system path @\/ns1\/@, then
    -- you cannot link another data repository with file system path
    -- @\/ns1\/ns2@.
    --
    -- This path specifies where in your file system files will be exported
    -- from or imported to. This file system directory can be linked to only
    -- one Amazon S3 bucket, and no other S3 bucket can be linked to the
    -- directory.
    --
    -- If you specify only a forward slash (@\/@) as the file system path, you
    -- can link only one data repository to the file system. You can only
    -- specify \"\/\" as the file system path for the first data repository
    -- associated with a file system.
    DataRepositoryAssociation -> Maybe Text
fileSystemPath :: Prelude.Maybe Prelude.Text,
    -- | For files imported from a data repository, this value determines the
    -- stripe count and maximum amount of data per file (in MiB) stored on a
    -- single physical disk. The maximum number of disks that a single file can
    -- be striped across is limited by the total number of disks that make up
    -- the file system or cache.
    --
    -- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
    -- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
    DataRepositoryAssociation -> Maybe Natural
importedFileChunkSize :: Prelude.Maybe Prelude.Natural,
    -- | Describes the state of a data repository association. The lifecycle can
    -- have the following values:
    --
    -- -   @CREATING@ - The data repository association between the file system
    --     or cache and the data repository is being created. The data
    --     repository is unavailable.
    --
    -- -   @AVAILABLE@ - The data repository association is available for use.
    --
    -- -   @MISCONFIGURED@ - The data repository association is misconfigured.
    --     Until the configuration is corrected, automatic import and automatic
    --     export will not work (only for Amazon FSx for Lustre).
    --
    -- -   @UPDATING@ - The data repository association is undergoing a
    --     customer initiated update that might affect its availability.
    --
    -- -   @DELETING@ - The data repository association is undergoing a
    --     customer initiated deletion.
    --
    -- -   @FAILED@ - The data repository association is in a terminal state
    --     that cannot be recovered.
    DataRepositoryAssociation -> Maybe DataRepositoryLifecycle
lifecycle :: Prelude.Maybe DataRepositoryLifecycle,
    -- | The configuration for an NFS data repository linked to an Amazon File
    -- Cache resource with a data repository association.
    DataRepositoryAssociation -> Maybe NFSDataRepositoryConfiguration
nfs :: Prelude.Maybe NFSDataRepositoryConfiguration,
    DataRepositoryAssociation -> Maybe Text
resourceARN :: Prelude.Maybe Prelude.Text,
    -- | The configuration for an Amazon S3 data repository linked to an Amazon
    -- FSx for Lustre file system with a data repository association.
    DataRepositoryAssociation -> Maybe S3DataRepositoryConfiguration
s3 :: Prelude.Maybe S3DataRepositoryConfiguration,
    DataRepositoryAssociation -> Maybe (NonEmpty Tag)
tags :: Prelude.Maybe (Prelude.NonEmpty Tag)
  }
  deriving (DataRepositoryAssociation -> DataRepositoryAssociation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DataRepositoryAssociation -> DataRepositoryAssociation -> Bool
$c/= :: DataRepositoryAssociation -> DataRepositoryAssociation -> Bool
== :: DataRepositoryAssociation -> DataRepositoryAssociation -> Bool
$c== :: DataRepositoryAssociation -> DataRepositoryAssociation -> Bool
Prelude.Eq, ReadPrec [DataRepositoryAssociation]
ReadPrec DataRepositoryAssociation
Int -> ReadS DataRepositoryAssociation
ReadS [DataRepositoryAssociation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DataRepositoryAssociation]
$creadListPrec :: ReadPrec [DataRepositoryAssociation]
readPrec :: ReadPrec DataRepositoryAssociation
$creadPrec :: ReadPrec DataRepositoryAssociation
readList :: ReadS [DataRepositoryAssociation]
$creadList :: ReadS [DataRepositoryAssociation]
readsPrec :: Int -> ReadS DataRepositoryAssociation
$creadsPrec :: Int -> ReadS DataRepositoryAssociation
Prelude.Read, Int -> DataRepositoryAssociation -> ShowS
[DataRepositoryAssociation] -> ShowS
DataRepositoryAssociation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DataRepositoryAssociation] -> ShowS
$cshowList :: [DataRepositoryAssociation] -> ShowS
show :: DataRepositoryAssociation -> String
$cshow :: DataRepositoryAssociation -> String
showsPrec :: Int -> DataRepositoryAssociation -> ShowS
$cshowsPrec :: Int -> DataRepositoryAssociation -> ShowS
Prelude.Show, forall x.
Rep DataRepositoryAssociation x -> DataRepositoryAssociation
forall x.
DataRepositoryAssociation -> Rep DataRepositoryAssociation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DataRepositoryAssociation x -> DataRepositoryAssociation
$cfrom :: forall x.
DataRepositoryAssociation -> Rep DataRepositoryAssociation x
Prelude.Generic)

-- |
-- Create a value of 'DataRepositoryAssociation' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'associationId', 'dataRepositoryAssociation_associationId' - The system-generated, unique ID of the data repository association.
--
-- 'batchImportMetaDataOnCreate', 'dataRepositoryAssociation_batchImportMetaDataOnCreate' - A boolean flag indicating whether an import data repository task to
-- import metadata should run after the data repository association is
-- created. The task runs if this flag is set to @true@.
--
-- @BatchImportMetaDataOnCreate@ is not supported for data repositories
-- linked to an Amazon File Cache resource.
--
-- 'creationTime', 'dataRepositoryAssociation_creationTime' - Undocumented member.
--
-- 'dataRepositoryPath', 'dataRepositoryAssociation_dataRepositoryPath' - The path to the data repository that will be linked to the cache or file
-- system.
--
-- -   For Amazon File Cache, the path can be an NFS data repository that
--     will be linked to the cache. The path can be in one of two formats:
--
--     -   If you are not using the @DataRepositorySubdirectories@
--         parameter, the path is to an NFS Export directory (or one of its
--         subdirectories) in the format
--         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
--         single NFS Export to a single data repository association.
--
--     -   If you are using the @DataRepositorySubdirectories@ parameter,
--         the path is the domain name of the NFS file system in the format
--         @nfs:\/\/filer-domain-name@, which indicates the root of the
--         subdirectories specified with the @DataRepositorySubdirectories@
--         parameter.
--
-- -   For Amazon File Cache, the path can be an S3 bucket or prefix in the
--     format @s3:\/\/myBucket\/myPrefix\/@.
--
-- -   For Amazon FSx for Lustre, the path can be an S3 bucket or prefix in
--     the format @s3:\/\/myBucket\/myPrefix\/@.
--
-- 'dataRepositorySubdirectories', 'dataRepositoryAssociation_dataRepositorySubdirectories' - For Amazon File Cache, a list of NFS Exports that will be linked with an
-- NFS data repository association. All the subdirectories must be on a
-- single NFS file system. The Export paths are in the format
-- @\/exportpath1@. To use this parameter, you must configure
-- @DataRepositoryPath@ as the domain name of the NFS file system. The NFS
-- file system domain name in effect is the root of the subdirectories.
-- Note that @DataRepositorySubdirectories@ is not supported for S3 data
-- repositories.
--
-- 'failureDetails', 'dataRepositoryAssociation_failureDetails' - Undocumented member.
--
-- 'fileCacheId', 'dataRepositoryAssociation_fileCacheId' - The globally unique ID of the Amazon File Cache resource.
--
-- 'fileCachePath', 'dataRepositoryAssociation_fileCachePath' - A path on the Amazon File Cache that points to a high-level directory
-- (such as @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that
-- will be mapped 1-1 with @DataRepositoryPath@. The leading forward slash
-- in the path is required. Two data repository associations cannot have
-- overlapping cache paths. For example, if a data repository is associated
-- with cache path @\/ns1\/@, then you cannot link another data repository
-- with cache path @\/ns1\/ns2@.
--
-- This path specifies the directory in your cache where files will be
-- exported from. This cache directory can be linked to only one data
-- repository (S3 or NFS) and no other data repository can be linked to the
-- directory.
--
-- The cache path can only be set to root (\/) on an NFS DRA when
-- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
-- the cache path, you can create only one DRA on the cache.
--
-- The cache path cannot be set to root (\/) for an S3 DRA.
--
-- 'fileSystemId', 'dataRepositoryAssociation_fileSystemId' - Undocumented member.
--
-- 'fileSystemPath', 'dataRepositoryAssociation_fileSystemPath' - A path on the Amazon FSx for Lustre file system that points to a
-- high-level directory (such as @\/ns1\/@) or subdirectory (such as
-- @\/ns1\/subdir\/@) that will be mapped 1-1 with @DataRepositoryPath@.
-- The leading forward slash in the name is required. Two data repository
-- associations cannot have overlapping file system paths. For example, if
-- a data repository is associated with file system path @\/ns1\/@, then
-- you cannot link another data repository with file system path
-- @\/ns1\/ns2@.
--
-- This path specifies where in your file system files will be exported
-- from or imported to. This file system directory can be linked to only
-- one Amazon S3 bucket, and no other S3 bucket can be linked to the
-- directory.
--
-- If you specify only a forward slash (@\/@) as the file system path, you
-- can link only one data repository to the file system. You can only
-- specify \"\/\" as the file system path for the first data repository
-- associated with a file system.
--
-- 'importedFileChunkSize', 'dataRepositoryAssociation_importedFileChunkSize' - For files imported from a data repository, this value determines the
-- stripe count and maximum amount of data per file (in MiB) stored on a
-- single physical disk. The maximum number of disks that a single file can
-- be striped across is limited by the total number of disks that make up
-- the file system or cache.
--
-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
--
-- 'lifecycle', 'dataRepositoryAssociation_lifecycle' - Describes the state of a data repository association. The lifecycle can
-- have the following values:
--
-- -   @CREATING@ - The data repository association between the file system
--     or cache and the data repository is being created. The data
--     repository is unavailable.
--
-- -   @AVAILABLE@ - The data repository association is available for use.
--
-- -   @MISCONFIGURED@ - The data repository association is misconfigured.
--     Until the configuration is corrected, automatic import and automatic
--     export will not work (only for Amazon FSx for Lustre).
--
-- -   @UPDATING@ - The data repository association is undergoing a
--     customer initiated update that might affect its availability.
--
-- -   @DELETING@ - The data repository association is undergoing a
--     customer initiated deletion.
--
-- -   @FAILED@ - The data repository association is in a terminal state
--     that cannot be recovered.
--
-- 'nfs', 'dataRepositoryAssociation_nfs' - The configuration for an NFS data repository linked to an Amazon File
-- Cache resource with a data repository association.
--
-- 'resourceARN', 'dataRepositoryAssociation_resourceARN' - Undocumented member.
--
-- 's3', 'dataRepositoryAssociation_s3' - The configuration for an Amazon S3 data repository linked to an Amazon
-- FSx for Lustre file system with a data repository association.
--
-- 'tags', 'dataRepositoryAssociation_tags' - Undocumented member.
newDataRepositoryAssociation ::
  DataRepositoryAssociation
newDataRepositoryAssociation :: DataRepositoryAssociation
newDataRepositoryAssociation =
  DataRepositoryAssociation'
    { $sel:associationId:DataRepositoryAssociation' :: Maybe Text
associationId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:batchImportMetaDataOnCreate:DataRepositoryAssociation' :: Maybe Bool
batchImportMetaDataOnCreate = forall a. Maybe a
Prelude.Nothing,
      $sel:creationTime:DataRepositoryAssociation' :: Maybe POSIX
creationTime = forall a. Maybe a
Prelude.Nothing,
      $sel:dataRepositoryPath:DataRepositoryAssociation' :: Maybe Text
dataRepositoryPath = forall a. Maybe a
Prelude.Nothing,
      $sel:dataRepositorySubdirectories:DataRepositoryAssociation' :: Maybe [Text]
dataRepositorySubdirectories = forall a. Maybe a
Prelude.Nothing,
      $sel:failureDetails:DataRepositoryAssociation' :: Maybe DataRepositoryFailureDetails
failureDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:fileCacheId:DataRepositoryAssociation' :: Maybe Text
fileCacheId = forall a. Maybe a
Prelude.Nothing,
      $sel:fileCachePath:DataRepositoryAssociation' :: Maybe Text
fileCachePath = forall a. Maybe a
Prelude.Nothing,
      $sel:fileSystemId:DataRepositoryAssociation' :: Maybe Text
fileSystemId = forall a. Maybe a
Prelude.Nothing,
      $sel:fileSystemPath:DataRepositoryAssociation' :: Maybe Text
fileSystemPath = forall a. Maybe a
Prelude.Nothing,
      $sel:importedFileChunkSize:DataRepositoryAssociation' :: Maybe Natural
importedFileChunkSize = forall a. Maybe a
Prelude.Nothing,
      $sel:lifecycle:DataRepositoryAssociation' :: Maybe DataRepositoryLifecycle
lifecycle = forall a. Maybe a
Prelude.Nothing,
      $sel:nfs:DataRepositoryAssociation' :: Maybe NFSDataRepositoryConfiguration
nfs = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceARN:DataRepositoryAssociation' :: Maybe Text
resourceARN = forall a. Maybe a
Prelude.Nothing,
      $sel:s3:DataRepositoryAssociation' :: Maybe S3DataRepositoryConfiguration
s3 = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:DataRepositoryAssociation' :: Maybe (NonEmpty Tag)
tags = forall a. Maybe a
Prelude.Nothing
    }

-- | The system-generated, unique ID of the data repository association.
dataRepositoryAssociation_associationId :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
dataRepositoryAssociation_associationId :: Lens' DataRepositoryAssociation (Maybe Text)
dataRepositoryAssociation_associationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Text
associationId :: Maybe Text
$sel:associationId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
associationId} -> Maybe Text
associationId) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Text
a -> DataRepositoryAssociation
s {$sel:associationId:DataRepositoryAssociation' :: Maybe Text
associationId = Maybe Text
a} :: DataRepositoryAssociation)

-- | A boolean flag indicating whether an import data repository task to
-- import metadata should run after the data repository association is
-- created. The task runs if this flag is set to @true@.
--
-- @BatchImportMetaDataOnCreate@ is not supported for data repositories
-- linked to an Amazon File Cache resource.
dataRepositoryAssociation_batchImportMetaDataOnCreate :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Bool)
dataRepositoryAssociation_batchImportMetaDataOnCreate :: Lens' DataRepositoryAssociation (Maybe Bool)
dataRepositoryAssociation_batchImportMetaDataOnCreate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Bool
batchImportMetaDataOnCreate :: Maybe Bool
$sel:batchImportMetaDataOnCreate:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Bool
batchImportMetaDataOnCreate} -> Maybe Bool
batchImportMetaDataOnCreate) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Bool
a -> DataRepositoryAssociation
s {$sel:batchImportMetaDataOnCreate:DataRepositoryAssociation' :: Maybe Bool
batchImportMetaDataOnCreate = Maybe Bool
a} :: DataRepositoryAssociation)

-- | Undocumented member.
dataRepositoryAssociation_creationTime :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.UTCTime)
dataRepositoryAssociation_creationTime :: Lens' DataRepositoryAssociation (Maybe UTCTime)
dataRepositoryAssociation_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe POSIX
a -> DataRepositoryAssociation
s {$sel:creationTime:DataRepositoryAssociation' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: DataRepositoryAssociation) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The path to the data repository that will be linked to the cache or file
-- system.
--
-- -   For Amazon File Cache, the path can be an NFS data repository that
--     will be linked to the cache. The path can be in one of two formats:
--
--     -   If you are not using the @DataRepositorySubdirectories@
--         parameter, the path is to an NFS Export directory (or one of its
--         subdirectories) in the format
--         @nsf:\/\/nfs-domain-name\/exportpath@. You can therefore link a
--         single NFS Export to a single data repository association.
--
--     -   If you are using the @DataRepositorySubdirectories@ parameter,
--         the path is the domain name of the NFS file system in the format
--         @nfs:\/\/filer-domain-name@, which indicates the root of the
--         subdirectories specified with the @DataRepositorySubdirectories@
--         parameter.
--
-- -   For Amazon File Cache, the path can be an S3 bucket or prefix in the
--     format @s3:\/\/myBucket\/myPrefix\/@.
--
-- -   For Amazon FSx for Lustre, the path can be an S3 bucket or prefix in
--     the format @s3:\/\/myBucket\/myPrefix\/@.
dataRepositoryAssociation_dataRepositoryPath :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
dataRepositoryAssociation_dataRepositoryPath :: Lens' DataRepositoryAssociation (Maybe Text)
dataRepositoryAssociation_dataRepositoryPath = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Text
dataRepositoryPath :: Maybe Text
$sel:dataRepositoryPath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
dataRepositoryPath} -> Maybe Text
dataRepositoryPath) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Text
a -> DataRepositoryAssociation
s {$sel:dataRepositoryPath:DataRepositoryAssociation' :: Maybe Text
dataRepositoryPath = Maybe Text
a} :: DataRepositoryAssociation)

-- | For Amazon File Cache, a list of NFS Exports that will be linked with an
-- NFS data repository association. All the subdirectories must be on a
-- single NFS file system. The Export paths are in the format
-- @\/exportpath1@. To use this parameter, you must configure
-- @DataRepositoryPath@ as the domain name of the NFS file system. The NFS
-- file system domain name in effect is the root of the subdirectories.
-- Note that @DataRepositorySubdirectories@ is not supported for S3 data
-- repositories.
dataRepositoryAssociation_dataRepositorySubdirectories :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe [Prelude.Text])
dataRepositoryAssociation_dataRepositorySubdirectories :: Lens' DataRepositoryAssociation (Maybe [Text])
dataRepositoryAssociation_dataRepositorySubdirectories = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe [Text]
dataRepositorySubdirectories :: Maybe [Text]
$sel:dataRepositorySubdirectories:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe [Text]
dataRepositorySubdirectories} -> Maybe [Text]
dataRepositorySubdirectories) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe [Text]
a -> DataRepositoryAssociation
s {$sel:dataRepositorySubdirectories:DataRepositoryAssociation' :: Maybe [Text]
dataRepositorySubdirectories = Maybe [Text]
a} :: DataRepositoryAssociation) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Undocumented member.
dataRepositoryAssociation_failureDetails :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe DataRepositoryFailureDetails)
dataRepositoryAssociation_failureDetails :: Lens'
  DataRepositoryAssociation (Maybe DataRepositoryFailureDetails)
dataRepositoryAssociation_failureDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe DataRepositoryFailureDetails
failureDetails :: Maybe DataRepositoryFailureDetails
$sel:failureDetails:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe DataRepositoryFailureDetails
failureDetails} -> Maybe DataRepositoryFailureDetails
failureDetails) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe DataRepositoryFailureDetails
a -> DataRepositoryAssociation
s {$sel:failureDetails:DataRepositoryAssociation' :: Maybe DataRepositoryFailureDetails
failureDetails = Maybe DataRepositoryFailureDetails
a} :: DataRepositoryAssociation)

-- | The globally unique ID of the Amazon File Cache resource.
dataRepositoryAssociation_fileCacheId :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
dataRepositoryAssociation_fileCacheId :: Lens' DataRepositoryAssociation (Maybe Text)
dataRepositoryAssociation_fileCacheId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Text
fileCacheId :: Maybe Text
$sel:fileCacheId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
fileCacheId} -> Maybe Text
fileCacheId) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Text
a -> DataRepositoryAssociation
s {$sel:fileCacheId:DataRepositoryAssociation' :: Maybe Text
fileCacheId = Maybe Text
a} :: DataRepositoryAssociation)

-- | A path on the Amazon File Cache that points to a high-level directory
-- (such as @\/ns1\/@) or subdirectory (such as @\/ns1\/subdir\/@) that
-- will be mapped 1-1 with @DataRepositoryPath@. The leading forward slash
-- in the path is required. Two data repository associations cannot have
-- overlapping cache paths. For example, if a data repository is associated
-- with cache path @\/ns1\/@, then you cannot link another data repository
-- with cache path @\/ns1\/ns2@.
--
-- This path specifies the directory in your cache where files will be
-- exported from. This cache directory can be linked to only one data
-- repository (S3 or NFS) and no other data repository can be linked to the
-- directory.
--
-- The cache path can only be set to root (\/) on an NFS DRA when
-- @DataRepositorySubdirectories@ is specified. If you specify root (\/) as
-- the cache path, you can create only one DRA on the cache.
--
-- The cache path cannot be set to root (\/) for an S3 DRA.
dataRepositoryAssociation_fileCachePath :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
dataRepositoryAssociation_fileCachePath :: Lens' DataRepositoryAssociation (Maybe Text)
dataRepositoryAssociation_fileCachePath = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Text
fileCachePath :: Maybe Text
$sel:fileCachePath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
fileCachePath} -> Maybe Text
fileCachePath) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Text
a -> DataRepositoryAssociation
s {$sel:fileCachePath:DataRepositoryAssociation' :: Maybe Text
fileCachePath = Maybe Text
a} :: DataRepositoryAssociation)

-- | Undocumented member.
dataRepositoryAssociation_fileSystemId :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
dataRepositoryAssociation_fileSystemId :: Lens' DataRepositoryAssociation (Maybe Text)
dataRepositoryAssociation_fileSystemId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Text
fileSystemId :: Maybe Text
$sel:fileSystemId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
fileSystemId} -> Maybe Text
fileSystemId) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Text
a -> DataRepositoryAssociation
s {$sel:fileSystemId:DataRepositoryAssociation' :: Maybe Text
fileSystemId = Maybe Text
a} :: DataRepositoryAssociation)

-- | A path on the Amazon FSx for Lustre file system that points to a
-- high-level directory (such as @\/ns1\/@) or subdirectory (such as
-- @\/ns1\/subdir\/@) that will be mapped 1-1 with @DataRepositoryPath@.
-- The leading forward slash in the name is required. Two data repository
-- associations cannot have overlapping file system paths. For example, if
-- a data repository is associated with file system path @\/ns1\/@, then
-- you cannot link another data repository with file system path
-- @\/ns1\/ns2@.
--
-- This path specifies where in your file system files will be exported
-- from or imported to. This file system directory can be linked to only
-- one Amazon S3 bucket, and no other S3 bucket can be linked to the
-- directory.
--
-- If you specify only a forward slash (@\/@) as the file system path, you
-- can link only one data repository to the file system. You can only
-- specify \"\/\" as the file system path for the first data repository
-- associated with a file system.
dataRepositoryAssociation_fileSystemPath :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
dataRepositoryAssociation_fileSystemPath :: Lens' DataRepositoryAssociation (Maybe Text)
dataRepositoryAssociation_fileSystemPath = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Text
fileSystemPath :: Maybe Text
$sel:fileSystemPath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
fileSystemPath} -> Maybe Text
fileSystemPath) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Text
a -> DataRepositoryAssociation
s {$sel:fileSystemPath:DataRepositoryAssociation' :: Maybe Text
fileSystemPath = Maybe Text
a} :: DataRepositoryAssociation)

-- | For files imported from a data repository, this value determines the
-- stripe count and maximum amount of data per file (in MiB) stored on a
-- single physical disk. The maximum number of disks that a single file can
-- be striped across is limited by the total number of disks that make up
-- the file system or cache.
--
-- The default chunk size is 1,024 MiB (1 GiB) and can go as high as
-- 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
dataRepositoryAssociation_importedFileChunkSize :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Natural)
dataRepositoryAssociation_importedFileChunkSize :: Lens' DataRepositoryAssociation (Maybe Natural)
dataRepositoryAssociation_importedFileChunkSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Natural
importedFileChunkSize :: Maybe Natural
$sel:importedFileChunkSize:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Natural
importedFileChunkSize} -> Maybe Natural
importedFileChunkSize) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Natural
a -> DataRepositoryAssociation
s {$sel:importedFileChunkSize:DataRepositoryAssociation' :: Maybe Natural
importedFileChunkSize = Maybe Natural
a} :: DataRepositoryAssociation)

-- | Describes the state of a data repository association. The lifecycle can
-- have the following values:
--
-- -   @CREATING@ - The data repository association between the file system
--     or cache and the data repository is being created. The data
--     repository is unavailable.
--
-- -   @AVAILABLE@ - The data repository association is available for use.
--
-- -   @MISCONFIGURED@ - The data repository association is misconfigured.
--     Until the configuration is corrected, automatic import and automatic
--     export will not work (only for Amazon FSx for Lustre).
--
-- -   @UPDATING@ - The data repository association is undergoing a
--     customer initiated update that might affect its availability.
--
-- -   @DELETING@ - The data repository association is undergoing a
--     customer initiated deletion.
--
-- -   @FAILED@ - The data repository association is in a terminal state
--     that cannot be recovered.
dataRepositoryAssociation_lifecycle :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe DataRepositoryLifecycle)
dataRepositoryAssociation_lifecycle :: Lens' DataRepositoryAssociation (Maybe DataRepositoryLifecycle)
dataRepositoryAssociation_lifecycle = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe DataRepositoryLifecycle
lifecycle :: Maybe DataRepositoryLifecycle
$sel:lifecycle:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe DataRepositoryLifecycle
lifecycle} -> Maybe DataRepositoryLifecycle
lifecycle) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe DataRepositoryLifecycle
a -> DataRepositoryAssociation
s {$sel:lifecycle:DataRepositoryAssociation' :: Maybe DataRepositoryLifecycle
lifecycle = Maybe DataRepositoryLifecycle
a} :: DataRepositoryAssociation)

-- | The configuration for an NFS data repository linked to an Amazon File
-- Cache resource with a data repository association.
dataRepositoryAssociation_nfs :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe NFSDataRepositoryConfiguration)
dataRepositoryAssociation_nfs :: Lens'
  DataRepositoryAssociation (Maybe NFSDataRepositoryConfiguration)
dataRepositoryAssociation_nfs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe NFSDataRepositoryConfiguration
nfs :: Maybe NFSDataRepositoryConfiguration
$sel:nfs:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe NFSDataRepositoryConfiguration
nfs} -> Maybe NFSDataRepositoryConfiguration
nfs) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe NFSDataRepositoryConfiguration
a -> DataRepositoryAssociation
s {$sel:nfs:DataRepositoryAssociation' :: Maybe NFSDataRepositoryConfiguration
nfs = Maybe NFSDataRepositoryConfiguration
a} :: DataRepositoryAssociation)

-- | Undocumented member.
dataRepositoryAssociation_resourceARN :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe Prelude.Text)
dataRepositoryAssociation_resourceARN :: Lens' DataRepositoryAssociation (Maybe Text)
dataRepositoryAssociation_resourceARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe Text
resourceARN :: Maybe Text
$sel:resourceARN:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
resourceARN} -> Maybe Text
resourceARN) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe Text
a -> DataRepositoryAssociation
s {$sel:resourceARN:DataRepositoryAssociation' :: Maybe Text
resourceARN = Maybe Text
a} :: DataRepositoryAssociation)

-- | The configuration for an Amazon S3 data repository linked to an Amazon
-- FSx for Lustre file system with a data repository association.
dataRepositoryAssociation_s3 :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe S3DataRepositoryConfiguration)
dataRepositoryAssociation_s3 :: Lens'
  DataRepositoryAssociation (Maybe S3DataRepositoryConfiguration)
dataRepositoryAssociation_s3 = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe S3DataRepositoryConfiguration
s3 :: Maybe S3DataRepositoryConfiguration
$sel:s3:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe S3DataRepositoryConfiguration
s3} -> Maybe S3DataRepositoryConfiguration
s3) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe S3DataRepositoryConfiguration
a -> DataRepositoryAssociation
s {$sel:s3:DataRepositoryAssociation' :: Maybe S3DataRepositoryConfiguration
s3 = Maybe S3DataRepositoryConfiguration
a} :: DataRepositoryAssociation)

-- | Undocumented member.
dataRepositoryAssociation_tags :: Lens.Lens' DataRepositoryAssociation (Prelude.Maybe (Prelude.NonEmpty Tag))
dataRepositoryAssociation_tags :: Lens' DataRepositoryAssociation (Maybe (NonEmpty Tag))
dataRepositoryAssociation_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataRepositoryAssociation' {Maybe (NonEmpty Tag)
tags :: Maybe (NonEmpty Tag)
$sel:tags:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe (NonEmpty Tag)
tags} -> Maybe (NonEmpty Tag)
tags) (\s :: DataRepositoryAssociation
s@DataRepositoryAssociation' {} Maybe (NonEmpty Tag)
a -> DataRepositoryAssociation
s {$sel:tags:DataRepositoryAssociation' :: Maybe (NonEmpty Tag)
tags = Maybe (NonEmpty Tag)
a} :: DataRepositoryAssociation) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON DataRepositoryAssociation where
  parseJSON :: Value -> Parser DataRepositoryAssociation
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DataRepositoryAssociation"
      ( \Object
x ->
          Maybe Text
-> Maybe Bool
-> Maybe POSIX
-> Maybe Text
-> Maybe [Text]
-> Maybe DataRepositoryFailureDetails
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Natural
-> Maybe DataRepositoryLifecycle
-> Maybe NFSDataRepositoryConfiguration
-> Maybe Text
-> Maybe S3DataRepositoryConfiguration
-> Maybe (NonEmpty Tag)
-> DataRepositoryAssociation
DataRepositoryAssociation'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AssociationId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"BatchImportMetaDataOnCreate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CreationTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DataRepositoryPath")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DataRepositorySubdirectories"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FailureDetails")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FileCacheId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FileCachePath")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FileSystemId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FileSystemPath")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ImportedFileChunkSize")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Lifecycle")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"NFS")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ResourceARN")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"S3")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Tags")
      )

instance Prelude.Hashable DataRepositoryAssociation where
  hashWithSalt :: Int -> DataRepositoryAssociation -> Int
hashWithSalt Int
_salt DataRepositoryAssociation' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe (NonEmpty Tag)
Maybe Text
Maybe POSIX
Maybe DataRepositoryFailureDetails
Maybe DataRepositoryLifecycle
Maybe NFSDataRepositoryConfiguration
Maybe S3DataRepositoryConfiguration
tags :: Maybe (NonEmpty Tag)
s3 :: Maybe S3DataRepositoryConfiguration
resourceARN :: Maybe Text
nfs :: Maybe NFSDataRepositoryConfiguration
lifecycle :: Maybe DataRepositoryLifecycle
importedFileChunkSize :: Maybe Natural
fileSystemPath :: Maybe Text
fileSystemId :: Maybe Text
fileCachePath :: Maybe Text
fileCacheId :: Maybe Text
failureDetails :: Maybe DataRepositoryFailureDetails
dataRepositorySubdirectories :: Maybe [Text]
dataRepositoryPath :: Maybe Text
creationTime :: Maybe POSIX
batchImportMetaDataOnCreate :: Maybe Bool
associationId :: Maybe Text
$sel:tags:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe (NonEmpty Tag)
$sel:s3:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe S3DataRepositoryConfiguration
$sel:resourceARN:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:nfs:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe NFSDataRepositoryConfiguration
$sel:lifecycle:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe DataRepositoryLifecycle
$sel:importedFileChunkSize:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Natural
$sel:fileSystemPath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:fileSystemId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:fileCachePath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:fileCacheId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:failureDetails:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe DataRepositoryFailureDetails
$sel:dataRepositorySubdirectories:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe [Text]
$sel:dataRepositoryPath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:creationTime:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe POSIX
$sel:batchImportMetaDataOnCreate:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Bool
$sel:associationId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
associationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
batchImportMetaDataOnCreate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dataRepositoryPath
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
dataRepositorySubdirectories
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataRepositoryFailureDetails
failureDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
fileCacheId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
fileCachePath
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
fileSystemId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
fileSystemPath
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
importedFileChunkSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataRepositoryLifecycle
lifecycle
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NFSDataRepositoryConfiguration
nfs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceARN
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe S3DataRepositoryConfiguration
s3
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Tag)
tags

instance Prelude.NFData DataRepositoryAssociation where
  rnf :: DataRepositoryAssociation -> ()
rnf DataRepositoryAssociation' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe (NonEmpty Tag)
Maybe Text
Maybe POSIX
Maybe DataRepositoryFailureDetails
Maybe DataRepositoryLifecycle
Maybe NFSDataRepositoryConfiguration
Maybe S3DataRepositoryConfiguration
tags :: Maybe (NonEmpty Tag)
s3 :: Maybe S3DataRepositoryConfiguration
resourceARN :: Maybe Text
nfs :: Maybe NFSDataRepositoryConfiguration
lifecycle :: Maybe DataRepositoryLifecycle
importedFileChunkSize :: Maybe Natural
fileSystemPath :: Maybe Text
fileSystemId :: Maybe Text
fileCachePath :: Maybe Text
fileCacheId :: Maybe Text
failureDetails :: Maybe DataRepositoryFailureDetails
dataRepositorySubdirectories :: Maybe [Text]
dataRepositoryPath :: Maybe Text
creationTime :: Maybe POSIX
batchImportMetaDataOnCreate :: Maybe Bool
associationId :: Maybe Text
$sel:tags:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe (NonEmpty Tag)
$sel:s3:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe S3DataRepositoryConfiguration
$sel:resourceARN:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:nfs:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe NFSDataRepositoryConfiguration
$sel:lifecycle:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe DataRepositoryLifecycle
$sel:importedFileChunkSize:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Natural
$sel:fileSystemPath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:fileSystemId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:fileCachePath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:fileCacheId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:failureDetails:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe DataRepositoryFailureDetails
$sel:dataRepositorySubdirectories:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe [Text]
$sel:dataRepositoryPath:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
$sel:creationTime:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe POSIX
$sel:batchImportMetaDataOnCreate:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Bool
$sel:associationId:DataRepositoryAssociation' :: DataRepositoryAssociation -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
associationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
batchImportMetaDataOnCreate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dataRepositoryPath
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
dataRepositorySubdirectories
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataRepositoryFailureDetails
failureDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
fileCacheId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
fileCachePath
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
fileSystemId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
fileSystemPath
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
importedFileChunkSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataRepositoryLifecycle
lifecycle
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NFSDataRepositoryConfiguration
nfs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceARN
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3DataRepositoryConfiguration
s3
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Tag)
tags