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

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

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

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.PeeringAttachmentStatus
import Amazonka.EC2.Types.PeeringTgwInfo
import Amazonka.EC2.Types.Tag
import Amazonka.EC2.Types.TransitGatewayAttachmentState
import Amazonka.EC2.Types.TransitGatewayPeeringAttachmentOptions
import qualified Amazonka.Prelude as Prelude

-- | Describes the transit gateway peering attachment.
--
-- /See:/ 'newTransitGatewayPeeringAttachment' smart constructor.
data TransitGatewayPeeringAttachment = TransitGatewayPeeringAttachment'
  { -- | Information about the accepter transit gateway.
    TransitGatewayPeeringAttachment -> Maybe PeeringTgwInfo
accepterTgwInfo :: Prelude.Maybe PeeringTgwInfo,
    -- | The ID of the accepter transit gateway attachment.
    TransitGatewayPeeringAttachment -> Maybe Text
accepterTransitGatewayAttachmentId :: Prelude.Maybe Prelude.Text,
    -- | The time the transit gateway peering attachment was created.
    TransitGatewayPeeringAttachment -> Maybe ISO8601
creationTime :: Prelude.Maybe Data.ISO8601,
    -- | Details about the transit gateway peering attachment.
    TransitGatewayPeeringAttachment
-> Maybe TransitGatewayPeeringAttachmentOptions
options :: Prelude.Maybe TransitGatewayPeeringAttachmentOptions,
    -- | Information about the requester transit gateway.
    TransitGatewayPeeringAttachment -> Maybe PeeringTgwInfo
requesterTgwInfo :: Prelude.Maybe PeeringTgwInfo,
    -- | The state of the transit gateway peering attachment. Note that the
    -- @initiating@ state has been deprecated.
    TransitGatewayPeeringAttachment
-> Maybe TransitGatewayAttachmentState
state :: Prelude.Maybe TransitGatewayAttachmentState,
    -- | The status of the transit gateway peering attachment.
    TransitGatewayPeeringAttachment -> Maybe PeeringAttachmentStatus
status :: Prelude.Maybe PeeringAttachmentStatus,
    -- | The tags for the transit gateway peering attachment.
    TransitGatewayPeeringAttachment -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The ID of the transit gateway peering attachment.
    TransitGatewayPeeringAttachment -> Maybe Text
transitGatewayAttachmentId :: Prelude.Maybe Prelude.Text
  }
  deriving (TransitGatewayPeeringAttachment
-> TransitGatewayPeeringAttachment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TransitGatewayPeeringAttachment
-> TransitGatewayPeeringAttachment -> Bool
$c/= :: TransitGatewayPeeringAttachment
-> TransitGatewayPeeringAttachment -> Bool
== :: TransitGatewayPeeringAttachment
-> TransitGatewayPeeringAttachment -> Bool
$c== :: TransitGatewayPeeringAttachment
-> TransitGatewayPeeringAttachment -> Bool
Prelude.Eq, ReadPrec [TransitGatewayPeeringAttachment]
ReadPrec TransitGatewayPeeringAttachment
Int -> ReadS TransitGatewayPeeringAttachment
ReadS [TransitGatewayPeeringAttachment]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TransitGatewayPeeringAttachment]
$creadListPrec :: ReadPrec [TransitGatewayPeeringAttachment]
readPrec :: ReadPrec TransitGatewayPeeringAttachment
$creadPrec :: ReadPrec TransitGatewayPeeringAttachment
readList :: ReadS [TransitGatewayPeeringAttachment]
$creadList :: ReadS [TransitGatewayPeeringAttachment]
readsPrec :: Int -> ReadS TransitGatewayPeeringAttachment
$creadsPrec :: Int -> ReadS TransitGatewayPeeringAttachment
Prelude.Read, Int -> TransitGatewayPeeringAttachment -> ShowS
[TransitGatewayPeeringAttachment] -> ShowS
TransitGatewayPeeringAttachment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TransitGatewayPeeringAttachment] -> ShowS
$cshowList :: [TransitGatewayPeeringAttachment] -> ShowS
show :: TransitGatewayPeeringAttachment -> String
$cshow :: TransitGatewayPeeringAttachment -> String
showsPrec :: Int -> TransitGatewayPeeringAttachment -> ShowS
$cshowsPrec :: Int -> TransitGatewayPeeringAttachment -> ShowS
Prelude.Show, forall x.
Rep TransitGatewayPeeringAttachment x
-> TransitGatewayPeeringAttachment
forall x.
TransitGatewayPeeringAttachment
-> Rep TransitGatewayPeeringAttachment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep TransitGatewayPeeringAttachment x
-> TransitGatewayPeeringAttachment
$cfrom :: forall x.
TransitGatewayPeeringAttachment
-> Rep TransitGatewayPeeringAttachment x
Prelude.Generic)

