7#include <aws/core/utils/Waiter.h>
8#include <aws/core/utils/memory/AWSMemory.h>
9#include <aws/ecs/ECSClient.h>
10#include <aws/ecs/model/DescribeServicesRequest.h>
11#include <aws/ecs/model/DescribeServicesResult.h>
12#include <aws/ecs/model/DescribeTasksRequest.h>
13#include <aws/ecs/model/DescribeTasksResult.h>
20template <
typename DerivedClient = ECSClient>
28 "ServicesInactiveWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"MISSING"),
32 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
33 [&](
const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
36 "ServicesInactiveWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"INACTIVE"),
40 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
41 [&](
const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
44 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeServices(req); };
46 return waiter.
Wait(request);
54 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"MISSING"),
58 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
59 [&](
const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
62 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"DRAINING"),
66 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
67 [&](
const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
70 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"INACTIVE"),
74 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
75 [&](
const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
78 "ServicesStableWaiter", Aws::Utils::WaiterState::SUCCESS,
true,
82 return (std::count_if(result.GetServices().begin(), result.GetServices().end(), [](
const Model::Service& item) {
83 return !((item.GetDeployments().size() == 1) && (item.GetRunningCount() == item.GetDesiredCount()));
84 }) == 0) == expected.get<
bool>();
87 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeServices(req); };
89 return waiter.
Wait(request);
97 "TasksRunningWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"STOPPED"),
100 const auto& result = outcome.
GetResult();
101 return std::any_of(result.GetTasks().begin(), result.GetTasks().end(),
102 [&](
const Model::Task& item) { return item.GetLastStatus() == expected.get<Aws::String>(); });
105 "TasksRunningWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"MISSING"),
108 const auto& result = outcome.
GetResult();
109 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
110 [&](
const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
113 "TasksRunningWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"RUNNING"),
116 const auto& result = outcome.
GetResult();
117 return std::all_of(result.GetTasks().begin(), result.GetTasks().end(),
118 [&](
const Model::Task& item) { return item.GetLastStatus() == expected.get<Aws::String>(); });
121 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeTasks(req); };
123 return waiter.
Wait(request);
131 "TasksStoppedWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"STOPPED"),
134 const auto& result = outcome.
GetResult();
135 return std::all_of(result.GetTasks().begin(), result.GetTasks().end(),
136 [&](
const Model::Task& item) { return item.GetLastStatus() == expected.get<Aws::String>(); });
139 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeTasks(req); };
141 return waiter.
Wait(request);
Aws::Utils::WaiterOutcome< Model::DescribeServicesOutcome > WaitUntilServicesStable(const Model::DescribeServicesRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeTasksOutcome > WaitUntilTasksRunning(const Model::DescribeTasksRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeTasksOutcome > WaitUntilTasksStopped(const Model::DescribeTasksRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeServicesOutcome > WaitUntilServicesInactive(const Model::DescribeServicesRequest &request)
const R & GetResult() const
WaiterOutcome< OutcomeT > Wait(const RequestT &request)
Aws::Utils::Outcome< DescribeServicesResult, ECSError > DescribeServicesOutcome
Aws::Utils::Outcome< DescribeTasksResult, ECSError > DescribeTasksOutcome
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