packages feed

amazonka-fsx-2.0: gen/Amazonka/FSx/Types/AdministrativeAction.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.FSx.Types.AdministrativeAction
-- 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.FSx.Types.AdministrativeAction where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.FSx.Types.AdministrativeActionFailureDetails
import Amazonka.FSx.Types.AdministrativeActionType
import {-# SOURCE #-} Amazonka.FSx.Types.FileSystem
import {-# SOURCE #-} Amazonka.FSx.Types.Snapshot
import Amazonka.FSx.Types.Status
import {-# SOURCE #-} Amazonka.FSx.Types.Volume
import qualified Amazonka.Prelude as Prelude

-- | Describes a specific Amazon FSx administrative action for the current
-- Windows, Lustre, or OpenZFS file system.
--
-- /See:/ 'newAdministrativeAction' smart constructor.
data AdministrativeAction = AdministrativeAction'
  { administrativeActionType :: Prelude.Maybe AdministrativeActionType,
    failureDetails :: Prelude.Maybe AdministrativeActionFailureDetails,
    -- | The percentage-complete status of a @STORAGE_OPTIMIZATION@
    -- administrative action. Does not apply to any other administrative action
    -- type.
    progressPercent :: Prelude.Maybe Prelude.Natural,
    -- | The time that the administrative action request was received.
    requestTime :: Prelude.Maybe Data.POSIX,
    -- | Describes the status of the administrative action, as follows:
    --
    -- -   @FAILED@ - Amazon FSx failed to process the administrative action
    --     successfully.
    --
    -- -   @IN_PROGRESS@ - Amazon FSx is processing the administrative action.
    --
    -- -   @PENDING@ - Amazon FSx is waiting to process the administrative
    --     action.
    --
    -- -   @COMPLETED@ - Amazon FSx has finished processing the administrative
    --     task.
    --
    -- -   @UPDATED_OPTIMIZING@ - For a storage-capacity increase update,
    --     Amazon FSx has updated the file system with the new storage
    --     capacity, and is now performing the storage-optimization process.
    status :: Prelude.Maybe Status,
    -- | Describes the target value for the administration action, provided in
    -- the @UpdateFileSystem@ operation. Returned for @FILE_SYSTEM_UPDATE@
    -- administrative actions.
    targetFileSystemValues :: Prelude.Maybe FileSystem,
    targetSnapshotValues :: Prelude.Maybe Snapshot,
    targetVolumeValues :: Prelude.Maybe Volume
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AdministrativeAction' 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:
--
-- 'administrativeActionType', 'administrativeAction_administrativeActionType' - Undocumented member.
--
-- 'failureDetails', 'administrativeAction_failureDetails' - Undocumented member.
--
-- 'progressPercent', 'administrativeAction_progressPercent' - The percentage-complete status of a @STORAGE_OPTIMIZATION@
-- administrative action. Does not apply to any other administrative action
-- type.
--
-- 'requestTime', 'administrativeAction_requestTime' - The time that the administrative action request was received.
--
-- 'status', 'administrativeAction_status' - Describes the status of the administrative action, as follows:
--
-- -   @FAILED@ - Amazon FSx failed to process the administrative action
--     successfully.
--
-- -   @IN_PROGRESS@ - Amazon FSx is processing the administrative action.
--
-- -   @PENDING@ - Amazon FSx is waiting to process the administrative
--     action.
--
-- -   @COMPLETED@ - Amazon FSx has finished processing the administrative
--     task.
--
-- -   @UPDATED_OPTIMIZING@ - For a storage-capacity increase update,
--     Amazon FSx has updated the file system with the new storage
--     capacity, and is now performing the storage-optimization process.
--
-- 'targetFileSystemValues', 'administrativeAction_targetFileSystemValues' - Describes the target value for the administration action, provided in
-- the @UpdateFileSystem@ operation. Returned for @FILE_SYSTEM_UPDATE@
-- administrative actions.
--
-- 'targetSnapshotValues', 'administrativeAction_targetSnapshotValues' - Undocumented member.
--
-- 'targetVolumeValues', 'administrativeAction_targetVolumeValues' - Undocumented member.
newAdministrativeAction ::
  AdministrativeAction
newAdministrativeAction =
  AdministrativeAction'
    { administrativeActionType =
        Prelude.Nothing,
      failureDetails = Prelude.Nothing,
      progressPercent = Prelude.Nothing,
      requestTime = Prelude.Nothing,
      status = Prelude.Nothing,
      targetFileSystemValues = Prelude.Nothing,
      targetSnapshotValues = Prelude.Nothing,
      targetVolumeValues = Prelude.Nothing
    }

-- | Undocumented member.
administrativeAction_administrativeActionType :: Lens.Lens' AdministrativeAction (Prelude.Maybe AdministrativeActionType)
administrativeAction_administrativeActionType = Lens.lens (\AdministrativeAction' {administrativeActionType} -> administrativeActionType) (\s@AdministrativeAction' {} a -> s {administrativeActionType = a} :: AdministrativeAction)

-- | Undocumented member.
administrativeAction_failureDetails :: Lens.Lens' AdministrativeAction (Prelude.Maybe AdministrativeActionFailureDetails)
administrativeAction_failureDetails = Lens.lens (\AdministrativeAction' {failureDetails} -> failureDetails) (\s@AdministrativeAction' {} a -> s {failureDetails = a} :: AdministrativeAction)

-- | The percentage-complete status of a @STORAGE_OPTIMIZATION@
-- administrative action. Does not apply to any other administrative action
-- type.
administrativeAction_progressPercent :: Lens.Lens' AdministrativeAction (Prelude.Maybe Prelude.Natural)
administrativeAction_progressPercent = Lens.lens (\AdministrativeAction' {progressPercent} -> progressPercent) (\s@AdministrativeAction' {} a -> s {progressPercent = a} :: AdministrativeAction)

-- | The time that the administrative action request was received.
administrativeAction_requestTime :: Lens.Lens' AdministrativeAction (Prelude.Maybe Prelude.UTCTime)
administrativeAction_requestTime = Lens.lens (\AdministrativeAction' {requestTime} -> requestTime) (\s@AdministrativeAction' {} a -> s {requestTime = a} :: AdministrativeAction) Prelude.. Lens.mapping Data._Time

-- | Describes the status of the administrative action, as follows:
--
-- -   @FAILED@ - Amazon FSx failed to process the administrative action
--     successfully.
--
-- -   @IN_PROGRESS@ - Amazon FSx is processing the administrative action.
--
-- -   @PENDING@ - Amazon FSx is waiting to process the administrative
--     action.
--
-- -   @COMPLETED@ - Amazon FSx has finished processing the administrative
--     task.
--
-- -   @UPDATED_OPTIMIZING@ - For a storage-capacity increase update,
--     Amazon FSx has updated the file system with the new storage
--     capacity, and is now performing the storage-optimization process.
administrativeAction_status :: Lens.Lens' AdministrativeAction (Prelude.Maybe Status)
administrativeAction_status = Lens.lens (\AdministrativeAction' {status} -> status) (\s@AdministrativeAction' {} a -> s {status = a} :: AdministrativeAction)

-- | Describes the target value for the administration action, provided in
-- the @UpdateFileSystem@ operation. Returned for @FILE_SYSTEM_UPDATE@
-- administrative actions.
administrativeAction_targetFileSystemValues :: Lens.Lens' AdministrativeAction (Prelude.Maybe FileSystem)
administrativeAction_targetFileSystemValues = Lens.lens (\AdministrativeAction' {targetFileSystemValues} -> targetFileSystemValues) (\s@AdministrativeAction' {} a -> s {targetFileSystemValues = a} :: AdministrativeAction)

-- | Undocumented member.
administrativeAction_targetSnapshotValues :: Lens.Lens' AdministrativeAction (Prelude.Maybe Snapshot)
administrativeAction_targetSnapshotValues = Lens.lens (\AdministrativeAction' {targetSnapshotValues} -> targetSnapshotValues) (\s@AdministrativeAction' {} a -> s {targetSnapshotValues = a} :: AdministrativeAction)

-- | Undocumented member.
administrativeAction_targetVolumeValues :: Lens.Lens' AdministrativeAction (Prelude.Maybe Volume)
administrativeAction_targetVolumeValues = Lens.lens (\AdministrativeAction' {targetVolumeValues} -> targetVolumeValues) (\s@AdministrativeAction' {} a -> s {targetVolumeValues = a} :: AdministrativeAction)

instance Data.FromJSON AdministrativeAction where
  parseJSON =
    Data.withObject
      "AdministrativeAction"
      ( \x ->
          AdministrativeAction'
            Prelude.<$> (x Data..:? "AdministrativeActionType")
            Prelude.<*> (x Data..:? "FailureDetails")
            Prelude.<*> (x Data..:? "ProgressPercent")
            Prelude.<*> (x Data..:? "RequestTime")
            Prelude.<*> (x Data..:? "Status")
            Prelude.<*> (x Data..:? "TargetFileSystemValues")
            Prelude.<*> (x Data..:? "TargetSnapshotValues")
            Prelude.<*> (x Data..:? "TargetVolumeValues")
      )

instance Prelude.Hashable AdministrativeAction where
  hashWithSalt _salt AdministrativeAction' {..} =
    _salt
      `Prelude.hashWithSalt` administrativeActionType
      `Prelude.hashWithSalt` failureDetails
      `Prelude.hashWithSalt` progressPercent
      `Prelude.hashWithSalt` requestTime
      `Prelude.hashWithSalt` status
      `Prelude.hashWithSalt` targetFileSystemValues
      `Prelude.hashWithSalt` targetSnapshotValues
      `Prelude.hashWithSalt` targetVolumeValues

instance Prelude.NFData AdministrativeAction where
  rnf AdministrativeAction' {..} =
    Prelude.rnf administrativeActionType
      `Prelude.seq` Prelude.rnf failureDetails
      `Prelude.seq` Prelude.rnf progressPercent
      `Prelude.seq` Prelude.rnf requestTime
      `Prelude.seq` Prelude.rnf status
      `Prelude.seq` Prelude.rnf targetFileSystemValues
      `Prelude.seq` Prelude.rnf targetSnapshotValues
      `Prelude.seq` Prelude.rnf targetVolumeValues