{-# 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.IoT.DescribeFleetMetric
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets information about the specified fleet metric.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions DescribeFleetMetric>
-- action.
module Amazonka.IoT.DescribeFleetMetric
  ( -- * Creating a Request
    DescribeFleetMetric (..),
    newDescribeFleetMetric,

    -- * Request Lenses
    describeFleetMetric_metricName,

    -- * Destructuring the Response
    DescribeFleetMetricResponse (..),
    newDescribeFleetMetricResponse,

    -- * Response Lenses
    describeFleetMetricResponse_aggregationField,
    describeFleetMetricResponse_aggregationType,
    describeFleetMetricResponse_creationDate,
    describeFleetMetricResponse_description,
    describeFleetMetricResponse_indexName,
    describeFleetMetricResponse_lastModifiedDate,
    describeFleetMetricResponse_metricArn,
    describeFleetMetricResponse_metricName,
    describeFleetMetricResponse_period,
    describeFleetMetricResponse_queryString,
    describeFleetMetricResponse_queryVersion,
    describeFleetMetricResponse_unit,
    describeFleetMetricResponse_version,
    describeFleetMetricResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeFleetMetric' smart constructor.
data DescribeFleetMetric = DescribeFleetMetric'
  { -- | The name of the fleet metric to describe.
    DescribeFleetMetric -> Text
metricName :: Prelude.Text
  }
  deriving (DescribeFleetMetric -> DescribeFleetMetric -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeFleetMetric -> DescribeFleetMetric -> Bool
$c/= :: DescribeFleetMetric -> DescribeFleetMetric -> Bool
== :: DescribeFleetMetric -> DescribeFleetMetric -> Bool
$c== :: DescribeFleetMetric -> DescribeFleetMetric -> Bool
Prelude.Eq, ReadPrec [DescribeFleetMetric]
ReadPrec DescribeFleetMetric
Int -> ReadS DescribeFleetMetric
ReadS [DescribeFleetMetric]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeFleetMetric]
$creadListPrec :: ReadPrec [DescribeFleetMetric]
readPrec :: ReadPrec DescribeFleetMetric
$creadPrec :: ReadPrec DescribeFleetMetric
readList :: ReadS [DescribeFleetMetric]
$creadList :: ReadS [DescribeFleetMetric]
readsPrec :: Int -> ReadS DescribeFleetMetric
$creadsPrec :: Int -> ReadS DescribeFleetMetric
Prelude.Read, Int -> DescribeFleetMetric -> ShowS
[DescribeFleetMetric] -> ShowS
DescribeFleetMetric -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeFleetMetric] -> ShowS
$cshowList :: [DescribeFleetMetric] -> ShowS
show :: DescribeFleetMetric -> String
$cshow :: DescribeFleetMetric -> String
showsPrec :: Int -> DescribeFleetMetric -> ShowS
$cshowsPrec :: Int -> DescribeFleetMetric -> ShowS
Prelude.Show, forall x. Rep DescribeFleetMetric x -> DescribeFleetMetric
forall x. DescribeFleetMetric -> Rep DescribeFleetMetric x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeFleetMetric x -> DescribeFleetMetric
$cfrom :: forall x. DescribeFleetMetric -> Rep DescribeFleetMetric x
Prelude.Generic)

-- |
-- Create a value of 'DescribeFleetMetric' 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:
--
-- 'metricName', 'describeFleetMetric_metricName' - The name of the fleet metric to describe.
newDescribeFleetMetric ::
  -- | 'metricName'
  Prelude.Text ->
  DescribeFleetMetric
newDescribeFleetMetric :: Text -> DescribeFleetMetric
newDescribeFleetMetric Text
pMetricName_ =
  DescribeFleetMetric' {$sel:metricName:DescribeFleetMetric' :: Text
metricName = Text
pMetricName_}

