packages feed

amazonka-ec2-2.0: gen/Amazonka/EC2/Waiters.hs

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

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

-- |
-- Module      : Amazonka.EC2.Waiters
-- 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.Waiters where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.DescribeBundleTasks
import Amazonka.EC2.DescribeConversionTasks
import Amazonka.EC2.DescribeCustomerGateways
import Amazonka.EC2.DescribeExportTasks
import Amazonka.EC2.DescribeImages
import Amazonka.EC2.DescribeInstanceStatus
import Amazonka.EC2.DescribeInstances
import Amazonka.EC2.DescribeInternetGateways
import Amazonka.EC2.DescribeKeyPairs
import Amazonka.EC2.DescribeNatGateways
import Amazonka.EC2.DescribeNetworkInterfaces
import Amazonka.EC2.DescribeSecurityGroups
import Amazonka.EC2.DescribeSnapshots
import Amazonka.EC2.DescribeSpotInstanceRequests
import Amazonka.EC2.DescribeSubnets
import Amazonka.EC2.DescribeVolumes
import Amazonka.EC2.DescribeVpcPeeringConnections
import Amazonka.EC2.DescribeVpcs
import Amazonka.EC2.DescribeVpnConnections
import Amazonka.EC2.GetPasswordData
import Amazonka.EC2.Lens
import Amazonka.EC2.Types
import qualified Amazonka.Prelude as Prelude

