{-# 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.StorageGateway.DescribeGatewayInformation
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns metadata about a gateway such as its name, network interfaces,
-- configured time zone, and the state (whether the gateway is running or
-- not). To specify which gateway to describe, use the Amazon Resource Name
-- (ARN) of the gateway in your request.
module Amazonka.StorageGateway.DescribeGatewayInformation
  ( -- * Creating a Request
    DescribeGatewayInformation (..),
    newDescribeGatewayInformation,

    -- * Request Lenses
    describeGatewayInformation_gatewayARN,

    -- * Destructuring the Response
    DescribeGatewayInformationResponse (..),
    newDescribeGatewayInformationResponse,

    -- * Response Lenses
    describeGatewayInformationResponse_gatewayState,
    describeGatewayInformationResponse_ec2InstanceRegion,
    describeGatewayInformationResponse_gatewayARN,
    describeGatewayInformationResponse_gatewayNetworkInterfaces,
    describeGatewayInformationResponse_ec2InstanceId,
    describeGatewayInformationResponse_nextUpdateAvailabilityDate,
    describeGatewayInformationResponse_endpointType,
    describeGatewayInformationResponse_deprecationDate,
    describeGatewayInformationResponse_lastSoftwareUpdate,
    describeGatewayInformationResponse_gatewayCapacity,
    describeGatewayInformationResponse_supportedGatewayCapacities,
    describeGatewayInformationResponse_gatewayName,
    describeGatewayInformationResponse_gatewayId,
    describeGatewayInformationResponse_hostEnvironment,
    describeGatewayInformationResponse_gatewayType,
    describeGatewayInformationResponse_gatewayTimezone,
    describeGatewayInformationResponse_softwareUpdatesEndDate,
    describeGatewayInformationResponse_cloudWatchLogGroupARN,
    describeGatewayInformationResponse_vPCEndpoint,
    describeGatewayInformationResponse_tags,
    describeGatewayInformationResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.StorageGateway.Types

-- | A JSON object containing the ID of the gateway.
--
-- /See:/ 'newDescribeGatewayInformation' smart constructor.
data DescribeGatewayInformation = DescribeGatewayInformation'
  { DescribeGatewayInformation -> Text
gatewayARN :: Prelude.Text
  }
  deriving (DescribeGatewayInformation -> DescribeGatewayInformation -> Bool
(DescribeGatewayInformation -> DescribeGatewayInformation -> Bool)
-> (DescribeGatewayInformation
    -> DescribeGatewayInformation -> Bool)
-> Eq DescribeGatewayInformation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeGatewayInformation -> DescribeGatewayInformation -> Bool
$c/= :: DescribeGatewayInformation -> DescribeGatewayInformation -> Bool
== :: DescribeGatewayInformation -> DescribeGatewayInformation -> Bool
$c== :: DescribeGatewayInformation -> DescribeGatewayInformation -> Bool
Prelude.Eq, ReadPrec [DescribeGatewayInformation]
ReadPrec DescribeGatewayInformation
Int -> ReadS DescribeGatewayInformation
ReadS [DescribeGatewayInformation]
(Int -> ReadS DescribeGatewayInformation)
-> ReadS [DescribeGatewayInformation]
-> ReadPrec DescribeGatewayInformation
-> ReadPrec [DescribeGatewayInformation]
-> Read DescribeGatewayInformation
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeGatewayInformation]
$creadListPrec :: ReadPrec [DescribeGatewayInformation]
readPrec :: ReadPrec DescribeGatewayInformation
$creadPrec :: ReadPrec DescribeGatewayInformation
readList :: ReadS [DescribeGatewayInformation]
$creadList :: ReadS [DescribeGatewayInformation]
readsPrec :: Int -> ReadS DescribeGatewayInformation
$creadsPrec :: Int -> ReadS DescribeGatewayInformation
Prelude.Read, Int -> DescribeGatewayInformation -> ShowS
[DescribeGatewayInformation] -> ShowS
DescribeGatewayInformation -> String
(Int -> DescribeGatewayInformation -> ShowS)
-> (DescribeGatewayInformation -> String)
-> ([DescribeGatewayInformation] -> ShowS)
-> Show DescribeGatewayInformation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeGatewayInformation] -> ShowS
$cshowList :: [DescribeGatewayInformation] -> ShowS
show :: DescribeGatewayInformation -> String
$cshow :: DescribeGatewayInformation -> String
showsPrec :: Int -> DescribeGatewayInformation -> ShowS
$cshowsPrec :: Int -> DescribeGatewayInformation -> ShowS
Prelude.Show, (forall x.
 DescribeGatewayInformation -> Rep DescribeGatewayInformation x)
-> (forall x.
    Rep DescribeGatewayInformation x -> DescribeGatewayInformation)
-> Generic DescribeGatewayInformation
forall x.
Rep DescribeGatewayInformation x -> DescribeGatewayInformation
forall x.
DescribeGatewayInformation -> Rep DescribeGatewayInformation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeGatewayInformation x -> DescribeGatewayInformation
$cfrom :: forall x.
DescribeGatewayInformation -> Rep DescribeGatewayInformation x
Prelude.Generic)