-- | The name of the fleet metric to describe.
describeFleetMetric_metricName :: Lens.Lens' DescribeFleetMetric Prelude.Text
describeFleetMetric_metricName :: Lens' DescribeFleetMetric Text
describeFleetMetric_metricName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetric' {Text
metricName :: Text
$sel:metricName:DescribeFleetMetric' :: DescribeFleetMetric -> Text
metricName} -> Text
metricName) (\s :: DescribeFleetMetric
s@DescribeFleetMetric' {} Text
a -> DescribeFleetMetric
s {$sel:metricName:DescribeFleetMetric' :: Text
metricName = Text
a} :: DescribeFleetMetric)

instance Core.AWSRequest DescribeFleetMetric where
  type
    AWSResponse DescribeFleetMetric =
      DescribeFleetMetricResponse
  request :: (Service -> Service)
-> DescribeFleetMetric -> Request DescribeFleetMetric
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 DescribeFleetMetric
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeFleetMetric)))
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 Text
-> Maybe AggregationType
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Natural
-> Maybe Text
-> Maybe Text
-> Maybe FleetMetricUnit
-> Maybe Integer
-> Int
-> DescribeFleetMetricResponse
DescribeFleetMetricResponse'
            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
"aggregationField")
            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
"aggregationType")
            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
"creationDate")
            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
"description")
            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
"indexName")
            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
"lastModifiedDate")
            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
"metricArn")
            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
"metricName")
            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
"period")
            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
"queryString")
            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
"queryVersion")
            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
"unit")
            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
"version")
            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))
      )

instance Prelude.Hashable DescribeFleetMetric where
  hashWithSalt :: Int -> DescribeFleetMetric -> Int
hashWithSalt Int
_salt DescribeFleetMetric' {Text
metricName :: Text
$sel:metricName:DescribeFleetMetric' :: DescribeFleetMetric -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
metricName

instance Prelude.NFData DescribeFleetMetric where
  rnf :: DescribeFleetMetric -> ()
rnf DescribeFleetMetric' {Text
metricName :: Text
$sel:metricName:DescribeFleetMetric' :: DescribeFleetMetric -> Text
..} = forall a. NFData a => a -> ()
Prelude.rnf Text
metricName

instance Data.ToHeaders DescribeFleetMetric where
  toHeaders :: DescribeFleetMetric -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DescribeFleetMetric where
  toPath :: DescribeFleetMetric -> ByteString
toPath DescribeFleetMetric' {Text
metricName :: Text
$sel:metricName:DescribeFleetMetric' :: DescribeFleetMetric -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/fleet-metric/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
metricName]

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

