AWS SDK for C++

AWS SDK for C++ Version 1.11.778

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/DescribeServicesRequest.h>
11#include <aws/ecs/model/DescribeServicesResult.h>
12#include <aws/ecs/model/DescribeTasksRequest.h>
13#include <aws/ecs/model/DescribeTasksResult.h>
14
15#include <algorithm>
16
17namespace Aws {
18namespace ECS {
19
20template <typename DerivedClient = ECSClient>
21class ECSWaiter {
22 public:
24 using OutcomeT = Model::DescribeServicesOutcome;
25 using RequestT = Model::DescribeServicesRequest;
28 "ServicesInactiveWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("MISSING"),
29 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
30 if (!outcome.IsSuccess()) return false;
31 const auto& result = outcome.GetResult();
32 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
33 [&](const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
34 }));
36 "ServicesInactiveWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("INACTIVE"),
37 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
38 if (!outcome.IsSuccess()) return false;
39 const auto& result = outcome.GetResult();
40 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
41 [&](const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
42 }));
43
44 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeServices(req); };
45 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 40, std::move(acceptors), operation, "WaitUntilServicesInactive");
46 return waiter.Wait(request);
47 }
48
50 using OutcomeT = Model::DescribeServicesOutcome;
51 using RequestT = Model::DescribeServicesRequest;
54 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("MISSING"),
55 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
56 if (!outcome.IsSuccess()) return false;
57 const auto& result = outcome.GetResult();
58 return std::any_of(result.GetFailures().begin(), result.GetFailures().end(),
59 [&](const Model::Failure& item) { return item.GetReason() == expected.get<Aws::String>(); });
60 }));
62 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("DRAINING"),
63 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
64 if (!outcome.IsSuccess()) return false;
65 const auto& result = outcome.GetResult();
66 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
67 [&](const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
68 }));
70 "ServicesStableWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("INACTIVE"),
71 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
72 if (!outcome.IsSuccess()) return false;
73 const auto& result = outcome.GetResult();
74 return std::any_of(result.GetServices().begin(), result.GetServices().end(),
75 [&](const Model::Service& item) { return item.GetStatus() == expected.get<Aws::String>(); });
76 }));
78 "ServicesStableWaiter", Aws::Utils::WaiterState::SUCCESS, true,
79 [](const Model::DescribeServicesOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
80 if (!outcome.IsSuccess()) return false;
81 const auto& result = outcome.GetResult();
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>();
85 }));
86
87 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeServices(req); };
88 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(15, 40, std::move(acceptors), operation, "WaitUntilServicesStable");
89 return waiter.Wait(request);
90 }
91
93 using OutcomeT = Model::DescribeTasksOutcome;
94 using RequestT = Model::DescribeTasksRequest;
97 "TasksRunningWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("STOPPED"),
98 [](const Model::DescribeTasksOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
99 if (!outcome.IsSuccess()) return false;
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>(); });
103 }));
105 "TasksRunningWaiter", Aws::Utils::WaiterState::FAILURE, Aws::String("MISSING"),
106 [](const Model::DescribeTasksOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
107 if (!outcome.IsSuccess()) return false;
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>(); });
111 }));
113 "TasksRunningWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("RUNNING"),
114 [](const Model::DescribeTasksOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
115 if (!outcome.IsSuccess()) return false;
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>(); });
119 }));
120
121 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeTasks(req); };
122 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(6, 100, std::move(acceptors), operation, "WaitUntilTasksRunning");
123 return waiter.Wait(request);
124 }
125
127 using OutcomeT = Model::DescribeTasksOutcome;
128 using RequestT = Model::DescribeTasksRequest;
131 "TasksStoppedWaiter", Aws::Utils::WaiterState::SUCCESS, Aws::String("STOPPED"),
132 [](const Model::DescribeTasksOutcome& outcome, const Aws::Utils::ExpectedValue& expected) -> bool {
133 if (!outcome.IsSuccess()) return false;
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>(); });
137 }));
138
139 auto operation = [this](const RequestT& req) { return static_cast<DerivedClient*>(this)->DescribeTasks(req); };
140 Aws::Utils::Waiter<RequestT, OutcomeT> waiter(6, 100, std::move(acceptors), operation, "WaitUntilTasksStopped");
141 return waiter.Wait(request);
142 }
143};
144} // namespace ECS
145} // namespace Aws
Aws::Utils::WaiterOutcome< Model::DescribeServicesOutcome > WaitUntilServicesStable(const Model::DescribeServicesRequest &request)
Definition ECSWaiter.h:49
Aws::Utils::WaiterOutcome< Model::DescribeTasksOutcome > WaitUntilTasksRunning(const Model::DescribeTasksRequest &request)
Definition ECSWaiter.h:92
Aws::Utils::WaiterOutcome< Model::DescribeTasksOutcome > WaitUntilTasksStopped(const Model::DescribeTasksRequest &request)
Definition ECSWaiter.h:126
Aws::Utils::WaiterOutcome< Model::DescribeServicesOutcome > WaitUntilServicesInactive(const Model::DescribeServicesRequest &request)
Definition ECSWaiter.h:23
bool IsSuccess() const
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