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

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

-- |
-- Module      : Amazonka.IoTSiteWise.DescribeStorageConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves information about the storage configuration for IoT SiteWise.
module Amazonka.IoTSiteWise.DescribeStorageConfiguration
  ( -- * Creating a Request
    DescribeStorageConfiguration (..),
    newDescribeStorageConfiguration,

    -- * Destructuring the Response
    DescribeStorageConfigurationResponse (..),
    newDescribeStorageConfigurationResponse,

    -- * Response Lenses
    describeStorageConfigurationResponse_disassociatedDataStorage,
    describeStorageConfigurationResponse_lastUpdateDate,
    describeStorageConfigurationResponse_multiLayerStorage,
    describeStorageConfigurationResponse_retentionPeriod,
    describeStorageConfigurationResponse_httpStatus,
    describeStorageConfigurationResponse_storageType,
    describeStorageConfigurationResponse_configurationStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoTSiteWise.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeStorageConfiguration' smart constructor.
data DescribeStorageConfiguration = DescribeStorageConfiguration'
  {
  }
  deriving (DescribeStorageConfiguration
-> DescribeStorageConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeStorageConfiguration
-> DescribeStorageConfiguration -> Bool
$c/= :: DescribeStorageConfiguration
-> DescribeStorageConfiguration -> Bool
== :: DescribeStorageConfiguration
-> DescribeStorageConfiguration -> Bool
$c== :: DescribeStorageConfiguration
-> DescribeStorageConfiguration -> Bool
Prelude.Eq, ReadPrec [DescribeStorageConfiguration]
ReadPrec DescribeStorageConfiguration
Int -> ReadS DescribeStorageConfiguration
ReadS [DescribeStorageConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeStorageConfiguration]
$creadListPrec :: ReadPrec [DescribeStorageConfiguration]
readPrec :: ReadPrec DescribeStorageConfiguration
$creadPrec :: ReadPrec DescribeStorageConfiguration
readList :: ReadS [DescribeStorageConfiguration]
$creadList :: ReadS [DescribeStorageConfiguration]
readsPrec :: Int -> ReadS DescribeStorageConfiguration
$creadsPrec :: Int -> ReadS DescribeStorageConfiguration
Prelude.Read, Int -> DescribeStorageConfiguration -> ShowS
[DescribeStorageConfiguration] -> ShowS
DescribeStorageConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeStorageConfiguration] -> ShowS
$cshowList :: [DescribeStorageConfiguration] -> ShowS
show :: DescribeStorageConfiguration -> String
$cshow :: DescribeStorageConfiguration -> String
showsPrec :: Int -> DescribeStorageConfiguration -> ShowS
$cshowsPrec :: Int -> DescribeStorageConfiguration -> ShowS
Prelude.Show, forall x.
Rep DescribeStorageConfiguration x -> DescribeStorageConfiguration
forall x.
DescribeStorageConfiguration -> Rep DescribeStorageConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeStorageConfiguration x -> DescribeStorageConfiguration
$cfrom :: forall x.
DescribeStorageConfiguration -> Rep DescribeStorageConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'DescribeStorageConfiguration' 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.
newDescribeStorageConfiguration ::
  DescribeStorageConfiguration
newDescribeStorageConfiguration :: DescribeStorageConfiguration
newDescribeStorageConfiguration =
  DescribeStorageConfiguration
DescribeStorageConfiguration'

instance Core.AWSRequest DescribeStorageConfiguration where
  type
    AWSResponse DescribeStorageConfiguration =
      DescribeStorageConfigurationResponse
  request :: (Service -> Service)
-> DescribeStorageConfiguration
-> Request DescribeStorageConfiguration
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeStorageConfiguration
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeStorageConfiguration)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe DisassociatedDataStorageState
-> Maybe POSIX
-> Maybe MultiLayerStorage
-> Maybe RetentionPeriod
-> Int
-> StorageType
-> ConfigurationStatus
-> DescribeStorageConfigurationResponse
DescribeStorageConfigurationResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"disassociatedDataStorage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"lastUpdateDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"multiLayerStorage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"retentionPeriod")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"storageType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"configurationStatus")
      )

instance
  Prelude.Hashable
    DescribeStorageConfiguration
  where
  hashWithSalt :: Int -> DescribeStorageConfiguration -> Int
