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/batch/Batch_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/batch/model/EFSTransitEncryption.h>
10 #include <aws/batch/model/EFSAuthorizationConfig.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 Batch
24 {
25 namespace Model
26 {
27 
28   /**
29    * <p>This is used when you're using an Amazon Elastic File System file system for
30    * job storage. For more information, see <a
31    * href="https://docs.aws.amazon.com/batch/latest/userguide/efs-volumes.html">Amazon
32    * EFS Volumes</a> in the <i>Batch User Guide</i>.</p><p><h3>See Also:</h3>   <a
33    * href="http://docs.aws.amazon.com/goto/WebAPI/batch-2016-08-10/EFSVolumeConfiguration">AWS
34    * API Reference</a></p>
35    */
36   class AWS_BATCH_API EFSVolumeConfiguration
37   {
38   public:
39     EFSVolumeConfiguration();
40     EFSVolumeConfiguration(Aws::Utils::Json::JsonView jsonValue);
41     EFSVolumeConfiguration& operator=(Aws::Utils::Json::JsonView jsonValue);
42     Aws::Utils::Json::JsonValue Jsonize() const;
43 
44 
45     /**
46      * <p>The Amazon EFS file system ID to use.</p>
47      */
GetFileSystemId()48     inline const Aws::String& GetFileSystemId() const{ return m_fileSystemId; }
49 
50     /**
51      * <p>The Amazon EFS file system ID to use.</p>
52      */
FileSystemIdHasBeenSet()53     inline bool FileSystemIdHasBeenSet() const { return m_fileSystemIdHasBeenSet; }
54 
55     /**
56      * <p>The Amazon EFS file system ID to use.</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>The Amazon EFS file system ID to use.</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>The Amazon EFS file system ID to use.</p>
67      */
SetFileSystemId(const char * value)68     inline void SetFileSystemId(const char* value) { m_fileSystemIdHasBeenSet = true; m_fileSystemId.assign(value); }
69 
70     /**
71      * <p>The Amazon EFS file system ID to use.</p>
72      */
WithFileSystemId(const Aws::String & value)73     inline EFSVolumeConfiguration& WithFileSystemId(const Aws::String& value) { SetFileSystemId(value); return *this;}
74 
75     /**
76      * <p>The Amazon EFS file system ID to use.</p>
77      */
WithFileSystemId(Aws::String && value)78     inline EFSVolumeConfiguration& WithFileSystemId(Aws::String&& value) { SetFileSystemId(std::move(value)); return *this;}
79 
80     /**
81      * <p>The Amazon EFS file system ID to use.</p>
82      */
WithFileSystemId(const char * value)83     inline EFSVolumeConfiguration& WithFileSystemId(const char* value) { SetFileSystemId(value); return *this;}
84 
85 
86     /**
87      * <p>The directory within the Amazon EFS file system to mount as the root
88      * directory inside the host. If this parameter is omitted, the root of the Amazon
89      * EFS volume is used instead. Specifying <code>/</code> has the same effect as
90      * omitting this parameter. The maximum length is 4,096 characters.</p>
91      * <p>If an EFS access point is specified in the <code>authorizationConfig</code>,
92      * the root directory parameter must either be omitted or set to <code>/</code>,
93      * which enforces the path set on the Amazon EFS access point.</p>
94      */
GetRootDirectory()95     inline const Aws::String& GetRootDirectory() const{ return m_rootDirectory; }
96 
97     /**
98      * <p>The directory within the Amazon EFS file system to mount as the root
99      * directory inside the host. If this parameter is omitted, the root of the Amazon
100      * EFS volume is used instead. Specifying <code>/</code> has the same effect as
101      * omitting this parameter. The maximum length is 4,096 characters.</p>
102      * <p>If an EFS access point is specified in the <code>authorizationConfig</code>,
103      * the root directory parameter must either be omitted or set to <code>/</code>,
104      * which enforces the path set on the Amazon EFS access point.</p>
105      */
RootDirectoryHasBeenSet()106     inline bool RootDirectoryHasBeenSet() const { return m_rootDirectoryHasBeenSet; }
107 
108     /**
109      * <p>The directory within the Amazon EFS file system to mount as the root
110      * directory inside the host. If this parameter is omitted, the root of the Amazon
111      * EFS volume is used instead. Specifying <code>/</code> has the same effect as
112      * omitting this parameter. The maximum length is 4,096 characters.</p>
113      * <p>If an EFS access point is specified in the <code>authorizationConfig</code>,
114      * the root directory parameter must either be omitted or set to <code>/</code>,
115      * which enforces the path set on the Amazon EFS access point.</p>
116      */
SetRootDirectory(const Aws::String & value)117     inline void SetRootDirectory(const Aws::String& value) { m_rootDirectoryHasBeenSet = true; m_rootDirectory = value; }
118 
119     /**
120      * <p>The directory within the Amazon EFS file system to mount as the root
121      * directory inside the host. If this parameter is omitted, the root of the Amazon
122      * EFS volume is used instead. Specifying <code>/</code> has the same effect as
123      * omitting this parameter. The maximum length is 4,096 characters.</p>
124      * <p>If an EFS access point is specified in the <code>authorizationConfig</code>,
125      * the root directory parameter must either be omitted or set to <code>/</code>,
126      * which enforces the path set on the Amazon EFS access point.</p>
127      */
SetRootDirectory(Aws::String && value)128     inline void SetRootDirectory(Aws::String&& value) { m_rootDirectoryHasBeenSet = true; m_rootDirectory = std::move(value); }
129 
130     /**
131      * <p>The directory within the Amazon EFS file system to mount as the root
132      * directory inside the host. If this parameter is omitted, the root of the Amazon
133      * EFS volume is used instead. Specifying <code>/</code> has the same effect as
134      * omitting this parameter. The maximum length is 4,096 characters.</p>
135      * <p>If an EFS access point is specified in the <code>authorizationConfig</code>,
136      * the root directory parameter must either be omitted or set to <code>/</code>,
137      * which enforces the path set on the Amazon EFS access point.</p>
138      */
SetRootDirectory(const char * value)139     inline void SetRootDirectory(const char* value) { m_rootDirectoryHasBeenSet = true; m_rootDirectory.assign(value); }
140 
141     /**
142      * <p>The directory within the Amazon EFS file system to mount as the root
143      * directory inside the host. If this parameter is omitted, the root of the Amazon
144      * EFS volume is used instead. Specifying <code>/</code> has the same effect as
145      * omitting this parameter. The maximum length is 4,096 characters.</p>
146      * <p>If an EFS access point is specified in the <code>authorizationConfig</code>,
147      * the root directory parameter must either be omitted or set to <code>/</code>,
148      * which enforces the path set on the Amazon EFS access point.</p>
149      */
WithRootDirectory(const Aws::String & value)150     inline EFSVolumeConfiguration& WithRootDirectory(const Aws::String& value) { SetRootDirectory(value); return *this;}
151 
152     /**
153      * <p>The directory within the Amazon EFS file system to mount as the root
154      * directory inside the host. If this parameter is omitted, the root of the Amazon
155      * EFS volume is used instead. Specifying <code>/</code> has the same effect as
156      * omitting this parameter. The maximum length is 4,096 characters.</p>
157      * <p>If an EFS access point is specified in the <code>authorizationConfig</code>,
158      * the root directory parameter must either be omitted or set to <code>/</code>,
159      * which enforces the path set on the Amazon EFS access point.</p>
160      */
WithRootDirectory(Aws::String && value)161     inline EFSVolumeConfiguration& WithRootDirectory(Aws::String&& value) { SetRootDirectory(std::move(value)); return *this;}
162 
163     /**
164      * <p>The directory within the Amazon EFS file system to mount as the root
165      * directory inside the host. If this parameter is omitted, the root of the Amazon
166      * EFS volume is used instead. Specifying <code>/</code> has the same effect as
167      * omitting this parameter. The maximum length is 4,096 characters.</p>
168      * <p>If an EFS access point is specified in the <code>authorizationConfig</code>,
169      * the root directory parameter must either be omitted or set to <code>/</code>,
170      * which enforces the path set on the Amazon EFS access point.</p>
171      */
WithRootDirectory(const char * value)172     inline EFSVolumeConfiguration& WithRootDirectory(const char* value) { SetRootDirectory(value); return *this;}
173 
174 
175     /**
176      * <p>Determines whether to enable encryption for Amazon EFS data in transit
177      * between the Amazon ECS host and the Amazon EFS server. Transit encryption must
178      * be enabled if Amazon EFS IAM authorization is used. If this parameter is
179      * omitted, the default value of <code>DISABLED</code> is used. For more
180      * information, see <a
181      * href="https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html">Encrypting
182      * data in transit</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
183      */
GetTransitEncryption()184     inline const EFSTransitEncryption& GetTransitEncryption() const{ return m_transitEncryption; }
185 
186     /**
187      * <p>Determines whether to enable encryption for Amazon EFS data in transit
188      * between the Amazon ECS host and the Amazon EFS server. Transit encryption must
189      * be enabled if Amazon EFS IAM authorization is used. If this parameter is
190      * omitted, the default value of <code>DISABLED</code> is used. For more
191      * information, see <a
192      * href="https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html">Encrypting
193      * data in transit</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
194      */
TransitEncryptionHasBeenSet()195     inline bool TransitEncryptionHasBeenSet() const { return m_transitEncryptionHasBeenSet; }
196 
197     /**
198      * <p>Determines whether to enable encryption for Amazon EFS data in transit
199      * between the Amazon ECS host and the Amazon EFS server. Transit encryption must
200      * be enabled if Amazon EFS IAM authorization is used. If this parameter is
201      * omitted, the default value of <code>DISABLED</code> is used. For more
202      * information, see <a
203      * href="https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html">Encrypting
204      * data in transit</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
205      */
SetTransitEncryption(const EFSTransitEncryption & value)206     inline void SetTransitEncryption(const EFSTransitEncryption& value) { m_transitEncryptionHasBeenSet = true; m_transitEncryption = value; }
207 
208     /**
209      * <p>Determines whether to enable encryption for Amazon EFS data in transit
210      * between the Amazon ECS host and the Amazon EFS server. Transit encryption must
211      * be enabled if Amazon EFS IAM authorization is used. If this parameter is
212      * omitted, the default value of <code>DISABLED</code> is used. For more
213      * information, see <a
214      * href="https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html">Encrypting
215      * data in transit</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
216      */
SetTransitEncryption(EFSTransitEncryption && value)217     inline void SetTransitEncryption(EFSTransitEncryption&& value) { m_transitEncryptionHasBeenSet = true; m_transitEncryption = std::move(value); }
218 
219     /**
220      * <p>Determines whether to enable encryption for Amazon EFS data in transit
221      * between the Amazon ECS host and the Amazon EFS server. Transit encryption must
222      * be enabled if Amazon EFS IAM authorization is used. If this parameter is
223      * omitted, the default value of <code>DISABLED</code> is used. For more
224      * information, see <a
225      * href="https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html">Encrypting
226      * data in transit</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
227      */
WithTransitEncryption(const EFSTransitEncryption & value)228     inline EFSVolumeConfiguration& WithTransitEncryption(const EFSTransitEncryption& value) { SetTransitEncryption(value); return *this;}
229 
230     /**
231      * <p>Determines whether to enable encryption for Amazon EFS data in transit
232      * between the Amazon ECS host and the Amazon EFS server. Transit encryption must
233      * be enabled if Amazon EFS IAM authorization is used. If this parameter is
234      * omitted, the default value of <code>DISABLED</code> is used. For more
235      * information, see <a
236      * href="https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html">Encrypting
237      * data in transit</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
238      */
WithTransitEncryption(EFSTransitEncryption && value)239     inline EFSVolumeConfiguration& WithTransitEncryption(EFSTransitEncryption&& value) { SetTransitEncryption(std::move(value)); return *this;}
240 
241 
242     /**
243      * <p>The port to use when sending encrypted data between the Amazon ECS host and
244      * the Amazon EFS server. If you don't specify a transit encryption port, it uses
245      * the port selection strategy that the Amazon EFS mount helper uses. The value
246      * must be between 0 and 65,535. For more information, see <a
247      * href="https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html">EFS Mount
248      * Helper</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
249      */
GetTransitEncryptionPort()250     inline int GetTransitEncryptionPort() const{ return m_transitEncryptionPort; }
251 
252     /**
253      * <p>The port to use when sending encrypted data between the Amazon ECS host and
254      * the Amazon EFS server. If you don't specify a transit encryption port, it uses
255      * the port selection strategy that the Amazon EFS mount helper uses. The value
256      * must be between 0 and 65,535. For more information, see <a
257      * href="https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html">EFS Mount
258      * Helper</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
259      */
TransitEncryptionPortHasBeenSet()260     inline bool TransitEncryptionPortHasBeenSet() const { return m_transitEncryptionPortHasBeenSet; }
261 
262     /**
263      * <p>The port to use when sending encrypted data between the Amazon ECS host and
264      * the Amazon EFS server. If you don't specify a transit encryption port, it uses
265      * the port selection strategy that the Amazon EFS mount helper uses. The value
266      * must be between 0 and 65,535. For more information, see <a
267      * href="https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html">EFS Mount
268      * Helper</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
269      */
SetTransitEncryptionPort(int value)270     inline void SetTransitEncryptionPort(int value) { m_transitEncryptionPortHasBeenSet = true; m_transitEncryptionPort = value; }
271 
272     /**
273      * <p>The port to use when sending encrypted data between the Amazon ECS host and
274      * the Amazon EFS server. If you don't specify a transit encryption port, it uses
275      * the port selection strategy that the Amazon EFS mount helper uses. The value
276      * must be between 0 and 65,535. For more information, see <a
277      * href="https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html">EFS Mount
278      * Helper</a> in the <i>Amazon Elastic File System User Guide</i>.</p>
279      */
WithTransitEncryptionPort(int value)280     inline EFSVolumeConfiguration& WithTransitEncryptionPort(int value) { SetTransitEncryptionPort(value); return *this;}
281 
282 
283     /**
284      * <p>The authorization configuration details for the Amazon EFS file system.</p>
285      */
GetAuthorizationConfig()286     inline const EFSAuthorizationConfig& GetAuthorizationConfig() const{ return m_authorizationConfig; }
287 
288     /**
289      * <p>The authorization configuration details for the Amazon EFS file system.</p>
290      */
AuthorizationConfigHasBeenSet()291     inline bool AuthorizationConfigHasBeenSet() const { return m_authorizationConfigHasBeenSet; }
292 
293     /**
294      * <p>The authorization configuration details for the Amazon EFS file system.</p>
295      */
SetAuthorizationConfig(const EFSAuthorizationConfig & value)296     inline void SetAuthorizationConfig(const EFSAuthorizationConfig& value) { m_authorizationConfigHasBeenSet = true; m_authorizationConfig = value; }
297 
298     /**
299      * <p>The authorization configuration details for the Amazon EFS file system.</p>
300      */
SetAuthorizationConfig(EFSAuthorizationConfig && value)301     inline void SetAuthorizationConfig(EFSAuthorizationConfig&& value) { m_authorizationConfigHasBeenSet = true; m_authorizationConfig = std::move(value); }
302 
303     /**
304      * <p>The authorization configuration details for the Amazon EFS file system.</p>
305      */
WithAuthorizationConfig(const EFSAuthorizationConfig & value)306     inline EFSVolumeConfiguration& WithAuthorizationConfig(const EFSAuthorizationConfig& value) { SetAuthorizationConfig(value); return *this;}
307 
308     /**
309      * <p>The authorization configuration details for the Amazon EFS file system.</p>
310      */
WithAuthorizationConfig(EFSAuthorizationConfig && value)311     inline EFSVolumeConfiguration& WithAuthorizationConfig(EFSAuthorizationConfig&& value) { SetAuthorizationConfig(std::move(value)); return *this;}
312 
313   private:
314 
315     Aws::String m_fileSystemId;
316     bool m_fileSystemIdHasBeenSet;
317 
318     Aws::String m_rootDirectory;
319     bool m_rootDirectoryHasBeenSet;
320 
321     EFSTransitEncryption m_transitEncryption;
322     bool m_transitEncryptionHasBeenSet;
323 
324     int m_transitEncryptionPort;
325     bool m_transitEncryptionPortHasBeenSet;
326 
327     EFSAuthorizationConfig m_authorizationConfig;
328     bool m_authorizationConfigHasBeenSet;
329   };
330 
331 } // namespace Model
332 } // namespace Batch
333 } // namespace Aws
334