-- |
-- Create a value of 'TransitGatewayPeeringAttachment' 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:
--
-- 'accepterTgwInfo', 'transitGatewayPeeringAttachment_accepterTgwInfo' - Information about the accepter transit gateway.
--
-- 'accepterTransitGatewayAttachmentId', 'transitGatewayPeeringAttachment_accepterTransitGatewayAttachmentId' - The ID of the accepter transit gateway attachment.
--
-- 'creationTime', 'transitGatewayPeeringAttachment_creationTime' - The time the transit gateway peering attachment was created.
--
-- 'options', 'transitGatewayPeeringAttachment_options' - Details about the transit gateway peering attachment.
--
-- 'requesterTgwInfo', 'transitGatewayPeeringAttachment_requesterTgwInfo' - Information about the requester transit gateway.
--
-- 'state', 'transitGatewayPeeringAttachment_state' - The state of the transit gateway peering attachment. Note that the
-- @initiating@ state has been deprecated.
--
-- 'status', 'transitGatewayPeeringAttachment_status' - The status of the transit gateway peering attachment.
--
-- 'tags', 'transitGatewayPeeringAttachment_tags' - The tags for the transit gateway peering attachment.
--
-- 'transitGatewayAttachmentId', 'transitGatewayPeeringAttachment_transitGatewayAttachmentId' - The ID of the transit gateway peering attachment.
newTransitGatewayPeeringAttachment ::
  TransitGatewayPeeringAttachment
newTransitGatewayPeeringAttachment :: TransitGatewayPeeringAttachment
newTransitGatewayPeeringAttachment =
  TransitGatewayPeeringAttachment'
    { $sel:accepterTgwInfo:TransitGatewayPeeringAttachment' :: Maybe PeeringTgwInfo
accepterTgwInfo =
        forall a. Maybe a
Prelude.Nothing,
      $sel:accepterTransitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: Maybe Text
accepterTransitGatewayAttachmentId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:creationTime:TransitGatewayPeeringAttachment' :: Maybe ISO8601
creationTime = forall a. Maybe a
Prelude.Nothing,
      $sel:options:TransitGatewayPeeringAttachment' :: Maybe TransitGatewayPeeringAttachmentOptions
options = forall a. Maybe a
Prelude.Nothing,
      $sel:requesterTgwInfo:TransitGatewayPeeringAttachment' :: Maybe PeeringTgwInfo
requesterTgwInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:state:TransitGatewayPeeringAttachment' :: Maybe TransitGatewayAttachmentState
state = forall a. Maybe a
Prelude.Nothing,
      $sel:status:TransitGatewayPeeringAttachment' :: Maybe PeeringAttachmentStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:TransitGatewayPeeringAttachment' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:transitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: Maybe Text
transitGatewayAttachmentId =
        forall a. Maybe a
Prelude.Nothing
    }