-- |
-- Create a value of 'DescribeGatewayInformation' 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:
--
-- 'gatewayARN', 'describeGatewayInformation_gatewayARN' - Undocumented member.
newDescribeGatewayInformation ::
  -- | 'gatewayARN'
  Prelude.Text ->
  DescribeGatewayInformation
newDescribeGatewayInformation :: Text -> DescribeGatewayInformation
newDescribeGatewayInformation Text
pGatewayARN_ =
  DescribeGatewayInformation' :: Text -> DescribeGatewayInformation
DescribeGatewayInformation'
    { $sel:gatewayARN:DescribeGatewayInformation' :: Text
gatewayARN =
        Text
pGatewayARN_
    }

-- | Undocumented member.
describeGatewayInformation_gatewayARN :: Lens.Lens' DescribeGatewayInformation Prelude.Text
describeGatewayInformation_gatewayARN :: (Text -> f Text)
-> DescribeGatewayInformation -> f DescribeGatewayInformation
describeGatewayInformation_gatewayARN = (DescribeGatewayInformation -> Text)
-> (DescribeGatewayInformation
    -> Text -> DescribeGatewayInformation)
-> Lens
     DescribeGatewayInformation DescribeGatewayInformation Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformation' {Text
gatewayARN :: Text
$sel:gatewayARN:DescribeGatewayInformation' :: DescribeGatewayInformation -> Text
gatewayARN} -> Text
gatewayARN) (\s :: DescribeGatewayInformation
s@DescribeGatewayInformation' {} Text
a -> DescribeGatewayInformation
s {$sel:gatewayARN:DescribeGatewayInformation' :: Text
gatewayARN = Text
a} :: DescribeGatewayInformation)

instance Core.AWSRequest DescribeGatewayInformation where
  type
    AWSResponse DescribeGatewayInformation =
      DescribeGatewayInformationResponse
  request :: DescribeGatewayInformation -> Request DescribeGatewayInformation
request = Service
-> DescribeGatewayInformation -> Request DescribeGatewayInformation
forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON Service
defaultService
  response :: Logger
-> Service
-> Proxy DescribeGatewayInformation
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeGatewayInformation)))
response =
    (Int
 -> ResponseHeaders
 -> Object
 -> Either String (AWSResponse DescribeGatewayInformation))
-> Logger
-> Service
-> Proxy DescribeGatewayInformation
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeGatewayInformation)))
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [NetworkInterface]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe GatewayCapacity
-> Maybe [GatewayCapacity]
-> Maybe Text
-> Maybe Text
-> Maybe HostEnvironment
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Tag]
-> Int
-> DescribeGatewayInformationResponse
DescribeGatewayInformationResponse'
            (Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [NetworkInterface]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe GatewayCapacity
 -> Maybe [GatewayCapacity]
 -> Maybe Text
 -> Maybe Text
 -> Maybe HostEnvironment
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Tag]
 -> Int
 -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe [NetworkInterface]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"GatewayState")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe [NetworkInterface]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe [NetworkInterface]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"Ec2InstanceRegion")
            Either
  String
  (Maybe Text
   -> Maybe [NetworkInterface]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [NetworkInterface]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"GatewayARN")
            Either
  String
  (Maybe [NetworkInterface]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe [NetworkInterface])
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Either String (Maybe (Maybe [NetworkInterface]))
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"GatewayNetworkInterfaces"
                            Either String (Maybe (Maybe [NetworkInterface]))
-> Maybe [NetworkInterface]
-> Either String (Maybe [NetworkInterface])
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ Maybe [NetworkInterface]
forall a. Monoid a => a
Prelude.mempty
                        )
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"Ec2InstanceId")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"NextUpdateAvailabilityDate")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"EndpointType")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"DeprecationDate")
            Either
  String
  (Maybe Text
   -> Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe GatewayCapacity
      -> Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"LastSoftwareUpdate")
            Either
  String
  (Maybe GatewayCapacity
   -> Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe GatewayCapacity)
-> Either
     String
     (Maybe [GatewayCapacity]
      -> Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe GatewayCapacity)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"GatewayCapacity")
            Either
  String
  (Maybe [GatewayCapacity]
   -> Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe [GatewayCapacity])
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Either String (Maybe (Maybe [GatewayCapacity]))
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"SupportedGatewayCapacities"
                            Either String (Maybe (Maybe [GatewayCapacity]))
-> Maybe [GatewayCapacity]
-> Either String (Maybe [GatewayCapacity])
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ Maybe [GatewayCapacity]
forall a. Monoid a => a
Prelude.mempty
                        )
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"GatewayName")
            Either
  String
  (Maybe Text
   -> Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe HostEnvironment
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"GatewayId")
            Either
  String
  (Maybe HostEnvironment
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe HostEnvironment)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe HostEnvironment)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"HostEnvironment")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"GatewayType")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"GatewayTimezone")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe [Tag]
      -> Int
      -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"SoftwareUpdatesEndDate")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe [Tag]
   -> Int
   -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe [Tag] -> Int -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"CloudWatchLogGroupARN")
            Either
  String
  (Maybe Text
   -> Maybe [Tag] -> Int -> DescribeGatewayInformationResponse)
-> Either String (Maybe Text)
-> Either
     String (Maybe [Tag] -> Int -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"VPCEndpoint")
            Either
  String (Maybe [Tag] -> Int -> DescribeGatewayInformationResponse)
