{-# 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.IpamAddressHistoryRecord
-- 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.IpamAddressHistoryRecord 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.IpamAddressHistoryResourceType
import Amazonka.EC2.Types.IpamComplianceStatus
import Amazonka.EC2.Types.IpamOverlapStatus
import qualified Amazonka.Prelude as Prelude

-- | The historical record of a CIDR within an IPAM scope. For more
-- information, see
-- <https://docs.aws.amazon.com/vpc/latest/ipam/view-history-cidr-ipam.html View the history of IP addresses>
-- in the /Amazon VPC IPAM User Guide/.
--
-- /See:/ 'newIpamAddressHistoryRecord' smart constructor.
data IpamAddressHistoryRecord = IpamAddressHistoryRecord'
  { -- | The CIDR of the resource.
    IpamAddressHistoryRecord -> Maybe Text
resourceCidr :: Prelude.Maybe Prelude.Text,
    -- | The compliance status of a resource. For more information on compliance
    -- statuses, see
    -- <https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html Monitor CIDR usage by resource>
    -- in the /Amazon VPC IPAM User Guide/.
    IpamAddressHistoryRecord -> Maybe IpamComplianceStatus
resourceComplianceStatus :: Prelude.Maybe IpamComplianceStatus,
    -- | The ID of the resource.
    IpamAddressHistoryRecord -> Maybe Text
resourceId :: Prelude.Maybe Prelude.Text,
    -- | The name of the resource.
    IpamAddressHistoryRecord -> Maybe Text
resourceName :: Prelude.Maybe Prelude.Text,
    -- | The overlap status of an IPAM resource. The overlap status tells you if
    -- the CIDR for a resource overlaps with another CIDR in the scope. For
    -- more information on overlap statuses, see
    -- <https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html Monitor CIDR usage by resource>
    -- in the /Amazon VPC IPAM User Guide/.
    IpamAddressHistoryRecord -> Maybe IpamOverlapStatus
resourceOverlapStatus :: Prelude.Maybe IpamOverlapStatus,
    -- | The ID of the resource owner.
    IpamAddressHistoryRecord -> Maybe Text
resourceOwnerId :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services Region of the resource.
    IpamAddressHistoryRecord -> Maybe Text
resourceRegion :: Prelude.Maybe Prelude.Text,
    -- | The type of the resource.
    IpamAddressHistoryRecord -> Maybe IpamAddressHistoryResourceType
resourceType :: Prelude.Maybe IpamAddressHistoryResourceType,
    -- | Sampled end time of the resource-to-CIDR association within the IPAM
    -- scope. Changes are picked up in periodic snapshots, so the end time may
    -- have occurred before this specific time.
    IpamAddressHistoryRecord -> Maybe ISO8601
sampledEndTime :: Prelude.Maybe Data.ISO8601,
    -- | Sampled start time of the resource-to-CIDR association within the IPAM
    -- scope. Changes are picked up in periodic snapshots, so the start time
    -- may have occurred before this specific time.
    IpamAddressHistoryRecord -> Maybe ISO8601
sampledStartTime :: Prelude.Maybe Data.ISO8601,
    -- | The VPC ID of the resource.
    IpamAddressHistoryRecord -> Maybe Text
vpcId :: Prelude.Maybe Prelude.Text
  }
  deriving (IpamAddressHistoryRecord -> IpamAddressHistoryRecord -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IpamAddressHistoryRecord -> IpamAddressHistoryRecord -> Bool
$c/= :: IpamAddressHistoryRecord -> IpamAddressHistoryRecord -> Bool
== :: IpamAddressHistoryRecord -> IpamAddressHistoryRecord -> Bool
$c== :: IpamAddressHistoryRecord -> IpamAddressHistoryRecord -> Bool
Prelude.Eq, ReadPrec [IpamAddressHistoryRecord]
ReadPrec IpamAddressHistoryRecord
Int -> ReadS IpamAddressHistoryRecord
ReadS [IpamAddressHistoryRecord]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [IpamAddressHistoryRecord]
$creadListPrec :: ReadPrec [IpamAddressHistoryRecord]
readPrec :: ReadPrec IpamAddressHistoryRecord
$creadPrec :: ReadPrec IpamAddressHistoryRecord
readList :: ReadS [IpamAddressHistoryRecord]
$creadList :: ReadS [IpamAddressHistoryRecord]
readsPrec :: Int -> ReadS IpamAddressHistoryRecord
$creadsPrec :: Int -> ReadS IpamAddressHistoryRecord
Prelude.Read, Int -> IpamAddressHistoryRecord -> ShowS
[IpamAddressHistoryRecord] -> ShowS
IpamAddressHistoryRecord -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IpamAddressHistoryRecord] -> ShowS
$cshowList :: [IpamAddressHistoryRecord] -> ShowS
show :: IpamAddressHistoryRecord -> String
$cshow :: IpamAddressHistoryRecord -> String
showsPrec :: Int -> IpamAddressHistoryRecord -> ShowS
$cshowsPrec :: Int -> IpamAddressHistoryRecord -> ShowS
Prelude.Show, forall x.
Rep IpamAddressHistoryRecord x -> IpamAddressHistoryRecord
forall x.
IpamAddressHistoryRecord -> Rep IpamAddressHistoryRecord x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep IpamAddressHistoryRecord x -> IpamAddressHistoryRecord
$cfrom :: forall x.
IpamAddressHistoryRecord -> Rep IpamAddressHistoryRecord x
Prelude.Generic)