-- | Information about the accepter transit gateway.
transitGatewayPeeringAttachment_accepterTgwInfo :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe PeeringTgwInfo)
transitGatewayPeeringAttachment_accepterTgwInfo :: Lens' TransitGatewayPeeringAttachment (Maybe PeeringTgwInfo)
transitGatewayPeeringAttachment_accepterTgwInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe PeeringTgwInfo
accepterTgwInfo :: Maybe PeeringTgwInfo
$sel:accepterTgwInfo:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringTgwInfo
accepterTgwInfo} -> Maybe PeeringTgwInfo
accepterTgwInfo) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe PeeringTgwInfo
a -> TransitGatewayPeeringAttachment
s {$sel:accepterTgwInfo:TransitGatewayPeeringAttachment' :: Maybe PeeringTgwInfo
accepterTgwInfo = Maybe PeeringTgwInfo
a} :: TransitGatewayPeeringAttachment)

-- | The ID of the accepter transit gateway attachment.
transitGatewayPeeringAttachment_accepterTransitGatewayAttachmentId :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe Prelude.Text)
transitGatewayPeeringAttachment_accepterTransitGatewayAttachmentId :: Lens' TransitGatewayPeeringAttachment (Maybe Text)
transitGatewayPeeringAttachment_accepterTransitGatewayAttachmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe Text
accepterTransitGatewayAttachmentId :: Maybe Text
$sel:accepterTransitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe Text
accepterTransitGatewayAttachmentId} -> Maybe Text
accepterTransitGatewayAttachmentId) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe Text
a -> TransitGatewayPeeringAttachment
s {$sel:accepterTransitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: Maybe Text
accepterTransitGatewayAttachmentId = Maybe Text
a} :: TransitGatewayPeeringAttachment)

-- | The time the transit gateway peering attachment was created.
transitGatewayPeeringAttachment_creationTime :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe Prelude.UTCTime)
transitGatewayPeeringAttachment_creationTime :: Lens' TransitGatewayPeeringAttachment (Maybe UTCTime)
transitGatewayPeeringAttachment_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe ISO8601
creationTime :: Maybe ISO8601
$sel:creationTime:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe ISO8601
creationTime} -> Maybe ISO8601
creationTime) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe ISO8601
a -> TransitGatewayPeeringAttachment
s {$sel:creationTime:TransitGatewayPeeringAttachment' :: Maybe ISO8601
creationTime = Maybe ISO8601
a} :: TransitGatewayPeeringAttachment) 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

-- | Details about the transit gateway peering attachment.
transitGatewayPeeringAttachment_options :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe TransitGatewayPeeringAttachmentOptions)
transitGatewayPeeringAttachment_options :: Lens'
  TransitGatewayPeeringAttachment
  (Maybe TransitGatewayPeeringAttachmentOptions)
transitGatewayPeeringAttachment_options = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe TransitGatewayPeeringAttachmentOptions
options :: Maybe TransitGatewayPeeringAttachmentOptions
$sel:options:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment
-> Maybe TransitGatewayPeeringAttachmentOptions
options} -> Maybe TransitGatewayPeeringAttachmentOptions
options) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe TransitGatewayPeeringAttachmentOptions
a -> TransitGatewayPeeringAttachment
s {$sel:options:TransitGatewayPeeringAttachment' :: Maybe TransitGatewayPeeringAttachmentOptions
options = Maybe TransitGatewayPeeringAttachmentOptions
a} :: TransitGatewayPeeringAttachment)

-- | Information about the requester transit gateway.
transitGatewayPeeringAttachment_requesterTgwInfo :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe PeeringTgwInfo)
transitGatewayPeeringAttachment_requesterTgwInfo :: Lens' TransitGatewayPeeringAttachment (Maybe PeeringTgwInfo)
transitGatewayPeeringAttachment_requesterTgwInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe PeeringTgwInfo
requesterTgwInfo :: Maybe PeeringTgwInfo
$sel:requesterTgwInfo:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringTgwInfo
requesterTgwInfo} -> Maybe PeeringTgwInfo
requesterTgwInfo) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe PeeringTgwInfo
a -> TransitGatewayPeeringAttachment
s {$sel:requesterTgwInfo:TransitGatewayPeeringAttachment' :: Maybe PeeringTgwInfo
requesterTgwInfo = Maybe PeeringTgwInfo
a} :: TransitGatewayPeeringAttachment)

