{-# 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.Reservation -- 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.Reservation 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.GroupIdentifier import Amazonka.EC2.Types.Instance import qualified Amazonka.Prelude as Prelude -- | Describes a launch request for one or more instances, and includes -- owner, requester, and security group information that applies to all -- instances in the launch request. -- -- /See:/ 'newReservation' smart constructor. data Reservation = Reservation' { -- | [EC2-Classic only] The security groups. groups :: Prelude.Maybe [GroupIdentifier], -- | The instances. instances :: Prelude.Maybe [Instance], -- | The ID of the requester that launched the instances on your behalf (for -- example, Amazon Web Services Management Console or Auto Scaling). requesterId :: Prelude.Maybe Prelude.Text, -- | The ID of the reservation. reservationId :: Prelude.Text, -- | The ID of the Amazon Web Services account that owns the reservation. ownerId :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'Reservation' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'groups', 'reservation_groups' - [EC2-Classic only] The security groups. -- -- 'instances', 'reservation_instances' - The instances. -- -- 'requesterId', 'reservation_requesterId' - The ID of the requester that launched the instances on your behalf (for -- example, Amazon Web Services Management Console or Auto Scaling). -- -- 'reservationId', 'reservation_reservationId' - The ID of the reservation. -- -- 'ownerId', 'reservation_ownerId' - The ID of the Amazon Web Services account that owns the reservation. newReservation :: -- | 'reservationId' Prelude.Text -> -- | 'ownerId' Prelude.Text -> Reservation newReservation pReservationId_ pOwnerId_ = Reservation' { groups = Prelude.Nothing, instances = Prelude.Nothing, requesterId = Prelude.Nothing, reservationId = pReservationId_, ownerId = pOwnerId_ } -- | [EC2-Classic only] The security groups. reservation_groups :: Lens.Lens' Reservation (Prelude.Maybe [GroupIdentifier]) reservation_groups = Lens.lens (\Reservation' {groups} -> groups) (\s@Reservation' {} a -> s {groups = a} :: Reservation) Prelude.. Lens.mapping Lens.coerced -- | The instances. reservation_instances :: Lens.Lens' Reservation (Prelude.Maybe [Instance]) reservation_instances = Lens.lens (\Reservation' {instances} -> instances) (\s@Reservation' {} a -> s {instances = a} :: Reservation) Prelude.. Lens.mapping Lens.coerced -- | The ID of the requester that launched the instances on your behalf (for -- example, Amazon Web Services Management Console or Auto Scaling). reservation_requesterId :: Lens.Lens' Reservation (Prelude.Maybe Prelude.Text) reservation_requesterId = Lens.lens (\Reservation' {requesterId} -> requesterId) (\s@Reservation' {} a -> s {requesterId = a} :: Reservation) -- | The ID of the reservation. reservation_reservationId :: Lens.Lens' Reservation Prelude.Text reservation_reservationId = Lens.lens (\Reservation' {reservationId} -> reservationId) (\s@Reservation' {} a -> s {reservationId = a} :: Reservation) -- | The ID of the Amazon Web Services account that owns the reservation. reservation_ownerId :: Lens.Lens' Reservation Prelude.Text reservation_ownerId = Lens.lens (\Reservation' {ownerId} -> ownerId) (\s@Reservation' {} a -> s {ownerId = a} :: Reservation) instance Data.FromXML Reservation where parseXML x = Reservation' Prelude.<$> ( x Data..@? "groupSet" Core..!@ Prelude.mempty Prelude.>>= Core.may (Data.parseXMLList "item") ) Prelude.<*> ( x Data..@? "instancesSet" Core..!@ Prelude.mempty Prelude.>>= Core.may (Data.parseXMLList "item") ) Prelude.<*> (x Data..@? "requesterId") Prelude.<*> (x Data..@ "reservationId") Prelude.<*> (x Data..@ "ownerId") instance Prelude.Hashable Reservation where hashWithSalt _salt Reservation' {..} = _salt `Prelude.hashWithSalt` groups `Prelude.hashWithSalt` instances `Prelude.hashWithSalt` requesterId `Prelude.hashWithSalt` reservationId `Prelude.hashWithSalt` ownerId instance Prelude.NFData Reservation where rnf Reservation' {..} = Prelude.rnf groups `Prelude.seq` Prelude.rnf instances `Prelude.seq` Prelude.rnf requesterId `Prelude.seq` Prelude.rnf reservationId `Prelude.seq` Prelude.rnf ownerId