1 /**
2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 * SPDX-License-Identifier: Apache-2.0.
4 */
5
6 #include <aws/mgn/model/ReplicationConfigurationTemplate.h>
7 #include <aws/core/utils/json/JsonSerializer.h>
8
9 #include <utility>
10
11 using namespace Aws::Utils::Json;
12 using namespace Aws::Utils;
13
14 namespace Aws
15 {
16 namespace mgn
17 {
18 namespace Model
19 {
20
ReplicationConfigurationTemplate()21 ReplicationConfigurationTemplate::ReplicationConfigurationTemplate() :
22 m_arnHasBeenSet(false),
23 m_associateDefaultSecurityGroup(false),
24 m_associateDefaultSecurityGroupHasBeenSet(false),
25 m_bandwidthThrottling(0),
26 m_bandwidthThrottlingHasBeenSet(false),
27 m_createPublicIP(false),
28 m_createPublicIPHasBeenSet(false),
29 m_dataPlaneRouting(ReplicationConfigurationDataPlaneRouting::NOT_SET),
30 m_dataPlaneRoutingHasBeenSet(false),
31 m_defaultLargeStagingDiskType(ReplicationConfigurationDefaultLargeStagingDiskType::NOT_SET),
32 m_defaultLargeStagingDiskTypeHasBeenSet(false),
33 m_ebsEncryption(ReplicationConfigurationEbsEncryption::NOT_SET),
34 m_ebsEncryptionHasBeenSet(false),
35 m_ebsEncryptionKeyArnHasBeenSet(false),
36 m_replicationConfigurationTemplateIDHasBeenSet(false),
37 m_replicationServerInstanceTypeHasBeenSet(false),
38 m_replicationServersSecurityGroupsIDsHasBeenSet(false),
39 m_stagingAreaSubnetIdHasBeenSet(false),
40 m_stagingAreaTagsHasBeenSet(false),
41 m_tagsHasBeenSet(false),
42 m_useDedicatedReplicationServer(false),
43 m_useDedicatedReplicationServerHasBeenSet(false)
44 {
45 }
46
ReplicationConfigurationTemplate(JsonView jsonValue)47 ReplicationConfigurationTemplate::ReplicationConfigurationTemplate(JsonView jsonValue) :
48 m_arnHasBeenSet(false),
49 m_associateDefaultSecurityGroup(false),
50 m_associateDefaultSecurityGroupHasBeenSet(false),
51 m_bandwidthThrottling(0),
52 m_bandwidthThrottlingHasBeenSet(false),
53 m_createPublicIP(false),
54 m_createPublicIPHasBeenSet(false),
55 m_dataPlaneRouting(ReplicationConfigurationDataPlaneRouting::NOT_SET),
56 m_dataPlaneRoutingHasBeenSet(false),
57 m_defaultLargeStagingDiskType(ReplicationConfigurationDefaultLargeStagingDiskType::NOT_SET),
58 m_defaultLargeStagingDiskTypeHasBeenSet(false),
59 m_ebsEncryption(ReplicationConfigurationEbsEncryption::NOT_SET),
60 m_ebsEncryptionHasBeenSet(false),
61 m_ebsEncryptionKeyArnHasBeenSet(false),
62 m_replicationConfigurationTemplateIDHasBeenSet(false),
63 m_replicationServerInstanceTypeHasBeenSet(false),
64 m_replicationServersSecurityGroupsIDsHasBeenSet(false),
65 m_stagingAreaSubnetIdHasBeenSet(false),
66 m_stagingAreaTagsHasBeenSet(false),
67 m_tagsHasBeenSet(false),
68 m_useDedicatedReplicationServer(false),
69 m_useDedicatedReplicationServerHasBeenSet(false)
70 {
71 *this = jsonValue;
72 }
73
operator =(JsonView jsonValue)74 ReplicationConfigurationTemplate& ReplicationConfigurationTemplate::operator =(JsonView jsonValue)
75 {
76 if(jsonValue.ValueExists("arn"))
77 {
78 m_arn = jsonValue.GetString("arn");
79
80 m_arnHasBeenSet = true;
81 }
82
83 if(jsonValue.ValueExists("associateDefaultSecurityGroup"))
84 {
85 m_associateDefaultSecurityGroup = jsonValue.GetBool("associateDefaultSecurityGroup");
86
87 m_associateDefaultSecurityGroupHasBeenSet = true;
88 }
89
90 if(jsonValue.ValueExists("bandwidthThrottling"))
91 {
92 m_bandwidthThrottling = jsonValue.GetInt64("bandwidthThrottling");
93
94 m_bandwidthThrottlingHasBeenSet = true;
95 }
96
97 if(jsonValue.ValueExists("createPublicIP"))
98 {
99 m_createPublicIP = jsonValue.GetBool("createPublicIP");
100
101 m_createPublicIPHasBeenSet = true;
102 }
103
104 if(jsonValue.ValueExists("dataPlaneRouting"))
105 {
106 m_dataPlaneRouting = ReplicationConfigurationDataPlaneRoutingMapper::GetReplicationConfigurationDataPlaneRoutingForName(jsonValue.GetString("dataPlaneRouting"));
107
108 m_dataPlaneRoutingHasBeenSet = true;
109 }
110
111 if(jsonValue.ValueExists("defaultLargeStagingDiskType"))
112 {
113 m_defaultLargeStagingDiskType = ReplicationConfigurationDefaultLargeStagingDiskTypeMapper::GetReplicationConfigurationDefaultLargeStagingDiskTypeForName(jsonValue.GetString("defaultLargeStagingDiskType"));
114
115 m_defaultLargeStagingDiskTypeHasBeenSet = true;
116 }
117
118 if(jsonValue.ValueExists("ebsEncryption"))
119 {
120 m_ebsEncryption = ReplicationConfigurationEbsEncryptionMapper::GetReplicationConfigurationEbsEncryptionForName(jsonValue.GetString("ebsEncryption"));
121
122 m_ebsEncryptionHasBeenSet = true;
123 }
124
125 if(jsonValue.ValueExists("ebsEncryptionKeyArn"))
126 {
127 m_ebsEncryptionKeyArn = jsonValue.GetString("ebsEncryptionKeyArn");
128
129 m_ebsEncryptionKeyArnHasBeenSet = true;
130 }
131
132 if(jsonValue.ValueExists("replicationConfigurationTemplateID"))
133 {
134 m_replicationConfigurationTemplateID = jsonValue.GetString("replicationConfigurationTemplateID");
135
136 m_replicationConfigurationTemplateIDHasBeenSet = true;
137 }
138
139 if(jsonValue.ValueExists("replicationServerInstanceType"))
140 {
141 m_replicationServerInstanceType = jsonValue.GetString("replicationServerInstanceType");
142
143 m_replicationServerInstanceTypeHasBeenSet = true;
144 }
145
146 if(jsonValue.ValueExists("replicationServersSecurityGroupsIDs"))
147 {
148 Array<JsonView> replicationServersSecurityGroupsIDsJsonList = jsonValue.GetArray("replicationServersSecurityGroupsIDs");
149 for(unsigned replicationServersSecurityGroupsIDsIndex = 0; replicationServersSecurityGroupsIDsIndex < replicationServersSecurityGroupsIDsJsonList.GetLength(); ++replicationServersSecurityGroupsIDsIndex)
150 {
151 m_replicationServersSecurityGroupsIDs.push_back(replicationServersSecurityGroupsIDsJsonList[replicationServersSecurityGroupsIDsIndex].AsString());
152 }
153 m_replicationServersSecurityGroupsIDsHasBeenSet = true;
154 }
155
156 if(jsonValue.ValueExists("stagingAreaSubnetId"))
157 {
158 m_stagingAreaSubnetId = jsonValue.GetString("stagingAreaSubnetId");
159
160 m_stagingAreaSubnetIdHasBeenSet = true;
161 }
162
163 if(jsonValue.ValueExists("stagingAreaTags"))
164 {
165 Aws::Map<Aws::String, JsonView> stagingAreaTagsJsonMap = jsonValue.GetObject("stagingAreaTags").GetAllObjects();
166 for(auto& stagingAreaTagsItem : stagingAreaTagsJsonMap)
167 {
168 m_stagingAreaTags[stagingAreaTagsItem.first] = stagingAreaTagsItem.second.AsString();
169 }
170 m_stagingAreaTagsHasBeenSet = true;
171 }
172
173 if(jsonValue.ValueExists("tags"))
174 {
175 Aws::Map<Aws::String, JsonView> tagsJsonMap = jsonValue.GetObject("tags").GetAllObjects();
176 for(auto& tagsItem : tagsJsonMap)
177 {
178 m_tags[tagsItem.first] = tagsItem.second.AsString();
179 }
180 m_tagsHasBeenSet = true;
181 }
182
183 if(jsonValue.ValueExists("useDedicatedReplicationServer"))
184 {
185 m_useDedicatedReplicationServer = jsonValue.GetBool("useDedicatedReplicationServer");
186
187 m_useDedicatedReplicationServerHasBeenSet = true;
188 }
189
190 return *this;
191 }
192
Jsonize() const193 JsonValue ReplicationConfigurationTemplate::Jsonize() const
194 {
195 JsonValue payload;
196
197 if(m_arnHasBeenSet)
198 {
199 payload.WithString("arn", m_arn);
200
201 }
202
203 if(m_associateDefaultSecurityGroupHasBeenSet)
204 {
205 payload.WithBool("associateDefaultSecurityGroup", m_associateDefaultSecurityGroup);
206
207 }
208
209 if(m_bandwidthThrottlingHasBeenSet)
210 {
211 payload.WithInt64("bandwidthThrottling", m_bandwidthThrottling);
212
213 }
214
215 if(m_createPublicIPHasBeenSet)
216 {
217 payload.WithBool("createPublicIP", m_createPublicIP);
218
219 }
220
221 if(m_dataPlaneRoutingHasBeenSet)
222 {
223 payload.WithString("dataPlaneRouting", ReplicationConfigurationDataPlaneRoutingMapper::GetNameForReplicationConfigurationDataPlaneRouting(m_dataPlaneRouting));
224 }
225
226 if(m_defaultLargeStagingDiskTypeHasBeenSet)
227 {
228 payload.WithString("defaultLargeStagingDiskType", ReplicationConfigurationDefaultLargeStagingDiskTypeMapper::GetNameForReplicationConfigurationDefaultLargeStagingDiskType(m_defaultLargeStagingDiskType));
229 }
230
231 if(m_ebsEncryptionHasBeenSet)
232 {
233 payload.WithString("ebsEncryption", ReplicationConfigurationEbsEncryptionMapper::GetNameForReplicationConfigurationEbsEncryption(m_ebsEncryption));
234 }
235
236 if(m_ebsEncryptionKeyArnHasBeenSet)
237 {
238 payload.WithString("ebsEncryptionKeyArn", m_ebsEncryptionKeyArn);
239
240 }
241
242 if(m_replicationConfigurationTemplateIDHasBeenSet)
243 {
244 payload.WithString("replicationConfigurationTemplateID", m_replicationConfigurationTemplateID);
245
246 }
247
248 if(m_replicationServerInstanceTypeHasBeenSet)
249 {
250 payload.WithString("replicationServerInstanceType", m_replicationServerInstanceType);
251
252 }
253
254 if(m_replicationServersSecurityGroupsIDsHasBeenSet)
255 {
256 Array<JsonValue> replicationServersSecurityGroupsIDsJsonList(m_replicationServersSecurityGroupsIDs.size());
257 for(unsigned replicationServersSecurityGroupsIDsIndex = 0; replicationServersSecurityGroupsIDsIndex < replicationServersSecurityGroupsIDsJsonList.GetLength(); ++replicationServersSecurityGroupsIDsIndex)
258 {
259 replicationServersSecurityGroupsIDsJsonList[replicationServersSecurityGroupsIDsIndex].AsString(m_replicationServersSecurityGroupsIDs[replicationServersSecurityGroupsIDsIndex]);
260 }
261 payload.WithArray("replicationServersSecurityGroupsIDs", std::move(replicationServersSecurityGroupsIDsJsonList));
262
263 }
264
265 if(m_stagingAreaSubnetIdHasBeenSet)
266 {
267 payload.WithString("stagingAreaSubnetId", m_stagingAreaSubnetId);
268
269 }
270
271 if(m_stagingAreaTagsHasBeenSet)
272 {
273 JsonValue stagingAreaTagsJsonMap;
274 for(auto& stagingAreaTagsItem : m_stagingAreaTags)
275 {
276 stagingAreaTagsJsonMap.WithString(stagingAreaTagsItem.first, stagingAreaTagsItem.second);
277 }
278 payload.WithObject("stagingAreaTags", std::move(stagingAreaTagsJsonMap));
279
280 }
281
282 if(m_tagsHasBeenSet)
283 {
284 JsonValue tagsJsonMap;
285 for(auto& tagsItem : m_tags)
286 {
287 tagsJsonMap.WithString(tagsItem.first, tagsItem.second);
288 }
289 payload.WithObject("tags", std::move(tagsJsonMap));
290
291 }
292
293 if(m_useDedicatedReplicationServerHasBeenSet)
294 {
295 payload.WithBool("useDedicatedReplicationServer", m_useDedicatedReplicationServer);
296
297 }
298
299 return payload;
300 }
301
302 } // namespace Model
303 } // namespace mgn
304 } // namespace Aws
305