-> Either String (Maybe [Tag])
-> Either String (Int -> DescribeGatewayInformationResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe (Maybe [Tag]))
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"Tags" Either String (Maybe (Maybe [Tag]))
-> Maybe [Tag] -> Either String (Maybe [Tag])
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ Maybe [Tag]
forall a. Monoid a => a
Prelude.mempty)
            Either String (Int -> DescribeGatewayInformationResponse)
-> Either String Int
-> Either String DescribeGatewayInformationResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeGatewayInformation

instance Prelude.NFData DescribeGatewayInformation

instance Core.ToHeaders DescribeGatewayInformation where
  toHeaders :: DescribeGatewayInformation -> ResponseHeaders
toHeaders =
    ResponseHeaders -> DescribeGatewayInformation -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const
      ( [ResponseHeaders] -> ResponseHeaders
forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              HeaderName -> ByteString -> ResponseHeaders
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Core.=# ( ByteString
"StorageGateway_20130630.DescribeGatewayInformation" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              HeaderName -> ByteString -> ResponseHeaders
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Core.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Core.ToJSON DescribeGatewayInformation where
  toJSON :: DescribeGatewayInformation -> Value
toJSON DescribeGatewayInformation' {Text
gatewayARN :: Text
$sel:gatewayARN:DescribeGatewayInformation' :: DescribeGatewayInformation -> Text
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"GatewayARN" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= Text
gatewayARN)]
      )

instance Core.ToPath DescribeGatewayInformation where
  toPath :: DescribeGatewayInformation -> ByteString
