packages feed

amazonka-ec2-2.0: gen/Amazonka/EC2/Types/SubnetCidrReservation.hs

{-# 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.SubnetCidrReservation
-- 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.SubnetCidrReservation 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.SubnetCidrReservationType
import Amazonka.EC2.Types.Tag
import qualified Amazonka.Prelude as Prelude

-- | Describes a subnet CIDR reservation.
--
-- /See:/ 'newSubnetCidrReservation' smart constructor.
data SubnetCidrReservation = SubnetCidrReservation'
  { -- | The CIDR that has been reserved.
    cidr :: Prelude.Maybe Prelude.Text,
    -- | The description assigned to the subnet CIDR reservation.
    description :: Prelude.Maybe Prelude.Text,
    -- | The ID of the account that owns the subnet CIDR reservation.
    ownerId :: Prelude.Maybe Prelude.Text,
    -- | The type of reservation.
    reservationType :: Prelude.Maybe SubnetCidrReservationType,
    -- | The ID of the subnet CIDR reservation.
    subnetCidrReservationId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the subnet.
    subnetId :: Prelude.Maybe Prelude.Text,
    -- | The tags assigned to the subnet CIDR reservation.
    tags :: Prelude.Maybe [Tag]
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'SubnetCidrReservation' 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:
--
-- 'cidr', 'subnetCidrReservation_cidr' - The CIDR that has been reserved.
--
-- 'description', 'subnetCidrReservation_description' - The description assigned to the subnet CIDR reservation.
--
-- 'ownerId', 'subnetCidrReservation_ownerId' - The ID of the account that owns the subnet CIDR reservation.
--
-- 'reservationType', 'subnetCidrReservation_reservationType' - The type of reservation.
--
-- 'subnetCidrReservationId', 'subnetCidrReservation_subnetCidrReservationId' - The ID of the subnet CIDR reservation.
--
-- 'subnetId', 'subnetCidrReservation_subnetId' - The ID of the subnet.
--
-- 'tags', 'subnetCidrReservation_tags' - The tags assigned to the subnet CIDR reservation.
newSubnetCidrReservation ::
  SubnetCidrReservation
newSubnetCidrReservation =
  SubnetCidrReservation'
    { cidr = Prelude.Nothing,
      description = Prelude.Nothing,
      ownerId = Prelude.Nothing,
      reservationType = Prelude.Nothing,
      subnetCidrReservationId = Prelude.Nothing,
      subnetId = Prelude.Nothing,
      tags = Prelude.Nothing
    }

-- | The CIDR that has been reserved.
subnetCidrReservation_cidr :: Lens.Lens' SubnetCidrReservation (Prelude.Maybe Prelude.Text)
subnetCidrReservation_cidr = Lens.lens (\SubnetCidrReservation' {cidr} -> cidr) (\s@SubnetCidrReservation' {} a -> s {cidr = a} :: SubnetCidrReservation)

-- | The description assigned to the subnet CIDR reservation.
subnetCidrReservation_description :: Lens.Lens' SubnetCidrReservation (Prelude.Maybe Prelude.Text)
subnetCidrReservation_description = Lens.lens (\SubnetCidrReservation' {description} -> description) (\s@SubnetCidrReservation' {} a -> s {description = a} :: SubnetCidrReservation)

-- | The ID of the account that owns the subnet CIDR reservation.
subnetCidrReservation_ownerId :: Lens.Lens' SubnetCidrReservation (Prelude.Maybe Prelude.Text)
subnetCidrReservation_ownerId = Lens.lens (\SubnetCidrReservation' {ownerId} -> ownerId) (\s@SubnetCidrReservation' {} a -> s {ownerId = a} :: SubnetCidrReservation)

-- | The type of reservation.
subnetCidrReservation_reservationType :: Lens.Lens' SubnetCidrReservation (Prelude.Maybe SubnetCidrReservationType)
subnetCidrReservation_reservationType = Lens.lens (\SubnetCidrReservation' {reservationType} -> reservationType) (\s@SubnetCidrReservation' {} a -> s {reservationType = a} :: SubnetCidrReservation)

-- | The ID of the subnet CIDR reservation.
subnetCidrReservation_subnetCidrReservationId :: Lens.Lens' SubnetCidrReservation (Prelude.Maybe Prelude.Text)
subnetCidrReservation_subnetCidrReservationId = Lens.lens (\SubnetCidrReservation' {subnetCidrReservationId} -> subnetCidrReservationId) (\s@SubnetCidrReservation' {} a -> s {subnetCidrReservationId = a} :: SubnetCidrReservation)

-- | The ID of the subnet.
subnetCidrReservation_subnetId :: Lens.Lens' SubnetCidrReservation (Prelude.Maybe Prelude.Text)
subnetCidrReservation_subnetId = Lens.lens (\SubnetCidrReservation' {subnetId} -> subnetId) (\s@SubnetCidrReservation' {} a -> s {subnetId = a} :: SubnetCidrReservation)

-- | The tags assigned to the subnet CIDR reservation.
subnetCidrReservation_tags :: Lens.Lens' SubnetCidrReservation (Prelude.Maybe [Tag])
subnetCidrReservation_tags = Lens.lens (\SubnetCidrReservation' {tags} -> tags) (\s@SubnetCidrReservation' {} a -> s {tags = a} :: SubnetCidrReservation) Prelude.. Lens.mapping Lens.coerced

instance Data.FromXML SubnetCidrReservation where
  parseXML x =
    SubnetCidrReservation'
      Prelude.<$> (x Data..@? "cidr")
      Prelude.<*> (x Data..@? "description")
      Prelude.<*> (x Data..@? "ownerId")
      Prelude.<*> (x Data..@? "reservationType")
      Prelude.<*> (x Data..@? "subnetCidrReservationId")
      Prelude.<*> (x Data..@? "subnetId")
      Prelude.<*> ( x
                      Data..@? "tagSet"
                      Core..!@ Prelude.mempty
                      Prelude.>>= Core.may (Data.parseXMLList "item")
                  )

instance Prelude.Hashable SubnetCidrReservation where
  hashWithSalt _salt SubnetCidrReservation' {..} =
    _salt
      `Prelude.hashWithSalt` cidr
      `Prelude.hashWithSalt` description
      `Prelude.hashWithSalt` ownerId
      `Prelude.hashWithSalt` reservationType
      `Prelude.hashWithSalt` subnetCidrReservationId
      `Prelude.hashWithSalt` subnetId
      `Prelude.hashWithSalt` tags

instance Prelude.NFData SubnetCidrReservation where
  rnf SubnetCidrReservation' {..} =
    Prelude.rnf cidr
      `Prelude.seq` Prelude.rnf description
      `Prelude.seq` Prelude.rnf ownerId
      `Prelude.seq` Prelude.rnf reservationType
      `Prelude.seq` Prelude.rnf subnetCidrReservationId
      `Prelude.seq` Prelude.rnf subnetId
      `Prelude.seq` Prelude.rnf tags