-- | /See:/ 'newDescribeFleetMetricResponse' smart constructor.
data DescribeFleetMetricResponse = DescribeFleetMetricResponse'
  { -- | The field to aggregate.
    DescribeFleetMetricResponse -> Maybe Text
aggregationField :: Prelude.Maybe Prelude.Text,
    -- | The type of the aggregation query.
    DescribeFleetMetricResponse -> Maybe AggregationType
aggregationType :: Prelude.Maybe AggregationType,
    -- | The date when the fleet metric is created.
    DescribeFleetMetricResponse -> Maybe POSIX
creationDate :: Prelude.Maybe Data.POSIX,
    -- | The fleet metric description.
    DescribeFleetMetricResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The name of the index to search.
    DescribeFleetMetricResponse -> Maybe Text
indexName :: Prelude.Maybe Prelude.Text,
    -- | The date when the fleet metric is last modified.
    DescribeFleetMetricResponse -> Maybe POSIX
lastModifiedDate :: Prelude.Maybe Data.POSIX,
    -- | The ARN of the fleet metric to describe.
    DescribeFleetMetricResponse -> Maybe Text
metricArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the fleet metric to describe.
    DescribeFleetMetricResponse -> Maybe Text
metricName :: Prelude.Maybe Prelude.Text,
    -- | The time in seconds between fleet metric emissions. Range [60(1 min),
    -- 86400(1 day)] and must be multiple of 60.
    DescribeFleetMetricResponse -> Maybe Natural
period :: Prelude.Maybe Prelude.Natural,
    -- | The search query string.
    DescribeFleetMetricResponse -> Maybe Text
queryString :: Prelude.Maybe Prelude.Text,
    -- | The query version.
    DescribeFleetMetricResponse -> Maybe Text
queryVersion :: Prelude.Maybe Prelude.Text,
    -- | Used to support unit transformation such as milliseconds to seconds. The
    -- unit must be supported by
    -- <https://docs.aws.amazon.com/https:/docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html CW metric>.
    DescribeFleetMetricResponse -> Maybe FleetMetricUnit
unit :: Prelude.Maybe FleetMetricUnit,
    -- | The version of the fleet metric.
    DescribeFleetMetricResponse -> Maybe Integer
version :: Prelude.Maybe Prelude.Integer,
    -- | The response's http status code.
    DescribeFleetMetricResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeFleetMetricResponse -> DescribeFleetMetricResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeFleetMetricResponse -> DescribeFleetMetricResponse -> Bool
$c/= :: DescribeFleetMetricResponse -> DescribeFleetMetricResponse -> Bool
== :: DescribeFleetMetricResponse -> DescribeFleetMetricResponse -> Bool
$c== :: DescribeFleetMetricResponse -> DescribeFleetMetricResponse -> Bool
Prelude.Eq, ReadPrec [DescribeFleetMetricResponse]
ReadPrec DescribeFleetMetricResponse
Int -> ReadS DescribeFleetMetricResponse
ReadS [DescribeFleetMetricResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeFleetMetricResponse]
$creadListPrec :: ReadPrec [DescribeFleetMetricResponse]
readPrec :: ReadPrec DescribeFleetMetricResponse
$creadPrec :: ReadPrec DescribeFleetMetricResponse
readList :: ReadS [DescribeFleetMetricResponse]
$creadList :: ReadS [DescribeFleetMetricResponse]
readsPrec :: Int -> ReadS DescribeFleetMetricResponse
$creadsPrec :: Int -> ReadS DescribeFleetMetricResponse
Prelude.Read, Int -> DescribeFleetMetricResponse -> ShowS
[DescribeFleetMetricResponse] -> ShowS
DescribeFleetMetricResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeFleetMetricResponse] -> ShowS
$cshowList :: [DescribeFleetMetricResponse] -> ShowS
show :: DescribeFleetMetricResponse -> String
$cshow :: DescribeFleetMetricResponse -> String
showsPrec :: Int -> DescribeFleetMetricResponse -> ShowS
$cshowsPrec :: Int -> DescribeFleetMetricResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeFleetMetricResponse x -> DescribeFleetMetricResponse
forall x.
DescribeFleetMetricResponse -> Rep DescribeFleetMetricResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeFleetMetricResponse x -> DescribeFleetMetricResponse
$cfrom :: forall x.
DescribeFleetMetricResponse -> Rep DescribeFleetMetricResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeFleetMetricResponse' 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:
--
-- 'aggregationField', 'describeFleetMetricResponse_aggregationField' - The field to aggregate.
--
-- 'aggregationType', 'describeFleetMetricResponse_aggregationType' - The type of the aggregation query.
--
-- 'creationDate', 'describeFleetMetricResponse_creationDate' - The date when the fleet metric is created.
--
-- 'description', 'describeFleetMetricResponse_description' - The fleet metric description.
--
-- 'indexName', 'describeFleetMetricResponse_indexName' - The name of the index to search.
--
-- 'lastModifiedDate', 'describeFleetMetricResponse_lastModifiedDate' - The date when the fleet metric is last modified.
--
-- 'metricArn', 'describeFleetMetricResponse_metricArn' - The ARN of the fleet metric to describe.
--
-- 'metricName', 'describeFleetMetricResponse_metricName' - The name of the fleet metric to describe.
--
-- 'period', 'describeFleetMetricResponse_period' - The time in seconds between fleet metric emissions. Range [60(1 min),
-- 86400(1 day)] and must be multiple of 60.
--
-- 'queryString', 'describeFleetMetricResponse_queryString' - The search query string.
--
-- 'queryVersion', 'describeFleetMetricResponse_queryVersion' - The query version.
--
-- 'unit', 'describeFleetMetricResponse_unit' - Used to support unit transformation such as milliseconds to seconds. The
-- unit must be supported by
-- <https://docs.aws.amazon.com/https:/docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html CW metric>.
--
-- 'version', 'describeFleetMetricResponse_version' - The version of the fleet metric.
--
-- 'httpStatus', 'describeFleetMetricResponse_httpStatus' - The response's http status code.
newDescribeFleetMetricResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeFleetMetricResponse
newDescribeFleetMetricResponse :: Int -> DescribeFleetMetricResponse
newDescribeFleetMetricResponse Int
pHttpStatus_ =
  DescribeFleetMetricResponse'
    { $sel:aggregationField:DescribeFleetMetricResponse' :: Maybe Text
aggregationField =
        forall a. Maybe a
Prelude.Nothing,
      $sel:aggregationType:DescribeFleetMetricResponse' :: Maybe AggregationType
aggregationType = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:DescribeFleetMetricResponse' :: Maybe POSIX
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:description:DescribeFleetMetricResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:indexName:DescribeFleetMetricResponse' :: Maybe Text
indexName = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:DescribeFleetMetricResponse' :: Maybe POSIX
lastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:metricArn:DescribeFleetMetricResponse' :: Maybe Text
metricArn = forall a. Maybe a
Prelude.Nothing,
      $sel:metricName:DescribeFleetMetricResponse' :: Maybe Text
metricName = forall a. Maybe a
Prelude.Nothing,
      $sel:period:DescribeFleetMetricResponse' :: Maybe Natural
period = forall a. Maybe a
Prelude.Nothing,
      $sel:queryString:DescribeFleetMetricResponse' :: Maybe Text
queryString = forall a. Maybe a
Prelude.Nothing,
      $sel:queryVersion:DescribeFleetMetricResponse' :: Maybe Text
queryVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:unit:DescribeFleetMetricResponse' :: Maybe FleetMetricUnit
unit = forall a. Maybe a
Prelude.Nothing,
      $sel:version:DescribeFleetMetricResponse' :: Maybe Integer
version = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeFleetMetricResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The field to aggregate.
describeFleetMetricResponse_aggregationField :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Text)
describeFleetMetricResponse_aggregationField :: Lens' DescribeFleetMetricResponse (Maybe Text)
describeFleetMetricResponse_aggregationField = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Text
aggregationField :: Maybe Text
$sel:aggregationField:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
aggregationField} -> Maybe Text
aggregationField) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Text
a -> DescribeFleetMetricResponse
s {$sel:aggregationField:DescribeFleetMetricResponse' :: Maybe Text
aggregationField = Maybe Text
a} :: DescribeFleetMetricResponse)