toPath = ByteString -> DescribeGatewayInformation -> ByteString
forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | A JSON object containing the following fields:
--
-- /See:/ 'newDescribeGatewayInformationResponse' smart constructor.
data DescribeGatewayInformationResponse = DescribeGatewayInformationResponse'
  { -- | A value that indicates the operating state of the gateway.
    DescribeGatewayInformationResponse -> Maybe Text
gatewayState :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services Region where the Amazon EC2 instance is located.
    DescribeGatewayInformationResponse -> Maybe Text
ec2InstanceRegion :: Prelude.Maybe Prelude.Text,
    DescribeGatewayInformationResponse -> Maybe Text
gatewayARN :: Prelude.Maybe Prelude.Text,
    -- | A NetworkInterface array that contains descriptions of the gateway
    -- network interfaces.
    DescribeGatewayInformationResponse -> Maybe [NetworkInterface]
gatewayNetworkInterfaces :: Prelude.Maybe [NetworkInterface],
    -- | The ID of the Amazon EC2 instance that was used to launch the gateway.
    DescribeGatewayInformationResponse -> Maybe Text
ec2InstanceId :: Prelude.Maybe Prelude.Text,
    -- | The date on which an update to the gateway is available. This date is in
    -- the time zone of the gateway. If the gateway is not available for an
    -- update this field is not returned in the response.
    DescribeGatewayInformationResponse -> Maybe Text
nextUpdateAvailabilityDate :: Prelude.Maybe Prelude.Text,
    -- | The type of endpoint for your gateway.
    --
    -- Valid Values: @STANDARD@ | @FIPS@
    DescribeGatewayInformationResponse -> Maybe Text
endpointType :: Prelude.Maybe Prelude.Text,
    -- | Date after which this gateway will not receive software updates for new
    -- features and bug fixes.
    DescribeGatewayInformationResponse -> Maybe Text
deprecationDate :: Prelude.Maybe Prelude.Text,
    -- | The date on which the last software update was applied to the gateway.
    -- If the gateway has never been updated, this field does not return a
    -- value in the response.
    DescribeGatewayInformationResponse -> Maybe Text
lastSoftwareUpdate :: Prelude.Maybe Prelude.Text,
    -- | Specifies the size of the gateway\'s metadata cache.
    DescribeGatewayInformationResponse -> Maybe GatewayCapacity
gatewayCapacity :: Prelude.Maybe GatewayCapacity,
    -- | A list of the metadata cache sizes that the gateway can support based on
    -- its current hardware specifications.
    DescribeGatewayInformationResponse -> Maybe [GatewayCapacity]
supportedGatewayCapacities :: Prelude.Maybe [GatewayCapacity],
    -- | The name you configured for your gateway.
    DescribeGatewayInformationResponse -> Maybe Text
gatewayName :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier assigned to your gateway during activation. This
    -- ID becomes part of the gateway Amazon Resource Name (ARN), which you use
    -- as input for other operations.
    DescribeGatewayInformationResponse -> Maybe Text
gatewayId :: Prelude.Maybe Prelude.Text,
    -- | The type of hypervisor environment used by the host.
    DescribeGatewayInformationResponse -> Maybe HostEnvironment
hostEnvironment :: Prelude.Maybe HostEnvironment,
    -- | The type of the gateway.
    DescribeGatewayInformationResponse -> Maybe Text
gatewayType :: Prelude.Maybe Prelude.Text,
    -- | A value that indicates the time zone configured for the gateway.
    DescribeGatewayInformationResponse -> Maybe Text
gatewayTimezone :: Prelude.Maybe Prelude.Text,
    -- | Date after which this gateway will not receive software updates for new
    -- features.
    DescribeGatewayInformationResponse -> Maybe Text
softwareUpdatesEndDate :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the Amazon CloudWatch log group that
    -- is used to monitor events in the gateway.
    DescribeGatewayInformationResponse -> Maybe Text
cloudWatchLogGroupARN :: Prelude.Maybe Prelude.Text,
    -- | The configuration settings for the virtual private cloud (VPC) endpoint
    -- for your gateway.
    DescribeGatewayInformationResponse -> Maybe Text
vPCEndpoint :: Prelude.Maybe Prelude.Text,
    -- | A list of up to 50 tags assigned to the gateway, sorted alphabetically
    -- by key name. Each tag is a key-value pair. For a gateway with more than
    -- 10 tags assigned, you can view all tags using the @ListTagsForResource@
    -- API operation.
    DescribeGatewayInformationResponse -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The response's http status code.
    DescribeGatewayInformationResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeGatewayInformationResponse
-> DescribeGatewayInformationResponse -> Bool
(DescribeGatewayInformationResponse
 -> DescribeGatewayInformationResponse -> Bool)
-> (DescribeGatewayInformationResponse
    -> DescribeGatewayInformationResponse -> Bool)
-> Eq DescribeGatewayInformationResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeGatewayInformationResponse
-> DescribeGatewayInformationResponse -> Bool
$c/= :: DescribeGatewayInformationResponse
-> DescribeGatewayInformationResponse -> Bool
== :: DescribeGatewayInformationResponse
-> DescribeGatewayInformationResponse -> Bool
$c== :: DescribeGatewayInformationResponse
-> DescribeGatewayInformationResponse -> Bool
Prelude.Eq, ReadPrec [DescribeGatewayInformationResponse]
ReadPrec DescribeGatewayInformationResponse
Int -> ReadS DescribeGatewayInformationResponse
ReadS [DescribeGatewayInformationResponse]
(Int -> ReadS DescribeGatewayInformationResponse)
-> ReadS [DescribeGatewayInformationResponse]
-> ReadPrec DescribeGatewayInformationResponse
-> ReadPrec [DescribeGatewayInformationResponse]
-> Read DescribeGatewayInformationResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeGatewayInformationResponse]
$creadListPrec :: ReadPrec [DescribeGatewayInformationResponse]
readPrec :: ReadPrec DescribeGatewayInformationResponse
$creadPrec :: ReadPrec DescribeGatewayInformationResponse
readList :: ReadS [DescribeGatewayInformationResponse]
$creadList :: ReadS [DescribeGatewayInformationResponse]
readsPrec :: Int -> ReadS DescribeGatewayInformationResponse
$creadsPrec :: Int -> ReadS DescribeGatewayInformationResponse
Prelude.Read, Int -> DescribeGatewayInformationResponse -> ShowS
[DescribeGatewayInformationResponse] -> ShowS
DescribeGatewayInformationResponse -> String
(Int -> DescribeGatewayInformationResponse -> ShowS)
-> (DescribeGatewayInformationResponse -> String)
-> ([DescribeGatewayInformationResponse] -> ShowS)
-> Show DescribeGatewayInformationResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeGatewayInformationResponse] -> ShowS
$cshowList :: [DescribeGatewayInformationResponse] -> ShowS
show :: DescribeGatewayInformationResponse -> String
$cshow :: DescribeGatewayInformationResponse -> String
showsPrec :: Int -> DescribeGatewayInformationResponse -> ShowS
$cshowsPrec :: Int -> DescribeGatewayInformationResponse -> ShowS
Prelude.Show, (forall x.
 DescribeGatewayInformationResponse
 -> Rep DescribeGatewayInformationResponse x)
-> (forall x.
    Rep DescribeGatewayInformationResponse x
    -> DescribeGatewayInformationResponse)
