1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/gamelift/GameLift_EXPORTS.h>
8 #include <aws/gamelift/GameLiftRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/gamelift/model/ProtectionPolicy.h>
11 #include <aws/gamelift/model/ResourceCreationLimitPolicy.h>
12 #include <aws/core/utils/memory/stl/AWSVector.h>
13 #include <utility>
14 
15 namespace Aws
16 {
17 namespace GameLift
18 {
19 namespace Model
20 {
21 
22   /**
23    * <p>Represents the input for a request operation.</p><p><h3>See Also:</h3>   <a
24    * href="http://docs.aws.amazon.com/goto/WebAPI/gamelift-2015-10-01/UpdateFleetAttributesInput">AWS
25    * API Reference</a></p>
26    */
27   class AWS_GAMELIFT_API UpdateFleetAttributesRequest : public GameLiftRequest
28   {
29   public:
30     UpdateFleetAttributesRequest();
31 
32     // Service request name is the Operation name which will send this request out,
33     // each operation should has unique request name, so that we can get operation's name from this request.
34     // Note: this is not true for response, multiple operations may have the same response name,
35     // so we can not get operation's name from response.
GetServiceRequestName()36     inline virtual const char* GetServiceRequestName() const override { return "UpdateFleetAttributes"; }
37 
38     Aws::String SerializePayload() const override;
39 
40     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
41 
42 
43     /**
44      * <p>A unique identifier for the fleet to update attribute metadata for. You can
45      * use either the fleet ID or ARN value.</p>
46      */
GetFleetId()47     inline const Aws::String& GetFleetId() const{ return m_fleetId; }
48 
49     /**
50      * <p>A unique identifier for the fleet to update attribute metadata for. You can
51      * use either the fleet ID or ARN value.</p>
52      */
FleetIdHasBeenSet()53     inline bool FleetIdHasBeenSet() const { return m_fleetIdHasBeenSet; }
54 
55     /**
56      * <p>A unique identifier for the fleet to update attribute metadata for. You can
57      * use either the fleet ID or ARN value.</p>
58      */
SetFleetId(const Aws::String & value)59     inline void SetFleetId(const Aws::String& value) { m_fleetIdHasBeenSet = true; m_fleetId = value; }
60 
61     /**
62      * <p>A unique identifier for the fleet to update attribute metadata for. You can
63      * use either the fleet ID or ARN value.</p>
64      */
SetFleetId(Aws::String && value)65     inline void SetFleetId(Aws::String&& value) { m_fleetIdHasBeenSet = true; m_fleetId = std::move(value); }
66 
67     /**
68      * <p>A unique identifier for the fleet to update attribute metadata for. You can
69      * use either the fleet ID or ARN value.</p>
70      */
SetFleetId(const char * value)71     inline void SetFleetId(const char* value) { m_fleetIdHasBeenSet = true; m_fleetId.assign(value); }
72 
73     /**
74      * <p>A unique identifier for the fleet to update attribute metadata for. You can
75      * use either the fleet ID or ARN value.</p>
76      */
WithFleetId(const Aws::String & value)77     inline UpdateFleetAttributesRequest& WithFleetId(const Aws::String& value) { SetFleetId(value); return *this;}
78 
79     /**
80      * <p>A unique identifier for the fleet to update attribute metadata for. You can
81      * use either the fleet ID or ARN value.</p>
82      */
WithFleetId(Aws::String && value)83     inline UpdateFleetAttributesRequest& WithFleetId(Aws::String&& value) { SetFleetId(std::move(value)); return *this;}
84 
85     /**
86      * <p>A unique identifier for the fleet to update attribute metadata for. You can
87      * use either the fleet ID or ARN value.</p>
88      */
WithFleetId(const char * value)89     inline UpdateFleetAttributesRequest& WithFleetId(const char* value) { SetFleetId(value); return *this;}
90 
91 
92     /**
93      * <p>A descriptive label that is associated with a fleet. Fleet names do not need
94      * to be unique.</p>
95      */
GetName()96     inline const Aws::String& GetName() const{ return m_name; }
97 
98     /**
99      * <p>A descriptive label that is associated with a fleet. Fleet names do not need
100      * to be unique.</p>
101      */
NameHasBeenSet()102     inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
103 
104     /**
105      * <p>A descriptive label that is associated with a fleet. Fleet names do not need
106      * to be unique.</p>
107      */
SetName(const Aws::String & value)108     inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; }
109 
110     /**
111      * <p>A descriptive label that is associated with a fleet. Fleet names do not need
112      * to be unique.</p>
113      */
SetName(Aws::String && value)114     inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
115 
116     /**
117      * <p>A descriptive label that is associated with a fleet. Fleet names do not need
118      * to be unique.</p>
119      */
SetName(const char * value)120     inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); }
121 
122     /**
123      * <p>A descriptive label that is associated with a fleet. Fleet names do not need
124      * to be unique.</p>
125      */
WithName(const Aws::String & value)126     inline UpdateFleetAttributesRequest& WithName(const Aws::String& value) { SetName(value); return *this;}
127 
128     /**
129      * <p>A descriptive label that is associated with a fleet. Fleet names do not need
130      * to be unique.</p>
131      */
WithName(Aws::String && value)132     inline UpdateFleetAttributesRequest& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
133 
134     /**
135      * <p>A descriptive label that is associated with a fleet. Fleet names do not need
136      * to be unique.</p>
137      */
WithName(const char * value)138     inline UpdateFleetAttributesRequest& WithName(const char* value) { SetName(value); return *this;}
139 
140 
141     /**
142      * <p>A human-readable description of a fleet.</p>
143      */
GetDescription()144     inline const Aws::String& GetDescription() const{ return m_description; }
145 
146     /**
147      * <p>A human-readable description of a fleet.</p>
148      */
DescriptionHasBeenSet()149     inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; }
150 
151     /**
152      * <p>A human-readable description of a fleet.</p>
153      */
SetDescription(const Aws::String & value)154     inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; }
155 
156     /**
157      * <p>A human-readable description of a fleet.</p>
158      */
SetDescription(Aws::String && value)159     inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); }
160 
161     /**
162      * <p>A human-readable description of a fleet.</p>
163      */
SetDescription(const char * value)164     inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); }
165 
166     /**
167      * <p>A human-readable description of a fleet.</p>
168      */
WithDescription(const Aws::String & value)169     inline UpdateFleetAttributesRequest& WithDescription(const Aws::String& value) { SetDescription(value); return *this;}
170 
171     /**
172      * <p>A human-readable description of a fleet.</p>
173      */
WithDescription(Aws::String && value)174     inline UpdateFleetAttributesRequest& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;}
175 
176     /**
177      * <p>A human-readable description of a fleet.</p>
178      */
WithDescription(const char * value)179     inline UpdateFleetAttributesRequest& WithDescription(const char* value) { SetDescription(value); return *this;}
180 
181 
182     /**
183      * <p>The game session protection policy to apply to all new instances created in
184      * this fleet. Instances that already exist are not affected. You can set
185      * protection for individual instances using <a>UpdateGameSession</a>.</p> <ul>
186      * <li> <p> <b>NoProtection</b> -- The game session can be terminated during a
187      * scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game
188      * session is in an <code>ACTIVE</code> status, it cannot be terminated during a
189      * scale-down event.</p> </li> </ul>
190      */
GetNewGameSessionProtectionPolicy()191     inline const ProtectionPolicy& GetNewGameSessionProtectionPolicy() const{ return m_newGameSessionProtectionPolicy; }
192 
193     /**
194      * <p>The game session protection policy to apply to all new instances created in
195      * this fleet. Instances that already exist are not affected. You can set
196      * protection for individual instances using <a>UpdateGameSession</a>.</p> <ul>
197      * <li> <p> <b>NoProtection</b> -- The game session can be terminated during a
198      * scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game
199      * session is in an <code>ACTIVE</code> status, it cannot be terminated during a
200      * scale-down event.</p> </li> </ul>
201      */
NewGameSessionProtectionPolicyHasBeenSet()202     inline bool NewGameSessionProtectionPolicyHasBeenSet() const { return m_newGameSessionProtectionPolicyHasBeenSet; }
203 
204     /**
205      * <p>The game session protection policy to apply to all new instances created in
206      * this fleet. Instances that already exist are not affected. You can set
207      * protection for individual instances using <a>UpdateGameSession</a>.</p> <ul>
208      * <li> <p> <b>NoProtection</b> -- The game session can be terminated during a
209      * scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game
210      * session is in an <code>ACTIVE</code> status, it cannot be terminated during a
211      * scale-down event.</p> </li> </ul>
212      */
SetNewGameSessionProtectionPolicy(const ProtectionPolicy & value)213     inline void SetNewGameSessionProtectionPolicy(const ProtectionPolicy& value) { m_newGameSessionProtectionPolicyHasBeenSet = true; m_newGameSessionProtectionPolicy = value; }
214 
215     /**
216      * <p>The game session protection policy to apply to all new instances created in
217      * this fleet. Instances that already exist are not affected. You can set
218      * protection for individual instances using <a>UpdateGameSession</a>.</p> <ul>
219      * <li> <p> <b>NoProtection</b> -- The game session can be terminated during a
220      * scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game
221      * session is in an <code>ACTIVE</code> status, it cannot be terminated during a
222      * scale-down event.</p> </li> </ul>
223      */
SetNewGameSessionProtectionPolicy(ProtectionPolicy && value)224     inline void SetNewGameSessionProtectionPolicy(ProtectionPolicy&& value) { m_newGameSessionProtectionPolicyHasBeenSet = true; m_newGameSessionProtectionPolicy = std::move(value); }
225 
226     /**
227      * <p>The game session protection policy to apply to all new instances created in
228      * this fleet. Instances that already exist are not affected. You can set
229      * protection for individual instances using <a>UpdateGameSession</a>.</p> <ul>
230      * <li> <p> <b>NoProtection</b> -- The game session can be terminated during a
231      * scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game
232      * session is in an <code>ACTIVE</code> status, it cannot be terminated during a
233      * scale-down event.</p> </li> </ul>
234      */
WithNewGameSessionProtectionPolicy(const ProtectionPolicy & value)235     inline UpdateFleetAttributesRequest& WithNewGameSessionProtectionPolicy(const ProtectionPolicy& value) { SetNewGameSessionProtectionPolicy(value); return *this;}
236 
237     /**
238      * <p>The game session protection policy to apply to all new instances created in
239      * this fleet. Instances that already exist are not affected. You can set
240      * protection for individual instances using <a>UpdateGameSession</a>.</p> <ul>
241      * <li> <p> <b>NoProtection</b> -- The game session can be terminated during a
242      * scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game
243      * session is in an <code>ACTIVE</code> status, it cannot be terminated during a
244      * scale-down event.</p> </li> </ul>
245      */
WithNewGameSessionProtectionPolicy(ProtectionPolicy && value)246     inline UpdateFleetAttributesRequest& WithNewGameSessionProtectionPolicy(ProtectionPolicy&& value) { SetNewGameSessionProtectionPolicy(std::move(value)); return *this;}
247 
248 
249     /**
250      * <p>Policy settings that limit the number of game sessions an individual player
251      * can create over a span of time. </p>
252      */
GetResourceCreationLimitPolicy()253     inline const ResourceCreationLimitPolicy& GetResourceCreationLimitPolicy() const{ return m_resourceCreationLimitPolicy; }
254 
255     /**
256      * <p>Policy settings that limit the number of game sessions an individual player
257      * can create over a span of time. </p>
258      */
ResourceCreationLimitPolicyHasBeenSet()259     inline bool ResourceCreationLimitPolicyHasBeenSet() const { return m_resourceCreationLimitPolicyHasBeenSet; }
260 
261     /**
262      * <p>Policy settings that limit the number of game sessions an individual player
263      * can create over a span of time. </p>
264      */
SetResourceCreationLimitPolicy(const ResourceCreationLimitPolicy & value)265     inline void SetResourceCreationLimitPolicy(const ResourceCreationLimitPolicy& value) { m_resourceCreationLimitPolicyHasBeenSet = true; m_resourceCreationLimitPolicy = value; }
266 
267     /**
268      * <p>Policy settings that limit the number of game sessions an individual player
269      * can create over a span of time. </p>
270      */
SetResourceCreationLimitPolicy(ResourceCreationLimitPolicy && value)271     inline void SetResourceCreationLimitPolicy(ResourceCreationLimitPolicy&& value) { m_resourceCreationLimitPolicyHasBeenSet = true; m_resourceCreationLimitPolicy = std::move(value); }
272 
273     /**
274      * <p>Policy settings that limit the number of game sessions an individual player
275      * can create over a span of time. </p>
276      */
WithResourceCreationLimitPolicy(const ResourceCreationLimitPolicy & value)277     inline UpdateFleetAttributesRequest& WithResourceCreationLimitPolicy(const ResourceCreationLimitPolicy& value) { SetResourceCreationLimitPolicy(value); return *this;}
278 
279     /**
280      * <p>Policy settings that limit the number of game sessions an individual player
281      * can create over a span of time. </p>
282      */
WithResourceCreationLimitPolicy(ResourceCreationLimitPolicy && value)283     inline UpdateFleetAttributesRequest& WithResourceCreationLimitPolicy(ResourceCreationLimitPolicy&& value) { SetResourceCreationLimitPolicy(std::move(value)); return *this;}
284 
285 
286     /**
287      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
288      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
289      * metric group name, or create a new metric group by providing a new name. A fleet
290      * can only be in one metric group at a time.</p>
291      */
GetMetricGroups()292     inline const Aws::Vector<Aws::String>& GetMetricGroups() const{ return m_metricGroups; }
293 
294     /**
295      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
296      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
297      * metric group name, or create a new metric group by providing a new name. A fleet
298      * can only be in one metric group at a time.</p>
299      */
MetricGroupsHasBeenSet()300     inline bool MetricGroupsHasBeenSet() const { return m_metricGroupsHasBeenSet; }
301 
302     /**
303      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
304      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
305      * metric group name, or create a new metric group by providing a new name. A fleet
306      * can only be in one metric group at a time.</p>
307      */
SetMetricGroups(const Aws::Vector<Aws::String> & value)308     inline void SetMetricGroups(const Aws::Vector<Aws::String>& value) { m_metricGroupsHasBeenSet = true; m_metricGroups = value; }
309 
310     /**
311      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
312      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
313      * metric group name, or create a new metric group by providing a new name. A fleet
314      * can only be in one metric group at a time.</p>
315      */
SetMetricGroups(Aws::Vector<Aws::String> && value)316     inline void SetMetricGroups(Aws::Vector<Aws::String>&& value) { m_metricGroupsHasBeenSet = true; m_metricGroups = std::move(value); }
317 
318     /**
319      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
320      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
321      * metric group name, or create a new metric group by providing a new name. A fleet
322      * can only be in one metric group at a time.</p>
323      */
WithMetricGroups(const Aws::Vector<Aws::String> & value)324     inline UpdateFleetAttributesRequest& WithMetricGroups(const Aws::Vector<Aws::String>& value) { SetMetricGroups(value); return *this;}
325 
326     /**
327      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
328      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
329      * metric group name, or create a new metric group by providing a new name. A fleet
330      * can only be in one metric group at a time.</p>
331      */
WithMetricGroups(Aws::Vector<Aws::String> && value)332     inline UpdateFleetAttributesRequest& WithMetricGroups(Aws::Vector<Aws::String>&& value) { SetMetricGroups(std::move(value)); return *this;}
333 
334     /**
335      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
336      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
337      * metric group name, or create a new metric group by providing a new name. A fleet
338      * can only be in one metric group at a time.</p>
339      */
AddMetricGroups(const Aws::String & value)340     inline UpdateFleetAttributesRequest& AddMetricGroups(const Aws::String& value) { m_metricGroupsHasBeenSet = true; m_metricGroups.push_back(value); return *this; }
341 
342     /**
343      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
344      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
345      * metric group name, or create a new metric group by providing a new name. A fleet
346      * can only be in one metric group at a time.</p>
347      */
AddMetricGroups(Aws::String && value)348     inline UpdateFleetAttributesRequest& AddMetricGroups(Aws::String&& value) { m_metricGroupsHasBeenSet = true; m_metricGroups.push_back(std::move(value)); return *this; }
349 
350     /**
351      * <p>The name of a metric group to add this fleet to. Use a metric group in Amazon
352      * CloudWatch to aggregate the metrics from multiple fleets. Provide an existing
353      * metric group name, or create a new metric group by providing a new name. A fleet
354      * can only be in one metric group at a time.</p>
355      */
AddMetricGroups(const char * value)356     inline UpdateFleetAttributesRequest& AddMetricGroups(const char* value) { m_metricGroupsHasBeenSet = true; m_metricGroups.push_back(value); return *this; }
357 
358   private:
359 
360     Aws::String m_fleetId;
361     bool m_fleetIdHasBeenSet;
362 
363     Aws::String m_name;
364     bool m_nameHasBeenSet;
365 
366     Aws::String m_description;
367     bool m_descriptionHasBeenSet;
368 
369     ProtectionPolicy m_newGameSessionProtectionPolicy;
370     bool m_newGameSessionProtectionPolicyHasBeenSet;
371 
372     ResourceCreationLimitPolicy m_resourceCreationLimitPolicy;
373     bool m_resourceCreationLimitPolicyHasBeenSet;
374 
375     Aws::Vector<Aws::String> m_metricGroups;
376     bool m_metricGroupsHasBeenSet;
377   };
378 
379 } // namespace Model
380 } // namespace GameLift
381 } // namespace Aws
382