7#include <aws/core/utils/Waiter.h>
8#include <aws/core/utils/memory/AWSMemory.h>
9#include <aws/redshift/RedshiftClient.h>
10#include <aws/redshift/model/DescribeClusterSnapshotsRequest.h>
11#include <aws/redshift/model/DescribeClusterSnapshotsResult.h>
12#include <aws/redshift/model/DescribeClustersRequest.h>
13#include <aws/redshift/model/DescribeClustersResult.h>
20template <
typename DerivedClient = RedshiftClient>
28 "ClusterAvailableWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"available"),
32 return std::all_of(result.GetClusters().begin(), result.GetClusters().end(),
33 [&](
const Model::Cluster& item) { return item.GetClusterStatus() == expected.get<Aws::String>(); });
36 "ClusterAvailableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"deleting"),
40 return std::any_of(result.GetClusters().begin(), result.GetClusters().end(),
41 [&](
const Model::Cluster& item) { return item.GetClusterStatus() == expected.get<Aws::String>(); });
46 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeClusters(req); };
48 return waiter.
Wait(request);
58 "ClusterDeletedWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"creating"),
62 return std::any_of(result.GetClusters().begin(), result.GetClusters().end(),
63 [&](
const Model::Cluster& item) { return item.GetClusterStatus() == expected.get<Aws::String>(); });
66 "ClusterDeletedWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"modifying"),
70 return std::any_of(result.GetClusters().begin(), result.GetClusters().end(),
71 [&](
const Model::Cluster& item) { return item.GetClusterStatus() == expected.get<Aws::String>(); });
74 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeClusters(req); };
76 return waiter.
Wait(request);
84 "ClusterRestoredWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"completed"),
88 return std::all_of(result.GetClusters().begin(), result.GetClusters().end(), [&](
const Model::Cluster& item) {
89 return item.GetRestoreStatus().GetStatus() == expected.get<Aws::String>();
93 "ClusterRestoredWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"deleting"),
97 return std::any_of(result.GetClusters().begin(), result.GetClusters().end(),
98 [&](
const Model::Cluster& item) { return item.GetClusterStatus() == expected.get<Aws::String>(); });
101 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeClusters(req); };
103 return waiter.
Wait(request);
112 "SnapshotAvailableWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"available"),
115 const auto& result = outcome.
GetResult();
116 return std::all_of(result.GetSnapshots().begin(), result.GetSnapshots().end(),
117 [&](
const Model::Snapshot& item) { return item.GetStatus() == expected.get<Aws::String>(); });
120 "SnapshotAvailableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"failed"),
123 const auto& result = outcome.
GetResult();
124 return std::any_of(result.GetSnapshots().begin(), result.GetSnapshots().end(),
125 [&](
const Model::Snapshot& item) { return item.GetStatus() == expected.get<Aws::String>(); });
128 "SnapshotAvailableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"deleted"),
131 const auto& result = outcome.
GetResult();
132 return std::any_of(result.GetSnapshots().begin(), result.GetSnapshots().end(),
133 [&](
const Model::Snapshot& item) { return item.GetStatus() == expected.get<Aws::String>(); });
136 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeClusterSnapshots(req); };
138 return waiter.
Wait(request);
Aws::Utils::WaiterOutcome< Model::DescribeClustersOutcome > WaitUntilClusterRestored(const Model::DescribeClustersRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeClustersOutcome > WaitUntilClusterDeleted(const Model::DescribeClustersRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeClustersOutcome > WaitUntilClusterAvailable(const Model::DescribeClustersRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeClusterSnapshotsOutcome > WaitUntilSnapshotAvailable(const Model::DescribeClusterSnapshotsRequest &request)
const R & GetResult() const
WaiterOutcome< OutcomeT > Wait(const RequestT &request)
Aws::Utils::Outcome< DescribeClustersResult, RedshiftError > DescribeClustersOutcome
Aws::Utils::Outcome< DescribeClusterSnapshotsResult, RedshiftError > DescribeClusterSnapshotsOutcome
Crt::Variant< int, bool, Aws::String > ExpectedValue
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
UniquePtr< T > MakeUnique(const char *allocationTag, ArgTypes &&... args)
std::vector< T, Aws::Allocator< T > > Vector