packages feed

amazonka-ec2-2.0: gen/Amazonka/EC2/MoveByoipCidrToIpam.hs

{-# 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.MoveByoipCidrToIpam
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Move an BYOIP IPv4 CIDR to IPAM from a public IPv4 pool.
--
-- If you already have an IPv4 BYOIP CIDR with Amazon Web Services, you can
-- move the CIDR to IPAM from a public IPv4 pool. You cannot move an IPv6
-- CIDR to IPAM. If you are bringing a new IP address to Amazon Web
-- Services for the first time, complete the steps in
-- <https://docs.aws.amazon.com/vpc/latest/ipam/tutorials-byoip-ipam.html Tutorial: BYOIP address CIDRs to IPAM>.
module Amazonka.EC2.MoveByoipCidrToIpam
  ( -- * Creating a Request
    MoveByoipCidrToIpam (..),
    newMoveByoipCidrToIpam,

    -- * Request Lenses
    moveByoipCidrToIpam_dryRun,
    moveByoipCidrToIpam_cidr,
    moveByoipCidrToIpam_ipamPoolId,
    moveByoipCidrToIpam_ipamPoolOwner,

    -- * Destructuring the Response
    MoveByoipCidrToIpamResponse (..),
    newMoveByoipCidrToIpamResponse,

    -- * Response Lenses
    moveByoipCidrToIpamResponse_byoipCidr,
    moveByoipCidrToIpamResponse_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:/ 'newMoveByoipCidrToIpam' smart constructor.
data MoveByoipCidrToIpam = MoveByoipCidrToIpam'
  { -- | 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@.
    dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The BYOIP CIDR.
    cidr :: Prelude.Text,
    -- | The IPAM pool ID.
    ipamPoolId :: Prelude.Text,
    -- | The Amazon Web Services account ID of the owner of the IPAM pool.
    ipamPoolOwner :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'MoveByoipCidrToIpam' 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', 'moveByoipCidrToIpam_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@.
--
-- 'cidr', 'moveByoipCidrToIpam_cidr' - The BYOIP CIDR.
--
-- 'ipamPoolId', 'moveByoipCidrToIpam_ipamPoolId' - The IPAM pool ID.
--
-- 'ipamPoolOwner', 'moveByoipCidrToIpam_ipamPoolOwner' - The Amazon Web Services account ID of the owner of the IPAM pool.
newMoveByoipCidrToIpam ::
  -- | 'cidr'
  Prelude.Text ->
  -- | 'ipamPoolId'
  Prelude.Text ->
  -- | 'ipamPoolOwner'
  Prelude.Text ->
  MoveByoipCidrToIpam
newMoveByoipCidrToIpam
  pCidr_
  pIpamPoolId_
  pIpamPoolOwner_ =
    MoveByoipCidrToIpam'
      { dryRun = Prelude.Nothing,
        cidr = pCidr_,
        ipamPoolId = pIpamPoolId_,
        ipamPoolOwner = pIpamPoolOwner_
      }

-- | 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@.
moveByoipCidrToIpam_dryRun :: Lens.Lens' MoveByoipCidrToIpam (Prelude.Maybe Prelude.Bool)
moveByoipCidrToIpam_dryRun = Lens.lens (\MoveByoipCidrToIpam' {dryRun} -> dryRun) (\s@MoveByoipCidrToIpam' {} a -> s {dryRun = a} :: MoveByoipCidrToIpam)

-- | The BYOIP CIDR.
moveByoipCidrToIpam_cidr :: Lens.Lens' MoveByoipCidrToIpam Prelude.Text
moveByoipCidrToIpam_cidr = Lens.lens (\MoveByoipCidrToIpam' {cidr} -> cidr) (\s@MoveByoipCidrToIpam' {} a -> s {cidr = a} :: MoveByoipCidrToIpam)

-- | The IPAM pool ID.
moveByoipCidrToIpam_ipamPoolId :: Lens.Lens' MoveByoipCidrToIpam Prelude.Text
moveByoipCidrToIpam_ipamPoolId = Lens.lens (\MoveByoipCidrToIpam' {ipamPoolId} -> ipamPoolId) (\s@MoveByoipCidrToIpam' {} a -> s {ipamPoolId = a} :: MoveByoipCidrToIpam)

-- | The Amazon Web Services account ID of the owner of the IPAM pool.
moveByoipCidrToIpam_ipamPoolOwner :: Lens.Lens' MoveByoipCidrToIpam Prelude.Text
moveByoipCidrToIpam_ipamPoolOwner = Lens.lens (\MoveByoipCidrToIpam' {ipamPoolOwner} -> ipamPoolOwner) (\s@MoveByoipCidrToIpam' {} a -> s {ipamPoolOwner = a} :: MoveByoipCidrToIpam)

instance Core.AWSRequest MoveByoipCidrToIpam where
  type
    AWSResponse MoveByoipCidrToIpam =
      MoveByoipCidrToIpamResponse
  request overrides =
    Request.postQuery (overrides defaultService)
  response =
    Response.receiveXML
      ( \s h x ->
          MoveByoipCidrToIpamResponse'
            Prelude.<$> (x Data..@? "byoipCidr")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable MoveByoipCidrToIpam where
  hashWithSalt _salt MoveByoipCidrToIpam' {..} =
    _salt
      `Prelude.hashWithSalt` dryRun
      `Prelude.hashWithSalt` cidr
      `Prelude.hashWithSalt` ipamPoolId
      `Prelude.hashWithSalt` ipamPoolOwner

instance Prelude.NFData MoveByoipCidrToIpam where
  rnf MoveByoipCidrToIpam' {..} =
    Prelude.rnf dryRun
      `Prelude.seq` Prelude.rnf cidr
      `Prelude.seq` Prelude.rnf ipamPoolId
      `Prelude.seq` Prelude.rnf ipamPoolOwner

instance Data.ToHeaders MoveByoipCidrToIpam where
  toHeaders = Prelude.const Prelude.mempty

instance Data.ToPath MoveByoipCidrToIpam where
  toPath = Prelude.const "/"

instance Data.ToQuery MoveByoipCidrToIpam where
  toQuery MoveByoipCidrToIpam' {..} =
    Prelude.mconcat
      [ "Action"
          Data.=: ("MoveByoipCidrToIpam" :: Prelude.ByteString),
        "Version"
          Data.=: ("2016-11-15" :: Prelude.ByteString),
        "DryRun" Data.=: dryRun,
        "Cidr" Data.=: cidr,
        "IpamPoolId" Data.=: ipamPoolId,
        "IpamPoolOwner" Data.=: ipamPoolOwner
      ]

-- | /See:/ 'newMoveByoipCidrToIpamResponse' smart constructor.
data MoveByoipCidrToIpamResponse = MoveByoipCidrToIpamResponse'
  { -- | The BYOIP CIDR.
    byoipCidr :: Prelude.Maybe ByoipCidr,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'MoveByoipCidrToIpamResponse' 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:
--
-- 'byoipCidr', 'moveByoipCidrToIpamResponse_byoipCidr' - The BYOIP CIDR.
--
-- 'httpStatus', 'moveByoipCidrToIpamResponse_httpStatus' - The response's http status code.
newMoveByoipCidrToIpamResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  MoveByoipCidrToIpamResponse
newMoveByoipCidrToIpamResponse pHttpStatus_ =
  MoveByoipCidrToIpamResponse'
    { byoipCidr =
        Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The BYOIP CIDR.
moveByoipCidrToIpamResponse_byoipCidr :: Lens.Lens' MoveByoipCidrToIpamResponse (Prelude.Maybe ByoipCidr)
moveByoipCidrToIpamResponse_byoipCidr = Lens.lens (\MoveByoipCidrToIpamResponse' {byoipCidr} -> byoipCidr) (\s@MoveByoipCidrToIpamResponse' {} a -> s {byoipCidr = a} :: MoveByoipCidrToIpamResponse)

-- | The response's http status code.
moveByoipCidrToIpamResponse_httpStatus :: Lens.Lens' MoveByoipCidrToIpamResponse Prelude.Int
moveByoipCidrToIpamResponse_httpStatus = Lens.lens (\MoveByoipCidrToIpamResponse' {httpStatus} -> httpStatus) (\s@MoveByoipCidrToIpamResponse' {} a -> s {httpStatus = a} :: MoveByoipCidrToIpamResponse)

instance Prelude.NFData MoveByoipCidrToIpamResponse where
  rnf MoveByoipCidrToIpamResponse' {..} =
    Prelude.rnf byoipCidr
      `Prelude.seq` Prelude.rnf httpStatus