-> Generic DescribeGatewayInformationResponse
forall x.
Rep DescribeGatewayInformationResponse x
-> DescribeGatewayInformationResponse
forall x.
DescribeGatewayInformationResponse
-> Rep DescribeGatewayInformationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeGatewayInformationResponse x
-> DescribeGatewayInformationResponse
$cfrom :: forall x.
DescribeGatewayInformationResponse
-> Rep DescribeGatewayInformationResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeGatewayInformationResponse' 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:
--
-- 'gatewayState', 'describeGatewayInformationResponse_gatewayState' - A value that indicates the operating state of the gateway.
--
-- 'ec2InstanceRegion', 'describeGatewayInformationResponse_ec2InstanceRegion' - The Amazon Web Services Region where the Amazon EC2 instance is located.
--
-- 'gatewayARN', 'describeGatewayInformationResponse_gatewayARN' - Undocumented member.
--
-- 'gatewayNetworkInterfaces', 'describeGatewayInformationResponse_gatewayNetworkInterfaces' - A NetworkInterface array that contains descriptions of the gateway
-- network interfaces.
--
-- 'ec2InstanceId', 'describeGatewayInformationResponse_ec2InstanceId' - The ID of the Amazon EC2 instance that was used to launch the gateway.
--
-- 'nextUpdateAvailabilityDate', 'describeGatewayInformationResponse_nextUpdateAvailabilityDate' - The date on which an update to the gateway is available. This date is in
-- the time zone of the gateway. If the gateway is not available for an
-- update this field is not returned in the response.
--
-- 'endpointType', 'describeGatewayInformationResponse_endpointType' - The type of endpoint for your gateway.
--
-- Valid Values: @STANDARD@ | @FIPS@
--
-- 'deprecationDate', 'describeGatewayInformationResponse_deprecationDate' - Date after which this gateway will not receive software updates for new
-- features and bug fixes.
--
-- 'lastSoftwareUpdate', 'describeGatewayInformationResponse_lastSoftwareUpdate' - The date on which the last software update was applied to the gateway.
-- If the gateway has never been updated, this field does not return a
-- value in the response.
--
-- 'gatewayCapacity', 'describeGatewayInformationResponse_gatewayCapacity' - Specifies the size of the gateway\'s metadata cache.
--
-- 'supportedGatewayCapacities', 'describeGatewayInformationResponse_supportedGatewayCapacities' - A list of the metadata cache sizes that the gateway can support based on
-- its current hardware specifications.
--
-- 'gatewayName', 'describeGatewayInformationResponse_gatewayName' - The name you configured for your gateway.
--
-- 'gatewayId', 'describeGatewayInformationResponse_gatewayId' - The unique identifier assigned to your gateway during activation. This
-- ID becomes part of the gateway Amazon Resource Name (ARN), which you use
-- as input for other operations.
--
-- 'hostEnvironment', 'describeGatewayInformationResponse_hostEnvironment' - The type of hypervisor environment used by the host.
--
-- 'gatewayType', 'describeGatewayInformationResponse_gatewayType' - The type of the gateway.
--
-- 'gatewayTimezone', 'describeGatewayInformationResponse_gatewayTimezone' - A value that indicates the time zone configured for the gateway.
--
-- 'softwareUpdatesEndDate', 'describeGatewayInformationResponse_softwareUpdatesEndDate' - Date after which this gateway will not receive software updates for new
-- features.
--
-- 'cloudWatchLogGroupARN', 'describeGatewayInformationResponse_cloudWatchLogGroupARN' - The Amazon Resource Name (ARN) of the Amazon CloudWatch log group that
-- is used to monitor events in the gateway.
--
-- 'vPCEndpoint', 'describeGatewayInformationResponse_vPCEndpoint' - The configuration settings for the virtual private cloud (VPC) endpoint
-- for your gateway.
--
-- 'tags', 'describeGatewayInformationResponse_tags' - A list of up to 50 tags assigned to the gateway, sorted alphabetically
-- by key name. Each tag is a key-value pair. For a gateway with more than
-- 10 tags assigned, you can view all tags using the @ListTagsForResource@
-- API operation.
--
-- 'httpStatus', 'describeGatewayInformationResponse_httpStatus' - The response's http status code.
newDescribeGatewayInformationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeGatewayInformationResponse
newDescribeGatewayInformationResponse :: Int -> DescribeGatewayInformationResponse
newDescribeGatewayInformationResponse Int
pHttpStatus_ =
  DescribeGatewayInformationResponse' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [NetworkInterface]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe GatewayCapacity
-> Maybe [GatewayCapacity]
-> Maybe Text
-> Maybe Text
-> Maybe HostEnvironment
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Tag]
-> Int
-> DescribeGatewayInformationResponse
DescribeGatewayInformationResponse'
    { $sel:gatewayState:DescribeGatewayInformationResponse' :: Maybe Text
gatewayState =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ec2InstanceRegion:DescribeGatewayInformationResponse' :: Maybe Text
ec2InstanceRegion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:gatewayARN:DescribeGatewayInformationResponse' :: Maybe Text
gatewayARN = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:gatewayNetworkInterfaces:DescribeGatewayInformationResponse' :: Maybe [NetworkInterface]
gatewayNetworkInterfaces =
        Maybe [NetworkInterface]
forall a. Maybe a
Prelude.Nothing,
      $sel:ec2InstanceId:DescribeGatewayInformationResponse' :: Maybe Text
ec2InstanceId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:nextUpdateAvailabilityDate:DescribeGatewayInformationResponse' :: Maybe Text
nextUpdateAvailabilityDate =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointType:DescribeGatewayInformationResponse' :: Maybe Text
endpointType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:deprecationDate:DescribeGatewayInformationResponse' :: Maybe Text
deprecationDate = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastSoftwareUpdate:DescribeGatewayInformationResponse' :: Maybe Text
lastSoftwareUpdate = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:gatewayCapacity:DescribeGatewayInformationResponse' :: Maybe GatewayCapacity
gatewayCapacity = Maybe GatewayCapacity
forall a. Maybe a
Prelude.Nothing,
      $sel:supportedGatewayCapacities:DescribeGatewayInformationResponse' :: Maybe [GatewayCapacity]
supportedGatewayCapacities =
        Maybe [GatewayCapacity]
forall a. Maybe a
Prelude.Nothing,
      $sel:gatewayName:DescribeGatewayInformationResponse' :: Maybe Text
gatewayName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:gatewayId:DescribeGatewayInformationResponse' :: Maybe Text
gatewayId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:hostEnvironment:DescribeGatewayInformationResponse' :: Maybe HostEnvironment
hostEnvironment = Maybe HostEnvironment
forall a. Maybe a
Prelude.Nothing,
      $sel:gatewayType:DescribeGatewayInformationResponse' :: Maybe Text
gatewayType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:gatewayTimezone:DescribeGatewayInformationResponse' :: Maybe Text
gatewayTimezone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:softwareUpdatesEndDate:DescribeGatewayInformationResponse' :: Maybe Text
softwareUpdatesEndDate =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:cloudWatchLogGroupARN:DescribeGatewayInformationResponse' :: Maybe Text
cloudWatchLogGroupARN = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vPCEndpoint:DescribeGatewayInformationResponse' :: Maybe Text
vPCEndpoint = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:DescribeGatewayInformationResponse' :: Maybe [Tag]
tags = Maybe [Tag]
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeGatewayInformationResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A value that indicates the operating state of the gateway.
describeGatewayInformationResponse_gatewayState :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_gatewayState :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_gatewayState = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
gatewayState :: Maybe Text
$sel:gatewayState:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
gatewayState} -> Maybe Text
gatewayState) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:gatewayState:DescribeGatewayInformationResponse' :: Maybe Text
gatewayState = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | The Amazon Web Services Region where the Amazon EC2 instance is located.
describeGatewayInformationResponse_ec2InstanceRegion :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_ec2InstanceRegion :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_ec2InstanceRegion = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
ec2InstanceRegion :: Maybe Text
$sel:ec2InstanceRegion:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
ec2InstanceRegion} -> Maybe Text
ec2InstanceRegion) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:ec2InstanceRegion:DescribeGatewayInformationResponse' :: Maybe Text
ec2InstanceRegion = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | Undocumented member.
describeGatewayInformationResponse_gatewayARN :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_gatewayARN :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_gatewayARN = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
gatewayARN :: Maybe Text
$sel:gatewayARN:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
gatewayARN} -> Maybe Text
gatewayARN) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:gatewayARN:DescribeGatewayInformationResponse' :: Maybe Text
gatewayARN = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | A NetworkInterface array that contains descriptions of the gateway
-- network interfaces.
describeGatewayInformationResponse_gatewayNetworkInterfaces :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe [NetworkInterface])
describeGatewayInformationResponse_gatewayNetworkInterfaces :: (Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_gatewayNetworkInterfaces = (DescribeGatewayInformationResponse -> Maybe [NetworkInterface])
-> (DescribeGatewayInformationResponse
    -> Maybe [NetworkInterface] -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe [NetworkInterface])
     (Maybe [NetworkInterface])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe [NetworkInterface]
gatewayNetworkInterfaces :: Maybe [NetworkInterface]
$sel:gatewayNetworkInterfaces:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe [NetworkInterface]
gatewayNetworkInterfaces} -> Maybe [NetworkInterface]
gatewayNetworkInterfaces) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe [NetworkInterface]
a -> DescribeGatewayInformationResponse
s {$sel:gatewayNetworkInterfaces:DescribeGatewayInformationResponse' :: Maybe [NetworkInterface]
gatewayNetworkInterfaces = Maybe [NetworkInterface]
a} :: DescribeGatewayInformationResponse) ((Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
 -> DescribeGatewayInformationResponse
 -> f DescribeGatewayInformationResponse)
-> ((Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
    -> Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
-> (Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [NetworkInterface]
  [NetworkInterface]
  [NetworkInterface]
  [NetworkInterface]
-> Iso
     (Maybe [NetworkInterface])
     (Maybe [NetworkInterface])
     (Maybe [NetworkInterface])
     (Maybe [NetworkInterface])
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 AnIso
  [NetworkInterface]
  [NetworkInterface]
  [NetworkInterface]
  [NetworkInterface]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ID of the Amazon EC2 instance that was used to launch the gateway.
describeGatewayInformationResponse_ec2InstanceId :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_ec2InstanceId :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_ec2InstanceId = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
ec2InstanceId :: Maybe Text
$sel:ec2InstanceId:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
ec2InstanceId} -> Maybe Text
ec2InstanceId) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:ec2InstanceId:DescribeGatewayInformationResponse' :: Maybe Text
ec2InstanceId = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | The date on which an update to the gateway is available. This date is in
-- the time zone of the gateway. If the gateway is not available for an
-- update this field is not returned in the response.
describeGatewayInformationResponse_nextUpdateAvailabilityDate :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_nextUpdateAvailabilityDate :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_nextUpdateAvailabilityDate = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
nextUpdateAvailabilityDate :: Maybe Text
$sel:nextUpdateAvailabilityDate:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
nextUpdateAvailabilityDate} -> Maybe Text
nextUpdateAvailabilityDate) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:nextUpdateAvailabilityDate:DescribeGatewayInformationResponse' :: Maybe Text
nextUpdateAvailabilityDate = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | The type of endpoint for your gateway.
--
-- Valid Values: @STANDARD@ | @FIPS@
describeGatewayInformationResponse_endpointType :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_endpointType :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_endpointType = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
endpointType :: Maybe Text
$sel:endpointType:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
endpointType} -> Maybe Text
endpointType) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:endpointType:DescribeGatewayInformationResponse' :: Maybe Text
endpointType = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | Date after which this gateway will not receive software updates for new
-- features and bug fixes.
describeGatewayInformationResponse_deprecationDate :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_deprecationDate :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_deprecationDate = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
deprecationDate :: Maybe Text
$sel:deprecationDate:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
deprecationDate} -> Maybe Text
deprecationDate) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:deprecationDate:DescribeGatewayInformationResponse' :: Maybe Text
deprecationDate = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | The date on which the last software update was applied to the gateway.
-- If the gateway has never been updated, this field does not return a
-- value in the response.
describeGatewayInformationResponse_lastSoftwareUpdate :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_lastSoftwareUpdate :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_lastSoftwareUpdate = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
lastSoftwareUpdate :: Maybe Text
$sel:lastSoftwareUpdate:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
lastSoftwareUpdate} -> Maybe Text
lastSoftwareUpdate) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:lastSoftwareUpdate:DescribeGatewayInformationResponse' :: Maybe Text
lastSoftwareUpdate = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | Specifies the size of the gateway\'s metadata cache.
describeGatewayInformationResponse_gatewayCapacity :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe GatewayCapacity)
describeGatewayInformationResponse_gatewayCapacity :: (Maybe GatewayCapacity -> f (Maybe GatewayCapacity))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_gatewayCapacity = (DescribeGatewayInformationResponse -> Maybe GatewayCapacity)
-> (DescribeGatewayInformationResponse
    -> Maybe GatewayCapacity -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe GatewayCapacity)
     (Maybe GatewayCapacity)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe GatewayCapacity
