{-# 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.TransitGatewayMulticastGroup
-- 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.TransitGatewayMulticastGroup 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.MembershipType
import Amazonka.EC2.Types.TransitGatewayAttachmentResourceType
import qualified Amazonka.Prelude as Prelude

-- | Describes the transit gateway multicast group resources.
--
-- /See:/ 'newTransitGatewayMulticastGroup' smart constructor.
data TransitGatewayMulticastGroup = TransitGatewayMulticastGroup'
  { -- | The IP address assigned to the transit gateway multicast group.
    TransitGatewayMulticastGroup -> Maybe Text
groupIpAddress :: Prelude.Maybe Prelude.Text,
    -- | Indicates that the resource is a transit gateway multicast group member.
    TransitGatewayMulticastGroup -> Maybe Bool
groupMember :: Prelude.Maybe Prelude.Bool,
    -- | Indicates that the resource is a transit gateway multicast group member.
    TransitGatewayMulticastGroup -> Maybe Bool
groupSource :: Prelude.Maybe Prelude.Bool,
    -- | The member type (for example, @static@).
    TransitGatewayMulticastGroup -> Maybe MembershipType
memberType :: Prelude.Maybe MembershipType,
    -- | The ID of the transit gateway attachment.
    TransitGatewayMulticastGroup -> Maybe Text
networkInterfaceId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the resource.
    TransitGatewayMulticastGroup -> Maybe Text
resourceId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Amazon Web Services account that owns the transit gateway
    -- multicast domain group resource.
    TransitGatewayMulticastGroup -> Maybe Text
resourceOwnerId :: Prelude.Maybe Prelude.Text,
    -- | The type of resource, for example a VPC attachment.
    TransitGatewayMulticastGroup
-> Maybe TransitGatewayAttachmentResourceType
resourceType :: Prelude.Maybe TransitGatewayAttachmentResourceType,
    -- | The source type.
    TransitGatewayMulticastGroup -> Maybe MembershipType
sourceType :: Prelude.Maybe MembershipType,
    -- | The ID of the subnet.
    TransitGatewayMulticastGroup -> Maybe Text
subnetId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the transit gateway attachment.
    TransitGatewayMulticastGroup -> Maybe Text
transitGatewayAttachmentId :: Prelude.Maybe Prelude.Text
  }
  deriving (TransitGatewayMulticastGroup
-> TransitGatewayMulticastGroup -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TransitGatewayMulticastGroup
-> TransitGatewayMulticastGroup -> Bool
$c/= :: TransitGatewayMulticastGroup
-> TransitGatewayMulticastGroup -> Bool
== :: TransitGatewayMulticastGroup
-> TransitGatewayMulticastGroup -> Bool
$c== :: TransitGatewayMulticastGroup
-> TransitGatewayMulticastGroup -> Bool
Prelude.Eq, ReadPrec [TransitGatewayMulticastGroup]
ReadPrec TransitGatewayMulticastGroup
Int -> ReadS TransitGatewayMulticastGroup
ReadS [TransitGatewayMulticastGroup]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TransitGatewayMulticastGroup]
$creadListPrec :: ReadPrec [TransitGatewayMulticastGroup]
readPrec :: ReadPrec TransitGatewayMulticastGroup
$creadPrec :: ReadPrec TransitGatewayMulticastGroup
readList :: ReadS [TransitGatewayMulticastGroup]
$creadList :: ReadS [TransitGatewayMulticastGroup]
readsPrec :: Int -> ReadS TransitGatewayMulticastGroup
$creadsPrec :: Int -> ReadS TransitGatewayMulticastGroup
Prelude.Read, Int -> TransitGatewayMulticastGroup -> ShowS
[TransitGatewayMulticastGroup] -> ShowS
TransitGatewayMulticastGroup -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TransitGatewayMulticastGroup] -> ShowS
$cshowList :: [TransitGatewayMulticastGroup] -> ShowS
show :: TransitGatewayMulticastGroup -> String
$cshow :: TransitGatewayMulticastGroup -> String
showsPrec :: Int -> TransitGatewayMulticastGroup -> ShowS
$cshowsPrec :: Int -> TransitGatewayMulticastGroup -> ShowS
Prelude.Show, forall x.
Rep TransitGatewayMulticastGroup x -> TransitGatewayMulticastGroup
forall x.
TransitGatewayMulticastGroup -> Rep TransitGatewayMulticastGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep TransitGatewayMulticastGroup x -> TransitGatewayMulticastGroup
$cfrom :: forall x.
TransitGatewayMulticastGroup -> Rep TransitGatewayMulticastGroup x
Prelude.Generic)

