{-# 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.EMR.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.EMR.Waiters where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EMR.DescribeCluster
import Amazonka.EMR.DescribeStep
import Amazonka.EMR.Lens
import Amazonka.EMR.Types
import qualified Amazonka.Prelude as Prelude

-- | Polls 'Amazonka.EMR.DescribeCluster' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
newClusterRunning :: Core.Wait DescribeCluster
newClusterRunning :: Wait DescribeCluster
newClusterRunning =
  Core.Wait
    { $sel:name:Wait :: ByteString
Core.name = ByteString
"ClusterRunning",
      $sel:attempts:Wait :: Int
Core.attempts = Int
60,
      $sel:delay:Wait :: Seconds
Core.delay = Seconds
30,
      $sel:acceptors:Wait :: [Acceptor DescribeCluster]
Core.acceptors =
        [ forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"RUNNING"
            Accept
Core.AcceptSuccess
            ( Lens' DescribeClusterResponse Cluster
describeClusterResponse_cluster
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Cluster ClusterStatus
cluster_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' ClusterStatus (Maybe ClusterState)
clusterStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            ),
          forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"WAITING"
            Accept
Core.AcceptSuccess
            ( Lens' DescribeClusterResponse Cluster
describeClusterResponse_cluster
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Cluster ClusterStatus
cluster_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' ClusterStatus (Maybe ClusterState)
clusterStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            ),
          forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"TERMINATING"
            Accept
Core.AcceptFailure
            ( Lens' DescribeClusterResponse Cluster
describeClusterResponse_cluster
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Cluster ClusterStatus
cluster_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' ClusterStatus (Maybe ClusterState)
clusterStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            ),
          forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"TERMINATED"
            Accept
Core.AcceptFailure
            ( Lens' DescribeClusterResponse Cluster
describeClusterResponse_cluster
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Cluster ClusterStatus
cluster_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' ClusterStatus (Maybe ClusterState)
clusterStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            ),
          forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"TERMINATED_WITH_ERRORS"
            Accept
Core.AcceptFailure
            ( Lens' DescribeClusterResponse Cluster
describeClusterResponse_cluster
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Cluster ClusterStatus
cluster_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' ClusterStatus (Maybe ClusterState)
clusterStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EMR.DescribeCluster' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
newClusterTerminated :: Core.Wait DescribeCluster
newClusterTerminated :: Wait DescribeCluster
newClusterTerminated =
  Core.Wait
    { $sel:name:Wait :: ByteString
Core.name = ByteString
"ClusterTerminated",
      $sel:attempts:Wait :: Int
Core.attempts = Int
60,
      $sel:delay:Wait :: Seconds
Core.delay = Seconds
30,
      $sel:acceptors:Wait :: [Acceptor DescribeCluster]
Core.acceptors =
        [ forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"TERMINATED"
            Accept
Core.AcceptSuccess
            ( Lens' DescribeClusterResponse Cluster
describeClusterResponse_cluster
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Cluster ClusterStatus
cluster_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' ClusterStatus (Maybe ClusterState)
clusterStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            ),
          forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"TERMINATED_WITH_ERRORS"
            Accept
Core.AcceptFailure
            ( Lens' DescribeClusterResponse Cluster
describeClusterResponse_cluster
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Cluster ClusterStatus
cluster_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' ClusterStatus (Maybe ClusterState)
clusterStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            )
        ]
    }

-- | Polls 'Amazonka.EMR.DescribeStep' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
newStepComplete :: Core.Wait DescribeStep
newStepComplete :: Wait DescribeStep
newStepComplete =
  Core.Wait
    { $sel:name:Wait :: ByteString
Core.name = ByteString
"StepComplete",
      $sel:attempts:Wait :: Int
Core.attempts = Int
60,
      $sel:delay:Wait :: Seconds
Core.delay = Seconds
30,
      $sel:acceptors:Wait :: [Acceptor DescribeStep]
Core.acceptors =
        [ forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"COMPLETED"
            Accept
Core.AcceptSuccess
            ( Lens' DescribeStepResponse (Maybe Step)
describeStepResponse_step
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Step (Maybe StepStatus)
step_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' StepStatus (Maybe StepState)
stepStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            ),
          forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"FAILED"
            Accept
Core.AcceptFailure
            ( Lens' DescribeStepResponse (Maybe Step)
describeStepResponse_step
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Step (Maybe StepStatus)
step_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' StepStatus (Maybe StepState)
stepStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            ),
          forall b a.
Eq b =>
b -> Accept -> Fold (AWSResponse a) b -> Acceptor a
Core.matchAll
            CI Text
"CANCELLED"
            Accept
Core.AcceptFailure
            ( Lens' DescribeStepResponse (Maybe Step)
describeStepResponse_step
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' Step (Maybe StepStatus)
step_status
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Lens' StepStatus (Maybe StepState)
stepStatus_state
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
                forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall a. ToText a => a -> CI Text
Data.toTextCI
            )
        ]
    }