gatewayCapacity :: Maybe GatewayCapacity
$sel:gatewayCapacity:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe GatewayCapacity
gatewayCapacity} -> Maybe GatewayCapacity
gatewayCapacity) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe GatewayCapacity
a -> DescribeGatewayInformationResponse
s {$sel:gatewayCapacity:DescribeGatewayInformationResponse' :: Maybe GatewayCapacity
gatewayCapacity = Maybe GatewayCapacity
a} :: DescribeGatewayInformationResponse)

-- | A list of the metadata cache sizes that the gateway can support based on
-- its current hardware specifications.
describeGatewayInformationResponse_supportedGatewayCapacities :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe [GatewayCapacity])
describeGatewayInformationResponse_supportedGatewayCapacities :: (Maybe [GatewayCapacity] -> f (Maybe [GatewayCapacity]))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_supportedGatewayCapacities = (DescribeGatewayInformationResponse -> Maybe [GatewayCapacity])
-> (DescribeGatewayInformationResponse
    -> Maybe [GatewayCapacity] -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe [GatewayCapacity])
     (Maybe [GatewayCapacity])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe [GatewayCapacity]
supportedGatewayCapacities :: Maybe [GatewayCapacity]
$sel:supportedGatewayCapacities:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe [GatewayCapacity]
supportedGatewayCapacities} -> Maybe [GatewayCapacity]
supportedGatewayCapacities) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe [GatewayCapacity]
a -> DescribeGatewayInformationResponse
s {$sel:supportedGatewayCapacities:DescribeGatewayInformationResponse' :: Maybe [GatewayCapacity]
supportedGatewayCapacities = Maybe [GatewayCapacity]
a} :: DescribeGatewayInformationResponse) ((Maybe [GatewayCapacity] -> f (Maybe [GatewayCapacity]))
 -> DescribeGatewayInformationResponse
 -> f DescribeGatewayInformationResponse)
-> ((Maybe [GatewayCapacity] -> f (Maybe [GatewayCapacity]))
    -> Maybe [GatewayCapacity] -> f (Maybe [GatewayCapacity]))
-> (Maybe [GatewayCapacity] -> f (Maybe [GatewayCapacity]))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [GatewayCapacity]
  [GatewayCapacity]
  [GatewayCapacity]
  [GatewayCapacity]
-> Iso
     (Maybe [GatewayCapacity])
     (Maybe [GatewayCapacity])
     (Maybe [GatewayCapacity])
     (Maybe [GatewayCapacity])
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 AnIso
  [GatewayCapacity]
  [GatewayCapacity]
  [GatewayCapacity]
  [GatewayCapacity]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name you configured for your gateway.
describeGatewayInformationResponse_gatewayName :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_gatewayName :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_gatewayName = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
gatewayName :: Maybe Text
$sel:gatewayName:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
gatewayName} -> Maybe Text
gatewayName) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:gatewayName:DescribeGatewayInformationResponse' :: Maybe Text
gatewayName = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | The unique identifier assigned to your gateway during activation. This
-- ID becomes part of the gateway Amazon Resource Name (ARN), which you use
-- as input for other operations.
describeGatewayInformationResponse_gatewayId :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_gatewayId :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_gatewayId = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
gatewayId :: Maybe Text
$sel:gatewayId:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
gatewayId} -> Maybe Text
gatewayId) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:gatewayId:DescribeGatewayInformationResponse' :: Maybe Text
gatewayId = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | The type of hypervisor environment used by the host.
describeGatewayInformationResponse_hostEnvironment :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe HostEnvironment)
describeGatewayInformationResponse_hostEnvironment :: (Maybe HostEnvironment -> f (Maybe HostEnvironment))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_hostEnvironment = (DescribeGatewayInformationResponse -> Maybe HostEnvironment)
-> (DescribeGatewayInformationResponse
    -> Maybe HostEnvironment -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe HostEnvironment)
     (Maybe HostEnvironment)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe HostEnvironment
