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/appstream/AppStream_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/core/utils/memory/stl/AWSVector.h>
10 #include <aws/appstream/model/ServiceAccountCredentials.h>
11 #include <aws/core/utils/DateTime.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 AppStream
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p>Describes the configuration information required to join fleets and image
31    * builders to Microsoft Active Directory domains.</p><p><h3>See Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DirectoryConfig">AWS
33    * API Reference</a></p>
34    */
35   class AWS_APPSTREAM_API DirectoryConfig
36   {
37   public:
38     DirectoryConfig();
39     DirectoryConfig(Aws::Utils::Json::JsonView jsonValue);
40     DirectoryConfig& operator=(Aws::Utils::Json::JsonView jsonValue);
41     Aws::Utils::Json::JsonValue Jsonize() const;
42 
43 
44     /**
45      * <p>The fully qualified name of the directory (for example,
46      * corp.example.com).</p>
47      */
GetDirectoryName()48     inline const Aws::String& GetDirectoryName() const{ return m_directoryName; }
49 
50     /**
51      * <p>The fully qualified name of the directory (for example,
52      * corp.example.com).</p>
53      */
DirectoryNameHasBeenSet()54     inline bool DirectoryNameHasBeenSet() const { return m_directoryNameHasBeenSet; }
55 
56     /**
57      * <p>The fully qualified name of the directory (for example,
58      * corp.example.com).</p>
59      */
SetDirectoryName(const Aws::String & value)60     inline void SetDirectoryName(const Aws::String& value) { m_directoryNameHasBeenSet = true; m_directoryName = value; }
61 
62     /**
63      * <p>The fully qualified name of the directory (for example,
64      * corp.example.com).</p>
65      */
SetDirectoryName(Aws::String && value)66     inline void SetDirectoryName(Aws::String&& value) { m_directoryNameHasBeenSet = true; m_directoryName = std::move(value); }
67 
68     /**
69      * <p>The fully qualified name of the directory (for example,
70      * corp.example.com).</p>
71      */
SetDirectoryName(const char * value)72     inline void SetDirectoryName(const char* value) { m_directoryNameHasBeenSet = true; m_directoryName.assign(value); }
73 
74     /**
75      * <p>The fully qualified name of the directory (for example,
76      * corp.example.com).</p>
77      */
WithDirectoryName(const Aws::String & value)78     inline DirectoryConfig& WithDirectoryName(const Aws::String& value) { SetDirectoryName(value); return *this;}
79 
80     /**
81      * <p>The fully qualified name of the directory (for example,
82      * corp.example.com).</p>
83      */
WithDirectoryName(Aws::String && value)84     inline DirectoryConfig& WithDirectoryName(Aws::String&& value) { SetDirectoryName(std::move(value)); return *this;}
85 
86     /**
87      * <p>The fully qualified name of the directory (for example,
88      * corp.example.com).</p>
89      */
WithDirectoryName(const char * value)90     inline DirectoryConfig& WithDirectoryName(const char* value) { SetDirectoryName(value); return *this;}
91 
92 
93     /**
94      * <p>The distinguished names of the organizational units for computer
95      * accounts.</p>
96      */
GetOrganizationalUnitDistinguishedNames()97     inline const Aws::Vector<Aws::String>& GetOrganizationalUnitDistinguishedNames() const{ return m_organizationalUnitDistinguishedNames; }
98 
99     /**
100      * <p>The distinguished names of the organizational units for computer
101      * accounts.</p>
102      */
OrganizationalUnitDistinguishedNamesHasBeenSet()103     inline bool OrganizationalUnitDistinguishedNamesHasBeenSet() const { return m_organizationalUnitDistinguishedNamesHasBeenSet; }
104 
105     /**
106      * <p>The distinguished names of the organizational units for computer
107      * accounts.</p>
108      */
SetOrganizationalUnitDistinguishedNames(const Aws::Vector<Aws::String> & value)109     inline void SetOrganizationalUnitDistinguishedNames(const Aws::Vector<Aws::String>& value) { m_organizationalUnitDistinguishedNamesHasBeenSet = true; m_organizationalUnitDistinguishedNames = value; }
110 
111     /**
112      * <p>The distinguished names of the organizational units for computer
113      * accounts.</p>
114      */
SetOrganizationalUnitDistinguishedNames(Aws::Vector<Aws::String> && value)115     inline void SetOrganizationalUnitDistinguishedNames(Aws::Vector<Aws::String>&& value) { m_organizationalUnitDistinguishedNamesHasBeenSet = true; m_organizationalUnitDistinguishedNames = std::move(value); }
116 
117     /**
118      * <p>The distinguished names of the organizational units for computer
119      * accounts.</p>
120      */
WithOrganizationalUnitDistinguishedNames(const Aws::Vector<Aws::String> & value)121     inline DirectoryConfig& WithOrganizationalUnitDistinguishedNames(const Aws::Vector<Aws::String>& value) { SetOrganizationalUnitDistinguishedNames(value); return *this;}
122 
123     /**
124      * <p>The distinguished names of the organizational units for computer
125      * accounts.</p>
126      */
WithOrganizationalUnitDistinguishedNames(Aws::Vector<Aws::String> && value)127     inline DirectoryConfig& WithOrganizationalUnitDistinguishedNames(Aws::Vector<Aws::String>&& value) { SetOrganizationalUnitDistinguishedNames(std::move(value)); return *this;}
128 
129     /**
130      * <p>The distinguished names of the organizational units for computer
131      * accounts.</p>
132      */
AddOrganizationalUnitDistinguishedNames(const Aws::String & value)133     inline DirectoryConfig& AddOrganizationalUnitDistinguishedNames(const Aws::String& value) { m_organizationalUnitDistinguishedNamesHasBeenSet = true; m_organizationalUnitDistinguishedNames.push_back(value); return *this; }
134 
135     /**
136      * <p>The distinguished names of the organizational units for computer
137      * accounts.</p>
138      */
AddOrganizationalUnitDistinguishedNames(Aws::String && value)139     inline DirectoryConfig& AddOrganizationalUnitDistinguishedNames(Aws::String&& value) { m_organizationalUnitDistinguishedNamesHasBeenSet = true; m_organizationalUnitDistinguishedNames.push_back(std::move(value)); return *this; }
140 
141     /**
142      * <p>The distinguished names of the organizational units for computer
143      * accounts.</p>
144      */
AddOrganizationalUnitDistinguishedNames(const char * value)145     inline DirectoryConfig& AddOrganizationalUnitDistinguishedNames(const char* value) { m_organizationalUnitDistinguishedNamesHasBeenSet = true; m_organizationalUnitDistinguishedNames.push_back(value); return *this; }
146 
147 
148     /**
149      * <p>The credentials for the service account used by the fleet or image builder to
150      * connect to the directory.</p>
151      */
GetServiceAccountCredentials()152     inline const ServiceAccountCredentials& GetServiceAccountCredentials() const{ return m_serviceAccountCredentials; }
153 
154     /**
155      * <p>The credentials for the service account used by the fleet or image builder to
156      * connect to the directory.</p>
157      */
ServiceAccountCredentialsHasBeenSet()158     inline bool ServiceAccountCredentialsHasBeenSet() const { return m_serviceAccountCredentialsHasBeenSet; }
159 
160     /**
161      * <p>The credentials for the service account used by the fleet or image builder to
162      * connect to the directory.</p>
163      */
SetServiceAccountCredentials(const ServiceAccountCredentials & value)164     inline void SetServiceAccountCredentials(const ServiceAccountCredentials& value) { m_serviceAccountCredentialsHasBeenSet = true; m_serviceAccountCredentials = value; }
165 
166     /**
167      * <p>The credentials for the service account used by the fleet or image builder to
168      * connect to the directory.</p>
169      */
SetServiceAccountCredentials(ServiceAccountCredentials && value)170     inline void SetServiceAccountCredentials(ServiceAccountCredentials&& value) { m_serviceAccountCredentialsHasBeenSet = true; m_serviceAccountCredentials = std::move(value); }
171 
172     /**
173      * <p>The credentials for the service account used by the fleet or image builder to
174      * connect to the directory.</p>
175      */
WithServiceAccountCredentials(const ServiceAccountCredentials & value)176     inline DirectoryConfig& WithServiceAccountCredentials(const ServiceAccountCredentials& value) { SetServiceAccountCredentials(value); return *this;}
177 
178     /**
179      * <p>The credentials for the service account used by the fleet or image builder to
180      * connect to the directory.</p>
181      */
WithServiceAccountCredentials(ServiceAccountCredentials && value)182     inline DirectoryConfig& WithServiceAccountCredentials(ServiceAccountCredentials&& value) { SetServiceAccountCredentials(std::move(value)); return *this;}
183 
184 
185     /**
186      * <p>The time the directory configuration was created.</p>
187      */
GetCreatedTime()188     inline const Aws::Utils::DateTime& GetCreatedTime() const{ return m_createdTime; }
189 
190     /**
191      * <p>The time the directory configuration was created.</p>
192      */
CreatedTimeHasBeenSet()193     inline bool CreatedTimeHasBeenSet() const { return m_createdTimeHasBeenSet; }
194 
195     /**
196      * <p>The time the directory configuration was created.</p>
197      */
SetCreatedTime(const Aws::Utils::DateTime & value)198     inline void SetCreatedTime(const Aws::Utils::DateTime& value) { m_createdTimeHasBeenSet = true; m_createdTime = value; }
199 
200     /**
201      * <p>The time the directory configuration was created.</p>
202      */
SetCreatedTime(Aws::Utils::DateTime && value)203     inline void SetCreatedTime(Aws::Utils::DateTime&& value) { m_createdTimeHasBeenSet = true; m_createdTime = std::move(value); }
204 
205     /**
206      * <p>The time the directory configuration was created.</p>
207      */
WithCreatedTime(const Aws::Utils::DateTime & value)208     inline DirectoryConfig& WithCreatedTime(const Aws::Utils::DateTime& value) { SetCreatedTime(value); return *this;}
209 
210     /**
211      * <p>The time the directory configuration was created.</p>
212      */
WithCreatedTime(Aws::Utils::DateTime && value)213     inline DirectoryConfig& WithCreatedTime(Aws::Utils::DateTime&& value) { SetCreatedTime(std::move(value)); return *this;}
214 
215   private:
216 
217     Aws::String m_directoryName;
218     bool m_directoryNameHasBeenSet;
219 
220     Aws::Vector<Aws::String> m_organizationalUnitDistinguishedNames;
221     bool m_organizationalUnitDistinguishedNamesHasBeenSet;
222 
223     ServiceAccountCredentials m_serviceAccountCredentials;
224     bool m_serviceAccountCredentialsHasBeenSet;
225 
226     Aws::Utils::DateTime m_createdTime;
227     bool m_createdTimeHasBeenSet;
228   };
229 
230 } // namespace Model
231 } // namespace AppStream
232 } // namespace Aws
233