packages feed

amazonka-backup-gateway-2.0: gen/Amazonka/BackupGateway/Types.hs

{-# LANGUAGE DisambiguateRecordFields #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.BackupGateway.Types
-- 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.BackupGateway.Types
  ( -- * Service Configuration
    defaultService,

    -- * Errors
    _AccessDeniedException,
    _ConflictException,
    _InternalServerException,
    _ResourceNotFoundException,
    _ThrottlingException,
    _ValidationException,

    -- * GatewayType
    GatewayType (..),

    -- * HypervisorState
    HypervisorState (..),

    -- * SyncMetadataStatus
    SyncMetadataStatus (..),

    -- * BandwidthRateLimitInterval
    BandwidthRateLimitInterval (..),
    newBandwidthRateLimitInterval,
    bandwidthRateLimitInterval_averageUploadRateLimitInBitsPerSec,
    bandwidthRateLimitInterval_daysOfWeek,
    bandwidthRateLimitInterval_endHourOfDay,
    bandwidthRateLimitInterval_endMinuteOfHour,
    bandwidthRateLimitInterval_startHourOfDay,
    bandwidthRateLimitInterval_startMinuteOfHour,

    -- * Gateway
    Gateway (..),
    newGateway,
    gateway_gatewayArn,
    gateway_gatewayDisplayName,
    gateway_gatewayType,
    gateway_hypervisorId,
    gateway_lastSeenTime,

    -- * GatewayDetails
    GatewayDetails (..),
    newGatewayDetails,
    gatewayDetails_gatewayArn,
    gatewayDetails_gatewayDisplayName,
    gatewayDetails_gatewayType,
    gatewayDetails_hypervisorId,
    gatewayDetails_lastSeenTime,
    gatewayDetails_maintenanceStartTime,
    gatewayDetails_nextUpdateAvailabilityTime,
    gatewayDetails_vpcEndpoint,

    -- * Hypervisor
    Hypervisor (..),
    newHypervisor,
    hypervisor_host,
    hypervisor_hypervisorArn,
    hypervisor_kmsKeyArn,
    hypervisor_name,
    hypervisor_state,

    -- * HypervisorDetails
    HypervisorDetails (..),
    newHypervisorDetails,
    hypervisorDetails_host,
    hypervisorDetails_hypervisorArn,
    hypervisorDetails_kmsKeyArn,
    hypervisorDetails_lastSuccessfulMetadataSyncTime,
    hypervisorDetails_latestMetadataSyncStatus,
    hypervisorDetails_latestMetadataSyncStatusMessage,
    hypervisorDetails_logGroupArn,
    hypervisorDetails_name,
    hypervisorDetails_state,

    -- * MaintenanceStartTime
    MaintenanceStartTime (..),
    newMaintenanceStartTime,
    maintenanceStartTime_dayOfMonth,
    maintenanceStartTime_dayOfWeek,
    maintenanceStartTime_hourOfDay,
    maintenanceStartTime_minuteOfHour,

    -- * Tag
    Tag (..),
    newTag,
    tag_key,
    tag_value,

    -- * VirtualMachine
    VirtualMachine (..),
    newVirtualMachine,
    virtualMachine_hostName,
    virtualMachine_hypervisorId,
    virtualMachine_lastBackupDate,
    virtualMachine_name,
    virtualMachine_path,
    virtualMachine_resourceArn,

    -- * VirtualMachineDetails
    VirtualMachineDetails (..),
    newVirtualMachineDetails,
    virtualMachineDetails_hostName,
    virtualMachineDetails_hypervisorId,
    virtualMachineDetails_lastBackupDate,
    virtualMachineDetails_name,
    virtualMachineDetails_path,
    virtualMachineDetails_resourceArn,
    virtualMachineDetails_vmwareTags,

    -- * VmwareTag
    VmwareTag (..),
    newVmwareTag,
    vmwareTag_vmwareCategory,
    vmwareTag_vmwareTagDescription,
    vmwareTag_vmwareTagName,

    -- * VmwareToAwsTagMapping
    VmwareToAwsTagMapping (..),
    newVmwareToAwsTagMapping,
    vmwareToAwsTagMapping_awsTagKey,
    vmwareToAwsTagMapping_awsTagValue,
    vmwareToAwsTagMapping_vmwareCategory,
    vmwareToAwsTagMapping_vmwareTagName,
  )
where

import Amazonka.BackupGateway.Types.BandwidthRateLimitInterval
import Amazonka.BackupGateway.Types.Gateway
import Amazonka.BackupGateway.Types.GatewayDetails
import Amazonka.BackupGateway.Types.GatewayType
import Amazonka.BackupGateway.Types.Hypervisor
import Amazonka.BackupGateway.Types.HypervisorDetails
import Amazonka.BackupGateway.Types.HypervisorState
import Amazonka.BackupGateway.Types.MaintenanceStartTime
import Amazonka.BackupGateway.Types.SyncMetadataStatus
import Amazonka.BackupGateway.Types.Tag
import Amazonka.BackupGateway.Types.VirtualMachine
import Amazonka.BackupGateway.Types.VirtualMachineDetails
import Amazonka.BackupGateway.Types.VmwareTag
import Amazonka.BackupGateway.Types.VmwareToAwsTagMapping
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Sign.V4 as Sign

-- | API version @2021-01-01@ of the Amazon Backup Gateway SDK configuration.
defaultService :: Core.Service
defaultService =
  Core.Service
    { Core.abbrev = "BackupGateway",
      Core.signer = Sign.v4,
      Core.endpointPrefix = "backup-gateway",
      Core.signingName = "backup-gateway",
      Core.version = "2021-01-01",
      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
      Core.endpoint = Core.defaultEndpoint defaultService,
      Core.timeout = Prelude.Just 70,
      Core.check = Core.statusSuccess,
      Core.error = Core.parseJSONError "BackupGateway",
      Core.retry = retry
    }
  where
    retry =
      Core.Exponential
        { Core.base = 5.0e-2,
          Core.growth = 2,
          Core.attempts = 5,
          Core.check = check
        }
    check e
      | Lens.has (Core.hasStatus 502) e =
          Prelude.Just "bad_gateway"
      | Lens.has (Core.hasStatus 504) e =
          Prelude.Just "gateway_timeout"
      | Lens.has (Core.hasStatus 500) e =
          Prelude.Just "general_server_error"
      | Lens.has (Core.hasStatus 509) e =
          Prelude.Just "limit_exceeded"
      | Lens.has
          ( Core.hasCode "RequestThrottledException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "request_throttled_exception"
      | Lens.has (Core.hasStatus 503) e =
          Prelude.Just "service_unavailable"
      | Lens.has
          ( Core.hasCode "ThrottledException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttled_exception"
      | Lens.has
          ( Core.hasCode "Throttling"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttling"
      | Lens.has
          ( Core.hasCode "ThrottlingException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttling_exception"
      | Lens.has
          ( Core.hasCode
              "ProvisionedThroughputExceededException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throughput_exceeded"
      | Lens.has (Core.hasStatus 429) e =
          Prelude.Just "too_many_requests"
      | Prelude.otherwise = Prelude.Nothing

-- | The operation cannot proceed because you have insufficient permissions.
_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_AccessDeniedException =
  Core._MatchServiceError
    defaultService
    "AccessDeniedException"

-- | The operation cannot proceed because it is not supported.
_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ConflictException =
  Core._MatchServiceError
    defaultService
    "ConflictException"

-- | The operation did not succeed because an internal error occurred. Try
-- again later.
_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InternalServerException =
  Core._MatchServiceError
    defaultService
    "InternalServerException"

-- | A resource that is required for the action wasn\'t found.
_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ResourceNotFoundException =
  Core._MatchServiceError
    defaultService
    "ResourceNotFoundException"

-- | TPS has been limited to protect against intentional or unintentional
-- high request volumes.
_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ThrottlingException =
  Core._MatchServiceError
    defaultService
    "ThrottlingException"

-- | The operation did not succeed because a validation error occurred.
_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ValidationException =
  Core._MatchServiceError
    defaultService
    "ValidationException"