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/datasync/DataSync_EXPORTS.h>
8 #include <aws/datasync/DataSyncRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/core/utils/memory/stl/AWSVector.h>
11 #include <aws/datasync/model/SmbMountOptions.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace DataSync
17 {
18 namespace Model
19 {
20 
21   /**
22    */
23   class AWS_DATASYNC_API UpdateLocationSmbRequest : public DataSyncRequest
24   {
25   public:
26     UpdateLocationSmbRequest();
27 
28     // Service request name is the Operation name which will send this request out,
29     // each operation should has unique request name, so that we can get operation's name from this request.
30     // Note: this is not true for response, multiple operations may have the same response name,
31     // so we can not get operation's name from response.
GetServiceRequestName()32     inline virtual const char* GetServiceRequestName() const override { return "UpdateLocationSmb"; }
33 
34     Aws::String SerializePayload() const override;
35 
36     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
37 
38 
39     /**
40      * <p>The Amazon Resource Name (ARN) of the SMB location to update.</p>
41      */
GetLocationArn()42     inline const Aws::String& GetLocationArn() const{ return m_locationArn; }
43 
44     /**
45      * <p>The Amazon Resource Name (ARN) of the SMB location to update.</p>
46      */
LocationArnHasBeenSet()47     inline bool LocationArnHasBeenSet() const { return m_locationArnHasBeenSet; }
48 
49     /**
50      * <p>The Amazon Resource Name (ARN) of the SMB location to update.</p>
51      */
SetLocationArn(const Aws::String & value)52     inline void SetLocationArn(const Aws::String& value) { m_locationArnHasBeenSet = true; m_locationArn = value; }
53 
54     /**
55      * <p>The Amazon Resource Name (ARN) of the SMB location to update.</p>
56      */
SetLocationArn(Aws::String && value)57     inline void SetLocationArn(Aws::String&& value) { m_locationArnHasBeenSet = true; m_locationArn = std::move(value); }
58 
59     /**
60      * <p>The Amazon Resource Name (ARN) of the SMB location to update.</p>
61      */
SetLocationArn(const char * value)62     inline void SetLocationArn(const char* value) { m_locationArnHasBeenSet = true; m_locationArn.assign(value); }
63 
64     /**
65      * <p>The Amazon Resource Name (ARN) of the SMB location to update.</p>
66      */
WithLocationArn(const Aws::String & value)67     inline UpdateLocationSmbRequest& WithLocationArn(const Aws::String& value) { SetLocationArn(value); return *this;}
68 
69     /**
70      * <p>The Amazon Resource Name (ARN) of the SMB location to update.</p>
71      */
WithLocationArn(Aws::String && value)72     inline UpdateLocationSmbRequest& WithLocationArn(Aws::String&& value) { SetLocationArn(std::move(value)); return *this;}
73 
74     /**
75      * <p>The Amazon Resource Name (ARN) of the SMB location to update.</p>
76      */
WithLocationArn(const char * value)77     inline UpdateLocationSmbRequest& WithLocationArn(const char* value) { SetLocationArn(value); return *this;}
78 
79 
80     /**
81      * <p>The subdirectory in the SMB file system that is used to read data from the
82      * SMB source location or write data to the SMB destination. The SMB path should be
83      * a path that's exported by the SMB server, or a subdirectory of that path. The
84      * path should be such that it can be mounted by other SMB clients in your
85      * network.</p>  <p> <code>Subdirectory</code> must be specified with forward
86      * slashes. For example, <code>/path/to/folder</code>.</p>  <p>To transfer
87      * all the data in the folder that you specified, DataSync must have permissions to
88      * mount the SMB share and to access all the data in that share. To ensure this, do
89      * either of the following:</p> <ul> <li> <p>Ensure that the user/password
90      * specified belongs to the user who can mount the share and who has the
91      * appropriate permissions for all of the files and directories that you want
92      * DataSync to access.</p> </li> <li> <p>Use credentials of a member of the Backup
93      * Operators group to mount the share. </p> </li> </ul> <p>Doing either of these
94      * options enables the agent to access the data. For the agent to access
95      * directories, you must also enable all execute access.</p>
96      */
GetSubdirectory()97     inline const Aws::String& GetSubdirectory() const{ return m_subdirectory; }
98 
99     /**
100      * <p>The subdirectory in the SMB file system that is used to read data from the
101      * SMB source location or write data to the SMB destination. The SMB path should be
102      * a path that's exported by the SMB server, or a subdirectory of that path. The
103      * path should be such that it can be mounted by other SMB clients in your
104      * network.</p>  <p> <code>Subdirectory</code> must be specified with forward
105      * slashes. For example, <code>/path/to/folder</code>.</p>  <p>To transfer
106      * all the data in the folder that you specified, DataSync must have permissions to
107      * mount the SMB share and to access all the data in that share. To ensure this, do
108      * either of the following:</p> <ul> <li> <p>Ensure that the user/password
109      * specified belongs to the user who can mount the share and who has the
110      * appropriate permissions for all of the files and directories that you want
111      * DataSync to access.</p> </li> <li> <p>Use credentials of a member of the Backup
112      * Operators group to mount the share. </p> </li> </ul> <p>Doing either of these
113      * options enables the agent to access the data. For the agent to access
114      * directories, you must also enable all execute access.</p>
115      */
SubdirectoryHasBeenSet()116     inline bool SubdirectoryHasBeenSet() const { return m_subdirectoryHasBeenSet; }
117 
118     /**
119      * <p>The subdirectory in the SMB file system that is used to read data from the
120      * SMB source location or write data to the SMB destination. The SMB path should be
121      * a path that's exported by the SMB server, or a subdirectory of that path. The
122      * path should be such that it can be mounted by other SMB clients in your
123      * network.</p>  <p> <code>Subdirectory</code> must be specified with forward
124      * slashes. For example, <code>/path/to/folder</code>.</p>  <p>To transfer
125      * all the data in the folder that you specified, DataSync must have permissions to
126      * mount the SMB share and to access all the data in that share. To ensure this, do
127      * either of the following:</p> <ul> <li> <p>Ensure that the user/password
128      * specified belongs to the user who can mount the share and who has the
129      * appropriate permissions for all of the files and directories that you want
130      * DataSync to access.</p> </li> <li> <p>Use credentials of a member of the Backup
131      * Operators group to mount the share. </p> </li> </ul> <p>Doing either of these
132      * options enables the agent to access the data. For the agent to access
133      * directories, you must also enable all execute access.</p>
134      */
SetSubdirectory(const Aws::String & value)135     inline void SetSubdirectory(const Aws::String& value) { m_subdirectoryHasBeenSet = true; m_subdirectory = value; }
136 
137     /**
138      * <p>The subdirectory in the SMB file system that is used to read data from the
139      * SMB source location or write data to the SMB destination. The SMB path should be
140      * a path that's exported by the SMB server, or a subdirectory of that path. The
141      * path should be such that it can be mounted by other SMB clients in your
142      * network.</p>  <p> <code>Subdirectory</code> must be specified with forward
143      * slashes. For example, <code>/path/to/folder</code>.</p>  <p>To transfer
144      * all the data in the folder that you specified, DataSync must have permissions to
145      * mount the SMB share and to access all the data in that share. To ensure this, do
146      * either of the following:</p> <ul> <li> <p>Ensure that the user/password
147      * specified belongs to the user who can mount the share and who has the
148      * appropriate permissions for all of the files and directories that you want
149      * DataSync to access.</p> </li> <li> <p>Use credentials of a member of the Backup
150      * Operators group to mount the share. </p> </li> </ul> <p>Doing either of these
151      * options enables the agent to access the data. For the agent to access
152      * directories, you must also enable all execute access.</p>
153      */
SetSubdirectory(Aws::String && value)154     inline void SetSubdirectory(Aws::String&& value) { m_subdirectoryHasBeenSet = true; m_subdirectory = std::move(value); }
155 
156     /**
157      * <p>The subdirectory in the SMB file system that is used to read data from the
158      * SMB source location or write data to the SMB destination. The SMB path should be
159      * a path that's exported by the SMB server, or a subdirectory of that path. The
160      * path should be such that it can be mounted by other SMB clients in your
161      * network.</p>  <p> <code>Subdirectory</code> must be specified with forward
162      * slashes. For example, <code>/path/to/folder</code>.</p>  <p>To transfer
163      * all the data in the folder that you specified, DataSync must have permissions to
164      * mount the SMB share and to access all the data in that share. To ensure this, do
165      * either of the following:</p> <ul> <li> <p>Ensure that the user/password
166      * specified belongs to the user who can mount the share and who has the
167      * appropriate permissions for all of the files and directories that you want
168      * DataSync to access.</p> </li> <li> <p>Use credentials of a member of the Backup
169      * Operators group to mount the share. </p> </li> </ul> <p>Doing either of these
170      * options enables the agent to access the data. For the agent to access
171      * directories, you must also enable all execute access.</p>
172      */
SetSubdirectory(const char * value)173     inline void SetSubdirectory(const char* value) { m_subdirectoryHasBeenSet = true; m_subdirectory.assign(value); }
174 
175     /**
176      * <p>The subdirectory in the SMB file system that is used to read data from the
177      * SMB source location or write data to the SMB destination. The SMB path should be
178      * a path that's exported by the SMB server, or a subdirectory of that path. The
179      * path should be such that it can be mounted by other SMB clients in your
180      * network.</p>  <p> <code>Subdirectory</code> must be specified with forward
181      * slashes. For example, <code>/path/to/folder</code>.</p>  <p>To transfer
182      * all the data in the folder that you specified, DataSync must have permissions to
183      * mount the SMB share and to access all the data in that share. To ensure this, do
184      * either of the following:</p> <ul> <li> <p>Ensure that the user/password
185      * specified belongs to the user who can mount the share and who has the
186      * appropriate permissions for all of the files and directories that you want
187      * DataSync to access.</p> </li> <li> <p>Use credentials of a member of the Backup
188      * Operators group to mount the share. </p> </li> </ul> <p>Doing either of these
189      * options enables the agent to access the data. For the agent to access
190      * directories, you must also enable all execute access.</p>
191      */
WithSubdirectory(const Aws::String & value)192     inline UpdateLocationSmbRequest& WithSubdirectory(const Aws::String& value) { SetSubdirectory(value); return *this;}
193 
194     /**
195      * <p>The subdirectory in the SMB file system that is used to read data from the
196      * SMB source location or write data to the SMB destination. The SMB path should be
197      * a path that's exported by the SMB server, or a subdirectory of that path. The
198      * path should be such that it can be mounted by other SMB clients in your
199      * network.</p>  <p> <code>Subdirectory</code> must be specified with forward
200      * slashes. For example, <code>/path/to/folder</code>.</p>  <p>To transfer
201      * all the data in the folder that you specified, DataSync must have permissions to
202      * mount the SMB share and to access all the data in that share. To ensure this, do
203      * either of the following:</p> <ul> <li> <p>Ensure that the user/password
204      * specified belongs to the user who can mount the share and who has the
205      * appropriate permissions for all of the files and directories that you want
206      * DataSync to access.</p> </li> <li> <p>Use credentials of a member of the Backup
207      * Operators group to mount the share. </p> </li> </ul> <p>Doing either of these
208      * options enables the agent to access the data. For the agent to access
209      * directories, you must also enable all execute access.</p>
210      */
WithSubdirectory(Aws::String && value)211     inline UpdateLocationSmbRequest& WithSubdirectory(Aws::String&& value) { SetSubdirectory(std::move(value)); return *this;}
212 
213     /**
214      * <p>The subdirectory in the SMB file system that is used to read data from the
215      * SMB source location or write data to the SMB destination. The SMB path should be
216      * a path that's exported by the SMB server, or a subdirectory of that path. The
217      * path should be such that it can be mounted by other SMB clients in your
218      * network.</p>  <p> <code>Subdirectory</code> must be specified with forward
219      * slashes. For example, <code>/path/to/folder</code>.</p>  <p>To transfer
220      * all the data in the folder that you specified, DataSync must have permissions to
221      * mount the SMB share and to access all the data in that share. To ensure this, do
222      * either of the following:</p> <ul> <li> <p>Ensure that the user/password
223      * specified belongs to the user who can mount the share and who has the
224      * appropriate permissions for all of the files and directories that you want
225      * DataSync to access.</p> </li> <li> <p>Use credentials of a member of the Backup
226      * Operators group to mount the share. </p> </li> </ul> <p>Doing either of these
227      * options enables the agent to access the data. For the agent to access
228      * directories, you must also enable all execute access.</p>
229      */
WithSubdirectory(const char * value)230     inline UpdateLocationSmbRequest& WithSubdirectory(const char* value) { SetSubdirectory(value); return *this;}
231 
232 
233     /**
234      * <p>The user who can mount the share has the permissions to access files and
235      * folders in the SMB share.</p>
236      */
GetUser()237     inline const Aws::String& GetUser() const{ return m_user; }
238 
239     /**
240      * <p>The user who can mount the share has the permissions to access files and
241      * folders in the SMB share.</p>
242      */
UserHasBeenSet()243     inline bool UserHasBeenSet() const { return m_userHasBeenSet; }
244 
245     /**
246      * <p>The user who can mount the share has the permissions to access files and
247      * folders in the SMB share.</p>
248      */
SetUser(const Aws::String & value)249     inline void SetUser(const Aws::String& value) { m_userHasBeenSet = true; m_user = value; }
250 
251     /**
252      * <p>The user who can mount the share has the permissions to access files and
253      * folders in the SMB share.</p>
254      */
SetUser(Aws::String && value)255     inline void SetUser(Aws::String&& value) { m_userHasBeenSet = true; m_user = std::move(value); }
256 
257     /**
258      * <p>The user who can mount the share has the permissions to access files and
259      * folders in the SMB share.</p>
260      */
SetUser(const char * value)261     inline void SetUser(const char* value) { m_userHasBeenSet = true; m_user.assign(value); }
262 
263     /**
264      * <p>The user who can mount the share has the permissions to access files and
265      * folders in the SMB share.</p>
266      */
WithUser(const Aws::String & value)267     inline UpdateLocationSmbRequest& WithUser(const Aws::String& value) { SetUser(value); return *this;}
268 
269     /**
270      * <p>The user who can mount the share has the permissions to access files and
271      * folders in the SMB share.</p>
272      */
WithUser(Aws::String && value)273     inline UpdateLocationSmbRequest& WithUser(Aws::String&& value) { SetUser(std::move(value)); return *this;}
274 
275     /**
276      * <p>The user who can mount the share has the permissions to access files and
277      * folders in the SMB share.</p>
278      */
WithUser(const char * value)279     inline UpdateLocationSmbRequest& WithUser(const char* value) { SetUser(value); return *this;}
280 
281 
282     /**
283      * <p>The name of the Windows domain that the SMB server belongs to.</p>
284      */
GetDomain()285     inline const Aws::String& GetDomain() const{ return m_domain; }
286 
287     /**
288      * <p>The name of the Windows domain that the SMB server belongs to.</p>
289      */
DomainHasBeenSet()290     inline bool DomainHasBeenSet() const { return m_domainHasBeenSet; }
291 
292     /**
293      * <p>The name of the Windows domain that the SMB server belongs to.</p>
294      */
SetDomain(const Aws::String & value)295     inline void SetDomain(const Aws::String& value) { m_domainHasBeenSet = true; m_domain = value; }
296 
297     /**
298      * <p>The name of the Windows domain that the SMB server belongs to.</p>
299      */
SetDomain(Aws::String && value)300     inline void SetDomain(Aws::String&& value) { m_domainHasBeenSet = true; m_domain = std::move(value); }
301 
302     /**
303      * <p>The name of the Windows domain that the SMB server belongs to.</p>
304      */
SetDomain(const char * value)305     inline void SetDomain(const char* value) { m_domainHasBeenSet = true; m_domain.assign(value); }
306 
307     /**
308      * <p>The name of the Windows domain that the SMB server belongs to.</p>
309      */
WithDomain(const Aws::String & value)310     inline UpdateLocationSmbRequest& WithDomain(const Aws::String& value) { SetDomain(value); return *this;}
311 
312     /**
313      * <p>The name of the Windows domain that the SMB server belongs to.</p>
314      */
WithDomain(Aws::String && value)315     inline UpdateLocationSmbRequest& WithDomain(Aws::String&& value) { SetDomain(std::move(value)); return *this;}
316 
317     /**
318      * <p>The name of the Windows domain that the SMB server belongs to.</p>
319      */
WithDomain(const char * value)320     inline UpdateLocationSmbRequest& WithDomain(const char* value) { SetDomain(value); return *this;}
321 
322 
323     /**
324      * <p>The password of the user who can mount the share has the permissions to
325      * access files and folders in the SMB share.</p>
326      */
GetPassword()327     inline const Aws::String& GetPassword() const{ return m_password; }
328 
329     /**
330      * <p>The password of the user who can mount the share has the permissions to
331      * access files and folders in the SMB share.</p>
332      */
PasswordHasBeenSet()333     inline bool PasswordHasBeenSet() const { return m_passwordHasBeenSet; }
334 
335     /**
336      * <p>The password of the user who can mount the share has the permissions to
337      * access files and folders in the SMB share.</p>
338      */
SetPassword(const Aws::String & value)339     inline void SetPassword(const Aws::String& value) { m_passwordHasBeenSet = true; m_password = value; }
340 
341     /**
342      * <p>The password of the user who can mount the share has the permissions to
343      * access files and folders in the SMB share.</p>
344      */
SetPassword(Aws::String && value)345     inline void SetPassword(Aws::String&& value) { m_passwordHasBeenSet = true; m_password = std::move(value); }
346 
347     /**
348      * <p>The password of the user who can mount the share has the permissions to
349      * access files and folders in the SMB share.</p>
350      */
SetPassword(const char * value)351     inline void SetPassword(const char* value) { m_passwordHasBeenSet = true; m_password.assign(value); }
352 
353     /**
354      * <p>The password of the user who can mount the share has the permissions to
355      * access files and folders in the SMB share.</p>
356      */
WithPassword(const Aws::String & value)357     inline UpdateLocationSmbRequest& WithPassword(const Aws::String& value) { SetPassword(value); return *this;}
358 
359     /**
360      * <p>The password of the user who can mount the share has the permissions to
361      * access files and folders in the SMB share.</p>
362      */
WithPassword(Aws::String && value)363     inline UpdateLocationSmbRequest& WithPassword(Aws::String&& value) { SetPassword(std::move(value)); return *this;}
364 
365     /**
366      * <p>The password of the user who can mount the share has the permissions to
367      * access files and folders in the SMB share.</p>
368      */
WithPassword(const char * value)369     inline UpdateLocationSmbRequest& WithPassword(const char* value) { SetPassword(value); return *this;}
370 
371 
372     /**
373      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
374      * (SMB) location.</p>
375      */
GetAgentArns()376     inline const Aws::Vector<Aws::String>& GetAgentArns() const{ return m_agentArns; }
377 
378     /**
379      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
380      * (SMB) location.</p>
381      */
AgentArnsHasBeenSet()382     inline bool AgentArnsHasBeenSet() const { return m_agentArnsHasBeenSet; }
383 
384     /**
385      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
386      * (SMB) location.</p>
387      */
SetAgentArns(const Aws::Vector<Aws::String> & value)388     inline void SetAgentArns(const Aws::Vector<Aws::String>& value) { m_agentArnsHasBeenSet = true; m_agentArns = value; }
389 
390     /**
391      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
392      * (SMB) location.</p>
393      */
SetAgentArns(Aws::Vector<Aws::String> && value)394     inline void SetAgentArns(Aws::Vector<Aws::String>&& value) { m_agentArnsHasBeenSet = true; m_agentArns = std::move(value); }
395 
396     /**
397      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
398      * (SMB) location.</p>
399      */
WithAgentArns(const Aws::Vector<Aws::String> & value)400     inline UpdateLocationSmbRequest& WithAgentArns(const Aws::Vector<Aws::String>& value) { SetAgentArns(value); return *this;}
401 
402     /**
403      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
404      * (SMB) location.</p>
405      */
WithAgentArns(Aws::Vector<Aws::String> && value)406     inline UpdateLocationSmbRequest& WithAgentArns(Aws::Vector<Aws::String>&& value) { SetAgentArns(std::move(value)); return *this;}
407 
408     /**
409      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
410      * (SMB) location.</p>
411      */
AddAgentArns(const Aws::String & value)412     inline UpdateLocationSmbRequest& AddAgentArns(const Aws::String& value) { m_agentArnsHasBeenSet = true; m_agentArns.push_back(value); return *this; }
413 
414     /**
415      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
416      * (SMB) location.</p>
417      */
AddAgentArns(Aws::String && value)418     inline UpdateLocationSmbRequest& AddAgentArns(Aws::String&& value) { m_agentArnsHasBeenSet = true; m_agentArns.push_back(std::move(value)); return *this; }
419 
420     /**
421      * <p>The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block
422      * (SMB) location.</p>
423      */
AddAgentArns(const char * value)424     inline UpdateLocationSmbRequest& AddAgentArns(const char* value) { m_agentArnsHasBeenSet = true; m_agentArns.push_back(value); return *this; }
425 
426 
427 
GetMountOptions()428     inline const SmbMountOptions& GetMountOptions() const{ return m_mountOptions; }
429 
430 
MountOptionsHasBeenSet()431     inline bool MountOptionsHasBeenSet() const { return m_mountOptionsHasBeenSet; }
432 
433 
SetMountOptions(const SmbMountOptions & value)434     inline void SetMountOptions(const SmbMountOptions& value) { m_mountOptionsHasBeenSet = true; m_mountOptions = value; }
435 
436 
SetMountOptions(SmbMountOptions && value)437     inline void SetMountOptions(SmbMountOptions&& value) { m_mountOptionsHasBeenSet = true; m_mountOptions = std::move(value); }
438 
439 
WithMountOptions(const SmbMountOptions & value)440     inline UpdateLocationSmbRequest& WithMountOptions(const SmbMountOptions& value) { SetMountOptions(value); return *this;}
441 
442 
WithMountOptions(SmbMountOptions && value)443     inline UpdateLocationSmbRequest& WithMountOptions(SmbMountOptions&& value) { SetMountOptions(std::move(value)); return *this;}
444 
445   private:
446 
447     Aws::String m_locationArn;
448     bool m_locationArnHasBeenSet;
449 
450     Aws::String m_subdirectory;
451     bool m_subdirectoryHasBeenSet;
452 
453     Aws::String m_user;
454     bool m_userHasBeenSet;
455 
456     Aws::String m_domain;
457     bool m_domainHasBeenSet;
458 
459     Aws::String m_password;
460     bool m_passwordHasBeenSet;
461 
462     Aws::Vector<Aws::String> m_agentArns;
463     bool m_agentArnsHasBeenSet;
464 
465     SmbMountOptions m_mountOptions;
466     bool m_mountOptionsHasBeenSet;
467   };
468 
469 } // namespace Model
470 } // namespace DataSync
471 } // namespace Aws
472