-- | The state of the transit gateway peering attachment. Note that the
-- @initiating@ state has been deprecated.
transitGatewayPeeringAttachment_state :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe TransitGatewayAttachmentState)
transitGatewayPeeringAttachment_state :: Lens'
  TransitGatewayPeeringAttachment
  (Maybe TransitGatewayAttachmentState)
transitGatewayPeeringAttachment_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe TransitGatewayAttachmentState
state :: Maybe TransitGatewayAttachmentState
$sel:state:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment
-> Maybe TransitGatewayAttachmentState
state} -> Maybe TransitGatewayAttachmentState
state) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe TransitGatewayAttachmentState
a -> TransitGatewayPeeringAttachment
s {$sel:state:TransitGatewayPeeringAttachment' :: Maybe TransitGatewayAttachmentState
state = Maybe TransitGatewayAttachmentState
a} :: TransitGatewayPeeringAttachment)

-- | The status of the transit gateway peering attachment.
transitGatewayPeeringAttachment_status :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe PeeringAttachmentStatus)
transitGatewayPeeringAttachment_status :: Lens'
  TransitGatewayPeeringAttachment (Maybe PeeringAttachmentStatus)
transitGatewayPeeringAttachment_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe PeeringAttachmentStatus
status :: Maybe PeeringAttachmentStatus
$sel:status:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringAttachmentStatus
status} -> Maybe PeeringAttachmentStatus
status) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe PeeringAttachmentStatus
a -> TransitGatewayPeeringAttachment
s {$sel:status:TransitGatewayPeeringAttachment' :: Maybe PeeringAttachmentStatus
status = Maybe PeeringAttachmentStatus
a} :: TransitGatewayPeeringAttachment)

-- | The tags for the transit gateway peering attachment.
transitGatewayPeeringAttachment_tags :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe [Tag])
transitGatewayPeeringAttachment_tags :: Lens' TransitGatewayPeeringAttachment (Maybe [Tag])
transitGatewayPeeringAttachment_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe [Tag]
a -> TransitGatewayPeeringAttachment
s {$sel:tags:TransitGatewayPeeringAttachment' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: TransitGatewayPeeringAttachment) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ID of the transit gateway peering attachment.
transitGatewayPeeringAttachment_transitGatewayAttachmentId :: Lens.Lens' TransitGatewayPeeringAttachment (Prelude.Maybe Prelude.Text)
transitGatewayPeeringAttachment_transitGatewayAttachmentId :: Lens' TransitGatewayPeeringAttachment (Maybe Text)
transitGatewayPeeringAttachment_transitGatewayAttachmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayPeeringAttachment' {Maybe Text
transitGatewayAttachmentId :: Maybe Text
$sel:transitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe Text
transitGatewayAttachmentId} -> Maybe Text
transitGatewayAttachmentId) (\s :: TransitGatewayPeeringAttachment
s@TransitGatewayPeeringAttachment' {} Maybe Text
a -> TransitGatewayPeeringAttachment
s {$sel:transitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: Maybe Text
transitGatewayAttachmentId = Maybe Text
a} :: TransitGatewayPeeringAttachment)

instance Data.FromXML TransitGatewayPeeringAttachment where
  parseXML :: [Node] -> Either String TransitGatewayPeeringAttachment
parseXML [Node]
x =
    Maybe PeeringTgwInfo
-> Maybe Text
-> Maybe ISO8601
-> Maybe TransitGatewayPeeringAttachmentOptions
-> Maybe PeeringTgwInfo
-> Maybe TransitGatewayAttachmentState
-> Maybe PeeringAttachmentStatus
-> Maybe [Tag]
-> Maybe Text
-> TransitGatewayPeeringAttachment
TransitGatewayPeeringAttachment'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"accepterTgwInfo")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"accepterTransitGatewayAttachmentId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"creationTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"options")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"requesterTgwInfo")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"state")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"status")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"tagSet"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"transitGatewayAttachmentId")