-- | The type of the aggregation query.
describeFleetMetricResponse_aggregationType :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe AggregationType)
describeFleetMetricResponse_aggregationType :: Lens' DescribeFleetMetricResponse (Maybe AggregationType)
describeFleetMetricResponse_aggregationType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe AggregationType
aggregationType :: Maybe AggregationType
$sel:aggregationType:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe AggregationType
aggregationType} -> Maybe AggregationType
aggregationType) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe AggregationType
a -> DescribeFleetMetricResponse
s {$sel:aggregationType:DescribeFleetMetricResponse' :: Maybe AggregationType
aggregationType = Maybe AggregationType
a} :: DescribeFleetMetricResponse)

-- | The date when the fleet metric is created.
describeFleetMetricResponse_creationDate :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.UTCTime)
describeFleetMetricResponse_creationDate :: Lens' DescribeFleetMetricResponse (Maybe UTCTime)
describeFleetMetricResponse_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe POSIX
a -> DescribeFleetMetricResponse
s {$sel:creationDate:DescribeFleetMetricResponse' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: DescribeFleetMetricResponse) 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 fleet metric description.
describeFleetMetricResponse_description :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Text)
describeFleetMetricResponse_description :: Lens' DescribeFleetMetricResponse (Maybe Text)
describeFleetMetricResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Text
description :: Maybe Text
$sel:description:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Text
a -> DescribeFleetMetricResponse
s {$sel:description:DescribeFleetMetricResponse' :: Maybe Text
description = Maybe Text
a} :: DescribeFleetMetricResponse)