-- |
-- Create a value of 'TransitGatewayMulticastGroup' 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:
--
-- 'groupIpAddress', 'transitGatewayMulticastGroup_groupIpAddress' - The IP address assigned to the transit gateway multicast group.
--
-- 'groupMember', 'transitGatewayMulticastGroup_groupMember' - Indicates that the resource is a transit gateway multicast group member.
--
-- 'groupSource', 'transitGatewayMulticastGroup_groupSource' - Indicates that the resource is a transit gateway multicast group member.
--
-- 'memberType', 'transitGatewayMulticastGroup_memberType' - The member type (for example, @static@).
--
-- 'networkInterfaceId', 'transitGatewayMulticastGroup_networkInterfaceId' - The ID of the transit gateway attachment.
--
-- 'resourceId', 'transitGatewayMulticastGroup_resourceId' - The ID of the resource.
--
-- 'resourceOwnerId', 'transitGatewayMulticastGroup_resourceOwnerId' - The ID of the Amazon Web Services account that owns the transit gateway
-- multicast domain group resource.
--
-- 'resourceType', 'transitGatewayMulticastGroup_resourceType' - The type of resource, for example a VPC attachment.
--
-- 'sourceType', 'transitGatewayMulticastGroup_sourceType' - The source type.
--
-- 'subnetId', 'transitGatewayMulticastGroup_subnetId' - The ID of the subnet.
--
-- 'transitGatewayAttachmentId', 'transitGatewayMulticastGroup_transitGatewayAttachmentId' - The ID of the transit gateway attachment.
newTransitGatewayMulticastGroup ::
  TransitGatewayMulticastGroup
newTransitGatewayMulticastGroup :: TransitGatewayMulticastGroup
newTransitGatewayMulticastGroup =
  TransitGatewayMulticastGroup'
    { $sel:groupIpAddress:TransitGatewayMulticastGroup' :: Maybe Text
groupIpAddress =
        forall a. Maybe a
Prelude.Nothing,
      $sel:groupMember:TransitGatewayMulticastGroup' :: Maybe Bool
groupMember = forall a. Maybe a
Prelude.Nothing,
      $sel:groupSource:TransitGatewayMulticastGroup' :: Maybe Bool
groupSource = forall a. Maybe a
Prelude.Nothing,
      $sel:memberType:TransitGatewayMulticastGroup' :: Maybe MembershipType
memberType = forall a. Maybe a
Prelude.Nothing,
      $sel:networkInterfaceId:TransitGatewayMulticastGroup' :: Maybe Text
networkInterfaceId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceId:TransitGatewayMulticastGroup' :: Maybe Text
resourceId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceOwnerId:TransitGatewayMulticastGroup' :: Maybe Text
resourceOwnerId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceType:TransitGatewayMulticastGroup' :: Maybe TransitGatewayAttachmentResourceType
resourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceType:TransitGatewayMulticastGroup' :: Maybe MembershipType
sourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:subnetId:TransitGatewayMulticastGroup' :: Maybe Text
subnetId = forall a. Maybe a
Prelude.Nothing,
      $sel:transitGatewayAttachmentId:TransitGatewayMulticastGroup' :: Maybe Text
transitGatewayAttachmentId = forall a. Maybe a
Prelude.Nothing
    }

-- | The IP address assigned to the transit gateway multicast group.
transitGatewayMulticastGroup_groupIpAddress :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe Prelude.Text)
transitGatewayMulticastGroup_groupIpAddress :: Lens' TransitGatewayMulticastGroup (Maybe Text)
transitGatewayMulticastGroup_groupIpAddress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe Text
groupIpAddress :: Maybe Text
$sel:groupIpAddress:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
groupIpAddress} -> Maybe Text
groupIpAddress) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe Text
a -> TransitGatewayMulticastGroup
s {$sel:groupIpAddress:TransitGatewayMulticastGroup' :: Maybe Text
groupIpAddress = Maybe Text
a} :: TransitGatewayMulticastGroup)

-- | Indicates that the resource is a transit gateway multicast group member.
transitGatewayMulticastGroup_groupMember :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe Prelude.Bool)
transitGatewayMulticastGroup_groupMember :: Lens' TransitGatewayMulticastGroup (Maybe Bool)
transitGatewayMulticastGroup_groupMember = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe Bool
groupMember :: Maybe Bool
$sel:groupMember:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Bool
groupMember} -> Maybe Bool
groupMember) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe Bool
a -> TransitGatewayMulticastGroup
s {$sel:groupMember:TransitGatewayMulticastGroup' :: Maybe Bool
groupMember = Maybe Bool
a} :: TransitGatewayMulticastGroup)

