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/fsx/FSx_EXPORTS.h>
8 #include <aws/fsx/FSxRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/fsx/model/UpdateFileSystemWindowsConfiguration.h>
11 #include <aws/fsx/model/UpdateFileSystemLustreConfiguration.h>
12 #include <aws/fsx/model/UpdateFileSystemOntapConfiguration.h>
13 #include <utility>
14 #include <aws/core/utils/UUID.h>
15 
16 namespace Aws
17 {
18 namespace FSx
19 {
20 namespace Model
21 {
22 
23   /**
24    * <p>The request object for the <code>UpdateFileSystem</code>
25    * operation.</p><p><h3>See Also:</h3>   <a
26    * href="http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateFileSystemRequest">AWS
27    * API Reference</a></p>
28    */
29   class AWS_FSX_API UpdateFileSystemRequest : public FSxRequest
30   {
31   public:
32     UpdateFileSystemRequest();
33 
34     // Service request name is the Operation name which will send this request out,
35     // each operation should has unique request name, so that we can get operation's name from this request.
36     // Note: this is not true for response, multiple operations may have the same response name,
37     // so we can not get operation's name from response.
GetServiceRequestName()38     inline virtual const char* GetServiceRequestName() const override { return "UpdateFileSystem"; }
39 
40     Aws::String SerializePayload() const override;
41 
42     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
43 
44 
45     /**
46      * <p>Identifies the file system that you are updating.</p>
47      */
GetFileSystemId()48     inline const Aws::String& GetFileSystemId() const{ return m_fileSystemId; }
49 
50     /**
51      * <p>Identifies the file system that you are updating.</p>
52      */
FileSystemIdHasBeenSet()53     inline bool FileSystemIdHasBeenSet() const { return m_fileSystemIdHasBeenSet; }
54 
55     /**
56      * <p>Identifies the file system that you are updating.</p>
57      */
SetFileSystemId(const Aws::String & value)58     inline void SetFileSystemId(const Aws::String& value) { m_fileSystemIdHasBeenSet = true; m_fileSystemId = value; }
59 
60     /**
61      * <p>Identifies the file system that you are updating.</p>
62      */
SetFileSystemId(Aws::String && value)63     inline void SetFileSystemId(Aws::String&& value) { m_fileSystemIdHasBeenSet = true; m_fileSystemId = std::move(value); }
64 
65     /**
66      * <p>Identifies the file system that you are updating.</p>
67      */
SetFileSystemId(const char * value)68     inline void SetFileSystemId(const char* value) { m_fileSystemIdHasBeenSet = true; m_fileSystemId.assign(value); }
69 
70     /**
71      * <p>Identifies the file system that you are updating.</p>
72      */
WithFileSystemId(const Aws::String & value)73     inline UpdateFileSystemRequest& WithFileSystemId(const Aws::String& value) { SetFileSystemId(value); return *this;}
74 
75     /**
76      * <p>Identifies the file system that you are updating.</p>
77      */
WithFileSystemId(Aws::String && value)78     inline UpdateFileSystemRequest& WithFileSystemId(Aws::String&& value) { SetFileSystemId(std::move(value)); return *this;}
79 
80     /**
81      * <p>Identifies the file system that you are updating.</p>
82      */
WithFileSystemId(const char * value)83     inline UpdateFileSystemRequest& WithFileSystemId(const char* value) { SetFileSystemId(value); return *this;}
84 
85 
86     /**
87      * <p>A string of up to 64 ASCII characters that Amazon FSx uses to ensure
88      * idempotent updates. This string is automatically filled on your behalf when you
89      * use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
90      */
GetClientRequestToken()91     inline const Aws::String& GetClientRequestToken() const{ return m_clientRequestToken; }
92 
93     /**
94      * <p>A string of up to 64 ASCII characters that Amazon FSx uses to ensure
95      * idempotent updates. This string is automatically filled on your behalf when you
96      * use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
97      */
ClientRequestTokenHasBeenSet()98     inline bool ClientRequestTokenHasBeenSet() const { return m_clientRequestTokenHasBeenSet; }
99 
100     /**
101      * <p>A string of up to 64 ASCII characters that Amazon FSx uses to ensure
102      * idempotent updates. This string is automatically filled on your behalf when you
103      * use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
104      */
SetClientRequestToken(const Aws::String & value)105     inline void SetClientRequestToken(const Aws::String& value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken = value; }
106 
107     /**
108      * <p>A string of up to 64 ASCII characters that Amazon FSx uses to ensure
109      * idempotent updates. This string is automatically filled on your behalf when you
110      * use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
111      */
SetClientRequestToken(Aws::String && value)112     inline void SetClientRequestToken(Aws::String&& value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken = std::move(value); }
113 
114     /**
115      * <p>A string of up to 64 ASCII characters that Amazon FSx uses to ensure
116      * idempotent updates. This string is automatically filled on your behalf when you
117      * use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
118      */
SetClientRequestToken(const char * value)119     inline void SetClientRequestToken(const char* value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken.assign(value); }
120 
121     /**
122      * <p>A string of up to 64 ASCII characters that Amazon FSx uses to ensure
123      * idempotent updates. This string is automatically filled on your behalf when you
124      * use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
125      */
WithClientRequestToken(const Aws::String & value)126     inline UpdateFileSystemRequest& WithClientRequestToken(const Aws::String& value) { SetClientRequestToken(value); return *this;}
127 
128     /**
129      * <p>A string of up to 64 ASCII characters that Amazon FSx uses to ensure
130      * idempotent updates. This string is automatically filled on your behalf when you
131      * use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
132      */
WithClientRequestToken(Aws::String && value)133     inline UpdateFileSystemRequest& WithClientRequestToken(Aws::String&& value) { SetClientRequestToken(std::move(value)); return *this;}
134 
135     /**
136      * <p>A string of up to 64 ASCII characters that Amazon FSx uses to ensure
137      * idempotent updates. This string is automatically filled on your behalf when you
138      * use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
139      */
WithClientRequestToken(const char * value)140     inline UpdateFileSystemRequest& WithClientRequestToken(const char* value) { SetClientRequestToken(value); return *this;}
141 
142 
143     /**
144      * <p>Use this parameter to increase the storage capacity of an Amazon FSx for
145      * Windows File Server or Amazon FSx for Lustre file system. Specifies the storage
146      * capacity target value, GiB, to increase the storage capacity for the file system
147      * that you're updating. You cannot make a storage capacity increase request if
148      * there is an existing storage capacity increase request in progress.</p> <p>For
149      * Windows file systems, the storage capacity target value must be at least 10
150      * percent (%) greater than the current storage capacity value. In order to
151      * increase storage capacity, the file system must have at least 16 MB/s of
152      * throughput capacity.</p> <p>For Lustre file systems, the storage capacity target
153      * value can be the following:</p> <ul> <li> <p>For <code>SCRATCH_2</code> and
154      * <code>PERSISTENT_1 SSD</code> deployment types, valid values are in multiples of
155      * 2400 GiB. The value must be greater than the current storage capacity.</p> </li>
156      * <li> <p>For <code>PERSISTENT HDD</code> file systems, valid values are multiples
157      * of 6000 GiB for 12 MB/s/TiB file systems and multiples of 1800 GiB for 40
158      * MB/s/TiB file systems. The values must be greater than the current storage
159      * capacity.</p> </li> <li> <p>For <code>SCRATCH_1</code> file systems, you cannot
160      * increase the storage capacity.</p> </li> </ul> <p>For more information, see <a
161      * href="https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html">Managing
162      * storage capacity</a> in the <i>Amazon FSx for Windows File Server User Guide</i>
163      * and <a
164      * href="https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html">Managing
165      * storage and throughput capacity</a> in the <i>Amazon FSx for Lustre User
166      * Guide</i>.</p>
167      */
GetStorageCapacity()168     inline int GetStorageCapacity() const{ return m_storageCapacity; }
169 
170     /**
171      * <p>Use this parameter to increase the storage capacity of an Amazon FSx for
172      * Windows File Server or Amazon FSx for Lustre file system. Specifies the storage
173      * capacity target value, GiB, to increase the storage capacity for the file system
174      * that you're updating. You cannot make a storage capacity increase request if
175      * there is an existing storage capacity increase request in progress.</p> <p>For
176      * Windows file systems, the storage capacity target value must be at least 10
177      * percent (%) greater than the current storage capacity value. In order to
178      * increase storage capacity, the file system must have at least 16 MB/s of
179      * throughput capacity.</p> <p>For Lustre file systems, the storage capacity target
180      * value can be the following:</p> <ul> <li> <p>For <code>SCRATCH_2</code> and
181      * <code>PERSISTENT_1 SSD</code> deployment types, valid values are in multiples of
182      * 2400 GiB. The value must be greater than the current storage capacity.</p> </li>
183      * <li> <p>For <code>PERSISTENT HDD</code> file systems, valid values are multiples
184      * of 6000 GiB for 12 MB/s/TiB file systems and multiples of 1800 GiB for 40
185      * MB/s/TiB file systems. The values must be greater than the current storage
186      * capacity.</p> </li> <li> <p>For <code>SCRATCH_1</code> file systems, you cannot
187      * increase the storage capacity.</p> </li> </ul> <p>For more information, see <a
188      * href="https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html">Managing
189      * storage capacity</a> in the <i>Amazon FSx for Windows File Server User Guide</i>
190      * and <a
191      * href="https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html">Managing
192      * storage and throughput capacity</a> in the <i>Amazon FSx for Lustre User
193      * Guide</i>.</p>
194      */
StorageCapacityHasBeenSet()195     inline bool StorageCapacityHasBeenSet() const { return m_storageCapacityHasBeenSet; }
196 
197     /**
198      * <p>Use this parameter to increase the storage capacity of an Amazon FSx for
199      * Windows File Server or Amazon FSx for Lustre file system. Specifies the storage
200      * capacity target value, GiB, to increase the storage capacity for the file system
201      * that you're updating. You cannot make a storage capacity increase request if
202      * there is an existing storage capacity increase request in progress.</p> <p>For
203      * Windows file systems, the storage capacity target value must be at least 10
204      * percent (%) greater than the current storage capacity value. In order to
205      * increase storage capacity, the file system must have at least 16 MB/s of
206      * throughput capacity.</p> <p>For Lustre file systems, the storage capacity target
207      * value can be the following:</p> <ul> <li> <p>For <code>SCRATCH_2</code> and
208      * <code>PERSISTENT_1 SSD</code> deployment types, valid values are in multiples of
209      * 2400 GiB. The value must be greater than the current storage capacity.</p> </li>
210      * <li> <p>For <code>PERSISTENT HDD</code> file systems, valid values are multiples
211      * of 6000 GiB for 12 MB/s/TiB file systems and multiples of 1800 GiB for 40
212      * MB/s/TiB file systems. The values must be greater than the current storage
213      * capacity.</p> </li> <li> <p>For <code>SCRATCH_1</code> file systems, you cannot
214      * increase the storage capacity.</p> </li> </ul> <p>For more information, see <a
215      * href="https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html">Managing
216      * storage capacity</a> in the <i>Amazon FSx for Windows File Server User Guide</i>
217      * and <a
218      * href="https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html">Managing
219      * storage and throughput capacity</a> in the <i>Amazon FSx for Lustre User
220      * Guide</i>.</p>
221      */
SetStorageCapacity(int value)222     inline void SetStorageCapacity(int value) { m_storageCapacityHasBeenSet = true; m_storageCapacity = value; }
223 
224     /**
225      * <p>Use this parameter to increase the storage capacity of an Amazon FSx for
226      * Windows File Server or Amazon FSx for Lustre file system. Specifies the storage
227      * capacity target value, GiB, to increase the storage capacity for the file system
228      * that you're updating. You cannot make a storage capacity increase request if
229      * there is an existing storage capacity increase request in progress.</p> <p>For
230      * Windows file systems, the storage capacity target value must be at least 10
231      * percent (%) greater than the current storage capacity value. In order to
232      * increase storage capacity, the file system must have at least 16 MB/s of
233      * throughput capacity.</p> <p>For Lustre file systems, the storage capacity target
234      * value can be the following:</p> <ul> <li> <p>For <code>SCRATCH_2</code> and
235      * <code>PERSISTENT_1 SSD</code> deployment types, valid values are in multiples of
236      * 2400 GiB. The value must be greater than the current storage capacity.</p> </li>
237      * <li> <p>For <code>PERSISTENT HDD</code> file systems, valid values are multiples
238      * of 6000 GiB for 12 MB/s/TiB file systems and multiples of 1800 GiB for 40
239      * MB/s/TiB file systems. The values must be greater than the current storage
240      * capacity.</p> </li> <li> <p>For <code>SCRATCH_1</code> file systems, you cannot
241      * increase the storage capacity.</p> </li> </ul> <p>For more information, see <a
242      * href="https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html">Managing
243      * storage capacity</a> in the <i>Amazon FSx for Windows File Server User Guide</i>
244      * and <a
245      * href="https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html">Managing
246      * storage and throughput capacity</a> in the <i>Amazon FSx for Lustre User
247      * Guide</i>.</p>
248      */
WithStorageCapacity(int value)249     inline UpdateFileSystemRequest& WithStorageCapacity(int value) { SetStorageCapacity(value); return *this;}
250 
251 
252     /**
253      * <p>The configuration updates for an Amazon FSx for Windows File Server file
254      * system.</p>
255      */
GetWindowsConfiguration()256     inline const UpdateFileSystemWindowsConfiguration& GetWindowsConfiguration() const{ return m_windowsConfiguration; }
257 
258     /**
259      * <p>The configuration updates for an Amazon FSx for Windows File Server file
260      * system.</p>
261      */
WindowsConfigurationHasBeenSet()262     inline bool WindowsConfigurationHasBeenSet() const { return m_windowsConfigurationHasBeenSet; }
263 
264     /**
265      * <p>The configuration updates for an Amazon FSx for Windows File Server file
266      * system.</p>
267      */
SetWindowsConfiguration(const UpdateFileSystemWindowsConfiguration & value)268     inline void SetWindowsConfiguration(const UpdateFileSystemWindowsConfiguration& value) { m_windowsConfigurationHasBeenSet = true; m_windowsConfiguration = value; }
269 
270     /**
271      * <p>The configuration updates for an Amazon FSx for Windows File Server file
272      * system.</p>
273      */
SetWindowsConfiguration(UpdateFileSystemWindowsConfiguration && value)274     inline void SetWindowsConfiguration(UpdateFileSystemWindowsConfiguration&& value) { m_windowsConfigurationHasBeenSet = true; m_windowsConfiguration = std::move(value); }
275 
276     /**
277      * <p>The configuration updates for an Amazon FSx for Windows File Server file
278      * system.</p>
279      */
WithWindowsConfiguration(const UpdateFileSystemWindowsConfiguration & value)280     inline UpdateFileSystemRequest& WithWindowsConfiguration(const UpdateFileSystemWindowsConfiguration& value) { SetWindowsConfiguration(value); return *this;}
281 
282     /**
283      * <p>The configuration updates for an Amazon FSx for Windows File Server file
284      * system.</p>
285      */
WithWindowsConfiguration(UpdateFileSystemWindowsConfiguration && value)286     inline UpdateFileSystemRequest& WithWindowsConfiguration(UpdateFileSystemWindowsConfiguration&& value) { SetWindowsConfiguration(std::move(value)); return *this;}
287 
288 
289 
GetLustreConfiguration()290     inline const UpdateFileSystemLustreConfiguration& GetLustreConfiguration() const{ return m_lustreConfiguration; }
291 
292 
LustreConfigurationHasBeenSet()293     inline bool LustreConfigurationHasBeenSet() const { return m_lustreConfigurationHasBeenSet; }
294 
295 
SetLustreConfiguration(const UpdateFileSystemLustreConfiguration & value)296     inline void SetLustreConfiguration(const UpdateFileSystemLustreConfiguration& value) { m_lustreConfigurationHasBeenSet = true; m_lustreConfiguration = value; }
297 
298 
SetLustreConfiguration(UpdateFileSystemLustreConfiguration && value)299     inline void SetLustreConfiguration(UpdateFileSystemLustreConfiguration&& value) { m_lustreConfigurationHasBeenSet = true; m_lustreConfiguration = std::move(value); }
300 
301 
WithLustreConfiguration(const UpdateFileSystemLustreConfiguration & value)302     inline UpdateFileSystemRequest& WithLustreConfiguration(const UpdateFileSystemLustreConfiguration& value) { SetLustreConfiguration(value); return *this;}
303 
304 
WithLustreConfiguration(UpdateFileSystemLustreConfiguration && value)305     inline UpdateFileSystemRequest& WithLustreConfiguration(UpdateFileSystemLustreConfiguration&& value) { SetLustreConfiguration(std::move(value)); return *this;}
306 
307 
308 
GetOntapConfiguration()309     inline const UpdateFileSystemOntapConfiguration& GetOntapConfiguration() const{ return m_ontapConfiguration; }
310 
311 
OntapConfigurationHasBeenSet()312     inline bool OntapConfigurationHasBeenSet() const { return m_ontapConfigurationHasBeenSet; }
313 
314 
SetOntapConfiguration(const UpdateFileSystemOntapConfiguration & value)315     inline void SetOntapConfiguration(const UpdateFileSystemOntapConfiguration& value) { m_ontapConfigurationHasBeenSet = true; m_ontapConfiguration = value; }
316 
317 
SetOntapConfiguration(UpdateFileSystemOntapConfiguration && value)318     inline void SetOntapConfiguration(UpdateFileSystemOntapConfiguration&& value) { m_ontapConfigurationHasBeenSet = true; m_ontapConfiguration = std::move(value); }
319 
320 
WithOntapConfiguration(const UpdateFileSystemOntapConfiguration & value)321     inline UpdateFileSystemRequest& WithOntapConfiguration(const UpdateFileSystemOntapConfiguration& value) { SetOntapConfiguration(value); return *this;}
322 
323 
WithOntapConfiguration(UpdateFileSystemOntapConfiguration && value)324     inline UpdateFileSystemRequest& WithOntapConfiguration(UpdateFileSystemOntapConfiguration&& value) { SetOntapConfiguration(std::move(value)); return *this;}
325 
326   private:
327 
328     Aws::String m_fileSystemId;
329     bool m_fileSystemIdHasBeenSet;
330 
331     Aws::String m_clientRequestToken;
332     bool m_clientRequestTokenHasBeenSet;
333 
334     int m_storageCapacity;
335     bool m_storageCapacityHasBeenSet;
336 
337     UpdateFileSystemWindowsConfiguration m_windowsConfiguration;
338     bool m_windowsConfigurationHasBeenSet;
339 
340     UpdateFileSystemLustreConfiguration m_lustreConfiguration;
341     bool m_lustreConfigurationHasBeenSet;
342 
343     UpdateFileSystemOntapConfiguration m_ontapConfiguration;
344     bool m_ontapConfigurationHasBeenSet;
345   };
346 
347 } // namespace Model
348 } // namespace FSx
349 } // namespace Aws
350