hashWithSalt Int
_salt DescribeStorageConfiguration
_ =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ()

instance Prelude.NFData DescribeStorageConfiguration where
  rnf :: DescribeStorageConfiguration -> ()
rnf DescribeStorageConfiguration
_ = ()

instance Data.ToHeaders DescribeStorageConfiguration where
  toHeaders :: DescribeStorageConfiguration -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DescribeStorageConfiguration where
  toPath :: DescribeStorageConfiguration -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const ByteString
"/configuration/account/storage"

instance Data.ToQuery DescribeStorageConfiguration where
  toQuery :: DescribeStorageConfiguration -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeStorageConfigurationResponse' smart constructor.
data DescribeStorageConfigurationResponse = DescribeStorageConfigurationResponse'
  { -- | Contains the storage configuration for time series (data streams) that
    -- aren\'t associated with asset properties. The @disassociatedDataStorage@
    -- can be one of the following values:
    --
    -- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated
    --     with asset properties.
    --
    --     After the @disassociatedDataStorage@ is enabled, you can\'t disable
    --     it.
    --
    -- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)
    --     that aren\'t associated with asset properties.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>
    -- in the /IoT SiteWise User Guide/.
    DescribeStorageConfigurationResponse
-> Maybe DisassociatedDataStorageState
disassociatedDataStorage :: Prelude.Maybe DisassociatedDataStorageState,
    -- | The date the storage configuration was last updated, in Unix epoch time.
    DescribeStorageConfigurationResponse -> Maybe POSIX
lastUpdateDate :: Prelude.Maybe Data.POSIX,
    -- | Contains information about the storage destination.
    DescribeStorageConfigurationResponse -> Maybe MultiLayerStorage
multiLayerStorage :: Prelude.Maybe MultiLayerStorage,
    -- | How many days your data is kept in the hot tier. By default, your data
    -- is kept indefinitely in the hot tier.
    DescribeStorageConfigurationResponse -> Maybe RetentionPeriod
retentionPeriod :: Prelude.Maybe RetentionPeriod,
    -- | The response's http status code.
    DescribeStorageConfigurationResponse -> Int
httpStatus :: Prelude.Int,
    -- | The storage tier that you specified for your data. The @storageType@
    -- parameter can be one of the following values:
    --
    -- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the
    --     hot tier. The hot tier is a service-managed database.
    --
    -- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the
    --     cold tier and the hot tier. The cold tier is a customer-managed
    --     Amazon S3 bucket.
    DescribeStorageConfigurationResponse -> StorageType
storageType :: StorageType,
    DescribeStorageConfigurationResponse -> ConfigurationStatus