instance
  Prelude.Hashable
    TransitGatewayPeeringAttachment
  where
  hashWithSalt :: Int -> TransitGatewayPeeringAttachment -> Int
hashWithSalt
    Int
_salt
    TransitGatewayPeeringAttachment' {Maybe [Tag]
Maybe Text
Maybe ISO8601
Maybe PeeringAttachmentStatus
Maybe PeeringTgwInfo
Maybe TransitGatewayAttachmentState
Maybe TransitGatewayPeeringAttachmentOptions
transitGatewayAttachmentId :: Maybe Text
tags :: Maybe [Tag]
status :: Maybe PeeringAttachmentStatus
state :: Maybe TransitGatewayAttachmentState
requesterTgwInfo :: Maybe PeeringTgwInfo
options :: Maybe TransitGatewayPeeringAttachmentOptions
creationTime :: Maybe ISO8601
accepterTransitGatewayAttachmentId :: Maybe Text
accepterTgwInfo :: Maybe PeeringTgwInfo
$sel:transitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe Text
$sel:tags:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe [Tag]
$sel:status:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringAttachmentStatus
$sel:state:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment
-> Maybe TransitGatewayAttachmentState
$sel:requesterTgwInfo:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringTgwInfo
$sel:options:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment
-> Maybe TransitGatewayPeeringAttachmentOptions
$sel:creationTime:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe ISO8601
$sel:accepterTransitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe Text
$sel:accepterTgwInfo:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringTgwInfo
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PeeringTgwInfo
accepterTgwInfo
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
accepterTransitGatewayAttachmentId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
creationTime
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TransitGatewayPeeringAttachmentOptions
options
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PeeringTgwInfo
requesterTgwInfo
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TransitGatewayAttachmentState
state
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PeeringAttachmentStatus
status
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
transitGatewayAttachmentId

instance
  Prelude.NFData
    TransitGatewayPeeringAttachment
  where
  rnf :: TransitGatewayPeeringAttachment -> ()
rnf TransitGatewayPeeringAttachment' {Maybe [Tag]
Maybe Text
Maybe ISO8601
Maybe PeeringAttachmentStatus
Maybe PeeringTgwInfo
Maybe TransitGatewayAttachmentState
Maybe TransitGatewayPeeringAttachmentOptions
transitGatewayAttachmentId :: Maybe Text
tags :: Maybe [Tag]
status :: Maybe PeeringAttachmentStatus
state :: Maybe TransitGatewayAttachmentState
requesterTgwInfo :: Maybe PeeringTgwInfo
options :: Maybe TransitGatewayPeeringAttachmentOptions
creationTime :: Maybe ISO8601
accepterTransitGatewayAttachmentId :: Maybe Text
accepterTgwInfo :: Maybe PeeringTgwInfo
$sel:transitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe Text
$sel:tags:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe [Tag]
$sel:status:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringAttachmentStatus
$sel:state:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment
-> Maybe TransitGatewayAttachmentState
$sel:requesterTgwInfo:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringTgwInfo
$sel:options:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment
-> Maybe TransitGatewayPeeringAttachmentOptions
$sel:creationTime:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe ISO8601
$sel:accepterTransitGatewayAttachmentId:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe Text
$sel:accepterTgwInfo:TransitGatewayPeeringAttachment' :: TransitGatewayPeeringAttachment -> Maybe PeeringTgwInfo
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe PeeringTgwInfo
accepterTgwInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accepterTransitGatewayAttachmentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TransitGatewayPeeringAttachmentOptions
options
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PeeringTgwInfo
requesterTgwInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TransitGatewayAttachmentState
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PeeringAttachmentStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
transitGatewayAttachmentId