-- | Indicates that the resource is a transit gateway multicast group member.
transitGatewayMulticastGroup_groupSource :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe Prelude.Bool)
transitGatewayMulticastGroup_groupSource :: Lens' TransitGatewayMulticastGroup (Maybe Bool)
transitGatewayMulticastGroup_groupSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe Bool
groupSource :: Maybe Bool
$sel:groupSource:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Bool
groupSource} -> Maybe Bool
groupSource) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe Bool
a -> TransitGatewayMulticastGroup
s {$sel:groupSource:TransitGatewayMulticastGroup' :: Maybe Bool
groupSource = Maybe Bool
a} :: TransitGatewayMulticastGroup)

-- | The member type (for example, @static@).
transitGatewayMulticastGroup_memberType :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe MembershipType)
transitGatewayMulticastGroup_memberType :: Lens' TransitGatewayMulticastGroup (Maybe MembershipType)
transitGatewayMulticastGroup_memberType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe MembershipType
memberType :: Maybe MembershipType
$sel:memberType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe MembershipType
memberType} -> Maybe MembershipType
memberType) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe MembershipType
a -> TransitGatewayMulticastGroup
s {$sel:memberType:TransitGatewayMulticastGroup' :: Maybe MembershipType
memberType = Maybe MembershipType
a} :: TransitGatewayMulticastGroup)

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

-- | The ID of the resource.
transitGatewayMulticastGroup_resourceId :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe Prelude.Text)
transitGatewayMulticastGroup_resourceId :: Lens' TransitGatewayMulticastGroup (Maybe Text)
transitGatewayMulticastGroup_resourceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe Text
resourceId :: Maybe Text
$sel:resourceId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
resourceId} -> Maybe Text
resourceId) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe Text
a -> TransitGatewayMulticastGroup
s {$sel:resourceId:TransitGatewayMulticastGroup' :: Maybe Text
resourceId = Maybe Text
a} :: TransitGatewayMulticastGroup)

-- | The ID of the Amazon Web Services account that owns the transit gateway
-- multicast domain group resource.
transitGatewayMulticastGroup_resourceOwnerId :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe Prelude.Text)
transitGatewayMulticastGroup_resourceOwnerId :: Lens' TransitGatewayMulticastGroup (Maybe Text)
transitGatewayMulticastGroup_resourceOwnerId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe Text
resourceOwnerId :: Maybe Text
$sel:resourceOwnerId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
resourceOwnerId} -> Maybe Text
resourceOwnerId) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe Text
a -> TransitGatewayMulticastGroup
s {$sel:resourceOwnerId:TransitGatewayMulticastGroup' :: Maybe Text
resourceOwnerId = Maybe Text
a} :: TransitGatewayMulticastGroup)

-- | The type of resource, for example a VPC attachment.
transitGatewayMulticastGroup_resourceType :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe TransitGatewayAttachmentResourceType)
transitGatewayMulticastGroup_resourceType :: Lens'
  TransitGatewayMulticastGroup
  (Maybe TransitGatewayAttachmentResourceType)
transitGatewayMulticastGroup_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe TransitGatewayAttachmentResourceType
resourceType :: Maybe TransitGatewayAttachmentResourceType
$sel:resourceType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup
-> Maybe TransitGatewayAttachmentResourceType
resourceType} -> Maybe TransitGatewayAttachmentResourceType
resourceType) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe TransitGatewayAttachmentResourceType
a -> TransitGatewayMulticastGroup
s {$sel:resourceType:TransitGatewayMulticastGroup' :: Maybe TransitGatewayAttachmentResourceType
resourceType = Maybe TransitGatewayAttachmentResourceType
a} :: TransitGatewayMulticastGroup)

-- | The source type.
transitGatewayMulticastGroup_sourceType :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe MembershipType)
transitGatewayMulticastGroup_sourceType :: Lens' TransitGatewayMulticastGroup (Maybe MembershipType)
transitGatewayMulticastGroup_sourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe MembershipType
sourceType :: Maybe MembershipType
$sel:sourceType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe MembershipType
sourceType} -> Maybe MembershipType
sourceType) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe MembershipType
a -> TransitGatewayMulticastGroup
s {$sel:sourceType:TransitGatewayMulticastGroup' :: Maybe MembershipType
sourceType = Maybe MembershipType
a} :: TransitGatewayMulticastGroup)

-- | The ID of the subnet.
transitGatewayMulticastGroup_subnetId :: Lens.Lens' TransitGatewayMulticastGroup (Prelude.Maybe Prelude.Text)
transitGatewayMulticastGroup_subnetId :: Lens' TransitGatewayMulticastGroup (Maybe Text)
transitGatewayMulticastGroup_subnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayMulticastGroup' {Maybe Text
subnetId :: Maybe Text
$sel:subnetId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
subnetId} -> Maybe Text
subnetId) (\s :: TransitGatewayMulticastGroup
s@TransitGatewayMulticastGroup' {} Maybe Text
a -> TransitGatewayMulticastGroup
s {$sel:subnetId:TransitGatewayMulticastGroup' :: Maybe Text
subnetId = Maybe Text
a} :: TransitGatewayMulticastGroup)

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

instance Data.FromXML TransitGatewayMulticastGroup where
  parseXML :: [Node] -> Either String TransitGatewayMulticastGroup
parseXML [Node]
x =
    Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe MembershipType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe TransitGatewayAttachmentResourceType
-> Maybe MembershipType
-> Maybe Text
-> Maybe Text
-> TransitGatewayMulticastGroup
TransitGatewayMulticastGroup'
      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
"groupIpAddress")
      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
"groupMember")
      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
"groupSource")
      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
"memberType")
      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
"networkInterfaceId")
      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
"resourceId")
      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
"resourceOwnerId")
      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
"resourceType")
      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
"sourceType")
      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
"subnetId")
      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
    TransitGatewayMulticastGroup
  where
  hashWithSalt :: Int -> TransitGatewayMulticastGroup -> Int
hashWithSalt Int
_salt TransitGatewayMulticastGroup' {Maybe Bool
Maybe Text
Maybe MembershipType
Maybe TransitGatewayAttachmentResourceType
transitGatewayAttachmentId :: Maybe Text
subnetId :: Maybe Text
sourceType :: Maybe MembershipType
resourceType :: Maybe TransitGatewayAttachmentResourceType
resourceOwnerId :: Maybe Text
resourceId :: Maybe Text
networkInterfaceId :: Maybe Text
memberType :: Maybe MembershipType
groupSource :: Maybe Bool
groupMember :: Maybe Bool
groupIpAddress :: Maybe Text
$sel:transitGatewayAttachmentId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:subnetId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:sourceType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe MembershipType
$sel:resourceType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup
-> Maybe TransitGatewayAttachmentResourceType
$sel:resourceOwnerId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:resourceId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:networkInterfaceId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:memberType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe MembershipType
$sel:groupSource:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Bool
$sel:groupMember:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Bool
$sel:groupIpAddress:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
groupIpAddress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
groupMember
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
groupSource
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MembershipType
memberType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
networkInterfaceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceOwnerId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TransitGatewayAttachmentResourceType
resourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MembershipType
sourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subnetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
transitGatewayAttachmentId

instance Prelude.NFData TransitGatewayMulticastGroup where
  rnf :: TransitGatewayMulticastGroup -> ()
rnf TransitGatewayMulticastGroup' {Maybe Bool
Maybe Text
Maybe MembershipType
Maybe TransitGatewayAttachmentResourceType
transitGatewayAttachmentId :: Maybe Text
subnetId :: Maybe Text
sourceType :: Maybe MembershipType
resourceType :: Maybe TransitGatewayAttachmentResourceType
resourceOwnerId :: Maybe Text
resourceId :: Maybe Text
networkInterfaceId :: Maybe Text
memberType :: Maybe MembershipType
groupSource :: Maybe Bool
groupMember :: Maybe Bool
groupIpAddress :: Maybe Text
$sel:transitGatewayAttachmentId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:subnetId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:sourceType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe MembershipType
$sel:resourceType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup
-> Maybe TransitGatewayAttachmentResourceType
$sel:resourceOwnerId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:resourceId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:networkInterfaceId:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
$sel:memberType:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe MembershipType
$sel:groupSource:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Bool
$sel:groupMember:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Bool
$sel:groupIpAddress:TransitGatewayMulticastGroup' :: TransitGatewayMulticastGroup -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
groupIpAddress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
groupMember
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
groupSource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MembershipType
memberType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
networkInterfaceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceOwnerId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TransitGatewayAttachmentResourceType
resourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MembershipType
sourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subnetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
transitGatewayAttachmentId