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/core/utils/memory/stl/AWSString.h>
9 #include <aws/fsx/model/SecurityStyle.h>
10 #include <aws/fsx/model/TieringPolicy.h>
11 #include <utility>
12 
13 namespace Aws
14 {
15 namespace Utils
16 {
17 namespace Json
18 {
19   class JsonValue;
20   class JsonView;
21 } // namespace Json
22 } // namespace Utils
23 namespace FSx
24 {
25 namespace Model
26 {
27 
28   /**
29    * <p>Specifies the configuration of the ONTAP volume that you are
30    * creating.</p><p><h3>See Also:</h3>   <a
31    * href="http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateOntapVolumeConfiguration">AWS
32    * API Reference</a></p>
33    */
34   class AWS_FSX_API CreateOntapVolumeConfiguration
35   {
36   public:
37     CreateOntapVolumeConfiguration();
38     CreateOntapVolumeConfiguration(Aws::Utils::Json::JsonView jsonValue);
39     CreateOntapVolumeConfiguration& operator=(Aws::Utils::Json::JsonView jsonValue);
40     Aws::Utils::Json::JsonValue Jsonize() const;
41 
42 
43     /**
44      * <p>Specifies the location in the SVM's namespace where the volume is mounted.
45      * The <code>JunctionPath</code> must have a leading forward slash, such as
46      * <code>/vol3</code>.</p>
47      */
GetJunctionPath()48     inline const Aws::String& GetJunctionPath() const{ return m_junctionPath; }
49 
50     /**
51      * <p>Specifies the location in the SVM's namespace where the volume is mounted.
52      * The <code>JunctionPath</code> must have a leading forward slash, such as
53      * <code>/vol3</code>.</p>
54      */
JunctionPathHasBeenSet()55     inline bool JunctionPathHasBeenSet() const { return m_junctionPathHasBeenSet; }
56 
57     /**
58      * <p>Specifies the location in the SVM's namespace where the volume is mounted.
59      * The <code>JunctionPath</code> must have a leading forward slash, such as
60      * <code>/vol3</code>.</p>
61      */
SetJunctionPath(const Aws::String & value)62     inline void SetJunctionPath(const Aws::String& value) { m_junctionPathHasBeenSet = true; m_junctionPath = value; }
63 
64     /**
65      * <p>Specifies the location in the SVM's namespace where the volume is mounted.
66      * The <code>JunctionPath</code> must have a leading forward slash, such as
67      * <code>/vol3</code>.</p>
68      */
SetJunctionPath(Aws::String && value)69     inline void SetJunctionPath(Aws::String&& value) { m_junctionPathHasBeenSet = true; m_junctionPath = std::move(value); }
70 
71     /**
72      * <p>Specifies the location in the SVM's namespace where the volume is mounted.
73      * The <code>JunctionPath</code> must have a leading forward slash, such as
74      * <code>/vol3</code>.</p>
75      */
SetJunctionPath(const char * value)76     inline void SetJunctionPath(const char* value) { m_junctionPathHasBeenSet = true; m_junctionPath.assign(value); }
77 
78     /**
79      * <p>Specifies the location in the SVM's namespace where the volume is mounted.
80      * The <code>JunctionPath</code> must have a leading forward slash, such as
81      * <code>/vol3</code>.</p>
82      */
WithJunctionPath(const Aws::String & value)83     inline CreateOntapVolumeConfiguration& WithJunctionPath(const Aws::String& value) { SetJunctionPath(value); return *this;}
84 
85     /**
86      * <p>Specifies the location in the SVM's namespace where the volume is mounted.
87      * The <code>JunctionPath</code> must have a leading forward slash, such as
88      * <code>/vol3</code>.</p>
89      */
WithJunctionPath(Aws::String && value)90     inline CreateOntapVolumeConfiguration& WithJunctionPath(Aws::String&& value) { SetJunctionPath(std::move(value)); return *this;}
91 
92     /**
93      * <p>Specifies the location in the SVM's namespace where the volume is mounted.
94      * The <code>JunctionPath</code> must have a leading forward slash, such as
95      * <code>/vol3</code>.</p>
96      */
WithJunctionPath(const char * value)97     inline CreateOntapVolumeConfiguration& WithJunctionPath(const char* value) { SetJunctionPath(value); return *this;}
98 
99 
100     /**
101      * <p>The security style for the volume. Specify one of the following values:</p>
102      * <ul> <li> <p> <code>UNIX</code> if the file system is managed by a UNIX
103      * administrator, the majority of users are NFS clients, and an application
104      * accessing the data uses a UNIX user as the service account. <code>UNIX</code> is
105      * the default.</p> </li> <li> <p> <code>NTFS</code> if the file system is managed
106      * by a Windows administrator, the majority of users are SMB clients, and an
107      * application accessing the data uses a Windows user as the service account.</p>
108      * </li> <li> <p> <code>MIXED</code> if the file system is managed by both UNIX and
109      * Windows administrators and users consist of both NFS and SMB clients.</p> </li>
110      * </ul>
111      */
GetSecurityStyle()112     inline const SecurityStyle& GetSecurityStyle() const{ return m_securityStyle; }
113 
114     /**
115      * <p>The security style for the volume. Specify one of the following values:</p>
116      * <ul> <li> <p> <code>UNIX</code> if the file system is managed by a UNIX
117      * administrator, the majority of users are NFS clients, and an application
118      * accessing the data uses a UNIX user as the service account. <code>UNIX</code> is
119      * the default.</p> </li> <li> <p> <code>NTFS</code> if the file system is managed
120      * by a Windows administrator, the majority of users are SMB clients, and an
121      * application accessing the data uses a Windows user as the service account.</p>
122      * </li> <li> <p> <code>MIXED</code> if the file system is managed by both UNIX and
123      * Windows administrators and users consist of both NFS and SMB clients.</p> </li>
124      * </ul>
125      */
SecurityStyleHasBeenSet()126     inline bool SecurityStyleHasBeenSet() const { return m_securityStyleHasBeenSet; }
127 
128     /**
129      * <p>The security style for the volume. Specify one of the following values:</p>
130      * <ul> <li> <p> <code>UNIX</code> if the file system is managed by a UNIX
131      * administrator, the majority of users are NFS clients, and an application
132      * accessing the data uses a UNIX user as the service account. <code>UNIX</code> is
133      * the default.</p> </li> <li> <p> <code>NTFS</code> if the file system is managed
134      * by a Windows administrator, the majority of users are SMB clients, and an
135      * application accessing the data uses a Windows user as the service account.</p>
136      * </li> <li> <p> <code>MIXED</code> if the file system is managed by both UNIX and
137      * Windows administrators and users consist of both NFS and SMB clients.</p> </li>
138      * </ul>
139      */
SetSecurityStyle(const SecurityStyle & value)140     inline void SetSecurityStyle(const SecurityStyle& value) { m_securityStyleHasBeenSet = true; m_securityStyle = value; }
141 
142     /**
143      * <p>The security style for the volume. Specify one of the following values:</p>
144      * <ul> <li> <p> <code>UNIX</code> if the file system is managed by a UNIX
145      * administrator, the majority of users are NFS clients, and an application
146      * accessing the data uses a UNIX user as the service account. <code>UNIX</code> is
147      * the default.</p> </li> <li> <p> <code>NTFS</code> if the file system is managed
148      * by a Windows administrator, the majority of users are SMB clients, and an
149      * application accessing the data uses a Windows user as the service account.</p>
150      * </li> <li> <p> <code>MIXED</code> if the file system is managed by both UNIX and
151      * Windows administrators and users consist of both NFS and SMB clients.</p> </li>
152      * </ul>
153      */
SetSecurityStyle(SecurityStyle && value)154     inline void SetSecurityStyle(SecurityStyle&& value) { m_securityStyleHasBeenSet = true; m_securityStyle = std::move(value); }
155 
156     /**
157      * <p>The security style for the volume. Specify one of the following values:</p>
158      * <ul> <li> <p> <code>UNIX</code> if the file system is managed by a UNIX
159      * administrator, the majority of users are NFS clients, and an application
160      * accessing the data uses a UNIX user as the service account. <code>UNIX</code> is
161      * the default.</p> </li> <li> <p> <code>NTFS</code> if the file system is managed
162      * by a Windows administrator, the majority of users are SMB clients, and an
163      * application accessing the data uses a Windows user as the service account.</p>
164      * </li> <li> <p> <code>MIXED</code> if the file system is managed by both UNIX and
165      * Windows administrators and users consist of both NFS and SMB clients.</p> </li>
166      * </ul>
167      */
WithSecurityStyle(const SecurityStyle & value)168     inline CreateOntapVolumeConfiguration& WithSecurityStyle(const SecurityStyle& value) { SetSecurityStyle(value); return *this;}
169 
170     /**
171      * <p>The security style for the volume. Specify one of the following values:</p>
172      * <ul> <li> <p> <code>UNIX</code> if the file system is managed by a UNIX
173      * administrator, the majority of users are NFS clients, and an application
174      * accessing the data uses a UNIX user as the service account. <code>UNIX</code> is
175      * the default.</p> </li> <li> <p> <code>NTFS</code> if the file system is managed
176      * by a Windows administrator, the majority of users are SMB clients, and an
177      * application accessing the data uses a Windows user as the service account.</p>
178      * </li> <li> <p> <code>MIXED</code> if the file system is managed by both UNIX and
179      * Windows administrators and users consist of both NFS and SMB clients.</p> </li>
180      * </ul>
181      */
WithSecurityStyle(SecurityStyle && value)182     inline CreateOntapVolumeConfiguration& WithSecurityStyle(SecurityStyle&& value) { SetSecurityStyle(std::move(value)); return *this;}
183 
184 
185     /**
186      * <p>Specifies the size of the volume, in megabytes (MB), that you are
187      * creating.</p>
188      */
GetSizeInMegabytes()189     inline int GetSizeInMegabytes() const{ return m_sizeInMegabytes; }
190 
191     /**
192      * <p>Specifies the size of the volume, in megabytes (MB), that you are
193      * creating.</p>
194      */
SizeInMegabytesHasBeenSet()195     inline bool SizeInMegabytesHasBeenSet() const { return m_sizeInMegabytesHasBeenSet; }
196 
197     /**
198      * <p>Specifies the size of the volume, in megabytes (MB), that you are
199      * creating.</p>
200      */
SetSizeInMegabytes(int value)201     inline void SetSizeInMegabytes(int value) { m_sizeInMegabytesHasBeenSet = true; m_sizeInMegabytes = value; }
202 
203     /**
204      * <p>Specifies the size of the volume, in megabytes (MB), that you are
205      * creating.</p>
206      */
WithSizeInMegabytes(int value)207     inline CreateOntapVolumeConfiguration& WithSizeInMegabytes(int value) { SetSizeInMegabytes(value); return *this;}
208 
209 
210     /**
211      * <p>Set to true to enable deduplication, compression, and compaction storage
212      * efficiency features on the volume.</p>
213      */
GetStorageEfficiencyEnabled()214     inline bool GetStorageEfficiencyEnabled() const{ return m_storageEfficiencyEnabled; }
215 
216     /**
217      * <p>Set to true to enable deduplication, compression, and compaction storage
218      * efficiency features on the volume.</p>
219      */
StorageEfficiencyEnabledHasBeenSet()220     inline bool StorageEfficiencyEnabledHasBeenSet() const { return m_storageEfficiencyEnabledHasBeenSet; }
221 
222     /**
223      * <p>Set to true to enable deduplication, compression, and compaction storage
224      * efficiency features on the volume.</p>
225      */
SetStorageEfficiencyEnabled(bool value)226     inline void SetStorageEfficiencyEnabled(bool value) { m_storageEfficiencyEnabledHasBeenSet = true; m_storageEfficiencyEnabled = value; }
227 
228     /**
229      * <p>Set to true to enable deduplication, compression, and compaction storage
230      * efficiency features on the volume.</p>
231      */
WithStorageEfficiencyEnabled(bool value)232     inline CreateOntapVolumeConfiguration& WithStorageEfficiencyEnabled(bool value) { SetStorageEfficiencyEnabled(value); return *this;}
233 
234 
235     /**
236      * <p>Specifies the ONTAP SVM in which to create the volume.</p>
237      */
GetStorageVirtualMachineId()238     inline const Aws::String& GetStorageVirtualMachineId() const{ return m_storageVirtualMachineId; }
239 
240     /**
241      * <p>Specifies the ONTAP SVM in which to create the volume.</p>
242      */
StorageVirtualMachineIdHasBeenSet()243     inline bool StorageVirtualMachineIdHasBeenSet() const { return m_storageVirtualMachineIdHasBeenSet; }
244 
245     /**
246      * <p>Specifies the ONTAP SVM in which to create the volume.</p>
247      */
SetStorageVirtualMachineId(const Aws::String & value)248     inline void SetStorageVirtualMachineId(const Aws::String& value) { m_storageVirtualMachineIdHasBeenSet = true; m_storageVirtualMachineId = value; }
249 
250     /**
251      * <p>Specifies the ONTAP SVM in which to create the volume.</p>
252      */
SetStorageVirtualMachineId(Aws::String && value)253     inline void SetStorageVirtualMachineId(Aws::String&& value) { m_storageVirtualMachineIdHasBeenSet = true; m_storageVirtualMachineId = std::move(value); }
254 
255     /**
256      * <p>Specifies the ONTAP SVM in which to create the volume.</p>
257      */
SetStorageVirtualMachineId(const char * value)258     inline void SetStorageVirtualMachineId(const char* value) { m_storageVirtualMachineIdHasBeenSet = true; m_storageVirtualMachineId.assign(value); }
259 
260     /**
261      * <p>Specifies the ONTAP SVM in which to create the volume.</p>
262      */
WithStorageVirtualMachineId(const Aws::String & value)263     inline CreateOntapVolumeConfiguration& WithStorageVirtualMachineId(const Aws::String& value) { SetStorageVirtualMachineId(value); return *this;}
264 
265     /**
266      * <p>Specifies the ONTAP SVM in which to create the volume.</p>
267      */
WithStorageVirtualMachineId(Aws::String && value)268     inline CreateOntapVolumeConfiguration& WithStorageVirtualMachineId(Aws::String&& value) { SetStorageVirtualMachineId(std::move(value)); return *this;}
269 
270     /**
271      * <p>Specifies the ONTAP SVM in which to create the volume.</p>
272      */
WithStorageVirtualMachineId(const char * value)273     inline CreateOntapVolumeConfiguration& WithStorageVirtualMachineId(const char* value) { SetStorageVirtualMachineId(value); return *this;}
274 
275 
276 
GetTieringPolicy()277     inline const TieringPolicy& GetTieringPolicy() const{ return m_tieringPolicy; }
278 
279 
TieringPolicyHasBeenSet()280     inline bool TieringPolicyHasBeenSet() const { return m_tieringPolicyHasBeenSet; }
281 
282 
SetTieringPolicy(const TieringPolicy & value)283     inline void SetTieringPolicy(const TieringPolicy& value) { m_tieringPolicyHasBeenSet = true; m_tieringPolicy = value; }
284 
285 
SetTieringPolicy(TieringPolicy && value)286     inline void SetTieringPolicy(TieringPolicy&& value) { m_tieringPolicyHasBeenSet = true; m_tieringPolicy = std::move(value); }
287 
288 
WithTieringPolicy(const TieringPolicy & value)289     inline CreateOntapVolumeConfiguration& WithTieringPolicy(const TieringPolicy& value) { SetTieringPolicy(value); return *this;}
290 
291 
WithTieringPolicy(TieringPolicy && value)292     inline CreateOntapVolumeConfiguration& WithTieringPolicy(TieringPolicy&& value) { SetTieringPolicy(std::move(value)); return *this;}
293 
294   private:
295 
296     Aws::String m_junctionPath;
297     bool m_junctionPathHasBeenSet;
298 
299     SecurityStyle m_securityStyle;
300     bool m_securityStyleHasBeenSet;
301 
302     int m_sizeInMegabytes;
303     bool m_sizeInMegabytesHasBeenSet;
304 
305     bool m_storageEfficiencyEnabled;
306     bool m_storageEfficiencyEnabledHasBeenSet;
307 
308     Aws::String m_storageVirtualMachineId;
309     bool m_storageVirtualMachineIdHasBeenSet;
310 
311     TieringPolicy m_tieringPolicy;
312     bool m_tieringPolicyHasBeenSet;
313   };
314 
315 } // namespace Model
316 } // namespace FSx
317 } // namespace Aws
318