configurationStatus :: ConfigurationStatus
  }
  deriving (DescribeStorageConfigurationResponse
-> DescribeStorageConfigurationResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeStorageConfigurationResponse
-> DescribeStorageConfigurationResponse -> Bool
$c/= :: DescribeStorageConfigurationResponse
-> DescribeStorageConfigurationResponse -> Bool
== :: DescribeStorageConfigurationResponse
-> DescribeStorageConfigurationResponse -> Bool
$c== :: DescribeStorageConfigurationResponse
-> DescribeStorageConfigurationResponse -> Bool
Prelude.Eq, ReadPrec [DescribeStorageConfigurationResponse]
ReadPrec DescribeStorageConfigurationResponse
Int -> ReadS DescribeStorageConfigurationResponse
ReadS [DescribeStorageConfigurationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeStorageConfigurationResponse]
$creadListPrec :: ReadPrec [DescribeStorageConfigurationResponse]
readPrec :: ReadPrec DescribeStorageConfigurationResponse
$creadPrec :: ReadPrec DescribeStorageConfigurationResponse
readList :: ReadS [DescribeStorageConfigurationResponse]
$creadList :: ReadS [DescribeStorageConfigurationResponse]
readsPrec :: Int -> ReadS DescribeStorageConfigurationResponse
$creadsPrec :: Int -> ReadS DescribeStorageConfigurationResponse
Prelude.Read, Int -> DescribeStorageConfigurationResponse -> ShowS
[DescribeStorageConfigurationResponse] -> ShowS
DescribeStorageConfigurationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeStorageConfigurationResponse] -> ShowS
$cshowList :: [DescribeStorageConfigurationResponse] -> ShowS
show :: DescribeStorageConfigurationResponse -> String
$cshow :: DescribeStorageConfigurationResponse -> String
showsPrec :: Int -> DescribeStorageConfigurationResponse -> ShowS
$cshowsPrec :: Int -> DescribeStorageConfigurationResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeStorageConfigurationResponse x
-> DescribeStorageConfigurationResponse
forall x.
DescribeStorageConfigurationResponse
-> Rep DescribeStorageConfigurationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeStorageConfigurationResponse x
-> DescribeStorageConfigurationResponse
$cfrom :: forall x.
DescribeStorageConfigurationResponse
-> Rep DescribeStorageConfigurationResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeStorageConfigurationResponse' 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:
--
-- 'disassociatedDataStorage', 'describeStorageConfigurationResponse_disassociatedDataStorage' - Contains the storage configuration for time series (data streams) that
-- aren\'t associated with asset properties. The @disassociatedDataStorage@
-- can be one of the following values:
--
-- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated
--     with asset properties.
--
--     After the @disassociatedDataStorage@ is enabled, you can\'t disable
--     it.
--
-- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)
--     that aren\'t associated with asset properties.
--
-- For more information, see
-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>
-- in the /IoT SiteWise User Guide/.
--
-- 'lastUpdateDate', 'describeStorageConfigurationResponse_lastUpdateDate' - The date the storage configuration was last updated, in Unix epoch time.
--
-- 'multiLayerStorage', 'describeStorageConfigurationResponse_multiLayerStorage' - Contains information about the storage destination.
--
-- 'retentionPeriod', 'describeStorageConfigurationResponse_retentionPeriod' - How many days your data is kept in the hot tier. By default, your data
-- is kept indefinitely in the hot tier.
--
-- 'httpStatus', 'describeStorageConfigurationResponse_httpStatus' - The response's http status code.
--
-- 'storageType', 'describeStorageConfigurationResponse_storageType' - The storage tier that you specified for your data. The @storageType@
-- parameter can be one of the following values:
--
-- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the
--     hot tier. The hot tier is a service-managed database.
--
-- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the
--     cold tier and the hot tier. The cold tier is a customer-managed
--     Amazon S3 bucket.
--
-- 'configurationStatus', 'describeStorageConfigurationResponse_configurationStatus' - Undocumented member.
newDescribeStorageConfigurationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'storageType'
  StorageType ->
  -- | 'configurationStatus'
  ConfigurationStatus ->
  DescribeStorageConfigurationResponse
newDescribeStorageConfigurationResponse :: Int
-> StorageType
-> ConfigurationStatus
-> DescribeStorageConfigurationResponse
newDescribeStorageConfigurationResponse
  Int
pHttpStatus_
  StorageType
pStorageType_
  ConfigurationStatus
pConfigurationStatus_ =
    DescribeStorageConfigurationResponse'
      { $sel:disassociatedDataStorage:DescribeStorageConfigurationResponse' :: Maybe DisassociatedDataStorageState
disassociatedDataStorage =
          forall a. Maybe a
Prelude.Nothing,
        $sel:lastUpdateDate:DescribeStorageConfigurationResponse' :: Maybe POSIX
lastUpdateDate = forall a. Maybe a
Prelude.Nothing,
        $sel:multiLayerStorage:DescribeStorageConfigurationResponse' :: Maybe MultiLayerStorage
multiLayerStorage = forall a. Maybe a
Prelude.Nothing,
        $sel:retentionPeriod:DescribeStorageConfigurationResponse' :: Maybe RetentionPeriod
retentionPeriod = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeStorageConfigurationResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:storageType:DescribeStorageConfigurationResponse' :: StorageType
storageType = StorageType
pStorageType_,
        $sel:configurationStatus:DescribeStorageConfigurationResponse' :: ConfigurationStatus
configurationStatus =
          ConfigurationStatus
pConfigurationStatus_
      }

-- | Contains the storage configuration for time series (data streams) that
-- aren\'t associated with asset properties. The @disassociatedDataStorage@
-- can be one of the following values:
--
-- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated
--     with asset properties.
--
--     After the @disassociatedDataStorage@ is enabled, you can\'t disable
--     it.
--
-- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)
--     that aren\'t associated with asset properties.
--
-- For more information, see
-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>
-- in the /IoT SiteWise User Guide/.
describeStorageConfigurationResponse_disassociatedDataStorage :: Lens.Lens' DescribeStorageConfigurationResponse (Prelude.Maybe DisassociatedDataStorageState)
describeStorageConfigurationResponse_disassociatedDataStorage :: Lens'
  DescribeStorageConfigurationResponse
  (Maybe DisassociatedDataStorageState)
describeStorageConfigurationResponse_disassociatedDataStorage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeStorageConfigurationResponse' {Maybe DisassociatedDataStorageState
disassociatedDataStorage :: Maybe DisassociatedDataStorageState
$sel:disassociatedDataStorage:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse
-> Maybe DisassociatedDataStorageState
disassociatedDataStorage} -> Maybe DisassociatedDataStorageState
disassociatedDataStorage) (\s :: DescribeStorageConfigurationResponse
s@DescribeStorageConfigurationResponse' {} Maybe DisassociatedDataStorageState
a -> DescribeStorageConfigurationResponse
s {$sel:disassociatedDataStorage:DescribeStorageConfigurationResponse' :: Maybe DisassociatedDataStorageState
disassociatedDataStorage = Maybe DisassociatedDataStorageState
a} :: DescribeStorageConfigurationResponse)

-- | The date the storage configuration was last updated, in Unix epoch time.
describeStorageConfigurationResponse_lastUpdateDate :: Lens.Lens' DescribeStorageConfigurationResponse (Prelude.Maybe Prelude.UTCTime)
describeStorageConfigurationResponse_lastUpdateDate :: Lens' DescribeStorageConfigurationResponse (Maybe UTCTime)
describeStorageConfigurationResponse_lastUpdateDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeStorageConfigurationResponse' {Maybe POSIX
lastUpdateDate :: Maybe POSIX
$sel:lastUpdateDate:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> Maybe POSIX
lastUpdateDate} -> Maybe POSIX
lastUpdateDate) (\s :: DescribeStorageConfigurationResponse
s@DescribeStorageConfigurationResponse' {} Maybe POSIX
a -> DescribeStorageConfigurationResponse
s {$sel:lastUpdateDate:DescribeStorageConfigurationResponse' :: Maybe POSIX
lastUpdateDate = Maybe POSIX
a} :: DescribeStorageConfigurationResponse) 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

-- | Contains information about the storage destination.
describeStorageConfigurationResponse_multiLayerStorage :: Lens.Lens' DescribeStorageConfigurationResponse (Prelude.Maybe MultiLayerStorage)
describeStorageConfigurationResponse_multiLayerStorage :: Lens'
  DescribeStorageConfigurationResponse (Maybe MultiLayerStorage)
describeStorageConfigurationResponse_multiLayerStorage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeStorageConfigurationResponse' {Maybe MultiLayerStorage
multiLayerStorage :: Maybe MultiLayerStorage
$sel:multiLayerStorage:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> Maybe MultiLayerStorage
multiLayerStorage} -> Maybe MultiLayerStorage
multiLayerStorage) (\s :: DescribeStorageConfigurationResponse
s@DescribeStorageConfigurationResponse' {} Maybe MultiLayerStorage
a -> DescribeStorageConfigurationResponse
s {$sel:multiLayerStorage:DescribeStorageConfigurationResponse' :: Maybe MultiLayerStorage
multiLayerStorage = Maybe MultiLayerStorage
a} :: DescribeStorageConfigurationResponse)

-- | How many days your data is kept in the hot tier. By default, your data
-- is kept indefinitely in the hot tier.
describeStorageConfigurationResponse_retentionPeriod :: Lens.Lens' DescribeStorageConfigurationResponse (Prelude.Maybe RetentionPeriod)
describeStorageConfigurationResponse_retentionPeriod :: Lens' DescribeStorageConfigurationResponse (Maybe RetentionPeriod)
describeStorageConfigurationResponse_retentionPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeStorageConfigurationResponse' {Maybe RetentionPeriod
retentionPeriod :: Maybe RetentionPeriod
$sel:retentionPeriod:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> Maybe RetentionPeriod
retentionPeriod} -> Maybe RetentionPeriod
retentionPeriod) (\s :: DescribeStorageConfigurationResponse
s@DescribeStorageConfigurationResponse' {} Maybe RetentionPeriod
a -> DescribeStorageConfigurationResponse
s {$sel:retentionPeriod:DescribeStorageConfigurationResponse' :: Maybe RetentionPeriod
retentionPeriod = Maybe RetentionPeriod
a} :: DescribeStorageConfigurationResponse)

