{-# 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.EC2.ProvisionPublicIpv4PoolCidr
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Provision a CIDR to a public IPv4 pool.
--
-- For more information about IPAM, see
-- <https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html What is IPAM?>
-- in the /Amazon VPC IPAM User Guide/.
module Amazonka.EC2.ProvisionPublicIpv4PoolCidr
  ( -- * Creating a Request
    ProvisionPublicIpv4PoolCidr (..),
    newProvisionPublicIpv4PoolCidr,

    -- * Request Lenses
    provisionPublicIpv4PoolCidr_dryRun,
    provisionPublicIpv4PoolCidr_ipamPoolId,
    provisionPublicIpv4PoolCidr_poolId,
    provisionPublicIpv4PoolCidr_netmaskLength,

    -- * Destructuring the Response
    ProvisionPublicIpv4PoolCidrResponse (..),
    newProvisionPublicIpv4PoolCidrResponse,

    -- * Response Lenses
    provisionPublicIpv4PoolCidrResponse_poolAddressRange,
    provisionPublicIpv4PoolCidrResponse_poolId,
    provisionPublicIpv4PoolCidrResponse_httpStatus,
  )
where

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

-- | /See:/ 'newProvisionPublicIpv4PoolCidr' smart constructor.
data ProvisionPublicIpv4PoolCidr = ProvisionPublicIpv4PoolCidr'
  { -- | A check for whether you have the required permissions for the action
    -- without actually making the request and provides an error response. If
    -- you have the required permissions, the error response is
    -- @DryRunOperation@. Otherwise, it is @UnauthorizedOperation@.
    ProvisionPublicIpv4PoolCidr -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The ID of the IPAM pool you would like to use to allocate this CIDR.
    ProvisionPublicIpv4PoolCidr -> Text
ipamPoolId :: Prelude.Text,
    -- | The ID of the public IPv4 pool you would like to use for this CIDR.
    ProvisionPublicIpv4PoolCidr -> Text
poolId :: Prelude.Text,
    -- | The netmask length of the CIDR you would like to allocate to the public
    -- IPv4 pool.
    ProvisionPublicIpv4PoolCidr -> Int
netmaskLength :: Prelude.Int
  }
  deriving (ProvisionPublicIpv4PoolCidr -> ProvisionPublicIpv4PoolCidr -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ProvisionPublicIpv4PoolCidr -> ProvisionPublicIpv4PoolCidr -> Bool
$c/= :: ProvisionPublicIpv4PoolCidr -> ProvisionPublicIpv4PoolCidr -> Bool
== :: ProvisionPublicIpv4PoolCidr -> ProvisionPublicIpv4PoolCidr -> Bool
$c== :: ProvisionPublicIpv4PoolCidr -> ProvisionPublicIpv4PoolCidr -> Bool
Prelude.Eq, ReadPrec [ProvisionPublicIpv4PoolCidr]
ReadPrec ProvisionPublicIpv4PoolCidr
Int -> ReadS ProvisionPublicIpv4PoolCidr
ReadS [ProvisionPublicIpv4PoolCidr]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ProvisionPublicIpv4PoolCidr]
$creadListPrec :: ReadPrec [ProvisionPublicIpv4PoolCidr]
readPrec :: ReadPrec ProvisionPublicIpv4PoolCidr
$creadPrec :: ReadPrec ProvisionPublicIpv4PoolCidr
readList :: ReadS [ProvisionPublicIpv4PoolCidr]
$creadList :: ReadS [ProvisionPublicIpv4PoolCidr]
readsPrec :: Int -> ReadS ProvisionPublicIpv4PoolCidr
$creadsPrec :: Int -> ReadS ProvisionPublicIpv4PoolCidr
Prelude.Read, Int -> ProvisionPublicIpv4PoolCidr -> ShowS
[ProvisionPublicIpv4PoolCidr] -> ShowS
ProvisionPublicIpv4PoolCidr -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ProvisionPublicIpv4PoolCidr] -> ShowS
$cshowList :: [ProvisionPublicIpv4PoolCidr] -> ShowS
show :: ProvisionPublicIpv4PoolCidr -> String
$cshow :: ProvisionPublicIpv4PoolCidr -> String
showsPrec :: Int -> ProvisionPublicIpv4PoolCidr -> ShowS
$cshowsPrec :: Int -> ProvisionPublicIpv4PoolCidr -> ShowS
Prelude.Show, forall x.
Rep ProvisionPublicIpv4PoolCidr x -> ProvisionPublicIpv4PoolCidr
forall x.
ProvisionPublicIpv4PoolCidr -> Rep ProvisionPublicIpv4PoolCidr x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ProvisionPublicIpv4PoolCidr x -> ProvisionPublicIpv4PoolCidr
$cfrom :: forall x.
ProvisionPublicIpv4PoolCidr -> Rep ProvisionPublicIpv4PoolCidr x
Prelude.Generic)