-- | The name of the index to search.
describeFleetMetricResponse_indexName :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Text)
describeFleetMetricResponse_indexName :: Lens' DescribeFleetMetricResponse (Maybe Text)
describeFleetMetricResponse_indexName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Text
indexName :: Maybe Text
$sel:indexName:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
indexName} -> Maybe Text
indexName) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Text
a -> DescribeFleetMetricResponse
s {$sel:indexName:DescribeFleetMetricResponse' :: Maybe Text
indexName = Maybe Text
a} :: DescribeFleetMetricResponse)

-- | The date when the fleet metric is last modified.
describeFleetMetricResponse_lastModifiedDate :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.UTCTime)
describeFleetMetricResponse_lastModifiedDate :: Lens' DescribeFleetMetricResponse (Maybe UTCTime)
describeFleetMetricResponse_lastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe POSIX
lastModifiedDate :: Maybe POSIX
$sel:lastModifiedDate:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe POSIX
lastModifiedDate} -> Maybe POSIX
lastModifiedDate) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe POSIX
a -> DescribeFleetMetricResponse
s {$sel:lastModifiedDate:DescribeFleetMetricResponse' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
a} :: DescribeFleetMetricResponse) 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 ARN of the fleet metric to describe.
describeFleetMetricResponse_metricArn :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Text)
describeFleetMetricResponse_metricArn :: Lens' DescribeFleetMetricResponse (Maybe Text)
describeFleetMetricResponse_metricArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Text
metricArn :: Maybe Text
$sel:metricArn:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
metricArn} -> Maybe Text
metricArn) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Text
a -> DescribeFleetMetricResponse
s {$sel:metricArn:DescribeFleetMetricResponse' :: Maybe Text
metricArn = Maybe Text
a} :: DescribeFleetMetricResponse)

-- | The name of the fleet metric to describe.
describeFleetMetricResponse_metricName :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Text)
describeFleetMetricResponse_metricName :: Lens' DescribeFleetMetricResponse (Maybe Text)
describeFleetMetricResponse_metricName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Text
metricName :: Maybe Text
$sel:metricName:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
metricName} -> Maybe Text
metricName) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Text
a -> DescribeFleetMetricResponse
s {$sel:metricName:DescribeFleetMetricResponse' :: Maybe Text
metricName = Maybe Text
a} :: DescribeFleetMetricResponse)

-- | The time in seconds between fleet metric emissions. Range [60(1 min),
-- 86400(1 day)] and must be multiple of 60.
describeFleetMetricResponse_period :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Natural)
describeFleetMetricResponse_period :: Lens' DescribeFleetMetricResponse (Maybe Natural)
describeFleetMetricResponse_period = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Natural
period :: Maybe Natural
$sel:period:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Natural
period} -> Maybe Natural
period) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Natural
a -> DescribeFleetMetricResponse
s {$sel:period:DescribeFleetMetricResponse' :: Maybe Natural
period = Maybe Natural
a} :: DescribeFleetMetricResponse)

-- | The search query string.
describeFleetMetricResponse_queryString :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Text)
describeFleetMetricResponse_queryString :: Lens' DescribeFleetMetricResponse (Maybe Text)
describeFleetMetricResponse_queryString = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Text
queryString :: Maybe Text
$sel:queryString:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
queryString} -> Maybe Text
queryString) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Text
a -> DescribeFleetMetricResponse
s {$sel:queryString:DescribeFleetMetricResponse' :: Maybe Text
queryString = Maybe Text
a} :: DescribeFleetMetricResponse)

