1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/redshift/model/Cluster.h>
7 #include <aws/core/utils/xml/XmlSerializer.h>
8 #include <aws/core/utils/StringUtils.h>
9 #include <aws/core/utils/memory/stl/AWSStringStream.h>
10 
11 #include <utility>
12 
13 using namespace Aws::Utils::Xml;
14 using namespace Aws::Utils;
15 
16 namespace Aws
17 {
18 namespace Redshift
19 {
20 namespace Model
21 {
22 
Cluster()23 Cluster::Cluster() :
24     m_clusterIdentifierHasBeenSet(false),
25     m_nodeTypeHasBeenSet(false),
26     m_clusterStatusHasBeenSet(false),
27     m_clusterAvailabilityStatusHasBeenSet(false),
28     m_modifyStatusHasBeenSet(false),
29     m_masterUsernameHasBeenSet(false),
30     m_dBNameHasBeenSet(false),
31     m_endpointHasBeenSet(false),
32     m_clusterCreateTimeHasBeenSet(false),
33     m_automatedSnapshotRetentionPeriod(0),
34     m_automatedSnapshotRetentionPeriodHasBeenSet(false),
35     m_manualSnapshotRetentionPeriod(0),
36     m_manualSnapshotRetentionPeriodHasBeenSet(false),
37     m_clusterSecurityGroupsHasBeenSet(false),
38     m_vpcSecurityGroupsHasBeenSet(false),
39     m_clusterParameterGroupsHasBeenSet(false),
40     m_clusterSubnetGroupNameHasBeenSet(false),
41     m_vpcIdHasBeenSet(false),
42     m_availabilityZoneHasBeenSet(false),
43     m_preferredMaintenanceWindowHasBeenSet(false),
44     m_pendingModifiedValuesHasBeenSet(false),
45     m_clusterVersionHasBeenSet(false),
46     m_allowVersionUpgrade(false),
47     m_allowVersionUpgradeHasBeenSet(false),
48     m_numberOfNodes(0),
49     m_numberOfNodesHasBeenSet(false),
50     m_publiclyAccessible(false),
51     m_publiclyAccessibleHasBeenSet(false),
52     m_encrypted(false),
53     m_encryptedHasBeenSet(false),
54     m_restoreStatusHasBeenSet(false),
55     m_dataTransferProgressHasBeenSet(false),
56     m_hsmStatusHasBeenSet(false),
57     m_clusterSnapshotCopyStatusHasBeenSet(false),
58     m_clusterPublicKeyHasBeenSet(false),
59     m_clusterNodesHasBeenSet(false),
60     m_elasticIpStatusHasBeenSet(false),
61     m_clusterRevisionNumberHasBeenSet(false),
62     m_tagsHasBeenSet(false),
63     m_kmsKeyIdHasBeenSet(false),
64     m_enhancedVpcRouting(false),
65     m_enhancedVpcRoutingHasBeenSet(false),
66     m_iamRolesHasBeenSet(false),
67     m_pendingActionsHasBeenSet(false),
68     m_maintenanceTrackNameHasBeenSet(false),
69     m_elasticResizeNumberOfNodeOptionsHasBeenSet(false),
70     m_deferredMaintenanceWindowsHasBeenSet(false),
71     m_snapshotScheduleIdentifierHasBeenSet(false),
72     m_snapshotScheduleState(ScheduleState::NOT_SET),
73     m_snapshotScheduleStateHasBeenSet(false),
74     m_expectedNextSnapshotScheduleTimeHasBeenSet(false),
75     m_expectedNextSnapshotScheduleTimeStatusHasBeenSet(false),
76     m_nextMaintenanceWindowStartTimeHasBeenSet(false),
77     m_resizeInfoHasBeenSet(false),
78     m_availabilityZoneRelocationStatusHasBeenSet(false),
79     m_clusterNamespaceArnHasBeenSet(false),
80     m_totalStorageCapacityInMegaBytes(0),
81     m_totalStorageCapacityInMegaBytesHasBeenSet(false),
82     m_aquaConfigurationHasBeenSet(false)
83 {
84 }
85 
Cluster(const XmlNode & xmlNode)86 Cluster::Cluster(const XmlNode& xmlNode) :
87     m_clusterIdentifierHasBeenSet(false),
88     m_nodeTypeHasBeenSet(false),
89     m_clusterStatusHasBeenSet(false),
90     m_clusterAvailabilityStatusHasBeenSet(false),
91     m_modifyStatusHasBeenSet(false),
92     m_masterUsernameHasBeenSet(false),
93     m_dBNameHasBeenSet(false),
94     m_endpointHasBeenSet(false),
95     m_clusterCreateTimeHasBeenSet(false),
96     m_automatedSnapshotRetentionPeriod(0),
97     m_automatedSnapshotRetentionPeriodHasBeenSet(false),
98     m_manualSnapshotRetentionPeriod(0),
99     m_manualSnapshotRetentionPeriodHasBeenSet(false),
100     m_clusterSecurityGroupsHasBeenSet(false),
101     m_vpcSecurityGroupsHasBeenSet(false),
102     m_clusterParameterGroupsHasBeenSet(false),
103     m_clusterSubnetGroupNameHasBeenSet(false),
104     m_vpcIdHasBeenSet(false),
105     m_availabilityZoneHasBeenSet(false),
106     m_preferredMaintenanceWindowHasBeenSet(false),
107     m_pendingModifiedValuesHasBeenSet(false),
108     m_clusterVersionHasBeenSet(false),
109     m_allowVersionUpgrade(false),
110     m_allowVersionUpgradeHasBeenSet(false),
111     m_numberOfNodes(0),
112     m_numberOfNodesHasBeenSet(false),
113     m_publiclyAccessible(false),
114     m_publiclyAccessibleHasBeenSet(false),
115     m_encrypted(false),
116     m_encryptedHasBeenSet(false),
117     m_restoreStatusHasBeenSet(false),
118     m_dataTransferProgressHasBeenSet(false),
119     m_hsmStatusHasBeenSet(false),
120     m_clusterSnapshotCopyStatusHasBeenSet(false),
121     m_clusterPublicKeyHasBeenSet(false),
122     m_clusterNodesHasBeenSet(false),
123     m_elasticIpStatusHasBeenSet(false),
124     m_clusterRevisionNumberHasBeenSet(false),
125     m_tagsHasBeenSet(false),
126     m_kmsKeyIdHasBeenSet(false),
127     m_enhancedVpcRouting(false),
128     m_enhancedVpcRoutingHasBeenSet(false),
129     m_iamRolesHasBeenSet(false),
130     m_pendingActionsHasBeenSet(false),
131     m_maintenanceTrackNameHasBeenSet(false),
132     m_elasticResizeNumberOfNodeOptionsHasBeenSet(false),
133     m_deferredMaintenanceWindowsHasBeenSet(false),
134     m_snapshotScheduleIdentifierHasBeenSet(false),
135     m_snapshotScheduleState(ScheduleState::NOT_SET),
136     m_snapshotScheduleStateHasBeenSet(false),
137     m_expectedNextSnapshotScheduleTimeHasBeenSet(false),
138     m_expectedNextSnapshotScheduleTimeStatusHasBeenSet(false),
139     m_nextMaintenanceWindowStartTimeHasBeenSet(false),
140     m_resizeInfoHasBeenSet(false),
141     m_availabilityZoneRelocationStatusHasBeenSet(false),
142     m_clusterNamespaceArnHasBeenSet(false),
143     m_totalStorageCapacityInMegaBytes(0),
144     m_totalStorageCapacityInMegaBytesHasBeenSet(false),
145     m_aquaConfigurationHasBeenSet(false)
146 {
147   *this = xmlNode;
148 }
149 
operator =(const XmlNode & xmlNode)150 Cluster& Cluster::operator =(const XmlNode& xmlNode)
151 {
152   XmlNode resultNode = xmlNode;
153 
154   if(!resultNode.IsNull())
155   {
156     XmlNode clusterIdentifierNode = resultNode.FirstChild("ClusterIdentifier");
157     if(!clusterIdentifierNode.IsNull())
158     {
159       m_clusterIdentifier = Aws::Utils::Xml::DecodeEscapedXmlText(clusterIdentifierNode.GetText());
160       m_clusterIdentifierHasBeenSet = true;
161     }
162     XmlNode nodeTypeNode = resultNode.FirstChild("NodeType");
163     if(!nodeTypeNode.IsNull())
164     {
165       m_nodeType = Aws::Utils::Xml::DecodeEscapedXmlText(nodeTypeNode.GetText());
166       m_nodeTypeHasBeenSet = true;
167     }
168     XmlNode clusterStatusNode = resultNode.FirstChild("ClusterStatus");
169     if(!clusterStatusNode.IsNull())
170     {
171       m_clusterStatus = Aws::Utils::Xml::DecodeEscapedXmlText(clusterStatusNode.GetText());
172       m_clusterStatusHasBeenSet = true;
173     }
174     XmlNode clusterAvailabilityStatusNode = resultNode.FirstChild("ClusterAvailabilityStatus");
175     if(!clusterAvailabilityStatusNode.IsNull())
176     {
177       m_clusterAvailabilityStatus = Aws::Utils::Xml::DecodeEscapedXmlText(clusterAvailabilityStatusNode.GetText());
178       m_clusterAvailabilityStatusHasBeenSet = true;
179     }
180     XmlNode modifyStatusNode = resultNode.FirstChild("ModifyStatus");
181     if(!modifyStatusNode.IsNull())
182     {
183       m_modifyStatus = Aws::Utils::Xml::DecodeEscapedXmlText(modifyStatusNode.GetText());
184       m_modifyStatusHasBeenSet = true;
185     }
186     XmlNode masterUsernameNode = resultNode.FirstChild("MasterUsername");
187     if(!masterUsernameNode.IsNull())
188     {
189       m_masterUsername = Aws::Utils::Xml::DecodeEscapedXmlText(masterUsernameNode.GetText());
190       m_masterUsernameHasBeenSet = true;
191     }
192     XmlNode dBNameNode = resultNode.FirstChild("DBName");
193     if(!dBNameNode.IsNull())
194     {
195       m_dBName = Aws::Utils::Xml::DecodeEscapedXmlText(dBNameNode.GetText());
196       m_dBNameHasBeenSet = true;
197     }
198     XmlNode endpointNode = resultNode.FirstChild("Endpoint");
199     if(!endpointNode.IsNull())
200     {
201       m_endpoint = endpointNode;
202       m_endpointHasBeenSet = true;
203     }
204     XmlNode clusterCreateTimeNode = resultNode.FirstChild("ClusterCreateTime");
205     if(!clusterCreateTimeNode.IsNull())
206     {
207       m_clusterCreateTime = DateTime(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(clusterCreateTimeNode.GetText()).c_str()).c_str(), DateFormat::ISO_8601);
208       m_clusterCreateTimeHasBeenSet = true;
209     }
210     XmlNode automatedSnapshotRetentionPeriodNode = resultNode.FirstChild("AutomatedSnapshotRetentionPeriod");
211     if(!automatedSnapshotRetentionPeriodNode.IsNull())
212     {
213       m_automatedSnapshotRetentionPeriod = StringUtils::ConvertToInt32(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(automatedSnapshotRetentionPeriodNode.GetText()).c_str()).c_str());
214       m_automatedSnapshotRetentionPeriodHasBeenSet = true;
215     }
216     XmlNode manualSnapshotRetentionPeriodNode = resultNode.FirstChild("ManualSnapshotRetentionPeriod");
217     if(!manualSnapshotRetentionPeriodNode.IsNull())
218     {
219       m_manualSnapshotRetentionPeriod = StringUtils::ConvertToInt32(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(manualSnapshotRetentionPeriodNode.GetText()).c_str()).c_str());
220       m_manualSnapshotRetentionPeriodHasBeenSet = true;
221     }
222     XmlNode clusterSecurityGroupsNode = resultNode.FirstChild("ClusterSecurityGroups");
223     if(!clusterSecurityGroupsNode.IsNull())
224     {
225       XmlNode clusterSecurityGroupsMember = clusterSecurityGroupsNode.FirstChild("ClusterSecurityGroup");
226       while(!clusterSecurityGroupsMember.IsNull())
227       {
228         m_clusterSecurityGroups.push_back(clusterSecurityGroupsMember);
229         clusterSecurityGroupsMember = clusterSecurityGroupsMember.NextNode("ClusterSecurityGroup");
230       }
231 
232       m_clusterSecurityGroupsHasBeenSet = true;
233     }
234     XmlNode vpcSecurityGroupsNode = resultNode.FirstChild("VpcSecurityGroups");
235     if(!vpcSecurityGroupsNode.IsNull())
236     {
237       XmlNode vpcSecurityGroupsMember = vpcSecurityGroupsNode.FirstChild("VpcSecurityGroup");
238       while(!vpcSecurityGroupsMember.IsNull())
239       {
240         m_vpcSecurityGroups.push_back(vpcSecurityGroupsMember);
241         vpcSecurityGroupsMember = vpcSecurityGroupsMember.NextNode("VpcSecurityGroup");
242       }
243 
244       m_vpcSecurityGroupsHasBeenSet = true;
245     }
246     XmlNode clusterParameterGroupsNode = resultNode.FirstChild("ClusterParameterGroups");
247     if(!clusterParameterGroupsNode.IsNull())
248     {
249       XmlNode clusterParameterGroupsMember = clusterParameterGroupsNode.FirstChild("ClusterParameterGroup");
250       while(!clusterParameterGroupsMember.IsNull())
251       {
252         m_clusterParameterGroups.push_back(clusterParameterGroupsMember);
253         clusterParameterGroupsMember = clusterParameterGroupsMember.NextNode("ClusterParameterGroup");
254       }
255 
256       m_clusterParameterGroupsHasBeenSet = true;
257     }
258     XmlNode clusterSubnetGroupNameNode = resultNode.FirstChild("ClusterSubnetGroupName");
259     if(!clusterSubnetGroupNameNode.IsNull())
260     {
261       m_clusterSubnetGroupName = Aws::Utils::Xml::DecodeEscapedXmlText(clusterSubnetGroupNameNode.GetText());
262       m_clusterSubnetGroupNameHasBeenSet = true;
263     }
264     XmlNode vpcIdNode = resultNode.FirstChild("VpcId");
265     if(!vpcIdNode.IsNull())
266     {
267       m_vpcId = Aws::Utils::Xml::DecodeEscapedXmlText(vpcIdNode.GetText());
268       m_vpcIdHasBeenSet = true;
269     }
270     XmlNode availabilityZoneNode = resultNode.FirstChild("AvailabilityZone");
271     if(!availabilityZoneNode.IsNull())
272     {
273       m_availabilityZone = Aws::Utils::Xml::DecodeEscapedXmlText(availabilityZoneNode.GetText());
274       m_availabilityZoneHasBeenSet = true;
275     }
276     XmlNode preferredMaintenanceWindowNode = resultNode.FirstChild("PreferredMaintenanceWindow");
277     if(!preferredMaintenanceWindowNode.IsNull())
278     {
279       m_preferredMaintenanceWindow = Aws::Utils::Xml::DecodeEscapedXmlText(preferredMaintenanceWindowNode.GetText());
280       m_preferredMaintenanceWindowHasBeenSet = true;
281     }
282     XmlNode pendingModifiedValuesNode = resultNode.FirstChild("PendingModifiedValues");
283     if(!pendingModifiedValuesNode.IsNull())
284     {
285       m_pendingModifiedValues = pendingModifiedValuesNode;
286       m_pendingModifiedValuesHasBeenSet = true;
287     }
288     XmlNode clusterVersionNode = resultNode.FirstChild("ClusterVersion");
289     if(!clusterVersionNode.IsNull())
290     {
291       m_clusterVersion = Aws::Utils::Xml::DecodeEscapedXmlText(clusterVersionNode.GetText());
292       m_clusterVersionHasBeenSet = true;
293     }
294     XmlNode allowVersionUpgradeNode = resultNode.FirstChild("AllowVersionUpgrade");
295     if(!allowVersionUpgradeNode.IsNull())
296     {
297       m_allowVersionUpgrade = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(allowVersionUpgradeNode.GetText()).c_str()).c_str());
298       m_allowVersionUpgradeHasBeenSet = true;
299     }
300     XmlNode numberOfNodesNode = resultNode.FirstChild("NumberOfNodes");
301     if(!numberOfNodesNode.IsNull())
302     {
303       m_numberOfNodes = StringUtils::ConvertToInt32(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(numberOfNodesNode.GetText()).c_str()).c_str());
304       m_numberOfNodesHasBeenSet = true;
305     }
306     XmlNode publiclyAccessibleNode = resultNode.FirstChild("PubliclyAccessible");
307     if(!publiclyAccessibleNode.IsNull())
308     {
309       m_publiclyAccessible = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(publiclyAccessibleNode.GetText()).c_str()).c_str());
310       m_publiclyAccessibleHasBeenSet = true;
311     }
312     XmlNode encryptedNode = resultNode.FirstChild("Encrypted");
313     if(!encryptedNode.IsNull())
314     {
315       m_encrypted = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(encryptedNode.GetText()).c_str()).c_str());
316       m_encryptedHasBeenSet = true;
317     }
318     XmlNode restoreStatusNode = resultNode.FirstChild("RestoreStatus");
319     if(!restoreStatusNode.IsNull())
320     {
321       m_restoreStatus = restoreStatusNode;
322       m_restoreStatusHasBeenSet = true;
323     }
324     XmlNode dataTransferProgressNode = resultNode.FirstChild("DataTransferProgress");
325     if(!dataTransferProgressNode.IsNull())
326     {
327       m_dataTransferProgress = dataTransferProgressNode;
328       m_dataTransferProgressHasBeenSet = true;
329     }
330     XmlNode hsmStatusNode = resultNode.FirstChild("HsmStatus");
331     if(!hsmStatusNode.IsNull())
332     {
333       m_hsmStatus = hsmStatusNode;
334       m_hsmStatusHasBeenSet = true;
335     }
336     XmlNode clusterSnapshotCopyStatusNode = resultNode.FirstChild("ClusterSnapshotCopyStatus");
337     if(!clusterSnapshotCopyStatusNode.IsNull())
338     {
339       m_clusterSnapshotCopyStatus = clusterSnapshotCopyStatusNode;
340       m_clusterSnapshotCopyStatusHasBeenSet = true;
341     }
342     XmlNode clusterPublicKeyNode = resultNode.FirstChild("ClusterPublicKey");
343     if(!clusterPublicKeyNode.IsNull())
344     {
345       m_clusterPublicKey = Aws::Utils::Xml::DecodeEscapedXmlText(clusterPublicKeyNode.GetText());
346       m_clusterPublicKeyHasBeenSet = true;
347     }
348     XmlNode clusterNodesNode = resultNode.FirstChild("ClusterNodes");
349     if(!clusterNodesNode.IsNull())
350     {
351       XmlNode clusterNodesMember = clusterNodesNode.FirstChild("member");
352       while(!clusterNodesMember.IsNull())
353       {
354         m_clusterNodes.push_back(clusterNodesMember);
355         clusterNodesMember = clusterNodesMember.NextNode("member");
356       }
357 
358       m_clusterNodesHasBeenSet = true;
359     }
360     XmlNode elasticIpStatusNode = resultNode.FirstChild("ElasticIpStatus");
361     if(!elasticIpStatusNode.IsNull())
362     {
363       m_elasticIpStatus = elasticIpStatusNode;
364       m_elasticIpStatusHasBeenSet = true;
365     }
366     XmlNode clusterRevisionNumberNode = resultNode.FirstChild("ClusterRevisionNumber");
367     if(!clusterRevisionNumberNode.IsNull())
368     {
369       m_clusterRevisionNumber = Aws::Utils::Xml::DecodeEscapedXmlText(clusterRevisionNumberNode.GetText());
370       m_clusterRevisionNumberHasBeenSet = true;
371     }
372     XmlNode tagsNode = resultNode.FirstChild("Tags");
373     if(!tagsNode.IsNull())
374     {
375       XmlNode tagsMember = tagsNode.FirstChild("Tag");
376       while(!tagsMember.IsNull())
377       {
378         m_tags.push_back(tagsMember);
379         tagsMember = tagsMember.NextNode("Tag");
380       }
381 
382       m_tagsHasBeenSet = true;
383     }
384     XmlNode kmsKeyIdNode = resultNode.FirstChild("KmsKeyId");
385     if(!kmsKeyIdNode.IsNull())
386     {
387       m_kmsKeyId = Aws::Utils::Xml::DecodeEscapedXmlText(kmsKeyIdNode.GetText());
388       m_kmsKeyIdHasBeenSet = true;
389     }
390     XmlNode enhancedVpcRoutingNode = resultNode.FirstChild("EnhancedVpcRouting");
391     if(!enhancedVpcRoutingNode.IsNull())
392     {
393       m_enhancedVpcRouting = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(enhancedVpcRoutingNode.GetText()).c_str()).c_str());
394       m_enhancedVpcRoutingHasBeenSet = true;
395     }
396     XmlNode iamRolesNode = resultNode.FirstChild("IamRoles");
397     if(!iamRolesNode.IsNull())
398     {
399       XmlNode iamRolesMember = iamRolesNode.FirstChild("ClusterIamRole");
400       while(!iamRolesMember.IsNull())
401       {
402         m_iamRoles.push_back(iamRolesMember);
403         iamRolesMember = iamRolesMember.NextNode("ClusterIamRole");
404       }
405 
406       m_iamRolesHasBeenSet = true;
407     }
408     XmlNode pendingActionsNode = resultNode.FirstChild("PendingActions");
409     if(!pendingActionsNode.IsNull())
410     {
411       XmlNode pendingActionsMember = pendingActionsNode.FirstChild("member");
412       while(!pendingActionsMember.IsNull())
413       {
414         m_pendingActions.push_back(pendingActionsMember.GetText());
415         pendingActionsMember = pendingActionsMember.NextNode("member");
416       }
417 
418       m_pendingActionsHasBeenSet = true;
419     }
420     XmlNode maintenanceTrackNameNode = resultNode.FirstChild("MaintenanceTrackName");
421     if(!maintenanceTrackNameNode.IsNull())
422     {
423       m_maintenanceTrackName = Aws::Utils::Xml::DecodeEscapedXmlText(maintenanceTrackNameNode.GetText());
424       m_maintenanceTrackNameHasBeenSet = true;
425     }
426     XmlNode elasticResizeNumberOfNodeOptionsNode = resultNode.FirstChild("ElasticResizeNumberOfNodeOptions");
427     if(!elasticResizeNumberOfNodeOptionsNode.IsNull())
428     {
429       m_elasticResizeNumberOfNodeOptions = Aws::Utils::Xml::DecodeEscapedXmlText(elasticResizeNumberOfNodeOptionsNode.GetText());
430       m_elasticResizeNumberOfNodeOptionsHasBeenSet = true;
431     }
432     XmlNode deferredMaintenanceWindowsNode = resultNode.FirstChild("DeferredMaintenanceWindows");
433     if(!deferredMaintenanceWindowsNode.IsNull())
434     {
435       XmlNode deferredMaintenanceWindowsMember = deferredMaintenanceWindowsNode.FirstChild("DeferredMaintenanceWindow");
436       while(!deferredMaintenanceWindowsMember.IsNull())
437       {
438         m_deferredMaintenanceWindows.push_back(deferredMaintenanceWindowsMember);
439         deferredMaintenanceWindowsMember = deferredMaintenanceWindowsMember.NextNode("DeferredMaintenanceWindow");
440       }
441 
442       m_deferredMaintenanceWindowsHasBeenSet = true;
443     }
444     XmlNode snapshotScheduleIdentifierNode = resultNode.FirstChild("SnapshotScheduleIdentifier");
445     if(!snapshotScheduleIdentifierNode.IsNull())
446     {
447       m_snapshotScheduleIdentifier = Aws::Utils::Xml::DecodeEscapedXmlText(snapshotScheduleIdentifierNode.GetText());
448       m_snapshotScheduleIdentifierHasBeenSet = true;
449     }
450     XmlNode snapshotScheduleStateNode = resultNode.FirstChild("SnapshotScheduleState");
451     if(!snapshotScheduleStateNode.IsNull())
452     {
453       m_snapshotScheduleState = ScheduleStateMapper::GetScheduleStateForName(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(snapshotScheduleStateNode.GetText()).c_str()).c_str());
454       m_snapshotScheduleStateHasBeenSet = true;
455     }
456     XmlNode expectedNextSnapshotScheduleTimeNode = resultNode.FirstChild("ExpectedNextSnapshotScheduleTime");
457     if(!expectedNextSnapshotScheduleTimeNode.IsNull())
458     {
459       m_expectedNextSnapshotScheduleTime = DateTime(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(expectedNextSnapshotScheduleTimeNode.GetText()).c_str()).c_str(), DateFormat::ISO_8601);
460       m_expectedNextSnapshotScheduleTimeHasBeenSet = true;
461     }
462     XmlNode expectedNextSnapshotScheduleTimeStatusNode = resultNode.FirstChild("ExpectedNextSnapshotScheduleTimeStatus");
463     if(!expectedNextSnapshotScheduleTimeStatusNode.IsNull())
464     {
465       m_expectedNextSnapshotScheduleTimeStatus = Aws::Utils::Xml::DecodeEscapedXmlText(expectedNextSnapshotScheduleTimeStatusNode.GetText());
466       m_expectedNextSnapshotScheduleTimeStatusHasBeenSet = true;
467     }
468     XmlNode nextMaintenanceWindowStartTimeNode = resultNode.FirstChild("NextMaintenanceWindowStartTime");
469     if(!nextMaintenanceWindowStartTimeNode.IsNull())
470     {
471       m_nextMaintenanceWindowStartTime = DateTime(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(nextMaintenanceWindowStartTimeNode.GetText()).c_str()).c_str(), DateFormat::ISO_8601);
472       m_nextMaintenanceWindowStartTimeHasBeenSet = true;
473     }
474     XmlNode resizeInfoNode = resultNode.FirstChild("ResizeInfo");
475     if(!resizeInfoNode.IsNull())
476     {
477       m_resizeInfo = resizeInfoNode;
478       m_resizeInfoHasBeenSet = true;
479     }
480     XmlNode availabilityZoneRelocationStatusNode = resultNode.FirstChild("AvailabilityZoneRelocationStatus");
481     if(!availabilityZoneRelocationStatusNode.IsNull())
482     {
483       m_availabilityZoneRelocationStatus = Aws::Utils::Xml::DecodeEscapedXmlText(availabilityZoneRelocationStatusNode.GetText());
484       m_availabilityZoneRelocationStatusHasBeenSet = true;
485     }
486     XmlNode clusterNamespaceArnNode = resultNode.FirstChild("ClusterNamespaceArn");
487     if(!clusterNamespaceArnNode.IsNull())
488     {
489       m_clusterNamespaceArn = Aws::Utils::Xml::DecodeEscapedXmlText(clusterNamespaceArnNode.GetText());
490       m_clusterNamespaceArnHasBeenSet = true;
491     }
492     XmlNode totalStorageCapacityInMegaBytesNode = resultNode.FirstChild("TotalStorageCapacityInMegaBytes");
493     if(!totalStorageCapacityInMegaBytesNode.IsNull())
494     {
495       m_totalStorageCapacityInMegaBytes = StringUtils::ConvertToInt64(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(totalStorageCapacityInMegaBytesNode.GetText()).c_str()).c_str());
496       m_totalStorageCapacityInMegaBytesHasBeenSet = true;
497     }
498     XmlNode aquaConfigurationNode = resultNode.FirstChild("AquaConfiguration");
499     if(!aquaConfigurationNode.IsNull())
500     {
501       m_aquaConfiguration = aquaConfigurationNode;
502       m_aquaConfigurationHasBeenSet = true;
503     }
504   }
505 
506   return *this;
507 }
508 
OutputToStream(Aws::OStream & oStream,const char * location,unsigned index,const char * locationValue) const509 void Cluster::OutputToStream(Aws::OStream& oStream, const char* location, unsigned index, const char* locationValue) const
510 {
511   if(m_clusterIdentifierHasBeenSet)
512   {
513       oStream << location << index << locationValue << ".ClusterIdentifier=" << StringUtils::URLEncode(m_clusterIdentifier.c_str()) << "&";
514   }
515 
516   if(m_nodeTypeHasBeenSet)
517   {
518       oStream << location << index << locationValue << ".NodeType=" << StringUtils::URLEncode(m_nodeType.c_str()) << "&";
519   }
520 
521   if(m_clusterStatusHasBeenSet)
522   {
523       oStream << location << index << locationValue << ".ClusterStatus=" << StringUtils::URLEncode(m_clusterStatus.c_str()) << "&";
524   }
525 
526   if(m_clusterAvailabilityStatusHasBeenSet)
527   {
528       oStream << location << index << locationValue << ".ClusterAvailabilityStatus=" << StringUtils::URLEncode(m_clusterAvailabilityStatus.c_str()) << "&";
529   }
530 
531   if(m_modifyStatusHasBeenSet)
532   {
533       oStream << location << index << locationValue << ".ModifyStatus=" << StringUtils::URLEncode(m_modifyStatus.c_str()) << "&";
534   }
535 
536   if(m_masterUsernameHasBeenSet)
537   {
538       oStream << location << index << locationValue << ".MasterUsername=" << StringUtils::URLEncode(m_masterUsername.c_str()) << "&";
539   }
540 
541   if(m_dBNameHasBeenSet)
542   {
543       oStream << location << index << locationValue << ".DBName=" << StringUtils::URLEncode(m_dBName.c_str()) << "&";
544   }
545 
546   if(m_endpointHasBeenSet)
547   {
548       Aws::StringStream endpointLocationAndMemberSs;
549       endpointLocationAndMemberSs << location << index << locationValue << ".Endpoint";
550       m_endpoint.OutputToStream(oStream, endpointLocationAndMemberSs.str().c_str());
551   }
552 
553   if(m_clusterCreateTimeHasBeenSet)
554   {
555       oStream << location << index << locationValue << ".ClusterCreateTime=" << StringUtils::URLEncode(m_clusterCreateTime.ToGmtString(DateFormat::ISO_8601).c_str()) << "&";
556   }
557 
558   if(m_automatedSnapshotRetentionPeriodHasBeenSet)
559   {
560       oStream << location << index << locationValue << ".AutomatedSnapshotRetentionPeriod=" << m_automatedSnapshotRetentionPeriod << "&";
561   }
562 
563   if(m_manualSnapshotRetentionPeriodHasBeenSet)
564   {
565       oStream << location << index << locationValue << ".ManualSnapshotRetentionPeriod=" << m_manualSnapshotRetentionPeriod << "&";
566   }
567 
568   if(m_clusterSecurityGroupsHasBeenSet)
569   {
570       unsigned clusterSecurityGroupsIdx = 1;
571       for(auto& item : m_clusterSecurityGroups)
572       {
573         Aws::StringStream clusterSecurityGroupsSs;
574         clusterSecurityGroupsSs << location << index << locationValue << ".ClusterSecurityGroup." << clusterSecurityGroupsIdx++;
575         item.OutputToStream(oStream, clusterSecurityGroupsSs.str().c_str());
576       }
577   }
578 
579   if(m_vpcSecurityGroupsHasBeenSet)
580   {
581       unsigned vpcSecurityGroupsIdx = 1;
582       for(auto& item : m_vpcSecurityGroups)
583       {
584         Aws::StringStream vpcSecurityGroupsSs;
585         vpcSecurityGroupsSs << location << index << locationValue << ".VpcSecurityGroup." << vpcSecurityGroupsIdx++;
586         item.OutputToStream(oStream, vpcSecurityGroupsSs.str().c_str());
587       }
588   }
589 
590   if(m_clusterParameterGroupsHasBeenSet)
591   {
592       unsigned clusterParameterGroupsIdx = 1;
593       for(auto& item : m_clusterParameterGroups)
594       {
595         Aws::StringStream clusterParameterGroupsSs;
596         clusterParameterGroupsSs << location << index << locationValue << ".ClusterParameterGroup." << clusterParameterGroupsIdx++;
597         item.OutputToStream(oStream, clusterParameterGroupsSs.str().c_str());
598       }
599   }
600 
601   if(m_clusterSubnetGroupNameHasBeenSet)
602   {
603       oStream << location << index << locationValue << ".ClusterSubnetGroupName=" << StringUtils::URLEncode(m_clusterSubnetGroupName.c_str()) << "&";
604   }
605 
606   if(m_vpcIdHasBeenSet)
607   {
608       oStream << location << index << locationValue << ".VpcId=" << StringUtils::URLEncode(m_vpcId.c_str()) << "&";
609   }
610 
611   if(m_availabilityZoneHasBeenSet)
612   {
613       oStream << location << index << locationValue << ".AvailabilityZone=" << StringUtils::URLEncode(m_availabilityZone.c_str()) << "&";
614   }
615 
616   if(m_preferredMaintenanceWindowHasBeenSet)
617   {
618       oStream << location << index << locationValue << ".PreferredMaintenanceWindow=" << StringUtils::URLEncode(m_preferredMaintenanceWindow.c_str()) << "&";
619   }
620 
621   if(m_pendingModifiedValuesHasBeenSet)
622   {
623       Aws::StringStream pendingModifiedValuesLocationAndMemberSs;
624       pendingModifiedValuesLocationAndMemberSs << location << index << locationValue << ".PendingModifiedValues";
625       m_pendingModifiedValues.OutputToStream(oStream, pendingModifiedValuesLocationAndMemberSs.str().c_str());
626   }
627 
628   if(m_clusterVersionHasBeenSet)
629   {
630       oStream << location << index << locationValue << ".ClusterVersion=" << StringUtils::URLEncode(m_clusterVersion.c_str()) << "&";
631   }
632 
633   if(m_allowVersionUpgradeHasBeenSet)
634   {
635       oStream << location << index << locationValue << ".AllowVersionUpgrade=" << std::boolalpha << m_allowVersionUpgrade << "&";
636   }
637 
638   if(m_numberOfNodesHasBeenSet)
639   {
640       oStream << location << index << locationValue << ".NumberOfNodes=" << m_numberOfNodes << "&";
641   }
642 
643   if(m_publiclyAccessibleHasBeenSet)
644   {
645       oStream << location << index << locationValue << ".PubliclyAccessible=" << std::boolalpha << m_publiclyAccessible << "&";
646   }
647 
648   if(m_encryptedHasBeenSet)
649   {
650       oStream << location << index << locationValue << ".Encrypted=" << std::boolalpha << m_encrypted << "&";
651   }
652 
653   if(m_restoreStatusHasBeenSet)
654   {
655       Aws::StringStream restoreStatusLocationAndMemberSs;
656       restoreStatusLocationAndMemberSs << location << index << locationValue << ".RestoreStatus";
657       m_restoreStatus.OutputToStream(oStream, restoreStatusLocationAndMemberSs.str().c_str());
658   }
659 
660   if(m_dataTransferProgressHasBeenSet)
661   {
662       Aws::StringStream dataTransferProgressLocationAndMemberSs;
663       dataTransferProgressLocationAndMemberSs << location << index << locationValue << ".DataTransferProgress";
664       m_dataTransferProgress.OutputToStream(oStream, dataTransferProgressLocationAndMemberSs.str().c_str());
665   }
666 
667   if(m_hsmStatusHasBeenSet)
668   {
669       Aws::StringStream hsmStatusLocationAndMemberSs;
670       hsmStatusLocationAndMemberSs << location << index << locationValue << ".HsmStatus";
671       m_hsmStatus.OutputToStream(oStream, hsmStatusLocationAndMemberSs.str().c_str());
672   }
673 
674   if(m_clusterSnapshotCopyStatusHasBeenSet)
675   {
676       Aws::StringStream clusterSnapshotCopyStatusLocationAndMemberSs;
677       clusterSnapshotCopyStatusLocationAndMemberSs << location << index << locationValue << ".ClusterSnapshotCopyStatus";
678       m_clusterSnapshotCopyStatus.OutputToStream(oStream, clusterSnapshotCopyStatusLocationAndMemberSs.str().c_str());
679   }
680 
681   if(m_clusterPublicKeyHasBeenSet)
682   {
683       oStream << location << index << locationValue << ".ClusterPublicKey=" << StringUtils::URLEncode(m_clusterPublicKey.c_str()) << "&";
684   }
685 
686   if(m_clusterNodesHasBeenSet)
687   {
688       unsigned clusterNodesIdx = 1;
689       for(auto& item : m_clusterNodes)
690       {
691         Aws::StringStream clusterNodesSs;
692         clusterNodesSs << location << index << locationValue << ".ClusterNodes.member." << clusterNodesIdx++;
693         item.OutputToStream(oStream, clusterNodesSs.str().c_str());
694       }
695   }
696 
697   if(m_elasticIpStatusHasBeenSet)
698   {
699       Aws::StringStream elasticIpStatusLocationAndMemberSs;
700       elasticIpStatusLocationAndMemberSs << location << index << locationValue << ".ElasticIpStatus";
701       m_elasticIpStatus.OutputToStream(oStream, elasticIpStatusLocationAndMemberSs.str().c_str());
702   }
703 
704   if(m_clusterRevisionNumberHasBeenSet)
705   {
706       oStream << location << index << locationValue << ".ClusterRevisionNumber=" << StringUtils::URLEncode(m_clusterRevisionNumber.c_str()) << "&";
707   }
708 
709   if(m_tagsHasBeenSet)
710   {
711       unsigned tagsIdx = 1;
712       for(auto& item : m_tags)
713       {
714         Aws::StringStream tagsSs;
715         tagsSs << location << index << locationValue << ".Tag." << tagsIdx++;
716         item.OutputToStream(oStream, tagsSs.str().c_str());
717       }
718   }
719 
720   if(m_kmsKeyIdHasBeenSet)
721   {
722       oStream << location << index << locationValue << ".KmsKeyId=" << StringUtils::URLEncode(m_kmsKeyId.c_str()) << "&";
723   }
724 
725   if(m_enhancedVpcRoutingHasBeenSet)
726   {
727       oStream << location << index << locationValue << ".EnhancedVpcRouting=" << std::boolalpha << m_enhancedVpcRouting << "&";
728   }
729 
730   if(m_iamRolesHasBeenSet)
731   {
732       unsigned iamRolesIdx = 1;
733       for(auto& item : m_iamRoles)
734       {
735         Aws::StringStream iamRolesSs;
736         iamRolesSs << location << index << locationValue << ".ClusterIamRole." << iamRolesIdx++;
737         item.OutputToStream(oStream, iamRolesSs.str().c_str());
738       }
739   }
740 
741   if(m_pendingActionsHasBeenSet)
742   {
743       unsigned pendingActionsIdx = 1;
744       for(auto& item : m_pendingActions)
745       {
746         oStream << location << index << locationValue << ".PendingActions.member." << pendingActionsIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
747       }
748   }
749 
750   if(m_maintenanceTrackNameHasBeenSet)
751   {
752       oStream << location << index << locationValue << ".MaintenanceTrackName=" << StringUtils::URLEncode(m_maintenanceTrackName.c_str()) << "&";
753   }
754 
755   if(m_elasticResizeNumberOfNodeOptionsHasBeenSet)
756   {
757       oStream << location << index << locationValue << ".ElasticResizeNumberOfNodeOptions=" << StringUtils::URLEncode(m_elasticResizeNumberOfNodeOptions.c_str()) << "&";
758   }
759 
760   if(m_deferredMaintenanceWindowsHasBeenSet)
761   {
762       unsigned deferredMaintenanceWindowsIdx = 1;
763       for(auto& item : m_deferredMaintenanceWindows)
764       {
765         Aws::StringStream deferredMaintenanceWindowsSs;
766         deferredMaintenanceWindowsSs << location << index << locationValue << ".DeferredMaintenanceWindow." << deferredMaintenanceWindowsIdx++;
767         item.OutputToStream(oStream, deferredMaintenanceWindowsSs.str().c_str());
768       }
769   }
770 
771   if(m_snapshotScheduleIdentifierHasBeenSet)
772   {
773       oStream << location << index << locationValue << ".SnapshotScheduleIdentifier=" << StringUtils::URLEncode(m_snapshotScheduleIdentifier.c_str()) << "&";
774   }
775 
776   if(m_snapshotScheduleStateHasBeenSet)
777   {
778       oStream << location << index << locationValue << ".SnapshotScheduleState=" << ScheduleStateMapper::GetNameForScheduleState(m_snapshotScheduleState) << "&";
779   }
780 
781   if(m_expectedNextSnapshotScheduleTimeHasBeenSet)
782   {
783       oStream << location << index << locationValue << ".ExpectedNextSnapshotScheduleTime=" << StringUtils::URLEncode(m_expectedNextSnapshotScheduleTime.ToGmtString(DateFormat::ISO_8601).c_str()) << "&";
784   }
785 
786   if(m_expectedNextSnapshotScheduleTimeStatusHasBeenSet)
787   {
788       oStream << location << index << locationValue << ".ExpectedNextSnapshotScheduleTimeStatus=" << StringUtils::URLEncode(m_expectedNextSnapshotScheduleTimeStatus.c_str()) << "&";
789   }
790 
791   if(m_nextMaintenanceWindowStartTimeHasBeenSet)
792   {
793       oStream << location << index << locationValue << ".NextMaintenanceWindowStartTime=" << StringUtils::URLEncode(m_nextMaintenanceWindowStartTime.ToGmtString(DateFormat::ISO_8601).c_str()) << "&";
794   }
795 
796   if(m_resizeInfoHasBeenSet)
797   {
798       Aws::StringStream resizeInfoLocationAndMemberSs;
799       resizeInfoLocationAndMemberSs << location << index << locationValue << ".ResizeInfo";
800       m_resizeInfo.OutputToStream(oStream, resizeInfoLocationAndMemberSs.str().c_str());
801   }
802 
803   if(m_availabilityZoneRelocationStatusHasBeenSet)
804   {
805       oStream << location << index << locationValue << ".AvailabilityZoneRelocationStatus=" << StringUtils::URLEncode(m_availabilityZoneRelocationStatus.c_str()) << "&";
806   }
807 
808   if(m_clusterNamespaceArnHasBeenSet)
809   {
810       oStream << location << index << locationValue << ".ClusterNamespaceArn=" << StringUtils::URLEncode(m_clusterNamespaceArn.c_str()) << "&";
811   }
812 
813   if(m_totalStorageCapacityInMegaBytesHasBeenSet)
814   {
815       oStream << location << index << locationValue << ".TotalStorageCapacityInMegaBytes=" << m_totalStorageCapacityInMegaBytes << "&";
816   }
817 
818   if(m_aquaConfigurationHasBeenSet)
819   {
820       Aws::StringStream aquaConfigurationLocationAndMemberSs;
821       aquaConfigurationLocationAndMemberSs << location << index << locationValue << ".AquaConfiguration";
822       m_aquaConfiguration.OutputToStream(oStream, aquaConfigurationLocationAndMemberSs.str().c_str());
823   }
824 
825 }
826 
OutputToStream(Aws::OStream & oStream,const char * location) const827 void Cluster::OutputToStream(Aws::OStream& oStream, const char* location) const
828 {
829   if(m_clusterIdentifierHasBeenSet)
830   {
831       oStream << location << ".ClusterIdentifier=" << StringUtils::URLEncode(m_clusterIdentifier.c_str()) << "&";
832   }
833   if(m_nodeTypeHasBeenSet)
834   {
835       oStream << location << ".NodeType=" << StringUtils::URLEncode(m_nodeType.c_str()) << "&";
836   }
837   if(m_clusterStatusHasBeenSet)
838   {
839       oStream << location << ".ClusterStatus=" << StringUtils::URLEncode(m_clusterStatus.c_str()) << "&";
840   }
841   if(m_clusterAvailabilityStatusHasBeenSet)
842   {
843       oStream << location << ".ClusterAvailabilityStatus=" << StringUtils::URLEncode(m_clusterAvailabilityStatus.c_str()) << "&";
844   }
845   if(m_modifyStatusHasBeenSet)
846   {
847       oStream << location << ".ModifyStatus=" << StringUtils::URLEncode(m_modifyStatus.c_str()) << "&";
848   }
849   if(m_masterUsernameHasBeenSet)
850   {
851       oStream << location << ".MasterUsername=" << StringUtils::URLEncode(m_masterUsername.c_str()) << "&";
852   }
853   if(m_dBNameHasBeenSet)
854   {
855       oStream << location << ".DBName=" << StringUtils::URLEncode(m_dBName.c_str()) << "&";
856   }
857   if(m_endpointHasBeenSet)
858   {
859       Aws::String endpointLocationAndMember(location);
860       endpointLocationAndMember += ".Endpoint";
861       m_endpoint.OutputToStream(oStream, endpointLocationAndMember.c_str());
862   }
863   if(m_clusterCreateTimeHasBeenSet)
864   {
865       oStream << location << ".ClusterCreateTime=" << StringUtils::URLEncode(m_clusterCreateTime.ToGmtString(DateFormat::ISO_8601).c_str()) << "&";
866   }
867   if(m_automatedSnapshotRetentionPeriodHasBeenSet)
868   {
869       oStream << location << ".AutomatedSnapshotRetentionPeriod=" << m_automatedSnapshotRetentionPeriod << "&";
870   }
871   if(m_manualSnapshotRetentionPeriodHasBeenSet)
872   {
873       oStream << location << ".ManualSnapshotRetentionPeriod=" << m_manualSnapshotRetentionPeriod << "&";
874   }
875   if(m_clusterSecurityGroupsHasBeenSet)
876   {
877       unsigned clusterSecurityGroupsIdx = 1;
878       for(auto& item : m_clusterSecurityGroups)
879       {
880         Aws::StringStream clusterSecurityGroupsSs;
881         clusterSecurityGroupsSs << location <<  ".ClusterSecurityGroup." << clusterSecurityGroupsIdx++;
882         item.OutputToStream(oStream, clusterSecurityGroupsSs.str().c_str());
883       }
884   }
885   if(m_vpcSecurityGroupsHasBeenSet)
886   {
887       unsigned vpcSecurityGroupsIdx = 1;
888       for(auto& item : m_vpcSecurityGroups)
889       {
890         Aws::StringStream vpcSecurityGroupsSs;
891         vpcSecurityGroupsSs << location <<  ".VpcSecurityGroup." << vpcSecurityGroupsIdx++;
892         item.OutputToStream(oStream, vpcSecurityGroupsSs.str().c_str());
893       }
894   }
895   if(m_clusterParameterGroupsHasBeenSet)
896   {
897       unsigned clusterParameterGroupsIdx = 1;
898       for(auto& item : m_clusterParameterGroups)
899       {
900         Aws::StringStream clusterParameterGroupsSs;
901         clusterParameterGroupsSs << location <<  ".ClusterParameterGroup." << clusterParameterGroupsIdx++;
902         item.OutputToStream(oStream, clusterParameterGroupsSs.str().c_str());
903       }
904   }
905   if(m_clusterSubnetGroupNameHasBeenSet)
906   {
907       oStream << location << ".ClusterSubnetGroupName=" << StringUtils::URLEncode(m_clusterSubnetGroupName.c_str()) << "&";
908   }
909   if(m_vpcIdHasBeenSet)
910   {
911       oStream << location << ".VpcId=" << StringUtils::URLEncode(m_vpcId.c_str()) << "&";
912   }
913   if(m_availabilityZoneHasBeenSet)
914   {
915       oStream << location << ".AvailabilityZone=" << StringUtils::URLEncode(m_availabilityZone.c_str()) << "&";
916   }
917   if(m_preferredMaintenanceWindowHasBeenSet)
918   {
919       oStream << location << ".PreferredMaintenanceWindow=" << StringUtils::URLEncode(m_preferredMaintenanceWindow.c_str()) << "&";
920   }
921   if(m_pendingModifiedValuesHasBeenSet)
922   {
923       Aws::String pendingModifiedValuesLocationAndMember(location);
924       pendingModifiedValuesLocationAndMember += ".PendingModifiedValues";
925       m_pendingModifiedValues.OutputToStream(oStream, pendingModifiedValuesLocationAndMember.c_str());
926   }
927   if(m_clusterVersionHasBeenSet)
928   {
929       oStream << location << ".ClusterVersion=" << StringUtils::URLEncode(m_clusterVersion.c_str()) << "&";
930   }
931   if(m_allowVersionUpgradeHasBeenSet)
932   {
933       oStream << location << ".AllowVersionUpgrade=" << std::boolalpha << m_allowVersionUpgrade << "&";
934   }
935   if(m_numberOfNodesHasBeenSet)
936   {
937       oStream << location << ".NumberOfNodes=" << m_numberOfNodes << "&";
938   }
939   if(m_publiclyAccessibleHasBeenSet)
940   {
941       oStream << location << ".PubliclyAccessible=" << std::boolalpha << m_publiclyAccessible << "&";
942   }
943   if(m_encryptedHasBeenSet)
944   {
945       oStream << location << ".Encrypted=" << std::boolalpha << m_encrypted << "&";
946   }
947   if(m_restoreStatusHasBeenSet)
948   {
949       Aws::String restoreStatusLocationAndMember(location);
950       restoreStatusLocationAndMember += ".RestoreStatus";
951       m_restoreStatus.OutputToStream(oStream, restoreStatusLocationAndMember.c_str());
952   }
953   if(m_dataTransferProgressHasBeenSet)
954   {
955       Aws::String dataTransferProgressLocationAndMember(location);
956       dataTransferProgressLocationAndMember += ".DataTransferProgress";
957       m_dataTransferProgress.OutputToStream(oStream, dataTransferProgressLocationAndMember.c_str());
958   }
959   if(m_hsmStatusHasBeenSet)
960   {
961       Aws::String hsmStatusLocationAndMember(location);
962       hsmStatusLocationAndMember += ".HsmStatus";
963       m_hsmStatus.OutputToStream(oStream, hsmStatusLocationAndMember.c_str());
964   }
965   if(m_clusterSnapshotCopyStatusHasBeenSet)
966   {
967       Aws::String clusterSnapshotCopyStatusLocationAndMember(location);
968       clusterSnapshotCopyStatusLocationAndMember += ".ClusterSnapshotCopyStatus";
969       m_clusterSnapshotCopyStatus.OutputToStream(oStream, clusterSnapshotCopyStatusLocationAndMember.c_str());
970   }
971   if(m_clusterPublicKeyHasBeenSet)
972   {
973       oStream << location << ".ClusterPublicKey=" << StringUtils::URLEncode(m_clusterPublicKey.c_str()) << "&";
974   }
975   if(m_clusterNodesHasBeenSet)
976   {
977       unsigned clusterNodesIdx = 1;
978       for(auto& item : m_clusterNodes)
979       {
980         Aws::StringStream clusterNodesSs;
981         clusterNodesSs << location <<  ".ClusterNodes.member." << clusterNodesIdx++;
982         item.OutputToStream(oStream, clusterNodesSs.str().c_str());
983       }
984   }
985   if(m_elasticIpStatusHasBeenSet)
986   {
987       Aws::String elasticIpStatusLocationAndMember(location);
988       elasticIpStatusLocationAndMember += ".ElasticIpStatus";
989       m_elasticIpStatus.OutputToStream(oStream, elasticIpStatusLocationAndMember.c_str());
990   }
991   if(m_clusterRevisionNumberHasBeenSet)
992   {
993       oStream << location << ".ClusterRevisionNumber=" << StringUtils::URLEncode(m_clusterRevisionNumber.c_str()) << "&";
994   }
995   if(m_tagsHasBeenSet)
996   {
997       unsigned tagsIdx = 1;
998       for(auto& item : m_tags)
999       {
1000         Aws::StringStream tagsSs;
1001         tagsSs << location <<  ".Tag." << tagsIdx++;
1002         item.OutputToStream(oStream, tagsSs.str().c_str());
1003       }
1004   }
1005   if(m_kmsKeyIdHasBeenSet)
1006   {
1007       oStream << location << ".KmsKeyId=" << StringUtils::URLEncode(m_kmsKeyId.c_str()) << "&";
1008   }
1009   if(m_enhancedVpcRoutingHasBeenSet)
1010   {
1011       oStream << location << ".EnhancedVpcRouting=" << std::boolalpha << m_enhancedVpcRouting << "&";
1012   }
1013   if(m_iamRolesHasBeenSet)
1014   {
1015       unsigned iamRolesIdx = 1;
1016       for(auto& item : m_iamRoles)
1017       {
1018         Aws::StringStream iamRolesSs;
1019         iamRolesSs << location <<  ".ClusterIamRole." << iamRolesIdx++;
1020         item.OutputToStream(oStream, iamRolesSs.str().c_str());
1021       }
1022   }
1023   if(m_pendingActionsHasBeenSet)
1024   {
1025       unsigned pendingActionsIdx = 1;
1026       for(auto& item : m_pendingActions)
1027       {
1028         oStream << location << ".PendingActions.member." << pendingActionsIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
1029       }
1030   }
1031   if(m_maintenanceTrackNameHasBeenSet)
1032   {
1033       oStream << location << ".MaintenanceTrackName=" << StringUtils::URLEncode(m_maintenanceTrackName.c_str()) << "&";
1034   }
1035   if(m_elasticResizeNumberOfNodeOptionsHasBeenSet)
1036   {
1037       oStream << location << ".ElasticResizeNumberOfNodeOptions=" << StringUtils::URLEncode(m_elasticResizeNumberOfNodeOptions.c_str()) << "&";
1038   }
1039   if(m_deferredMaintenanceWindowsHasBeenSet)
1040   {
1041       unsigned deferredMaintenanceWindowsIdx = 1;
1042       for(auto& item : m_deferredMaintenanceWindows)
1043       {
1044         Aws::StringStream deferredMaintenanceWindowsSs;
1045         deferredMaintenanceWindowsSs << location <<  ".DeferredMaintenanceWindow." << deferredMaintenanceWindowsIdx++;
1046         item.OutputToStream(oStream, deferredMaintenanceWindowsSs.str().c_str());
1047       }
1048   }
1049   if(m_snapshotScheduleIdentifierHasBeenSet)
1050   {
1051       oStream << location << ".SnapshotScheduleIdentifier=" << StringUtils::URLEncode(m_snapshotScheduleIdentifier.c_str()) << "&";
1052   }
1053   if(m_snapshotScheduleStateHasBeenSet)
1054   {
1055       oStream << location << ".SnapshotScheduleState=" << ScheduleStateMapper::GetNameForScheduleState(m_snapshotScheduleState) << "&";
1056   }
1057   if(m_expectedNextSnapshotScheduleTimeHasBeenSet)
1058   {
1059       oStream << location << ".ExpectedNextSnapshotScheduleTime=" << StringUtils::URLEncode(m_expectedNextSnapshotScheduleTime.ToGmtString(DateFormat::ISO_8601).c_str()) << "&";
1060   }
1061   if(m_expectedNextSnapshotScheduleTimeStatusHasBeenSet)
1062   {
1063       oStream << location << ".ExpectedNextSnapshotScheduleTimeStatus=" << StringUtils::URLEncode(m_expectedNextSnapshotScheduleTimeStatus.c_str()) << "&";
1064   }
1065   if(m_nextMaintenanceWindowStartTimeHasBeenSet)
1066   {
1067       oStream << location << ".NextMaintenanceWindowStartTime=" << StringUtils::URLEncode(m_nextMaintenanceWindowStartTime.ToGmtString(DateFormat::ISO_8601).c_str()) << "&";
1068   }
1069   if(m_resizeInfoHasBeenSet)
1070   {
1071       Aws::String resizeInfoLocationAndMember(location);
1072       resizeInfoLocationAndMember += ".ResizeInfo";
1073       m_resizeInfo.OutputToStream(oStream, resizeInfoLocationAndMember.c_str());
1074   }
1075   if(m_availabilityZoneRelocationStatusHasBeenSet)
1076   {
1077       oStream << location << ".AvailabilityZoneRelocationStatus=" << StringUtils::URLEncode(m_availabilityZoneRelocationStatus.c_str()) << "&";
1078   }
1079   if(m_clusterNamespaceArnHasBeenSet)
1080   {
1081       oStream << location << ".ClusterNamespaceArn=" << StringUtils::URLEncode(m_clusterNamespaceArn.c_str()) << "&";
1082   }
1083   if(m_totalStorageCapacityInMegaBytesHasBeenSet)
1084   {
1085       oStream << location << ".TotalStorageCapacityInMegaBytes=" << m_totalStorageCapacityInMegaBytes << "&";
1086   }
1087   if(m_aquaConfigurationHasBeenSet)
1088   {
1089       Aws::String aquaConfigurationLocationAndMember(location);
1090       aquaConfigurationLocationAndMember += ".AquaConfiguration";
1091       m_aquaConfiguration.OutputToStream(oStream, aquaConfigurationLocationAndMember.c_str());
1092   }
1093 }
1094 
1095 } // namespace Model
1096 } // namespace Redshift
1097 } // namespace Aws
1098