hostEnvironment :: Maybe HostEnvironment
$sel:hostEnvironment:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe HostEnvironment
hostEnvironment} -> Maybe HostEnvironment
hostEnvironment) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe HostEnvironment
a -> DescribeGatewayInformationResponse
s {$sel:hostEnvironment:DescribeGatewayInformationResponse' :: Maybe HostEnvironment
hostEnvironment = Maybe HostEnvironment
a} :: DescribeGatewayInformationResponse)

-- | The type of the gateway.
describeGatewayInformationResponse_gatewayType :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_gatewayType :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_gatewayType = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
gatewayType :: Maybe Text
$sel:gatewayType:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
gatewayType} -> Maybe Text
gatewayType) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:gatewayType:DescribeGatewayInformationResponse' :: Maybe Text
gatewayType = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | A value that indicates the time zone configured for the gateway.
describeGatewayInformationResponse_gatewayTimezone :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_gatewayTimezone :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_gatewayTimezone = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
gatewayTimezone :: Maybe Text
$sel:gatewayTimezone:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
gatewayTimezone} -> Maybe Text
gatewayTimezone) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:gatewayTimezone:DescribeGatewayInformationResponse' :: Maybe Text
gatewayTimezone = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | Date after which this gateway will not receive software updates for new
-- features.
describeGatewayInformationResponse_softwareUpdatesEndDate :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_softwareUpdatesEndDate :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_softwareUpdatesEndDate = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
softwareUpdatesEndDate :: Maybe Text
$sel:softwareUpdatesEndDate:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
softwareUpdatesEndDate} -> Maybe Text
softwareUpdatesEndDate) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:softwareUpdatesEndDate:DescribeGatewayInformationResponse' :: Maybe Text
softwareUpdatesEndDate = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | The Amazon Resource Name (ARN) of the Amazon CloudWatch log group that
-- is used to monitor events in the gateway.
describeGatewayInformationResponse_cloudWatchLogGroupARN :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_cloudWatchLogGroupARN :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_cloudWatchLogGroupARN = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
cloudWatchLogGroupARN :: Maybe Text
$sel:cloudWatchLogGroupARN:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
cloudWatchLogGroupARN} -> Maybe Text
cloudWatchLogGroupARN) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:cloudWatchLogGroupARN:DescribeGatewayInformationResponse' :: Maybe Text
cloudWatchLogGroupARN = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | The configuration settings for the virtual private cloud (VPC) endpoint
-- for your gateway.
describeGatewayInformationResponse_vPCEndpoint :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe Prelude.Text)
describeGatewayInformationResponse_vPCEndpoint :: (Maybe Text -> f (Maybe Text))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_vPCEndpoint = (DescribeGatewayInformationResponse -> Maybe Text)
-> (DescribeGatewayInformationResponse
    -> Maybe Text -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe Text
vPCEndpoint :: Maybe Text
$sel:vPCEndpoint:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe Text
vPCEndpoint} -> Maybe Text
vPCEndpoint) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe Text
a -> DescribeGatewayInformationResponse
s {$sel:vPCEndpoint:DescribeGatewayInformationResponse' :: Maybe Text
vPCEndpoint = Maybe Text
a} :: DescribeGatewayInformationResponse)

-- | A list of up to 50 tags assigned to the gateway, sorted alphabetically
-- by key name. Each tag is a key-value pair. For a gateway with more than
-- 10 tags assigned, you can view all tags using the @ListTagsForResource@
-- API operation.
describeGatewayInformationResponse_tags :: Lens.Lens' DescribeGatewayInformationResponse (Prelude.Maybe [Tag])
describeGatewayInformationResponse_tags :: (Maybe [Tag] -> f (Maybe [Tag]))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
describeGatewayInformationResponse_tags = (DescribeGatewayInformationResponse -> Maybe [Tag])
-> (DescribeGatewayInformationResponse
    -> Maybe [Tag] -> DescribeGatewayInformationResponse)
-> Lens
     DescribeGatewayInformationResponse
     DescribeGatewayInformationResponse
     (Maybe [Tag])
     (Maybe [Tag])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGatewayInformationResponse' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:DescribeGatewayInformationResponse' :: DescribeGatewayInformationResponse -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: DescribeGatewayInformationResponse
s@DescribeGatewayInformationResponse' {} Maybe [Tag]
a -> DescribeGatewayInformationResponse
s {$sel:tags:DescribeGatewayInformationResponse' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: DescribeGatewayInformationResponse) ((Maybe [Tag] -> f (Maybe [Tag]))
 -> DescribeGatewayInformationResponse
 -> f DescribeGatewayInformationResponse)
-> ((Maybe [Tag] -> f (Maybe [Tag]))
    -> Maybe [Tag] -> f (Maybe [Tag]))
-> (Maybe [Tag] -> f (Maybe [Tag]))
-> DescribeGatewayInformationResponse
-> f DescribeGatewayInformationResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Tag] [Tag] [Tag] [Tag]
-> Iso (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag])
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 AnIso [Tag] [Tag] [Tag] [Tag]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance
  Prelude.NFData
    DescribeGatewayInformationResponse