-- |
-- Create a value of 'ProvisionPublicIpv4PoolCidr' 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:
--
-- 'dryRun', 'provisionPublicIpv4PoolCidr_dryRun' - A check for whether you have the required permissions for the action
-- without actually making the request and provides an error response. If
-- you have the required permissions, the error response is
-- @DryRunOperation@. Otherwise, it is @UnauthorizedOperation@.
--
-- 'ipamPoolId', 'provisionPublicIpv4PoolCidr_ipamPoolId' - The ID of the IPAM pool you would like to use to allocate this CIDR.
--
-- 'poolId', 'provisionPublicIpv4PoolCidr_poolId' - The ID of the public IPv4 pool you would like to use for this CIDR.
--
-- 'netmaskLength', 'provisionPublicIpv4PoolCidr_netmaskLength' - The netmask length of the CIDR you would like to allocate to the public
-- IPv4 pool.
newProvisionPublicIpv4PoolCidr ::
  -- | 'ipamPoolId'
  Prelude.Text ->
  -- | 'poolId'
  Prelude.Text ->
  -- | 'netmaskLength'
  Prelude.Int ->
  ProvisionPublicIpv4PoolCidr
newProvisionPublicIpv4PoolCidr :: Text -> Text -> Int -> ProvisionPublicIpv4PoolCidr
newProvisionPublicIpv4PoolCidr
  Text
pIpamPoolId_
  Text
pPoolId_
  Int
pNetmaskLength_ =
    ProvisionPublicIpv4PoolCidr'
      { $sel:dryRun:ProvisionPublicIpv4PoolCidr' :: Maybe Bool
dryRun =
          forall a. Maybe a
Prelude.Nothing,
        $sel:ipamPoolId:ProvisionPublicIpv4PoolCidr' :: Text
ipamPoolId = Text
pIpamPoolId_,
        $sel:poolId:ProvisionPublicIpv4PoolCidr' :: Text
poolId = Text
pPoolId_,
        $sel:netmaskLength:ProvisionPublicIpv4PoolCidr' :: Int
netmaskLength = Int
pNetmaskLength_
      }

-- | A check for whether you have the required permissions for the action
-- without actually making the request and provides an error response. If
-- you have the required permissions, the error response is
-- @DryRunOperation@. Otherwise, it is @UnauthorizedOperation@.
provisionPublicIpv4PoolCidr_dryRun :: Lens.Lens' ProvisionPublicIpv4PoolCidr (Prelude.Maybe Prelude.Bool)
provisionPublicIpv4PoolCidr_dryRun :: Lens' ProvisionPublicIpv4PoolCidr (Maybe Bool)
provisionPublicIpv4PoolCidr_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionPublicIpv4PoolCidr' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: ProvisionPublicIpv4PoolCidr
s@ProvisionPublicIpv4PoolCidr' {} Maybe Bool
a -> ProvisionPublicIpv4PoolCidr
s {$sel:dryRun:ProvisionPublicIpv4PoolCidr' :: Maybe Bool
dryRun = Maybe Bool
a} :: ProvisionPublicIpv4PoolCidr)

-- | The ID of the IPAM pool you would like to use to allocate this CIDR.
provisionPublicIpv4PoolCidr_ipamPoolId :: Lens.Lens' ProvisionPublicIpv4PoolCidr Prelude.Text
provisionPublicIpv4PoolCidr_ipamPoolId :: Lens' ProvisionPublicIpv4PoolCidr Text
provisionPublicIpv4PoolCidr_ipamPoolId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionPublicIpv4PoolCidr' {Text
ipamPoolId :: Text
$sel:ipamPoolId:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Text
ipamPoolId} -> Text
ipamPoolId) (\s :: ProvisionPublicIpv4PoolCidr
s@ProvisionPublicIpv4PoolCidr' {} Text
a -> ProvisionPublicIpv4PoolCidr
s {$sel:ipamPoolId:ProvisionPublicIpv4PoolCidr' :: Text
ipamPoolId = Text
a} :: ProvisionPublicIpv4PoolCidr)

-- | The ID of the public IPv4 pool you would like to use for this CIDR.
provisionPublicIpv4PoolCidr_poolId :: Lens.Lens' ProvisionPublicIpv4PoolCidr Prelude.Text
provisionPublicIpv4PoolCidr_poolId :: Lens' ProvisionPublicIpv4PoolCidr Text
provisionPublicIpv4PoolCidr_poolId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionPublicIpv4PoolCidr' {Text
poolId :: Text
$sel:poolId:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Text
poolId} -> Text
poolId) (\s :: ProvisionPublicIpv4PoolCidr
s@ProvisionPublicIpv4PoolCidr' {} Text
a -> ProvisionPublicIpv4PoolCidr
s {$sel:poolId:ProvisionPublicIpv4PoolCidr' :: Text
poolId = Text
a} :: ProvisionPublicIpv4PoolCidr)

-- | The netmask length of the CIDR you would like to allocate to the public
-- IPv4 pool.
provisionPublicIpv4PoolCidr_netmaskLength :: Lens.Lens' ProvisionPublicIpv4PoolCidr Prelude.Int
provisionPublicIpv4PoolCidr_netmaskLength :: Lens' ProvisionPublicIpv4PoolCidr Int
provisionPublicIpv4PoolCidr_netmaskLength = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionPublicIpv4PoolCidr' {Int
netmaskLength :: Int
$sel:netmaskLength:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Int
netmaskLength} -> Int
netmaskLength) (\s :: ProvisionPublicIpv4PoolCidr
s@ProvisionPublicIpv4PoolCidr' {} Int
a -> ProvisionPublicIpv4PoolCidr
s {$sel:netmaskLength:ProvisionPublicIpv4PoolCidr' :: Int
netmaskLength = Int
a} :: ProvisionPublicIpv4PoolCidr)

instance Core.AWSRequest ProvisionPublicIpv4PoolCidr where
  type
    AWSResponse ProvisionPublicIpv4PoolCidr =
      ProvisionPublicIpv4PoolCidrResponse
  request :: (Service -> Service)
-> ProvisionPublicIpv4PoolCidr
-> Request ProvisionPublicIpv4PoolCidr
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ProvisionPublicIpv4PoolCidr
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ProvisionPublicIpv4PoolCidr)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe PublicIpv4PoolRange
-> Maybe Text -> Int -> ProvisionPublicIpv4PoolCidrResponse
ProvisionPublicIpv4PoolCidrResponse'
            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
"poolAddressRange")
            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
"poolId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable ProvisionPublicIpv4PoolCidr where
  hashWithSalt :: Int -> ProvisionPublicIpv4PoolCidr -> Int
hashWithSalt Int
_salt ProvisionPublicIpv4PoolCidr' {Int
Maybe Bool
Text
netmaskLength :: Int
poolId :: Text
ipamPoolId :: Text
dryRun :: Maybe Bool
$sel:netmaskLength:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Int
$sel:poolId:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Text
$sel:ipamPoolId:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Text
$sel:dryRun:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
ipamPoolId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
poolId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Int
netmaskLength

instance Prelude.NFData ProvisionPublicIpv4PoolCidr where
  rnf :: ProvisionPublicIpv4PoolCidr -> ()
rnf ProvisionPublicIpv4PoolCidr' {Int
Maybe Bool
Text
netmaskLength :: Int
poolId :: Text
ipamPoolId :: Text
dryRun :: Maybe Bool
$sel:netmaskLength:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Int
$sel:poolId:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Text
$sel:ipamPoolId:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Text
$sel:dryRun:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
ipamPoolId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
poolId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
netmaskLength

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

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

instance Data.ToQuery ProvisionPublicIpv4PoolCidr where
  toQuery :: ProvisionPublicIpv4PoolCidr -> QueryString
toQuery ProvisionPublicIpv4PoolCidr' {Int
Maybe Bool
Text
netmaskLength :: Int
poolId :: Text
ipamPoolId :: Text
dryRun :: Maybe Bool
$sel:netmaskLength:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Int
$sel:poolId:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Text
$sel:ipamPoolId:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Text
$sel:dryRun:ProvisionPublicIpv4PoolCidr' :: ProvisionPublicIpv4PoolCidr -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"ProvisionPublicIpv4PoolCidr" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"IpamPoolId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
ipamPoolId,
        ByteString
"PoolId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
poolId,
        ByteString
"NetmaskLength" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Int
netmaskLength
      ]

-- | /See:/ 'newProvisionPublicIpv4PoolCidrResponse' smart constructor.
data ProvisionPublicIpv4PoolCidrResponse = ProvisionPublicIpv4PoolCidrResponse'
  { -- | Information about the address range of the public IPv4 pool.
    ProvisionPublicIpv4PoolCidrResponse -> Maybe PublicIpv4PoolRange
poolAddressRange :: Prelude.Maybe PublicIpv4PoolRange,
    -- | The ID of the pool that you want to provision the CIDR to.
    ProvisionPublicIpv4PoolCidrResponse -> Maybe Text
poolId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ProvisionPublicIpv4PoolCidrResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ProvisionPublicIpv4PoolCidrResponse
-> ProvisionPublicIpv4PoolCidrResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ProvisionPublicIpv4PoolCidrResponse
-> ProvisionPublicIpv4PoolCidrResponse -> Bool
$c/= :: ProvisionPublicIpv4PoolCidrResponse
-> ProvisionPublicIpv4PoolCidrResponse -> Bool
== :: ProvisionPublicIpv4PoolCidrResponse
-> ProvisionPublicIpv4PoolCidrResponse -> Bool
$c== :: ProvisionPublicIpv4PoolCidrResponse
-> ProvisionPublicIpv4PoolCidrResponse -> Bool
Prelude.Eq, ReadPrec [ProvisionPublicIpv4PoolCidrResponse]
ReadPrec ProvisionPublicIpv4PoolCidrResponse
Int -> ReadS ProvisionPublicIpv4PoolCidrResponse
ReadS [ProvisionPublicIpv4PoolCidrResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ProvisionPublicIpv4PoolCidrResponse]
$creadListPrec :: ReadPrec [ProvisionPublicIpv4PoolCidrResponse]
readPrec :: ReadPrec ProvisionPublicIpv4PoolCidrResponse
$creadPrec :: ReadPrec ProvisionPublicIpv4PoolCidrResponse
readList :: ReadS [ProvisionPublicIpv4PoolCidrResponse]
$creadList :: ReadS [ProvisionPublicIpv4PoolCidrResponse]
readsPrec :: Int -> ReadS ProvisionPublicIpv4PoolCidrResponse
$creadsPrec :: Int -> ReadS ProvisionPublicIpv4PoolCidrResponse
Prelude.Read, Int -> ProvisionPublicIpv4PoolCidrResponse -> ShowS
[ProvisionPublicIpv4PoolCidrResponse] -> ShowS
ProvisionPublicIpv4PoolCidrResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ProvisionPublicIpv4PoolCidrResponse] -> ShowS
$cshowList :: [ProvisionPublicIpv4PoolCidrResponse] -> ShowS
show :: ProvisionPublicIpv4PoolCidrResponse -> String
$cshow :: ProvisionPublicIpv4PoolCidrResponse -> String
showsPrec :: Int -> ProvisionPublicIpv4PoolCidrResponse -> ShowS
$cshowsPrec :: Int -> ProvisionPublicIpv4PoolCidrResponse -> ShowS
Prelude.Show, forall x.
Rep ProvisionPublicIpv4PoolCidrResponse x
-> ProvisionPublicIpv4PoolCidrResponse
forall x.
ProvisionPublicIpv4PoolCidrResponse
-> Rep ProvisionPublicIpv4PoolCidrResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ProvisionPublicIpv4PoolCidrResponse x
-> ProvisionPublicIpv4PoolCidrResponse
$cfrom :: forall x.
ProvisionPublicIpv4PoolCidrResponse
-> Rep ProvisionPublicIpv4PoolCidrResponse x
Prelude.Generic)

-- |
-- Create a value of 'ProvisionPublicIpv4PoolCidrResponse' 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:
--
-- 'poolAddressRange', 'provisionPublicIpv4PoolCidrResponse_poolAddressRange' - Information about the address range of the public IPv4 pool.
--
-- 'poolId', 'provisionPublicIpv4PoolCidrResponse_poolId' - The ID of the pool that you want to provision the CIDR to.
--
-- 'httpStatus', 'provisionPublicIpv4PoolCidrResponse_httpStatus' - The response's http status code.
newProvisionPublicIpv4PoolCidrResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ProvisionPublicIpv4PoolCidrResponse
newProvisionPublicIpv4PoolCidrResponse :: Int -> ProvisionPublicIpv4PoolCidrResponse
newProvisionPublicIpv4PoolCidrResponse Int
pHttpStatus_ =
  ProvisionPublicIpv4PoolCidrResponse'
    { $sel:poolAddressRange:ProvisionPublicIpv4PoolCidrResponse' :: Maybe PublicIpv4PoolRange
poolAddressRange =
        forall a. Maybe a
Prelude.Nothing,
      $sel:poolId:ProvisionPublicIpv4PoolCidrResponse' :: Maybe Text
poolId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ProvisionPublicIpv4PoolCidrResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the address range of the public IPv4 pool.
provisionPublicIpv4PoolCidrResponse_poolAddressRange :: Lens.Lens' ProvisionPublicIpv4PoolCidrResponse (Prelude.Maybe PublicIpv4PoolRange)
provisionPublicIpv4PoolCidrResponse_poolAddressRange :: Lens'
  ProvisionPublicIpv4PoolCidrResponse (Maybe PublicIpv4PoolRange)
provisionPublicIpv4PoolCidrResponse_poolAddressRange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionPublicIpv4PoolCidrResponse' {Maybe PublicIpv4PoolRange
poolAddressRange :: Maybe PublicIpv4PoolRange
$sel:poolAddressRange:ProvisionPublicIpv4PoolCidrResponse' :: ProvisionPublicIpv4PoolCidrResponse -> Maybe PublicIpv4PoolRange
poolAddressRange} -> Maybe PublicIpv4PoolRange
poolAddressRange) (\s :: ProvisionPublicIpv4PoolCidrResponse
s@ProvisionPublicIpv4PoolCidrResponse' {} Maybe PublicIpv4PoolRange
a -> ProvisionPublicIpv4PoolCidrResponse
s {$sel:poolAddressRange:ProvisionPublicIpv4PoolCidrResponse' :: Maybe PublicIpv4PoolRange
poolAddressRange = Maybe PublicIpv4PoolRange
a} :: ProvisionPublicIpv4PoolCidrResponse)

-- | The ID of the pool that you want to provision the CIDR to.
provisionPublicIpv4PoolCidrResponse_poolId :: Lens.Lens' ProvisionPublicIpv4PoolCidrResponse (Prelude.Maybe Prelude.Text)
provisionPublicIpv4PoolCidrResponse_poolId :: Lens' ProvisionPublicIpv4PoolCidrResponse (Maybe Text)
provisionPublicIpv4PoolCidrResponse_poolId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionPublicIpv4PoolCidrResponse' {Maybe Text
poolId :: Maybe Text
$sel:poolId:ProvisionPublicIpv4PoolCidrResponse' :: ProvisionPublicIpv4PoolCidrResponse -> Maybe Text
poolId} -> Maybe Text
poolId) (\s :: ProvisionPublicIpv4PoolCidrResponse
s@ProvisionPublicIpv4PoolCidrResponse' {} Maybe Text
a -> ProvisionPublicIpv4PoolCidrResponse
s {$sel:poolId:ProvisionPublicIpv4PoolCidrResponse' :: Maybe Text
poolId = Maybe Text
a} :: ProvisionPublicIpv4PoolCidrResponse)

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

instance
  Prelude.NFData
    ProvisionPublicIpv4PoolCidrResponse
  where
  rnf :: ProvisionPublicIpv4PoolCidrResponse -> ()
rnf ProvisionPublicIpv4PoolCidrResponse' {Int
Maybe Text
Maybe PublicIpv4PoolRange
httpStatus :: Int
poolId :: Maybe Text
poolAddressRange :: Maybe PublicIpv4PoolRange
$sel:httpStatus:ProvisionPublicIpv4PoolCidrResponse' :: ProvisionPublicIpv4PoolCidrResponse -> Int
$sel:poolId:ProvisionPublicIpv4PoolCidrResponse' :: ProvisionPublicIpv4PoolCidrResponse -> Maybe Text
$sel:poolAddressRange:ProvisionPublicIpv4PoolCidrResponse' :: ProvisionPublicIpv4PoolCidrResponse -> Maybe PublicIpv4PoolRange
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe PublicIpv4PoolRange
poolAddressRange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
poolId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus