AWS SDK for C++

AWS SDK for C++ Version 1.11.787

Loading...
Searching...
No Matches
ECSWaiter.h
1
6#pragma once
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>
23
24#include <algorithm>
25
26namespace Aws {
27namespace ECS {
28
29template <typename DerivedClient = ECSClient>
30class ECSWaiter {
31 public:
33 using OutcomeT = Model::DescribeDaemonOutcome;
34 using RequestT = Model::DescribeDaemonRequest;
37 "DaemonActiveWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("ACTIVE"),
38 [](const Model::DescribeDaemonOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
39 if (!outcome.IsSuccess()) return false;
40 const auto& result = outcome.GetResult();
41 return Model::DaemonStatusMapper::GetNameForDaemonStatus(result.GetDaemon().GetStatus()) == expected.get<Aws::String>();
42 }));
44 "DaemonActiveWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("DELETE_IN_PROGRESS"),
45 [](const Model::DescribeDaemonOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
46 if (!outcome.IsSuccess()) return false;
47 const auto& result = outcome.GetResult();
48 return Model::DaemonStatusMapper::GetNameForDaemonStatus(result.GetDaemon().GetStatus()) == expected.get<Aws::String>();
49 }));
50
51 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeDaemon(req); };
52 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 8, std::move(acceptors), operation, "WaitUntilDaemonActive");
53 return waiter.Wait(request);
54 }
55
62 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("SUCCESSFUL"),
63 [](const Model::DescribeDaemonDeploymentsOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
64 if (!outcome.IsSuccess()) return false;
65 const auto& result = outcome.GetResult();
66 return std::all_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
67 [&](const Model::DaemonDeployment& item) {
68 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
69 expected.get<Aws::String>();
70 });
71 }));
73 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("STOPPED"),
74 [](const Model::DescribeDaemonDeploymentsOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
75 if (!outcome.IsSuccess()) return false;
76 const auto& result = outcome.GetResult();
77 return std::any_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
78 [&](const Model::DaemonDeployment& item) {
79 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
80 expected.get<Aws::String>();
81 });
82 }));
84 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("ROLLBACK_FAILED"),
85 [](const Model::DescribeDaemonDeploymentsOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
86 if (!outcome.IsSuccess()) return false;
87 const auto& result = outcome.GetResult();
88 return std::any_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
89 [&](const Model::DaemonDeployment& item) {
90 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
91 expected.get<Aws::String>();
92 });
93 }));
95 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("ROLLBACK_SUCCESSFUL"),
96 [](const Model::DescribeDaemonDeploymentsOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
97 if (!outcome.IsSuccess()) return false;
98 const auto& result = outcome.GetResult();
99 return std::any_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
100 [&](const Model::DaemonDeployment& item) {
101 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
102 expected.get<Aws::String>();
103 });
104 }));
106 "DaemonDeploymentSuccessfulWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("MISSING"),
107 [](const Model::DescribeDaemonDeploymentsOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
108 if (!outcome.IsSuccess()) return false;
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>(); });
112 }));
113
114 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeDaemonDeployments(req); };
115 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 8, std::move(acceptors), operation, "WaitUntilDaemonDeploymentSuccessful");
116 return waiter.Wait(request);
117 }
118
125 "DaemonDeploymentStoppedWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("STOPPED"),
126 [](const Model::DescribeDaemonDeploymentsOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
127 if (!outcome.IsSuccess()) return false;
128 const auto& result = outcome.GetResult();
129 return std::all_of(result.GetDaemonDeployments().begin(), result.GetDaemonDeployments().end(),
130 [&](const Model::DaemonDeployment& item) {
131 return Model::DaemonDeploymentStatusMapper::GetNameForDaemonDeploymentStatus(item.GetStatus()) ==
132 expected.get<Aws::String>();
133 });
134 }));
136 "DaemonDeploymentStoppedWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("MISSING"),
137 [](const Model::DescribeDaemonDeploymentsOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
138 if (!outcome.IsSuccess()) return false;
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>(); });
142 }));
143
144 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeDaemonDeployments(req); };
145 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 8, std::move(acceptors), operation, "WaitUntilDaemonDeploymentStopped");
146 return waiter.Wait(request);
147 }
148
155 "DaemonTaskDefinitionActiveWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("ACTIVE"),
156 [](const Model::DescribeDaemonTaskDefinitionOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
157 if (!outcome.IsSuccess()) return false;
158 const auto& result = outcome.GetResult();
160 result.GetDaemonTaskDefinition().GetStatus()) == expected.get<Aws::String>();
161 }));
163 "DaemonTaskDefinitionActiveWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("DELETE_IN_PROGRESS"),
164 [](const Model::DescribeDaemonTaskDefinitionOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
165 if (!outcome.IsSuccess()) return false;
166 const auto& result = outcome.GetResult();
168 result.GetDaemonTaskDefinition().GetStatus()) == expected.get<Aws::String>();
169 }));
171 "DaemonTaskDefinitionActiveWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("DELETED"),
172 [](const Model::DescribeDaemonTaskDefinitionOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
173 if (!outcome.IsSuccess()) return false;
174 const auto& result = outcome.GetResult();
176 result.GetDaemonTaskDefinition().GetStatus()) == expected.get<Aws::String>();
177 }));
178
179 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeDaemonTaskDefinition(req); };
180 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 8, std::move(acceptors), operation, "WaitUntilDaemonTaskDefinitionActive");
181 return waiter.Wait(request);
182 }
183
190 "DaemonTaskDefinitionDeletedWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("DELETED"),
191 [](const Model::DescribeDaemonTaskDefinitionOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
192 if (!outcome.IsSuccess()) return false;
193 const auto& result = outcome.GetResult();
195 result.GetDaemonTaskDefinition().GetStatus()) == expected.get<Aws::String>();
196 }));
197
198 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeDaemonTaskDefinition(req); };
199 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 8, std::move(acceptors), operation, "WaitUntilDaemonTaskDefinitionDeleted");
200 return waiter.Wait(request);
201 }
202
204 using OutcomeT = Model::DescribeServicesOutcome;
205 using RequestT = Model::DescribeServicesRequest;
208 "ServicesInactiveWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("MISSING"),
209 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
210 if (!outcome.IsSuccess()) return false;
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>(); });
214 }));
216 "ServicesInactiveWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("INACTIVE"),
217 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
218 if (!outcome.IsSuccess()) return false;
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>(); });
222 }));
223
224 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeServices(req); };
225 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 40, std::move(acceptors), operation, "WaitUntilServicesInactive");
226 return waiter.Wait(request);
227 }
228
230 using OutcomeT = Model::DescribeServicesOutcome;
231 using RequestT = Model::DescribeServicesRequest;
234 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("MISSING"),
235 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
236 if (!outcome.IsSuccess()) return false;
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>(); });
240 }));
242 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("DRAINING"),
243 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
244 if (!outcome.IsSuccess()) return false;
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>(); });
248 }));
250 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("INACTIVE"),
251 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
252 if (!outcome.IsSuccess()) return false;
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>(); });
256 }));
258 "ServicesStableWaiter", Aws::Utils::WaiterState::SUCCESS, true,
259 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
260 if (!outcome.IsSuccess()) return false;
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>();
265 }));
266
267 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeServices(req); };
268 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 40, std::move(acceptors), operation, "WaitUntilServicesStable");
269 return waiter.Wait(request);
270 }
271
273 using OutcomeT = Model::DescribeTasksOutcome;
274 using RequestT = Model::DescribeTasksRequest;
277 "TasksRunningWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("STOPPED"),
278 [](const Model::DescribeTasksOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
279 if (!outcome.IsSuccess()) return false;
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>(); });
283 }));
285 "TasksRunningWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("MISSING"),
286 [](const Model::DescribeTasksOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
287 if (!outcome.IsSuccess()) return false;
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>(); });
291 }));
293 "TasksRunningWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("RUNNING"),
294 [](const Model::DescribeTasksOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
295 if (!outcome.IsSuccess()) return false;
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>(); });
299 }));
300
301 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeTasks(req); };
302 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(6, 100, std::move(acceptors), operation, "WaitUntilTasksRunning");
303 return waiter.Wait(request);
304 }
305
307 using OutcomeT = Model::DescribeTasksOutcome;
308 using RequestT = Model::DescribeTasksRequest;
311 "TasksStoppedWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("STOPPED"),
312 [](const Model::DescribeTasksOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
313 if (!outcome.IsSuccess()) return false;
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>(); });
317 }));
318
319 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeTasks(req); };
320 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(6, 100, std::move(acceptors), operation, "WaitUntilTasksStopped");
321 return waiter.Wait(request);
322 }
323};
324} // namespace ECS
325} // namespace Aws
Aws::Utils::WaiterOutcome< Model::DescribeDaemonOutcome > WaitUntilDaemonActive(const Model::DescribeDaemonRequest &request)
Definition ECSWaiter.h:32
Aws::Utils::WaiterOutcome< Model::DescribeDaemonDeploymentsOutcome > WaitUntilDaemonDeploymentSuccessful(const Model::DescribeDaemonDeploymentsRequest &request)
Definition ECSWaiter.h:56
Aws::Utils::WaiterOutcome< Model::DescribeDaemonDeploymentsOutcome > WaitUntilDaemonDeploymentStopped(const Model::DescribeDaemonDeploymentsRequest &request)
Definition ECSWaiter.h:119
Aws::Utils::WaiterOutcome< Model::DescribeServicesOutcome > WaitUntilServicesStable(const Model::DescribeServicesRequest &request)
Definition ECSWaiter.h:229
Aws::Utils::WaiterOutcome< Model::DescribeTasksOutcome > WaitUntilTasksRunning(const Model::DescribeTasksRequest &request)
Definition ECSWaiter.h:272
Aws::Utils::WaiterOutcome< Model::DescribeDaemonTaskDefinitionOutcome > WaitUntilDaemonTaskDefinitionDeleted(const Model::DescribeDaemonTaskDefinitionRequest &request)
Definition ECSWaiter.h:184
Aws::Utils::WaiterOutcome< Model::DescribeTasksOutcome > WaitUntilTasksStopped(const Model::DescribeTasksRequest &request)
Definition ECSWaiter.h:306
Aws::Utils::WaiterOutcome< Model::DescribeServicesOutcome > WaitUntilServicesInactive(const Model::DescribeServicesRequest &request)
Definition ECSWaiter.h:203
Aws::Utils::WaiterOutcome< Model::DescribeDaemonTaskDefinitionOutcome > WaitUntilDaemonTaskDefinitionActive(const Model::DescribeDaemonTaskDefinitionRequest &request)
Definition ECSWaiter.h:149
bool IsSuccess() const
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