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>Used to specify changes to the ONTAP configuration for the volume you are
30    * updating.</p><p><h3>See Also:</h3>   <a
31    * href="http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateOntapVolumeConfiguration">AWS
32    * API Reference</a></p>
33    */
34   class AWS_FSX_API UpdateOntapVolumeConfiguration
35   {
36   public:
37     UpdateOntapVolumeConfiguration();
38     UpdateOntapVolumeConfiguration(Aws::Utils::Json::JsonView jsonValue);
39     UpdateOntapVolumeConfiguration& 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 UpdateOntapVolumeConfiguration& 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 UpdateOntapVolumeConfiguration& 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 UpdateOntapVolumeConfiguration& WithJunctionPath(const char* value) { SetJunctionPath(value); return *this;}
98 
99 
100     /**
101      * <p>The security style for the volume, which can be <code>UNIX</code>.
102      * <code>NTFS</code>, or <code>MIXED</code>.</p>
103      */
GetSecurityStyle()104     inline const SecurityStyle& GetSecurityStyle() const{ return m_securityStyle; }
105 
106     /**
107      * <p>The security style for the volume, which can be <code>UNIX</code>.
108      * <code>NTFS</code>, or <code>MIXED</code>.</p>
109      */
SecurityStyleHasBeenSet()110     inline bool SecurityStyleHasBeenSet() const { return m_securityStyleHasBeenSet; }
111 
112     /**
113      * <p>The security style for the volume, which can be <code>UNIX</code>.
114      * <code>NTFS</code>, or <code>MIXED</code>.</p>
115      */
SetSecurityStyle(const SecurityStyle & value)116     inline void SetSecurityStyle(const SecurityStyle& value) { m_securityStyleHasBeenSet = true; m_securityStyle = value; }
117 
118     /**
119      * <p>The security style for the volume, which can be <code>UNIX</code>.
120      * <code>NTFS</code>, or <code>MIXED</code>.</p>
121      */
SetSecurityStyle(SecurityStyle && value)122     inline void SetSecurityStyle(SecurityStyle&& value) { m_securityStyleHasBeenSet = true; m_securityStyle = std::move(value); }
123 
124     /**
125      * <p>The security style for the volume, which can be <code>UNIX</code>.
126      * <code>NTFS</code>, or <code>MIXED</code>.</p>
127      */
WithSecurityStyle(const SecurityStyle & value)128     inline UpdateOntapVolumeConfiguration& WithSecurityStyle(const SecurityStyle& value) { SetSecurityStyle(value); return *this;}
129 
130     /**
131      * <p>The security style for the volume, which can be <code>UNIX</code>.
132      * <code>NTFS</code>, or <code>MIXED</code>.</p>
133      */
WithSecurityStyle(SecurityStyle && value)134     inline UpdateOntapVolumeConfiguration& WithSecurityStyle(SecurityStyle&& value) { SetSecurityStyle(std::move(value)); return *this;}
135 
136 
137     /**
138      * <p>Specifies the size of the volume in megabytes.</p>
139      */
GetSizeInMegabytes()140     inline int GetSizeInMegabytes() const{ return m_sizeInMegabytes; }
141 
142     /**
143      * <p>Specifies the size of the volume in megabytes.</p>
144      */
SizeInMegabytesHasBeenSet()145     inline bool SizeInMegabytesHasBeenSet() const { return m_sizeInMegabytesHasBeenSet; }
146 
147     /**
148      * <p>Specifies the size of the volume in megabytes.</p>
149      */
SetSizeInMegabytes(int value)150     inline void SetSizeInMegabytes(int value) { m_sizeInMegabytesHasBeenSet = true; m_sizeInMegabytes = value; }
151 
152     /**
153      * <p>Specifies the size of the volume in megabytes.</p>
154      */
WithSizeInMegabytes(int value)155     inline UpdateOntapVolumeConfiguration& WithSizeInMegabytes(int value) { SetSizeInMegabytes(value); return *this;}
156 
157 
158     /**
159      * <p>Default is <code>false</code>. Set to true to enable the deduplication,
160      * compression, and compaction storage efficiency features on the volume.</p>
161      */
GetStorageEfficiencyEnabled()162     inline bool GetStorageEfficiencyEnabled() const{ return m_storageEfficiencyEnabled; }
163 
164     /**
165      * <p>Default is <code>false</code>. Set to true to enable the deduplication,
166      * compression, and compaction storage efficiency features on the volume.</p>
167      */
StorageEfficiencyEnabledHasBeenSet()168     inline bool StorageEfficiencyEnabledHasBeenSet() const { return m_storageEfficiencyEnabledHasBeenSet; }
169 
170     /**
171      * <p>Default is <code>false</code>. Set to true to enable the deduplication,
172      * compression, and compaction storage efficiency features on the volume.</p>
173      */
SetStorageEfficiencyEnabled(bool value)174     inline void SetStorageEfficiencyEnabled(bool value) { m_storageEfficiencyEnabledHasBeenSet = true; m_storageEfficiencyEnabled = value; }
175 
176     /**
177      * <p>Default is <code>false</code>. Set to true to enable the deduplication,
178      * compression, and compaction storage efficiency features on the volume.</p>
179      */
WithStorageEfficiencyEnabled(bool value)180     inline UpdateOntapVolumeConfiguration& WithStorageEfficiencyEnabled(bool value) { SetStorageEfficiencyEnabled(value); return *this;}
181 
182 
183     /**
184      * <p>Update the volume's data tiering policy.</p>
185      */
GetTieringPolicy()186     inline const TieringPolicy& GetTieringPolicy() const{ return m_tieringPolicy; }
187 
188     /**
189      * <p>Update the volume's data tiering policy.</p>
190      */
TieringPolicyHasBeenSet()191     inline bool TieringPolicyHasBeenSet() const { return m_tieringPolicyHasBeenSet; }
192 
193     /**
194      * <p>Update the volume's data tiering policy.</p>
195      */
SetTieringPolicy(const TieringPolicy & value)196     inline void SetTieringPolicy(const TieringPolicy& value) { m_tieringPolicyHasBeenSet = true; m_tieringPolicy = value; }
197 
198     /**
199      * <p>Update the volume's data tiering policy.</p>
200      */
SetTieringPolicy(TieringPolicy && value)201     inline void SetTieringPolicy(TieringPolicy&& value) { m_tieringPolicyHasBeenSet = true; m_tieringPolicy = std::move(value); }
202 
203     /**
204      * <p>Update the volume's data tiering policy.</p>
205      */
WithTieringPolicy(const TieringPolicy & value)206     inline UpdateOntapVolumeConfiguration& WithTieringPolicy(const TieringPolicy& value) { SetTieringPolicy(value); return *this;}
207 
208     /**
209      * <p>Update the volume's data tiering policy.</p>
210      */
WithTieringPolicy(TieringPolicy && value)211     inline UpdateOntapVolumeConfiguration& WithTieringPolicy(TieringPolicy&& value) { SetTieringPolicy(std::move(value)); return *this;}
212 
213   private:
214 
215     Aws::String m_junctionPath;
216     bool m_junctionPathHasBeenSet;
217 
218     SecurityStyle m_securityStyle;
219     bool m_securityStyleHasBeenSet;
220 
221     int m_sizeInMegabytes;
222     bool m_sizeInMegabytesHasBeenSet;
223 
224     bool m_storageEfficiencyEnabled;
225     bool m_storageEfficiencyEnabledHasBeenSet;
226 
227     TieringPolicy m_tieringPolicy;
228     bool m_tieringPolicyHasBeenSet;
229   };
230 
231 } // namespace Model
232 } // namespace FSx
233 } // namespace Aws
234