-- | Polls 'Amazonka.EC2.DescribeBundleTasks' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newBundleTaskComplete :: Core.Wait DescribeBundleTasks
newBundleTaskComplete =
  Core.Wait
    { Core.name = "BundleTaskComplete",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "complete"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeBundleTasksResponse_bundleTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. bundleTask_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "failed"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeBundleTasksResponse_bundleTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. bundleTask_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeConversionTasks' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newConversionTaskCancelled :: Core.Wait DescribeConversionTasks
newConversionTaskCancelled =
  Core.Wait
    { Core.name = "ConversionTaskCancelled",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "cancelled"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeConversionTasksResponse_conversionTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. conversionTask_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeConversionTasks' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newConversionTaskCompleted :: Core.Wait DescribeConversionTasks
newConversionTaskCompleted =
  Core.Wait
    { Core.name = "ConversionTaskCompleted",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "completed"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeConversionTasksResponse_conversionTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. conversionTask_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "cancelled"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeConversionTasksResponse_conversionTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. conversionTask_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "cancelling"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeConversionTasksResponse_conversionTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. conversionTask_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeConversionTasks' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newConversionTaskDeleted :: Core.Wait DescribeConversionTasks
newConversionTaskDeleted =
  Core.Wait
    { Core.name = "ConversionTaskDeleted",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "deleted"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeConversionTasksResponse_conversionTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. conversionTask_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeCustomerGateways' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newCustomerGatewayAvailable :: Core.Wait DescribeCustomerGateways
newCustomerGatewayAvailable =
  Core.Wait
    { Core.name = "CustomerGatewayAvailable",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "available"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeCustomerGatewaysResponse_customerGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. customerGateway_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deleted"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeCustomerGatewaysResponse_customerGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. customerGateway_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deleting"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeCustomerGatewaysResponse_customerGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. customerGateway_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeExportTasks' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newExportTaskCancelled :: Core.Wait DescribeExportTasks
newExportTaskCancelled =
  Core.Wait
    { Core.name = "ExportTaskCancelled",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "cancelled"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeExportTasksResponse_exportTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. exportTask_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeExportTasks' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newExportTaskCompleted :: Core.Wait DescribeExportTasks
newExportTaskCompleted =
  Core.Wait
    { Core.name = "ExportTaskCompleted",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "completed"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeExportTasksResponse_exportTasks
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. exportTask_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeImages' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newImageAvailable :: Core.Wait DescribeImages
newImageAvailable =
  Core.Wait
    { Core.name = "ImageAvailable",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "available"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    (describeImagesResponse_images Prelude.. Lens._Just)
                )
                Prelude.. image_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deregistered"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    (describeImagesResponse_images Prelude.. Lens._Just)
                )
                Prelude.. image_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeImages' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newImageExists :: Core.Wait DescribeImages
newImageExists =
  Core.Wait
    { Core.name = "ImageExists",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchNonEmpty
            Prelude.True
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeImagesResponse_images
                        Prelude.. Lens._Just
                    )
                )
            ),
          Core.matchError
            "InvalidAMIID.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeInstances' every 5 seconds until a successful state is reached. An error is returned after 40 failed checks.
newInstanceExists :: Core.Wait DescribeInstances
newInstanceExists =
  Core.Wait
    { Core.name = "InstanceExists",
      Core.attempts = 40,
      Core.delay = 5,
      Core.acceptors =
        [ Core.matchStatus 200 Core.AcceptSuccess,
          Core.matchError
            "InvalidInstanceIDNotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeInstances' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newInstanceRunning :: Core.Wait DescribeInstances
newInstanceRunning =
  Core.Wait
    { Core.name = "InstanceRunning",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "running"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "shutting-down"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "terminated"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "stopping"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchError
            "InvalidInstanceID.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeInstanceStatus' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newInstanceStatusOk :: Core.Wait DescribeInstanceStatus
newInstanceStatusOk =
  Core.Wait
    { Core.name = "InstanceStatusOk",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "ok"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstanceStatusResponse_instanceStatuses
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. instanceStatus_instanceStatus
                Prelude.. Lens._Just
                Prelude.. instanceStatusSummary_status
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchError
            "InvalidInstanceID.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeInstances' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newInstanceStopped :: Core.Wait DescribeInstances
newInstanceStopped =
  Core.Wait
    { Core.name = "InstanceStopped",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "stopped"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "pending"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "terminated"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeInstances' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newInstanceTerminated :: Core.Wait DescribeInstances
newInstanceTerminated =
  Core.Wait
    { Core.name = "InstanceTerminated",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "terminated"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "pending"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "stopping"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstancesResponse_reservations
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. Lens.folding
                  ( Lens.concatOf
                      (reservation_instances Prelude.. Lens._Just)
                  )
                Prelude.. instance_state
                Prelude.. instanceState_name
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeInternetGateways' every 5 seconds until a successful state is reached. An error is returned after 6 failed checks.
newInternetGatewayExists :: Core.Wait DescribeInternetGateways
newInternetGatewayExists =
  Core.Wait
    { Core.name = "InternetGatewayExists",
      Core.attempts = 6,
      Core.delay = 5,
      Core.acceptors =
        [ Core.matchNonEmpty
            Prelude.True
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInternetGatewaysResponse_internetGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. internetGateway_internetGatewayId
            ),
          Core.matchError
            "InvalidInternetGateway.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeKeyPairs' every 5 seconds until a successful state is reached. An error is returned after 6 failed checks.
newKeyPairExists :: Core.Wait DescribeKeyPairs
newKeyPairExists =
  Core.Wait
    { Core.name = "KeyPairExists",
      Core.attempts = 6,
      Core.delay = 5,
      Core.acceptors =
        [ Core.matchNonEmpty
            Prelude.True
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeKeyPairsResponse_keyPairs
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. keyPairInfo_keyName
                Prelude.. Lens._Just
            ),
          Core.matchError
            "InvalidKeyPair.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeNatGateways' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newNatGatewayAvailable :: Core.Wait DescribeNatGateways
newNatGatewayAvailable =
  Core.Wait
    { Core.name = "NatGatewayAvailable",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "available"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeNatGatewaysResponse_natGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. natGateway_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "failed"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeNatGatewaysResponse_natGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. natGateway_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deleting"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeNatGatewaysResponse_natGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. natGateway_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deleted"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeNatGatewaysResponse_natGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. natGateway_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchError
            "NatGatewayNotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeNatGateways' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newNatGatewayDeleted :: Core.Wait DescribeNatGateways
newNatGatewayDeleted =
  Core.Wait
    { Core.name = "NatGatewayDeleted",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "deleted"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeNatGatewaysResponse_natGateways
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. natGateway_state
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchError
            "NatGatewayNotFound"
            Core.AcceptSuccess
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeNetworkInterfaces' every 20 seconds until a successful state is reached. An error is returned after 10 failed checks.
newNetworkInterfaceAvailable :: Core.Wait DescribeNetworkInterfaces
newNetworkInterfaceAvailable =
  Core.Wait
    { Core.name = "NetworkInterfaceAvailable",
      Core.attempts = 10,
      Core.delay = 20,
      Core.acceptors =
        [ Core.matchAll
            "available"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeNetworkInterfacesResponse_networkInterfaces
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. networkInterface_status
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchError
            "InvalidNetworkInterfaceID.NotFound"
            Core.AcceptFailure
        ]
    }

-- | Polls 'Amazonka.EC2.GetPasswordData' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newPasswordDataAvailable :: Core.Wait GetPasswordData
newPasswordDataAvailable =
  Core.Wait
    { Core.name = "PasswordDataAvailable",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            Prelude.True
            Core.AcceptSuccess
            ( Core.nonEmptyText
                getPasswordDataResponse_passwordData
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeSecurityGroups' every 5 seconds until a successful state is reached. An error is returned after 6 failed checks.
newSecurityGroupExists :: Core.Wait DescribeSecurityGroups
newSecurityGroupExists =
  Core.Wait
    { Core.name = "SecurityGroupExists",
      Core.attempts = 6,
      Core.delay = 5,
      Core.acceptors =
        [ Core.matchNonEmpty
            Prelude.True
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSecurityGroupsResponse_securityGroups
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. securityGroup_groupId
            ),
          Core.matchError
            "InvalidGroup.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeSnapshots' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newSnapshotCompleted :: Core.Wait DescribeSnapshots
newSnapshotCompleted =
  Core.Wait
    { Core.name = "SnapshotCompleted",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "completed"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSnapshotsResponse_snapshots
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. snapshot_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "error"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSnapshotsResponse_snapshots
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. snapshot_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeSpotInstanceRequests' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newSpotInstanceRequestFulfilled :: Core.Wait DescribeSpotInstanceRequests
newSpotInstanceRequestFulfilled =
  Core.Wait
    { Core.name =
        "SpotInstanceRequestFulfilled",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "fulfilled"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSpotInstanceRequestsResponse_spotInstanceRequests
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. spotInstanceRequest_status
                Prelude.. Lens._Just
                Prelude.. spotInstanceStatus_code
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAll
            "request-canceled-and-instance-running"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSpotInstanceRequestsResponse_spotInstanceRequests
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. spotInstanceRequest_status
                Prelude.. Lens._Just
                Prelude.. spotInstanceStatus_code
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "schedule-expired"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSpotInstanceRequestsResponse_spotInstanceRequests
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. spotInstanceRequest_status
                Prelude.. Lens._Just
                Prelude.. spotInstanceStatus_code
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "canceled-before-fulfillment"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSpotInstanceRequestsResponse_spotInstanceRequests
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. spotInstanceRequest_status
                Prelude.. Lens._Just
                Prelude.. spotInstanceStatus_code
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "bad-parameters"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSpotInstanceRequestsResponse_spotInstanceRequests
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. spotInstanceRequest_status
                Prelude.. Lens._Just
                Prelude.. spotInstanceStatus_code
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "system-error"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSpotInstanceRequestsResponse_spotInstanceRequests
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. spotInstanceRequest_status
                Prelude.. Lens._Just
                Prelude.. spotInstanceStatus_code
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchError
            "InvalidSpotInstanceRequestID.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeSubnets' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newSubnetAvailable :: Core.Wait DescribeSubnets
newSubnetAvailable =
  Core.Wait
    { Core.name = "SubnetAvailable",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "available"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeSubnetsResponse_subnets
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. subnet_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeInstanceStatus' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newSystemStatusOk :: Core.Wait DescribeInstanceStatus
newSystemStatusOk =
  Core.Wait
    { Core.name = "SystemStatusOk",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "ok"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeInstanceStatusResponse_instanceStatuses
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. instanceStatus_systemStatus
                Prelude.. Lens._Just
                Prelude.. instanceStatusSummary_status
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVolumes' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newVolumeAvailable :: Core.Wait DescribeVolumes
newVolumeAvailable =
  Core.Wait
    { Core.name = "VolumeAvailable",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "available"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVolumesResponse_volumes
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. volume_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deleted"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVolumesResponse_volumes
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. volume_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVolumes' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newVolumeDeleted :: Core.Wait DescribeVolumes
newVolumeDeleted =
  Core.Wait
    { Core.name = "VolumeDeleted",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "deleted"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVolumesResponse_volumes
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. volume_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchError
            "InvalidVolume.NotFound"
            Core.AcceptSuccess
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVolumes' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newVolumeInUse :: Core.Wait DescribeVolumes
newVolumeInUse =
  Core.Wait
    { Core.name = "VolumeInUse",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "in-use"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVolumesResponse_volumes
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. volume_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deleted"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVolumesResponse_volumes
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. volume_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVpcs' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newVpcAvailable :: Core.Wait DescribeVpcs
newVpcAvailable =
  Core.Wait
    { Core.name = "VpcAvailable",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "available"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    (describeVpcsResponse_vpcs Prelude.. Lens._Just)
                )
                Prelude.. vpc_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVpcs' every 1 seconds until a successful state is reached. An error is returned after 5 failed checks.
newVpcExists :: Core.Wait DescribeVpcs
newVpcExists =
  Core.Wait
    { Core.name = "VpcExists",
      Core.attempts = 5,
      Core.delay = 1,
      Core.acceptors =
        [ Core.matchStatus 200 Core.AcceptSuccess,
          Core.matchError
            "InvalidVpcID.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVpcPeeringConnections' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newVpcPeeringConnectionDeleted :: Core.Wait DescribeVpcPeeringConnections
newVpcPeeringConnectionDeleted =
  Core.Wait
    { Core.name =
        "VpcPeeringConnectionDeleted",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "deleted"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVpcPeeringConnectionsResponse_vpcPeeringConnections
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. vpcPeeringConnection_status
                Prelude.. Lens._Just
                Prelude.. vpcPeeringConnectionStateReason_code
                Prelude.. Lens._Just
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchError
            "InvalidVpcPeeringConnectionID.NotFound"
            Core.AcceptSuccess
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVpcPeeringConnections' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newVpcPeeringConnectionExists :: Core.Wait DescribeVpcPeeringConnections
newVpcPeeringConnectionExists =
  Core.Wait
    { Core.name = "VpcPeeringConnectionExists",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchStatus 200 Core.AcceptSuccess,
          Core.matchError
            "InvalidVpcPeeringConnectionID.NotFound"
            Core.AcceptRetry
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVpnConnections' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newVpnConnectionAvailable :: Core.Wait DescribeVpnConnections
newVpnConnectionAvailable =
  Core.Wait
    { Core.name = "VpnConnectionAvailable",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "available"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVpnConnectionsResponse_vpnConnections
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. vpnConnection_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deleting"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVpnConnectionsResponse_vpnConnections
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. vpnConnection_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "deleted"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVpnConnectionsResponse_vpnConnections
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. vpnConnection_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EC2.DescribeVpnConnections' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
newVpnConnectionDeleted :: Core.Wait DescribeVpnConnections
newVpnConnectionDeleted =
  Core.Wait
    { Core.name = "VpnConnectionDeleted",
      Core.attempts = 40,
      Core.delay = 15,
      Core.acceptors =
        [ Core.matchAll
            "deleted"
            Core.AcceptSuccess
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVpnConnectionsResponse_vpnConnections
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. vpnConnection_state
                Prelude.. Lens.to Data.toTextCI
            ),
          Core.matchAny
            "pending"
            Core.AcceptFailure
            ( Lens.folding
                ( Lens.concatOf
                    ( describeVpnConnectionsResponse_vpnConnections
                        Prelude.. Lens._Just
                    )
                )
                Prelude.. vpnConnection_state
                Prelude.. Lens.to Data.toTextCI
            )
        ]
    }