-- | The response's http status code.
describeStorageConfigurationResponse_httpStatus :: Lens.Lens' DescribeStorageConfigurationResponse Prelude.Int
describeStorageConfigurationResponse_httpStatus :: Lens' DescribeStorageConfigurationResponse Int
describeStorageConfigurationResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeStorageConfigurationResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeStorageConfigurationResponse
s@DescribeStorageConfigurationResponse' {} Int
a -> DescribeStorageConfigurationResponse
s {$sel:httpStatus:DescribeStorageConfigurationResponse' :: Int
httpStatus = Int
a} :: DescribeStorageConfigurationResponse)

-- | The storage tier that you specified for your data. The @storageType@
-- parameter can be one of the following values:
--
-- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the
--     hot tier. The hot tier is a service-managed database.
--
-- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the
--     cold tier and the hot tier. The cold tier is a customer-managed
--     Amazon S3 bucket.
describeStorageConfigurationResponse_storageType :: Lens.Lens' DescribeStorageConfigurationResponse StorageType
describeStorageConfigurationResponse_storageType :: Lens' DescribeStorageConfigurationResponse StorageType
describeStorageConfigurationResponse_storageType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeStorageConfigurationResponse' {StorageType
storageType :: StorageType
$sel:storageType:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> StorageType
storageType} -> StorageType
storageType) (\s :: DescribeStorageConfigurationResponse
s@DescribeStorageConfigurationResponse' {} StorageType
a -> DescribeStorageConfigurationResponse
s {$sel:storageType:DescribeStorageConfigurationResponse' :: StorageType
storageType = StorageType
a} :: DescribeStorageConfigurationResponse)

-- | Undocumented member.
describeStorageConfigurationResponse_configurationStatus :: Lens.Lens' DescribeStorageConfigurationResponse ConfigurationStatus
describeStorageConfigurationResponse_configurationStatus :: Lens' DescribeStorageConfigurationResponse ConfigurationStatus
describeStorageConfigurationResponse_configurationStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeStorageConfigurationResponse' {ConfigurationStatus
configurationStatus :: ConfigurationStatus
$sel:configurationStatus:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> ConfigurationStatus
configurationStatus} -> ConfigurationStatus
configurationStatus) (\s :: DescribeStorageConfigurationResponse
s@DescribeStorageConfigurationResponse' {} ConfigurationStatus
a -> DescribeStorageConfigurationResponse
s {$sel:configurationStatus:DescribeStorageConfigurationResponse' :: ConfigurationStatus
configurationStatus = ConfigurationStatus
a} :: DescribeStorageConfigurationResponse)

instance
  Prelude.NFData
    DescribeStorageConfigurationResponse
  where
  rnf :: DescribeStorageConfigurationResponse -> ()
rnf DescribeStorageConfigurationResponse' {Int
Maybe POSIX
Maybe DisassociatedDataStorageState
Maybe MultiLayerStorage
Maybe RetentionPeriod
ConfigurationStatus
StorageType
configurationStatus :: ConfigurationStatus
storageType :: StorageType
httpStatus :: Int
retentionPeriod :: Maybe RetentionPeriod
multiLayerStorage :: Maybe MultiLayerStorage
lastUpdateDate :: Maybe POSIX
disassociatedDataStorage :: Maybe DisassociatedDataStorageState
$sel:configurationStatus:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> ConfigurationStatus
$sel:storageType:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> StorageType
$sel:httpStatus:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> Int
$sel:retentionPeriod:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> Maybe RetentionPeriod
$sel:multiLayerStorage:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> Maybe MultiLayerStorage
$sel:lastUpdateDate:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse -> Maybe POSIX
$sel:disassociatedDataStorage:DescribeStorageConfigurationResponse' :: DescribeStorageConfigurationResponse
-> Maybe DisassociatedDataStorageState
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DisassociatedDataStorageState
disassociatedDataStorage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdateDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MultiLayerStorage
multiLayerStorage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RetentionPeriod
retentionPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf StorageType
storageType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ConfigurationStatus
configurationStatus