-- |
-- Create a value of 'IpamAddressHistoryRecord' 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:
--
-- 'resourceCidr', 'ipamAddressHistoryRecord_resourceCidr' - The CIDR of the resource.
--
-- 'resourceComplianceStatus', 'ipamAddressHistoryRecord_resourceComplianceStatus' - The compliance status of a resource. For more information on compliance
-- statuses, see
-- <https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html Monitor CIDR usage by resource>
-- in the /Amazon VPC IPAM User Guide/.
--
-- 'resourceId', 'ipamAddressHistoryRecord_resourceId' - The ID of the resource.
--
-- 'resourceName', 'ipamAddressHistoryRecord_resourceName' - The name of the resource.
--
-- 'resourceOverlapStatus', 'ipamAddressHistoryRecord_resourceOverlapStatus' - The overlap status of an IPAM resource. The overlap status tells you if
-- the CIDR for a resource overlaps with another CIDR in the scope. For
-- more information on overlap statuses, see
-- <https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html Monitor CIDR usage by resource>
-- in the /Amazon VPC IPAM User Guide/.
--
-- 'resourceOwnerId', 'ipamAddressHistoryRecord_resourceOwnerId' - The ID of the resource owner.
--
-- 'resourceRegion', 'ipamAddressHistoryRecord_resourceRegion' - The Amazon Web Services Region of the resource.
--
-- 'resourceType', 'ipamAddressHistoryRecord_resourceType' - The type of the resource.
--
-- 'sampledEndTime', 'ipamAddressHistoryRecord_sampledEndTime' - Sampled end time of the resource-to-CIDR association within the IPAM
-- scope. Changes are picked up in periodic snapshots, so the end time may
-- have occurred before this specific time.
--
-- 'sampledStartTime', 'ipamAddressHistoryRecord_sampledStartTime' - Sampled start time of the resource-to-CIDR association within the IPAM
-- scope. Changes are picked up in periodic snapshots, so the start time
-- may have occurred before this specific time.
--
-- 'vpcId', 'ipamAddressHistoryRecord_vpcId' - The VPC ID of the resource.
newIpamAddressHistoryRecord ::
  IpamAddressHistoryRecord
newIpamAddressHistoryRecord :: IpamAddressHistoryRecord
newIpamAddressHistoryRecord =
  IpamAddressHistoryRecord'
    { $sel:resourceCidr:IpamAddressHistoryRecord' :: Maybe Text
resourceCidr =
        forall a. Maybe a
Prelude.Nothing,
      $sel:resourceComplianceStatus:IpamAddressHistoryRecord' :: Maybe IpamComplianceStatus
resourceComplianceStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceId:IpamAddressHistoryRecord' :: Maybe Text
resourceId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceName:IpamAddressHistoryRecord' :: Maybe Text
resourceName = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceOverlapStatus:IpamAddressHistoryRecord' :: Maybe IpamOverlapStatus
resourceOverlapStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceOwnerId:IpamAddressHistoryRecord' :: Maybe Text
resourceOwnerId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceRegion:IpamAddressHistoryRecord' :: Maybe Text
resourceRegion = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceType:IpamAddressHistoryRecord' :: Maybe IpamAddressHistoryResourceType
resourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:sampledEndTime:IpamAddressHistoryRecord' :: Maybe ISO8601
sampledEndTime = forall a. Maybe a
Prelude.Nothing,
      $sel:sampledStartTime:IpamAddressHistoryRecord' :: Maybe ISO8601
sampledStartTime = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcId:IpamAddressHistoryRecord' :: Maybe Text
vpcId = forall a. Maybe a
Prelude.Nothing
    }

