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