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/DaemonDeploymentStatus.h>
11#include <aws/ecs/model/DaemonStatus.h>
12#include <aws/ecs/model/DaemonTaskDefinitionStatus.h>
13#include <aws/ecs/model/DescribeDaemonDeploymentsRequest.h>
14#include <aws/ecs/model/DescribeDaemonDeploymentsResult.h>
15#include <aws/ecs/model/DescribeDaemonRequest.h>
16#include <aws/ecs/model/DescribeDaemonResult.h>
17#include <aws/ecs/model/DescribeDaemonTaskDefinitionRequest.h>
18#include <aws/ecs/model/DescribeDaemonTaskDefinitionResult.h>
19#include <aws/ecs/model/DescribeServicesRequest.h>
20#include <aws/ecs/model/DescribeServicesResult.h>
21#include <aws/ecs/model/DescribeTasksRequest.h>
22#include <aws/ecs/model/DescribeTasksResult.h>
29template <
typename DerivedClient = ECSClient>
37 "DaemonActiveWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"ACTIVE"),
44 "DaemonActiveWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"DELETE_IN_PROGRESS"),
51 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeDaemon(req); };
53 return waiter.
Wait(request);
62 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"SUCCESSFUL"),
66 return std::all_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
68 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
69 expected.get<Aws::String>();
73 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"STOPPED"),
77 return std::any_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
79 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
80 expected.get<Aws::String>();
84 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"ROLLBACK_FAILED"),
88 return std::any_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
90 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
91 expected.get<Aws::String>();
95 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"ROLLBACK_SUCCESSFUL"),
99 return std::any_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
101 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
102 expected.get<Aws::String>();
106 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"MISSING"),
109 const auto& result = outcome.
GetResult();
110 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
111 [&](
const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
114 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeDaemonDeployments(req); };
116 return waiter.
Wait(request);
125 "DaemonDeploymentStoppedWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"STOPPED"),
128 const auto& result = outcome.
GetResult();
129 return std::all_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
131 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
132 expected.get<Aws::String>();
136 "DaemonDeploymentStoppedWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"MISSING"),
139 const auto& result = outcome.
GetResult();
140 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
141 [&](
const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
144 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeDaemonDeployments(req); };
146 return waiter.
Wait(request);
155 "DaemonTaskDefinitionActiveWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"ACTIVE"),
158 const auto& result = outcome.
GetResult();
160 result.GetDaemonTaskDefinition().GetStatus()) == expected.get<
Aws::String>();
163 "DaemonTaskDefinitionActiveWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"DELETE_IN_PROGRESS"),
166 const auto& result = outcome.
GetResult();
168 result.GetDaemonTaskDefinition().GetStatus()) == expected.get<
Aws::String>();
171 "DaemonTaskDefinitionActiveWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"DELETED"),
174 const auto& result = outcome.
GetResult();
176 result.GetDaemonTaskDefinition().GetStatus()) == expected.get<
Aws::String>();
179 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeDaemonTaskDefinition(req); };
181 return waiter.
Wait(request);
190 "DaemonTaskDefinitionDeletedWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"DELETED"),
193 const auto& result = outcome.
GetResult();
195 result.GetDaemonTaskDefinition().GetStatus()) == expected.get<
Aws::String>();
198 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeDaemonTaskDefinition(req); };
200 return waiter.
Wait(request);
208 "ServicesInactiveWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"MISSING"),
211 const auto& result = outcome.
GetResult();
212 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
213 [&](
const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
216 "ServicesInactiveWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"INACTIVE"),
219 const auto& result = outcome.
GetResult();
220 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
221 [&](
const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
224 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeServices(req); };
226 return waiter.
Wait(request);
234 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"MISSING"),
237 const auto& result = outcome.
GetResult();
238 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
239 [&](
const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
242 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"DRAINING"),
245 const auto& result = outcome.
GetResult();
246 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
247 [&](
const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
250 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"INACTIVE"),
253 const auto& result = outcome.
GetResult();
254 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
255 [&](
const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
258 "ServicesStableWaiter", Aws::Utils::WaiterState::SUCCESS,
true,
261 const auto& result = outcome.
GetResult();
262 return (std::count_if(result.GetServices().begin(), result.GetServices().end(), [](
const Model::Service& item) {
263 return !((item.GetDeployments().size() == 1) && (item.GetRunningCount() == item.GetDesiredCount()));
264 }) == 0) == expected.get<
bool>();
267 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeServices(req); };
269 return waiter.
Wait(request);
277 "TasksRunningWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"STOPPED"),
280 const auto& result = outcome.
GetResult();
281 return std::any_of(result.GetTasks().begin(), result.GetTasks().end(),
282 [&](
const Model::Task& item) { return item.GetLastStatus() == expected.get<Aws::String>(); });
285 "TasksRunningWaiter", Aws::Utils::WaiterState::FAILURE,
Aws::String(
"MISSING"),
288 const auto& result = outcome.
GetResult();
289 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
290 [&](
const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
293 "TasksRunningWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"RUNNING"),
296 const auto& result = outcome.
GetResult();
297 return std::all_of(result.GetTasks().begin(), result.GetTasks().end(),
298 [&](
const Model::Task& item) { return item.GetLastStatus() == expected.get<Aws::String>(); });
301 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeTasks(req); };
303 return waiter.
Wait(request);
311 "TasksStoppedWaiter", Aws::Utils::WaiterState::SUCCESS,
Aws::String(
"STOPPED"),
314 const auto& result = outcome.
GetResult();
315 return std::all_of(result.GetTasks().begin(), result.GetTasks().end(),
316 [&](
const Model::Task& item) { return item.GetLastStatus() == expected.get<Aws::String>(); });
319 auto operation = [
this](
const RequestT& req) {
return static_cast<DerivedClient*
>(
this)->DescribeTasks(req); };
321 return waiter.
Wait(request);
Aws::Utils::WaiterOutcome< Model::DescribeDaemonOutcome > WaitUntilDaemonActive(const Model::DescribeDaemonRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeDaemonDeploymentsOutcome > WaitUntilDaemonDeploymentSuccessful(const Model::DescribeDaemonDeploymentsRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeDaemonDeploymentsOutcome > WaitUntilDaemonDeploymentStopped(const Model::DescribeDaemonDeploymentsRequest &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::DescribeDaemonTaskDefinitionOutcome > WaitUntilDaemonTaskDefinitionDeleted(const Model::DescribeDaemonTaskDefinitionRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeTasksOutcome > WaitUntilTasksStopped(const Model::DescribeTasksRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeServicesOutcome > WaitUntilServicesInactive(const Model::DescribeServicesRequest &request)
Aws::Utils::WaiterOutcome< Model::DescribeDaemonTaskDefinitionOutcome > WaitUntilDaemonTaskDefinitionActive(const Model::DescribeDaemonTaskDefinitionRequest &request)
const R & GetResult() const
WaiterOutcome< OutcomeT > Wait(const RequestT &request)
AWS_ECS_API Aws::String GetNameForDaemonStatus(DaemonStatus value)
AWS_ECS_API Aws::String GetNameForDaemonTaskDefinitionStatus(DaemonTaskDefinitionStatus value)
Aws::Utils::Outcome< DescribeServicesResult, ECSError > DescribeServicesOutcome
Aws::Utils::Outcome< DescribeDaemonResult, ECSError > DescribeDaemonOutcome
Aws::Utils::Outcome< DescribeTasksResult, ECSError > DescribeTasksOutcome
Aws::Utils::Outcome< DescribeDaemonTaskDefinitionResult, ECSError > DescribeDaemonTaskDefinitionOutcome
Aws::Utils::Outcome< DescribeDaemonDeploymentsResult, ECSError > DescribeDaemonDeploymentsOutcome
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