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/storagegateway/StorageGateway_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/storagegateway/model/TapeStorageClass.h>
10 #include <aws/storagegateway/model/RetentionLockType.h>
11 #include <aws/storagegateway/model/PoolStatus.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Json
19 {
20   class JsonValue;
21   class JsonView;
22 } // namespace Json
23 } // namespace Utils
24 namespace StorageGateway
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p>Describes a custom tape pool.</p><p><h3>See Also:</h3>   <a
31    * href="http://docs.aws.amazon.com/goto/WebAPI/storagegateway-2013-06-30/PoolInfo">AWS
32    * API Reference</a></p>
33    */
34   class AWS_STORAGEGATEWAY_API PoolInfo
35   {
36   public:
37     PoolInfo();
38     PoolInfo(Aws::Utils::Json::JsonView jsonValue);
39     PoolInfo& operator=(Aws::Utils::Json::JsonView jsonValue);
40     Aws::Utils::Json::JsonValue Jsonize() const;
41 
42 
43     /**
44      * <p>The Amazon Resource Name (ARN) of the custom tape pool. Use the
45      * <a>ListTapePools</a> operation to return a list of custom tape pools for your
46      * account and Amazon Web Services Region.</p>
47      */
GetPoolARN()48     inline const Aws::String& GetPoolARN() const{ return m_poolARN; }
49 
50     /**
51      * <p>The Amazon Resource Name (ARN) of the custom tape pool. Use the
52      * <a>ListTapePools</a> operation to return a list of custom tape pools for your
53      * account and Amazon Web Services Region.</p>
54      */
PoolARNHasBeenSet()55     inline bool PoolARNHasBeenSet() const { return m_poolARNHasBeenSet; }
56 
57     /**
58      * <p>The Amazon Resource Name (ARN) of the custom tape pool. Use the
59      * <a>ListTapePools</a> operation to return a list of custom tape pools for your
60      * account and Amazon Web Services Region.</p>
61      */
SetPoolARN(const Aws::String & value)62     inline void SetPoolARN(const Aws::String& value) { m_poolARNHasBeenSet = true; m_poolARN = value; }
63 
64     /**
65      * <p>The Amazon Resource Name (ARN) of the custom tape pool. Use the
66      * <a>ListTapePools</a> operation to return a list of custom tape pools for your
67      * account and Amazon Web Services Region.</p>
68      */
SetPoolARN(Aws::String && value)69     inline void SetPoolARN(Aws::String&& value) { m_poolARNHasBeenSet = true; m_poolARN = std::move(value); }
70 
71     /**
72      * <p>The Amazon Resource Name (ARN) of the custom tape pool. Use the
73      * <a>ListTapePools</a> operation to return a list of custom tape pools for your
74      * account and Amazon Web Services Region.</p>
75      */
SetPoolARN(const char * value)76     inline void SetPoolARN(const char* value) { m_poolARNHasBeenSet = true; m_poolARN.assign(value); }
77 
78     /**
79      * <p>The Amazon Resource Name (ARN) of the custom tape pool. Use the
80      * <a>ListTapePools</a> operation to return a list of custom tape pools for your
81      * account and Amazon Web Services Region.</p>
82      */
WithPoolARN(const Aws::String & value)83     inline PoolInfo& WithPoolARN(const Aws::String& value) { SetPoolARN(value); return *this;}
84 
85     /**
86      * <p>The Amazon Resource Name (ARN) of the custom tape pool. Use the
87      * <a>ListTapePools</a> operation to return a list of custom tape pools for your
88      * account and Amazon Web Services Region.</p>
89      */
WithPoolARN(Aws::String && value)90     inline PoolInfo& WithPoolARN(Aws::String&& value) { SetPoolARN(std::move(value)); return *this;}
91 
92     /**
93      * <p>The Amazon Resource Name (ARN) of the custom tape pool. Use the
94      * <a>ListTapePools</a> operation to return a list of custom tape pools for your
95      * account and Amazon Web Services Region.</p>
96      */
WithPoolARN(const char * value)97     inline PoolInfo& WithPoolARN(const char* value) { SetPoolARN(value); return *this;}
98 
99 
100     /**
101      * <p>The name of the custom tape pool. <code>PoolName</code> can use all ASCII
102      * characters, except '/' and '\'.</p>
103      */
GetPoolName()104     inline const Aws::String& GetPoolName() const{ return m_poolName; }
105 
106     /**
107      * <p>The name of the custom tape pool. <code>PoolName</code> can use all ASCII
108      * characters, except '/' and '\'.</p>
109      */
PoolNameHasBeenSet()110     inline bool PoolNameHasBeenSet() const { return m_poolNameHasBeenSet; }
111 
112     /**
113      * <p>The name of the custom tape pool. <code>PoolName</code> can use all ASCII
114      * characters, except '/' and '\'.</p>
115      */
SetPoolName(const Aws::String & value)116     inline void SetPoolName(const Aws::String& value) { m_poolNameHasBeenSet = true; m_poolName = value; }
117 
118     /**
119      * <p>The name of the custom tape pool. <code>PoolName</code> can use all ASCII
120      * characters, except '/' and '\'.</p>
121      */
SetPoolName(Aws::String && value)122     inline void SetPoolName(Aws::String&& value) { m_poolNameHasBeenSet = true; m_poolName = std::move(value); }
123 
124     /**
125      * <p>The name of the custom tape pool. <code>PoolName</code> can use all ASCII
126      * characters, except '/' and '\'.</p>
127      */
SetPoolName(const char * value)128     inline void SetPoolName(const char* value) { m_poolNameHasBeenSet = true; m_poolName.assign(value); }
129 
130     /**
131      * <p>The name of the custom tape pool. <code>PoolName</code> can use all ASCII
132      * characters, except '/' and '\'.</p>
133      */
WithPoolName(const Aws::String & value)134     inline PoolInfo& WithPoolName(const Aws::String& value) { SetPoolName(value); return *this;}
135 
136     /**
137      * <p>The name of the custom tape pool. <code>PoolName</code> can use all ASCII
138      * characters, except '/' and '\'.</p>
139      */
WithPoolName(Aws::String && value)140     inline PoolInfo& WithPoolName(Aws::String&& value) { SetPoolName(std::move(value)); return *this;}
141 
142     /**
143      * <p>The name of the custom tape pool. <code>PoolName</code> can use all ASCII
144      * characters, except '/' and '\'.</p>
145      */
WithPoolName(const char * value)146     inline PoolInfo& WithPoolName(const char* value) { SetPoolName(value); return *this;}
147 
148 
149     /**
150      * <p>The storage class that is associated with the custom pool. When you use your
151      * backup application to eject the tape, the tape is archived directly into the
152      * storage class (S3 Glacier or S3 Glacier Deep Archive) that corresponds to the
153      * pool.</p>
154      */
GetStorageClass()155     inline const TapeStorageClass& GetStorageClass() const{ return m_storageClass; }
156 
157     /**
158      * <p>The storage class that is associated with the custom pool. When you use your
159      * backup application to eject the tape, the tape is archived directly into the
160      * storage class (S3 Glacier or S3 Glacier Deep Archive) that corresponds to the
161      * pool.</p>
162      */
StorageClassHasBeenSet()163     inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
164 
165     /**
166      * <p>The storage class that is associated with the custom pool. When you use your
167      * backup application to eject the tape, the tape is archived directly into the
168      * storage class (S3 Glacier or S3 Glacier Deep Archive) that corresponds to the
169      * pool.</p>
170      */
SetStorageClass(const TapeStorageClass & value)171     inline void SetStorageClass(const TapeStorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
172 
173     /**
174      * <p>The storage class that is associated with the custom pool. When you use your
175      * backup application to eject the tape, the tape is archived directly into the
176      * storage class (S3 Glacier or S3 Glacier Deep Archive) that corresponds to the
177      * pool.</p>
178      */
SetStorageClass(TapeStorageClass && value)179     inline void SetStorageClass(TapeStorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
180 
181     /**
182      * <p>The storage class that is associated with the custom pool. When you use your
183      * backup application to eject the tape, the tape is archived directly into the
184      * storage class (S3 Glacier or S3 Glacier Deep Archive) that corresponds to the
185      * pool.</p>
186      */
WithStorageClass(const TapeStorageClass & value)187     inline PoolInfo& WithStorageClass(const TapeStorageClass& value) { SetStorageClass(value); return *this;}
188 
189     /**
190      * <p>The storage class that is associated with the custom pool. When you use your
191      * backup application to eject the tape, the tape is archived directly into the
192      * storage class (S3 Glacier or S3 Glacier Deep Archive) that corresponds to the
193      * pool.</p>
194      */
WithStorageClass(TapeStorageClass && value)195     inline PoolInfo& WithStorageClass(TapeStorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
196 
197 
198     /**
199      * <p>Tape retention lock type, which can be configured in two modes. When
200      * configured in governance mode, Amazon Web Services accounts with specific IAM
201      * permissions are authorized to remove the tape retention lock from archived
202      * virtual tapes. When configured in compliance mode, the tape retention lock
203      * cannot be removed by any user, including the root Amazon Web Services
204      * account.</p>
205      */
GetRetentionLockType()206     inline const RetentionLockType& GetRetentionLockType() const{ return m_retentionLockType; }
207 
208     /**
209      * <p>Tape retention lock type, which can be configured in two modes. When
210      * configured in governance mode, Amazon Web Services accounts with specific IAM
211      * permissions are authorized to remove the tape retention lock from archived
212      * virtual tapes. When configured in compliance mode, the tape retention lock
213      * cannot be removed by any user, including the root Amazon Web Services
214      * account.</p>
215      */
RetentionLockTypeHasBeenSet()216     inline bool RetentionLockTypeHasBeenSet() const { return m_retentionLockTypeHasBeenSet; }
217 
218     /**
219      * <p>Tape retention lock type, which can be configured in two modes. When
220      * configured in governance mode, Amazon Web Services accounts with specific IAM
221      * permissions are authorized to remove the tape retention lock from archived
222      * virtual tapes. When configured in compliance mode, the tape retention lock
223      * cannot be removed by any user, including the root Amazon Web Services
224      * account.</p>
225      */
SetRetentionLockType(const RetentionLockType & value)226     inline void SetRetentionLockType(const RetentionLockType& value) { m_retentionLockTypeHasBeenSet = true; m_retentionLockType = value; }
227 
228     /**
229      * <p>Tape retention lock type, which can be configured in two modes. When
230      * configured in governance mode, Amazon Web Services accounts with specific IAM
231      * permissions are authorized to remove the tape retention lock from archived
232      * virtual tapes. When configured in compliance mode, the tape retention lock
233      * cannot be removed by any user, including the root Amazon Web Services
234      * account.</p>
235      */
SetRetentionLockType(RetentionLockType && value)236     inline void SetRetentionLockType(RetentionLockType&& value) { m_retentionLockTypeHasBeenSet = true; m_retentionLockType = std::move(value); }
237 
238     /**
239      * <p>Tape retention lock type, which can be configured in two modes. When
240      * configured in governance mode, Amazon Web Services accounts with specific IAM
241      * permissions are authorized to remove the tape retention lock from archived
242      * virtual tapes. When configured in compliance mode, the tape retention lock
243      * cannot be removed by any user, including the root Amazon Web Services
244      * account.</p>
245      */
WithRetentionLockType(const RetentionLockType & value)246     inline PoolInfo& WithRetentionLockType(const RetentionLockType& value) { SetRetentionLockType(value); return *this;}
247 
248     /**
249      * <p>Tape retention lock type, which can be configured in two modes. When
250      * configured in governance mode, Amazon Web Services accounts with specific IAM
251      * permissions are authorized to remove the tape retention lock from archived
252      * virtual tapes. When configured in compliance mode, the tape retention lock
253      * cannot be removed by any user, including the root Amazon Web Services
254      * account.</p>
255      */
WithRetentionLockType(RetentionLockType && value)256     inline PoolInfo& WithRetentionLockType(RetentionLockType&& value) { SetRetentionLockType(std::move(value)); return *this;}
257 
258 
259     /**
260      * <p>Tape retention lock time is set in days. Tape retention lock can be enabled
261      * for up to 100 years (36,500 days).</p>
262      */
GetRetentionLockTimeInDays()263     inline int GetRetentionLockTimeInDays() const{ return m_retentionLockTimeInDays; }
264 
265     /**
266      * <p>Tape retention lock time is set in days. Tape retention lock can be enabled
267      * for up to 100 years (36,500 days).</p>
268      */
RetentionLockTimeInDaysHasBeenSet()269     inline bool RetentionLockTimeInDaysHasBeenSet() const { return m_retentionLockTimeInDaysHasBeenSet; }
270 
271     /**
272      * <p>Tape retention lock time is set in days. Tape retention lock can be enabled
273      * for up to 100 years (36,500 days).</p>
274      */
SetRetentionLockTimeInDays(int value)275     inline void SetRetentionLockTimeInDays(int value) { m_retentionLockTimeInDaysHasBeenSet = true; m_retentionLockTimeInDays = value; }
276 
277     /**
278      * <p>Tape retention lock time is set in days. Tape retention lock can be enabled
279      * for up to 100 years (36,500 days).</p>
280      */
WithRetentionLockTimeInDays(int value)281     inline PoolInfo& WithRetentionLockTimeInDays(int value) { SetRetentionLockTimeInDays(value); return *this;}
282 
283 
284     /**
285      * <p>Status of the custom tape pool. Pool can be <code>ACTIVE</code> or
286      * <code>DELETED</code>.</p>
287      */
GetPoolStatus()288     inline const PoolStatus& GetPoolStatus() const{ return m_poolStatus; }
289 
290     /**
291      * <p>Status of the custom tape pool. Pool can be <code>ACTIVE</code> or
292      * <code>DELETED</code>.</p>
293      */
PoolStatusHasBeenSet()294     inline bool PoolStatusHasBeenSet() const { return m_poolStatusHasBeenSet; }
295 
296     /**
297      * <p>Status of the custom tape pool. Pool can be <code>ACTIVE</code> or
298      * <code>DELETED</code>.</p>
299      */
SetPoolStatus(const PoolStatus & value)300     inline void SetPoolStatus(const PoolStatus& value) { m_poolStatusHasBeenSet = true; m_poolStatus = value; }
301 
302     /**
303      * <p>Status of the custom tape pool. Pool can be <code>ACTIVE</code> or
304      * <code>DELETED</code>.</p>
305      */
SetPoolStatus(PoolStatus && value)306     inline void SetPoolStatus(PoolStatus&& value) { m_poolStatusHasBeenSet = true; m_poolStatus = std::move(value); }
307 
308     /**
309      * <p>Status of the custom tape pool. Pool can be <code>ACTIVE</code> or
310      * <code>DELETED</code>.</p>
311      */
WithPoolStatus(const PoolStatus & value)312     inline PoolInfo& WithPoolStatus(const PoolStatus& value) { SetPoolStatus(value); return *this;}
313 
314     /**
315      * <p>Status of the custom tape pool. Pool can be <code>ACTIVE</code> or
316      * <code>DELETED</code>.</p>
317      */
WithPoolStatus(PoolStatus && value)318     inline PoolInfo& WithPoolStatus(PoolStatus&& value) { SetPoolStatus(std::move(value)); return *this;}
319 
320   private:
321 
322     Aws::String m_poolARN;
323     bool m_poolARNHasBeenSet;
324 
325     Aws::String m_poolName;
326     bool m_poolNameHasBeenSet;
327 
328     TapeStorageClass m_storageClass;
329     bool m_storageClassHasBeenSet;
330 
331     RetentionLockType m_retentionLockType;
332     bool m_retentionLockTypeHasBeenSet;
333 
334     int m_retentionLockTimeInDays;
335     bool m_retentionLockTimeInDaysHasBeenSet;
336 
337     PoolStatus m_poolStatus;
338     bool m_poolStatusHasBeenSet;
339   };
340 
341 } // namespace Model
342 } // namespace StorageGateway
343 } // namespace Aws
344