-- | The query version.
describeFleetMetricResponse_queryVersion :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Text)
describeFleetMetricResponse_queryVersion :: Lens' DescribeFleetMetricResponse (Maybe Text)
describeFleetMetricResponse_queryVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Text
queryVersion :: Maybe Text
$sel:queryVersion:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
queryVersion} -> Maybe Text
queryVersion) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Text
a -> DescribeFleetMetricResponse
s {$sel:queryVersion:DescribeFleetMetricResponse' :: Maybe Text
queryVersion = Maybe Text
a} :: DescribeFleetMetricResponse)

-- | Used to support unit transformation such as milliseconds to seconds. The
-- unit must be supported by
-- <https://docs.aws.amazon.com/https:/docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html CW metric>.
describeFleetMetricResponse_unit :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe FleetMetricUnit)
describeFleetMetricResponse_unit :: Lens' DescribeFleetMetricResponse (Maybe FleetMetricUnit)
describeFleetMetricResponse_unit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe FleetMetricUnit
unit :: Maybe FleetMetricUnit
$sel:unit:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe FleetMetricUnit
unit} -> Maybe FleetMetricUnit
unit) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe FleetMetricUnit
a -> DescribeFleetMetricResponse
s {$sel:unit:DescribeFleetMetricResponse' :: Maybe FleetMetricUnit
unit = Maybe FleetMetricUnit
a} :: DescribeFleetMetricResponse)

-- | The version of the fleet metric.
describeFleetMetricResponse_version :: Lens.Lens' DescribeFleetMetricResponse (Prelude.Maybe Prelude.Integer)
describeFleetMetricResponse_version :: Lens' DescribeFleetMetricResponse (Maybe Integer)
describeFleetMetricResponse_version = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFleetMetricResponse' {Maybe Integer
version :: Maybe Integer
$sel:version:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Integer
version} -> Maybe Integer
version) (\s :: DescribeFleetMetricResponse
s@DescribeFleetMetricResponse' {} Maybe Integer
a -> DescribeFleetMetricResponse
s {$sel:version:DescribeFleetMetricResponse' :: Maybe Integer
version = Maybe Integer
a} :: DescribeFleetMetricResponse)

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

instance Prelude.NFData DescribeFleetMetricResponse where
  rnf :: DescribeFleetMetricResponse -> ()
rnf DescribeFleetMetricResponse' {Int
Maybe Integer
Maybe Natural
Maybe Text
Maybe POSIX
Maybe AggregationType
Maybe FleetMetricUnit
httpStatus :: Int
version :: Maybe Integer
unit :: Maybe FleetMetricUnit
queryVersion :: Maybe Text
queryString :: Maybe Text
period :: Maybe Natural
metricName :: Maybe Text
metricArn :: Maybe Text
lastModifiedDate :: Maybe POSIX
indexName :: Maybe Text
description :: Maybe Text
creationDate :: Maybe POSIX
aggregationType :: Maybe AggregationType
aggregationField :: Maybe Text
$sel:httpStatus:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Int
$sel:version:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Integer
$sel:unit:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe FleetMetricUnit
$sel:queryVersion:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
$sel:queryString:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
$sel:period:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Natural
$sel:metricName:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
$sel:metricArn:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
$sel:lastModifiedDate:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe POSIX
$sel:indexName:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
$sel:description:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
$sel:creationDate:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe POSIX
$sel:aggregationType:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe AggregationType
$sel:aggregationField:DescribeFleetMetricResponse' :: DescribeFleetMetricResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
aggregationField
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AggregationType
aggregationType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
indexName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastModifiedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
metricArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
metricName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
period
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
queryString
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
queryVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FleetMetricUnit
unit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
version
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus