{-# 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.SpotFleetRequestConfig -- 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.SpotFleetRequestConfig 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.ActivityStatus import Amazonka.EC2.Types.BatchState import Amazonka.EC2.Types.SpotFleetRequestConfigData import Amazonka.EC2.Types.Tag import qualified Amazonka.Prelude as Prelude -- | Describes a Spot Fleet request. -- -- /See:/ 'newSpotFleetRequestConfig' smart constructor. data SpotFleetRequestConfig = SpotFleetRequestConfig' { -- | The progress of the Spot Fleet request. If there is an error, the status -- is @error@. After all requests are placed, the status is -- @pending_fulfillment@. If the size of the fleet is equal to or greater -- than its target capacity, the status is @fulfilled@. If the size of the -- fleet is decreased, the status is @pending_termination@ while Spot -- Instances are terminating. activityStatus :: Prelude.Maybe ActivityStatus, -- | The creation date and time of the request. createTime :: Prelude.Maybe Data.ISO8601, -- | The configuration of the Spot Fleet request. spotFleetRequestConfig :: Prelude.Maybe SpotFleetRequestConfigData, -- | The ID of the Spot Fleet request. spotFleetRequestId :: Prelude.Maybe Prelude.Text, -- | The state of the Spot Fleet request. spotFleetRequestState :: Prelude.Maybe BatchState, -- | The tags for a Spot Fleet resource. tags :: Prelude.Maybe [Tag] } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'SpotFleetRequestConfig' 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: -- -- 'activityStatus', 'spotFleetRequestConfig_activityStatus' - The progress of the Spot Fleet request. If there is an error, the status -- is @error@. After all requests are placed, the status is -- @pending_fulfillment@. If the size of the fleet is equal to or greater -- than its target capacity, the status is @fulfilled@. If the size of the -- fleet is decreased, the status is @pending_termination@ while Spot -- Instances are terminating. -- -- 'createTime', 'spotFleetRequestConfig_createTime' - The creation date and time of the request. -- -- 'spotFleetRequestConfig', 'spotFleetRequestConfig_spotFleetRequestConfig' - The configuration of the Spot Fleet request. -- -- 'spotFleetRequestId', 'spotFleetRequestConfig_spotFleetRequestId' - The ID of the Spot Fleet request. -- -- 'spotFleetRequestState', 'spotFleetRequestConfig_spotFleetRequestState' - The state of the Spot Fleet request. -- -- 'tags', 'spotFleetRequestConfig_tags' - The tags for a Spot Fleet resource. newSpotFleetRequestConfig :: SpotFleetRequestConfig newSpotFleetRequestConfig = SpotFleetRequestConfig' { activityStatus = Prelude.Nothing, createTime = Prelude.Nothing, spotFleetRequestConfig = Prelude.Nothing, spotFleetRequestId = Prelude.Nothing, spotFleetRequestState = Prelude.Nothing, tags = Prelude.Nothing } -- | The progress of the Spot Fleet request. If there is an error, the status -- is @error@. After all requests are placed, the status is -- @pending_fulfillment@. If the size of the fleet is equal to or greater -- than its target capacity, the status is @fulfilled@. If the size of the -- fleet is decreased, the status is @pending_termination@ while Spot -- Instances are terminating. spotFleetRequestConfig_activityStatus :: Lens.Lens' SpotFleetRequestConfig (Prelude.Maybe ActivityStatus) spotFleetRequestConfig_activityStatus = Lens.lens (\SpotFleetRequestConfig' {activityStatus} -> activityStatus) (\s@SpotFleetRequestConfig' {} a -> s {activityStatus = a} :: SpotFleetRequestConfig) -- | The creation date and time of the request. spotFleetRequestConfig_createTime :: Lens.Lens' SpotFleetRequestConfig (Prelude.Maybe Prelude.UTCTime) spotFleetRequestConfig_createTime = Lens.lens (\SpotFleetRequestConfig' {createTime} -> createTime) (\s@SpotFleetRequestConfig' {} a -> s {createTime = a} :: SpotFleetRequestConfig) Prelude.. Lens.mapping Data._Time -- | The configuration of the Spot Fleet request. spotFleetRequestConfig_spotFleetRequestConfig :: Lens.Lens' SpotFleetRequestConfig (Prelude.Maybe SpotFleetRequestConfigData) spotFleetRequestConfig_spotFleetRequestConfig = Lens.lens (\SpotFleetRequestConfig' {spotFleetRequestConfig} -> spotFleetRequestConfig) (\s@SpotFleetRequestConfig' {} a -> s {spotFleetRequestConfig = a} :: SpotFleetRequestConfig) -- | The ID of the Spot Fleet request. spotFleetRequestConfig_spotFleetRequestId :: Lens.Lens' SpotFleetRequestConfig (Prelude.Maybe Prelude.Text) spotFleetRequestConfig_spotFleetRequestId = Lens.lens (\SpotFleetRequestConfig' {spotFleetRequestId} -> spotFleetRequestId) (\s@SpotFleetRequestConfig' {} a -> s {spotFleetRequestId = a} :: SpotFleetRequestConfig) -- | The state of the Spot Fleet request. spotFleetRequestConfig_spotFleetRequestState :: Lens.Lens' SpotFleetRequestConfig (Prelude.Maybe BatchState) spotFleetRequestConfig_spotFleetRequestState = Lens.lens (\SpotFleetRequestConfig' {spotFleetRequestState} -> spotFleetRequestState) (\s@SpotFleetRequestConfig' {} a -> s {spotFleetRequestState = a} :: SpotFleetRequestConfig) -- | The tags for a Spot Fleet resource. spotFleetRequestConfig_tags :: Lens.Lens' SpotFleetRequestConfig (Prelude.Maybe [Tag]) spotFleetRequestConfig_tags = Lens.lens (\SpotFleetRequestConfig' {tags} -> tags) (\s@SpotFleetRequestConfig' {} a -> s {tags = a} :: SpotFleetRequestConfig) Prelude.. Lens.mapping Lens.coerced instance Data.FromXML SpotFleetRequestConfig where parseXML x = SpotFleetRequestConfig' Prelude.<$> (x Data..@? "activityStatus") Prelude.<*> (x Data..@? "createTime") Prelude.<*> (x Data..@? "spotFleetRequestConfig") Prelude.<*> (x Data..@? "spotFleetRequestId") Prelude.<*> (x Data..@? "spotFleetRequestState") Prelude.<*> ( x Data..@? "tagSet" Core..!@ Prelude.mempty Prelude.>>= Core.may (Data.parseXMLList "item") ) instance Prelude.Hashable SpotFleetRequestConfig where hashWithSalt _salt SpotFleetRequestConfig' {..} = _salt `Prelude.hashWithSalt` activityStatus `Prelude.hashWithSalt` createTime `Prelude.hashWithSalt` spotFleetRequestConfig `Prelude.hashWithSalt` spotFleetRequestId `Prelude.hashWithSalt` spotFleetRequestState `Prelude.hashWithSalt` tags instance Prelude.NFData SpotFleetRequestConfig where rnf SpotFleetRequestConfig' {..} = Prelude.rnf activityStatus `Prelude.seq` Prelude.rnf createTime `Prelude.seq` Prelude.rnf spotFleetRequestConfig `Prelude.seq` Prelude.rnf spotFleetRequestId `Prelude.seq` Prelude.rnf spotFleetRequestState `Prelude.seq` Prelude.rnf tags