-- | The CIDR of the resource.
ipamAddressHistoryRecord_resourceCidr :: Lens.Lens' IpamAddressHistoryRecord (Prelude.Maybe Prelude.Text)
ipamAddressHistoryRecord_resourceCidr :: Lens' IpamAddressHistoryRecord (Maybe Text)
ipamAddressHistoryRecord_resourceCidr = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IpamAddressHistoryRecord' {Maybe Text
resourceCidr :: Maybe Text
$sel:resourceCidr:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
resourceCidr} -> Maybe Text
resourceCidr) (\s :: IpamAddressHistoryRecord
s@IpamAddressHistoryRecord' {} Maybe Text
a -> IpamAddressHistoryRecord
s {$sel:resourceCidr:IpamAddressHistoryRecord' :: Maybe Text
resourceCidr = Maybe Text
a} :: IpamAddressHistoryRecord)

-- | The compliance status of a resource. For more information on compliance
-- statuses, see
-- <https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html Monitor CIDR usage by resource>
-- in the /Amazon VPC IPAM User Guide/.
ipamAddressHistoryRecord_resourceComplianceStatus :: Lens.Lens' IpamAddressHistoryRecord (Prelude.Maybe IpamComplianceStatus)
ipamAddressHistoryRecord_resourceComplianceStatus :: Lens' IpamAddressHistoryRecord (Maybe IpamComplianceStatus)
ipamAddressHistoryRecord_resourceComplianceStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IpamAddressHistoryRecord' {Maybe IpamComplianceStatus
resourceComplianceStatus :: Maybe IpamComplianceStatus
$sel:resourceComplianceStatus:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamComplianceStatus
resourceComplianceStatus} -> Maybe IpamComplianceStatus
resourceComplianceStatus) (\s :: IpamAddressHistoryRecord
s@IpamAddressHistoryRecord' {} Maybe IpamComplianceStatus
a -> IpamAddressHistoryRecord
s {$sel:resourceComplianceStatus:IpamAddressHistoryRecord' :: Maybe IpamComplianceStatus
resourceComplianceStatus = Maybe IpamComplianceStatus
a} :: IpamAddressHistoryRecord)

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

-- | The name of the resource.
ipamAddressHistoryRecord_resourceName :: Lens.Lens' IpamAddressHistoryRecord (Prelude.Maybe Prelude.Text)
ipamAddressHistoryRecord_resourceName :: Lens' IpamAddressHistoryRecord (Maybe Text)
ipamAddressHistoryRecord_resourceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IpamAddressHistoryRecord' {Maybe Text
resourceName :: Maybe Text
$sel:resourceName:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
resourceName} -> Maybe Text
resourceName) (\s :: IpamAddressHistoryRecord
s@IpamAddressHistoryRecord' {} Maybe Text
a -> IpamAddressHistoryRecord
s {$sel:resourceName:IpamAddressHistoryRecord' :: Maybe Text
resourceName = Maybe Text
a} :: IpamAddressHistoryRecord)

-- | The overlap status of an IPAM resource. The overlap status tells you if
-- the CIDR for a resource overlaps with another CIDR in the scope. For
-- more information on overlap statuses, see
-- <https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html Monitor CIDR usage by resource>
-- in the /Amazon VPC IPAM User Guide/.
ipamAddressHistoryRecord_resourceOverlapStatus :: Lens.Lens' IpamAddressHistoryRecord (Prelude.Maybe IpamOverlapStatus)
ipamAddressHistoryRecord_resourceOverlapStatus :: Lens' IpamAddressHistoryRecord (Maybe IpamOverlapStatus)
ipamAddressHistoryRecord_resourceOverlapStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IpamAddressHistoryRecord' {Maybe IpamOverlapStatus
resourceOverlapStatus :: Maybe IpamOverlapStatus
$sel:resourceOverlapStatus:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamOverlapStatus
resourceOverlapStatus} -> Maybe IpamOverlapStatus
resourceOverlapStatus) (\s :: IpamAddressHistoryRecord
s@IpamAddressHistoryRecord' {} Maybe IpamOverlapStatus
a -> IpamAddressHistoryRecord
s {$sel:resourceOverlapStatus:IpamAddressHistoryRecord' :: Maybe IpamOverlapStatus
resourceOverlapStatus = Maybe IpamOverlapStatus
a} :: IpamAddressHistoryRecord)

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

-- | The Amazon Web Services Region of the resource.
ipamAddressHistoryRecord_resourceRegion :: Lens.Lens' IpamAddressHistoryRecord (Prelude.Maybe Prelude.Text)
ipamAddressHistoryRecord_resourceRegion :: Lens' IpamAddressHistoryRecord (Maybe Text)
ipamAddressHistoryRecord_resourceRegion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IpamAddressHistoryRecord' {Maybe Text
resourceRegion :: Maybe Text
$sel:resourceRegion:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
resourceRegion} -> Maybe Text
resourceRegion) (\s :: IpamAddressHistoryRecord
s@IpamAddressHistoryRecord' {} Maybe Text
a -> IpamAddressHistoryRecord
s {$sel:resourceRegion:IpamAddressHistoryRecord' :: Maybe Text
resourceRegion = Maybe Text
a} :: IpamAddressHistoryRecord)

-- | The type of the resource.
ipamAddressHistoryRecord_resourceType :: Lens.Lens' IpamAddressHistoryRecord (Prelude.Maybe IpamAddressHistoryResourceType)
ipamAddressHistoryRecord_resourceType :: Lens'
  IpamAddressHistoryRecord (Maybe IpamAddressHistoryResourceType)
ipamAddressHistoryRecord_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IpamAddressHistoryRecord' {Maybe IpamAddressHistoryResourceType
resourceType :: Maybe IpamAddressHistoryResourceType
$sel:resourceType:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamAddressHistoryResourceType
resourceType} -> Maybe IpamAddressHistoryResourceType
resourceType) (\s :: IpamAddressHistoryRecord
s@IpamAddressHistoryRecord' {} Maybe IpamAddressHistoryResourceType
a -> IpamAddressHistoryRecord
s {$sel:resourceType:IpamAddressHistoryRecord' :: Maybe IpamAddressHistoryResourceType
resourceType = Maybe IpamAddressHistoryResourceType
a} :: IpamAddressHistoryRecord)

-- | Sampled end time of the resource-to-CIDR association within the IPAM
-- scope. Changes are picked up in periodic snapshots, so the end time may
-- have occurred before this specific time.
ipamAddressHistoryRecord_sampledEndTime :: Lens.Lens' IpamAddressHistoryRecord (Prelude.Maybe Prelude.UTCTime)
ipamAddressHistoryRecord_sampledEndTime :: Lens' IpamAddressHistoryRecord (Maybe UTCTime)
ipamAddressHistoryRecord_sampledEndTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IpamAddressHistoryRecord' {Maybe ISO8601
sampledEndTime :: Maybe ISO8601
$sel:sampledEndTime:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe ISO8601
sampledEndTime} -> Maybe ISO8601
sampledEndTime) (\s :: IpamAddressHistoryRecord
s@IpamAddressHistoryRecord' {} Maybe ISO8601
a -> IpamAddressHistoryRecord
s {$sel:sampledEndTime:IpamAddressHistoryRecord' :: Maybe ISO8601
sampledEndTime = Maybe ISO8601
a} :: IpamAddressHistoryRecord) 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

-- | Sampled start time of the resource-to-CIDR association within the IPAM
-- scope. Changes are picked up in periodic snapshots, so the start time
-- may have occurred before this specific time.
ipamAddressHistoryRecord_sampledStartTime :: Lens.Lens' IpamAddressHistoryRecord (Prelude.Maybe Prelude.UTCTime)
ipamAddressHistoryRecord_sampledStartTime :: Lens' IpamAddressHistoryRecord (Maybe UTCTime)
ipamAddressHistoryRecord_sampledStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IpamAddressHistoryRecord' {Maybe ISO8601
sampledStartTime :: Maybe ISO8601
$sel:sampledStartTime:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe ISO8601
sampledStartTime} -> Maybe ISO8601
sampledStartTime) (\s :: IpamAddressHistoryRecord
s@IpamAddressHistoryRecord' {} Maybe ISO8601
a -> IpamAddressHistoryRecord
s {$sel:sampledStartTime:IpamAddressHistoryRecord' :: Maybe ISO8601
sampledStartTime = Maybe ISO8601
a} :: IpamAddressHistoryRecord) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

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

instance Data.FromXML IpamAddressHistoryRecord where
  parseXML :: [Node] -> Either String IpamAddressHistoryRecord
parseXML [Node]
x =
    Maybe Text
-> Maybe IpamComplianceStatus
-> Maybe Text
-> Maybe Text
-> Maybe IpamOverlapStatus
-> Maybe Text
-> Maybe Text
-> Maybe IpamAddressHistoryResourceType
-> Maybe ISO8601
-> Maybe ISO8601
-> Maybe Text
-> IpamAddressHistoryRecord
IpamAddressHistoryRecord'
      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
"resourceCidr")
      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
"resourceComplianceStatus")
      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
"resourceName")
      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
"resourceOverlapStatus")
      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
"resourceRegion")
      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
"sampledEndTime")
      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
"sampledStartTime")
      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
"vpcId")

instance Prelude.Hashable IpamAddressHistoryRecord where
  hashWithSalt :: Int -> IpamAddressHistoryRecord -> Int
hashWithSalt Int
_salt IpamAddressHistoryRecord' {Maybe Text
Maybe ISO8601
Maybe IpamAddressHistoryResourceType
Maybe IpamComplianceStatus
Maybe IpamOverlapStatus
vpcId :: Maybe Text
sampledStartTime :: Maybe ISO8601
sampledEndTime :: Maybe ISO8601
resourceType :: Maybe IpamAddressHistoryResourceType
resourceRegion :: Maybe Text
resourceOwnerId :: Maybe Text
resourceOverlapStatus :: Maybe IpamOverlapStatus
resourceName :: Maybe Text
resourceId :: Maybe Text
resourceComplianceStatus :: Maybe IpamComplianceStatus
resourceCidr :: Maybe Text
$sel:vpcId:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:sampledStartTime:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe ISO8601
$sel:sampledEndTime:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe ISO8601
$sel:resourceType:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamAddressHistoryResourceType
$sel:resourceRegion:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:resourceOwnerId:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:resourceOverlapStatus:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamOverlapStatus
$sel:resourceName:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:resourceId:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:resourceComplianceStatus:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamComplianceStatus
$sel:resourceCidr:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceCidr
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IpamComplianceStatus
resourceComplianceStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IpamOverlapStatus
resourceOverlapStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceOwnerId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceRegion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IpamAddressHistoryResourceType
resourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
sampledEndTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
sampledStartTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
vpcId

instance Prelude.NFData IpamAddressHistoryRecord where
  rnf :: IpamAddressHistoryRecord -> ()
rnf IpamAddressHistoryRecord' {Maybe Text
Maybe ISO8601
Maybe IpamAddressHistoryResourceType
Maybe IpamComplianceStatus
Maybe IpamOverlapStatus
vpcId :: Maybe Text
sampledStartTime :: Maybe ISO8601
sampledEndTime :: Maybe ISO8601
resourceType :: Maybe IpamAddressHistoryResourceType
resourceRegion :: Maybe Text
resourceOwnerId :: Maybe Text
resourceOverlapStatus :: Maybe IpamOverlapStatus
resourceName :: Maybe Text
resourceId :: Maybe Text
resourceComplianceStatus :: Maybe IpamComplianceStatus
resourceCidr :: Maybe Text
$sel:vpcId:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:sampledStartTime:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe ISO8601
$sel:sampledEndTime:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe ISO8601
$sel:resourceType:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamAddressHistoryResourceType
$sel:resourceRegion:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:resourceOwnerId:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:resourceOverlapStatus:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamOverlapStatus
$sel:resourceName:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:resourceId:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
$sel:resourceComplianceStatus:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe IpamComplianceStatus
$sel:resourceCidr:IpamAddressHistoryRecord' :: IpamAddressHistoryRecord -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceCidr
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IpamComplianceStatus
resourceComplianceStatus
      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
resourceName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IpamOverlapStatus
resourceOverlapStatus
      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 Text
resourceRegion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IpamAddressHistoryResourceType
resourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
sampledEndTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
sampledStartTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
vpcId