rusoto_neptune/
generated.rs

1// =================================================================
2//
3//                           * WARNING *
4//
5//                    This file is generated!
6//
7//  Changes made to this file will be overwritten. If changes are
8//  required to the generated code, the service_crategen project
9//  must be updated to generate the changes.
10//
11// =================================================================
12
13use std::error::Error;
14use std::fmt;
15
16use async_trait::async_trait;
17use rusoto_core::credential::ProvideAwsCredentials;
18use rusoto_core::region;
19use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
20use rusoto_core::{Client, RusotoError};
21
22use rusoto_core::param::{Params, ServiceParams};
23use rusoto_core::proto::xml::error::*;
24use rusoto_core::proto::xml::util::{
25    self as xml_util, deserialize_elements, find_start_element, skip_tree,
26};
27use rusoto_core::proto::xml::util::{Next, Peek, XmlParseError, XmlResponse};
28use rusoto_core::request::HttpResponse;
29use rusoto_core::signature::SignedRequest;
30#[cfg(feature = "deserialize_structs")]
31use serde::Deserialize;
32#[cfg(feature = "serialize_structs")]
33use serde::Serialize;
34use serde_urlencoded;
35use std::str::FromStr;
36use xml::EventReader;
37
38impl NeptuneClient {
39    fn new_params(&self, operation_name: &str) -> Params {
40        let mut params = Params::new();
41
42        params.put("Action", operation_name);
43        params.put("Version", "2014-10-31");
44
45        params
46    }
47
48    async fn sign_and_dispatch<E>(
49        &self,
50        request: SignedRequest,
51        from_response: fn(BufferedHttpResponse) -> RusotoError<E>,
52    ) -> Result<HttpResponse, RusotoError<E>> {
53        let mut response = self.client.sign_and_dispatch(request).await?;
54        if !response.status.is_success() {
55            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
56            return Err(from_response(response));
57        }
58
59        Ok(response)
60    }
61}
62
63#[derive(Clone, Debug, Default, PartialEq)]
64#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
65pub struct AddRoleToDBClusterMessage {
66    /// <p>The name of the DB cluster to associate the IAM role with.</p>
67    pub db_cluster_identifier: String,
68    /// <p>The Amazon Resource Name (ARN) of the IAM role to associate with the Neptune DB cluster, for example <code>arn:aws:iam::123456789012:role/NeptuneAccessRole</code>.</p>
69    pub role_arn: String,
70}
71
72/// Serialize `AddRoleToDBClusterMessage` contents to a `SignedRequest`.
73struct AddRoleToDBClusterMessageSerializer;
74impl AddRoleToDBClusterMessageSerializer {
75    fn serialize(params: &mut Params, name: &str, obj: &AddRoleToDBClusterMessage) {
76        let mut prefix = name.to_string();
77        if prefix != "" {
78            prefix.push_str(".");
79        }
80
81        params.put(
82            &format!("{}{}", prefix, "DBClusterIdentifier"),
83            &obj.db_cluster_identifier,
84        );
85        params.put(&format!("{}{}", prefix, "RoleArn"), &obj.role_arn);
86    }
87}
88
89#[derive(Clone, Debug, Default, PartialEq)]
90#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
91pub struct AddSourceIdentifierToSubscriptionMessage {
92    /// <p><p>The identifier of the event source to be added.</p> <p>Constraints:</p> <ul> <li> <p>If the source type is a DB instance, then a <code>DBInstanceIdentifier</code> must be supplied.</p> </li> <li> <p>If the source type is a DB security group, a <code>DBSecurityGroupName</code> must be supplied.</p> </li> <li> <p>If the source type is a DB parameter group, a <code>DBParameterGroupName</code> must be supplied.</p> </li> <li> <p>If the source type is a DB snapshot, a <code>DBSnapshotIdentifier</code> must be supplied.</p> </li> </ul></p>
93    pub source_identifier: String,
94    /// <p>The name of the event notification subscription you want to add a source identifier to.</p>
95    pub subscription_name: String,
96}
97
98/// Serialize `AddSourceIdentifierToSubscriptionMessage` contents to a `SignedRequest`.
99struct AddSourceIdentifierToSubscriptionMessageSerializer;
100impl AddSourceIdentifierToSubscriptionMessageSerializer {
101    fn serialize(params: &mut Params, name: &str, obj: &AddSourceIdentifierToSubscriptionMessage) {
102        let mut prefix = name.to_string();
103        if prefix != "" {
104            prefix.push_str(".");
105        }
106
107        params.put(
108            &format!("{}{}", prefix, "SourceIdentifier"),
109            &obj.source_identifier,
110        );
111        params.put(
112            &format!("{}{}", prefix, "SubscriptionName"),
113            &obj.subscription_name,
114        );
115    }
116}
117
118#[derive(Clone, Debug, Default, PartialEq)]
119#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
120pub struct AddSourceIdentifierToSubscriptionResult {
121    pub event_subscription: Option<EventSubscription>,
122}
123
124#[allow(dead_code)]
125struct AddSourceIdentifierToSubscriptionResultDeserializer;
126impl AddSourceIdentifierToSubscriptionResultDeserializer {
127    #[allow(dead_code, unused_variables)]
128    fn deserialize<T: Peek + Next>(
129        tag_name: &str,
130        stack: &mut T,
131    ) -> Result<AddSourceIdentifierToSubscriptionResult, XmlParseError> {
132        deserialize_elements::<_, AddSourceIdentifierToSubscriptionResult, _>(
133            tag_name,
134            stack,
135            |name, stack, obj| {
136                match name {
137                    "EventSubscription" => {
138                        obj.event_subscription = Some(EventSubscriptionDeserializer::deserialize(
139                            "EventSubscription",
140                            stack,
141                        )?);
142                    }
143                    _ => skip_tree(stack),
144                }
145                Ok(())
146            },
147        )
148    }
149}
150#[derive(Clone, Debug, Default, PartialEq)]
151#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
152pub struct AddTagsToResourceMessage {
153    /// <p>The Amazon Neptune resource that the tags are added to. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see <a href="https://docs.aws.amazon.com/neptune/latest/UserGuide/tagging.ARN.html#tagging.ARN.Constructing"> Constructing an Amazon Resource Name (ARN)</a>.</p>
154    pub resource_name: String,
155    /// <p>The tags to be assigned to the Amazon Neptune resource.</p>
156    pub tags: Vec<Tag>,
157}
158
159/// Serialize `AddTagsToResourceMessage` contents to a `SignedRequest`.
160struct AddTagsToResourceMessageSerializer;
161impl AddTagsToResourceMessageSerializer {
162    fn serialize(params: &mut Params, name: &str, obj: &AddTagsToResourceMessage) {
163        let mut prefix = name.to_string();
164        if prefix != "" {
165            prefix.push_str(".");
166        }
167
168        params.put(&format!("{}{}", prefix, "ResourceName"), &obj.resource_name);
169        TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), &obj.tags);
170    }
171}
172
173#[allow(dead_code)]
174struct ApplyMethodDeserializer;
175impl ApplyMethodDeserializer {
176    #[allow(dead_code, unused_variables)]
177    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
178        xml_util::deserialize_primitive(tag_name, stack, Ok)
179    }
180}
181#[derive(Clone, Debug, Default, PartialEq)]
182#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
183pub struct ApplyPendingMaintenanceActionMessage {
184    /// <p>The pending maintenance action to apply to this resource.</p> <p>Valid values: <code>system-update</code>, <code>db-upgrade</code> </p>
185    pub apply_action: String,
186    /// <p><p>A value that specifies the type of opt-in request, or undoes an opt-in request. An opt-in request of type <code>immediate</code> can&#39;t be undone.</p> <p>Valid values:</p> <ul> <li> <p> <code>immediate</code> - Apply the maintenance action immediately.</p> </li> <li> <p> <code>next-maintenance</code> - Apply the maintenance action during the next maintenance window for the resource.</p> </li> <li> <p> <code>undo-opt-in</code> - Cancel any existing <code>next-maintenance</code> opt-in requests.</p> </li> </ul></p>
187    pub opt_in_type: String,
188    /// <p>The Amazon Resource Name (ARN) of the resource that the pending maintenance action applies to. For information about creating an ARN, see <a href="https://docs.aws.amazon.com/neptune/latest/UserGuide/tagging.ARN.html#tagging.ARN.Constructing"> Constructing an Amazon Resource Name (ARN)</a>.</p>
189    pub resource_identifier: String,
190}
191
192/// Serialize `ApplyPendingMaintenanceActionMessage` contents to a `SignedRequest`.
193struct ApplyPendingMaintenanceActionMessageSerializer;
194impl ApplyPendingMaintenanceActionMessageSerializer {
195    fn serialize(params: &mut Params, name: &str, obj: &ApplyPendingMaintenanceActionMessage) {
196        let mut prefix = name.to_string();
197        if prefix != "" {
198            prefix.push_str(".");
199        }
200
201        params.put(&format!("{}{}", prefix, "ApplyAction"), &obj.apply_action);
202        params.put(&format!("{}{}", prefix, "OptInType"), &obj.opt_in_type);
203        params.put(
204            &format!("{}{}", prefix, "ResourceIdentifier"),
205            &obj.resource_identifier,
206        );
207    }
208}
209
210#[derive(Clone, Debug, Default, PartialEq)]
211#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
212pub struct ApplyPendingMaintenanceActionResult {
213    pub resource_pending_maintenance_actions: Option<ResourcePendingMaintenanceActions>,
214}
215
216#[allow(dead_code)]
217struct ApplyPendingMaintenanceActionResultDeserializer;
218impl ApplyPendingMaintenanceActionResultDeserializer {
219    #[allow(dead_code, unused_variables)]
220    fn deserialize<T: Peek + Next>(
221        tag_name: &str,
222        stack: &mut T,
223    ) -> Result<ApplyPendingMaintenanceActionResult, XmlParseError> {
224        deserialize_elements::<_, ApplyPendingMaintenanceActionResult, _>(
225            tag_name,
226            stack,
227            |name, stack, obj| {
228                match name {
229                    "ResourcePendingMaintenanceActions" => {
230                        obj.resource_pending_maintenance_actions =
231                            Some(ResourcePendingMaintenanceActionsDeserializer::deserialize(
232                                "ResourcePendingMaintenanceActions",
233                                stack,
234                            )?);
235                    }
236                    _ => skip_tree(stack),
237                }
238                Ok(())
239            },
240        )
241    }
242}
243#[allow(dead_code)]
244struct AttributeValueListDeserializer;
245impl AttributeValueListDeserializer {
246    #[allow(dead_code, unused_variables)]
247    fn deserialize<T: Peek + Next>(
248        tag_name: &str,
249        stack: &mut T,
250    ) -> Result<Vec<String>, XmlParseError> {
251        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
252            if name == "AttributeValue" {
253                obj.push(StringDeserializer::deserialize("AttributeValue", stack)?);
254            } else {
255                skip_tree(stack);
256            }
257            Ok(())
258        })
259    }
260}
261
262/// Serialize `AttributeValueList` contents to a `SignedRequest`.
263struct AttributeValueListSerializer;
264impl AttributeValueListSerializer {
265    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
266        for (index, obj) in obj.iter().enumerate() {
267            let key = format!("{}.member.{}", name, index + 1);
268            params.put(&key, &obj);
269        }
270    }
271}
272
273/// <p>Specifies an Availability Zone.</p>
274#[derive(Clone, Debug, Default, PartialEq)]
275#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
276pub struct AvailabilityZone {
277    /// <p>The name of the availability zone.</p>
278    pub name: Option<String>,
279}
280
281#[allow(dead_code)]
282struct AvailabilityZoneDeserializer;
283impl AvailabilityZoneDeserializer {
284    #[allow(dead_code, unused_variables)]
285    fn deserialize<T: Peek + Next>(
286        tag_name: &str,
287        stack: &mut T,
288    ) -> Result<AvailabilityZone, XmlParseError> {
289        deserialize_elements::<_, AvailabilityZone, _>(tag_name, stack, |name, stack, obj| {
290            match name {
291                "Name" => {
292                    obj.name = Some(StringDeserializer::deserialize("Name", stack)?);
293                }
294                _ => skip_tree(stack),
295            }
296            Ok(())
297        })
298    }
299}
300#[allow(dead_code)]
301struct AvailabilityZoneListDeserializer;
302impl AvailabilityZoneListDeserializer {
303    #[allow(dead_code, unused_variables)]
304    fn deserialize<T: Peek + Next>(
305        tag_name: &str,
306        stack: &mut T,
307    ) -> Result<Vec<AvailabilityZone>, XmlParseError> {
308        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
309            if name == "AvailabilityZone" {
310                obj.push(AvailabilityZoneDeserializer::deserialize(
311                    "AvailabilityZone",
312                    stack,
313                )?);
314            } else {
315                skip_tree(stack);
316            }
317            Ok(())
318        })
319    }
320}
321#[allow(dead_code)]
322struct AvailabilityZonesDeserializer;
323impl AvailabilityZonesDeserializer {
324    #[allow(dead_code, unused_variables)]
325    fn deserialize<T: Peek + Next>(
326        tag_name: &str,
327        stack: &mut T,
328    ) -> Result<Vec<String>, XmlParseError> {
329        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
330            if name == "AvailabilityZone" {
331                obj.push(StringDeserializer::deserialize("AvailabilityZone", stack)?);
332            } else {
333                skip_tree(stack);
334            }
335            Ok(())
336        })
337    }
338}
339
340/// Serialize `AvailabilityZones` contents to a `SignedRequest`.
341struct AvailabilityZonesSerializer;
342impl AvailabilityZonesSerializer {
343    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
344        for (index, obj) in obj.iter().enumerate() {
345            let key = format!("{}.member.{}", name, index + 1);
346            params.put(&key, &obj);
347        }
348    }
349}
350
351#[allow(dead_code)]
352struct BooleanDeserializer;
353impl BooleanDeserializer {
354    #[allow(dead_code, unused_variables)]
355    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
356        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
357    }
358}
359#[allow(dead_code)]
360struct BooleanOptionalDeserializer;
361impl BooleanOptionalDeserializer {
362    #[allow(dead_code, unused_variables)]
363    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
364        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
365    }
366}
367/// <p>Specifies a character set.</p>
368#[derive(Clone, Debug, Default, PartialEq)]
369#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
370pub struct CharacterSet {
371    /// <p>The description of the character set.</p>
372    pub character_set_description: Option<String>,
373    /// <p>The name of the character set.</p>
374    pub character_set_name: Option<String>,
375}
376
377#[allow(dead_code)]
378struct CharacterSetDeserializer;
379impl CharacterSetDeserializer {
380    #[allow(dead_code, unused_variables)]
381    fn deserialize<T: Peek + Next>(
382        tag_name: &str,
383        stack: &mut T,
384    ) -> Result<CharacterSet, XmlParseError> {
385        deserialize_elements::<_, CharacterSet, _>(tag_name, stack, |name, stack, obj| {
386            match name {
387                "CharacterSetDescription" => {
388                    obj.character_set_description = Some(StringDeserializer::deserialize(
389                        "CharacterSetDescription",
390                        stack,
391                    )?);
392                }
393                "CharacterSetName" => {
394                    obj.character_set_name =
395                        Some(StringDeserializer::deserialize("CharacterSetName", stack)?);
396                }
397                _ => skip_tree(stack),
398            }
399            Ok(())
400        })
401    }
402}
403/// <p>The configuration setting for the log types to be enabled for export to CloudWatch Logs for a specific DB instance or DB cluster.</p> <p>The <code>EnableLogTypes</code> and <code>DisableLogTypes</code> arrays determine which logs will be exported (or not exported) to CloudWatch Logs.</p>
404#[derive(Clone, Debug, Default, PartialEq)]
405#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
406pub struct CloudwatchLogsExportConfiguration {
407    /// <p>The list of log types to disable.</p>
408    pub disable_log_types: Option<Vec<String>>,
409    /// <p>The list of log types to enable.</p>
410    pub enable_log_types: Option<Vec<String>>,
411}
412
413/// Serialize `CloudwatchLogsExportConfiguration` contents to a `SignedRequest`.
414struct CloudwatchLogsExportConfigurationSerializer;
415impl CloudwatchLogsExportConfigurationSerializer {
416    fn serialize(params: &mut Params, name: &str, obj: &CloudwatchLogsExportConfiguration) {
417        let mut prefix = name.to_string();
418        if prefix != "" {
419            prefix.push_str(".");
420        }
421
422        if let Some(ref field_value) = obj.disable_log_types {
423            LogTypeListSerializer::serialize(
424                params,
425                &format!("{}{}", prefix, "DisableLogTypes"),
426                field_value,
427            );
428        }
429        if let Some(ref field_value) = obj.enable_log_types {
430            LogTypeListSerializer::serialize(
431                params,
432                &format!("{}{}", prefix, "EnableLogTypes"),
433                field_value,
434            );
435        }
436    }
437}
438
439#[derive(Clone, Debug, Default, PartialEq)]
440#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
441pub struct CopyDBClusterParameterGroupMessage {
442    /// <p><p>The identifier or Amazon Resource Name (ARN) for the source DB cluster parameter group. For information about creating an ARN, see <a href="https://docs.aws.amazon.com/neptune/latest/UserGuide/tagging.ARN.html#tagging.ARN.Constructing"> Constructing an Amazon Resource Name (ARN)</a>.</p> <p>Constraints:</p> <ul> <li> <p>Must specify a valid DB cluster parameter group.</p> </li> <li> <p>If the source DB cluster parameter group is in the same AWS Region as the copy, specify a valid DB parameter group identifier, for example <code>my-db-cluster-param-group</code>, or a valid ARN.</p> </li> <li> <p>If the source DB parameter group is in a different AWS Region than the copy, specify a valid DB cluster parameter group ARN, for example <code>arn:aws:rds:us-east-1:123456789012:cluster-pg:custom-cluster-group1</code>.</p> </li> </ul></p>
443    pub source_db_cluster_parameter_group_identifier: String,
444    /// <p>The tags to be assigned to the copied DB cluster parameter group.</p>
445    pub tags: Option<Vec<Tag>>,
446    /// <p>A description for the copied DB cluster parameter group.</p>
447    pub target_db_cluster_parameter_group_description: String,
448    /// <p>The identifier for the copied DB cluster parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Cannot be null, empty, or blank</p> </li> <li> <p>Must contain from 1 to 255 letters, numbers, or hyphens</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul> <p>Example: <code>my-cluster-param-group1</code> </p>
449    pub target_db_cluster_parameter_group_identifier: String,
450}
451
452/// Serialize `CopyDBClusterParameterGroupMessage` contents to a `SignedRequest`.
453struct CopyDBClusterParameterGroupMessageSerializer;
454impl CopyDBClusterParameterGroupMessageSerializer {
455    fn serialize(params: &mut Params, name: &str, obj: &CopyDBClusterParameterGroupMessage) {
456        let mut prefix = name.to_string();
457        if prefix != "" {
458            prefix.push_str(".");
459        }
460
461        params.put(
462            &format!("{}{}", prefix, "SourceDBClusterParameterGroupIdentifier"),
463            &obj.source_db_cluster_parameter_group_identifier,
464        );
465        if let Some(ref field_value) = obj.tags {
466            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
467        }
468        params.put(
469            &format!("{}{}", prefix, "TargetDBClusterParameterGroupDescription"),
470            &obj.target_db_cluster_parameter_group_description,
471        );
472        params.put(
473            &format!("{}{}", prefix, "TargetDBClusterParameterGroupIdentifier"),
474            &obj.target_db_cluster_parameter_group_identifier,
475        );
476    }
477}
478
479#[derive(Clone, Debug, Default, PartialEq)]
480#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
481pub struct CopyDBClusterParameterGroupResult {
482    pub db_cluster_parameter_group: Option<DBClusterParameterGroup>,
483}
484
485#[allow(dead_code)]
486struct CopyDBClusterParameterGroupResultDeserializer;
487impl CopyDBClusterParameterGroupResultDeserializer {
488    #[allow(dead_code, unused_variables)]
489    fn deserialize<T: Peek + Next>(
490        tag_name: &str,
491        stack: &mut T,
492    ) -> Result<CopyDBClusterParameterGroupResult, XmlParseError> {
493        deserialize_elements::<_, CopyDBClusterParameterGroupResult, _>(
494            tag_name,
495            stack,
496            |name, stack, obj| {
497                match name {
498                    "DBClusterParameterGroup" => {
499                        obj.db_cluster_parameter_group =
500                            Some(DBClusterParameterGroupDeserializer::deserialize(
501                                "DBClusterParameterGroup",
502                                stack,
503                            )?);
504                    }
505                    _ => skip_tree(stack),
506                }
507                Ok(())
508            },
509        )
510    }
511}
512#[derive(Clone, Debug, Default, PartialEq)]
513#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
514pub struct CopyDBClusterSnapshotMessage {
515    /// <p>True to copy all tags from the source DB cluster snapshot to the target DB cluster snapshot, and otherwise false. The default is false.</p>
516    pub copy_tags: Option<bool>,
517    /// <p>The AWS AWS KMS key ID for an encrypted DB cluster snapshot. The KMS key ID is the Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for the KMS encryption key.</p> <p>If you copy an encrypted DB cluster snapshot from your AWS account, you can specify a value for <code>KmsKeyId</code> to encrypt the copy with a new KMS encryption key. If you don't specify a value for <code>KmsKeyId</code>, then the copy of the DB cluster snapshot is encrypted with the same KMS key as the source DB cluster snapshot.</p> <p>If you copy an encrypted DB cluster snapshot that is shared from another AWS account, then you must specify a value for <code>KmsKeyId</code>.</p> <p> KMS encryption keys are specific to the AWS Region that they are created in, and you can't use encryption keys from one AWS Region in another AWS Region.</p> <p>You cannot encrypt an unencrypted DB cluster snapshot when you copy it. If you try to copy an unencrypted DB cluster snapshot and specify a value for the KmsKeyId parameter, an error is returned.</p>
518    pub kms_key_id: Option<String>,
519    /// <p>Not currently supported.</p>
520    pub pre_signed_url: Option<String>,
521    /// <p>The identifier of the DB cluster snapshot to copy. This parameter is not case-sensitive.</p> <p>You can't copy from one AWS Region to another.</p> <p>Constraints:</p> <ul> <li> <p>Must specify a valid system snapshot in the "available" state.</p> </li> <li> <p>Specify a valid DB snapshot identifier.</p> </li> </ul> <p>Example: <code>my-cluster-snapshot1</code> </p>
522    pub source_db_cluster_snapshot_identifier: String,
523    /// <p>The tags to assign to the new DB cluster snapshot copy.</p>
524    pub tags: Option<Vec<Tag>>,
525    /// <p>The identifier of the new DB cluster snapshot to create from the source DB cluster snapshot. This parameter is not case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>my-cluster-snapshot2</code> </p>
526    pub target_db_cluster_snapshot_identifier: String,
527}
528
529/// Serialize `CopyDBClusterSnapshotMessage` contents to a `SignedRequest`.
530struct CopyDBClusterSnapshotMessageSerializer;
531impl CopyDBClusterSnapshotMessageSerializer {
532    fn serialize(params: &mut Params, name: &str, obj: &CopyDBClusterSnapshotMessage) {
533        let mut prefix = name.to_string();
534        if prefix != "" {
535            prefix.push_str(".");
536        }
537
538        if let Some(ref field_value) = obj.copy_tags {
539            params.put(&format!("{}{}", prefix, "CopyTags"), &field_value);
540        }
541        if let Some(ref field_value) = obj.kms_key_id {
542            params.put(&format!("{}{}", prefix, "KmsKeyId"), &field_value);
543        }
544        if let Some(ref field_value) = obj.pre_signed_url {
545            params.put(&format!("{}{}", prefix, "PreSignedUrl"), &field_value);
546        }
547        params.put(
548            &format!("{}{}", prefix, "SourceDBClusterSnapshotIdentifier"),
549            &obj.source_db_cluster_snapshot_identifier,
550        );
551        if let Some(ref field_value) = obj.tags {
552            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
553        }
554        params.put(
555            &format!("{}{}", prefix, "TargetDBClusterSnapshotIdentifier"),
556            &obj.target_db_cluster_snapshot_identifier,
557        );
558    }
559}
560
561#[derive(Clone, Debug, Default, PartialEq)]
562#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
563pub struct CopyDBClusterSnapshotResult {
564    pub db_cluster_snapshot: Option<DBClusterSnapshot>,
565}
566
567#[allow(dead_code)]
568struct CopyDBClusterSnapshotResultDeserializer;
569impl CopyDBClusterSnapshotResultDeserializer {
570    #[allow(dead_code, unused_variables)]
571    fn deserialize<T: Peek + Next>(
572        tag_name: &str,
573        stack: &mut T,
574    ) -> Result<CopyDBClusterSnapshotResult, XmlParseError> {
575        deserialize_elements::<_, CopyDBClusterSnapshotResult, _>(
576            tag_name,
577            stack,
578            |name, stack, obj| {
579                match name {
580                    "DBClusterSnapshot" => {
581                        obj.db_cluster_snapshot = Some(DBClusterSnapshotDeserializer::deserialize(
582                            "DBClusterSnapshot",
583                            stack,
584                        )?);
585                    }
586                    _ => skip_tree(stack),
587                }
588                Ok(())
589            },
590        )
591    }
592}
593#[derive(Clone, Debug, Default, PartialEq)]
594#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
595pub struct CopyDBParameterGroupMessage {
596    /// <p><p>The identifier or ARN for the source DB parameter group. For information about creating an ARN, see <a href="https://docs.aws.amazon.com/neptune/latest/UserGuide/tagging.ARN.html#tagging.ARN.Constructing"> Constructing an Amazon Resource Name (ARN)</a>.</p> <p>Constraints:</p> <ul> <li> <p>Must specify a valid DB parameter group.</p> </li> <li> <p>Must specify a valid DB parameter group identifier, for example <code>my-db-param-group</code>, or a valid ARN.</p> </li> </ul></p>
597    pub source_db_parameter_group_identifier: String,
598    /// <p>The tags to be assigned to the copied DB parameter group.</p>
599    pub tags: Option<Vec<Tag>>,
600    /// <p>A description for the copied DB parameter group.</p>
601    pub target_db_parameter_group_description: String,
602    /// <p>The identifier for the copied DB parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Cannot be null, empty, or blank.</p> </li> <li> <p>Must contain from 1 to 255 letters, numbers, or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>my-db-parameter-group</code> </p>
603    pub target_db_parameter_group_identifier: String,
604}
605
606/// Serialize `CopyDBParameterGroupMessage` contents to a `SignedRequest`.
607struct CopyDBParameterGroupMessageSerializer;
608impl CopyDBParameterGroupMessageSerializer {
609    fn serialize(params: &mut Params, name: &str, obj: &CopyDBParameterGroupMessage) {
610        let mut prefix = name.to_string();
611        if prefix != "" {
612            prefix.push_str(".");
613        }
614
615        params.put(
616            &format!("{}{}", prefix, "SourceDBParameterGroupIdentifier"),
617            &obj.source_db_parameter_group_identifier,
618        );
619        if let Some(ref field_value) = obj.tags {
620            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
621        }
622        params.put(
623            &format!("{}{}", prefix, "TargetDBParameterGroupDescription"),
624            &obj.target_db_parameter_group_description,
625        );
626        params.put(
627            &format!("{}{}", prefix, "TargetDBParameterGroupIdentifier"),
628            &obj.target_db_parameter_group_identifier,
629        );
630    }
631}
632
633#[derive(Clone, Debug, Default, PartialEq)]
634#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
635pub struct CopyDBParameterGroupResult {
636    pub db_parameter_group: Option<DBParameterGroup>,
637}
638
639#[allow(dead_code)]
640struct CopyDBParameterGroupResultDeserializer;
641impl CopyDBParameterGroupResultDeserializer {
642    #[allow(dead_code, unused_variables)]
643    fn deserialize<T: Peek + Next>(
644        tag_name: &str,
645        stack: &mut T,
646    ) -> Result<CopyDBParameterGroupResult, XmlParseError> {
647        deserialize_elements::<_, CopyDBParameterGroupResult, _>(
648            tag_name,
649            stack,
650            |name, stack, obj| {
651                match name {
652                    "DBParameterGroup" => {
653                        obj.db_parameter_group = Some(DBParameterGroupDeserializer::deserialize(
654                            "DBParameterGroup",
655                            stack,
656                        )?);
657                    }
658                    _ => skip_tree(stack),
659                }
660                Ok(())
661            },
662        )
663    }
664}
665#[derive(Clone, Debug, Default, PartialEq)]
666#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
667pub struct CreateDBClusterMessage {
668    /// <p>A list of EC2 Availability Zones that instances in the DB cluster can be created in.</p>
669    pub availability_zones: Option<Vec<String>>,
670    /// <p><p>The number of days for which automated backups are retained. You must specify a minimum value of 1.</p> <p>Default: 1</p> <p>Constraints:</p> <ul> <li> <p>Must be a value from 1 to 35</p> </li> </ul></p>
671    pub backup_retention_period: Option<i64>,
672    /// <p> <i>(Not supported by Neptune)</i> </p>
673    pub character_set_name: Option<String>,
674    /// <p>The DB cluster identifier. This parameter is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>my-cluster1</code> </p>
675    pub db_cluster_identifier: String,
676    /// <p><p> The name of the DB cluster parameter group to associate with this DB cluster. If this argument is omitted, the default is used.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the name of an existing DBClusterParameterGroup.</p> </li> </ul></p>
677    pub db_cluster_parameter_group_name: Option<String>,
678    /// <p>A DB subnet group to associate with this DB cluster.</p> <p>Constraints: Must match the name of an existing DBSubnetGroup. Must not be default.</p> <p>Example: <code>mySubnetgroup</code> </p>
679    pub db_subnet_group_name: Option<String>,
680    /// <p>The name for your database of up to 64 alpha-numeric characters. If you do not provide a name, Amazon Neptune will not create a database in the DB cluster you are creating.</p>
681    pub database_name: Option<String>,
682    /// <p>A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is enabled.</p>
683    pub deletion_protection: Option<bool>,
684    /// <p>The list of log types that need to be enabled for exporting to CloudWatch Logs.</p>
685    pub enable_cloudwatch_logs_exports: Option<Vec<String>>,
686    /// <p>True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false.</p> <p>Default: <code>false</code> </p>
687    pub enable_iam_database_authentication: Option<bool>,
688    /// <p>The name of the database engine to be used for this DB cluster.</p> <p>Valid Values: <code>neptune</code> </p>
689    pub engine: String,
690    /// <p>The version number of the database engine to use. Currently, setting this parameter has no effect.</p> <p>Example: <code>1.0.1</code> </p>
691    pub engine_version: Option<String>,
692    /// <p>The AWS KMS key identifier for an encrypted DB cluster.</p> <p>The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a DB cluster with the same AWS account that owns the KMS encryption key used to encrypt the new DB cluster, then you can use the KMS key alias instead of the ARN for the KMS encryption key.</p> <p>If an encryption key is not specified in <code>KmsKeyId</code>:</p> <ul> <li> <p>If <code>ReplicationSourceIdentifier</code> identifies an encrypted source, then Amazon Neptune will use the encryption key used to encrypt the source. Otherwise, Amazon Neptune will use your default encryption key.</p> </li> <li> <p>If the <code>StorageEncrypted</code> parameter is true and <code>ReplicationSourceIdentifier</code> is not specified, then Amazon Neptune will use your default encryption key.</p> </li> </ul> <p>AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region.</p> <p>If you create a Read Replica of an encrypted DB cluster in another AWS Region, you must set <code>KmsKeyId</code> to a KMS key ID that is valid in the destination AWS Region. This key is used to encrypt the Read Replica in that AWS Region.</p>
693    pub kms_key_id: Option<String>,
694    /// <p>The password for the master database user. This password can contain any printable ASCII character except "/", """, or "@".</p> <p>Constraints: Must contain from 8 to 41 characters.</p>
695    pub master_user_password: Option<String>,
696    /// <p><p>The name of the master user for the DB cluster.</p> <p>Constraints:</p> <ul> <li> <p>Must be 1 to 16 letters or numbers.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot be a reserved word for the chosen database engine.</p> </li> </ul></p>
697    pub master_username: Option<String>,
698    /// <p> <i>(Not supported by Neptune)</i> </p>
699    pub option_group_name: Option<String>,
700    /// <p>The port number on which the instances in the DB cluster accept connections.</p> <p> Default: <code>8182</code> </p>
701    pub port: Option<i64>,
702    /// <p>This parameter is not currently supported.</p>
703    pub pre_signed_url: Option<String>,
704    /// <p><p>The daily time range during which automated backups are created if automated backups are enabled using the <code>BackupRetentionPeriod</code> parameter.</p> <p>The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region. To see the time blocks available, see <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html"> Adjusting the Preferred Maintenance Window</a> in the <i>Amazon Neptune User Guide.</i> </p> <p>Constraints:</p> <ul> <li> <p>Must be in the format <code>hh24:mi-hh24:mi</code>.</p> </li> <li> <p>Must be in Universal Coordinated Time (UTC).</p> </li> <li> <p>Must not conflict with the preferred maintenance window.</p> </li> <li> <p>Must be at least 30 minutes.</p> </li> </ul></p>
705    pub preferred_backup_window: Option<String>,
706    /// <p>The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).</p> <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code> </p> <p>The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region, occurring on a random day of the week. To see the time blocks available, see <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html"> Adjusting the Preferred Maintenance Window</a> in the <i>Amazon Neptune User Guide.</i> </p> <p>Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.</p> <p>Constraints: Minimum 30-minute window.</p>
707    pub preferred_maintenance_window: Option<String>,
708    /// <p>The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a Read Replica.</p>
709    pub replication_source_identifier: Option<String>,
710    /// <p>Specifies whether the DB cluster is encrypted.</p>
711    pub storage_encrypted: Option<bool>,
712    /// <p>The tags to assign to the new DB cluster.</p>
713    pub tags: Option<Vec<Tag>>,
714    /// <p>A list of EC2 VPC security groups to associate with this DB cluster.</p>
715    pub vpc_security_group_ids: Option<Vec<String>>,
716}
717
718/// Serialize `CreateDBClusterMessage` contents to a `SignedRequest`.
719struct CreateDBClusterMessageSerializer;
720impl CreateDBClusterMessageSerializer {
721    fn serialize(params: &mut Params, name: &str, obj: &CreateDBClusterMessage) {
722        let mut prefix = name.to_string();
723        if prefix != "" {
724            prefix.push_str(".");
725        }
726
727        if let Some(ref field_value) = obj.availability_zones {
728            AvailabilityZonesSerializer::serialize(
729                params,
730                &format!("{}{}", prefix, "AvailabilityZone"),
731                field_value,
732            );
733        }
734        if let Some(ref field_value) = obj.backup_retention_period {
735            params.put(
736                &format!("{}{}", prefix, "BackupRetentionPeriod"),
737                &field_value,
738            );
739        }
740        if let Some(ref field_value) = obj.character_set_name {
741            params.put(&format!("{}{}", prefix, "CharacterSetName"), &field_value);
742        }
743        params.put(
744            &format!("{}{}", prefix, "DBClusterIdentifier"),
745            &obj.db_cluster_identifier,
746        );
747        if let Some(ref field_value) = obj.db_cluster_parameter_group_name {
748            params.put(
749                &format!("{}{}", prefix, "DBClusterParameterGroupName"),
750                &field_value,
751            );
752        }
753        if let Some(ref field_value) = obj.db_subnet_group_name {
754            params.put(&format!("{}{}", prefix, "DBSubnetGroupName"), &field_value);
755        }
756        if let Some(ref field_value) = obj.database_name {
757            params.put(&format!("{}{}", prefix, "DatabaseName"), &field_value);
758        }
759        if let Some(ref field_value) = obj.deletion_protection {
760            params.put(&format!("{}{}", prefix, "DeletionProtection"), &field_value);
761        }
762        if let Some(ref field_value) = obj.enable_cloudwatch_logs_exports {
763            LogTypeListSerializer::serialize(
764                params,
765                &format!("{}{}", prefix, "EnableCloudwatchLogsExports"),
766                field_value,
767            );
768        }
769        if let Some(ref field_value) = obj.enable_iam_database_authentication {
770            params.put(
771                &format!("{}{}", prefix, "EnableIAMDatabaseAuthentication"),
772                &field_value,
773            );
774        }
775        params.put(&format!("{}{}", prefix, "Engine"), &obj.engine);
776        if let Some(ref field_value) = obj.engine_version {
777            params.put(&format!("{}{}", prefix, "EngineVersion"), &field_value);
778        }
779        if let Some(ref field_value) = obj.kms_key_id {
780            params.put(&format!("{}{}", prefix, "KmsKeyId"), &field_value);
781        }
782        if let Some(ref field_value) = obj.master_user_password {
783            params.put(&format!("{}{}", prefix, "MasterUserPassword"), &field_value);
784        }
785        if let Some(ref field_value) = obj.master_username {
786            params.put(&format!("{}{}", prefix, "MasterUsername"), &field_value);
787        }
788        if let Some(ref field_value) = obj.option_group_name {
789            params.put(&format!("{}{}", prefix, "OptionGroupName"), &field_value);
790        }
791        if let Some(ref field_value) = obj.port {
792            params.put(&format!("{}{}", prefix, "Port"), &field_value);
793        }
794        if let Some(ref field_value) = obj.pre_signed_url {
795            params.put(&format!("{}{}", prefix, "PreSignedUrl"), &field_value);
796        }
797        if let Some(ref field_value) = obj.preferred_backup_window {
798            params.put(
799                &format!("{}{}", prefix, "PreferredBackupWindow"),
800                &field_value,
801            );
802        }
803        if let Some(ref field_value) = obj.preferred_maintenance_window {
804            params.put(
805                &format!("{}{}", prefix, "PreferredMaintenanceWindow"),
806                &field_value,
807            );
808        }
809        if let Some(ref field_value) = obj.replication_source_identifier {
810            params.put(
811                &format!("{}{}", prefix, "ReplicationSourceIdentifier"),
812                &field_value,
813            );
814        }
815        if let Some(ref field_value) = obj.storage_encrypted {
816            params.put(&format!("{}{}", prefix, "StorageEncrypted"), &field_value);
817        }
818        if let Some(ref field_value) = obj.tags {
819            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
820        }
821        if let Some(ref field_value) = obj.vpc_security_group_ids {
822            VpcSecurityGroupIdListSerializer::serialize(
823                params,
824                &format!("{}{}", prefix, "VpcSecurityGroupId"),
825                field_value,
826            );
827        }
828    }
829}
830
831#[derive(Clone, Debug, Default, PartialEq)]
832#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
833pub struct CreateDBClusterParameterGroupMessage {
834    /// <p><p>The name of the DB cluster parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Must match the name of an existing DBClusterParameterGroup.</p> </li> </ul> <note> <p>This value is stored as a lowercase string.</p> </note></p>
835    pub db_cluster_parameter_group_name: String,
836    /// <p>The DB cluster parameter group family name. A DB cluster parameter group can be associated with one and only one DB cluster parameter group family, and can be applied only to a DB cluster running a database engine and engine version compatible with that DB cluster parameter group family.</p>
837    pub db_parameter_group_family: String,
838    /// <p>The description for the DB cluster parameter group.</p>
839    pub description: String,
840    /// <p>The tags to be assigned to the new DB cluster parameter group.</p>
841    pub tags: Option<Vec<Tag>>,
842}
843
844/// Serialize `CreateDBClusterParameterGroupMessage` contents to a `SignedRequest`.
845struct CreateDBClusterParameterGroupMessageSerializer;
846impl CreateDBClusterParameterGroupMessageSerializer {
847    fn serialize(params: &mut Params, name: &str, obj: &CreateDBClusterParameterGroupMessage) {
848        let mut prefix = name.to_string();
849        if prefix != "" {
850            prefix.push_str(".");
851        }
852
853        params.put(
854            &format!("{}{}", prefix, "DBClusterParameterGroupName"),
855            &obj.db_cluster_parameter_group_name,
856        );
857        params.put(
858            &format!("{}{}", prefix, "DBParameterGroupFamily"),
859            &obj.db_parameter_group_family,
860        );
861        params.put(&format!("{}{}", prefix, "Description"), &obj.description);
862        if let Some(ref field_value) = obj.tags {
863            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
864        }
865    }
866}
867
868#[derive(Clone, Debug, Default, PartialEq)]
869#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
870pub struct CreateDBClusterParameterGroupResult {
871    pub db_cluster_parameter_group: Option<DBClusterParameterGroup>,
872}
873
874#[allow(dead_code)]
875struct CreateDBClusterParameterGroupResultDeserializer;
876impl CreateDBClusterParameterGroupResultDeserializer {
877    #[allow(dead_code, unused_variables)]
878    fn deserialize<T: Peek + Next>(
879        tag_name: &str,
880        stack: &mut T,
881    ) -> Result<CreateDBClusterParameterGroupResult, XmlParseError> {
882        deserialize_elements::<_, CreateDBClusterParameterGroupResult, _>(
883            tag_name,
884            stack,
885            |name, stack, obj| {
886                match name {
887                    "DBClusterParameterGroup" => {
888                        obj.db_cluster_parameter_group =
889                            Some(DBClusterParameterGroupDeserializer::deserialize(
890                                "DBClusterParameterGroup",
891                                stack,
892                            )?);
893                    }
894                    _ => skip_tree(stack),
895                }
896                Ok(())
897            },
898        )
899    }
900}
901#[derive(Clone, Debug, Default, PartialEq)]
902#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
903pub struct CreateDBClusterResult {
904    pub db_cluster: Option<DBCluster>,
905}
906
907#[allow(dead_code)]
908struct CreateDBClusterResultDeserializer;
909impl CreateDBClusterResultDeserializer {
910    #[allow(dead_code, unused_variables)]
911    fn deserialize<T: Peek + Next>(
912        tag_name: &str,
913        stack: &mut T,
914    ) -> Result<CreateDBClusterResult, XmlParseError> {
915        deserialize_elements::<_, CreateDBClusterResult, _>(tag_name, stack, |name, stack, obj| {
916            match name {
917                "DBCluster" => {
918                    obj.db_cluster = Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
919                }
920                _ => skip_tree(stack),
921            }
922            Ok(())
923        })
924    }
925}
926#[derive(Clone, Debug, Default, PartialEq)]
927#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
928pub struct CreateDBClusterSnapshotMessage {
929    /// <p>The identifier of the DB cluster to create a snapshot for. This parameter is not case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>Must match the identifier of an existing DBCluster.</p> </li> </ul> <p>Example: <code>my-cluster1</code> </p>
930    pub db_cluster_identifier: String,
931    /// <p>The identifier of the DB cluster snapshot. This parameter is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>my-cluster1-snapshot1</code> </p>
932    pub db_cluster_snapshot_identifier: String,
933    /// <p>The tags to be assigned to the DB cluster snapshot.</p>
934    pub tags: Option<Vec<Tag>>,
935}
936
937/// Serialize `CreateDBClusterSnapshotMessage` contents to a `SignedRequest`.
938struct CreateDBClusterSnapshotMessageSerializer;
939impl CreateDBClusterSnapshotMessageSerializer {
940    fn serialize(params: &mut Params, name: &str, obj: &CreateDBClusterSnapshotMessage) {
941        let mut prefix = name.to_string();
942        if prefix != "" {
943            prefix.push_str(".");
944        }
945
946        params.put(
947            &format!("{}{}", prefix, "DBClusterIdentifier"),
948            &obj.db_cluster_identifier,
949        );
950        params.put(
951            &format!("{}{}", prefix, "DBClusterSnapshotIdentifier"),
952            &obj.db_cluster_snapshot_identifier,
953        );
954        if let Some(ref field_value) = obj.tags {
955            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
956        }
957    }
958}
959
960#[derive(Clone, Debug, Default, PartialEq)]
961#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
962pub struct CreateDBClusterSnapshotResult {
963    pub db_cluster_snapshot: Option<DBClusterSnapshot>,
964}
965
966#[allow(dead_code)]
967struct CreateDBClusterSnapshotResultDeserializer;
968impl CreateDBClusterSnapshotResultDeserializer {
969    #[allow(dead_code, unused_variables)]
970    fn deserialize<T: Peek + Next>(
971        tag_name: &str,
972        stack: &mut T,
973    ) -> Result<CreateDBClusterSnapshotResult, XmlParseError> {
974        deserialize_elements::<_, CreateDBClusterSnapshotResult, _>(
975            tag_name,
976            stack,
977            |name, stack, obj| {
978                match name {
979                    "DBClusterSnapshot" => {
980                        obj.db_cluster_snapshot = Some(DBClusterSnapshotDeserializer::deserialize(
981                            "DBClusterSnapshot",
982                            stack,
983                        )?);
984                    }
985                    _ => skip_tree(stack),
986                }
987                Ok(())
988            },
989        )
990    }
991}
992#[derive(Clone, Debug, Default, PartialEq)]
993#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
994pub struct CreateDBInstanceMessage {
995    /// <p>The amount of storage (in gibibytes) to allocate for the DB instance.</p> <p>Type: Integer</p> <p>Not applicable. Neptune cluster volumes automatically grow as the amount of data in your database increases, though you are only charged for the space that you use in a Neptune cluster volume.</p>
996    pub allocated_storage: Option<i64>,
997    /// <p>Indicates that minor engine upgrades are applied automatically to the DB instance during the maintenance window.</p> <p>Default: <code>true</code> </p>
998    pub auto_minor_version_upgrade: Option<bool>,
999    /// <p> The EC2 Availability Zone that the DB instance is created in</p> <p>Default: A random, system-chosen Availability Zone in the endpoint's AWS Region.</p> <p> Example: <code>us-east-1d</code> </p> <p> Constraint: The AvailabilityZone parameter can't be specified if the MultiAZ parameter is set to <code>true</code>. The specified Availability Zone must be in the same AWS Region as the current endpoint.</p>
1000    pub availability_zone: Option<String>,
1001    /// <p><p>The number of days for which automated backups are retained.</p> <p>Not applicable. The retention period for automated backups is managed by the DB cluster. For more information, see <a>CreateDBCluster</a>.</p> <p>Default: 1</p> <p>Constraints:</p> <ul> <li> <p>Must be a value from 0 to 35</p> </li> <li> <p>Cannot be set to 0 if the DB instance is a source to Read Replicas</p> </li> </ul></p>
1002    pub backup_retention_period: Option<i64>,
1003    /// <p> <i>(Not supported by Neptune)</i> </p>
1004    pub character_set_name: Option<String>,
1005    /// <p>True to copy all tags from the DB instance to snapshots of the DB instance, and otherwise false. The default is false.</p>
1006    pub copy_tags_to_snapshot: Option<bool>,
1007    /// <p>The identifier of the DB cluster that the instance will belong to.</p> <p>For information on creating a DB cluster, see <a>CreateDBCluster</a>.</p> <p>Type: String</p>
1008    pub db_cluster_identifier: Option<String>,
1009    /// <p>The compute and memory capacity of the DB instance, for example, <code>db.m4.large</code>. Not all DB instance classes are available in all AWS Regions.</p>
1010    pub db_instance_class: String,
1011    /// <p>The DB instance identifier. This parameter is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>mydbinstance</code> </p>
1012    pub db_instance_identifier: String,
1013    /// <p>Not supported.</p>
1014    pub db_name: Option<String>,
1015    /// <p><p>The name of the DB parameter group to associate with this DB instance. If this argument is omitted, the default DBParameterGroup for the specified engine is used.</p> <p>Constraints:</p> <ul> <li> <p>Must be 1 to 255 letters, numbers, or hyphens.</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul></p>
1016    pub db_parameter_group_name: Option<String>,
1017    /// <p>A list of DB security groups to associate with this DB instance.</p> <p>Default: The default DB security group for the database engine.</p>
1018    pub db_security_groups: Option<Vec<String>>,
1019    /// <p>A DB subnet group to associate with this DB instance.</p> <p>If there is no DB subnet group, then it is a non-VPC DB instance.</p>
1020    pub db_subnet_group_name: Option<String>,
1021    /// <p>A value that indicates whether the DB instance has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled. See <a href="https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-instances-delete.html">Deleting a DB Instance</a>.</p> <p>DB instances in a DB cluster can be deleted even when deletion protection is enabled in their parent DB cluster.</p>
1022    pub deletion_protection: Option<bool>,
1023    /// <p>Specify the Active Directory Domain to create the instance in.</p>
1024    pub domain: Option<String>,
1025    /// <p>Specify the name of the IAM role to be used when making API calls to the Directory Service.</p>
1026    pub domain_iam_role_name: Option<String>,
1027    /// <p>The list of log types that need to be enabled for exporting to CloudWatch Logs.</p>
1028    pub enable_cloudwatch_logs_exports: Option<Vec<String>>,
1029    /// <p>True to enable AWS Identity and Access Management (IAM) authentication for Neptune.</p> <p>Default: <code>false</code> </p>
1030    pub enable_iam_database_authentication: Option<bool>,
1031    /// <p> <i>(Not supported by Neptune)</i> </p>
1032    pub enable_performance_insights: Option<bool>,
1033    /// <p>The name of the database engine to be used for this instance.</p> <p>Valid Values: <code>neptune</code> </p>
1034    pub engine: String,
1035    /// <p>The version number of the database engine to use. Currently, setting this parameter has no effect.</p>
1036    pub engine_version: Option<String>,
1037    /// <p>The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance.</p>
1038    pub iops: Option<i64>,
1039    /// <p>The AWS KMS key identifier for an encrypted DB instance.</p> <p>The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a DB instance with the same AWS account that owns the KMS encryption key used to encrypt the new DB instance, then you can use the KMS key alias instead of the ARN for the KM encryption key.</p> <p>Not applicable. The KMS key identifier is managed by the DB cluster. For more information, see <a>CreateDBCluster</a>.</p> <p>If the <code>StorageEncrypted</code> parameter is true, and you do not specify a value for the <code>KmsKeyId</code> parameter, then Amazon Neptune will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region.</p>
1040    pub kms_key_id: Option<String>,
1041    /// <p>License model information for this DB instance.</p> <p> Valid values: <code>license-included</code> | <code>bring-your-own-license</code> | <code>general-public-license</code> </p>
1042    pub license_model: Option<String>,
1043    /// <p>The password for the master user. The password can include any printable ASCII character except "/", """, or "@".</p> <p> Not used.</p>
1044    pub master_user_password: Option<String>,
1045    /// <p>The name for the master user. Not used.</p>
1046    pub master_username: Option<String>,
1047    /// <p>The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0.</p> <p>If <code>MonitoringRoleArn</code> is specified, then you must also set <code>MonitoringInterval</code> to a value other than 0.</p> <p>Valid Values: <code>0, 1, 5, 10, 15, 30, 60</code> </p>
1048    pub monitoring_interval: Option<i64>,
1049    /// <p>The ARN for the IAM role that permits Neptune to send enhanced monitoring metrics to Amazon CloudWatch Logs. For example, <code>arn:aws:iam:123456789012:role/emaccess</code>.</p> <p>If <code>MonitoringInterval</code> is set to a value other than 0, then you must supply a <code>MonitoringRoleArn</code> value.</p>
1050    pub monitoring_role_arn: Option<String>,
1051    /// <p>Specifies if the DB instance is a Multi-AZ deployment. You can't set the AvailabilityZone parameter if the MultiAZ parameter is set to true.</p>
1052    pub multi_az: Option<bool>,
1053    /// <p> <i>(Not supported by Neptune)</i> </p>
1054    pub option_group_name: Option<String>,
1055    /// <p> <i>(Not supported by Neptune)</i> </p>
1056    pub performance_insights_kms_key_id: Option<String>,
1057    /// <p>The port number on which the database accepts connections.</p> <p>Not applicable. The port is managed by the DB cluster. For more information, see <a>CreateDBCluster</a>.</p> <p> Default: <code>8182</code> </p> <p>Type: Integer</p>
1058    pub port: Option<i64>,
1059    /// <p> The daily time range during which automated backups are created.</p> <p>Not applicable. The daily time range for creating automated backups is managed by the DB cluster. For more information, see <a>CreateDBCluster</a>.</p>
1060    pub preferred_backup_window: Option<String>,
1061    /// <p>The time range each week during which system maintenance can occur, in Universal Coordinated Time (UTC).</p> <p> Format: <code>ddd:hh24:mi-ddd:hh24:mi</code> </p> <p>The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region, occurring on a random day of the week.</p> <p>Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.</p> <p>Constraints: Minimum 30-minute window.</p>
1062    pub preferred_maintenance_window: Option<String>,
1063    /// <p>A value that specifies the order in which an Read Replica is promoted to the primary instance after a failure of the existing primary instance. </p> <p>Default: 1</p> <p>Valid Values: 0 - 15</p>
1064    pub promotion_tier: Option<i64>,
1065    /// <p>Specifies whether the DB instance is encrypted.</p> <p>Not applicable. The encryption for DB instances is managed by the DB cluster. For more information, see <a>CreateDBCluster</a>.</p> <p>Default: false</p>
1066    pub storage_encrypted: Option<bool>,
1067    /// <p>Specifies the storage type to be associated with the DB instance.</p> <p>Not applicable. Storage is managed by the DB Cluster.</p>
1068    pub storage_type: Option<String>,
1069    /// <p>The tags to assign to the new instance.</p>
1070    pub tags: Option<Vec<Tag>>,
1071    /// <p>The ARN from the key store with which to associate the instance for TDE encryption.</p>
1072    pub tde_credential_arn: Option<String>,
1073    /// <p>The password for the given ARN from the key store in order to access the device.</p>
1074    pub tde_credential_password: Option<String>,
1075    /// <p>The time zone of the DB instance.</p>
1076    pub timezone: Option<String>,
1077    /// <p>A list of EC2 VPC security groups to associate with this DB instance.</p> <p>Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster. For more information, see <a>CreateDBCluster</a>.</p> <p>Default: The default EC2 VPC security group for the DB subnet group's VPC.</p>
1078    pub vpc_security_group_ids: Option<Vec<String>>,
1079}
1080
1081/// Serialize `CreateDBInstanceMessage` contents to a `SignedRequest`.
1082struct CreateDBInstanceMessageSerializer;
1083impl CreateDBInstanceMessageSerializer {
1084    fn serialize(params: &mut Params, name: &str, obj: &CreateDBInstanceMessage) {
1085        let mut prefix = name.to_string();
1086        if prefix != "" {
1087            prefix.push_str(".");
1088        }
1089
1090        if let Some(ref field_value) = obj.allocated_storage {
1091            params.put(&format!("{}{}", prefix, "AllocatedStorage"), &field_value);
1092        }
1093        if let Some(ref field_value) = obj.auto_minor_version_upgrade {
1094            params.put(
1095                &format!("{}{}", prefix, "AutoMinorVersionUpgrade"),
1096                &field_value,
1097            );
1098        }
1099        if let Some(ref field_value) = obj.availability_zone {
1100            params.put(&format!("{}{}", prefix, "AvailabilityZone"), &field_value);
1101        }
1102        if let Some(ref field_value) = obj.backup_retention_period {
1103            params.put(
1104                &format!("{}{}", prefix, "BackupRetentionPeriod"),
1105                &field_value,
1106            );
1107        }
1108        if let Some(ref field_value) = obj.character_set_name {
1109            params.put(&format!("{}{}", prefix, "CharacterSetName"), &field_value);
1110        }
1111        if let Some(ref field_value) = obj.copy_tags_to_snapshot {
1112            params.put(&format!("{}{}", prefix, "CopyTagsToSnapshot"), &field_value);
1113        }
1114        if let Some(ref field_value) = obj.db_cluster_identifier {
1115            params.put(
1116                &format!("{}{}", prefix, "DBClusterIdentifier"),
1117                &field_value,
1118            );
1119        }
1120        params.put(
1121            &format!("{}{}", prefix, "DBInstanceClass"),
1122            &obj.db_instance_class,
1123        );
1124        params.put(
1125            &format!("{}{}", prefix, "DBInstanceIdentifier"),
1126            &obj.db_instance_identifier,
1127        );
1128        if let Some(ref field_value) = obj.db_name {
1129            params.put(&format!("{}{}", prefix, "DBName"), &field_value);
1130        }
1131        if let Some(ref field_value) = obj.db_parameter_group_name {
1132            params.put(
1133                &format!("{}{}", prefix, "DBParameterGroupName"),
1134                &field_value,
1135            );
1136        }
1137        if let Some(ref field_value) = obj.db_security_groups {
1138            DBSecurityGroupNameListSerializer::serialize(
1139                params,
1140                &format!("{}{}", prefix, "DBSecurityGroupName"),
1141                field_value,
1142            );
1143        }
1144        if let Some(ref field_value) = obj.db_subnet_group_name {
1145            params.put(&format!("{}{}", prefix, "DBSubnetGroupName"), &field_value);
1146        }
1147        if let Some(ref field_value) = obj.deletion_protection {
1148            params.put(&format!("{}{}", prefix, "DeletionProtection"), &field_value);
1149        }
1150        if let Some(ref field_value) = obj.domain {
1151            params.put(&format!("{}{}", prefix, "Domain"), &field_value);
1152        }
1153        if let Some(ref field_value) = obj.domain_iam_role_name {
1154            params.put(&format!("{}{}", prefix, "DomainIAMRoleName"), &field_value);
1155        }
1156        if let Some(ref field_value) = obj.enable_cloudwatch_logs_exports {
1157            LogTypeListSerializer::serialize(
1158                params,
1159                &format!("{}{}", prefix, "EnableCloudwatchLogsExports"),
1160                field_value,
1161            );
1162        }
1163        if let Some(ref field_value) = obj.enable_iam_database_authentication {
1164            params.put(
1165                &format!("{}{}", prefix, "EnableIAMDatabaseAuthentication"),
1166                &field_value,
1167            );
1168        }
1169        if let Some(ref field_value) = obj.enable_performance_insights {
1170            params.put(
1171                &format!("{}{}", prefix, "EnablePerformanceInsights"),
1172                &field_value,
1173            );
1174        }
1175        params.put(&format!("{}{}", prefix, "Engine"), &obj.engine);
1176        if let Some(ref field_value) = obj.engine_version {
1177            params.put(&format!("{}{}", prefix, "EngineVersion"), &field_value);
1178        }
1179        if let Some(ref field_value) = obj.iops {
1180            params.put(&format!("{}{}", prefix, "Iops"), &field_value);
1181        }
1182        if let Some(ref field_value) = obj.kms_key_id {
1183            params.put(&format!("{}{}", prefix, "KmsKeyId"), &field_value);
1184        }
1185        if let Some(ref field_value) = obj.license_model {
1186            params.put(&format!("{}{}", prefix, "LicenseModel"), &field_value);
1187        }
1188        if let Some(ref field_value) = obj.master_user_password {
1189            params.put(&format!("{}{}", prefix, "MasterUserPassword"), &field_value);
1190        }
1191        if let Some(ref field_value) = obj.master_username {
1192            params.put(&format!("{}{}", prefix, "MasterUsername"), &field_value);
1193        }
1194        if let Some(ref field_value) = obj.monitoring_interval {
1195            params.put(&format!("{}{}", prefix, "MonitoringInterval"), &field_value);
1196        }
1197        if let Some(ref field_value) = obj.monitoring_role_arn {
1198            params.put(&format!("{}{}", prefix, "MonitoringRoleArn"), &field_value);
1199        }
1200        if let Some(ref field_value) = obj.multi_az {
1201            params.put(&format!("{}{}", prefix, "MultiAZ"), &field_value);
1202        }
1203        if let Some(ref field_value) = obj.option_group_name {
1204            params.put(&format!("{}{}", prefix, "OptionGroupName"), &field_value);
1205        }
1206        if let Some(ref field_value) = obj.performance_insights_kms_key_id {
1207            params.put(
1208                &format!("{}{}", prefix, "PerformanceInsightsKMSKeyId"),
1209                &field_value,
1210            );
1211        }
1212        if let Some(ref field_value) = obj.port {
1213            params.put(&format!("{}{}", prefix, "Port"), &field_value);
1214        }
1215        if let Some(ref field_value) = obj.preferred_backup_window {
1216            params.put(
1217                &format!("{}{}", prefix, "PreferredBackupWindow"),
1218                &field_value,
1219            );
1220        }
1221        if let Some(ref field_value) = obj.preferred_maintenance_window {
1222            params.put(
1223                &format!("{}{}", prefix, "PreferredMaintenanceWindow"),
1224                &field_value,
1225            );
1226        }
1227        if let Some(ref field_value) = obj.promotion_tier {
1228            params.put(&format!("{}{}", prefix, "PromotionTier"), &field_value);
1229        }
1230
1231        if let Some(ref field_value) = obj.storage_encrypted {
1232            params.put(&format!("{}{}", prefix, "StorageEncrypted"), &field_value);
1233        }
1234        if let Some(ref field_value) = obj.storage_type {
1235            params.put(&format!("{}{}", prefix, "StorageType"), &field_value);
1236        }
1237        if let Some(ref field_value) = obj.tags {
1238            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
1239        }
1240        if let Some(ref field_value) = obj.tde_credential_arn {
1241            params.put(&format!("{}{}", prefix, "TdeCredentialArn"), &field_value);
1242        }
1243        if let Some(ref field_value) = obj.tde_credential_password {
1244            params.put(
1245                &format!("{}{}", prefix, "TdeCredentialPassword"),
1246                &field_value,
1247            );
1248        }
1249        if let Some(ref field_value) = obj.timezone {
1250            params.put(&format!("{}{}", prefix, "Timezone"), &field_value);
1251        }
1252        if let Some(ref field_value) = obj.vpc_security_group_ids {
1253            VpcSecurityGroupIdListSerializer::serialize(
1254                params,
1255                &format!("{}{}", prefix, "VpcSecurityGroupId"),
1256                field_value,
1257            );
1258        }
1259    }
1260}
1261
1262#[derive(Clone, Debug, Default, PartialEq)]
1263#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1264pub struct CreateDBInstanceResult {
1265    pub db_instance: Option<DBInstance>,
1266}
1267
1268#[allow(dead_code)]
1269struct CreateDBInstanceResultDeserializer;
1270impl CreateDBInstanceResultDeserializer {
1271    #[allow(dead_code, unused_variables)]
1272    fn deserialize<T: Peek + Next>(
1273        tag_name: &str,
1274        stack: &mut T,
1275    ) -> Result<CreateDBInstanceResult, XmlParseError> {
1276        deserialize_elements::<_, CreateDBInstanceResult, _>(tag_name, stack, |name, stack, obj| {
1277            match name {
1278                "DBInstance" => {
1279                    obj.db_instance =
1280                        Some(DBInstanceDeserializer::deserialize("DBInstance", stack)?);
1281                }
1282                _ => skip_tree(stack),
1283            }
1284            Ok(())
1285        })
1286    }
1287}
1288#[derive(Clone, Debug, Default, PartialEq)]
1289#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1290pub struct CreateDBParameterGroupMessage {
1291    /// <p>The DB parameter group family name. A DB parameter group can be associated with one and only one DB parameter group family, and can be applied only to a DB instance running a database engine and engine version compatible with that DB parameter group family.</p>
1292    pub db_parameter_group_family: String,
1293    /// <p><p>The name of the DB parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Must be 1 to 255 letters, numbers, or hyphens.</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul> <note> <p>This value is stored as a lowercase string.</p> </note></p>
1294    pub db_parameter_group_name: String,
1295    /// <p>The description for the DB parameter group.</p>
1296    pub description: String,
1297    /// <p>The tags to be assigned to the new DB parameter group.</p>
1298    pub tags: Option<Vec<Tag>>,
1299}
1300
1301/// Serialize `CreateDBParameterGroupMessage` contents to a `SignedRequest`.
1302struct CreateDBParameterGroupMessageSerializer;
1303impl CreateDBParameterGroupMessageSerializer {
1304    fn serialize(params: &mut Params, name: &str, obj: &CreateDBParameterGroupMessage) {
1305        let mut prefix = name.to_string();
1306        if prefix != "" {
1307            prefix.push_str(".");
1308        }
1309
1310        params.put(
1311            &format!("{}{}", prefix, "DBParameterGroupFamily"),
1312            &obj.db_parameter_group_family,
1313        );
1314        params.put(
1315            &format!("{}{}", prefix, "DBParameterGroupName"),
1316            &obj.db_parameter_group_name,
1317        );
1318        params.put(&format!("{}{}", prefix, "Description"), &obj.description);
1319        if let Some(ref field_value) = obj.tags {
1320            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
1321        }
1322    }
1323}
1324
1325#[derive(Clone, Debug, Default, PartialEq)]
1326#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1327pub struct CreateDBParameterGroupResult {
1328    pub db_parameter_group: Option<DBParameterGroup>,
1329}
1330
1331#[allow(dead_code)]
1332struct CreateDBParameterGroupResultDeserializer;
1333impl CreateDBParameterGroupResultDeserializer {
1334    #[allow(dead_code, unused_variables)]
1335    fn deserialize<T: Peek + Next>(
1336        tag_name: &str,
1337        stack: &mut T,
1338    ) -> Result<CreateDBParameterGroupResult, XmlParseError> {
1339        deserialize_elements::<_, CreateDBParameterGroupResult, _>(
1340            tag_name,
1341            stack,
1342            |name, stack, obj| {
1343                match name {
1344                    "DBParameterGroup" => {
1345                        obj.db_parameter_group = Some(DBParameterGroupDeserializer::deserialize(
1346                            "DBParameterGroup",
1347                            stack,
1348                        )?);
1349                    }
1350                    _ => skip_tree(stack),
1351                }
1352                Ok(())
1353            },
1354        )
1355    }
1356}
1357#[derive(Clone, Debug, Default, PartialEq)]
1358#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1359pub struct CreateDBSubnetGroupMessage {
1360    /// <p>The description for the DB subnet group.</p>
1361    pub db_subnet_group_description: String,
1362    /// <p>The name for the DB subnet group. This value is stored as a lowercase string.</p> <p>Constraints: Must contain no more than 255 letters, numbers, periods, underscores, spaces, or hyphens. Must not be default.</p> <p>Example: <code>mySubnetgroup</code> </p>
1363    pub db_subnet_group_name: String,
1364    /// <p>The EC2 Subnet IDs for the DB subnet group.</p>
1365    pub subnet_ids: Vec<String>,
1366    /// <p>The tags to be assigned to the new DB subnet group.</p>
1367    pub tags: Option<Vec<Tag>>,
1368}
1369
1370/// Serialize `CreateDBSubnetGroupMessage` contents to a `SignedRequest`.
1371struct CreateDBSubnetGroupMessageSerializer;
1372impl CreateDBSubnetGroupMessageSerializer {
1373    fn serialize(params: &mut Params, name: &str, obj: &CreateDBSubnetGroupMessage) {
1374        let mut prefix = name.to_string();
1375        if prefix != "" {
1376            prefix.push_str(".");
1377        }
1378
1379        params.put(
1380            &format!("{}{}", prefix, "DBSubnetGroupDescription"),
1381            &obj.db_subnet_group_description,
1382        );
1383        params.put(
1384            &format!("{}{}", prefix, "DBSubnetGroupName"),
1385            &obj.db_subnet_group_name,
1386        );
1387        SubnetIdentifierListSerializer::serialize(
1388            params,
1389            &format!("{}{}", prefix, "SubnetIdentifier"),
1390            &obj.subnet_ids,
1391        );
1392        if let Some(ref field_value) = obj.tags {
1393            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
1394        }
1395    }
1396}
1397
1398#[derive(Clone, Debug, Default, PartialEq)]
1399#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1400pub struct CreateDBSubnetGroupResult {
1401    pub db_subnet_group: Option<DBSubnetGroup>,
1402}
1403
1404#[allow(dead_code)]
1405struct CreateDBSubnetGroupResultDeserializer;
1406impl CreateDBSubnetGroupResultDeserializer {
1407    #[allow(dead_code, unused_variables)]
1408    fn deserialize<T: Peek + Next>(
1409        tag_name: &str,
1410        stack: &mut T,
1411    ) -> Result<CreateDBSubnetGroupResult, XmlParseError> {
1412        deserialize_elements::<_, CreateDBSubnetGroupResult, _>(
1413            tag_name,
1414            stack,
1415            |name, stack, obj| {
1416                match name {
1417                    "DBSubnetGroup" => {
1418                        obj.db_subnet_group = Some(DBSubnetGroupDeserializer::deserialize(
1419                            "DBSubnetGroup",
1420                            stack,
1421                        )?);
1422                    }
1423                    _ => skip_tree(stack),
1424                }
1425                Ok(())
1426            },
1427        )
1428    }
1429}
1430#[derive(Clone, Debug, Default, PartialEq)]
1431#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1432pub struct CreateEventSubscriptionMessage {
1433    /// <p> A Boolean value; set to <b>true</b> to activate the subscription, set to <b>false</b> to create the subscription but not active it.</p>
1434    pub enabled: Option<bool>,
1435    /// <p> A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType by using the <b>DescribeEventCategories</b> action.</p>
1436    pub event_categories: Option<Vec<String>>,
1437    /// <p>The Amazon Resource Name (ARN) of the SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it.</p>
1438    pub sns_topic_arn: String,
1439    /// <p><p>The list of identifiers of the event sources for which events are returned. If not specified, then all sources are included in the response. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it can&#39;t end with a hyphen or contain two consecutive hyphens.</p> <p>Constraints:</p> <ul> <li> <p>If SourceIds are supplied, SourceType must also be provided.</p> </li> <li> <p>If the source type is a DB instance, then a <code>DBInstanceIdentifier</code> must be supplied.</p> </li> <li> <p>If the source type is a DB security group, a <code>DBSecurityGroupName</code> must be supplied.</p> </li> <li> <p>If the source type is a DB parameter group, a <code>DBParameterGroupName</code> must be supplied.</p> </li> <li> <p>If the source type is a DB snapshot, a <code>DBSnapshotIdentifier</code> must be supplied.</p> </li> </ul></p>
1440    pub source_ids: Option<Vec<String>>,
1441    /// <p>The type of source that is generating the events. For example, if you want to be notified of events generated by a DB instance, you would set this parameter to db-instance. if this value is not specified, all events are returned.</p> <p>Valid values: <code>db-instance</code> | <code>db-cluster</code> | <code>db-parameter-group</code> | <code>db-security-group</code> | <code>db-snapshot</code> | <code>db-cluster-snapshot</code> </p>
1442    pub source_type: Option<String>,
1443    /// <p>The name of the subscription.</p> <p>Constraints: The name must be less than 255 characters.</p>
1444    pub subscription_name: String,
1445    /// <p>The tags to be applied to the new event subscription.</p>
1446    pub tags: Option<Vec<Tag>>,
1447}
1448
1449/// Serialize `CreateEventSubscriptionMessage` contents to a `SignedRequest`.
1450struct CreateEventSubscriptionMessageSerializer;
1451impl CreateEventSubscriptionMessageSerializer {
1452    fn serialize(params: &mut Params, name: &str, obj: &CreateEventSubscriptionMessage) {
1453        let mut prefix = name.to_string();
1454        if prefix != "" {
1455            prefix.push_str(".");
1456        }
1457
1458        if let Some(ref field_value) = obj.enabled {
1459            params.put(&format!("{}{}", prefix, "Enabled"), &field_value);
1460        }
1461        if let Some(ref field_value) = obj.event_categories {
1462            EventCategoriesListSerializer::serialize(
1463                params,
1464                &format!("{}{}", prefix, "EventCategory"),
1465                field_value,
1466            );
1467        }
1468        params.put(&format!("{}{}", prefix, "SnsTopicArn"), &obj.sns_topic_arn);
1469        if let Some(ref field_value) = obj.source_ids {
1470            SourceIdsListSerializer::serialize(
1471                params,
1472                &format!("{}{}", prefix, "SourceId"),
1473                field_value,
1474            );
1475        }
1476        if let Some(ref field_value) = obj.source_type {
1477            params.put(&format!("{}{}", prefix, "SourceType"), &field_value);
1478        }
1479        params.put(
1480            &format!("{}{}", prefix, "SubscriptionName"),
1481            &obj.subscription_name,
1482        );
1483        if let Some(ref field_value) = obj.tags {
1484            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
1485        }
1486    }
1487}
1488
1489#[derive(Clone, Debug, Default, PartialEq)]
1490#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1491pub struct CreateEventSubscriptionResult {
1492    pub event_subscription: Option<EventSubscription>,
1493}
1494
1495#[allow(dead_code)]
1496struct CreateEventSubscriptionResultDeserializer;
1497impl CreateEventSubscriptionResultDeserializer {
1498    #[allow(dead_code, unused_variables)]
1499    fn deserialize<T: Peek + Next>(
1500        tag_name: &str,
1501        stack: &mut T,
1502    ) -> Result<CreateEventSubscriptionResult, XmlParseError> {
1503        deserialize_elements::<_, CreateEventSubscriptionResult, _>(
1504            tag_name,
1505            stack,
1506            |name, stack, obj| {
1507                match name {
1508                    "EventSubscription" => {
1509                        obj.event_subscription = Some(EventSubscriptionDeserializer::deserialize(
1510                            "EventSubscription",
1511                            stack,
1512                        )?);
1513                    }
1514                    _ => skip_tree(stack),
1515                }
1516                Ok(())
1517            },
1518        )
1519    }
1520}
1521/// <p>Contains the details of an Amazon Neptune DB cluster.</p> <p>This data type is used as a response element in the <a>DescribeDBClusters</a> action.</p>
1522#[derive(Clone, Debug, Default, PartialEq)]
1523#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1524pub struct DBCluster {
1525    /// <p> <code>AllocatedStorage</code> always returns 1, because Neptune DB cluster storage size is not fixed, but instead automatically adjusts as needed.</p>
1526    pub allocated_storage: Option<i64>,
1527    /// <p>Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.</p>
1528    pub associated_roles: Option<Vec<DBClusterRole>>,
1529    /// <p>Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.</p>
1530    pub availability_zones: Option<Vec<String>>,
1531    /// <p>Specifies the number of days for which automatic DB snapshots are retained.</p>
1532    pub backup_retention_period: Option<i64>,
1533    /// <p> <i>(Not supported by Neptune)</i> </p>
1534    pub character_set_name: Option<String>,
1535    /// <p>Identifies the clone group to which the DB cluster is associated.</p>
1536    pub clone_group_id: Option<String>,
1537    /// <p>Specifies the time when the DB cluster was created, in Universal Coordinated Time (UTC).</p>
1538    pub cluster_create_time: Option<String>,
1539    /// <p>The Amazon Resource Name (ARN) for the DB cluster.</p>
1540    pub db_cluster_arn: Option<String>,
1541    /// <p>Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster.</p>
1542    pub db_cluster_identifier: Option<String>,
1543    /// <p>Provides the list of instances that make up the DB cluster.</p>
1544    pub db_cluster_members: Option<Vec<DBClusterMember>>,
1545    /// <p> <i>(Not supported by Neptune)</i> </p>
1546    pub db_cluster_option_group_memberships: Option<Vec<DBClusterOptionGroupStatus>>,
1547    /// <p>Specifies the name of the DB cluster parameter group for the DB cluster.</p>
1548    pub db_cluster_parameter_group: Option<String>,
1549    /// <p>Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.</p>
1550    pub db_subnet_group: Option<String>,
1551    /// <p>Contains the name of the initial database of this DB cluster that was provided at create time, if one was specified when the DB cluster was created. This same name is returned for the life of the DB cluster.</p>
1552    pub database_name: Option<String>,
1553    /// <p>The AWS Region-unique, immutable identifier for the DB cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB cluster is accessed.</p>
1554    pub db_cluster_resource_id: Option<String>,
1555    /// <p>Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled.</p>
1556    pub deletion_protection: Option<bool>,
1557    /// <p>Specifies the earliest time to which a database can be restored with point-in-time restore.</p>
1558    pub earliest_restorable_time: Option<String>,
1559    /// <p>A list of log types that this DB cluster is configured to export to CloudWatch Logs.</p>
1560    pub enabled_cloudwatch_logs_exports: Option<Vec<String>>,
1561    /// <p>Specifies the connection endpoint for the primary instance of the DB cluster.</p>
1562    pub endpoint: Option<String>,
1563    /// <p>Provides the name of the database engine to be used for this DB cluster.</p>
1564    pub engine: Option<String>,
1565    /// <p>Indicates the database engine version.</p>
1566    pub engine_version: Option<String>,
1567    /// <p>Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.</p>
1568    pub hosted_zone_id: Option<String>,
1569    /// <p>True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.</p>
1570    pub iam_database_authentication_enabled: Option<bool>,
1571    /// <p>If <code>StorageEncrypted</code> is true, the AWS KMS key identifier for the encrypted DB cluster.</p>
1572    pub kms_key_id: Option<String>,
1573    /// <p>Specifies the latest time to which a database can be restored with point-in-time restore.</p>
1574    pub latest_restorable_time: Option<String>,
1575    /// <p>Contains the master username for the DB cluster.</p>
1576    pub master_username: Option<String>,
1577    /// <p>Specifies whether the DB cluster has instances in multiple Availability Zones.</p>
1578    pub multi_az: Option<bool>,
1579    /// <p>Specifies the progress of the operation as a percentage.</p>
1580    pub percent_progress: Option<String>,
1581    /// <p>Specifies the port that the database engine is listening on.</p>
1582    pub port: Option<i64>,
1583    /// <p>Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the <code>BackupRetentionPeriod</code>.</p>
1584    pub preferred_backup_window: Option<String>,
1585    /// <p>Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).</p>
1586    pub preferred_maintenance_window: Option<String>,
1587    /// <p>Contains one or more identifiers of the Read Replicas associated with this DB cluster.</p>
1588    pub read_replica_identifiers: Option<Vec<String>>,
1589    /// <p>The reader endpoint for the DB cluster. The reader endpoint for a DB cluster load-balances connections across the Read Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Neptune distributes the connection requests among the Read Replicas in the DB cluster. This functionality can help balance your read workload across multiple Read Replicas in your DB cluster.</p> <p>If a failover occurs, and the Read Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Read Replicas in the cluster, you can then reconnect to the reader endpoint.</p>
1590    pub reader_endpoint: Option<String>,
1591    /// <p>Not supported by Neptune.</p>
1592    pub replication_source_identifier: Option<String>,
1593    /// <p>Specifies the current state of this DB cluster.</p>
1594    pub status: Option<String>,
1595    /// <p>Specifies whether the DB cluster is encrypted.</p>
1596    pub storage_encrypted: Option<bool>,
1597    /// <p>Provides a list of VPC security groups that the DB cluster belongs to.</p>
1598    pub vpc_security_groups: Option<Vec<VpcSecurityGroupMembership>>,
1599}
1600
1601#[allow(dead_code)]
1602struct DBClusterDeserializer;
1603impl DBClusterDeserializer {
1604    #[allow(dead_code, unused_variables)]
1605    fn deserialize<T: Peek + Next>(
1606        tag_name: &str,
1607        stack: &mut T,
1608    ) -> Result<DBCluster, XmlParseError> {
1609        deserialize_elements::<_, DBCluster, _>(tag_name, stack, |name, stack, obj| {
1610            match name {
1611                "AllocatedStorage" => {
1612                    obj.allocated_storage = Some(IntegerOptionalDeserializer::deserialize(
1613                        "AllocatedStorage",
1614                        stack,
1615                    )?);
1616                }
1617                "AssociatedRoles" => {
1618                    obj.associated_roles.get_or_insert(vec![]).extend(
1619                        DBClusterRolesDeserializer::deserialize("AssociatedRoles", stack)?,
1620                    );
1621                }
1622                "AvailabilityZones" => {
1623                    obj.availability_zones.get_or_insert(vec![]).extend(
1624                        AvailabilityZonesDeserializer::deserialize("AvailabilityZones", stack)?,
1625                    );
1626                }
1627                "BackupRetentionPeriod" => {
1628                    obj.backup_retention_period = Some(IntegerOptionalDeserializer::deserialize(
1629                        "BackupRetentionPeriod",
1630                        stack,
1631                    )?);
1632                }
1633                "CharacterSetName" => {
1634                    obj.character_set_name =
1635                        Some(StringDeserializer::deserialize("CharacterSetName", stack)?);
1636                }
1637                "CloneGroupId" => {
1638                    obj.clone_group_id =
1639                        Some(StringDeserializer::deserialize("CloneGroupId", stack)?);
1640                }
1641                "ClusterCreateTime" => {
1642                    obj.cluster_create_time =
1643                        Some(TStampDeserializer::deserialize("ClusterCreateTime", stack)?);
1644                }
1645                "DBClusterArn" => {
1646                    obj.db_cluster_arn =
1647                        Some(StringDeserializer::deserialize("DBClusterArn", stack)?);
1648                }
1649                "DBClusterIdentifier" => {
1650                    obj.db_cluster_identifier = Some(StringDeserializer::deserialize(
1651                        "DBClusterIdentifier",
1652                        stack,
1653                    )?);
1654                }
1655                "DBClusterMembers" => {
1656                    obj.db_cluster_members.get_or_insert(vec![]).extend(
1657                        DBClusterMemberListDeserializer::deserialize("DBClusterMembers", stack)?,
1658                    );
1659                }
1660                "DBClusterOptionGroupMemberships" => {
1661                    obj.db_cluster_option_group_memberships
1662                        .get_or_insert(vec![])
1663                        .extend(DBClusterOptionGroupMembershipsDeserializer::deserialize(
1664                            "DBClusterOptionGroupMemberships",
1665                            stack,
1666                        )?);
1667                }
1668                "DBClusterParameterGroup" => {
1669                    obj.db_cluster_parameter_group = Some(StringDeserializer::deserialize(
1670                        "DBClusterParameterGroup",
1671                        stack,
1672                    )?);
1673                }
1674                "DBSubnetGroup" => {
1675                    obj.db_subnet_group =
1676                        Some(StringDeserializer::deserialize("DBSubnetGroup", stack)?);
1677                }
1678                "DatabaseName" => {
1679                    obj.database_name =
1680                        Some(StringDeserializer::deserialize("DatabaseName", stack)?);
1681                }
1682                "DbClusterResourceId" => {
1683                    obj.db_cluster_resource_id = Some(StringDeserializer::deserialize(
1684                        "DbClusterResourceId",
1685                        stack,
1686                    )?);
1687                }
1688                "DeletionProtection" => {
1689                    obj.deletion_protection = Some(BooleanOptionalDeserializer::deserialize(
1690                        "DeletionProtection",
1691                        stack,
1692                    )?);
1693                }
1694                "EarliestRestorableTime" => {
1695                    obj.earliest_restorable_time = Some(TStampDeserializer::deserialize(
1696                        "EarliestRestorableTime",
1697                        stack,
1698                    )?);
1699                }
1700                "EnabledCloudwatchLogsExports" => {
1701                    obj.enabled_cloudwatch_logs_exports
1702                        .get_or_insert(vec![])
1703                        .extend(LogTypeListDeserializer::deserialize(
1704                            "EnabledCloudwatchLogsExports",
1705                            stack,
1706                        )?);
1707                }
1708                "Endpoint" => {
1709                    obj.endpoint = Some(StringDeserializer::deserialize("Endpoint", stack)?);
1710                }
1711                "Engine" => {
1712                    obj.engine = Some(StringDeserializer::deserialize("Engine", stack)?);
1713                }
1714                "EngineVersion" => {
1715                    obj.engine_version =
1716                        Some(StringDeserializer::deserialize("EngineVersion", stack)?);
1717                }
1718                "HostedZoneId" => {
1719                    obj.hosted_zone_id =
1720                        Some(StringDeserializer::deserialize("HostedZoneId", stack)?);
1721                }
1722                "IAMDatabaseAuthenticationEnabled" => {
1723                    obj.iam_database_authentication_enabled =
1724                        Some(BooleanDeserializer::deserialize(
1725                            "IAMDatabaseAuthenticationEnabled",
1726                            stack,
1727                        )?);
1728                }
1729                "KmsKeyId" => {
1730                    obj.kms_key_id = Some(StringDeserializer::deserialize("KmsKeyId", stack)?);
1731                }
1732                "LatestRestorableTime" => {
1733                    obj.latest_restorable_time = Some(TStampDeserializer::deserialize(
1734                        "LatestRestorableTime",
1735                        stack,
1736                    )?);
1737                }
1738                "MasterUsername" => {
1739                    obj.master_username =
1740                        Some(StringDeserializer::deserialize("MasterUsername", stack)?);
1741                }
1742                "MultiAZ" => {
1743                    obj.multi_az = Some(BooleanDeserializer::deserialize("MultiAZ", stack)?);
1744                }
1745                "PercentProgress" => {
1746                    obj.percent_progress =
1747                        Some(StringDeserializer::deserialize("PercentProgress", stack)?);
1748                }
1749                "Port" => {
1750                    obj.port = Some(IntegerOptionalDeserializer::deserialize("Port", stack)?);
1751                }
1752                "PreferredBackupWindow" => {
1753                    obj.preferred_backup_window = Some(StringDeserializer::deserialize(
1754                        "PreferredBackupWindow",
1755                        stack,
1756                    )?);
1757                }
1758                "PreferredMaintenanceWindow" => {
1759                    obj.preferred_maintenance_window = Some(StringDeserializer::deserialize(
1760                        "PreferredMaintenanceWindow",
1761                        stack,
1762                    )?);
1763                }
1764                "ReadReplicaIdentifiers" => {
1765                    obj.read_replica_identifiers.get_or_insert(vec![]).extend(
1766                        ReadReplicaIdentifierListDeserializer::deserialize(
1767                            "ReadReplicaIdentifiers",
1768                            stack,
1769                        )?,
1770                    );
1771                }
1772                "ReaderEndpoint" => {
1773                    obj.reader_endpoint =
1774                        Some(StringDeserializer::deserialize("ReaderEndpoint", stack)?);
1775                }
1776                "ReplicationSourceIdentifier" => {
1777                    obj.replication_source_identifier = Some(StringDeserializer::deserialize(
1778                        "ReplicationSourceIdentifier",
1779                        stack,
1780                    )?);
1781                }
1782                "Status" => {
1783                    obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
1784                }
1785                "StorageEncrypted" => {
1786                    obj.storage_encrypted =
1787                        Some(BooleanDeserializer::deserialize("StorageEncrypted", stack)?);
1788                }
1789                "VpcSecurityGroups" => {
1790                    obj.vpc_security_groups.get_or_insert(vec![]).extend(
1791                        VpcSecurityGroupMembershipListDeserializer::deserialize(
1792                            "VpcSecurityGroups",
1793                            stack,
1794                        )?,
1795                    );
1796                }
1797                _ => skip_tree(stack),
1798            }
1799            Ok(())
1800        })
1801    }
1802}
1803#[allow(dead_code)]
1804struct DBClusterListDeserializer;
1805impl DBClusterListDeserializer {
1806    #[allow(dead_code, unused_variables)]
1807    fn deserialize<T: Peek + Next>(
1808        tag_name: &str,
1809        stack: &mut T,
1810    ) -> Result<Vec<DBCluster>, XmlParseError> {
1811        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
1812            if name == "DBCluster" {
1813                obj.push(DBClusterDeserializer::deserialize("DBCluster", stack)?);
1814            } else {
1815                skip_tree(stack);
1816            }
1817            Ok(())
1818        })
1819    }
1820}
1821/// <p>Contains information about an instance that is part of a DB cluster.</p>
1822#[derive(Clone, Debug, Default, PartialEq)]
1823#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1824pub struct DBClusterMember {
1825    /// <p>Specifies the status of the DB cluster parameter group for this member of the DB cluster.</p>
1826    pub db_cluster_parameter_group_status: Option<String>,
1827    /// <p>Specifies the instance identifier for this member of the DB cluster.</p>
1828    pub db_instance_identifier: Option<String>,
1829    /// <p>Value that is <code>true</code> if the cluster member is the primary instance for the DB cluster and <code>false</code> otherwise.</p>
1830    pub is_cluster_writer: Option<bool>,
1831    /// <p>A value that specifies the order in which a Read Replica is promoted to the primary instance after a failure of the existing primary instance.</p>
1832    pub promotion_tier: Option<i64>,
1833}
1834
1835#[allow(dead_code)]
1836struct DBClusterMemberDeserializer;
1837impl DBClusterMemberDeserializer {
1838    #[allow(dead_code, unused_variables)]
1839    fn deserialize<T: Peek + Next>(
1840        tag_name: &str,
1841        stack: &mut T,
1842    ) -> Result<DBClusterMember, XmlParseError> {
1843        deserialize_elements::<_, DBClusterMember, _>(tag_name, stack, |name, stack, obj| {
1844            match name {
1845                "DBClusterParameterGroupStatus" => {
1846                    obj.db_cluster_parameter_group_status = Some(StringDeserializer::deserialize(
1847                        "DBClusterParameterGroupStatus",
1848                        stack,
1849                    )?);
1850                }
1851                "DBInstanceIdentifier" => {
1852                    obj.db_instance_identifier = Some(StringDeserializer::deserialize(
1853                        "DBInstanceIdentifier",
1854                        stack,
1855                    )?);
1856                }
1857                "IsClusterWriter" => {
1858                    obj.is_cluster_writer =
1859                        Some(BooleanDeserializer::deserialize("IsClusterWriter", stack)?);
1860                }
1861                "PromotionTier" => {
1862                    obj.promotion_tier = Some(IntegerOptionalDeserializer::deserialize(
1863                        "PromotionTier",
1864                        stack,
1865                    )?);
1866                }
1867                _ => skip_tree(stack),
1868            }
1869            Ok(())
1870        })
1871    }
1872}
1873#[allow(dead_code)]
1874struct DBClusterMemberListDeserializer;
1875impl DBClusterMemberListDeserializer {
1876    #[allow(dead_code, unused_variables)]
1877    fn deserialize<T: Peek + Next>(
1878        tag_name: &str,
1879        stack: &mut T,
1880    ) -> Result<Vec<DBClusterMember>, XmlParseError> {
1881        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
1882            if name == "DBClusterMember" {
1883                obj.push(DBClusterMemberDeserializer::deserialize(
1884                    "DBClusterMember",
1885                    stack,
1886                )?);
1887            } else {
1888                skip_tree(stack);
1889            }
1890            Ok(())
1891        })
1892    }
1893}
1894#[derive(Clone, Debug, Default, PartialEq)]
1895#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1896pub struct DBClusterMessage {
1897    /// <p>Contains a list of DB clusters for the user.</p>
1898    pub db_clusters: Option<Vec<DBCluster>>,
1899    /// <p>A pagination token that can be used in a subsequent DescribeDBClusters request.</p>
1900    pub marker: Option<String>,
1901}
1902
1903#[allow(dead_code)]
1904struct DBClusterMessageDeserializer;
1905impl DBClusterMessageDeserializer {
1906    #[allow(dead_code, unused_variables)]
1907    fn deserialize<T: Peek + Next>(
1908        tag_name: &str,
1909        stack: &mut T,
1910    ) -> Result<DBClusterMessage, XmlParseError> {
1911        deserialize_elements::<_, DBClusterMessage, _>(tag_name, stack, |name, stack, obj| {
1912            match name {
1913                "DBClusters" => {
1914                    obj.db_clusters
1915                        .get_or_insert(vec![])
1916                        .extend(DBClusterListDeserializer::deserialize("DBClusters", stack)?);
1917                }
1918                "Marker" => {
1919                    obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
1920                }
1921                _ => skip_tree(stack),
1922            }
1923            Ok(())
1924        })
1925    }
1926}
1927#[allow(dead_code)]
1928struct DBClusterOptionGroupMembershipsDeserializer;
1929impl DBClusterOptionGroupMembershipsDeserializer {
1930    #[allow(dead_code, unused_variables)]
1931    fn deserialize<T: Peek + Next>(
1932        tag_name: &str,
1933        stack: &mut T,
1934    ) -> Result<Vec<DBClusterOptionGroupStatus>, XmlParseError> {
1935        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
1936            if name == "DBClusterOptionGroup" {
1937                obj.push(DBClusterOptionGroupStatusDeserializer::deserialize(
1938                    "DBClusterOptionGroup",
1939                    stack,
1940                )?);
1941            } else {
1942                skip_tree(stack);
1943            }
1944            Ok(())
1945        })
1946    }
1947}
1948/// <p>Contains status information for a DB cluster option group.</p>
1949#[derive(Clone, Debug, Default, PartialEq)]
1950#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1951pub struct DBClusterOptionGroupStatus {
1952    /// <p>Specifies the name of the DB cluster option group.</p>
1953    pub db_cluster_option_group_name: Option<String>,
1954    /// <p>Specifies the status of the DB cluster option group.</p>
1955    pub status: Option<String>,
1956}
1957
1958#[allow(dead_code)]
1959struct DBClusterOptionGroupStatusDeserializer;
1960impl DBClusterOptionGroupStatusDeserializer {
1961    #[allow(dead_code, unused_variables)]
1962    fn deserialize<T: Peek + Next>(
1963        tag_name: &str,
1964        stack: &mut T,
1965    ) -> Result<DBClusterOptionGroupStatus, XmlParseError> {
1966        deserialize_elements::<_, DBClusterOptionGroupStatus, _>(
1967            tag_name,
1968            stack,
1969            |name, stack, obj| {
1970                match name {
1971                    "DBClusterOptionGroupName" => {
1972                        obj.db_cluster_option_group_name = Some(StringDeserializer::deserialize(
1973                            "DBClusterOptionGroupName",
1974                            stack,
1975                        )?);
1976                    }
1977                    "Status" => {
1978                        obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
1979                    }
1980                    _ => skip_tree(stack),
1981                }
1982                Ok(())
1983            },
1984        )
1985    }
1986}
1987/// <p>Contains the details of an Amazon Neptune DB cluster parameter group.</p> <p>This data type is used as a response element in the <a>DescribeDBClusterParameterGroups</a> action.</p>
1988#[derive(Clone, Debug, Default, PartialEq)]
1989#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1990pub struct DBClusterParameterGroup {
1991    /// <p>The Amazon Resource Name (ARN) for the DB cluster parameter group.</p>
1992    pub db_cluster_parameter_group_arn: Option<String>,
1993    /// <p>Provides the name of the DB cluster parameter group.</p>
1994    pub db_cluster_parameter_group_name: Option<String>,
1995    /// <p>Provides the name of the DB parameter group family that this DB cluster parameter group is compatible with.</p>
1996    pub db_parameter_group_family: Option<String>,
1997    /// <p>Provides the customer-specified description for this DB cluster parameter group.</p>
1998    pub description: Option<String>,
1999}
2000
2001#[allow(dead_code)]
2002struct DBClusterParameterGroupDeserializer;
2003impl DBClusterParameterGroupDeserializer {
2004    #[allow(dead_code, unused_variables)]
2005    fn deserialize<T: Peek + Next>(
2006        tag_name: &str,
2007        stack: &mut T,
2008    ) -> Result<DBClusterParameterGroup, XmlParseError> {
2009        deserialize_elements::<_, DBClusterParameterGroup, _>(
2010            tag_name,
2011            stack,
2012            |name, stack, obj| {
2013                match name {
2014                    "DBClusterParameterGroupArn" => {
2015                        obj.db_cluster_parameter_group_arn = Some(StringDeserializer::deserialize(
2016                            "DBClusterParameterGroupArn",
2017                            stack,
2018                        )?);
2019                    }
2020                    "DBClusterParameterGroupName" => {
2021                        obj.db_cluster_parameter_group_name = Some(
2022                            StringDeserializer::deserialize("DBClusterParameterGroupName", stack)?,
2023                        );
2024                    }
2025                    "DBParameterGroupFamily" => {
2026                        obj.db_parameter_group_family = Some(StringDeserializer::deserialize(
2027                            "DBParameterGroupFamily",
2028                            stack,
2029                        )?);
2030                    }
2031                    "Description" => {
2032                        obj.description =
2033                            Some(StringDeserializer::deserialize("Description", stack)?);
2034                    }
2035                    _ => skip_tree(stack),
2036                }
2037                Ok(())
2038            },
2039        )
2040    }
2041}
2042#[derive(Clone, Debug, Default, PartialEq)]
2043#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2044pub struct DBClusterParameterGroupDetails {
2045    /// <p> An optional pagination token provided by a previous DescribeDBClusterParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code> .</p>
2046    pub marker: Option<String>,
2047    /// <p>Provides a list of parameters for the DB cluster parameter group.</p>
2048    pub parameters: Option<Vec<Parameter>>,
2049}
2050
2051#[allow(dead_code)]
2052struct DBClusterParameterGroupDetailsDeserializer;
2053impl DBClusterParameterGroupDetailsDeserializer {
2054    #[allow(dead_code, unused_variables)]
2055    fn deserialize<T: Peek + Next>(
2056        tag_name: &str,
2057        stack: &mut T,
2058    ) -> Result<DBClusterParameterGroupDetails, XmlParseError> {
2059        deserialize_elements::<_, DBClusterParameterGroupDetails, _>(
2060            tag_name,
2061            stack,
2062            |name, stack, obj| {
2063                match name {
2064                    "Marker" => {
2065                        obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
2066                    }
2067                    "Parameters" => {
2068                        obj.parameters.get_or_insert(vec![]).extend(
2069                            ParametersListDeserializer::deserialize("Parameters", stack)?,
2070                        );
2071                    }
2072                    _ => skip_tree(stack),
2073                }
2074                Ok(())
2075            },
2076        )
2077    }
2078}
2079#[allow(dead_code)]
2080struct DBClusterParameterGroupListDeserializer;
2081impl DBClusterParameterGroupListDeserializer {
2082    #[allow(dead_code, unused_variables)]
2083    fn deserialize<T: Peek + Next>(
2084        tag_name: &str,
2085        stack: &mut T,
2086    ) -> Result<Vec<DBClusterParameterGroup>, XmlParseError> {
2087        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
2088            if name == "DBClusterParameterGroup" {
2089                obj.push(DBClusterParameterGroupDeserializer::deserialize(
2090                    "DBClusterParameterGroup",
2091                    stack,
2092                )?);
2093            } else {
2094                skip_tree(stack);
2095            }
2096            Ok(())
2097        })
2098    }
2099}
2100#[derive(Clone, Debug, Default, PartialEq)]
2101#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2102pub struct DBClusterParameterGroupNameMessage {
2103    /// <p><p>The name of the DB cluster parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Must be 1 to 255 letters or numbers.</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul> <note> <p>This value is stored as a lowercase string.</p> </note></p>
2104    pub db_cluster_parameter_group_name: Option<String>,
2105}
2106
2107#[allow(dead_code)]
2108struct DBClusterParameterGroupNameMessageDeserializer;
2109impl DBClusterParameterGroupNameMessageDeserializer {
2110    #[allow(dead_code, unused_variables)]
2111    fn deserialize<T: Peek + Next>(
2112        tag_name: &str,
2113        stack: &mut T,
2114    ) -> Result<DBClusterParameterGroupNameMessage, XmlParseError> {
2115        deserialize_elements::<_, DBClusterParameterGroupNameMessage, _>(
2116            tag_name,
2117            stack,
2118            |name, stack, obj| {
2119                match name {
2120                    "DBClusterParameterGroupName" => {
2121                        obj.db_cluster_parameter_group_name = Some(
2122                            StringDeserializer::deserialize("DBClusterParameterGroupName", stack)?,
2123                        );
2124                    }
2125                    _ => skip_tree(stack),
2126                }
2127                Ok(())
2128            },
2129        )
2130    }
2131}
2132#[derive(Clone, Debug, Default, PartialEq)]
2133#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2134pub struct DBClusterParameterGroupsMessage {
2135    /// <p>A list of DB cluster parameter groups.</p>
2136    pub db_cluster_parameter_groups: Option<Vec<DBClusterParameterGroup>>,
2137    /// <p> An optional pagination token provided by a previous <code>DescribeDBClusterParameterGroups</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
2138    pub marker: Option<String>,
2139}
2140
2141#[allow(dead_code)]
2142struct DBClusterParameterGroupsMessageDeserializer;
2143impl DBClusterParameterGroupsMessageDeserializer {
2144    #[allow(dead_code, unused_variables)]
2145    fn deserialize<T: Peek + Next>(
2146        tag_name: &str,
2147        stack: &mut T,
2148    ) -> Result<DBClusterParameterGroupsMessage, XmlParseError> {
2149        deserialize_elements::<_, DBClusterParameterGroupsMessage, _>(
2150            tag_name,
2151            stack,
2152            |name, stack, obj| {
2153                match name {
2154                    "DBClusterParameterGroups" => {
2155                        obj.db_cluster_parameter_groups
2156                            .get_or_insert(vec![])
2157                            .extend(DBClusterParameterGroupListDeserializer::deserialize(
2158                                "DBClusterParameterGroups",
2159                                stack,
2160                            )?);
2161                    }
2162                    "Marker" => {
2163                        obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
2164                    }
2165                    _ => skip_tree(stack),
2166                }
2167                Ok(())
2168            },
2169        )
2170    }
2171}
2172/// <p>Describes an AWS Identity and Access Management (IAM) role that is associated with a DB cluster.</p>
2173#[derive(Clone, Debug, Default, PartialEq)]
2174#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2175pub struct DBClusterRole {
2176    /// <p>The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.</p>
2177    pub role_arn: Option<String>,
2178    /// <p><p>Describes the state of association between the IAM role and the DB cluster. The Status property returns one of the following values:</p> <ul> <li> <p> <code>ACTIVE</code> - the IAM role ARN is associated with the DB cluster and can be used to access other AWS services on your behalf.</p> </li> <li> <p> <code>PENDING</code> - the IAM role ARN is being associated with the DB cluster.</p> </li> <li> <p> <code>INVALID</code> - the IAM role ARN is associated with the DB cluster, but the DB cluster is unable to assume the IAM role in order to access other AWS services on your behalf.</p> </li> </ul></p>
2179    pub status: Option<String>,
2180}
2181
2182#[allow(dead_code)]
2183struct DBClusterRoleDeserializer;
2184impl DBClusterRoleDeserializer {
2185    #[allow(dead_code, unused_variables)]
2186    fn deserialize<T: Peek + Next>(
2187        tag_name: &str,
2188        stack: &mut T,
2189    ) -> Result<DBClusterRole, XmlParseError> {
2190        deserialize_elements::<_, DBClusterRole, _>(tag_name, stack, |name, stack, obj| {
2191            match name {
2192                "RoleArn" => {
2193                    obj.role_arn = Some(StringDeserializer::deserialize("RoleArn", stack)?);
2194                }
2195                "Status" => {
2196                    obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
2197                }
2198                _ => skip_tree(stack),
2199            }
2200            Ok(())
2201        })
2202    }
2203}
2204#[allow(dead_code)]
2205struct DBClusterRolesDeserializer;
2206impl DBClusterRolesDeserializer {
2207    #[allow(dead_code, unused_variables)]
2208    fn deserialize<T: Peek + Next>(
2209        tag_name: &str,
2210        stack: &mut T,
2211    ) -> Result<Vec<DBClusterRole>, XmlParseError> {
2212        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
2213            if name == "DBClusterRole" {
2214                obj.push(DBClusterRoleDeserializer::deserialize(
2215                    "DBClusterRole",
2216                    stack,
2217                )?);
2218            } else {
2219                skip_tree(stack);
2220            }
2221            Ok(())
2222        })
2223    }
2224}
2225/// <p>Contains the details for an Amazon Neptune DB cluster snapshot</p> <p>This data type is used as a response element in the <a>DescribeDBClusterSnapshots</a> action.</p>
2226#[derive(Clone, Debug, Default, PartialEq)]
2227#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2228pub struct DBClusterSnapshot {
2229    /// <p>Specifies the allocated storage size in gibibytes (GiB).</p>
2230    pub allocated_storage: Option<i64>,
2231    /// <p>Provides the list of EC2 Availability Zones that instances in the DB cluster snapshot can be restored in.</p>
2232    pub availability_zones: Option<Vec<String>>,
2233    /// <p>Specifies the time when the DB cluster was created, in Universal Coordinated Time (UTC).</p>
2234    pub cluster_create_time: Option<String>,
2235    /// <p>Specifies the DB cluster identifier of the DB cluster that this DB cluster snapshot was created from.</p>
2236    pub db_cluster_identifier: Option<String>,
2237    /// <p>The Amazon Resource Name (ARN) for the DB cluster snapshot.</p>
2238    pub db_cluster_snapshot_arn: Option<String>,
2239    /// <p>Specifies the identifier for a DB cluster snapshot. Must match the identifier of an existing snapshot.</p> <p>After you restore a DB cluster using a <code>DBClusterSnapshotIdentifier</code>, you must specify the same <code>DBClusterSnapshotIdentifier</code> for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed.</p> <p>However, if you don't specify the <code>DBClusterSnapshotIdentifier</code>, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, the DB cluster is restored from the snapshot specified by the <code>DBClusterSnapshotIdentifier</code>, and the original DB cluster is deleted.</p>
2240    pub db_cluster_snapshot_identifier: Option<String>,
2241    /// <p>Specifies the name of the database engine.</p>
2242    pub engine: Option<String>,
2243    /// <p>Provides the version of the database engine for this DB cluster snapshot.</p>
2244    pub engine_version: Option<String>,
2245    /// <p>True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.</p>
2246    pub iam_database_authentication_enabled: Option<bool>,
2247    /// <p>If <code>StorageEncrypted</code> is true, the AWS KMS key identifier for the encrypted DB cluster snapshot.</p>
2248    pub kms_key_id: Option<String>,
2249    /// <p>Provides the license model information for this DB cluster snapshot.</p>
2250    pub license_model: Option<String>,
2251    /// <p>Provides the master username for the DB cluster snapshot.</p>
2252    pub master_username: Option<String>,
2253    /// <p>Specifies the percentage of the estimated data that has been transferred.</p>
2254    pub percent_progress: Option<i64>,
2255    /// <p>Specifies the port that the DB cluster was listening on at the time of the snapshot.</p>
2256    pub port: Option<i64>,
2257    /// <p>Provides the time when the snapshot was taken, in Universal Coordinated Time (UTC).</p>
2258    pub snapshot_create_time: Option<String>,
2259    /// <p>Provides the type of the DB cluster snapshot.</p>
2260    pub snapshot_type: Option<String>,
2261    /// <p>If the DB cluster snapshot was copied from a source DB cluster snapshot, the Amazon Resource Name (ARN) for the source DB cluster snapshot, otherwise, a null value.</p>
2262    pub source_db_cluster_snapshot_arn: Option<String>,
2263    /// <p>Specifies the status of this DB cluster snapshot.</p>
2264    pub status: Option<String>,
2265    /// <p>Specifies whether the DB cluster snapshot is encrypted.</p>
2266    pub storage_encrypted: Option<bool>,
2267    /// <p>Provides the VPC ID associated with the DB cluster snapshot.</p>
2268    pub vpc_id: Option<String>,
2269}
2270
2271#[allow(dead_code)]
2272struct DBClusterSnapshotDeserializer;
2273impl DBClusterSnapshotDeserializer {
2274    #[allow(dead_code, unused_variables)]
2275    fn deserialize<T: Peek + Next>(
2276        tag_name: &str,
2277        stack: &mut T,
2278    ) -> Result<DBClusterSnapshot, XmlParseError> {
2279        deserialize_elements::<_, DBClusterSnapshot, _>(tag_name, stack, |name, stack, obj| {
2280            match name {
2281                "AllocatedStorage" => {
2282                    obj.allocated_storage =
2283                        Some(IntegerDeserializer::deserialize("AllocatedStorage", stack)?);
2284                }
2285                "AvailabilityZones" => {
2286                    obj.availability_zones.get_or_insert(vec![]).extend(
2287                        AvailabilityZonesDeserializer::deserialize("AvailabilityZones", stack)?,
2288                    );
2289                }
2290                "ClusterCreateTime" => {
2291                    obj.cluster_create_time =
2292                        Some(TStampDeserializer::deserialize("ClusterCreateTime", stack)?);
2293                }
2294                "DBClusterIdentifier" => {
2295                    obj.db_cluster_identifier = Some(StringDeserializer::deserialize(
2296                        "DBClusterIdentifier",
2297                        stack,
2298                    )?);
2299                }
2300                "DBClusterSnapshotArn" => {
2301                    obj.db_cluster_snapshot_arn = Some(StringDeserializer::deserialize(
2302                        "DBClusterSnapshotArn",
2303                        stack,
2304                    )?);
2305                }
2306                "DBClusterSnapshotIdentifier" => {
2307                    obj.db_cluster_snapshot_identifier = Some(StringDeserializer::deserialize(
2308                        "DBClusterSnapshotIdentifier",
2309                        stack,
2310                    )?);
2311                }
2312                "Engine" => {
2313                    obj.engine = Some(StringDeserializer::deserialize("Engine", stack)?);
2314                }
2315                "EngineVersion" => {
2316                    obj.engine_version =
2317                        Some(StringDeserializer::deserialize("EngineVersion", stack)?);
2318                }
2319                "IAMDatabaseAuthenticationEnabled" => {
2320                    obj.iam_database_authentication_enabled =
2321                        Some(BooleanDeserializer::deserialize(
2322                            "IAMDatabaseAuthenticationEnabled",
2323                            stack,
2324                        )?);
2325                }
2326                "KmsKeyId" => {
2327                    obj.kms_key_id = Some(StringDeserializer::deserialize("KmsKeyId", stack)?);
2328                }
2329                "LicenseModel" => {
2330                    obj.license_model =
2331                        Some(StringDeserializer::deserialize("LicenseModel", stack)?);
2332                }
2333                "MasterUsername" => {
2334                    obj.master_username =
2335                        Some(StringDeserializer::deserialize("MasterUsername", stack)?);
2336                }
2337                "PercentProgress" => {
2338                    obj.percent_progress =
2339                        Some(IntegerDeserializer::deserialize("PercentProgress", stack)?);
2340                }
2341                "Port" => {
2342                    obj.port = Some(IntegerDeserializer::deserialize("Port", stack)?);
2343                }
2344                "SnapshotCreateTime" => {
2345                    obj.snapshot_create_time = Some(TStampDeserializer::deserialize(
2346                        "SnapshotCreateTime",
2347                        stack,
2348                    )?);
2349                }
2350                "SnapshotType" => {
2351                    obj.snapshot_type =
2352                        Some(StringDeserializer::deserialize("SnapshotType", stack)?);
2353                }
2354                "SourceDBClusterSnapshotArn" => {
2355                    obj.source_db_cluster_snapshot_arn = Some(StringDeserializer::deserialize(
2356                        "SourceDBClusterSnapshotArn",
2357                        stack,
2358                    )?);
2359                }
2360                "Status" => {
2361                    obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
2362                }
2363                "StorageEncrypted" => {
2364                    obj.storage_encrypted =
2365                        Some(BooleanDeserializer::deserialize("StorageEncrypted", stack)?);
2366                }
2367                "VpcId" => {
2368                    obj.vpc_id = Some(StringDeserializer::deserialize("VpcId", stack)?);
2369                }
2370                _ => skip_tree(stack),
2371            }
2372            Ok(())
2373        })
2374    }
2375}
2376/// <p>Contains the name and values of a manual DB cluster snapshot attribute.</p> <p>Manual DB cluster snapshot attributes are used to authorize other AWS accounts to restore a manual DB cluster snapshot. For more information, see the <a>ModifyDBClusterSnapshotAttribute</a> API action.</p>
2377#[derive(Clone, Debug, Default, PartialEq)]
2378#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2379pub struct DBClusterSnapshotAttribute {
2380    /// <p>The name of the manual DB cluster snapshot attribute.</p> <p>The attribute named <code>restore</code> refers to the list of AWS accounts that have permission to copy or restore the manual DB cluster snapshot. For more information, see the <a>ModifyDBClusterSnapshotAttribute</a> API action.</p>
2381    pub attribute_name: Option<String>,
2382    /// <p>The value(s) for the manual DB cluster snapshot attribute.</p> <p>If the <code>AttributeName</code> field is set to <code>restore</code>, then this element returns a list of IDs of the AWS accounts that are authorized to copy or restore the manual DB cluster snapshot. If a value of <code>all</code> is in the list, then the manual DB cluster snapshot is public and available for any AWS account to copy or restore.</p>
2383    pub attribute_values: Option<Vec<String>>,
2384}
2385
2386#[allow(dead_code)]
2387struct DBClusterSnapshotAttributeDeserializer;
2388impl DBClusterSnapshotAttributeDeserializer {
2389    #[allow(dead_code, unused_variables)]
2390    fn deserialize<T: Peek + Next>(
2391        tag_name: &str,
2392        stack: &mut T,
2393    ) -> Result<DBClusterSnapshotAttribute, XmlParseError> {
2394        deserialize_elements::<_, DBClusterSnapshotAttribute, _>(
2395            tag_name,
2396            stack,
2397            |name, stack, obj| {
2398                match name {
2399                    "AttributeName" => {
2400                        obj.attribute_name =
2401                            Some(StringDeserializer::deserialize("AttributeName", stack)?);
2402                    }
2403                    "AttributeValues" => {
2404                        obj.attribute_values.get_or_insert(vec![]).extend(
2405                            AttributeValueListDeserializer::deserialize("AttributeValues", stack)?,
2406                        );
2407                    }
2408                    _ => skip_tree(stack),
2409                }
2410                Ok(())
2411            },
2412        )
2413    }
2414}
2415#[allow(dead_code)]
2416struct DBClusterSnapshotAttributeListDeserializer;
2417impl DBClusterSnapshotAttributeListDeserializer {
2418    #[allow(dead_code, unused_variables)]
2419    fn deserialize<T: Peek + Next>(
2420        tag_name: &str,
2421        stack: &mut T,
2422    ) -> Result<Vec<DBClusterSnapshotAttribute>, XmlParseError> {
2423        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
2424            if name == "DBClusterSnapshotAttribute" {
2425                obj.push(DBClusterSnapshotAttributeDeserializer::deserialize(
2426                    "DBClusterSnapshotAttribute",
2427                    stack,
2428                )?);
2429            } else {
2430                skip_tree(stack);
2431            }
2432            Ok(())
2433        })
2434    }
2435}
2436/// <p>Contains the results of a successful call to the <a>DescribeDBClusterSnapshotAttributes</a> API action.</p> <p>Manual DB cluster snapshot attributes are used to authorize other AWS accounts to copy or restore a manual DB cluster snapshot. For more information, see the <a>ModifyDBClusterSnapshotAttribute</a> API action.</p>
2437#[derive(Clone, Debug, Default, PartialEq)]
2438#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2439pub struct DBClusterSnapshotAttributesResult {
2440    /// <p>The list of attributes and values for the manual DB cluster snapshot.</p>
2441    pub db_cluster_snapshot_attributes: Option<Vec<DBClusterSnapshotAttribute>>,
2442    /// <p>The identifier of the manual DB cluster snapshot that the attributes apply to.</p>
2443    pub db_cluster_snapshot_identifier: Option<String>,
2444}
2445
2446#[allow(dead_code)]
2447struct DBClusterSnapshotAttributesResultDeserializer;
2448impl DBClusterSnapshotAttributesResultDeserializer {
2449    #[allow(dead_code, unused_variables)]
2450    fn deserialize<T: Peek + Next>(
2451        tag_name: &str,
2452        stack: &mut T,
2453    ) -> Result<DBClusterSnapshotAttributesResult, XmlParseError> {
2454        deserialize_elements::<_, DBClusterSnapshotAttributesResult, _>(
2455            tag_name,
2456            stack,
2457            |name, stack, obj| {
2458                match name {
2459                    "DBClusterSnapshotAttributes" => {
2460                        obj.db_cluster_snapshot_attributes
2461                            .get_or_insert(vec![])
2462                            .extend(DBClusterSnapshotAttributeListDeserializer::deserialize(
2463                                "DBClusterSnapshotAttributes",
2464                                stack,
2465                            )?);
2466                    }
2467                    "DBClusterSnapshotIdentifier" => {
2468                        obj.db_cluster_snapshot_identifier = Some(StringDeserializer::deserialize(
2469                            "DBClusterSnapshotIdentifier",
2470                            stack,
2471                        )?);
2472                    }
2473                    _ => skip_tree(stack),
2474                }
2475                Ok(())
2476            },
2477        )
2478    }
2479}
2480#[allow(dead_code)]
2481struct DBClusterSnapshotListDeserializer;
2482impl DBClusterSnapshotListDeserializer {
2483    #[allow(dead_code, unused_variables)]
2484    fn deserialize<T: Peek + Next>(
2485        tag_name: &str,
2486        stack: &mut T,
2487    ) -> Result<Vec<DBClusterSnapshot>, XmlParseError> {
2488        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
2489            if name == "DBClusterSnapshot" {
2490                obj.push(DBClusterSnapshotDeserializer::deserialize(
2491                    "DBClusterSnapshot",
2492                    stack,
2493                )?);
2494            } else {
2495                skip_tree(stack);
2496            }
2497            Ok(())
2498        })
2499    }
2500}
2501#[derive(Clone, Debug, Default, PartialEq)]
2502#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2503pub struct DBClusterSnapshotMessage {
2504    /// <p>Provides a list of DB cluster snapshots for the user.</p>
2505    pub db_cluster_snapshots: Option<Vec<DBClusterSnapshot>>,
2506    /// <p> An optional pagination token provided by a previous <a>DescribeDBClusterSnapshots</a> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
2507    pub marker: Option<String>,
2508}
2509
2510#[allow(dead_code)]
2511struct DBClusterSnapshotMessageDeserializer;
2512impl DBClusterSnapshotMessageDeserializer {
2513    #[allow(dead_code, unused_variables)]
2514    fn deserialize<T: Peek + Next>(
2515        tag_name: &str,
2516        stack: &mut T,
2517    ) -> Result<DBClusterSnapshotMessage, XmlParseError> {
2518        deserialize_elements::<_, DBClusterSnapshotMessage, _>(
2519            tag_name,
2520            stack,
2521            |name, stack, obj| {
2522                match name {
2523                    "DBClusterSnapshots" => {
2524                        obj.db_cluster_snapshots.get_or_insert(vec![]).extend(
2525                            DBClusterSnapshotListDeserializer::deserialize(
2526                                "DBClusterSnapshots",
2527                                stack,
2528                            )?,
2529                        );
2530                    }
2531                    "Marker" => {
2532                        obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
2533                    }
2534                    _ => skip_tree(stack),
2535                }
2536                Ok(())
2537            },
2538        )
2539    }
2540}
2541/// <p> This data type is used as a response element in the action <a>DescribeDBEngineVersions</a>.</p>
2542#[derive(Clone, Debug, Default, PartialEq)]
2543#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2544pub struct DBEngineVersion {
2545    /// <p>The description of the database engine.</p>
2546    pub db_engine_description: Option<String>,
2547    /// <p>The description of the database engine version.</p>
2548    pub db_engine_version_description: Option<String>,
2549    /// <p>The name of the DB parameter group family for the database engine.</p>
2550    pub db_parameter_group_family: Option<String>,
2551    /// <p> <i>(Not supported by Neptune)</i> </p>
2552    pub default_character_set: Option<CharacterSet>,
2553    /// <p>The name of the database engine.</p>
2554    pub engine: Option<String>,
2555    /// <p>The version number of the database engine.</p>
2556    pub engine_version: Option<String>,
2557    /// <p>The types of logs that the database engine has available for export to CloudWatch Logs.</p>
2558    pub exportable_log_types: Option<Vec<String>>,
2559    /// <p> <i>(Not supported by Neptune)</i> </p>
2560    pub supported_character_sets: Option<Vec<CharacterSet>>,
2561    /// <p>A list of the time zones supported by this engine for the <code>Timezone</code> parameter of the <code>CreateDBInstance</code> action.</p>
2562    pub supported_timezones: Option<Vec<Timezone>>,
2563    /// <p>A value that indicates whether the engine version supports exporting the log types specified by ExportableLogTypes to CloudWatch Logs.</p>
2564    pub supports_log_exports_to_cloudwatch_logs: Option<bool>,
2565    /// <p>Indicates whether the database engine version supports read replicas.</p>
2566    pub supports_read_replica: Option<bool>,
2567    /// <p>A list of engine versions that this database engine version can be upgraded to.</p>
2568    pub valid_upgrade_target: Option<Vec<UpgradeTarget>>,
2569}
2570
2571#[allow(dead_code)]
2572struct DBEngineVersionDeserializer;
2573impl DBEngineVersionDeserializer {
2574    #[allow(dead_code, unused_variables)]
2575    fn deserialize<T: Peek + Next>(
2576        tag_name: &str,
2577        stack: &mut T,
2578    ) -> Result<DBEngineVersion, XmlParseError> {
2579        deserialize_elements::<_, DBEngineVersion, _>(tag_name, stack, |name, stack, obj| {
2580            match name {
2581                "DBEngineDescription" => {
2582                    obj.db_engine_description = Some(StringDeserializer::deserialize(
2583                        "DBEngineDescription",
2584                        stack,
2585                    )?);
2586                }
2587                "DBEngineVersionDescription" => {
2588                    obj.db_engine_version_description = Some(StringDeserializer::deserialize(
2589                        "DBEngineVersionDescription",
2590                        stack,
2591                    )?);
2592                }
2593                "DBParameterGroupFamily" => {
2594                    obj.db_parameter_group_family = Some(StringDeserializer::deserialize(
2595                        "DBParameterGroupFamily",
2596                        stack,
2597                    )?);
2598                }
2599                "DefaultCharacterSet" => {
2600                    obj.default_character_set = Some(CharacterSetDeserializer::deserialize(
2601                        "DefaultCharacterSet",
2602                        stack,
2603                    )?);
2604                }
2605                "Engine" => {
2606                    obj.engine = Some(StringDeserializer::deserialize("Engine", stack)?);
2607                }
2608                "EngineVersion" => {
2609                    obj.engine_version =
2610                        Some(StringDeserializer::deserialize("EngineVersion", stack)?);
2611                }
2612                "ExportableLogTypes" => {
2613                    obj.exportable_log_types.get_or_insert(vec![]).extend(
2614                        LogTypeListDeserializer::deserialize("ExportableLogTypes", stack)?,
2615                    );
2616                }
2617                "SupportedCharacterSets" => {
2618                    obj.supported_character_sets.get_or_insert(vec![]).extend(
2619                        SupportedCharacterSetsListDeserializer::deserialize(
2620                            "SupportedCharacterSets",
2621                            stack,
2622                        )?,
2623                    );
2624                }
2625                "SupportedTimezones" => {
2626                    obj.supported_timezones.get_or_insert(vec![]).extend(
2627                        SupportedTimezonesListDeserializer::deserialize(
2628                            "SupportedTimezones",
2629                            stack,
2630                        )?,
2631                    );
2632                }
2633                "SupportsLogExportsToCloudwatchLogs" => {
2634                    obj.supports_log_exports_to_cloudwatch_logs =
2635                        Some(BooleanDeserializer::deserialize(
2636                            "SupportsLogExportsToCloudwatchLogs",
2637                            stack,
2638                        )?);
2639                }
2640                "SupportsReadReplica" => {
2641                    obj.supports_read_replica = Some(BooleanDeserializer::deserialize(
2642                        "SupportsReadReplica",
2643                        stack,
2644                    )?);
2645                }
2646                "ValidUpgradeTarget" => {
2647                    obj.valid_upgrade_target.get_or_insert(vec![]).extend(
2648                        ValidUpgradeTargetListDeserializer::deserialize(
2649                            "ValidUpgradeTarget",
2650                            stack,
2651                        )?,
2652                    );
2653                }
2654                _ => skip_tree(stack),
2655            }
2656            Ok(())
2657        })
2658    }
2659}
2660#[allow(dead_code)]
2661struct DBEngineVersionListDeserializer;
2662impl DBEngineVersionListDeserializer {
2663    #[allow(dead_code, unused_variables)]
2664    fn deserialize<T: Peek + Next>(
2665        tag_name: &str,
2666        stack: &mut T,
2667    ) -> Result<Vec<DBEngineVersion>, XmlParseError> {
2668        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
2669            if name == "DBEngineVersion" {
2670                obj.push(DBEngineVersionDeserializer::deserialize(
2671                    "DBEngineVersion",
2672                    stack,
2673                )?);
2674            } else {
2675                skip_tree(stack);
2676            }
2677            Ok(())
2678        })
2679    }
2680}
2681#[derive(Clone, Debug, Default, PartialEq)]
2682#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2683pub struct DBEngineVersionMessage {
2684    /// <p> A list of <code>DBEngineVersion</code> elements.</p>
2685    pub db_engine_versions: Option<Vec<DBEngineVersion>>,
2686    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
2687    pub marker: Option<String>,
2688}
2689
2690#[allow(dead_code)]
2691struct DBEngineVersionMessageDeserializer;
2692impl DBEngineVersionMessageDeserializer {
2693    #[allow(dead_code, unused_variables)]
2694    fn deserialize<T: Peek + Next>(
2695        tag_name: &str,
2696        stack: &mut T,
2697    ) -> Result<DBEngineVersionMessage, XmlParseError> {
2698        deserialize_elements::<_, DBEngineVersionMessage, _>(tag_name, stack, |name, stack, obj| {
2699            match name {
2700                "DBEngineVersions" => {
2701                    obj.db_engine_versions.get_or_insert(vec![]).extend(
2702                        DBEngineVersionListDeserializer::deserialize("DBEngineVersions", stack)?,
2703                    );
2704                }
2705                "Marker" => {
2706                    obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
2707                }
2708                _ => skip_tree(stack),
2709            }
2710            Ok(())
2711        })
2712    }
2713}
2714/// <p>Contains the details of an Amazon Neptune DB instance.</p> <p>This data type is used as a response element in the <a>DescribeDBInstances</a> action.</p>
2715#[derive(Clone, Debug, Default, PartialEq)]
2716#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2717pub struct DBInstance {
2718    /// <p>Specifies the allocated storage size specified in gibibytes.</p>
2719    pub allocated_storage: Option<i64>,
2720    /// <p>Indicates that minor version patches are applied automatically.</p>
2721    pub auto_minor_version_upgrade: Option<bool>,
2722    /// <p>Specifies the name of the Availability Zone the DB instance is located in.</p>
2723    pub availability_zone: Option<String>,
2724    /// <p>Specifies the number of days for which automatic DB snapshots are retained.</p>
2725    pub backup_retention_period: Option<i64>,
2726    /// <p>The identifier of the CA certificate for this DB instance.</p>
2727    pub ca_certificate_identifier: Option<String>,
2728    /// <p> <i>(Not supported by Neptune)</i> </p>
2729    pub character_set_name: Option<String>,
2730    /// <p>Specifies whether tags are copied from the DB instance to snapshots of the DB instance.</p>
2731    pub copy_tags_to_snapshot: Option<bool>,
2732    /// <p>If the DB instance is a member of a DB cluster, contains the name of the DB cluster that the DB instance is a member of.</p>
2733    pub db_cluster_identifier: Option<String>,
2734    /// <p>The Amazon Resource Name (ARN) for the DB instance.</p>
2735    pub db_instance_arn: Option<String>,
2736    /// <p>Contains the name of the compute and memory capacity class of the DB instance.</p>
2737    pub db_instance_class: Option<String>,
2738    /// <p>Contains a user-supplied database identifier. This identifier is the unique key that identifies a DB instance.</p>
2739    pub db_instance_identifier: Option<String>,
2740    /// <p>Specifies the current state of this database.</p>
2741    pub db_instance_status: Option<String>,
2742    /// <p>The database name.</p>
2743    pub db_name: Option<String>,
2744    /// <p>Provides the list of DB parameter groups applied to this DB instance.</p>
2745    pub db_parameter_groups: Option<Vec<DBParameterGroupStatus>>,
2746    /// <p> Provides List of DB security group elements containing only <code>DBSecurityGroup.Name</code> and <code>DBSecurityGroup.Status</code> subelements.</p>
2747    pub db_security_groups: Option<Vec<DBSecurityGroupMembership>>,
2748    /// <p>Specifies information on the subnet group associated with the DB instance, including the name, description, and subnets in the subnet group.</p>
2749    pub db_subnet_group: Option<DBSubnetGroup>,
2750    /// <p>Specifies the port that the DB instance listens on. If the DB instance is part of a DB cluster, this can be a different port than the DB cluster port.</p>
2751    pub db_instance_port: Option<i64>,
2752    /// <p>The AWS Region-unique, immutable identifier for the DB instance. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.</p>
2753    pub dbi_resource_id: Option<String>,
2754    /// <p>Indicates whether or not the DB instance has deletion protection enabled. The instance can't be deleted when deletion protection is enabled. See <a href="https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-instances-delete.html">Deleting a DB Instance</a>.</p>
2755    pub deletion_protection: Option<bool>,
2756    /// <p>Not supported</p>
2757    pub domain_memberships: Option<Vec<DomainMembership>>,
2758    /// <p>A list of log types that this DB instance is configured to export to CloudWatch Logs.</p>
2759    pub enabled_cloudwatch_logs_exports: Option<Vec<String>>,
2760    /// <p>Specifies the connection endpoint.</p>
2761    pub endpoint: Option<Endpoint>,
2762    /// <p>Provides the name of the database engine to be used for this DB instance.</p>
2763    pub engine: Option<String>,
2764    /// <p>Indicates the database engine version.</p>
2765    pub engine_version: Option<String>,
2766    /// <p>The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log stream that receives the Enhanced Monitoring metrics data for the DB instance.</p>
2767    pub enhanced_monitoring_resource_arn: Option<String>,
2768    /// <p>True if AWS Identity and Access Management (IAM) authentication is enabled, and otherwise false.</p>
2769    pub iam_database_authentication_enabled: Option<bool>,
2770    /// <p>Provides the date and time the DB instance was created.</p>
2771    pub instance_create_time: Option<String>,
2772    /// <p>Specifies the Provisioned IOPS (I/O operations per second) value.</p>
2773    pub iops: Option<i64>,
2774    /// <p> Not supported: The encryption for DB instances is managed by the DB cluster.</p>
2775    pub kms_key_id: Option<String>,
2776    /// <p>Specifies the latest time to which a database can be restored with point-in-time restore.</p>
2777    pub latest_restorable_time: Option<String>,
2778    /// <p>License model information for this DB instance.</p>
2779    pub license_model: Option<String>,
2780    /// <p>Contains the master username for the DB instance.</p>
2781    pub master_username: Option<String>,
2782    /// <p>The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance.</p>
2783    pub monitoring_interval: Option<i64>,
2784    /// <p>The ARN for the IAM role that permits Neptune to send Enhanced Monitoring metrics to Amazon CloudWatch Logs.</p>
2785    pub monitoring_role_arn: Option<String>,
2786    /// <p>Specifies if the DB instance is a Multi-AZ deployment.</p>
2787    pub multi_az: Option<bool>,
2788    /// <p> <i>(Not supported by Neptune)</i> </p>
2789    pub option_group_memberships: Option<Vec<OptionGroupMembership>>,
2790    /// <p>Specifies that changes to the DB instance are pending. This element is only included when changes are pending. Specific changes are identified by subelements.</p>
2791    pub pending_modified_values: Option<PendingModifiedValues>,
2792    /// <p> <i>(Not supported by Neptune)</i> </p>
2793    pub performance_insights_enabled: Option<bool>,
2794    /// <p> <i>(Not supported by Neptune)</i> </p>
2795    pub performance_insights_kms_key_id: Option<String>,
2796    /// <p> Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the <code>BackupRetentionPeriod</code>.</p>
2797    pub preferred_backup_window: Option<String>,
2798    /// <p>Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).</p>
2799    pub preferred_maintenance_window: Option<String>,
2800    /// <p>A value that specifies the order in which a Read Replica is promoted to the primary instance after a failure of the existing primary instance. </p>
2801    pub promotion_tier: Option<i64>,
2802    /// <p>Contains one or more identifiers of DB clusters that are Read Replicas of this DB instance.</p>
2803    pub read_replica_db_cluster_identifiers: Option<Vec<String>>,
2804    /// <p>Contains one or more identifiers of the Read Replicas associated with this DB instance.</p>
2805    pub read_replica_db_instance_identifiers: Option<Vec<String>>,
2806    /// <p>Contains the identifier of the source DB instance if this DB instance is a Read Replica.</p>
2807    pub read_replica_source_db_instance_identifier: Option<String>,
2808    /// <p>If present, specifies the name of the secondary Availability Zone for a DB instance with multi-AZ support.</p>
2809    pub secondary_availability_zone: Option<String>,
2810    /// <p>The status of a Read Replica. If the instance is not a Read Replica, this is blank.</p>
2811    pub status_infos: Option<Vec<DBInstanceStatusInfo>>,
2812    /// <p>Not supported: The encryption for DB instances is managed by the DB cluster.</p>
2813    pub storage_encrypted: Option<bool>,
2814    /// <p>Specifies the storage type associated with DB instance.</p>
2815    pub storage_type: Option<String>,
2816    /// <p>The ARN from the key store with which the instance is associated for TDE encryption.</p>
2817    pub tde_credential_arn: Option<String>,
2818    /// <p>Not supported.</p>
2819    pub timezone: Option<String>,
2820    /// <p>Provides a list of VPC security group elements that the DB instance belongs to.</p>
2821    pub vpc_security_groups: Option<Vec<VpcSecurityGroupMembership>>,
2822}
2823
2824#[allow(dead_code)]
2825struct DBInstanceDeserializer;
2826impl DBInstanceDeserializer {
2827    #[allow(dead_code, unused_variables)]
2828    fn deserialize<T: Peek + Next>(
2829        tag_name: &str,
2830        stack: &mut T,
2831    ) -> Result<DBInstance, XmlParseError> {
2832        deserialize_elements::<_, DBInstance, _>(tag_name, stack, |name, stack, obj| {
2833            match name {
2834                "AllocatedStorage" => {
2835                    obj.allocated_storage =
2836                        Some(IntegerDeserializer::deserialize("AllocatedStorage", stack)?);
2837                }
2838                "AutoMinorVersionUpgrade" => {
2839                    obj.auto_minor_version_upgrade = Some(BooleanDeserializer::deserialize(
2840                        "AutoMinorVersionUpgrade",
2841                        stack,
2842                    )?);
2843                }
2844                "AvailabilityZone" => {
2845                    obj.availability_zone =
2846                        Some(StringDeserializer::deserialize("AvailabilityZone", stack)?);
2847                }
2848                "BackupRetentionPeriod" => {
2849                    obj.backup_retention_period = Some(IntegerDeserializer::deserialize(
2850                        "BackupRetentionPeriod",
2851                        stack,
2852                    )?);
2853                }
2854                "CACertificateIdentifier" => {
2855                    obj.ca_certificate_identifier = Some(StringDeserializer::deserialize(
2856                        "CACertificateIdentifier",
2857                        stack,
2858                    )?);
2859                }
2860                "CharacterSetName" => {
2861                    obj.character_set_name =
2862                        Some(StringDeserializer::deserialize("CharacterSetName", stack)?);
2863                }
2864                "CopyTagsToSnapshot" => {
2865                    obj.copy_tags_to_snapshot = Some(BooleanDeserializer::deserialize(
2866                        "CopyTagsToSnapshot",
2867                        stack,
2868                    )?);
2869                }
2870                "DBClusterIdentifier" => {
2871                    obj.db_cluster_identifier = Some(StringDeserializer::deserialize(
2872                        "DBClusterIdentifier",
2873                        stack,
2874                    )?);
2875                }
2876                "DBInstanceArn" => {
2877                    obj.db_instance_arn =
2878                        Some(StringDeserializer::deserialize("DBInstanceArn", stack)?);
2879                }
2880                "DBInstanceClass" => {
2881                    obj.db_instance_class =
2882                        Some(StringDeserializer::deserialize("DBInstanceClass", stack)?);
2883                }
2884                "DBInstanceIdentifier" => {
2885                    obj.db_instance_identifier = Some(StringDeserializer::deserialize(
2886                        "DBInstanceIdentifier",
2887                        stack,
2888                    )?);
2889                }
2890                "DBInstanceStatus" => {
2891                    obj.db_instance_status =
2892                        Some(StringDeserializer::deserialize("DBInstanceStatus", stack)?);
2893                }
2894                "DBName" => {
2895                    obj.db_name = Some(StringDeserializer::deserialize("DBName", stack)?);
2896                }
2897                "DBParameterGroups" => {
2898                    obj.db_parameter_groups.get_or_insert(vec![]).extend(
2899                        DBParameterGroupStatusListDeserializer::deserialize(
2900                            "DBParameterGroups",
2901                            stack,
2902                        )?,
2903                    );
2904                }
2905                "DBSecurityGroups" => {
2906                    obj.db_security_groups.get_or_insert(vec![]).extend(
2907                        DBSecurityGroupMembershipListDeserializer::deserialize(
2908                            "DBSecurityGroups",
2909                            stack,
2910                        )?,
2911                    );
2912                }
2913                "DBSubnetGroup" => {
2914                    obj.db_subnet_group = Some(DBSubnetGroupDeserializer::deserialize(
2915                        "DBSubnetGroup",
2916                        stack,
2917                    )?);
2918                }
2919                "DbInstancePort" => {
2920                    obj.db_instance_port =
2921                        Some(IntegerDeserializer::deserialize("DbInstancePort", stack)?);
2922                }
2923                "DbiResourceId" => {
2924                    obj.dbi_resource_id =
2925                        Some(StringDeserializer::deserialize("DbiResourceId", stack)?);
2926                }
2927                "DeletionProtection" => {
2928                    obj.deletion_protection = Some(BooleanOptionalDeserializer::deserialize(
2929                        "DeletionProtection",
2930                        stack,
2931                    )?);
2932                }
2933                "DomainMemberships" => {
2934                    obj.domain_memberships.get_or_insert(vec![]).extend(
2935                        DomainMembershipListDeserializer::deserialize("DomainMemberships", stack)?,
2936                    );
2937                }
2938                "EnabledCloudwatchLogsExports" => {
2939                    obj.enabled_cloudwatch_logs_exports
2940                        .get_or_insert(vec![])
2941                        .extend(LogTypeListDeserializer::deserialize(
2942                            "EnabledCloudwatchLogsExports",
2943                            stack,
2944                        )?);
2945                }
2946                "Endpoint" => {
2947                    obj.endpoint = Some(EndpointDeserializer::deserialize("Endpoint", stack)?);
2948                }
2949                "Engine" => {
2950                    obj.engine = Some(StringDeserializer::deserialize("Engine", stack)?);
2951                }
2952                "EngineVersion" => {
2953                    obj.engine_version =
2954                        Some(StringDeserializer::deserialize("EngineVersion", stack)?);
2955                }
2956                "EnhancedMonitoringResourceArn" => {
2957                    obj.enhanced_monitoring_resource_arn = Some(StringDeserializer::deserialize(
2958                        "EnhancedMonitoringResourceArn",
2959                        stack,
2960                    )?);
2961                }
2962                "IAMDatabaseAuthenticationEnabled" => {
2963                    obj.iam_database_authentication_enabled =
2964                        Some(BooleanDeserializer::deserialize(
2965                            "IAMDatabaseAuthenticationEnabled",
2966                            stack,
2967                        )?);
2968                }
2969                "InstanceCreateTime" => {
2970                    obj.instance_create_time = Some(TStampDeserializer::deserialize(
2971                        "InstanceCreateTime",
2972                        stack,
2973                    )?);
2974                }
2975                "Iops" => {
2976                    obj.iops = Some(IntegerOptionalDeserializer::deserialize("Iops", stack)?);
2977                }
2978                "KmsKeyId" => {
2979                    obj.kms_key_id = Some(StringDeserializer::deserialize("KmsKeyId", stack)?);
2980                }
2981                "LatestRestorableTime" => {
2982                    obj.latest_restorable_time = Some(TStampDeserializer::deserialize(
2983                        "LatestRestorableTime",
2984                        stack,
2985                    )?);
2986                }
2987                "LicenseModel" => {
2988                    obj.license_model =
2989                        Some(StringDeserializer::deserialize("LicenseModel", stack)?);
2990                }
2991                "MasterUsername" => {
2992                    obj.master_username =
2993                        Some(StringDeserializer::deserialize("MasterUsername", stack)?);
2994                }
2995                "MonitoringInterval" => {
2996                    obj.monitoring_interval = Some(IntegerOptionalDeserializer::deserialize(
2997                        "MonitoringInterval",
2998                        stack,
2999                    )?);
3000                }
3001                "MonitoringRoleArn" => {
3002                    obj.monitoring_role_arn =
3003                        Some(StringDeserializer::deserialize("MonitoringRoleArn", stack)?);
3004                }
3005                "MultiAZ" => {
3006                    obj.multi_az = Some(BooleanDeserializer::deserialize("MultiAZ", stack)?);
3007                }
3008                "OptionGroupMemberships" => {
3009                    obj.option_group_memberships.get_or_insert(vec![]).extend(
3010                        OptionGroupMembershipListDeserializer::deserialize(
3011                            "OptionGroupMemberships",
3012                            stack,
3013                        )?,
3014                    );
3015                }
3016                "PendingModifiedValues" => {
3017                    obj.pending_modified_values =
3018                        Some(PendingModifiedValuesDeserializer::deserialize(
3019                            "PendingModifiedValues",
3020                            stack,
3021                        )?);
3022                }
3023                "PerformanceInsightsEnabled" => {
3024                    obj.performance_insights_enabled =
3025                        Some(BooleanOptionalDeserializer::deserialize(
3026                            "PerformanceInsightsEnabled",
3027                            stack,
3028                        )?);
3029                }
3030                "PerformanceInsightsKMSKeyId" => {
3031                    obj.performance_insights_kms_key_id = Some(StringDeserializer::deserialize(
3032                        "PerformanceInsightsKMSKeyId",
3033                        stack,
3034                    )?);
3035                }
3036                "PreferredBackupWindow" => {
3037                    obj.preferred_backup_window = Some(StringDeserializer::deserialize(
3038                        "PreferredBackupWindow",
3039                        stack,
3040                    )?);
3041                }
3042                "PreferredMaintenanceWindow" => {
3043                    obj.preferred_maintenance_window = Some(StringDeserializer::deserialize(
3044                        "PreferredMaintenanceWindow",
3045                        stack,
3046                    )?);
3047                }
3048                "PromotionTier" => {
3049                    obj.promotion_tier = Some(IntegerOptionalDeserializer::deserialize(
3050                        "PromotionTier",
3051                        stack,
3052                    )?);
3053                }
3054                "ReadReplicaDBClusterIdentifiers" => {
3055                    obj.read_replica_db_cluster_identifiers
3056                        .get_or_insert(vec![])
3057                        .extend(ReadReplicaDBClusterIdentifierListDeserializer::deserialize(
3058                            "ReadReplicaDBClusterIdentifiers",
3059                            stack,
3060                        )?);
3061                }
3062                "ReadReplicaDBInstanceIdentifiers" => {
3063                    obj.read_replica_db_instance_identifiers
3064                        .get_or_insert(vec![])
3065                        .extend(
3066                            ReadReplicaDBInstanceIdentifierListDeserializer::deserialize(
3067                                "ReadReplicaDBInstanceIdentifiers",
3068                                stack,
3069                            )?,
3070                        );
3071                }
3072                "ReadReplicaSourceDBInstanceIdentifier" => {
3073                    obj.read_replica_source_db_instance_identifier =
3074                        Some(StringDeserializer::deserialize(
3075                            "ReadReplicaSourceDBInstanceIdentifier",
3076                            stack,
3077                        )?);
3078                }
3079                "SecondaryAvailabilityZone" => {
3080                    obj.secondary_availability_zone = Some(StringDeserializer::deserialize(
3081                        "SecondaryAvailabilityZone",
3082                        stack,
3083                    )?);
3084                }
3085                "StatusInfos" => {
3086                    obj.status_infos.get_or_insert(vec![]).extend(
3087                        DBInstanceStatusInfoListDeserializer::deserialize("StatusInfos", stack)?,
3088                    );
3089                }
3090                "StorageEncrypted" => {
3091                    obj.storage_encrypted =
3092                        Some(BooleanDeserializer::deserialize("StorageEncrypted", stack)?);
3093                }
3094                "StorageType" => {
3095                    obj.storage_type = Some(StringDeserializer::deserialize("StorageType", stack)?);
3096                }
3097                "TdeCredentialArn" => {
3098                    obj.tde_credential_arn =
3099                        Some(StringDeserializer::deserialize("TdeCredentialArn", stack)?);
3100                }
3101                "Timezone" => {
3102                    obj.timezone = Some(StringDeserializer::deserialize("Timezone", stack)?);
3103                }
3104                "VpcSecurityGroups" => {
3105                    obj.vpc_security_groups.get_or_insert(vec![]).extend(
3106                        VpcSecurityGroupMembershipListDeserializer::deserialize(
3107                            "VpcSecurityGroups",
3108                            stack,
3109                        )?,
3110                    );
3111                }
3112                _ => skip_tree(stack),
3113            }
3114            Ok(())
3115        })
3116    }
3117}
3118#[allow(dead_code)]
3119struct DBInstanceListDeserializer;
3120impl DBInstanceListDeserializer {
3121    #[allow(dead_code, unused_variables)]
3122    fn deserialize<T: Peek + Next>(
3123        tag_name: &str,
3124        stack: &mut T,
3125    ) -> Result<Vec<DBInstance>, XmlParseError> {
3126        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3127            if name == "DBInstance" {
3128                obj.push(DBInstanceDeserializer::deserialize("DBInstance", stack)?);
3129            } else {
3130                skip_tree(stack);
3131            }
3132            Ok(())
3133        })
3134    }
3135}
3136#[derive(Clone, Debug, Default, PartialEq)]
3137#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3138pub struct DBInstanceMessage {
3139    /// <p> A list of <a>DBInstance</a> instances.</p>
3140    pub db_instances: Option<Vec<DBInstance>>,
3141    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code> .</p>
3142    pub marker: Option<String>,
3143}
3144
3145#[allow(dead_code)]
3146struct DBInstanceMessageDeserializer;
3147impl DBInstanceMessageDeserializer {
3148    #[allow(dead_code, unused_variables)]
3149    fn deserialize<T: Peek + Next>(
3150        tag_name: &str,
3151        stack: &mut T,
3152    ) -> Result<DBInstanceMessage, XmlParseError> {
3153        deserialize_elements::<_, DBInstanceMessage, _>(tag_name, stack, |name, stack, obj| {
3154            match name {
3155                "DBInstances" => {
3156                    obj.db_instances.get_or_insert(vec![]).extend(
3157                        DBInstanceListDeserializer::deserialize("DBInstances", stack)?,
3158                    );
3159                }
3160                "Marker" => {
3161                    obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
3162                }
3163                _ => skip_tree(stack),
3164            }
3165            Ok(())
3166        })
3167    }
3168}
3169/// <p>Provides a list of status information for a DB instance.</p>
3170#[derive(Clone, Debug, Default, PartialEq)]
3171#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3172pub struct DBInstanceStatusInfo {
3173    /// <p>Details of the error if there is an error for the instance. If the instance is not in an error state, this value is blank.</p>
3174    pub message: Option<String>,
3175    /// <p>Boolean value that is true if the instance is operating normally, or false if the instance is in an error state.</p>
3176    pub normal: Option<bool>,
3177    /// <p>Status of the DB instance. For a StatusType of read replica, the values can be replicating, error, stopped, or terminated.</p>
3178    pub status: Option<String>,
3179    /// <p>This value is currently "read replication."</p>
3180    pub status_type: Option<String>,
3181}
3182
3183#[allow(dead_code)]
3184struct DBInstanceStatusInfoDeserializer;
3185impl DBInstanceStatusInfoDeserializer {
3186    #[allow(dead_code, unused_variables)]
3187    fn deserialize<T: Peek + Next>(
3188        tag_name: &str,
3189        stack: &mut T,
3190    ) -> Result<DBInstanceStatusInfo, XmlParseError> {
3191        deserialize_elements::<_, DBInstanceStatusInfo, _>(tag_name, stack, |name, stack, obj| {
3192            match name {
3193                "Message" => {
3194                    obj.message = Some(StringDeserializer::deserialize("Message", stack)?);
3195                }
3196                "Normal" => {
3197                    obj.normal = Some(BooleanDeserializer::deserialize("Normal", stack)?);
3198                }
3199                "Status" => {
3200                    obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
3201                }
3202                "StatusType" => {
3203                    obj.status_type = Some(StringDeserializer::deserialize("StatusType", stack)?);
3204                }
3205                _ => skip_tree(stack),
3206            }
3207            Ok(())
3208        })
3209    }
3210}
3211#[allow(dead_code)]
3212struct DBInstanceStatusInfoListDeserializer;
3213impl DBInstanceStatusInfoListDeserializer {
3214    #[allow(dead_code, unused_variables)]
3215    fn deserialize<T: Peek + Next>(
3216        tag_name: &str,
3217        stack: &mut T,
3218    ) -> Result<Vec<DBInstanceStatusInfo>, XmlParseError> {
3219        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3220            if name == "DBInstanceStatusInfo" {
3221                obj.push(DBInstanceStatusInfoDeserializer::deserialize(
3222                    "DBInstanceStatusInfo",
3223                    stack,
3224                )?);
3225            } else {
3226                skip_tree(stack);
3227            }
3228            Ok(())
3229        })
3230    }
3231}
3232/// <p>Contains the details of an Amazon Neptune DB parameter group.</p> <p>This data type is used as a response element in the <a>DescribeDBParameterGroups</a> action.</p>
3233#[derive(Clone, Debug, Default, PartialEq)]
3234#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3235pub struct DBParameterGroup {
3236    /// <p>The Amazon Resource Name (ARN) for the DB parameter group.</p>
3237    pub db_parameter_group_arn: Option<String>,
3238    /// <p>Provides the name of the DB parameter group family that this DB parameter group is compatible with.</p>
3239    pub db_parameter_group_family: Option<String>,
3240    /// <p>Provides the name of the DB parameter group.</p>
3241    pub db_parameter_group_name: Option<String>,
3242    /// <p>Provides the customer-specified description for this DB parameter group.</p>
3243    pub description: Option<String>,
3244}
3245
3246#[allow(dead_code)]
3247struct DBParameterGroupDeserializer;
3248impl DBParameterGroupDeserializer {
3249    #[allow(dead_code, unused_variables)]
3250    fn deserialize<T: Peek + Next>(
3251        tag_name: &str,
3252        stack: &mut T,
3253    ) -> Result<DBParameterGroup, XmlParseError> {
3254        deserialize_elements::<_, DBParameterGroup, _>(tag_name, stack, |name, stack, obj| {
3255            match name {
3256                "DBParameterGroupArn" => {
3257                    obj.db_parameter_group_arn = Some(StringDeserializer::deserialize(
3258                        "DBParameterGroupArn",
3259                        stack,
3260                    )?);
3261                }
3262                "DBParameterGroupFamily" => {
3263                    obj.db_parameter_group_family = Some(StringDeserializer::deserialize(
3264                        "DBParameterGroupFamily",
3265                        stack,
3266                    )?);
3267                }
3268                "DBParameterGroupName" => {
3269                    obj.db_parameter_group_name = Some(StringDeserializer::deserialize(
3270                        "DBParameterGroupName",
3271                        stack,
3272                    )?);
3273                }
3274                "Description" => {
3275                    obj.description = Some(StringDeserializer::deserialize("Description", stack)?);
3276                }
3277                _ => skip_tree(stack),
3278            }
3279            Ok(())
3280        })
3281    }
3282}
3283#[derive(Clone, Debug, Default, PartialEq)]
3284#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3285pub struct DBParameterGroupDetails {
3286    /// <p>An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
3287    pub marker: Option<String>,
3288    /// <p>A list of <a>Parameter</a> values.</p>
3289    pub parameters: Option<Vec<Parameter>>,
3290}
3291
3292#[allow(dead_code)]
3293struct DBParameterGroupDetailsDeserializer;
3294impl DBParameterGroupDetailsDeserializer {
3295    #[allow(dead_code, unused_variables)]
3296    fn deserialize<T: Peek + Next>(
3297        tag_name: &str,
3298        stack: &mut T,
3299    ) -> Result<DBParameterGroupDetails, XmlParseError> {
3300        deserialize_elements::<_, DBParameterGroupDetails, _>(
3301            tag_name,
3302            stack,
3303            |name, stack, obj| {
3304                match name {
3305                    "Marker" => {
3306                        obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
3307                    }
3308                    "Parameters" => {
3309                        obj.parameters.get_or_insert(vec![]).extend(
3310                            ParametersListDeserializer::deserialize("Parameters", stack)?,
3311                        );
3312                    }
3313                    _ => skip_tree(stack),
3314                }
3315                Ok(())
3316            },
3317        )
3318    }
3319}
3320#[allow(dead_code)]
3321struct DBParameterGroupListDeserializer;
3322impl DBParameterGroupListDeserializer {
3323    #[allow(dead_code, unused_variables)]
3324    fn deserialize<T: Peek + Next>(
3325        tag_name: &str,
3326        stack: &mut T,
3327    ) -> Result<Vec<DBParameterGroup>, XmlParseError> {
3328        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3329            if name == "DBParameterGroup" {
3330                obj.push(DBParameterGroupDeserializer::deserialize(
3331                    "DBParameterGroup",
3332                    stack,
3333                )?);
3334            } else {
3335                skip_tree(stack);
3336            }
3337            Ok(())
3338        })
3339    }
3340}
3341#[derive(Clone, Debug, Default, PartialEq)]
3342#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3343pub struct DBParameterGroupNameMessage {
3344    /// <p>Provides the name of the DB parameter group.</p>
3345    pub db_parameter_group_name: Option<String>,
3346}
3347
3348#[allow(dead_code)]
3349struct DBParameterGroupNameMessageDeserializer;
3350impl DBParameterGroupNameMessageDeserializer {
3351    #[allow(dead_code, unused_variables)]
3352    fn deserialize<T: Peek + Next>(
3353        tag_name: &str,
3354        stack: &mut T,
3355    ) -> Result<DBParameterGroupNameMessage, XmlParseError> {
3356        deserialize_elements::<_, DBParameterGroupNameMessage, _>(
3357            tag_name,
3358            stack,
3359            |name, stack, obj| {
3360                match name {
3361                    "DBParameterGroupName" => {
3362                        obj.db_parameter_group_name = Some(StringDeserializer::deserialize(
3363                            "DBParameterGroupName",
3364                            stack,
3365                        )?);
3366                    }
3367                    _ => skip_tree(stack),
3368                }
3369                Ok(())
3370            },
3371        )
3372    }
3373}
3374/// <p><p>The status of the DB parameter group.</p> <p>This data type is used as a response element in the following actions:</p> <ul> <li> <p> <a>CreateDBInstance</a> </p> </li> <li> <p> <a>DeleteDBInstance</a> </p> </li> <li> <p> <a>ModifyDBInstance</a> </p> </li> <li> <p> <a>RebootDBInstance</a> </p> </li> </ul></p>
3375#[derive(Clone, Debug, Default, PartialEq)]
3376#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3377pub struct DBParameterGroupStatus {
3378    /// <p>The name of the DP parameter group.</p>
3379    pub db_parameter_group_name: Option<String>,
3380    /// <p>The status of parameter updates.</p>
3381    pub parameter_apply_status: Option<String>,
3382}
3383
3384#[allow(dead_code)]
3385struct DBParameterGroupStatusDeserializer;
3386impl DBParameterGroupStatusDeserializer {
3387    #[allow(dead_code, unused_variables)]
3388    fn deserialize<T: Peek + Next>(
3389        tag_name: &str,
3390        stack: &mut T,
3391    ) -> Result<DBParameterGroupStatus, XmlParseError> {
3392        deserialize_elements::<_, DBParameterGroupStatus, _>(tag_name, stack, |name, stack, obj| {
3393            match name {
3394                "DBParameterGroupName" => {
3395                    obj.db_parameter_group_name = Some(StringDeserializer::deserialize(
3396                        "DBParameterGroupName",
3397                        stack,
3398                    )?);
3399                }
3400                "ParameterApplyStatus" => {
3401                    obj.parameter_apply_status = Some(StringDeserializer::deserialize(
3402                        "ParameterApplyStatus",
3403                        stack,
3404                    )?);
3405                }
3406                _ => skip_tree(stack),
3407            }
3408            Ok(())
3409        })
3410    }
3411}
3412#[allow(dead_code)]
3413struct DBParameterGroupStatusListDeserializer;
3414impl DBParameterGroupStatusListDeserializer {
3415    #[allow(dead_code, unused_variables)]
3416    fn deserialize<T: Peek + Next>(
3417        tag_name: &str,
3418        stack: &mut T,
3419    ) -> Result<Vec<DBParameterGroupStatus>, XmlParseError> {
3420        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3421            if name == "DBParameterGroup" {
3422                obj.push(DBParameterGroupStatusDeserializer::deserialize(
3423                    "DBParameterGroup",
3424                    stack,
3425                )?);
3426            } else {
3427                skip_tree(stack);
3428            }
3429            Ok(())
3430        })
3431    }
3432}
3433#[derive(Clone, Debug, Default, PartialEq)]
3434#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3435pub struct DBParameterGroupsMessage {
3436    /// <p>A list of <a>DBParameterGroup</a> instances.</p>
3437    pub db_parameter_groups: Option<Vec<DBParameterGroup>>,
3438    /// <p>An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
3439    pub marker: Option<String>,
3440}
3441
3442#[allow(dead_code)]
3443struct DBParameterGroupsMessageDeserializer;
3444impl DBParameterGroupsMessageDeserializer {
3445    #[allow(dead_code, unused_variables)]
3446    fn deserialize<T: Peek + Next>(
3447        tag_name: &str,
3448        stack: &mut T,
3449    ) -> Result<DBParameterGroupsMessage, XmlParseError> {
3450        deserialize_elements::<_, DBParameterGroupsMessage, _>(
3451            tag_name,
3452            stack,
3453            |name, stack, obj| {
3454                match name {
3455                    "DBParameterGroups" => {
3456                        obj.db_parameter_groups.get_or_insert(vec![]).extend(
3457                            DBParameterGroupListDeserializer::deserialize(
3458                                "DBParameterGroups",
3459                                stack,
3460                            )?,
3461                        );
3462                    }
3463                    "Marker" => {
3464                        obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
3465                    }
3466                    _ => skip_tree(stack),
3467                }
3468                Ok(())
3469            },
3470        )
3471    }
3472}
3473/// <p>Specifies membership in a designated DB security group.</p>
3474#[derive(Clone, Debug, Default, PartialEq)]
3475#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3476pub struct DBSecurityGroupMembership {
3477    /// <p>The name of the DB security group.</p>
3478    pub db_security_group_name: Option<String>,
3479    /// <p>The status of the DB security group.</p>
3480    pub status: Option<String>,
3481}
3482
3483#[allow(dead_code)]
3484struct DBSecurityGroupMembershipDeserializer;
3485impl DBSecurityGroupMembershipDeserializer {
3486    #[allow(dead_code, unused_variables)]
3487    fn deserialize<T: Peek + Next>(
3488        tag_name: &str,
3489        stack: &mut T,
3490    ) -> Result<DBSecurityGroupMembership, XmlParseError> {
3491        deserialize_elements::<_, DBSecurityGroupMembership, _>(
3492            tag_name,
3493            stack,
3494            |name, stack, obj| {
3495                match name {
3496                    "DBSecurityGroupName" => {
3497                        obj.db_security_group_name = Some(StringDeserializer::deserialize(
3498                            "DBSecurityGroupName",
3499                            stack,
3500                        )?);
3501                    }
3502                    "Status" => {
3503                        obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
3504                    }
3505                    _ => skip_tree(stack),
3506                }
3507                Ok(())
3508            },
3509        )
3510    }
3511}
3512#[allow(dead_code)]
3513struct DBSecurityGroupMembershipListDeserializer;
3514impl DBSecurityGroupMembershipListDeserializer {
3515    #[allow(dead_code, unused_variables)]
3516    fn deserialize<T: Peek + Next>(
3517        tag_name: &str,
3518        stack: &mut T,
3519    ) -> Result<Vec<DBSecurityGroupMembership>, XmlParseError> {
3520        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3521            if name == "DBSecurityGroup" {
3522                obj.push(DBSecurityGroupMembershipDeserializer::deserialize(
3523                    "DBSecurityGroup",
3524                    stack,
3525                )?);
3526            } else {
3527                skip_tree(stack);
3528            }
3529            Ok(())
3530        })
3531    }
3532}
3533
3534/// Serialize `DBSecurityGroupNameList` contents to a `SignedRequest`.
3535struct DBSecurityGroupNameListSerializer;
3536impl DBSecurityGroupNameListSerializer {
3537    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
3538        for (index, obj) in obj.iter().enumerate() {
3539            let key = format!("{}.member.{}", name, index + 1);
3540            params.put(&key, &obj);
3541        }
3542    }
3543}
3544
3545/// <p>Contains the details of an Amazon Neptune DB subnet group.</p> <p>This data type is used as a response element in the <a>DescribeDBSubnetGroups</a> action.</p>
3546#[derive(Clone, Debug, Default, PartialEq)]
3547#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3548pub struct DBSubnetGroup {
3549    /// <p>The Amazon Resource Name (ARN) for the DB subnet group.</p>
3550    pub db_subnet_group_arn: Option<String>,
3551    /// <p>Provides the description of the DB subnet group.</p>
3552    pub db_subnet_group_description: Option<String>,
3553    /// <p>The name of the DB subnet group.</p>
3554    pub db_subnet_group_name: Option<String>,
3555    /// <p>Provides the status of the DB subnet group.</p>
3556    pub subnet_group_status: Option<String>,
3557    /// <p> Contains a list of <a>Subnet</a> elements.</p>
3558    pub subnets: Option<Vec<Subnet>>,
3559    /// <p>Provides the VpcId of the DB subnet group.</p>
3560    pub vpc_id: Option<String>,
3561}
3562
3563#[allow(dead_code)]
3564struct DBSubnetGroupDeserializer;
3565impl DBSubnetGroupDeserializer {
3566    #[allow(dead_code, unused_variables)]
3567    fn deserialize<T: Peek + Next>(
3568        tag_name: &str,
3569        stack: &mut T,
3570    ) -> Result<DBSubnetGroup, XmlParseError> {
3571        deserialize_elements::<_, DBSubnetGroup, _>(tag_name, stack, |name, stack, obj| {
3572            match name {
3573                "DBSubnetGroupArn" => {
3574                    obj.db_subnet_group_arn =
3575                        Some(StringDeserializer::deserialize("DBSubnetGroupArn", stack)?);
3576                }
3577                "DBSubnetGroupDescription" => {
3578                    obj.db_subnet_group_description = Some(StringDeserializer::deserialize(
3579                        "DBSubnetGroupDescription",
3580                        stack,
3581                    )?);
3582                }
3583                "DBSubnetGroupName" => {
3584                    obj.db_subnet_group_name =
3585                        Some(StringDeserializer::deserialize("DBSubnetGroupName", stack)?);
3586                }
3587                "SubnetGroupStatus" => {
3588                    obj.subnet_group_status =
3589                        Some(StringDeserializer::deserialize("SubnetGroupStatus", stack)?);
3590                }
3591                "Subnets" => {
3592                    obj.subnets
3593                        .get_or_insert(vec![])
3594                        .extend(SubnetListDeserializer::deserialize("Subnets", stack)?);
3595                }
3596                "VpcId" => {
3597                    obj.vpc_id = Some(StringDeserializer::deserialize("VpcId", stack)?);
3598                }
3599                _ => skip_tree(stack),
3600            }
3601            Ok(())
3602        })
3603    }
3604}
3605#[derive(Clone, Debug, Default, PartialEq)]
3606#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3607pub struct DBSubnetGroupMessage {
3608    /// <p> A list of <a>DBSubnetGroup</a> instances.</p>
3609    pub db_subnet_groups: Option<Vec<DBSubnetGroup>>,
3610    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
3611    pub marker: Option<String>,
3612}
3613
3614#[allow(dead_code)]
3615struct DBSubnetGroupMessageDeserializer;
3616impl DBSubnetGroupMessageDeserializer {
3617    #[allow(dead_code, unused_variables)]
3618    fn deserialize<T: Peek + Next>(
3619        tag_name: &str,
3620        stack: &mut T,
3621    ) -> Result<DBSubnetGroupMessage, XmlParseError> {
3622        deserialize_elements::<_, DBSubnetGroupMessage, _>(tag_name, stack, |name, stack, obj| {
3623            match name {
3624                "DBSubnetGroups" => {
3625                    obj.db_subnet_groups.get_or_insert(vec![]).extend(
3626                        DBSubnetGroupsDeserializer::deserialize("DBSubnetGroups", stack)?,
3627                    );
3628                }
3629                "Marker" => {
3630                    obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
3631                }
3632                _ => skip_tree(stack),
3633            }
3634            Ok(())
3635        })
3636    }
3637}
3638#[allow(dead_code)]
3639struct DBSubnetGroupsDeserializer;
3640impl DBSubnetGroupsDeserializer {
3641    #[allow(dead_code, unused_variables)]
3642    fn deserialize<T: Peek + Next>(
3643        tag_name: &str,
3644        stack: &mut T,
3645    ) -> Result<Vec<DBSubnetGroup>, XmlParseError> {
3646        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3647            if name == "DBSubnetGroup" {
3648                obj.push(DBSubnetGroupDeserializer::deserialize(
3649                    "DBSubnetGroup",
3650                    stack,
3651                )?);
3652            } else {
3653                skip_tree(stack);
3654            }
3655            Ok(())
3656        })
3657    }
3658}
3659#[derive(Clone, Debug, Default, PartialEq)]
3660#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3661pub struct DeleteDBClusterMessage {
3662    /// <p><p>The DB cluster identifier for the DB cluster to be deleted. This parameter isn&#39;t case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>Must match an existing DBClusterIdentifier.</p> </li> </ul></p>
3663    pub db_cluster_identifier: String,
3664    /// <p><p> The DB cluster snapshot identifier of the new DB cluster snapshot created when <code>SkipFinalSnapshot</code> is set to <code>false</code>.</p> <note> <p> Specifying this parameter and also setting the <code>SkipFinalShapshot</code> parameter to true results in an error.</p> </note> <p>Constraints:</p> <ul> <li> <p>Must be 1 to 255 letters, numbers, or hyphens.</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul></p>
3665    pub final_db_snapshot_identifier: Option<String>,
3666    /// <p> Determines whether a final DB cluster snapshot is created before the DB cluster is deleted. If <code>true</code> is specified, no DB cluster snapshot is created. If <code>false</code> is specified, a DB cluster snapshot is created before the DB cluster is deleted.</p> <note> <p>You must specify a <code>FinalDBSnapshotIdentifier</code> parameter if <code>SkipFinalSnapshot</code> is <code>false</code>.</p> </note> <p>Default: <code>false</code> </p>
3667    pub skip_final_snapshot: Option<bool>,
3668}
3669
3670/// Serialize `DeleteDBClusterMessage` contents to a `SignedRequest`.
3671struct DeleteDBClusterMessageSerializer;
3672impl DeleteDBClusterMessageSerializer {
3673    fn serialize(params: &mut Params, name: &str, obj: &DeleteDBClusterMessage) {
3674        let mut prefix = name.to_string();
3675        if prefix != "" {
3676            prefix.push_str(".");
3677        }
3678
3679        params.put(
3680            &format!("{}{}", prefix, "DBClusterIdentifier"),
3681            &obj.db_cluster_identifier,
3682        );
3683        if let Some(ref field_value) = obj.final_db_snapshot_identifier {
3684            params.put(
3685                &format!("{}{}", prefix, "FinalDBSnapshotIdentifier"),
3686                &field_value,
3687            );
3688        }
3689        if let Some(ref field_value) = obj.skip_final_snapshot {
3690            params.put(&format!("{}{}", prefix, "SkipFinalSnapshot"), &field_value);
3691        }
3692    }
3693}
3694
3695#[derive(Clone, Debug, Default, PartialEq)]
3696#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3697pub struct DeleteDBClusterParameterGroupMessage {
3698    /// <p><p>The name of the DB cluster parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Must be the name of an existing DB cluster parameter group.</p> </li> <li> <p>You can&#39;t delete a default DB cluster parameter group.</p> </li> <li> <p>Cannot be associated with any DB clusters.</p> </li> </ul></p>
3699    pub db_cluster_parameter_group_name: String,
3700}
3701
3702/// Serialize `DeleteDBClusterParameterGroupMessage` contents to a `SignedRequest`.
3703struct DeleteDBClusterParameterGroupMessageSerializer;
3704impl DeleteDBClusterParameterGroupMessageSerializer {
3705    fn serialize(params: &mut Params, name: &str, obj: &DeleteDBClusterParameterGroupMessage) {
3706        let mut prefix = name.to_string();
3707        if prefix != "" {
3708            prefix.push_str(".");
3709        }
3710
3711        params.put(
3712            &format!("{}{}", prefix, "DBClusterParameterGroupName"),
3713            &obj.db_cluster_parameter_group_name,
3714        );
3715    }
3716}
3717
3718#[derive(Clone, Debug, Default, PartialEq)]
3719#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3720pub struct DeleteDBClusterResult {
3721    pub db_cluster: Option<DBCluster>,
3722}
3723
3724#[allow(dead_code)]
3725struct DeleteDBClusterResultDeserializer;
3726impl DeleteDBClusterResultDeserializer {
3727    #[allow(dead_code, unused_variables)]
3728    fn deserialize<T: Peek + Next>(
3729        tag_name: &str,
3730        stack: &mut T,
3731    ) -> Result<DeleteDBClusterResult, XmlParseError> {
3732        deserialize_elements::<_, DeleteDBClusterResult, _>(tag_name, stack, |name, stack, obj| {
3733            match name {
3734                "DBCluster" => {
3735                    obj.db_cluster = Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
3736                }
3737                _ => skip_tree(stack),
3738            }
3739            Ok(())
3740        })
3741    }
3742}
3743#[derive(Clone, Debug, Default, PartialEq)]
3744#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3745pub struct DeleteDBClusterSnapshotMessage {
3746    /// <p>The identifier of the DB cluster snapshot to delete.</p> <p>Constraints: Must be the name of an existing DB cluster snapshot in the <code>available</code> state.</p>
3747    pub db_cluster_snapshot_identifier: String,
3748}
3749
3750/// Serialize `DeleteDBClusterSnapshotMessage` contents to a `SignedRequest`.
3751struct DeleteDBClusterSnapshotMessageSerializer;
3752impl DeleteDBClusterSnapshotMessageSerializer {
3753    fn serialize(params: &mut Params, name: &str, obj: &DeleteDBClusterSnapshotMessage) {
3754        let mut prefix = name.to_string();
3755        if prefix != "" {
3756            prefix.push_str(".");
3757        }
3758
3759        params.put(
3760            &format!("{}{}", prefix, "DBClusterSnapshotIdentifier"),
3761            &obj.db_cluster_snapshot_identifier,
3762        );
3763    }
3764}
3765
3766#[derive(Clone, Debug, Default, PartialEq)]
3767#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3768pub struct DeleteDBClusterSnapshotResult {
3769    pub db_cluster_snapshot: Option<DBClusterSnapshot>,
3770}
3771
3772#[allow(dead_code)]
3773struct DeleteDBClusterSnapshotResultDeserializer;
3774impl DeleteDBClusterSnapshotResultDeserializer {
3775    #[allow(dead_code, unused_variables)]
3776    fn deserialize<T: Peek + Next>(
3777        tag_name: &str,
3778        stack: &mut T,
3779    ) -> Result<DeleteDBClusterSnapshotResult, XmlParseError> {
3780        deserialize_elements::<_, DeleteDBClusterSnapshotResult, _>(
3781            tag_name,
3782            stack,
3783            |name, stack, obj| {
3784                match name {
3785                    "DBClusterSnapshot" => {
3786                        obj.db_cluster_snapshot = Some(DBClusterSnapshotDeserializer::deserialize(
3787                            "DBClusterSnapshot",
3788                            stack,
3789                        )?);
3790                    }
3791                    _ => skip_tree(stack),
3792                }
3793                Ok(())
3794            },
3795        )
3796    }
3797}
3798#[derive(Clone, Debug, Default, PartialEq)]
3799#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3800pub struct DeleteDBInstanceMessage {
3801    /// <p><p>The DB instance identifier for the DB instance to be deleted. This parameter isn&#39;t case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>Must match the name of an existing DB instance.</p> </li> </ul></p>
3802    pub db_instance_identifier: String,
3803    /// <p><p> The DBSnapshotIdentifier of the new DBSnapshot created when SkipFinalSnapshot is set to <code>false</code>.</p> <note> <p>Specifying this parameter and also setting the SkipFinalShapshot parameter to true results in an error.</p> </note> <p>Constraints:</p> <ul> <li> <p>Must be 1 to 255 letters or numbers.</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> <li> <p>Cannot be specified when deleting a Read Replica.</p> </li> </ul></p>
3804    pub final_db_snapshot_identifier: Option<String>,
3805    /// <p> Determines whether a final DB snapshot is created before the DB instance is deleted. If <code>true</code> is specified, no DBSnapshot is created. If <code>false</code> is specified, a DB snapshot is created before the DB instance is deleted.</p> <p>Note that when a DB instance is in a failure state and has a status of 'failed', 'incompatible-restore', or 'incompatible-network', it can only be deleted when the SkipFinalSnapshot parameter is set to "true".</p> <p>Specify <code>true</code> when deleting a Read Replica.</p> <note> <p>The FinalDBSnapshotIdentifier parameter must be specified if SkipFinalSnapshot is <code>false</code>.</p> </note> <p>Default: <code>false</code> </p>
3806    pub skip_final_snapshot: Option<bool>,
3807}
3808
3809/// Serialize `DeleteDBInstanceMessage` contents to a `SignedRequest`.
3810struct DeleteDBInstanceMessageSerializer;
3811impl DeleteDBInstanceMessageSerializer {
3812    fn serialize(params: &mut Params, name: &str, obj: &DeleteDBInstanceMessage) {
3813        let mut prefix = name.to_string();
3814        if prefix != "" {
3815            prefix.push_str(".");
3816        }
3817
3818        params.put(
3819            &format!("{}{}", prefix, "DBInstanceIdentifier"),
3820            &obj.db_instance_identifier,
3821        );
3822        if let Some(ref field_value) = obj.final_db_snapshot_identifier {
3823            params.put(
3824                &format!("{}{}", prefix, "FinalDBSnapshotIdentifier"),
3825                &field_value,
3826            );
3827        }
3828        if let Some(ref field_value) = obj.skip_final_snapshot {
3829            params.put(&format!("{}{}", prefix, "SkipFinalSnapshot"), &field_value);
3830        }
3831    }
3832}
3833
3834#[derive(Clone, Debug, Default, PartialEq)]
3835#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3836pub struct DeleteDBInstanceResult {
3837    pub db_instance: Option<DBInstance>,
3838}
3839
3840#[allow(dead_code)]
3841struct DeleteDBInstanceResultDeserializer;
3842impl DeleteDBInstanceResultDeserializer {
3843    #[allow(dead_code, unused_variables)]
3844    fn deserialize<T: Peek + Next>(
3845        tag_name: &str,
3846        stack: &mut T,
3847    ) -> Result<DeleteDBInstanceResult, XmlParseError> {
3848        deserialize_elements::<_, DeleteDBInstanceResult, _>(tag_name, stack, |name, stack, obj| {
3849            match name {
3850                "DBInstance" => {
3851                    obj.db_instance =
3852                        Some(DBInstanceDeserializer::deserialize("DBInstance", stack)?);
3853                }
3854                _ => skip_tree(stack),
3855            }
3856            Ok(())
3857        })
3858    }
3859}
3860#[derive(Clone, Debug, Default, PartialEq)]
3861#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3862pub struct DeleteDBParameterGroupMessage {
3863    /// <p><p>The name of the DB parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Must be the name of an existing DB parameter group</p> </li> <li> <p>You can&#39;t delete a default DB parameter group</p> </li> <li> <p>Cannot be associated with any DB instances</p> </li> </ul></p>
3864    pub db_parameter_group_name: String,
3865}
3866
3867/// Serialize `DeleteDBParameterGroupMessage` contents to a `SignedRequest`.
3868struct DeleteDBParameterGroupMessageSerializer;
3869impl DeleteDBParameterGroupMessageSerializer {
3870    fn serialize(params: &mut Params, name: &str, obj: &DeleteDBParameterGroupMessage) {
3871        let mut prefix = name.to_string();
3872        if prefix != "" {
3873            prefix.push_str(".");
3874        }
3875
3876        params.put(
3877            &format!("{}{}", prefix, "DBParameterGroupName"),
3878            &obj.db_parameter_group_name,
3879        );
3880    }
3881}
3882
3883#[derive(Clone, Debug, Default, PartialEq)]
3884#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3885pub struct DeleteDBSubnetGroupMessage {
3886    /// <p>The name of the database subnet group to delete.</p> <note> <p>You can't delete the default subnet group.</p> </note> <p>Constraints:</p> <p>Constraints: Must match the name of an existing DBSubnetGroup. Must not be default.</p> <p>Example: <code>mySubnetgroup</code> </p>
3887    pub db_subnet_group_name: String,
3888}
3889
3890/// Serialize `DeleteDBSubnetGroupMessage` contents to a `SignedRequest`.
3891struct DeleteDBSubnetGroupMessageSerializer;
3892impl DeleteDBSubnetGroupMessageSerializer {
3893    fn serialize(params: &mut Params, name: &str, obj: &DeleteDBSubnetGroupMessage) {
3894        let mut prefix = name.to_string();
3895        if prefix != "" {
3896            prefix.push_str(".");
3897        }
3898
3899        params.put(
3900            &format!("{}{}", prefix, "DBSubnetGroupName"),
3901            &obj.db_subnet_group_name,
3902        );
3903    }
3904}
3905
3906#[derive(Clone, Debug, Default, PartialEq)]
3907#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3908pub struct DeleteEventSubscriptionMessage {
3909    /// <p>The name of the event notification subscription you want to delete.</p>
3910    pub subscription_name: String,
3911}
3912
3913/// Serialize `DeleteEventSubscriptionMessage` contents to a `SignedRequest`.
3914struct DeleteEventSubscriptionMessageSerializer;
3915impl DeleteEventSubscriptionMessageSerializer {
3916    fn serialize(params: &mut Params, name: &str, obj: &DeleteEventSubscriptionMessage) {
3917        let mut prefix = name.to_string();
3918        if prefix != "" {
3919            prefix.push_str(".");
3920        }
3921
3922        params.put(
3923            &format!("{}{}", prefix, "SubscriptionName"),
3924            &obj.subscription_name,
3925        );
3926    }
3927}
3928
3929#[derive(Clone, Debug, Default, PartialEq)]
3930#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3931pub struct DeleteEventSubscriptionResult {
3932    pub event_subscription: Option<EventSubscription>,
3933}
3934
3935#[allow(dead_code)]
3936struct DeleteEventSubscriptionResultDeserializer;
3937impl DeleteEventSubscriptionResultDeserializer {
3938    #[allow(dead_code, unused_variables)]
3939    fn deserialize<T: Peek + Next>(
3940        tag_name: &str,
3941        stack: &mut T,
3942    ) -> Result<DeleteEventSubscriptionResult, XmlParseError> {
3943        deserialize_elements::<_, DeleteEventSubscriptionResult, _>(
3944            tag_name,
3945            stack,
3946            |name, stack, obj| {
3947                match name {
3948                    "EventSubscription" => {
3949                        obj.event_subscription = Some(EventSubscriptionDeserializer::deserialize(
3950                            "EventSubscription",
3951                            stack,
3952                        )?);
3953                    }
3954                    _ => skip_tree(stack),
3955                }
3956                Ok(())
3957            },
3958        )
3959    }
3960}
3961#[derive(Clone, Debug, Default, PartialEq)]
3962#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3963pub struct DescribeDBClusterParameterGroupsMessage {
3964    /// <p><p>The name of a specific DB cluster parameter group to return details for.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the name of an existing DBClusterParameterGroup.</p> </li> </ul></p>
3965    pub db_cluster_parameter_group_name: Option<String>,
3966    /// <p>This parameter is not currently supported.</p>
3967    pub filters: Option<Vec<Filter>>,
3968    /// <p> An optional pagination token provided by a previous <code>DescribeDBClusterParameterGroups</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
3969    pub marker: Option<String>,
3970    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
3971    pub max_records: Option<i64>,
3972}
3973
3974/// Serialize `DescribeDBClusterParameterGroupsMessage` contents to a `SignedRequest`.
3975struct DescribeDBClusterParameterGroupsMessageSerializer;
3976impl DescribeDBClusterParameterGroupsMessageSerializer {
3977    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBClusterParameterGroupsMessage) {
3978        let mut prefix = name.to_string();
3979        if prefix != "" {
3980            prefix.push_str(".");
3981        }
3982
3983        if let Some(ref field_value) = obj.db_cluster_parameter_group_name {
3984            params.put(
3985                &format!("{}{}", prefix, "DBClusterParameterGroupName"),
3986                &field_value,
3987            );
3988        }
3989        if let Some(ref field_value) = obj.filters {
3990            FilterListSerializer::serialize(
3991                params,
3992                &format!("{}{}", prefix, "Filter"),
3993                field_value,
3994            );
3995        }
3996        if let Some(ref field_value) = obj.marker {
3997            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
3998        }
3999        if let Some(ref field_value) = obj.max_records {
4000            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4001        }
4002    }
4003}
4004
4005#[derive(Clone, Debug, Default, PartialEq)]
4006#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4007pub struct DescribeDBClusterParametersMessage {
4008    /// <p><p>The name of a specific DB cluster parameter group to return parameter details for.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the name of an existing DBClusterParameterGroup.</p> </li> </ul></p>
4009    pub db_cluster_parameter_group_name: String,
4010    /// <p>This parameter is not currently supported.</p>
4011    pub filters: Option<Vec<Filter>>,
4012    /// <p> An optional pagination token provided by a previous <code>DescribeDBClusterParameters</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
4013    pub marker: Option<String>,
4014    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4015    pub max_records: Option<i64>,
4016    /// <p> A value that indicates to return only parameters for a specific source. Parameter sources can be <code>engine</code>, <code>service</code>, or <code>customer</code>.</p>
4017    pub source: Option<String>,
4018}
4019
4020/// Serialize `DescribeDBClusterParametersMessage` contents to a `SignedRequest`.
4021struct DescribeDBClusterParametersMessageSerializer;
4022impl DescribeDBClusterParametersMessageSerializer {
4023    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBClusterParametersMessage) {
4024        let mut prefix = name.to_string();
4025        if prefix != "" {
4026            prefix.push_str(".");
4027        }
4028
4029        params.put(
4030            &format!("{}{}", prefix, "DBClusterParameterGroupName"),
4031            &obj.db_cluster_parameter_group_name,
4032        );
4033        if let Some(ref field_value) = obj.filters {
4034            FilterListSerializer::serialize(
4035                params,
4036                &format!("{}{}", prefix, "Filter"),
4037                field_value,
4038            );
4039        }
4040        if let Some(ref field_value) = obj.marker {
4041            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4042        }
4043        if let Some(ref field_value) = obj.max_records {
4044            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4045        }
4046        if let Some(ref field_value) = obj.source {
4047            params.put(&format!("{}{}", prefix, "Source"), &field_value);
4048        }
4049    }
4050}
4051
4052#[derive(Clone, Debug, Default, PartialEq)]
4053#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4054pub struct DescribeDBClusterSnapshotAttributesMessage {
4055    /// <p>The identifier for the DB cluster snapshot to describe the attributes for.</p>
4056    pub db_cluster_snapshot_identifier: String,
4057}
4058
4059/// Serialize `DescribeDBClusterSnapshotAttributesMessage` contents to a `SignedRequest`.
4060struct DescribeDBClusterSnapshotAttributesMessageSerializer;
4061impl DescribeDBClusterSnapshotAttributesMessageSerializer {
4062    fn serialize(
4063        params: &mut Params,
4064        name: &str,
4065        obj: &DescribeDBClusterSnapshotAttributesMessage,
4066    ) {
4067        let mut prefix = name.to_string();
4068        if prefix != "" {
4069            prefix.push_str(".");
4070        }
4071
4072        params.put(
4073            &format!("{}{}", prefix, "DBClusterSnapshotIdentifier"),
4074            &obj.db_cluster_snapshot_identifier,
4075        );
4076    }
4077}
4078
4079#[derive(Clone, Debug, Default, PartialEq)]
4080#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4081pub struct DescribeDBClusterSnapshotAttributesResult {
4082    pub db_cluster_snapshot_attributes_result: Option<DBClusterSnapshotAttributesResult>,
4083}
4084
4085#[allow(dead_code)]
4086struct DescribeDBClusterSnapshotAttributesResultDeserializer;
4087impl DescribeDBClusterSnapshotAttributesResultDeserializer {
4088    #[allow(dead_code, unused_variables)]
4089    fn deserialize<T: Peek + Next>(
4090        tag_name: &str,
4091        stack: &mut T,
4092    ) -> Result<DescribeDBClusterSnapshotAttributesResult, XmlParseError> {
4093        deserialize_elements::<_, DescribeDBClusterSnapshotAttributesResult, _>(
4094            tag_name,
4095            stack,
4096            |name, stack, obj| {
4097                match name {
4098                    "DBClusterSnapshotAttributesResult" => {
4099                        obj.db_cluster_snapshot_attributes_result =
4100                            Some(DBClusterSnapshotAttributesResultDeserializer::deserialize(
4101                                "DBClusterSnapshotAttributesResult",
4102                                stack,
4103                            )?);
4104                    }
4105                    _ => skip_tree(stack),
4106                }
4107                Ok(())
4108            },
4109        )
4110    }
4111}
4112#[derive(Clone, Debug, Default, PartialEq)]
4113#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4114pub struct DescribeDBClusterSnapshotsMessage {
4115    /// <p><p>The ID of the DB cluster to retrieve the list of DB cluster snapshots for. This parameter can&#39;t be used in conjunction with the <code>DBClusterSnapshotIdentifier</code> parameter. This parameter is not case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the identifier of an existing DBCluster.</p> </li> </ul></p>
4116    pub db_cluster_identifier: Option<String>,
4117    /// <p><p>A specific DB cluster snapshot identifier to describe. This parameter can&#39;t be used in conjunction with the <code>DBClusterIdentifier</code> parameter. This value is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the identifier of an existing DBClusterSnapshot.</p> </li> <li> <p>If this identifier is for an automated snapshot, the <code>SnapshotType</code> parameter must also be specified.</p> </li> </ul></p>
4118    pub db_cluster_snapshot_identifier: Option<String>,
4119    /// <p>This parameter is not currently supported.</p>
4120    pub filters: Option<Vec<Filter>>,
4121    /// <p>True to include manual DB cluster snapshots that are public and can be copied or restored by any AWS account, and otherwise false. The default is <code>false</code>. The default is false.</p> <p>You can share a manual DB cluster snapshot as public by using the <a>ModifyDBClusterSnapshotAttribute</a> API action.</p>
4122    pub include_public: Option<bool>,
4123    /// <p>True to include shared manual DB cluster snapshots from other AWS accounts that this AWS account has been given permission to copy or restore, and otherwise false. The default is <code>false</code>.</p> <p>You can give an AWS account permission to restore a manual DB cluster snapshot from another AWS account by the <a>ModifyDBClusterSnapshotAttribute</a> API action.</p>
4124    pub include_shared: Option<bool>,
4125    /// <p>An optional pagination token provided by a previous <code>DescribeDBClusterSnapshots</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
4126    pub marker: Option<String>,
4127    /// <p>The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4128    pub max_records: Option<i64>,
4129    /// <p>The type of DB cluster snapshots to be returned. You can specify one of the following values:</p> <ul> <li> <p> <code>automated</code> - Return all DB cluster snapshots that have been automatically taken by Amazon Neptune for my AWS account.</p> </li> <li> <p> <code>manual</code> - Return all DB cluster snapshots that have been taken by my AWS account.</p> </li> <li> <p> <code>shared</code> - Return all manual DB cluster snapshots that have been shared to my AWS account.</p> </li> <li> <p> <code>public</code> - Return all DB cluster snapshots that have been marked as public.</p> </li> </ul> <p>If you don't specify a <code>SnapshotType</code> value, then both automated and manual DB cluster snapshots are returned. You can include shared DB cluster snapshots with these results by setting the <code>IncludeShared</code> parameter to <code>true</code>. You can include public DB cluster snapshots with these results by setting the <code>IncludePublic</code> parameter to <code>true</code>.</p> <p>The <code>IncludeShared</code> and <code>IncludePublic</code> parameters don't apply for <code>SnapshotType</code> values of <code>manual</code> or <code>automated</code>. The <code>IncludePublic</code> parameter doesn't apply when <code>SnapshotType</code> is set to <code>shared</code>. The <code>IncludeShared</code> parameter doesn't apply when <code>SnapshotType</code> is set to <code>public</code>.</p>
4130    pub snapshot_type: Option<String>,
4131}
4132
4133/// Serialize `DescribeDBClusterSnapshotsMessage` contents to a `SignedRequest`.
4134struct DescribeDBClusterSnapshotsMessageSerializer;
4135impl DescribeDBClusterSnapshotsMessageSerializer {
4136    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBClusterSnapshotsMessage) {
4137        let mut prefix = name.to_string();
4138        if prefix != "" {
4139            prefix.push_str(".");
4140        }
4141
4142        if let Some(ref field_value) = obj.db_cluster_identifier {
4143            params.put(
4144                &format!("{}{}", prefix, "DBClusterIdentifier"),
4145                &field_value,
4146            );
4147        }
4148        if let Some(ref field_value) = obj.db_cluster_snapshot_identifier {
4149            params.put(
4150                &format!("{}{}", prefix, "DBClusterSnapshotIdentifier"),
4151                &field_value,
4152            );
4153        }
4154        if let Some(ref field_value) = obj.filters {
4155            FilterListSerializer::serialize(
4156                params,
4157                &format!("{}{}", prefix, "Filter"),
4158                field_value,
4159            );
4160        }
4161        if let Some(ref field_value) = obj.include_public {
4162            params.put(&format!("{}{}", prefix, "IncludePublic"), &field_value);
4163        }
4164        if let Some(ref field_value) = obj.include_shared {
4165            params.put(&format!("{}{}", prefix, "IncludeShared"), &field_value);
4166        }
4167        if let Some(ref field_value) = obj.marker {
4168            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4169        }
4170        if let Some(ref field_value) = obj.max_records {
4171            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4172        }
4173        if let Some(ref field_value) = obj.snapshot_type {
4174            params.put(&format!("{}{}", prefix, "SnapshotType"), &field_value);
4175        }
4176    }
4177}
4178
4179#[derive(Clone, Debug, Default, PartialEq)]
4180#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4181pub struct DescribeDBClustersMessage {
4182    /// <p><p>The user-supplied DB cluster identifier. If this parameter is specified, information from only the specific DB cluster is returned. This parameter isn&#39;t case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match an existing DBClusterIdentifier.</p> </li> </ul></p>
4183    pub db_cluster_identifier: Option<String>,
4184    /// <p>A filter that specifies one or more DB clusters to describe.</p> <p>Supported filters:</p> <ul> <li> <p> <code>db-cluster-id</code> - Accepts DB cluster identifiers and DB cluster Amazon Resource Names (ARNs). The results list will only include information about the DB clusters identified by these ARNs.</p> </li> <li> <p> <code>engine</code> - Accepts an engine name (such as <code>neptune</code>), and restricts the results list to DB clusters created by that engine.</p> </li> </ul> <p>For example, to invoke this API from the AWS CLI and filter so that only Neptune DB clusters are returned, you could use the following command:</p>
4185    pub filters: Option<Vec<Filter>>,
4186    /// <p>An optional pagination token provided by a previous <a>DescribeDBClusters</a> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4187    pub marker: Option<String>,
4188    /// <p>The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4189    pub max_records: Option<i64>,
4190}
4191
4192/// Serialize `DescribeDBClustersMessage` contents to a `SignedRequest`.
4193struct DescribeDBClustersMessageSerializer;
4194impl DescribeDBClustersMessageSerializer {
4195    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBClustersMessage) {
4196        let mut prefix = name.to_string();
4197        if prefix != "" {
4198            prefix.push_str(".");
4199        }
4200
4201        if let Some(ref field_value) = obj.db_cluster_identifier {
4202            params.put(
4203                &format!("{}{}", prefix, "DBClusterIdentifier"),
4204                &field_value,
4205            );
4206        }
4207        if let Some(ref field_value) = obj.filters {
4208            FilterListSerializer::serialize(
4209                params,
4210                &format!("{}{}", prefix, "Filter"),
4211                field_value,
4212            );
4213        }
4214        if let Some(ref field_value) = obj.marker {
4215            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4216        }
4217        if let Some(ref field_value) = obj.max_records {
4218            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4219        }
4220    }
4221}
4222
4223#[derive(Clone, Debug, Default, PartialEq)]
4224#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4225pub struct DescribeDBEngineVersionsMessage {
4226    /// <p><p>The name of a specific DB parameter group family to return details for.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match an existing DBParameterGroupFamily.</p> </li> </ul></p>
4227    pub db_parameter_group_family: Option<String>,
4228    /// <p>Indicates that only the default version of the specified engine or engine and major version combination is returned.</p>
4229    pub default_only: Option<bool>,
4230    /// <p>The database engine to return.</p>
4231    pub engine: Option<String>,
4232    /// <p>The database engine version to return.</p> <p>Example: <code>5.1.49</code> </p>
4233    pub engine_version: Option<String>,
4234    /// <p>Not currently supported.</p>
4235    pub filters: Option<Vec<Filter>>,
4236    /// <p>If this parameter is specified and the requested engine supports the <code>CharacterSetName</code> parameter for <code>CreateDBInstance</code>, the response includes a list of supported character sets for each engine version.</p>
4237    pub list_supported_character_sets: Option<bool>,
4238    /// <p>If this parameter is specified and the requested engine supports the <code>TimeZone</code> parameter for <code>CreateDBInstance</code>, the response includes a list of supported time zones for each engine version.</p>
4239    pub list_supported_timezones: Option<bool>,
4240    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4241    pub marker: Option<String>,
4242    /// <p> The maximum number of records to include in the response. If more than the <code>MaxRecords</code> value is available, a pagination token called a marker is included in the response so that the following results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4243    pub max_records: Option<i64>,
4244}
4245
4246/// Serialize `DescribeDBEngineVersionsMessage` contents to a `SignedRequest`.
4247struct DescribeDBEngineVersionsMessageSerializer;
4248impl DescribeDBEngineVersionsMessageSerializer {
4249    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBEngineVersionsMessage) {
4250        let mut prefix = name.to_string();
4251        if prefix != "" {
4252            prefix.push_str(".");
4253        }
4254
4255        if let Some(ref field_value) = obj.db_parameter_group_family {
4256            params.put(
4257                &format!("{}{}", prefix, "DBParameterGroupFamily"),
4258                &field_value,
4259            );
4260        }
4261        if let Some(ref field_value) = obj.default_only {
4262            params.put(&format!("{}{}", prefix, "DefaultOnly"), &field_value);
4263        }
4264        if let Some(ref field_value) = obj.engine {
4265            params.put(&format!("{}{}", prefix, "Engine"), &field_value);
4266        }
4267        if let Some(ref field_value) = obj.engine_version {
4268            params.put(&format!("{}{}", prefix, "EngineVersion"), &field_value);
4269        }
4270        if let Some(ref field_value) = obj.filters {
4271            FilterListSerializer::serialize(
4272                params,
4273                &format!("{}{}", prefix, "Filter"),
4274                field_value,
4275            );
4276        }
4277        if let Some(ref field_value) = obj.list_supported_character_sets {
4278            params.put(
4279                &format!("{}{}", prefix, "ListSupportedCharacterSets"),
4280                &field_value,
4281            );
4282        }
4283        if let Some(ref field_value) = obj.list_supported_timezones {
4284            params.put(
4285                &format!("{}{}", prefix, "ListSupportedTimezones"),
4286                &field_value,
4287            );
4288        }
4289        if let Some(ref field_value) = obj.marker {
4290            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4291        }
4292        if let Some(ref field_value) = obj.max_records {
4293            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4294        }
4295    }
4296}
4297
4298#[derive(Clone, Debug, Default, PartialEq)]
4299#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4300pub struct DescribeDBInstancesMessage {
4301    /// <p><p>The user-supplied instance identifier. If this parameter is specified, information from only the specific DB instance is returned. This parameter isn&#39;t case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the identifier of an existing DBInstance.</p> </li> </ul></p>
4302    pub db_instance_identifier: Option<String>,
4303    /// <p>A filter that specifies one or more DB instances to describe.</p> <p>Supported filters:</p> <ul> <li> <p> <code>db-cluster-id</code> - Accepts DB cluster identifiers and DB cluster Amazon Resource Names (ARNs). The results list will only include information about the DB instances associated with the DB clusters identified by these ARNs.</p> </li> <li> <p> <code>engine</code> - Accepts an engine name (such as <code>neptune</code>), and restricts the results list to DB instances created by that engine.</p> </li> </ul> <p>For example, to invoke this API from the AWS CLI and filter so that only Neptune DB instances are returned, you could use the following command:</p>
4304    pub filters: Option<Vec<Filter>>,
4305    /// <p> An optional pagination token provided by a previous <code>DescribeDBInstances</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4306    pub marker: Option<String>,
4307    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4308    pub max_records: Option<i64>,
4309}
4310
4311/// Serialize `DescribeDBInstancesMessage` contents to a `SignedRequest`.
4312struct DescribeDBInstancesMessageSerializer;
4313impl DescribeDBInstancesMessageSerializer {
4314    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBInstancesMessage) {
4315        let mut prefix = name.to_string();
4316        if prefix != "" {
4317            prefix.push_str(".");
4318        }
4319
4320        if let Some(ref field_value) = obj.db_instance_identifier {
4321            params.put(
4322                &format!("{}{}", prefix, "DBInstanceIdentifier"),
4323                &field_value,
4324            );
4325        }
4326        if let Some(ref field_value) = obj.filters {
4327            FilterListSerializer::serialize(
4328                params,
4329                &format!("{}{}", prefix, "Filter"),
4330                field_value,
4331            );
4332        }
4333        if let Some(ref field_value) = obj.marker {
4334            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4335        }
4336        if let Some(ref field_value) = obj.max_records {
4337            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4338        }
4339    }
4340}
4341
4342#[derive(Clone, Debug, Default, PartialEq)]
4343#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4344pub struct DescribeDBParameterGroupsMessage {
4345    /// <p><p>The name of a specific DB parameter group to return details for.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the name of an existing DBClusterParameterGroup.</p> </li> </ul></p>
4346    pub db_parameter_group_name: Option<String>,
4347    /// <p>This parameter is not currently supported.</p>
4348    pub filters: Option<Vec<Filter>>,
4349    /// <p>An optional pagination token provided by a previous <code>DescribeDBParameterGroups</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4350    pub marker: Option<String>,
4351    /// <p>The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4352    pub max_records: Option<i64>,
4353}
4354
4355/// Serialize `DescribeDBParameterGroupsMessage` contents to a `SignedRequest`.
4356struct DescribeDBParameterGroupsMessageSerializer;
4357impl DescribeDBParameterGroupsMessageSerializer {
4358    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBParameterGroupsMessage) {
4359        let mut prefix = name.to_string();
4360        if prefix != "" {
4361            prefix.push_str(".");
4362        }
4363
4364        if let Some(ref field_value) = obj.db_parameter_group_name {
4365            params.put(
4366                &format!("{}{}", prefix, "DBParameterGroupName"),
4367                &field_value,
4368            );
4369        }
4370        if let Some(ref field_value) = obj.filters {
4371            FilterListSerializer::serialize(
4372                params,
4373                &format!("{}{}", prefix, "Filter"),
4374                field_value,
4375            );
4376        }
4377        if let Some(ref field_value) = obj.marker {
4378            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4379        }
4380        if let Some(ref field_value) = obj.max_records {
4381            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4382        }
4383    }
4384}
4385
4386#[derive(Clone, Debug, Default, PartialEq)]
4387#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4388pub struct DescribeDBParametersMessage {
4389    /// <p><p>The name of a specific DB parameter group to return details for.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the name of an existing DBParameterGroup.</p> </li> </ul></p>
4390    pub db_parameter_group_name: String,
4391    /// <p>This parameter is not currently supported.</p>
4392    pub filters: Option<Vec<Filter>>,
4393    /// <p>An optional pagination token provided by a previous <code>DescribeDBParameters</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4394    pub marker: Option<String>,
4395    /// <p>The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4396    pub max_records: Option<i64>,
4397    /// <p>The parameter types to return.</p> <p>Default: All parameter types returned</p> <p>Valid Values: <code>user | system | engine-default</code> </p>
4398    pub source: Option<String>,
4399}
4400
4401/// Serialize `DescribeDBParametersMessage` contents to a `SignedRequest`.
4402struct DescribeDBParametersMessageSerializer;
4403impl DescribeDBParametersMessageSerializer {
4404    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBParametersMessage) {
4405        let mut prefix = name.to_string();
4406        if prefix != "" {
4407            prefix.push_str(".");
4408        }
4409
4410        params.put(
4411            &format!("{}{}", prefix, "DBParameterGroupName"),
4412            &obj.db_parameter_group_name,
4413        );
4414        if let Some(ref field_value) = obj.filters {
4415            FilterListSerializer::serialize(
4416                params,
4417                &format!("{}{}", prefix, "Filter"),
4418                field_value,
4419            );
4420        }
4421        if let Some(ref field_value) = obj.marker {
4422            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4423        }
4424        if let Some(ref field_value) = obj.max_records {
4425            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4426        }
4427        if let Some(ref field_value) = obj.source {
4428            params.put(&format!("{}{}", prefix, "Source"), &field_value);
4429        }
4430    }
4431}
4432
4433#[derive(Clone, Debug, Default, PartialEq)]
4434#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4435pub struct DescribeDBSubnetGroupsMessage {
4436    /// <p>The name of the DB subnet group to return details for.</p>
4437    pub db_subnet_group_name: Option<String>,
4438    /// <p>This parameter is not currently supported.</p>
4439    pub filters: Option<Vec<Filter>>,
4440    /// <p> An optional pagination token provided by a previous DescribeDBSubnetGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4441    pub marker: Option<String>,
4442    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4443    pub max_records: Option<i64>,
4444}
4445
4446/// Serialize `DescribeDBSubnetGroupsMessage` contents to a `SignedRequest`.
4447struct DescribeDBSubnetGroupsMessageSerializer;
4448impl DescribeDBSubnetGroupsMessageSerializer {
4449    fn serialize(params: &mut Params, name: &str, obj: &DescribeDBSubnetGroupsMessage) {
4450        let mut prefix = name.to_string();
4451        if prefix != "" {
4452            prefix.push_str(".");
4453        }
4454
4455        if let Some(ref field_value) = obj.db_subnet_group_name {
4456            params.put(&format!("{}{}", prefix, "DBSubnetGroupName"), &field_value);
4457        }
4458        if let Some(ref field_value) = obj.filters {
4459            FilterListSerializer::serialize(
4460                params,
4461                &format!("{}{}", prefix, "Filter"),
4462                field_value,
4463            );
4464        }
4465        if let Some(ref field_value) = obj.marker {
4466            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4467        }
4468        if let Some(ref field_value) = obj.max_records {
4469            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4470        }
4471    }
4472}
4473
4474#[derive(Clone, Debug, Default, PartialEq)]
4475#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4476pub struct DescribeEngineDefaultClusterParametersMessage {
4477    /// <p>The name of the DB cluster parameter group family to return engine parameter information for.</p>
4478    pub db_parameter_group_family: String,
4479    /// <p>This parameter is not currently supported.</p>
4480    pub filters: Option<Vec<Filter>>,
4481    /// <p> An optional pagination token provided by a previous <code>DescribeEngineDefaultClusterParameters</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4482    pub marker: Option<String>,
4483    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4484    pub max_records: Option<i64>,
4485}
4486
4487/// Serialize `DescribeEngineDefaultClusterParametersMessage` contents to a `SignedRequest`.
4488struct DescribeEngineDefaultClusterParametersMessageSerializer;
4489impl DescribeEngineDefaultClusterParametersMessageSerializer {
4490    fn serialize(
4491        params: &mut Params,
4492        name: &str,
4493        obj: &DescribeEngineDefaultClusterParametersMessage,
4494    ) {
4495        let mut prefix = name.to_string();
4496        if prefix != "" {
4497            prefix.push_str(".");
4498        }
4499
4500        params.put(
4501            &format!("{}{}", prefix, "DBParameterGroupFamily"),
4502            &obj.db_parameter_group_family,
4503        );
4504        if let Some(ref field_value) = obj.filters {
4505            FilterListSerializer::serialize(
4506                params,
4507                &format!("{}{}", prefix, "Filter"),
4508                field_value,
4509            );
4510        }
4511        if let Some(ref field_value) = obj.marker {
4512            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4513        }
4514        if let Some(ref field_value) = obj.max_records {
4515            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4516        }
4517    }
4518}
4519
4520#[derive(Clone, Debug, Default, PartialEq)]
4521#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4522pub struct DescribeEngineDefaultClusterParametersResult {
4523    pub engine_defaults: Option<EngineDefaults>,
4524}
4525
4526#[allow(dead_code)]
4527struct DescribeEngineDefaultClusterParametersResultDeserializer;
4528impl DescribeEngineDefaultClusterParametersResultDeserializer {
4529    #[allow(dead_code, unused_variables)]
4530    fn deserialize<T: Peek + Next>(
4531        tag_name: &str,
4532        stack: &mut T,
4533    ) -> Result<DescribeEngineDefaultClusterParametersResult, XmlParseError> {
4534        deserialize_elements::<_, DescribeEngineDefaultClusterParametersResult, _>(
4535            tag_name,
4536            stack,
4537            |name, stack, obj| {
4538                match name {
4539                    "EngineDefaults" => {
4540                        obj.engine_defaults = Some(EngineDefaultsDeserializer::deserialize(
4541                            "EngineDefaults",
4542                            stack,
4543                        )?);
4544                    }
4545                    _ => skip_tree(stack),
4546                }
4547                Ok(())
4548            },
4549        )
4550    }
4551}
4552#[derive(Clone, Debug, Default, PartialEq)]
4553#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4554pub struct DescribeEngineDefaultParametersMessage {
4555    /// <p>The name of the DB parameter group family.</p>
4556    pub db_parameter_group_family: String,
4557    /// <p>Not currently supported.</p>
4558    pub filters: Option<Vec<Filter>>,
4559    /// <p> An optional pagination token provided by a previous <code>DescribeEngineDefaultParameters</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4560    pub marker: Option<String>,
4561    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4562    pub max_records: Option<i64>,
4563}
4564
4565/// Serialize `DescribeEngineDefaultParametersMessage` contents to a `SignedRequest`.
4566struct DescribeEngineDefaultParametersMessageSerializer;
4567impl DescribeEngineDefaultParametersMessageSerializer {
4568    fn serialize(params: &mut Params, name: &str, obj: &DescribeEngineDefaultParametersMessage) {
4569        let mut prefix = name.to_string();
4570        if prefix != "" {
4571            prefix.push_str(".");
4572        }
4573
4574        params.put(
4575            &format!("{}{}", prefix, "DBParameterGroupFamily"),
4576            &obj.db_parameter_group_family,
4577        );
4578        if let Some(ref field_value) = obj.filters {
4579            FilterListSerializer::serialize(
4580                params,
4581                &format!("{}{}", prefix, "Filter"),
4582                field_value,
4583            );
4584        }
4585        if let Some(ref field_value) = obj.marker {
4586            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4587        }
4588        if let Some(ref field_value) = obj.max_records {
4589            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4590        }
4591    }
4592}
4593
4594#[derive(Clone, Debug, Default, PartialEq)]
4595#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4596pub struct DescribeEngineDefaultParametersResult {
4597    pub engine_defaults: Option<EngineDefaults>,
4598}
4599
4600#[allow(dead_code)]
4601struct DescribeEngineDefaultParametersResultDeserializer;
4602impl DescribeEngineDefaultParametersResultDeserializer {
4603    #[allow(dead_code, unused_variables)]
4604    fn deserialize<T: Peek + Next>(
4605        tag_name: &str,
4606        stack: &mut T,
4607    ) -> Result<DescribeEngineDefaultParametersResult, XmlParseError> {
4608        deserialize_elements::<_, DescribeEngineDefaultParametersResult, _>(
4609            tag_name,
4610            stack,
4611            |name, stack, obj| {
4612                match name {
4613                    "EngineDefaults" => {
4614                        obj.engine_defaults = Some(EngineDefaultsDeserializer::deserialize(
4615                            "EngineDefaults",
4616                            stack,
4617                        )?);
4618                    }
4619                    _ => skip_tree(stack),
4620                }
4621                Ok(())
4622            },
4623        )
4624    }
4625}
4626#[derive(Clone, Debug, Default, PartialEq)]
4627#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4628pub struct DescribeEventCategoriesMessage {
4629    /// <p>This parameter is not currently supported.</p>
4630    pub filters: Option<Vec<Filter>>,
4631    /// <p>The type of source that is generating the events.</p> <p>Valid values: db-instance | db-parameter-group | db-security-group | db-snapshot</p>
4632    pub source_type: Option<String>,
4633}
4634
4635/// Serialize `DescribeEventCategoriesMessage` contents to a `SignedRequest`.
4636struct DescribeEventCategoriesMessageSerializer;
4637impl DescribeEventCategoriesMessageSerializer {
4638    fn serialize(params: &mut Params, name: &str, obj: &DescribeEventCategoriesMessage) {
4639        let mut prefix = name.to_string();
4640        if prefix != "" {
4641            prefix.push_str(".");
4642        }
4643
4644        if let Some(ref field_value) = obj.filters {
4645            FilterListSerializer::serialize(
4646                params,
4647                &format!("{}{}", prefix, "Filter"),
4648                field_value,
4649            );
4650        }
4651        if let Some(ref field_value) = obj.source_type {
4652            params.put(&format!("{}{}", prefix, "SourceType"), &field_value);
4653        }
4654    }
4655}
4656
4657#[derive(Clone, Debug, Default, PartialEq)]
4658#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4659pub struct DescribeEventSubscriptionsMessage {
4660    /// <p>This parameter is not currently supported.</p>
4661    pub filters: Option<Vec<Filter>>,
4662    /// <p> An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code> .</p>
4663    pub marker: Option<String>,
4664    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4665    pub max_records: Option<i64>,
4666    /// <p>The name of the event notification subscription you want to describe.</p>
4667    pub subscription_name: Option<String>,
4668}
4669
4670/// Serialize `DescribeEventSubscriptionsMessage` contents to a `SignedRequest`.
4671struct DescribeEventSubscriptionsMessageSerializer;
4672impl DescribeEventSubscriptionsMessageSerializer {
4673    fn serialize(params: &mut Params, name: &str, obj: &DescribeEventSubscriptionsMessage) {
4674        let mut prefix = name.to_string();
4675        if prefix != "" {
4676            prefix.push_str(".");
4677        }
4678
4679        if let Some(ref field_value) = obj.filters {
4680            FilterListSerializer::serialize(
4681                params,
4682                &format!("{}{}", prefix, "Filter"),
4683                field_value,
4684            );
4685        }
4686        if let Some(ref field_value) = obj.marker {
4687            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4688        }
4689        if let Some(ref field_value) = obj.max_records {
4690            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4691        }
4692        if let Some(ref field_value) = obj.subscription_name {
4693            params.put(&format!("{}{}", prefix, "SubscriptionName"), &field_value);
4694        }
4695    }
4696}
4697
4698#[derive(Clone, Debug, Default, PartialEq)]
4699#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4700pub struct DescribeEventsMessage {
4701    /// <p>The number of minutes to retrieve events for.</p> <p>Default: 60</p>
4702    pub duration: Option<i64>,
4703    /// <p> The end of the time interval for which to retrieve events, specified in ISO 8601 format. For more information about ISO 8601, go to the <a href="http://en.wikipedia.org/wiki/ISO_8601">ISO8601 Wikipedia page.</a> </p> <p>Example: 2009-07-08T18:00Z</p>
4704    pub end_time: Option<String>,
4705    /// <p>A list of event categories that trigger notifications for a event notification subscription.</p>
4706    pub event_categories: Option<Vec<String>>,
4707    /// <p>This parameter is not currently supported.</p>
4708    pub filters: Option<Vec<Filter>>,
4709    /// <p> An optional pagination token provided by a previous DescribeEvents request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
4710    pub marker: Option<String>,
4711    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4712    pub max_records: Option<i64>,
4713    /// <p><p>The identifier of the event source for which events are returned. If not specified, then all sources are included in the response.</p> <p>Constraints:</p> <ul> <li> <p>If SourceIdentifier is supplied, SourceType must also be provided.</p> </li> <li> <p>If the source type is <code>DBInstance</code>, then a <code>DBInstanceIdentifier</code> must be supplied.</p> </li> <li> <p>If the source type is <code>DBSecurityGroup</code>, a <code>DBSecurityGroupName</code> must be supplied.</p> </li> <li> <p>If the source type is <code>DBParameterGroup</code>, a <code>DBParameterGroupName</code> must be supplied.</p> </li> <li> <p>If the source type is <code>DBSnapshot</code>, a <code>DBSnapshotIdentifier</code> must be supplied.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul></p>
4714    pub source_identifier: Option<String>,
4715    /// <p>The event source to retrieve events for. If no value is specified, all events are returned.</p>
4716    pub source_type: Option<String>,
4717    /// <p> The beginning of the time interval to retrieve events for, specified in ISO 8601 format. For more information about ISO 8601, go to the <a href="http://en.wikipedia.org/wiki/ISO_8601">ISO8601 Wikipedia page.</a> </p> <p>Example: 2009-07-08T18:00Z</p>
4718    pub start_time: Option<String>,
4719}
4720
4721/// Serialize `DescribeEventsMessage` contents to a `SignedRequest`.
4722struct DescribeEventsMessageSerializer;
4723impl DescribeEventsMessageSerializer {
4724    fn serialize(params: &mut Params, name: &str, obj: &DescribeEventsMessage) {
4725        let mut prefix = name.to_string();
4726        if prefix != "" {
4727            prefix.push_str(".");
4728        }
4729
4730        if let Some(ref field_value) = obj.duration {
4731            params.put(&format!("{}{}", prefix, "Duration"), &field_value);
4732        }
4733        if let Some(ref field_value) = obj.end_time {
4734            params.put(&format!("{}{}", prefix, "EndTime"), &field_value);
4735        }
4736        if let Some(ref field_value) = obj.event_categories {
4737            EventCategoriesListSerializer::serialize(
4738                params,
4739                &format!("{}{}", prefix, "EventCategory"),
4740                field_value,
4741            );
4742        }
4743        if let Some(ref field_value) = obj.filters {
4744            FilterListSerializer::serialize(
4745                params,
4746                &format!("{}{}", prefix, "Filter"),
4747                field_value,
4748            );
4749        }
4750        if let Some(ref field_value) = obj.marker {
4751            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4752        }
4753        if let Some(ref field_value) = obj.max_records {
4754            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4755        }
4756        if let Some(ref field_value) = obj.source_identifier {
4757            params.put(&format!("{}{}", prefix, "SourceIdentifier"), &field_value);
4758        }
4759        if let Some(ref field_value) = obj.source_type {
4760            params.put(&format!("{}{}", prefix, "SourceType"), &field_value);
4761        }
4762        if let Some(ref field_value) = obj.start_time {
4763            params.put(&format!("{}{}", prefix, "StartTime"), &field_value);
4764        }
4765    }
4766}
4767
4768#[derive(Clone, Debug, Default, PartialEq)]
4769#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4770pub struct DescribeOrderableDBInstanceOptionsMessage {
4771    /// <p>The DB instance class filter value. Specify this parameter to show only the available offerings matching the specified DB instance class.</p>
4772    pub db_instance_class: Option<String>,
4773    /// <p>The name of the engine to retrieve DB instance options for.</p>
4774    pub engine: String,
4775    /// <p>The engine version filter value. Specify this parameter to show only the available offerings matching the specified engine version.</p>
4776    pub engine_version: Option<String>,
4777    /// <p>This parameter is not currently supported.</p>
4778    pub filters: Option<Vec<Filter>>,
4779    /// <p>The license model filter value. Specify this parameter to show only the available offerings matching the specified license model.</p>
4780    pub license_model: Option<String>,
4781    /// <p> An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code> .</p>
4782    pub marker: Option<String>,
4783    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4784    pub max_records: Option<i64>,
4785    /// <p>The VPC filter value. Specify this parameter to show only the available VPC or non-VPC offerings.</p>
4786    pub vpc: Option<bool>,
4787}
4788
4789/// Serialize `DescribeOrderableDBInstanceOptionsMessage` contents to a `SignedRequest`.
4790struct DescribeOrderableDBInstanceOptionsMessageSerializer;
4791impl DescribeOrderableDBInstanceOptionsMessageSerializer {
4792    fn serialize(params: &mut Params, name: &str, obj: &DescribeOrderableDBInstanceOptionsMessage) {
4793        let mut prefix = name.to_string();
4794        if prefix != "" {
4795            prefix.push_str(".");
4796        }
4797
4798        if let Some(ref field_value) = obj.db_instance_class {
4799            params.put(&format!("{}{}", prefix, "DBInstanceClass"), &field_value);
4800        }
4801        params.put(&format!("{}{}", prefix, "Engine"), &obj.engine);
4802        if let Some(ref field_value) = obj.engine_version {
4803            params.put(&format!("{}{}", prefix, "EngineVersion"), &field_value);
4804        }
4805        if let Some(ref field_value) = obj.filters {
4806            FilterListSerializer::serialize(
4807                params,
4808                &format!("{}{}", prefix, "Filter"),
4809                field_value,
4810            );
4811        }
4812        if let Some(ref field_value) = obj.license_model {
4813            params.put(&format!("{}{}", prefix, "LicenseModel"), &field_value);
4814        }
4815        if let Some(ref field_value) = obj.marker {
4816            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4817        }
4818        if let Some(ref field_value) = obj.max_records {
4819            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4820        }
4821        if let Some(ref field_value) = obj.vpc {
4822            params.put(&format!("{}{}", prefix, "Vpc"), &field_value);
4823        }
4824    }
4825}
4826
4827#[derive(Clone, Debug, Default, PartialEq)]
4828#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4829pub struct DescribePendingMaintenanceActionsMessage {
4830    /// <p><p>A filter that specifies one or more resources to return pending maintenance actions for.</p> <p>Supported filters:</p> <ul> <li> <p> <code>db-cluster-id</code> - Accepts DB cluster identifiers and DB cluster Amazon Resource Names (ARNs). The results list will only include pending maintenance actions for the DB clusters identified by these ARNs.</p> </li> <li> <p> <code>db-instance-id</code> - Accepts DB instance identifiers and DB instance ARNs. The results list will only include pending maintenance actions for the DB instances identified by these ARNs.</p> </li> </ul></p>
4831    pub filters: Option<Vec<Filter>>,
4832    /// <p> An optional pagination token provided by a previous <code>DescribePendingMaintenanceActions</code> request. If this parameter is specified, the response includes only records beyond the marker, up to a number of records specified by <code>MaxRecords</code>.</p>
4833    pub marker: Option<String>,
4834    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.</p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
4835    pub max_records: Option<i64>,
4836    /// <p>The ARN of a resource to return pending maintenance actions for.</p>
4837    pub resource_identifier: Option<String>,
4838}
4839
4840/// Serialize `DescribePendingMaintenanceActionsMessage` contents to a `SignedRequest`.
4841struct DescribePendingMaintenanceActionsMessageSerializer;
4842impl DescribePendingMaintenanceActionsMessageSerializer {
4843    fn serialize(params: &mut Params, name: &str, obj: &DescribePendingMaintenanceActionsMessage) {
4844        let mut prefix = name.to_string();
4845        if prefix != "" {
4846            prefix.push_str(".");
4847        }
4848
4849        if let Some(ref field_value) = obj.filters {
4850            FilterListSerializer::serialize(
4851                params,
4852                &format!("{}{}", prefix, "Filter"),
4853                field_value,
4854            );
4855        }
4856        if let Some(ref field_value) = obj.marker {
4857            params.put(&format!("{}{}", prefix, "Marker"), &field_value);
4858        }
4859        if let Some(ref field_value) = obj.max_records {
4860            params.put(&format!("{}{}", prefix, "MaxRecords"), &field_value);
4861        }
4862        if let Some(ref field_value) = obj.resource_identifier {
4863            params.put(&format!("{}{}", prefix, "ResourceIdentifier"), &field_value);
4864        }
4865    }
4866}
4867
4868#[derive(Clone, Debug, Default, PartialEq)]
4869#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4870pub struct DescribeValidDBInstanceModificationsMessage {
4871    /// <p>The customer identifier or the ARN of your DB instance.</p>
4872    pub db_instance_identifier: String,
4873}
4874
4875/// Serialize `DescribeValidDBInstanceModificationsMessage` contents to a `SignedRequest`.
4876struct DescribeValidDBInstanceModificationsMessageSerializer;
4877impl DescribeValidDBInstanceModificationsMessageSerializer {
4878    fn serialize(
4879        params: &mut Params,
4880        name: &str,
4881        obj: &DescribeValidDBInstanceModificationsMessage,
4882    ) {
4883        let mut prefix = name.to_string();
4884        if prefix != "" {
4885            prefix.push_str(".");
4886        }
4887
4888        params.put(
4889            &format!("{}{}", prefix, "DBInstanceIdentifier"),
4890            &obj.db_instance_identifier,
4891        );
4892    }
4893}
4894
4895#[derive(Clone, Debug, Default, PartialEq)]
4896#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4897pub struct DescribeValidDBInstanceModificationsResult {
4898    pub valid_db_instance_modifications_message: Option<ValidDBInstanceModificationsMessage>,
4899}
4900
4901#[allow(dead_code)]
4902struct DescribeValidDBInstanceModificationsResultDeserializer;
4903impl DescribeValidDBInstanceModificationsResultDeserializer {
4904    #[allow(dead_code, unused_variables)]
4905    fn deserialize<T: Peek + Next>(
4906        tag_name: &str,
4907        stack: &mut T,
4908    ) -> Result<DescribeValidDBInstanceModificationsResult, XmlParseError> {
4909        deserialize_elements::<_, DescribeValidDBInstanceModificationsResult, _>(
4910            tag_name,
4911            stack,
4912            |name, stack, obj| {
4913                match name {
4914                    "ValidDBInstanceModificationsMessage" => {
4915                        obj.valid_db_instance_modifications_message = Some(
4916                            ValidDBInstanceModificationsMessageDeserializer::deserialize(
4917                                "ValidDBInstanceModificationsMessage",
4918                                stack,
4919                            )?,
4920                        );
4921                    }
4922                    _ => skip_tree(stack),
4923                }
4924                Ok(())
4925            },
4926        )
4927    }
4928}
4929/// <p>An Active Directory Domain membership record associated with a DB instance.</p>
4930#[derive(Clone, Debug, Default, PartialEq)]
4931#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4932pub struct DomainMembership {
4933    /// <p>The identifier of the Active Directory Domain.</p>
4934    pub domain: Option<String>,
4935    /// <p>The fully qualified domain name of the Active Directory Domain.</p>
4936    pub fqdn: Option<String>,
4937    /// <p>The name of the IAM role to be used when making API calls to the Directory Service.</p>
4938    pub iam_role_name: Option<String>,
4939    /// <p>The status of the DB instance's Active Directory Domain membership, such as joined, pending-join, failed etc).</p>
4940    pub status: Option<String>,
4941}
4942
4943#[allow(dead_code)]
4944struct DomainMembershipDeserializer;
4945impl DomainMembershipDeserializer {
4946    #[allow(dead_code, unused_variables)]
4947    fn deserialize<T: Peek + Next>(
4948        tag_name: &str,
4949        stack: &mut T,
4950    ) -> Result<DomainMembership, XmlParseError> {
4951        deserialize_elements::<_, DomainMembership, _>(tag_name, stack, |name, stack, obj| {
4952            match name {
4953                "Domain" => {
4954                    obj.domain = Some(StringDeserializer::deserialize("Domain", stack)?);
4955                }
4956                "FQDN" => {
4957                    obj.fqdn = Some(StringDeserializer::deserialize("FQDN", stack)?);
4958                }
4959                "IAMRoleName" => {
4960                    obj.iam_role_name =
4961                        Some(StringDeserializer::deserialize("IAMRoleName", stack)?);
4962                }
4963                "Status" => {
4964                    obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
4965                }
4966                _ => skip_tree(stack),
4967            }
4968            Ok(())
4969        })
4970    }
4971}
4972#[allow(dead_code)]
4973struct DomainMembershipListDeserializer;
4974impl DomainMembershipListDeserializer {
4975    #[allow(dead_code, unused_variables)]
4976    fn deserialize<T: Peek + Next>(
4977        tag_name: &str,
4978        stack: &mut T,
4979    ) -> Result<Vec<DomainMembership>, XmlParseError> {
4980        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
4981            if name == "DomainMembership" {
4982                obj.push(DomainMembershipDeserializer::deserialize(
4983                    "DomainMembership",
4984                    stack,
4985                )?);
4986            } else {
4987                skip_tree(stack);
4988            }
4989            Ok(())
4990        })
4991    }
4992}
4993#[allow(dead_code)]
4994struct DoubleDeserializer;
4995impl DoubleDeserializer {
4996    #[allow(dead_code, unused_variables)]
4997    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<f64, XmlParseError> {
4998        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(f64::from_str(&s).unwrap()))
4999    }
5000}
5001#[allow(dead_code)]
5002struct DoubleOptionalDeserializer;
5003impl DoubleOptionalDeserializer {
5004    #[allow(dead_code, unused_variables)]
5005    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<f64, XmlParseError> {
5006        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(f64::from_str(&s).unwrap()))
5007    }
5008}
5009/// <p>A range of double values.</p>
5010#[derive(Clone, Debug, Default, PartialEq)]
5011#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5012pub struct DoubleRange {
5013    /// <p>The minimum value in the range.</p>
5014    pub from: Option<f64>,
5015    /// <p>The maximum value in the range.</p>
5016    pub to: Option<f64>,
5017}
5018
5019#[allow(dead_code)]
5020struct DoubleRangeDeserializer;
5021impl DoubleRangeDeserializer {
5022    #[allow(dead_code, unused_variables)]
5023    fn deserialize<T: Peek + Next>(
5024        tag_name: &str,
5025        stack: &mut T,
5026    ) -> Result<DoubleRange, XmlParseError> {
5027        deserialize_elements::<_, DoubleRange, _>(tag_name, stack, |name, stack, obj| {
5028            match name {
5029                "From" => {
5030                    obj.from = Some(DoubleDeserializer::deserialize("From", stack)?);
5031                }
5032                "To" => {
5033                    obj.to = Some(DoubleDeserializer::deserialize("To", stack)?);
5034                }
5035                _ => skip_tree(stack),
5036            }
5037            Ok(())
5038        })
5039    }
5040}
5041#[allow(dead_code)]
5042struct DoubleRangeListDeserializer;
5043impl DoubleRangeListDeserializer {
5044    #[allow(dead_code, unused_variables)]
5045    fn deserialize<T: Peek + Next>(
5046        tag_name: &str,
5047        stack: &mut T,
5048    ) -> Result<Vec<DoubleRange>, XmlParseError> {
5049        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5050            if name == "DoubleRange" {
5051                obj.push(DoubleRangeDeserializer::deserialize("DoubleRange", stack)?);
5052            } else {
5053                skip_tree(stack);
5054            }
5055            Ok(())
5056        })
5057    }
5058}
5059/// <p>Specifies a connection endpoint.</p>
5060#[derive(Clone, Debug, Default, PartialEq)]
5061#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5062pub struct Endpoint {
5063    /// <p>Specifies the DNS address of the DB instance.</p>
5064    pub address: Option<String>,
5065    /// <p>Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.</p>
5066    pub hosted_zone_id: Option<String>,
5067    /// <p>Specifies the port that the database engine is listening on.</p>
5068    pub port: Option<i64>,
5069}
5070
5071#[allow(dead_code)]
5072struct EndpointDeserializer;
5073impl EndpointDeserializer {
5074    #[allow(dead_code, unused_variables)]
5075    fn deserialize<T: Peek + Next>(
5076        tag_name: &str,
5077        stack: &mut T,
5078    ) -> Result<Endpoint, XmlParseError> {
5079        deserialize_elements::<_, Endpoint, _>(tag_name, stack, |name, stack, obj| {
5080            match name {
5081                "Address" => {
5082                    obj.address = Some(StringDeserializer::deserialize("Address", stack)?);
5083                }
5084                "HostedZoneId" => {
5085                    obj.hosted_zone_id =
5086                        Some(StringDeserializer::deserialize("HostedZoneId", stack)?);
5087                }
5088                "Port" => {
5089                    obj.port = Some(IntegerDeserializer::deserialize("Port", stack)?);
5090                }
5091                _ => skip_tree(stack),
5092            }
5093            Ok(())
5094        })
5095    }
5096}
5097/// <p> Contains the result of a successful invocation of the <a>DescribeEngineDefaultParameters</a> action.</p>
5098#[derive(Clone, Debug, Default, PartialEq)]
5099#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5100pub struct EngineDefaults {
5101    /// <p>Specifies the name of the DB parameter group family that the engine default parameters apply to.</p>
5102    pub db_parameter_group_family: Option<String>,
5103    /// <p> An optional pagination token provided by a previous EngineDefaults request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code> .</p>
5104    pub marker: Option<String>,
5105    /// <p>Contains a list of engine default parameters.</p>
5106    pub parameters: Option<Vec<Parameter>>,
5107}
5108
5109#[allow(dead_code)]
5110struct EngineDefaultsDeserializer;
5111impl EngineDefaultsDeserializer {
5112    #[allow(dead_code, unused_variables)]
5113    fn deserialize<T: Peek + Next>(
5114        tag_name: &str,
5115        stack: &mut T,
5116    ) -> Result<EngineDefaults, XmlParseError> {
5117        deserialize_elements::<_, EngineDefaults, _>(tag_name, stack, |name, stack, obj| {
5118            match name {
5119                "DBParameterGroupFamily" => {
5120                    obj.db_parameter_group_family = Some(StringDeserializer::deserialize(
5121                        "DBParameterGroupFamily",
5122                        stack,
5123                    )?);
5124                }
5125                "Marker" => {
5126                    obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
5127                }
5128                "Parameters" => {
5129                    obj.parameters.get_or_insert(vec![]).extend(
5130                        ParametersListDeserializer::deserialize("Parameters", stack)?,
5131                    );
5132                }
5133                _ => skip_tree(stack),
5134            }
5135            Ok(())
5136        })
5137    }
5138}
5139/// <p> This data type is used as a response element in the <a>DescribeEvents</a> action.</p>
5140#[derive(Clone, Debug, Default, PartialEq)]
5141#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5142pub struct Event {
5143    /// <p>Specifies the date and time of the event.</p>
5144    pub date: Option<String>,
5145    /// <p>Specifies the category for the event.</p>
5146    pub event_categories: Option<Vec<String>>,
5147    /// <p>Provides the text of this event.</p>
5148    pub message: Option<String>,
5149    /// <p>The Amazon Resource Name (ARN) for the event.</p>
5150    pub source_arn: Option<String>,
5151    /// <p>Provides the identifier for the source of the event.</p>
5152    pub source_identifier: Option<String>,
5153    /// <p>Specifies the source type for this event.</p>
5154    pub source_type: Option<String>,
5155}
5156
5157#[allow(dead_code)]
5158struct EventDeserializer;
5159impl EventDeserializer {
5160    #[allow(dead_code, unused_variables)]
5161    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Event, XmlParseError> {
5162        deserialize_elements::<_, Event, _>(tag_name, stack, |name, stack, obj| {
5163            match name {
5164                "Date" => {
5165                    obj.date = Some(TStampDeserializer::deserialize("Date", stack)?);
5166                }
5167                "EventCategories" => {
5168                    obj.event_categories.get_or_insert(vec![]).extend(
5169                        EventCategoriesListDeserializer::deserialize("EventCategories", stack)?,
5170                    );
5171                }
5172                "Message" => {
5173                    obj.message = Some(StringDeserializer::deserialize("Message", stack)?);
5174                }
5175                "SourceArn" => {
5176                    obj.source_arn = Some(StringDeserializer::deserialize("SourceArn", stack)?);
5177                }
5178                "SourceIdentifier" => {
5179                    obj.source_identifier =
5180                        Some(StringDeserializer::deserialize("SourceIdentifier", stack)?);
5181                }
5182                "SourceType" => {
5183                    obj.source_type =
5184                        Some(SourceTypeDeserializer::deserialize("SourceType", stack)?);
5185                }
5186                _ => skip_tree(stack),
5187            }
5188            Ok(())
5189        })
5190    }
5191}
5192#[allow(dead_code)]
5193struct EventCategoriesListDeserializer;
5194impl EventCategoriesListDeserializer {
5195    #[allow(dead_code, unused_variables)]
5196    fn deserialize<T: Peek + Next>(
5197        tag_name: &str,
5198        stack: &mut T,
5199    ) -> Result<Vec<String>, XmlParseError> {
5200        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5201            if name == "EventCategory" {
5202                obj.push(StringDeserializer::deserialize("EventCategory", stack)?);
5203            } else {
5204                skip_tree(stack);
5205            }
5206            Ok(())
5207        })
5208    }
5209}
5210
5211/// Serialize `EventCategoriesList` contents to a `SignedRequest`.
5212struct EventCategoriesListSerializer;
5213impl EventCategoriesListSerializer {
5214    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
5215        for (index, obj) in obj.iter().enumerate() {
5216            let key = format!("{}.member.{}", name, index + 1);
5217            params.put(&key, &obj);
5218        }
5219    }
5220}
5221
5222/// <p>Contains the results of a successful invocation of the <a>DescribeEventCategories</a> action.</p>
5223#[derive(Clone, Debug, Default, PartialEq)]
5224#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5225pub struct EventCategoriesMap {
5226    /// <p>The event categories for the specified source type</p>
5227    pub event_categories: Option<Vec<String>>,
5228    /// <p>The source type that the returned categories belong to</p>
5229    pub source_type: Option<String>,
5230}
5231
5232#[allow(dead_code)]
5233struct EventCategoriesMapDeserializer;
5234impl EventCategoriesMapDeserializer {
5235    #[allow(dead_code, unused_variables)]
5236    fn deserialize<T: Peek + Next>(
5237        tag_name: &str,
5238        stack: &mut T,
5239    ) -> Result<EventCategoriesMap, XmlParseError> {
5240        deserialize_elements::<_, EventCategoriesMap, _>(tag_name, stack, |name, stack, obj| {
5241            match name {
5242                "EventCategories" => {
5243                    obj.event_categories.get_or_insert(vec![]).extend(
5244                        EventCategoriesListDeserializer::deserialize("EventCategories", stack)?,
5245                    );
5246                }
5247                "SourceType" => {
5248                    obj.source_type = Some(StringDeserializer::deserialize("SourceType", stack)?);
5249                }
5250                _ => skip_tree(stack),
5251            }
5252            Ok(())
5253        })
5254    }
5255}
5256#[allow(dead_code)]
5257struct EventCategoriesMapListDeserializer;
5258impl EventCategoriesMapListDeserializer {
5259    #[allow(dead_code, unused_variables)]
5260    fn deserialize<T: Peek + Next>(
5261        tag_name: &str,
5262        stack: &mut T,
5263    ) -> Result<Vec<EventCategoriesMap>, XmlParseError> {
5264        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5265            if name == "EventCategoriesMap" {
5266                obj.push(EventCategoriesMapDeserializer::deserialize(
5267                    "EventCategoriesMap",
5268                    stack,
5269                )?);
5270            } else {
5271                skip_tree(stack);
5272            }
5273            Ok(())
5274        })
5275    }
5276}
5277#[derive(Clone, Debug, Default, PartialEq)]
5278#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5279pub struct EventCategoriesMessage {
5280    /// <p>A list of EventCategoriesMap data types.</p>
5281    pub event_categories_map_list: Option<Vec<EventCategoriesMap>>,
5282}
5283
5284#[allow(dead_code)]
5285struct EventCategoriesMessageDeserializer;
5286impl EventCategoriesMessageDeserializer {
5287    #[allow(dead_code, unused_variables)]
5288    fn deserialize<T: Peek + Next>(
5289        tag_name: &str,
5290        stack: &mut T,
5291    ) -> Result<EventCategoriesMessage, XmlParseError> {
5292        deserialize_elements::<_, EventCategoriesMessage, _>(tag_name, stack, |name, stack, obj| {
5293            match name {
5294                "EventCategoriesMapList" => {
5295                    obj.event_categories_map_list.get_or_insert(vec![]).extend(
5296                        EventCategoriesMapListDeserializer::deserialize(
5297                            "EventCategoriesMapList",
5298                            stack,
5299                        )?,
5300                    );
5301                }
5302                _ => skip_tree(stack),
5303            }
5304            Ok(())
5305        })
5306    }
5307}
5308#[allow(dead_code)]
5309struct EventListDeserializer;
5310impl EventListDeserializer {
5311    #[allow(dead_code, unused_variables)]
5312    fn deserialize<T: Peek + Next>(
5313        tag_name: &str,
5314        stack: &mut T,
5315    ) -> Result<Vec<Event>, XmlParseError> {
5316        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5317            if name == "Event" {
5318                obj.push(EventDeserializer::deserialize("Event", stack)?);
5319            } else {
5320                skip_tree(stack);
5321            }
5322            Ok(())
5323        })
5324    }
5325}
5326/// <p>Contains the results of a successful invocation of the <a>DescribeEventSubscriptions</a> action.</p>
5327#[derive(Clone, Debug, Default, PartialEq)]
5328#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5329pub struct EventSubscription {
5330    /// <p>The event notification subscription Id.</p>
5331    pub cust_subscription_id: Option<String>,
5332    /// <p>The AWS customer account associated with the event notification subscription.</p>
5333    pub customer_aws_id: Option<String>,
5334    /// <p>A Boolean value indicating if the subscription is enabled. True indicates the subscription is enabled.</p>
5335    pub enabled: Option<bool>,
5336    /// <p>A list of event categories for the event notification subscription.</p>
5337    pub event_categories_list: Option<Vec<String>>,
5338    /// <p>The Amazon Resource Name (ARN) for the event subscription.</p>
5339    pub event_subscription_arn: Option<String>,
5340    /// <p>The topic ARN of the event notification subscription.</p>
5341    pub sns_topic_arn: Option<String>,
5342    /// <p>A list of source IDs for the event notification subscription.</p>
5343    pub source_ids_list: Option<Vec<String>>,
5344    /// <p>The source type for the event notification subscription.</p>
5345    pub source_type: Option<String>,
5346    /// <p>The status of the event notification subscription.</p> <p>Constraints:</p> <p>Can be one of the following: creating | modifying | deleting | active | no-permission | topic-not-exist</p> <p>The status "no-permission" indicates that Neptune no longer has permission to post to the SNS topic. The status "topic-not-exist" indicates that the topic was deleted after the subscription was created.</p>
5347    pub status: Option<String>,
5348    /// <p>The time the event notification subscription was created.</p>
5349    pub subscription_creation_time: Option<String>,
5350}
5351
5352#[allow(dead_code)]
5353struct EventSubscriptionDeserializer;
5354impl EventSubscriptionDeserializer {
5355    #[allow(dead_code, unused_variables)]
5356    fn deserialize<T: Peek + Next>(
5357        tag_name: &str,
5358        stack: &mut T,
5359    ) -> Result<EventSubscription, XmlParseError> {
5360        deserialize_elements::<_, EventSubscription, _>(tag_name, stack, |name, stack, obj| {
5361            match name {
5362                "CustSubscriptionId" => {
5363                    obj.cust_subscription_id = Some(StringDeserializer::deserialize(
5364                        "CustSubscriptionId",
5365                        stack,
5366                    )?);
5367                }
5368                "CustomerAwsId" => {
5369                    obj.customer_aws_id =
5370                        Some(StringDeserializer::deserialize("CustomerAwsId", stack)?);
5371                }
5372                "Enabled" => {
5373                    obj.enabled = Some(BooleanDeserializer::deserialize("Enabled", stack)?);
5374                }
5375                "EventCategoriesList" => {
5376                    obj.event_categories_list.get_or_insert(vec![]).extend(
5377                        EventCategoriesListDeserializer::deserialize("EventCategoriesList", stack)?,
5378                    );
5379                }
5380                "EventSubscriptionArn" => {
5381                    obj.event_subscription_arn = Some(StringDeserializer::deserialize(
5382                        "EventSubscriptionArn",
5383                        stack,
5384                    )?);
5385                }
5386                "SnsTopicArn" => {
5387                    obj.sns_topic_arn =
5388                        Some(StringDeserializer::deserialize("SnsTopicArn", stack)?);
5389                }
5390                "SourceIdsList" => {
5391                    obj.source_ids_list.get_or_insert(vec![]).extend(
5392                        SourceIdsListDeserializer::deserialize("SourceIdsList", stack)?,
5393                    );
5394                }
5395                "SourceType" => {
5396                    obj.source_type = Some(StringDeserializer::deserialize("SourceType", stack)?);
5397                }
5398                "Status" => {
5399                    obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
5400                }
5401                "SubscriptionCreationTime" => {
5402                    obj.subscription_creation_time = Some(StringDeserializer::deserialize(
5403                        "SubscriptionCreationTime",
5404                        stack,
5405                    )?);
5406                }
5407                _ => skip_tree(stack),
5408            }
5409            Ok(())
5410        })
5411    }
5412}
5413#[allow(dead_code)]
5414struct EventSubscriptionsListDeserializer;
5415impl EventSubscriptionsListDeserializer {
5416    #[allow(dead_code, unused_variables)]
5417    fn deserialize<T: Peek + Next>(
5418        tag_name: &str,
5419        stack: &mut T,
5420    ) -> Result<Vec<EventSubscription>, XmlParseError> {
5421        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5422            if name == "EventSubscription" {
5423                obj.push(EventSubscriptionDeserializer::deserialize(
5424                    "EventSubscription",
5425                    stack,
5426                )?);
5427            } else {
5428                skip_tree(stack);
5429            }
5430            Ok(())
5431        })
5432    }
5433}
5434#[derive(Clone, Debug, Default, PartialEq)]
5435#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5436pub struct EventSubscriptionsMessage {
5437    /// <p>A list of EventSubscriptions data types.</p>
5438    pub event_subscriptions_list: Option<Vec<EventSubscription>>,
5439    /// <p> An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
5440    pub marker: Option<String>,
5441}
5442
5443#[allow(dead_code)]
5444struct EventSubscriptionsMessageDeserializer;
5445impl EventSubscriptionsMessageDeserializer {
5446    #[allow(dead_code, unused_variables)]
5447    fn deserialize<T: Peek + Next>(
5448        tag_name: &str,
5449        stack: &mut T,
5450    ) -> Result<EventSubscriptionsMessage, XmlParseError> {
5451        deserialize_elements::<_, EventSubscriptionsMessage, _>(
5452            tag_name,
5453            stack,
5454            |name, stack, obj| {
5455                match name {
5456                    "EventSubscriptionsList" => {
5457                        obj.event_subscriptions_list.get_or_insert(vec![]).extend(
5458                            EventSubscriptionsListDeserializer::deserialize(
5459                                "EventSubscriptionsList",
5460                                stack,
5461                            )?,
5462                        );
5463                    }
5464                    "Marker" => {
5465                        obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
5466                    }
5467                    _ => skip_tree(stack),
5468                }
5469                Ok(())
5470            },
5471        )
5472    }
5473}
5474#[derive(Clone, Debug, Default, PartialEq)]
5475#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5476pub struct EventsMessage {
5477    /// <p> A list of <a>Event</a> instances.</p>
5478    pub events: Option<Vec<Event>>,
5479    /// <p> An optional pagination token provided by a previous Events request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code> .</p>
5480    pub marker: Option<String>,
5481}
5482
5483#[allow(dead_code)]
5484struct EventsMessageDeserializer;
5485impl EventsMessageDeserializer {
5486    #[allow(dead_code, unused_variables)]
5487    fn deserialize<T: Peek + Next>(
5488        tag_name: &str,
5489        stack: &mut T,
5490    ) -> Result<EventsMessage, XmlParseError> {
5491        deserialize_elements::<_, EventsMessage, _>(tag_name, stack, |name, stack, obj| {
5492            match name {
5493                "Events" => {
5494                    obj.events
5495                        .get_or_insert(vec![])
5496                        .extend(EventListDeserializer::deserialize("Events", stack)?);
5497                }
5498                "Marker" => {
5499                    obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
5500                }
5501                _ => skip_tree(stack),
5502            }
5503            Ok(())
5504        })
5505    }
5506}
5507#[derive(Clone, Debug, Default, PartialEq)]
5508#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5509pub struct FailoverDBClusterMessage {
5510    /// <p><p>A DB cluster identifier to force a failover for. This parameter is not case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>Must match the identifier of an existing DBCluster.</p> </li> </ul></p>
5511    pub db_cluster_identifier: Option<String>,
5512    /// <p>The name of the instance to promote to the primary instance.</p> <p>You must specify the instance identifier for an Read Replica in the DB cluster. For example, <code>mydbcluster-replica1</code>.</p>
5513    pub target_db_instance_identifier: Option<String>,
5514}
5515
5516/// Serialize `FailoverDBClusterMessage` contents to a `SignedRequest`.
5517struct FailoverDBClusterMessageSerializer;
5518impl FailoverDBClusterMessageSerializer {
5519    fn serialize(params: &mut Params, name: &str, obj: &FailoverDBClusterMessage) {
5520        let mut prefix = name.to_string();
5521        if prefix != "" {
5522            prefix.push_str(".");
5523        }
5524
5525        if let Some(ref field_value) = obj.db_cluster_identifier {
5526            params.put(
5527                &format!("{}{}", prefix, "DBClusterIdentifier"),
5528                &field_value,
5529            );
5530        }
5531        if let Some(ref field_value) = obj.target_db_instance_identifier {
5532            params.put(
5533                &format!("{}{}", prefix, "TargetDBInstanceIdentifier"),
5534                &field_value,
5535            );
5536        }
5537    }
5538}
5539
5540#[derive(Clone, Debug, Default, PartialEq)]
5541#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5542pub struct FailoverDBClusterResult {
5543    pub db_cluster: Option<DBCluster>,
5544}
5545
5546#[allow(dead_code)]
5547struct FailoverDBClusterResultDeserializer;
5548impl FailoverDBClusterResultDeserializer {
5549    #[allow(dead_code, unused_variables)]
5550    fn deserialize<T: Peek + Next>(
5551        tag_name: &str,
5552        stack: &mut T,
5553    ) -> Result<FailoverDBClusterResult, XmlParseError> {
5554        deserialize_elements::<_, FailoverDBClusterResult, _>(
5555            tag_name,
5556            stack,
5557            |name, stack, obj| {
5558                match name {
5559                    "DBCluster" => {
5560                        obj.db_cluster =
5561                            Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
5562                    }
5563                    _ => skip_tree(stack),
5564                }
5565                Ok(())
5566            },
5567        )
5568    }
5569}
5570/// <p>This type is not currently supported.</p>
5571#[derive(Clone, Debug, Default, PartialEq)]
5572#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5573pub struct Filter {
5574    /// <p>This parameter is not currently supported.</p>
5575    pub name: String,
5576    /// <p>This parameter is not currently supported.</p>
5577    pub values: Vec<String>,
5578}
5579
5580/// Serialize `Filter` contents to a `SignedRequest`.
5581struct FilterSerializer;
5582impl FilterSerializer {
5583    fn serialize(params: &mut Params, name: &str, obj: &Filter) {
5584        let mut prefix = name.to_string();
5585        if prefix != "" {
5586            prefix.push_str(".");
5587        }
5588
5589        params.put(&format!("{}{}", prefix, "Name"), &obj.name);
5590        FilterValueListSerializer::serialize(
5591            params,
5592            &format!("{}{}", prefix, "Value"),
5593            &obj.values,
5594        );
5595    }
5596}
5597
5598/// Serialize `FilterList` contents to a `SignedRequest`.
5599struct FilterListSerializer;
5600impl FilterListSerializer {
5601    fn serialize(params: &mut Params, name: &str, obj: &Vec<Filter>) {
5602        for (index, obj) in obj.iter().enumerate() {
5603            let key = format!("{}.member.{}", name, index + 1);
5604            FilterSerializer::serialize(params, &key, obj);
5605        }
5606    }
5607}
5608
5609/// Serialize `FilterValueList` contents to a `SignedRequest`.
5610struct FilterValueListSerializer;
5611impl FilterValueListSerializer {
5612    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
5613        for (index, obj) in obj.iter().enumerate() {
5614            let key = format!("{}.member.{}", name, index + 1);
5615            params.put(&key, &obj);
5616        }
5617    }
5618}
5619
5620#[allow(dead_code)]
5621struct IntegerDeserializer;
5622impl IntegerDeserializer {
5623    #[allow(dead_code, unused_variables)]
5624    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
5625        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
5626    }
5627}
5628#[allow(dead_code)]
5629struct IntegerOptionalDeserializer;
5630impl IntegerOptionalDeserializer {
5631    #[allow(dead_code, unused_variables)]
5632    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
5633        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
5634    }
5635}
5636
5637/// Serialize `KeyList` contents to a `SignedRequest`.
5638struct KeyListSerializer;
5639impl KeyListSerializer {
5640    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
5641        for (index, obj) in obj.iter().enumerate() {
5642            let key = format!("{}.member.{}", name, index + 1);
5643            params.put(&key, &obj);
5644        }
5645    }
5646}
5647
5648#[derive(Clone, Debug, Default, PartialEq)]
5649#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5650pub struct ListTagsForResourceMessage {
5651    /// <p>This parameter is not currently supported.</p>
5652    pub filters: Option<Vec<Filter>>,
5653    /// <p>The Amazon Neptune resource with tags to be listed. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see <a href="https://docs.aws.amazon.com/neptune/latest/UserGuide/tagging.ARN.html#tagging.ARN.Constructing"> Constructing an Amazon Resource Name (ARN)</a>.</p>
5654    pub resource_name: String,
5655}
5656
5657/// Serialize `ListTagsForResourceMessage` contents to a `SignedRequest`.
5658struct ListTagsForResourceMessageSerializer;
5659impl ListTagsForResourceMessageSerializer {
5660    fn serialize(params: &mut Params, name: &str, obj: &ListTagsForResourceMessage) {
5661        let mut prefix = name.to_string();
5662        if prefix != "" {
5663            prefix.push_str(".");
5664        }
5665
5666        if let Some(ref field_value) = obj.filters {
5667            FilterListSerializer::serialize(
5668                params,
5669                &format!("{}{}", prefix, "Filter"),
5670                field_value,
5671            );
5672        }
5673        params.put(&format!("{}{}", prefix, "ResourceName"), &obj.resource_name);
5674    }
5675}
5676
5677#[allow(dead_code)]
5678struct LogTypeListDeserializer;
5679impl LogTypeListDeserializer {
5680    #[allow(dead_code, unused_variables)]
5681    fn deserialize<T: Peek + Next>(
5682        tag_name: &str,
5683        stack: &mut T,
5684    ) -> Result<Vec<String>, XmlParseError> {
5685        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5686            if name == "member" {
5687                obj.push(StringDeserializer::deserialize("member", stack)?);
5688            } else {
5689                skip_tree(stack);
5690            }
5691            Ok(())
5692        })
5693    }
5694}
5695
5696/// Serialize `LogTypeList` contents to a `SignedRequest`.
5697struct LogTypeListSerializer;
5698impl LogTypeListSerializer {
5699    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
5700        for (index, obj) in obj.iter().enumerate() {
5701            let key = format!("{}.member.{}", name, index + 1);
5702            params.put(&key, &obj);
5703        }
5704    }
5705}
5706
5707#[derive(Clone, Debug, Default, PartialEq)]
5708#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5709pub struct ModifyDBClusterMessage {
5710    /// <p>A value that specifies whether the modifications in this request and any pending modifications are asynchronously applied as soon as possible, regardless of the <code>PreferredMaintenanceWindow</code> setting for the DB cluster. If this parameter is set to <code>false</code>, changes to the DB cluster are applied during the next maintenance window.</p> <p>The <code>ApplyImmediately</code> parameter only affects the <code>NewDBClusterIdentifier</code> and <code>MasterUserPassword</code> values. If you set the <code>ApplyImmediately</code> parameter value to false, then changes to the <code>NewDBClusterIdentifier</code> and <code>MasterUserPassword</code> values are applied during the next maintenance window. All other changes are applied immediately, regardless of the value of the <code>ApplyImmediately</code> parameter.</p> <p>Default: <code>false</code> </p>
5711    pub apply_immediately: Option<bool>,
5712    /// <p><p>The number of days for which automated backups are retained. You must specify a minimum value of 1.</p> <p>Default: 1</p> <p>Constraints:</p> <ul> <li> <p>Must be a value from 1 to 35</p> </li> </ul></p>
5713    pub backup_retention_period: Option<i64>,
5714    /// <p>The configuration setting for the log types to be enabled for export to CloudWatch Logs for a specific DB cluster.</p>
5715    pub cloudwatch_logs_export_configuration: Option<CloudwatchLogsExportConfiguration>,
5716    /// <p><p>The DB cluster identifier for the cluster being modified. This parameter is not case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>Must match the identifier of an existing DBCluster.</p> </li> </ul></p>
5717    pub db_cluster_identifier: String,
5718    /// <p>The name of the DB cluster parameter group to use for the DB cluster.</p>
5719    pub db_cluster_parameter_group_name: Option<String>,
5720    /// <p>A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.</p>
5721    pub deletion_protection: Option<bool>,
5722    /// <p>True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false.</p> <p>Default: <code>false</code> </p>
5723    pub enable_iam_database_authentication: Option<bool>,
5724    /// <p>The version number of the database engine. Currently, setting this parameter has no effect. To upgrade your database engine to the most recent release, use the <a>ApplyPendingMaintenanceAction</a> API.</p> <p>For a list of valid engine versions, see <a>CreateDBInstance</a>, or call <a>DescribeDBEngineVersions</a>.</p>
5725    pub engine_version: Option<String>,
5726    /// <p>The new password for the master database user. This password can contain any printable ASCII character except "/", """, or "@".</p> <p>Constraints: Must contain from 8 to 41 characters.</p>
5727    pub master_user_password: Option<String>,
5728    /// <p>The new DB cluster identifier for the DB cluster when renaming a DB cluster. This value is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens</p> </li> <li> <p>The first character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul> <p>Example: <code>my-cluster2</code> </p>
5729    pub new_db_cluster_identifier: Option<String>,
5730    /// <p> <i>(Not supported by Neptune)</i> </p>
5731    pub option_group_name: Option<String>,
5732    /// <p>The port number on which the DB cluster accepts connections.</p> <p>Constraints: Value must be <code>1150-65535</code> </p> <p>Default: The same port as the original DB cluster.</p>
5733    pub port: Option<i64>,
5734    /// <p><p>The daily time range during which automated backups are created if automated backups are enabled, using the <code>BackupRetentionPeriod</code> parameter.</p> <p>The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region.</p> <p>Constraints:</p> <ul> <li> <p>Must be in the format <code>hh24:mi-hh24:mi</code>.</p> </li> <li> <p>Must be in Universal Coordinated Time (UTC).</p> </li> <li> <p>Must not conflict with the preferred maintenance window.</p> </li> <li> <p>Must be at least 30 minutes.</p> </li> </ul></p>
5735    pub preferred_backup_window: Option<String>,
5736    /// <p>The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).</p> <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code> </p> <p>The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region, occurring on a random day of the week.</p> <p>Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.</p> <p>Constraints: Minimum 30-minute window.</p>
5737    pub preferred_maintenance_window: Option<String>,
5738    /// <p>A list of VPC security groups that the DB cluster will belong to.</p>
5739    pub vpc_security_group_ids: Option<Vec<String>>,
5740}
5741
5742/// Serialize `ModifyDBClusterMessage` contents to a `SignedRequest`.
5743struct ModifyDBClusterMessageSerializer;
5744impl ModifyDBClusterMessageSerializer {
5745    fn serialize(params: &mut Params, name: &str, obj: &ModifyDBClusterMessage) {
5746        let mut prefix = name.to_string();
5747        if prefix != "" {
5748            prefix.push_str(".");
5749        }
5750
5751        if let Some(ref field_value) = obj.apply_immediately {
5752            params.put(&format!("{}{}", prefix, "ApplyImmediately"), &field_value);
5753        }
5754        if let Some(ref field_value) = obj.backup_retention_period {
5755            params.put(
5756                &format!("{}{}", prefix, "BackupRetentionPeriod"),
5757                &field_value,
5758            );
5759        }
5760        if let Some(ref field_value) = obj.cloudwatch_logs_export_configuration {
5761            CloudwatchLogsExportConfigurationSerializer::serialize(
5762                params,
5763                &format!("{}{}", prefix, "CloudwatchLogsExportConfiguration"),
5764                field_value,
5765            );
5766        }
5767        params.put(
5768            &format!("{}{}", prefix, "DBClusterIdentifier"),
5769            &obj.db_cluster_identifier,
5770        );
5771        if let Some(ref field_value) = obj.db_cluster_parameter_group_name {
5772            params.put(
5773                &format!("{}{}", prefix, "DBClusterParameterGroupName"),
5774                &field_value,
5775            );
5776        }
5777        if let Some(ref field_value) = obj.deletion_protection {
5778            params.put(&format!("{}{}", prefix, "DeletionProtection"), &field_value);
5779        }
5780        if let Some(ref field_value) = obj.enable_iam_database_authentication {
5781            params.put(
5782                &format!("{}{}", prefix, "EnableIAMDatabaseAuthentication"),
5783                &field_value,
5784            );
5785        }
5786        if let Some(ref field_value) = obj.engine_version {
5787            params.put(&format!("{}{}", prefix, "EngineVersion"), &field_value);
5788        }
5789        if let Some(ref field_value) = obj.master_user_password {
5790            params.put(&format!("{}{}", prefix, "MasterUserPassword"), &field_value);
5791        }
5792        if let Some(ref field_value) = obj.new_db_cluster_identifier {
5793            params.put(
5794                &format!("{}{}", prefix, "NewDBClusterIdentifier"),
5795                &field_value,
5796            );
5797        }
5798        if let Some(ref field_value) = obj.option_group_name {
5799            params.put(&format!("{}{}", prefix, "OptionGroupName"), &field_value);
5800        }
5801        if let Some(ref field_value) = obj.port {
5802            params.put(&format!("{}{}", prefix, "Port"), &field_value);
5803        }
5804        if let Some(ref field_value) = obj.preferred_backup_window {
5805            params.put(
5806                &format!("{}{}", prefix, "PreferredBackupWindow"),
5807                &field_value,
5808            );
5809        }
5810        if let Some(ref field_value) = obj.preferred_maintenance_window {
5811            params.put(
5812                &format!("{}{}", prefix, "PreferredMaintenanceWindow"),
5813                &field_value,
5814            );
5815        }
5816        if let Some(ref field_value) = obj.vpc_security_group_ids {
5817            VpcSecurityGroupIdListSerializer::serialize(
5818                params,
5819                &format!("{}{}", prefix, "VpcSecurityGroupId"),
5820                field_value,
5821            );
5822        }
5823    }
5824}
5825
5826#[derive(Clone, Debug, Default, PartialEq)]
5827#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5828pub struct ModifyDBClusterParameterGroupMessage {
5829    /// <p>The name of the DB cluster parameter group to modify.</p>
5830    pub db_cluster_parameter_group_name: String,
5831    /// <p>A list of parameters in the DB cluster parameter group to modify.</p>
5832    pub parameters: Vec<Parameter>,
5833}
5834
5835/// Serialize `ModifyDBClusterParameterGroupMessage` contents to a `SignedRequest`.
5836struct ModifyDBClusterParameterGroupMessageSerializer;
5837impl ModifyDBClusterParameterGroupMessageSerializer {
5838    fn serialize(params: &mut Params, name: &str, obj: &ModifyDBClusterParameterGroupMessage) {
5839        let mut prefix = name.to_string();
5840        if prefix != "" {
5841            prefix.push_str(".");
5842        }
5843
5844        params.put(
5845            &format!("{}{}", prefix, "DBClusterParameterGroupName"),
5846            &obj.db_cluster_parameter_group_name,
5847        );
5848        ParametersListSerializer::serialize(
5849            params,
5850            &format!("{}{}", prefix, "Parameter"),
5851            &obj.parameters,
5852        );
5853    }
5854}
5855
5856#[derive(Clone, Debug, Default, PartialEq)]
5857#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5858pub struct ModifyDBClusterResult {
5859    pub db_cluster: Option<DBCluster>,
5860}
5861
5862#[allow(dead_code)]
5863struct ModifyDBClusterResultDeserializer;
5864impl ModifyDBClusterResultDeserializer {
5865    #[allow(dead_code, unused_variables)]
5866    fn deserialize<T: Peek + Next>(
5867        tag_name: &str,
5868        stack: &mut T,
5869    ) -> Result<ModifyDBClusterResult, XmlParseError> {
5870        deserialize_elements::<_, ModifyDBClusterResult, _>(tag_name, stack, |name, stack, obj| {
5871            match name {
5872                "DBCluster" => {
5873                    obj.db_cluster = Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
5874                }
5875                _ => skip_tree(stack),
5876            }
5877            Ok(())
5878        })
5879    }
5880}
5881#[derive(Clone, Debug, Default, PartialEq)]
5882#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5883pub struct ModifyDBClusterSnapshotAttributeMessage {
5884    /// <p>The name of the DB cluster snapshot attribute to modify.</p> <p>To manage authorization for other AWS accounts to copy or restore a manual DB cluster snapshot, set this value to <code>restore</code>.</p>
5885    pub attribute_name: String,
5886    /// <p>The identifier for the DB cluster snapshot to modify the attributes for.</p>
5887    pub db_cluster_snapshot_identifier: String,
5888    /// <p>A list of DB cluster snapshot attributes to add to the attribute specified by <code>AttributeName</code>.</p> <p>To authorize other AWS accounts to copy or restore a manual DB cluster snapshot, set this list to include one or more AWS account IDs, or <code>all</code> to make the manual DB cluster snapshot restorable by any AWS account. Do not add the <code>all</code> value for any manual DB cluster snapshots that contain private information that you don't want available to all AWS accounts.</p>
5889    pub values_to_add: Option<Vec<String>>,
5890    /// <p>A list of DB cluster snapshot attributes to remove from the attribute specified by <code>AttributeName</code>.</p> <p>To remove authorization for other AWS accounts to copy or restore a manual DB cluster snapshot, set this list to include one or more AWS account identifiers, or <code>all</code> to remove authorization for any AWS account to copy or restore the DB cluster snapshot. If you specify <code>all</code>, an AWS account whose account ID is explicitly added to the <code>restore</code> attribute can still copy or restore a manual DB cluster snapshot.</p>
5891    pub values_to_remove: Option<Vec<String>>,
5892}
5893
5894/// Serialize `ModifyDBClusterSnapshotAttributeMessage` contents to a `SignedRequest`.
5895struct ModifyDBClusterSnapshotAttributeMessageSerializer;
5896impl ModifyDBClusterSnapshotAttributeMessageSerializer {
5897    fn serialize(params: &mut Params, name: &str, obj: &ModifyDBClusterSnapshotAttributeMessage) {
5898        let mut prefix = name.to_string();
5899        if prefix != "" {
5900            prefix.push_str(".");
5901        }
5902
5903        params.put(
5904            &format!("{}{}", prefix, "AttributeName"),
5905            &obj.attribute_name,
5906        );
5907        params.put(
5908            &format!("{}{}", prefix, "DBClusterSnapshotIdentifier"),
5909            &obj.db_cluster_snapshot_identifier,
5910        );
5911        if let Some(ref field_value) = obj.values_to_add {
5912            AttributeValueListSerializer::serialize(
5913                params,
5914                &format!("{}{}", prefix, "AttributeValue"),
5915                field_value,
5916            );
5917        }
5918        if let Some(ref field_value) = obj.values_to_remove {
5919            AttributeValueListSerializer::serialize(
5920                params,
5921                &format!("{}{}", prefix, "AttributeValue"),
5922                field_value,
5923            );
5924        }
5925    }
5926}
5927
5928#[derive(Clone, Debug, Default, PartialEq)]
5929#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5930pub struct ModifyDBClusterSnapshotAttributeResult {
5931    pub db_cluster_snapshot_attributes_result: Option<DBClusterSnapshotAttributesResult>,
5932}
5933
5934#[allow(dead_code)]
5935struct ModifyDBClusterSnapshotAttributeResultDeserializer;
5936impl ModifyDBClusterSnapshotAttributeResultDeserializer {
5937    #[allow(dead_code, unused_variables)]
5938    fn deserialize<T: Peek + Next>(
5939        tag_name: &str,
5940        stack: &mut T,
5941    ) -> Result<ModifyDBClusterSnapshotAttributeResult, XmlParseError> {
5942        deserialize_elements::<_, ModifyDBClusterSnapshotAttributeResult, _>(
5943            tag_name,
5944            stack,
5945            |name, stack, obj| {
5946                match name {
5947                    "DBClusterSnapshotAttributesResult" => {
5948                        obj.db_cluster_snapshot_attributes_result =
5949                            Some(DBClusterSnapshotAttributesResultDeserializer::deserialize(
5950                                "DBClusterSnapshotAttributesResult",
5951                                stack,
5952                            )?);
5953                    }
5954                    _ => skip_tree(stack),
5955                }
5956                Ok(())
5957            },
5958        )
5959    }
5960}
5961#[derive(Clone, Debug, Default, PartialEq)]
5962#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5963pub struct ModifyDBInstanceMessage {
5964    /// <p>The new amount of storage (in gibibytes) to allocate for the DB instance.</p> <p>Not applicable. Storage is managed by the DB Cluster.</p>
5965    pub allocated_storage: Option<i64>,
5966    /// <p>Indicates that major version upgrades are allowed. Changing this parameter doesn't result in an outage and the change is asynchronously applied as soon as possible.</p>
5967    pub allow_major_version_upgrade: Option<bool>,
5968    /// <p>Specifies whether the modifications in this request and any pending modifications are asynchronously applied as soon as possible, regardless of the <code>PreferredMaintenanceWindow</code> setting for the DB instance.</p> <p> If this parameter is set to <code>false</code>, changes to the DB instance are applied during the next maintenance window. Some parameter changes can cause an outage and are applied on the next call to <a>RebootDBInstance</a>, or the next failure reboot.</p> <p>Default: <code>false</code> </p>
5969    pub apply_immediately: Option<bool>,
5970    /// <p> Indicates that minor version upgrades are applied automatically to the DB instance during the maintenance window. Changing this parameter doesn't result in an outage except in the following case and the change is asynchronously applied as soon as possible. An outage will result if this parameter is set to <code>true</code> during the maintenance window, and a newer minor version is available, and Neptune has enabled auto patching for that engine version.</p>
5971    pub auto_minor_version_upgrade: Option<bool>,
5972    /// <p>Not applicable. The retention period for automated backups is managed by the DB cluster. For more information, see <a>ModifyDBCluster</a>.</p> <p>Default: Uses existing setting</p>
5973    pub backup_retention_period: Option<i64>,
5974    /// <p>Indicates the certificate that needs to be associated with the instance.</p>
5975    pub ca_certificate_identifier: Option<String>,
5976    /// <p>The configuration setting for the log types to be enabled for export to CloudWatch Logs for a specific DB instance or DB cluster.</p>
5977    pub cloudwatch_logs_export_configuration: Option<CloudwatchLogsExportConfiguration>,
5978    /// <p>True to copy all tags from the DB instance to snapshots of the DB instance, and otherwise false. The default is false.</p>
5979    pub copy_tags_to_snapshot: Option<bool>,
5980    /// <p>The new compute and memory capacity of the DB instance, for example, <code>db.m4.large</code>. Not all DB instance classes are available in all AWS Regions.</p> <p>If you modify the DB instance class, an outage occurs during the change. The change is applied during the next maintenance window, unless <code>ApplyImmediately</code> is specified as <code>true</code> for this request.</p> <p>Default: Uses existing setting</p>
5981    pub db_instance_class: Option<String>,
5982    /// <p><p>The DB instance identifier. This value is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must match the identifier of an existing DBInstance.</p> </li> </ul></p>
5983    pub db_instance_identifier: String,
5984    /// <p>The name of the DB parameter group to apply to the DB instance. Changing this setting doesn't result in an outage. The parameter group name itself is changed immediately, but the actual parameter changes are not applied until you reboot the instance without failover. The db instance will NOT be rebooted automatically and the parameter changes will NOT be applied during the next maintenance window.</p> <p>Default: Uses existing setting</p> <p>Constraints: The DB parameter group must be in the same DB parameter group family as this DB instance.</p>
5985    pub db_parameter_group_name: Option<String>,
5986    /// <p>The port number on which the database accepts connections.</p> <p>The value of the <code>DBPortNumber</code> parameter must not match any of the port values specified for options in the option group for the DB instance.</p> <p>Your database will restart when you change the <code>DBPortNumber</code> value regardless of the value of the <code>ApplyImmediately</code> parameter.</p> <p> Default: <code>8182</code> </p>
5987    pub db_port_number: Option<i64>,
5988    /// <p><p>A list of DB security groups to authorize on this DB instance. Changing this setting doesn&#39;t result in an outage and the change is asynchronously applied as soon as possible.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match existing DBSecurityGroups.</p> </li> </ul></p>
5989    pub db_security_groups: Option<Vec<String>>,
5990    /// <p>The new DB subnet group for the DB instance. You can use this parameter to move your DB instance to a different VPC.</p> <p>Changing the subnet group causes an outage during the change. The change is applied during the next maintenance window, unless you specify <code>true</code> for the <code>ApplyImmediately</code> parameter.</p> <p>Constraints: If supplied, must match the name of an existing DBSubnetGroup.</p> <p>Example: <code>mySubnetGroup</code> </p>
5991    pub db_subnet_group_name: Option<String>,
5992    /// <p>A value that indicates whether the DB instance has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled. See <a href="https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-instances-delete.html">Deleting a DB Instance</a>.</p>
5993    pub deletion_protection: Option<bool>,
5994    /// <p>Not supported.</p>
5995    pub domain: Option<String>,
5996    /// <p>Not supported</p>
5997    pub domain_iam_role_name: Option<String>,
5998    /// <p>True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false.</p> <p>You can enable IAM database authentication for the following database engines</p> <p>Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster. For more information, see <a>ModifyDBCluster</a>.</p> <p>Default: <code>false</code> </p>
5999    pub enable_iam_database_authentication: Option<bool>,
6000    /// <p> <i>(Not supported by Neptune)</i> </p>
6001    pub enable_performance_insights: Option<bool>,
6002    /// <p>The version number of the database engine to upgrade to. Currently, setting this parameter has no effect. To upgrade your database engine to the most recent release, use the <a>ApplyPendingMaintenanceAction</a> API.</p>
6003    pub engine_version: Option<String>,
6004    /// <p>The new Provisioned IOPS (I/O operations per second) value for the instance.</p> <p>Changing this setting doesn't result in an outage and the change is applied during the next maintenance window unless the <code>ApplyImmediately</code> parameter is set to <code>true</code> for this request.</p> <p>Default: Uses existing setting</p>
6005    pub iops: Option<i64>,
6006    /// <p>Not supported.</p>
6007    pub license_model: Option<String>,
6008    /// <p>Not applicable.</p>
6009    pub master_user_password: Option<String>,
6010    /// <p>The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0.</p> <p>If <code>MonitoringRoleArn</code> is specified, then you must also set <code>MonitoringInterval</code> to a value other than 0.</p> <p>Valid Values: <code>0, 1, 5, 10, 15, 30, 60</code> </p>
6011    pub monitoring_interval: Option<i64>,
6012    /// <p>The ARN for the IAM role that permits Neptune to send enhanced monitoring metrics to Amazon CloudWatch Logs. For example, <code>arn:aws:iam:123456789012:role/emaccess</code>.</p> <p>If <code>MonitoringInterval</code> is set to a value other than 0, then you must supply a <code>MonitoringRoleArn</code> value.</p>
6013    pub monitoring_role_arn: Option<String>,
6014    /// <p>Specifies if the DB instance is a Multi-AZ deployment. Changing this parameter doesn't result in an outage and the change is applied during the next maintenance window unless the <code>ApplyImmediately</code> parameter is set to <code>true</code> for this request.</p>
6015    pub multi_az: Option<bool>,
6016    /// <p> The new DB instance identifier for the DB instance when renaming a DB instance. When you change the DB instance identifier, an instance reboot will occur immediately if you set <code>Apply Immediately</code> to true, or will occur during the next maintenance window if <code>Apply Immediately</code> to false. This value is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens.</p> </li> <li> <p>The first character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>mydbinstance</code> </p>
6017    pub new_db_instance_identifier: Option<String>,
6018    /// <p> <i>(Not supported by Neptune)</i> </p>
6019    pub option_group_name: Option<String>,
6020    /// <p> <i>(Not supported by Neptune)</i> </p>
6021    pub performance_insights_kms_key_id: Option<String>,
6022    /// <p><p> The daily time range during which automated backups are created if automated backups are enabled.</p> <p>Not applicable. The daily time range for creating automated backups is managed by the DB cluster. For more information, see <a>ModifyDBCluster</a>.</p> <p>Constraints:</p> <ul> <li> <p>Must be in the format hh24:mi-hh24:mi</p> </li> <li> <p>Must be in Universal Time Coordinated (UTC)</p> </li> <li> <p>Must not conflict with the preferred maintenance window</p> </li> <li> <p>Must be at least 30 minutes</p> </li> </ul></p>
6023    pub preferred_backup_window: Option<String>,
6024    /// <p>The weekly time range (in UTC) during which system maintenance can occur, which might result in an outage. Changing this parameter doesn't result in an outage, except in the following situation, and the change is asynchronously applied as soon as possible. If there are pending actions that cause a reboot, and the maintenance window is changed to include the current time, then changing this parameter will cause a reboot of the DB instance. If moving this window to the current time, there must be at least 30 minutes between the current time and end of the window to ensure pending changes are applied.</p> <p>Default: Uses existing setting</p> <p>Format: ddd:hh24:mi-ddd:hh24:mi</p> <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p> <p>Constraints: Must be at least 30 minutes</p>
6025    pub preferred_maintenance_window: Option<String>,
6026    /// <p>A value that specifies the order in which a Read Replica is promoted to the primary instance after a failure of the existing primary instance.</p> <p>Default: 1</p> <p>Valid Values: 0 - 15</p>
6027    pub promotion_tier: Option<i64>,
6028    /// <p>Not supported.</p>
6029    pub storage_type: Option<String>,
6030    /// <p>The ARN from the key store with which to associate the instance for TDE encryption.</p>
6031    pub tde_credential_arn: Option<String>,
6032    /// <p>The password for the given ARN from the key store in order to access the device.</p>
6033    pub tde_credential_password: Option<String>,
6034    /// <p><p>A list of EC2 VPC security groups to authorize on this DB instance. This change is asynchronously applied as soon as possible.</p> <p>Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster. For more information, see <a>ModifyDBCluster</a>.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match existing VpcSecurityGroupIds.</p> </li> </ul></p>
6035    pub vpc_security_group_ids: Option<Vec<String>>,
6036}
6037
6038/// Serialize `ModifyDBInstanceMessage` contents to a `SignedRequest`.
6039struct ModifyDBInstanceMessageSerializer;
6040impl ModifyDBInstanceMessageSerializer {
6041    fn serialize(params: &mut Params, name: &str, obj: &ModifyDBInstanceMessage) {
6042        let mut prefix = name.to_string();
6043        if prefix != "" {
6044            prefix.push_str(".");
6045        }
6046
6047        if let Some(ref field_value) = obj.allocated_storage {
6048            params.put(&format!("{}{}", prefix, "AllocatedStorage"), &field_value);
6049        }
6050        if let Some(ref field_value) = obj.allow_major_version_upgrade {
6051            params.put(
6052                &format!("{}{}", prefix, "AllowMajorVersionUpgrade"),
6053                &field_value,
6054            );
6055        }
6056        if let Some(ref field_value) = obj.apply_immediately {
6057            params.put(&format!("{}{}", prefix, "ApplyImmediately"), &field_value);
6058        }
6059        if let Some(ref field_value) = obj.auto_minor_version_upgrade {
6060            params.put(
6061                &format!("{}{}", prefix, "AutoMinorVersionUpgrade"),
6062                &field_value,
6063            );
6064        }
6065        if let Some(ref field_value) = obj.backup_retention_period {
6066            params.put(
6067                &format!("{}{}", prefix, "BackupRetentionPeriod"),
6068                &field_value,
6069            );
6070        }
6071        if let Some(ref field_value) = obj.ca_certificate_identifier {
6072            params.put(
6073                &format!("{}{}", prefix, "CACertificateIdentifier"),
6074                &field_value,
6075            );
6076        }
6077        if let Some(ref field_value) = obj.cloudwatch_logs_export_configuration {
6078            CloudwatchLogsExportConfigurationSerializer::serialize(
6079                params,
6080                &format!("{}{}", prefix, "CloudwatchLogsExportConfiguration"),
6081                field_value,
6082            );
6083        }
6084        if let Some(ref field_value) = obj.copy_tags_to_snapshot {
6085            params.put(&format!("{}{}", prefix, "CopyTagsToSnapshot"), &field_value);
6086        }
6087        if let Some(ref field_value) = obj.db_instance_class {
6088            params.put(&format!("{}{}", prefix, "DBInstanceClass"), &field_value);
6089        }
6090        params.put(
6091            &format!("{}{}", prefix, "DBInstanceIdentifier"),
6092            &obj.db_instance_identifier,
6093        );
6094        if let Some(ref field_value) = obj.db_parameter_group_name {
6095            params.put(
6096                &format!("{}{}", prefix, "DBParameterGroupName"),
6097                &field_value,
6098            );
6099        }
6100        if let Some(ref field_value) = obj.db_port_number {
6101            params.put(&format!("{}{}", prefix, "DBPortNumber"), &field_value);
6102        }
6103        if let Some(ref field_value) = obj.db_security_groups {
6104            DBSecurityGroupNameListSerializer::serialize(
6105                params,
6106                &format!("{}{}", prefix, "DBSecurityGroupName"),
6107                field_value,
6108            );
6109        }
6110        if let Some(ref field_value) = obj.db_subnet_group_name {
6111            params.put(&format!("{}{}", prefix, "DBSubnetGroupName"), &field_value);
6112        }
6113        if let Some(ref field_value) = obj.deletion_protection {
6114            params.put(&format!("{}{}", prefix, "DeletionProtection"), &field_value);
6115        }
6116        if let Some(ref field_value) = obj.domain {
6117            params.put(&format!("{}{}", prefix, "Domain"), &field_value);
6118        }
6119        if let Some(ref field_value) = obj.domain_iam_role_name {
6120            params.put(&format!("{}{}", prefix, "DomainIAMRoleName"), &field_value);
6121        }
6122        if let Some(ref field_value) = obj.enable_iam_database_authentication {
6123            params.put(
6124                &format!("{}{}", prefix, "EnableIAMDatabaseAuthentication"),
6125                &field_value,
6126            );
6127        }
6128        if let Some(ref field_value) = obj.enable_performance_insights {
6129            params.put(
6130                &format!("{}{}", prefix, "EnablePerformanceInsights"),
6131                &field_value,
6132            );
6133        }
6134        if let Some(ref field_value) = obj.engine_version {
6135            params.put(&format!("{}{}", prefix, "EngineVersion"), &field_value);
6136        }
6137        if let Some(ref field_value) = obj.iops {
6138            params.put(&format!("{}{}", prefix, "Iops"), &field_value);
6139        }
6140        if let Some(ref field_value) = obj.license_model {
6141            params.put(&format!("{}{}", prefix, "LicenseModel"), &field_value);
6142        }
6143        if let Some(ref field_value) = obj.master_user_password {
6144            params.put(&format!("{}{}", prefix, "MasterUserPassword"), &field_value);
6145        }
6146        if let Some(ref field_value) = obj.monitoring_interval {
6147            params.put(&format!("{}{}", prefix, "MonitoringInterval"), &field_value);
6148        }
6149        if let Some(ref field_value) = obj.monitoring_role_arn {
6150            params.put(&format!("{}{}", prefix, "MonitoringRoleArn"), &field_value);
6151        }
6152        if let Some(ref field_value) = obj.multi_az {
6153            params.put(&format!("{}{}", prefix, "MultiAZ"), &field_value);
6154        }
6155        if let Some(ref field_value) = obj.new_db_instance_identifier {
6156            params.put(
6157                &format!("{}{}", prefix, "NewDBInstanceIdentifier"),
6158                &field_value,
6159            );
6160        }
6161        if let Some(ref field_value) = obj.option_group_name {
6162            params.put(&format!("{}{}", prefix, "OptionGroupName"), &field_value);
6163        }
6164        if let Some(ref field_value) = obj.performance_insights_kms_key_id {
6165            params.put(
6166                &format!("{}{}", prefix, "PerformanceInsightsKMSKeyId"),
6167                &field_value,
6168            );
6169        }
6170        if let Some(ref field_value) = obj.preferred_backup_window {
6171            params.put(
6172                &format!("{}{}", prefix, "PreferredBackupWindow"),
6173                &field_value,
6174            );
6175        }
6176        if let Some(ref field_value) = obj.preferred_maintenance_window {
6177            params.put(
6178                &format!("{}{}", prefix, "PreferredMaintenanceWindow"),
6179                &field_value,
6180            );
6181        }
6182        if let Some(ref field_value) = obj.promotion_tier {
6183            params.put(&format!("{}{}", prefix, "PromotionTier"), &field_value);
6184        }
6185
6186        if let Some(ref field_value) = obj.storage_type {
6187            params.put(&format!("{}{}", prefix, "StorageType"), &field_value);
6188        }
6189        if let Some(ref field_value) = obj.tde_credential_arn {
6190            params.put(&format!("{}{}", prefix, "TdeCredentialArn"), &field_value);
6191        }
6192        if let Some(ref field_value) = obj.tde_credential_password {
6193            params.put(
6194                &format!("{}{}", prefix, "TdeCredentialPassword"),
6195                &field_value,
6196            );
6197        }
6198        if let Some(ref field_value) = obj.vpc_security_group_ids {
6199            VpcSecurityGroupIdListSerializer::serialize(
6200                params,
6201                &format!("{}{}", prefix, "VpcSecurityGroupId"),
6202                field_value,
6203            );
6204        }
6205    }
6206}
6207
6208#[derive(Clone, Debug, Default, PartialEq)]
6209#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6210pub struct ModifyDBInstanceResult {
6211    pub db_instance: Option<DBInstance>,
6212}
6213
6214#[allow(dead_code)]
6215struct ModifyDBInstanceResultDeserializer;
6216impl ModifyDBInstanceResultDeserializer {
6217    #[allow(dead_code, unused_variables)]
6218    fn deserialize<T: Peek + Next>(
6219        tag_name: &str,
6220        stack: &mut T,
6221    ) -> Result<ModifyDBInstanceResult, XmlParseError> {
6222        deserialize_elements::<_, ModifyDBInstanceResult, _>(tag_name, stack, |name, stack, obj| {
6223            match name {
6224                "DBInstance" => {
6225                    obj.db_instance =
6226                        Some(DBInstanceDeserializer::deserialize("DBInstance", stack)?);
6227                }
6228                _ => skip_tree(stack),
6229            }
6230            Ok(())
6231        })
6232    }
6233}
6234#[derive(Clone, Debug, Default, PartialEq)]
6235#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6236pub struct ModifyDBParameterGroupMessage {
6237    /// <p><p>The name of the DB parameter group.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the name of an existing DBParameterGroup.</p> </li> </ul></p>
6238    pub db_parameter_group_name: String,
6239    /// <p><p>An array of parameter names, values, and the apply method for the parameter update. At least one parameter name, value, and apply method must be supplied; subsequent arguments are optional. A maximum of 20 parameters can be modified in a single request.</p> <p>Valid Values (for the application method): <code>immediate | pending-reboot</code> </p> <note> <p>You can use the immediate value with dynamic parameters only. You can use the pending-reboot value for both dynamic and static parameters, and changes are applied when you reboot the DB instance without failover.</p> </note></p>
6240    pub parameters: Vec<Parameter>,
6241}
6242
6243/// Serialize `ModifyDBParameterGroupMessage` contents to a `SignedRequest`.
6244struct ModifyDBParameterGroupMessageSerializer;
6245impl ModifyDBParameterGroupMessageSerializer {
6246    fn serialize(params: &mut Params, name: &str, obj: &ModifyDBParameterGroupMessage) {
6247        let mut prefix = name.to_string();
6248        if prefix != "" {
6249            prefix.push_str(".");
6250        }
6251
6252        params.put(
6253            &format!("{}{}", prefix, "DBParameterGroupName"),
6254            &obj.db_parameter_group_name,
6255        );
6256        ParametersListSerializer::serialize(
6257            params,
6258            &format!("{}{}", prefix, "Parameter"),
6259            &obj.parameters,
6260        );
6261    }
6262}
6263
6264#[derive(Clone, Debug, Default, PartialEq)]
6265#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6266pub struct ModifyDBSubnetGroupMessage {
6267    /// <p>The description for the DB subnet group.</p>
6268    pub db_subnet_group_description: Option<String>,
6269    /// <p>The name for the DB subnet group. This value is stored as a lowercase string. You can't modify the default subnet group.</p> <p>Constraints: Must match the name of an existing DBSubnetGroup. Must not be default.</p> <p>Example: <code>mySubnetgroup</code> </p>
6270    pub db_subnet_group_name: String,
6271    /// <p>The EC2 subnet IDs for the DB subnet group.</p>
6272    pub subnet_ids: Vec<String>,
6273}
6274
6275/// Serialize `ModifyDBSubnetGroupMessage` contents to a `SignedRequest`.
6276struct ModifyDBSubnetGroupMessageSerializer;
6277impl ModifyDBSubnetGroupMessageSerializer {
6278    fn serialize(params: &mut Params, name: &str, obj: &ModifyDBSubnetGroupMessage) {
6279        let mut prefix = name.to_string();
6280        if prefix != "" {
6281            prefix.push_str(".");
6282        }
6283
6284        if let Some(ref field_value) = obj.db_subnet_group_description {
6285            params.put(
6286                &format!("{}{}", prefix, "DBSubnetGroupDescription"),
6287                &field_value,
6288            );
6289        }
6290        params.put(
6291            &format!("{}{}", prefix, "DBSubnetGroupName"),
6292            &obj.db_subnet_group_name,
6293        );
6294        SubnetIdentifierListSerializer::serialize(
6295            params,
6296            &format!("{}{}", prefix, "SubnetIdentifier"),
6297            &obj.subnet_ids,
6298        );
6299    }
6300}
6301
6302#[derive(Clone, Debug, Default, PartialEq)]
6303#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6304pub struct ModifyDBSubnetGroupResult {
6305    pub db_subnet_group: Option<DBSubnetGroup>,
6306}
6307
6308#[allow(dead_code)]
6309struct ModifyDBSubnetGroupResultDeserializer;
6310impl ModifyDBSubnetGroupResultDeserializer {
6311    #[allow(dead_code, unused_variables)]
6312    fn deserialize<T: Peek + Next>(
6313        tag_name: &str,
6314        stack: &mut T,
6315    ) -> Result<ModifyDBSubnetGroupResult, XmlParseError> {
6316        deserialize_elements::<_, ModifyDBSubnetGroupResult, _>(
6317            tag_name,
6318            stack,
6319            |name, stack, obj| {
6320                match name {
6321                    "DBSubnetGroup" => {
6322                        obj.db_subnet_group = Some(DBSubnetGroupDeserializer::deserialize(
6323                            "DBSubnetGroup",
6324                            stack,
6325                        )?);
6326                    }
6327                    _ => skip_tree(stack),
6328                }
6329                Ok(())
6330            },
6331        )
6332    }
6333}
6334#[derive(Clone, Debug, Default, PartialEq)]
6335#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6336pub struct ModifyEventSubscriptionMessage {
6337    /// <p> A Boolean value; set to <b>true</b> to activate the subscription.</p>
6338    pub enabled: Option<bool>,
6339    /// <p> A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType by using the <b>DescribeEventCategories</b> action.</p>
6340    pub event_categories: Option<Vec<String>>,
6341    /// <p>The Amazon Resource Name (ARN) of the SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it.</p>
6342    pub sns_topic_arn: Option<String>,
6343    /// <p>The type of source that is generating the events. For example, if you want to be notified of events generated by a DB instance, you would set this parameter to db-instance. if this value is not specified, all events are returned.</p> <p>Valid values: db-instance | db-parameter-group | db-security-group | db-snapshot</p>
6344    pub source_type: Option<String>,
6345    /// <p>The name of the event notification subscription.</p>
6346    pub subscription_name: String,
6347}
6348
6349/// Serialize `ModifyEventSubscriptionMessage` contents to a `SignedRequest`.
6350struct ModifyEventSubscriptionMessageSerializer;
6351impl ModifyEventSubscriptionMessageSerializer {
6352    fn serialize(params: &mut Params, name: &str, obj: &ModifyEventSubscriptionMessage) {
6353        let mut prefix = name.to_string();
6354        if prefix != "" {
6355            prefix.push_str(".");
6356        }
6357
6358        if let Some(ref field_value) = obj.enabled {
6359            params.put(&format!("{}{}", prefix, "Enabled"), &field_value);
6360        }
6361        if let Some(ref field_value) = obj.event_categories {
6362            EventCategoriesListSerializer::serialize(
6363                params,
6364                &format!("{}{}", prefix, "EventCategory"),
6365                field_value,
6366            );
6367        }
6368        if let Some(ref field_value) = obj.sns_topic_arn {
6369            params.put(&format!("{}{}", prefix, "SnsTopicArn"), &field_value);
6370        }
6371        if let Some(ref field_value) = obj.source_type {
6372            params.put(&format!("{}{}", prefix, "SourceType"), &field_value);
6373        }
6374        params.put(
6375            &format!("{}{}", prefix, "SubscriptionName"),
6376            &obj.subscription_name,
6377        );
6378    }
6379}
6380
6381#[derive(Clone, Debug, Default, PartialEq)]
6382#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6383pub struct ModifyEventSubscriptionResult {
6384    pub event_subscription: Option<EventSubscription>,
6385}
6386
6387#[allow(dead_code)]
6388struct ModifyEventSubscriptionResultDeserializer;
6389impl ModifyEventSubscriptionResultDeserializer {
6390    #[allow(dead_code, unused_variables)]
6391    fn deserialize<T: Peek + Next>(
6392        tag_name: &str,
6393        stack: &mut T,
6394    ) -> Result<ModifyEventSubscriptionResult, XmlParseError> {
6395        deserialize_elements::<_, ModifyEventSubscriptionResult, _>(
6396            tag_name,
6397            stack,
6398            |name, stack, obj| {
6399                match name {
6400                    "EventSubscription" => {
6401                        obj.event_subscription = Some(EventSubscriptionDeserializer::deserialize(
6402                            "EventSubscription",
6403                            stack,
6404                        )?);
6405                    }
6406                    _ => skip_tree(stack),
6407                }
6408                Ok(())
6409            },
6410        )
6411    }
6412}
6413/// <p>Provides information on the option groups the DB instance is a member of.</p>
6414#[derive(Clone, Debug, Default, PartialEq)]
6415#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6416pub struct OptionGroupMembership {
6417    /// <p>The name of the option group that the instance belongs to.</p>
6418    pub option_group_name: Option<String>,
6419    /// <p>The status of the DB instance's option group membership. Valid values are: <code>in-sync</code>, <code>pending-apply</code>, <code>pending-removal</code>, <code>pending-maintenance-apply</code>, <code>pending-maintenance-removal</code>, <code>applying</code>, <code>removing</code>, and <code>failed</code>.</p>
6420    pub status: Option<String>,
6421}
6422
6423#[allow(dead_code)]
6424struct OptionGroupMembershipDeserializer;
6425impl OptionGroupMembershipDeserializer {
6426    #[allow(dead_code, unused_variables)]
6427    fn deserialize<T: Peek + Next>(
6428        tag_name: &str,
6429        stack: &mut T,
6430    ) -> Result<OptionGroupMembership, XmlParseError> {
6431        deserialize_elements::<_, OptionGroupMembership, _>(tag_name, stack, |name, stack, obj| {
6432            match name {
6433                "OptionGroupName" => {
6434                    obj.option_group_name =
6435                        Some(StringDeserializer::deserialize("OptionGroupName", stack)?);
6436                }
6437                "Status" => {
6438                    obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
6439                }
6440                _ => skip_tree(stack),
6441            }
6442            Ok(())
6443        })
6444    }
6445}
6446#[allow(dead_code)]
6447struct OptionGroupMembershipListDeserializer;
6448impl OptionGroupMembershipListDeserializer {
6449    #[allow(dead_code, unused_variables)]
6450    fn deserialize<T: Peek + Next>(
6451        tag_name: &str,
6452        stack: &mut T,
6453    ) -> Result<Vec<OptionGroupMembership>, XmlParseError> {
6454        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6455            if name == "OptionGroupMembership" {
6456                obj.push(OptionGroupMembershipDeserializer::deserialize(
6457                    "OptionGroupMembership",
6458                    stack,
6459                )?);
6460            } else {
6461                skip_tree(stack);
6462            }
6463            Ok(())
6464        })
6465    }
6466}
6467/// <p>Contains a list of available options for a DB instance.</p> <p> This data type is used as a response element in the <a>DescribeOrderableDBInstanceOptions</a> action.</p>
6468#[derive(Clone, Debug, Default, PartialEq)]
6469#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6470pub struct OrderableDBInstanceOption {
6471    /// <p>A list of Availability Zones for a DB instance.</p>
6472    pub availability_zones: Option<Vec<AvailabilityZone>>,
6473    /// <p>The DB instance class for a DB instance.</p>
6474    pub db_instance_class: Option<String>,
6475    /// <p>The engine type of a DB instance.</p>
6476    pub engine: Option<String>,
6477    /// <p>The engine version of a DB instance.</p>
6478    pub engine_version: Option<String>,
6479    /// <p>The license model for a DB instance.</p>
6480    pub license_model: Option<String>,
6481    /// <p>Maximum total provisioned IOPS for a DB instance.</p>
6482    pub max_iops_per_db_instance: Option<i64>,
6483    /// <p>Maximum provisioned IOPS per GiB for a DB instance.</p>
6484    pub max_iops_per_gib: Option<f64>,
6485    /// <p>Maximum storage size for a DB instance.</p>
6486    pub max_storage_size: Option<i64>,
6487    /// <p>Minimum total provisioned IOPS for a DB instance.</p>
6488    pub min_iops_per_db_instance: Option<i64>,
6489    /// <p>Minimum provisioned IOPS per GiB for a DB instance.</p>
6490    pub min_iops_per_gib: Option<f64>,
6491    /// <p>Minimum storage size for a DB instance.</p>
6492    pub min_storage_size: Option<i64>,
6493    /// <p>Indicates whether a DB instance is Multi-AZ capable.</p>
6494    pub multi_az_capable: Option<bool>,
6495    /// <p>Indicates whether a DB instance can have a Read Replica.</p>
6496    pub read_replica_capable: Option<bool>,
6497    /// <p>Indicates the storage type for a DB instance.</p>
6498    pub storage_type: Option<String>,
6499    /// <p>Indicates whether a DB instance supports Enhanced Monitoring at intervals from 1 to 60 seconds.</p>
6500    pub supports_enhanced_monitoring: Option<bool>,
6501    /// <p>Indicates whether a DB instance supports IAM database authentication.</p>
6502    pub supports_iam_database_authentication: Option<bool>,
6503    /// <p>Indicates whether a DB instance supports provisioned IOPS.</p>
6504    pub supports_iops: Option<bool>,
6505    /// <p> <i>(Not supported by Neptune)</i> </p>
6506    pub supports_performance_insights: Option<bool>,
6507    /// <p>Indicates whether a DB instance supports encrypted storage.</p>
6508    pub supports_storage_encryption: Option<bool>,
6509    /// <p>Indicates whether a DB instance is in a VPC.</p>
6510    pub vpc: Option<bool>,
6511}
6512
6513#[allow(dead_code)]
6514struct OrderableDBInstanceOptionDeserializer;
6515impl OrderableDBInstanceOptionDeserializer {
6516    #[allow(dead_code, unused_variables)]
6517    fn deserialize<T: Peek + Next>(
6518        tag_name: &str,
6519        stack: &mut T,
6520    ) -> Result<OrderableDBInstanceOption, XmlParseError> {
6521        deserialize_elements::<_, OrderableDBInstanceOption, _>(
6522            tag_name,
6523            stack,
6524            |name, stack, obj| {
6525                match name {
6526                    "AvailabilityZones" => {
6527                        obj.availability_zones.get_or_insert(vec![]).extend(
6528                            AvailabilityZoneListDeserializer::deserialize(
6529                                "AvailabilityZones",
6530                                stack,
6531                            )?,
6532                        );
6533                    }
6534                    "DBInstanceClass" => {
6535                        obj.db_instance_class =
6536                            Some(StringDeserializer::deserialize("DBInstanceClass", stack)?);
6537                    }
6538                    "Engine" => {
6539                        obj.engine = Some(StringDeserializer::deserialize("Engine", stack)?);
6540                    }
6541                    "EngineVersion" => {
6542                        obj.engine_version =
6543                            Some(StringDeserializer::deserialize("EngineVersion", stack)?);
6544                    }
6545                    "LicenseModel" => {
6546                        obj.license_model =
6547                            Some(StringDeserializer::deserialize("LicenseModel", stack)?);
6548                    }
6549                    "MaxIopsPerDbInstance" => {
6550                        obj.max_iops_per_db_instance =
6551                            Some(IntegerOptionalDeserializer::deserialize(
6552                                "MaxIopsPerDbInstance",
6553                                stack,
6554                            )?);
6555                    }
6556                    "MaxIopsPerGib" => {
6557                        obj.max_iops_per_gib = Some(DoubleOptionalDeserializer::deserialize(
6558                            "MaxIopsPerGib",
6559                            stack,
6560                        )?);
6561                    }
6562                    "MaxStorageSize" => {
6563                        obj.max_storage_size = Some(IntegerOptionalDeserializer::deserialize(
6564                            "MaxStorageSize",
6565                            stack,
6566                        )?);
6567                    }
6568                    "MinIopsPerDbInstance" => {
6569                        obj.min_iops_per_db_instance =
6570                            Some(IntegerOptionalDeserializer::deserialize(
6571                                "MinIopsPerDbInstance",
6572                                stack,
6573                            )?);
6574                    }
6575                    "MinIopsPerGib" => {
6576                        obj.min_iops_per_gib = Some(DoubleOptionalDeserializer::deserialize(
6577                            "MinIopsPerGib",
6578                            stack,
6579                        )?);
6580                    }
6581                    "MinStorageSize" => {
6582                        obj.min_storage_size = Some(IntegerOptionalDeserializer::deserialize(
6583                            "MinStorageSize",
6584                            stack,
6585                        )?);
6586                    }
6587                    "MultiAZCapable" => {
6588                        obj.multi_az_capable =
6589                            Some(BooleanDeserializer::deserialize("MultiAZCapable", stack)?);
6590                    }
6591                    "ReadReplicaCapable" => {
6592                        obj.read_replica_capable = Some(BooleanDeserializer::deserialize(
6593                            "ReadReplicaCapable",
6594                            stack,
6595                        )?);
6596                    }
6597                    "StorageType" => {
6598                        obj.storage_type =
6599                            Some(StringDeserializer::deserialize("StorageType", stack)?);
6600                    }
6601                    "SupportsEnhancedMonitoring" => {
6602                        obj.supports_enhanced_monitoring = Some(BooleanDeserializer::deserialize(
6603                            "SupportsEnhancedMonitoring",
6604                            stack,
6605                        )?);
6606                    }
6607                    "SupportsIAMDatabaseAuthentication" => {
6608                        obj.supports_iam_database_authentication =
6609                            Some(BooleanDeserializer::deserialize(
6610                                "SupportsIAMDatabaseAuthentication",
6611                                stack,
6612                            )?);
6613                    }
6614                    "SupportsIops" => {
6615                        obj.supports_iops =
6616                            Some(BooleanDeserializer::deserialize("SupportsIops", stack)?);
6617                    }
6618                    "SupportsPerformanceInsights" => {
6619                        obj.supports_performance_insights = Some(BooleanDeserializer::deserialize(
6620                            "SupportsPerformanceInsights",
6621                            stack,
6622                        )?);
6623                    }
6624                    "SupportsStorageEncryption" => {
6625                        obj.supports_storage_encryption = Some(BooleanDeserializer::deserialize(
6626                            "SupportsStorageEncryption",
6627                            stack,
6628                        )?);
6629                    }
6630                    "Vpc" => {
6631                        obj.vpc = Some(BooleanDeserializer::deserialize("Vpc", stack)?);
6632                    }
6633                    _ => skip_tree(stack),
6634                }
6635                Ok(())
6636            },
6637        )
6638    }
6639}
6640#[allow(dead_code)]
6641struct OrderableDBInstanceOptionsListDeserializer;
6642impl OrderableDBInstanceOptionsListDeserializer {
6643    #[allow(dead_code, unused_variables)]
6644    fn deserialize<T: Peek + Next>(
6645        tag_name: &str,
6646        stack: &mut T,
6647    ) -> Result<Vec<OrderableDBInstanceOption>, XmlParseError> {
6648        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6649            if name == "OrderableDBInstanceOption" {
6650                obj.push(OrderableDBInstanceOptionDeserializer::deserialize(
6651                    "OrderableDBInstanceOption",
6652                    stack,
6653                )?);
6654            } else {
6655                skip_tree(stack);
6656            }
6657            Ok(())
6658        })
6659    }
6660}
6661#[derive(Clone, Debug, Default, PartialEq)]
6662#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6663pub struct OrderableDBInstanceOptionsMessage {
6664    /// <p> An optional pagination token provided by a previous OrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code> .</p>
6665    pub marker: Option<String>,
6666    /// <p>An <a>OrderableDBInstanceOption</a> structure containing information about orderable options for the DB instance.</p>
6667    pub orderable_db_instance_options: Option<Vec<OrderableDBInstanceOption>>,
6668}
6669
6670#[allow(dead_code)]
6671struct OrderableDBInstanceOptionsMessageDeserializer;
6672impl OrderableDBInstanceOptionsMessageDeserializer {
6673    #[allow(dead_code, unused_variables)]
6674    fn deserialize<T: Peek + Next>(
6675        tag_name: &str,
6676        stack: &mut T,
6677    ) -> Result<OrderableDBInstanceOptionsMessage, XmlParseError> {
6678        deserialize_elements::<_, OrderableDBInstanceOptionsMessage, _>(
6679            tag_name,
6680            stack,
6681            |name, stack, obj| {
6682                match name {
6683                    "Marker" => {
6684                        obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
6685                    }
6686                    "OrderableDBInstanceOptions" => {
6687                        obj.orderable_db_instance_options
6688                            .get_or_insert(vec![])
6689                            .extend(OrderableDBInstanceOptionsListDeserializer::deserialize(
6690                                "OrderableDBInstanceOptions",
6691                                stack,
6692                            )?);
6693                    }
6694                    _ => skip_tree(stack),
6695                }
6696                Ok(())
6697            },
6698        )
6699    }
6700}
6701/// <p>Specifies a parameter.</p>
6702#[derive(Clone, Debug, Default, PartialEq)]
6703#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6704#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6705pub struct Parameter {
6706    /// <p>Specifies the valid range of values for the parameter.</p>
6707    pub allowed_values: Option<String>,
6708    /// <p>Indicates when to apply parameter updates.</p>
6709    pub apply_method: Option<String>,
6710    /// <p>Specifies the engine specific parameters type.</p>
6711    pub apply_type: Option<String>,
6712    /// <p>Specifies the valid data type for the parameter.</p>
6713    pub data_type: Option<String>,
6714    /// <p>Provides a description of the parameter.</p>
6715    pub description: Option<String>,
6716    /// <p> Indicates whether (<code>true</code>) or not (<code>false</code>) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.</p>
6717    pub is_modifiable: Option<bool>,
6718    /// <p>The earliest engine version to which the parameter can apply.</p>
6719    pub minimum_engine_version: Option<String>,
6720    /// <p>Specifies the name of the parameter.</p>
6721    pub parameter_name: Option<String>,
6722    /// <p>Specifies the value of the parameter.</p>
6723    pub parameter_value: Option<String>,
6724    /// <p>Indicates the source of the parameter value.</p>
6725    pub source: Option<String>,
6726}
6727
6728#[allow(dead_code)]
6729struct ParameterDeserializer;
6730impl ParameterDeserializer {
6731    #[allow(dead_code, unused_variables)]
6732    fn deserialize<T: Peek + Next>(
6733        tag_name: &str,
6734        stack: &mut T,
6735    ) -> Result<Parameter, XmlParseError> {
6736        deserialize_elements::<_, Parameter, _>(tag_name, stack, |name, stack, obj| {
6737            match name {
6738                "AllowedValues" => {
6739                    obj.allowed_values =
6740                        Some(StringDeserializer::deserialize("AllowedValues", stack)?);
6741                }
6742                "ApplyMethod" => {
6743                    obj.apply_method =
6744                        Some(ApplyMethodDeserializer::deserialize("ApplyMethod", stack)?);
6745                }
6746                "ApplyType" => {
6747                    obj.apply_type = Some(StringDeserializer::deserialize("ApplyType", stack)?);
6748                }
6749                "DataType" => {
6750                    obj.data_type = Some(StringDeserializer::deserialize("DataType", stack)?);
6751                }
6752                "Description" => {
6753                    obj.description = Some(StringDeserializer::deserialize("Description", stack)?);
6754                }
6755                "IsModifiable" => {
6756                    obj.is_modifiable =
6757                        Some(BooleanDeserializer::deserialize("IsModifiable", stack)?);
6758                }
6759                "MinimumEngineVersion" => {
6760                    obj.minimum_engine_version = Some(StringDeserializer::deserialize(
6761                        "MinimumEngineVersion",
6762                        stack,
6763                    )?);
6764                }
6765                "ParameterName" => {
6766                    obj.parameter_name =
6767                        Some(StringDeserializer::deserialize("ParameterName", stack)?);
6768                }
6769                "ParameterValue" => {
6770                    obj.parameter_value =
6771                        Some(StringDeserializer::deserialize("ParameterValue", stack)?);
6772                }
6773                "Source" => {
6774                    obj.source = Some(StringDeserializer::deserialize("Source", stack)?);
6775                }
6776                _ => skip_tree(stack),
6777            }
6778            Ok(())
6779        })
6780    }
6781}
6782
6783/// Serialize `Parameter` contents to a `SignedRequest`.
6784struct ParameterSerializer;
6785impl ParameterSerializer {
6786    fn serialize(params: &mut Params, name: &str, obj: &Parameter) {
6787        let mut prefix = name.to_string();
6788        if prefix != "" {
6789            prefix.push_str(".");
6790        }
6791
6792        if let Some(ref field_value) = obj.allowed_values {
6793            params.put(&format!("{}{}", prefix, "AllowedValues"), &field_value);
6794        }
6795        if let Some(ref field_value) = obj.apply_method {
6796            params.put(&format!("{}{}", prefix, "ApplyMethod"), &field_value);
6797        }
6798        if let Some(ref field_value) = obj.apply_type {
6799            params.put(&format!("{}{}", prefix, "ApplyType"), &field_value);
6800        }
6801        if let Some(ref field_value) = obj.data_type {
6802            params.put(&format!("{}{}", prefix, "DataType"), &field_value);
6803        }
6804        if let Some(ref field_value) = obj.description {
6805            params.put(&format!("{}{}", prefix, "Description"), &field_value);
6806        }
6807        if let Some(ref field_value) = obj.is_modifiable {
6808            params.put(&format!("{}{}", prefix, "IsModifiable"), &field_value);
6809        }
6810        if let Some(ref field_value) = obj.minimum_engine_version {
6811            params.put(
6812                &format!("{}{}", prefix, "MinimumEngineVersion"),
6813                &field_value,
6814            );
6815        }
6816        if let Some(ref field_value) = obj.parameter_name {
6817            params.put(&format!("{}{}", prefix, "ParameterName"), &field_value);
6818        }
6819        if let Some(ref field_value) = obj.parameter_value {
6820            params.put(&format!("{}{}", prefix, "ParameterValue"), &field_value);
6821        }
6822        if let Some(ref field_value) = obj.source {
6823            params.put(&format!("{}{}", prefix, "Source"), &field_value);
6824        }
6825    }
6826}
6827
6828#[allow(dead_code)]
6829struct ParametersListDeserializer;
6830impl ParametersListDeserializer {
6831    #[allow(dead_code, unused_variables)]
6832    fn deserialize<T: Peek + Next>(
6833        tag_name: &str,
6834        stack: &mut T,
6835    ) -> Result<Vec<Parameter>, XmlParseError> {
6836        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6837            if name == "Parameter" {
6838                obj.push(ParameterDeserializer::deserialize("Parameter", stack)?);
6839            } else {
6840                skip_tree(stack);
6841            }
6842            Ok(())
6843        })
6844    }
6845}
6846
6847/// Serialize `ParametersList` contents to a `SignedRequest`.
6848struct ParametersListSerializer;
6849impl ParametersListSerializer {
6850    fn serialize(params: &mut Params, name: &str, obj: &Vec<Parameter>) {
6851        for (index, obj) in obj.iter().enumerate() {
6852            let key = format!("{}.member.{}", name, index + 1);
6853            ParameterSerializer::serialize(params, &key, obj);
6854        }
6855    }
6856}
6857
6858/// <p>A list of the log types whose configuration is still pending. In other words, these log types are in the process of being activated or deactivated.</p>
6859#[derive(Clone, Debug, Default, PartialEq)]
6860#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6861pub struct PendingCloudwatchLogsExports {
6862    /// <p>Log types that are in the process of being enabled. After they are enabled, these log types are exported to CloudWatch Logs.</p>
6863    pub log_types_to_disable: Option<Vec<String>>,
6864    /// <p>Log types that are in the process of being deactivated. After they are deactivated, these log types aren't exported to CloudWatch Logs.</p>
6865    pub log_types_to_enable: Option<Vec<String>>,
6866}
6867
6868#[allow(dead_code)]
6869struct PendingCloudwatchLogsExportsDeserializer;
6870impl PendingCloudwatchLogsExportsDeserializer {
6871    #[allow(dead_code, unused_variables)]
6872    fn deserialize<T: Peek + Next>(
6873        tag_name: &str,
6874        stack: &mut T,
6875    ) -> Result<PendingCloudwatchLogsExports, XmlParseError> {
6876        deserialize_elements::<_, PendingCloudwatchLogsExports, _>(
6877            tag_name,
6878            stack,
6879            |name, stack, obj| {
6880                match name {
6881                    "LogTypesToDisable" => {
6882                        obj.log_types_to_disable.get_or_insert(vec![]).extend(
6883                            LogTypeListDeserializer::deserialize("LogTypesToDisable", stack)?,
6884                        );
6885                    }
6886                    "LogTypesToEnable" => {
6887                        obj.log_types_to_enable.get_or_insert(vec![]).extend(
6888                            LogTypeListDeserializer::deserialize("LogTypesToEnable", stack)?,
6889                        );
6890                    }
6891                    _ => skip_tree(stack),
6892                }
6893                Ok(())
6894            },
6895        )
6896    }
6897}
6898/// <p>Provides information about a pending maintenance action for a resource.</p>
6899#[derive(Clone, Debug, Default, PartialEq)]
6900#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6901pub struct PendingMaintenanceAction {
6902    /// <p>The type of pending maintenance action that is available for the resource.</p>
6903    pub action: Option<String>,
6904    /// <p>The date of the maintenance window when the action is applied. The maintenance action is applied to the resource during its first maintenance window after this date. If this date is specified, any <code>next-maintenance</code> opt-in requests are ignored.</p>
6905    pub auto_applied_after_date: Option<String>,
6906    /// <p>The effective date when the pending maintenance action is applied to the resource. This date takes into account opt-in requests received from the <a>ApplyPendingMaintenanceAction</a> API, the <code>AutoAppliedAfterDate</code>, and the <code>ForcedApplyDate</code>. This value is blank if an opt-in request has not been received and nothing has been specified as <code>AutoAppliedAfterDate</code> or <code>ForcedApplyDate</code>.</p>
6907    pub current_apply_date: Option<String>,
6908    /// <p>A description providing more detail about the maintenance action.</p>
6909    pub description: Option<String>,
6910    /// <p>The date when the maintenance action is automatically applied. The maintenance action is applied to the resource on this date regardless of the maintenance window for the resource. If this date is specified, any <code>immediate</code> opt-in requests are ignored.</p>
6911    pub forced_apply_date: Option<String>,
6912    /// <p>Indicates the type of opt-in request that has been received for the resource.</p>
6913    pub opt_in_status: Option<String>,
6914}
6915
6916#[allow(dead_code)]
6917struct PendingMaintenanceActionDeserializer;
6918impl PendingMaintenanceActionDeserializer {
6919    #[allow(dead_code, unused_variables)]
6920    fn deserialize<T: Peek + Next>(
6921        tag_name: &str,
6922        stack: &mut T,
6923    ) -> Result<PendingMaintenanceAction, XmlParseError> {
6924        deserialize_elements::<_, PendingMaintenanceAction, _>(
6925            tag_name,
6926            stack,
6927            |name, stack, obj| {
6928                match name {
6929                    "Action" => {
6930                        obj.action = Some(StringDeserializer::deserialize("Action", stack)?);
6931                    }
6932                    "AutoAppliedAfterDate" => {
6933                        obj.auto_applied_after_date = Some(TStampDeserializer::deserialize(
6934                            "AutoAppliedAfterDate",
6935                            stack,
6936                        )?);
6937                    }
6938                    "CurrentApplyDate" => {
6939                        obj.current_apply_date =
6940                            Some(TStampDeserializer::deserialize("CurrentApplyDate", stack)?);
6941                    }
6942                    "Description" => {
6943                        obj.description =
6944                            Some(StringDeserializer::deserialize("Description", stack)?);
6945                    }
6946                    "ForcedApplyDate" => {
6947                        obj.forced_apply_date =
6948                            Some(TStampDeserializer::deserialize("ForcedApplyDate", stack)?);
6949                    }
6950                    "OptInStatus" => {
6951                        obj.opt_in_status =
6952                            Some(StringDeserializer::deserialize("OptInStatus", stack)?);
6953                    }
6954                    _ => skip_tree(stack),
6955                }
6956                Ok(())
6957            },
6958        )
6959    }
6960}
6961#[allow(dead_code)]
6962struct PendingMaintenanceActionDetailsDeserializer;
6963impl PendingMaintenanceActionDetailsDeserializer {
6964    #[allow(dead_code, unused_variables)]
6965    fn deserialize<T: Peek + Next>(
6966        tag_name: &str,
6967        stack: &mut T,
6968    ) -> Result<Vec<PendingMaintenanceAction>, XmlParseError> {
6969        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6970            if name == "PendingMaintenanceAction" {
6971                obj.push(PendingMaintenanceActionDeserializer::deserialize(
6972                    "PendingMaintenanceAction",
6973                    stack,
6974                )?);
6975            } else {
6976                skip_tree(stack);
6977            }
6978            Ok(())
6979        })
6980    }
6981}
6982#[allow(dead_code)]
6983struct PendingMaintenanceActionsDeserializer;
6984impl PendingMaintenanceActionsDeserializer {
6985    #[allow(dead_code, unused_variables)]
6986    fn deserialize<T: Peek + Next>(
6987        tag_name: &str,
6988        stack: &mut T,
6989    ) -> Result<Vec<ResourcePendingMaintenanceActions>, XmlParseError> {
6990        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6991            if name == "ResourcePendingMaintenanceActions" {
6992                obj.push(ResourcePendingMaintenanceActionsDeserializer::deserialize(
6993                    "ResourcePendingMaintenanceActions",
6994                    stack,
6995                )?);
6996            } else {
6997                skip_tree(stack);
6998            }
6999            Ok(())
7000        })
7001    }
7002}
7003#[derive(Clone, Debug, Default, PartialEq)]
7004#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7005pub struct PendingMaintenanceActionsMessage {
7006    /// <p> An optional pagination token provided by a previous <code>DescribePendingMaintenanceActions</code> request. If this parameter is specified, the response includes only records beyond the marker, up to a number of records specified by <code>MaxRecords</code>.</p>
7007    pub marker: Option<String>,
7008    /// <p>A list of the pending maintenance actions for the resource.</p>
7009    pub pending_maintenance_actions: Option<Vec<ResourcePendingMaintenanceActions>>,
7010}
7011
7012#[allow(dead_code)]
7013struct PendingMaintenanceActionsMessageDeserializer;
7014impl PendingMaintenanceActionsMessageDeserializer {
7015    #[allow(dead_code, unused_variables)]
7016    fn deserialize<T: Peek + Next>(
7017        tag_name: &str,
7018        stack: &mut T,
7019    ) -> Result<PendingMaintenanceActionsMessage, XmlParseError> {
7020        deserialize_elements::<_, PendingMaintenanceActionsMessage, _>(
7021            tag_name,
7022            stack,
7023            |name, stack, obj| {
7024                match name {
7025                    "Marker" => {
7026                        obj.marker = Some(StringDeserializer::deserialize("Marker", stack)?);
7027                    }
7028                    "PendingMaintenanceActions" => {
7029                        obj.pending_maintenance_actions
7030                            .get_or_insert(vec![])
7031                            .extend(PendingMaintenanceActionsDeserializer::deserialize(
7032                                "PendingMaintenanceActions",
7033                                stack,
7034                            )?);
7035                    }
7036                    _ => skip_tree(stack),
7037                }
7038                Ok(())
7039            },
7040        )
7041    }
7042}
7043/// <p> This data type is used as a response element in the <a>ModifyDBInstance</a> action.</p>
7044#[derive(Clone, Debug, Default, PartialEq)]
7045#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7046pub struct PendingModifiedValues {
7047    /// <p> Contains the new <code>AllocatedStorage</code> size for the DB instance that will be applied or is currently being applied.</p>
7048    pub allocated_storage: Option<i64>,
7049    /// <p>Specifies the pending number of days for which automated backups are retained.</p>
7050    pub backup_retention_period: Option<i64>,
7051    /// <p>Specifies the identifier of the CA certificate for the DB instance.</p>
7052    pub ca_certificate_identifier: Option<String>,
7053    /// <p> Contains the new <code>DBInstanceClass</code> for the DB instance that will be applied or is currently being applied.</p>
7054    pub db_instance_class: Option<String>,
7055    /// <p> Contains the new <code>DBInstanceIdentifier</code> for the DB instance that will be applied or is currently being applied.</p>
7056    pub db_instance_identifier: Option<String>,
7057    /// <p>The new DB subnet group for the DB instance.</p>
7058    pub db_subnet_group_name: Option<String>,
7059    /// <p>Indicates the database engine version.</p>
7060    pub engine_version: Option<String>,
7061    /// <p>Specifies the new Provisioned IOPS value for the DB instance that will be applied or is currently being applied.</p>
7062    pub iops: Option<i64>,
7063    /// <p>The license model for the DB instance.</p> <p>Valid values: <code>license-included</code> | <code>bring-your-own-license</code> | <code>general-public-license</code> </p>
7064    pub license_model: Option<String>,
7065    /// <p>Contains the pending or currently-in-progress change of the master credentials for the DB instance.</p>
7066    pub master_user_password: Option<String>,
7067    /// <p>Indicates that the Single-AZ DB instance is to change to a Multi-AZ deployment.</p>
7068    pub multi_az: Option<bool>,
7069    /// <p>This <code>PendingCloudwatchLogsExports</code> structure specifies pending changes to which CloudWatch logs are enabled and which are disabled.</p>
7070    pub pending_cloudwatch_logs_exports: Option<PendingCloudwatchLogsExports>,
7071    /// <p>Specifies the pending port for the DB instance.</p>
7072    pub port: Option<i64>,
7073    /// <p>Specifies the storage type to be associated with the DB instance.</p>
7074    pub storage_type: Option<String>,
7075}
7076
7077#[allow(dead_code)]
7078struct PendingModifiedValuesDeserializer;
7079impl PendingModifiedValuesDeserializer {
7080    #[allow(dead_code, unused_variables)]
7081    fn deserialize<T: Peek + Next>(
7082        tag_name: &str,
7083        stack: &mut T,
7084    ) -> Result<PendingModifiedValues, XmlParseError> {
7085        deserialize_elements::<_, PendingModifiedValues, _>(tag_name, stack, |name, stack, obj| {
7086            match name {
7087                "AllocatedStorage" => {
7088                    obj.allocated_storage = Some(IntegerOptionalDeserializer::deserialize(
7089                        "AllocatedStorage",
7090                        stack,
7091                    )?);
7092                }
7093                "BackupRetentionPeriod" => {
7094                    obj.backup_retention_period = Some(IntegerOptionalDeserializer::deserialize(
7095                        "BackupRetentionPeriod",
7096                        stack,
7097                    )?);
7098                }
7099                "CACertificateIdentifier" => {
7100                    obj.ca_certificate_identifier = Some(StringDeserializer::deserialize(
7101                        "CACertificateIdentifier",
7102                        stack,
7103                    )?);
7104                }
7105                "DBInstanceClass" => {
7106                    obj.db_instance_class =
7107                        Some(StringDeserializer::deserialize("DBInstanceClass", stack)?);
7108                }
7109                "DBInstanceIdentifier" => {
7110                    obj.db_instance_identifier = Some(StringDeserializer::deserialize(
7111                        "DBInstanceIdentifier",
7112                        stack,
7113                    )?);
7114                }
7115                "DBSubnetGroupName" => {
7116                    obj.db_subnet_group_name =
7117                        Some(StringDeserializer::deserialize("DBSubnetGroupName", stack)?);
7118                }
7119                "EngineVersion" => {
7120                    obj.engine_version =
7121                        Some(StringDeserializer::deserialize("EngineVersion", stack)?);
7122                }
7123                "Iops" => {
7124                    obj.iops = Some(IntegerOptionalDeserializer::deserialize("Iops", stack)?);
7125                }
7126                "LicenseModel" => {
7127                    obj.license_model =
7128                        Some(StringDeserializer::deserialize("LicenseModel", stack)?);
7129                }
7130                "MasterUserPassword" => {
7131                    obj.master_user_password = Some(StringDeserializer::deserialize(
7132                        "MasterUserPassword",
7133                        stack,
7134                    )?);
7135                }
7136                "MultiAZ" => {
7137                    obj.multi_az =
7138                        Some(BooleanOptionalDeserializer::deserialize("MultiAZ", stack)?);
7139                }
7140                "PendingCloudwatchLogsExports" => {
7141                    obj.pending_cloudwatch_logs_exports =
7142                        Some(PendingCloudwatchLogsExportsDeserializer::deserialize(
7143                            "PendingCloudwatchLogsExports",
7144                            stack,
7145                        )?);
7146                }
7147                "Port" => {
7148                    obj.port = Some(IntegerOptionalDeserializer::deserialize("Port", stack)?);
7149                }
7150                "StorageType" => {
7151                    obj.storage_type = Some(StringDeserializer::deserialize("StorageType", stack)?);
7152                }
7153                _ => skip_tree(stack),
7154            }
7155            Ok(())
7156        })
7157    }
7158}
7159#[derive(Clone, Debug, Default, PartialEq)]
7160#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7161pub struct PromoteReadReplicaDBClusterMessage {
7162    /// <p>Not supported.</p>
7163    pub db_cluster_identifier: String,
7164}
7165
7166/// Serialize `PromoteReadReplicaDBClusterMessage` contents to a `SignedRequest`.
7167struct PromoteReadReplicaDBClusterMessageSerializer;
7168impl PromoteReadReplicaDBClusterMessageSerializer {
7169    fn serialize(params: &mut Params, name: &str, obj: &PromoteReadReplicaDBClusterMessage) {
7170        let mut prefix = name.to_string();
7171        if prefix != "" {
7172            prefix.push_str(".");
7173        }
7174
7175        params.put(
7176            &format!("{}{}", prefix, "DBClusterIdentifier"),
7177            &obj.db_cluster_identifier,
7178        );
7179    }
7180}
7181
7182#[derive(Clone, Debug, Default, PartialEq)]
7183#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7184pub struct PromoteReadReplicaDBClusterResult {
7185    pub db_cluster: Option<DBCluster>,
7186}
7187
7188#[allow(dead_code)]
7189struct PromoteReadReplicaDBClusterResultDeserializer;
7190impl PromoteReadReplicaDBClusterResultDeserializer {
7191    #[allow(dead_code, unused_variables)]
7192    fn deserialize<T: Peek + Next>(
7193        tag_name: &str,
7194        stack: &mut T,
7195    ) -> Result<PromoteReadReplicaDBClusterResult, XmlParseError> {
7196        deserialize_elements::<_, PromoteReadReplicaDBClusterResult, _>(
7197            tag_name,
7198            stack,
7199            |name, stack, obj| {
7200                match name {
7201                    "DBCluster" => {
7202                        obj.db_cluster =
7203                            Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
7204                    }
7205                    _ => skip_tree(stack),
7206                }
7207                Ok(())
7208            },
7209        )
7210    }
7211}
7212/// <p>A range of integer values.</p>
7213#[derive(Clone, Debug, Default, PartialEq)]
7214#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7215pub struct Range {
7216    /// <p>The minimum value in the range.</p>
7217    pub from: Option<i64>,
7218    /// <p>The step value for the range. For example, if you have a range of 5,000 to 10,000, with a step value of 1,000, the valid values start at 5,000 and step up by 1,000. Even though 7,500 is within the range, it isn't a valid value for the range. The valid values are 5,000, 6,000, 7,000, 8,000...</p>
7219    pub step: Option<i64>,
7220    /// <p>The maximum value in the range.</p>
7221    pub to: Option<i64>,
7222}
7223
7224#[allow(dead_code)]
7225struct RangeDeserializer;
7226impl RangeDeserializer {
7227    #[allow(dead_code, unused_variables)]
7228    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Range, XmlParseError> {
7229        deserialize_elements::<_, Range, _>(tag_name, stack, |name, stack, obj| {
7230            match name {
7231                "From" => {
7232                    obj.from = Some(IntegerDeserializer::deserialize("From", stack)?);
7233                }
7234                "Step" => {
7235                    obj.step = Some(IntegerOptionalDeserializer::deserialize("Step", stack)?);
7236                }
7237                "To" => {
7238                    obj.to = Some(IntegerDeserializer::deserialize("To", stack)?);
7239                }
7240                _ => skip_tree(stack),
7241            }
7242            Ok(())
7243        })
7244    }
7245}
7246#[allow(dead_code)]
7247struct RangeListDeserializer;
7248impl RangeListDeserializer {
7249    #[allow(dead_code, unused_variables)]
7250    fn deserialize<T: Peek + Next>(
7251        tag_name: &str,
7252        stack: &mut T,
7253    ) -> Result<Vec<Range>, XmlParseError> {
7254        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
7255            if name == "Range" {
7256                obj.push(RangeDeserializer::deserialize("Range", stack)?);
7257            } else {
7258                skip_tree(stack);
7259            }
7260            Ok(())
7261        })
7262    }
7263}
7264#[allow(dead_code)]
7265struct ReadReplicaDBClusterIdentifierListDeserializer;
7266impl ReadReplicaDBClusterIdentifierListDeserializer {
7267    #[allow(dead_code, unused_variables)]
7268    fn deserialize<T: Peek + Next>(
7269        tag_name: &str,
7270        stack: &mut T,
7271    ) -> Result<Vec<String>, XmlParseError> {
7272        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
7273            if name == "ReadReplicaDBClusterIdentifier" {
7274                obj.push(StringDeserializer::deserialize(
7275                    "ReadReplicaDBClusterIdentifier",
7276                    stack,
7277                )?);
7278            } else {
7279                skip_tree(stack);
7280            }
7281            Ok(())
7282        })
7283    }
7284}
7285#[allow(dead_code)]
7286struct ReadReplicaDBInstanceIdentifierListDeserializer;
7287impl ReadReplicaDBInstanceIdentifierListDeserializer {
7288    #[allow(dead_code, unused_variables)]
7289    fn deserialize<T: Peek + Next>(
7290        tag_name: &str,
7291        stack: &mut T,
7292    ) -> Result<Vec<String>, XmlParseError> {
7293        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
7294            if name == "ReadReplicaDBInstanceIdentifier" {
7295                obj.push(StringDeserializer::deserialize(
7296                    "ReadReplicaDBInstanceIdentifier",
7297                    stack,
7298                )?);
7299            } else {
7300                skip_tree(stack);
7301            }
7302            Ok(())
7303        })
7304    }
7305}
7306#[allow(dead_code)]
7307struct ReadReplicaIdentifierListDeserializer;
7308impl ReadReplicaIdentifierListDeserializer {
7309    #[allow(dead_code, unused_variables)]
7310    fn deserialize<T: Peek + Next>(
7311        tag_name: &str,
7312        stack: &mut T,
7313    ) -> Result<Vec<String>, XmlParseError> {
7314        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
7315            if name == "ReadReplicaIdentifier" {
7316                obj.push(StringDeserializer::deserialize(
7317                    "ReadReplicaIdentifier",
7318                    stack,
7319                )?);
7320            } else {
7321                skip_tree(stack);
7322            }
7323            Ok(())
7324        })
7325    }
7326}
7327#[derive(Clone, Debug, Default, PartialEq)]
7328#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7329pub struct RebootDBInstanceMessage {
7330    /// <p><p>The DB instance identifier. This parameter is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must match the identifier of an existing DBInstance.</p> </li> </ul></p>
7331    pub db_instance_identifier: String,
7332    /// <p> When <code>true</code>, the reboot is conducted through a MultiAZ failover.</p> <p>Constraint: You can't specify <code>true</code> if the instance is not configured for MultiAZ.</p>
7333    pub force_failover: Option<bool>,
7334}
7335
7336/// Serialize `RebootDBInstanceMessage` contents to a `SignedRequest`.
7337struct RebootDBInstanceMessageSerializer;
7338impl RebootDBInstanceMessageSerializer {
7339    fn serialize(params: &mut Params, name: &str, obj: &RebootDBInstanceMessage) {
7340        let mut prefix = name.to_string();
7341        if prefix != "" {
7342            prefix.push_str(".");
7343        }
7344
7345        params.put(
7346            &format!("{}{}", prefix, "DBInstanceIdentifier"),
7347            &obj.db_instance_identifier,
7348        );
7349        if let Some(ref field_value) = obj.force_failover {
7350            params.put(&format!("{}{}", prefix, "ForceFailover"), &field_value);
7351        }
7352    }
7353}
7354
7355#[derive(Clone, Debug, Default, PartialEq)]
7356#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7357pub struct RebootDBInstanceResult {
7358    pub db_instance: Option<DBInstance>,
7359}
7360
7361#[allow(dead_code)]
7362struct RebootDBInstanceResultDeserializer;
7363impl RebootDBInstanceResultDeserializer {
7364    #[allow(dead_code, unused_variables)]
7365    fn deserialize<T: Peek + Next>(
7366        tag_name: &str,
7367        stack: &mut T,
7368    ) -> Result<RebootDBInstanceResult, XmlParseError> {
7369        deserialize_elements::<_, RebootDBInstanceResult, _>(tag_name, stack, |name, stack, obj| {
7370            match name {
7371                "DBInstance" => {
7372                    obj.db_instance =
7373                        Some(DBInstanceDeserializer::deserialize("DBInstance", stack)?);
7374                }
7375                _ => skip_tree(stack),
7376            }
7377            Ok(())
7378        })
7379    }
7380}
7381#[derive(Clone, Debug, Default, PartialEq)]
7382#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7383pub struct RemoveRoleFromDBClusterMessage {
7384    /// <p>The name of the DB cluster to disassociate the IAM role from.</p>
7385    pub db_cluster_identifier: String,
7386    /// <p>The Amazon Resource Name (ARN) of the IAM role to disassociate from the DB cluster, for example <code>arn:aws:iam::123456789012:role/NeptuneAccessRole</code>.</p>
7387    pub role_arn: String,
7388}
7389
7390/// Serialize `RemoveRoleFromDBClusterMessage` contents to a `SignedRequest`.
7391struct RemoveRoleFromDBClusterMessageSerializer;
7392impl RemoveRoleFromDBClusterMessageSerializer {
7393    fn serialize(params: &mut Params, name: &str, obj: &RemoveRoleFromDBClusterMessage) {
7394        let mut prefix = name.to_string();
7395        if prefix != "" {
7396            prefix.push_str(".");
7397        }
7398
7399        params.put(
7400            &format!("{}{}", prefix, "DBClusterIdentifier"),
7401            &obj.db_cluster_identifier,
7402        );
7403        params.put(&format!("{}{}", prefix, "RoleArn"), &obj.role_arn);
7404    }
7405}
7406
7407#[derive(Clone, Debug, Default, PartialEq)]
7408#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7409pub struct RemoveSourceIdentifierFromSubscriptionMessage {
7410    /// <p> The source identifier to be removed from the subscription, such as the <b>DB instance identifier</b> for a DB instance or the name of a security group.</p>
7411    pub source_identifier: String,
7412    /// <p>The name of the event notification subscription you want to remove a source identifier from.</p>
7413    pub subscription_name: String,
7414}
7415
7416/// Serialize `RemoveSourceIdentifierFromSubscriptionMessage` contents to a `SignedRequest`.
7417struct RemoveSourceIdentifierFromSubscriptionMessageSerializer;
7418impl RemoveSourceIdentifierFromSubscriptionMessageSerializer {
7419    fn serialize(
7420        params: &mut Params,
7421        name: &str,
7422        obj: &RemoveSourceIdentifierFromSubscriptionMessage,
7423    ) {
7424        let mut prefix = name.to_string();
7425        if prefix != "" {
7426            prefix.push_str(".");
7427        }
7428
7429        params.put(
7430            &format!("{}{}", prefix, "SourceIdentifier"),
7431            &obj.source_identifier,
7432        );
7433        params.put(
7434            &format!("{}{}", prefix, "SubscriptionName"),
7435            &obj.subscription_name,
7436        );
7437    }
7438}
7439
7440#[derive(Clone, Debug, Default, PartialEq)]
7441#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7442pub struct RemoveSourceIdentifierFromSubscriptionResult {
7443    pub event_subscription: Option<EventSubscription>,
7444}
7445
7446#[allow(dead_code)]
7447struct RemoveSourceIdentifierFromSubscriptionResultDeserializer;
7448impl RemoveSourceIdentifierFromSubscriptionResultDeserializer {
7449    #[allow(dead_code, unused_variables)]
7450    fn deserialize<T: Peek + Next>(
7451        tag_name: &str,
7452        stack: &mut T,
7453    ) -> Result<RemoveSourceIdentifierFromSubscriptionResult, XmlParseError> {
7454        deserialize_elements::<_, RemoveSourceIdentifierFromSubscriptionResult, _>(
7455            tag_name,
7456            stack,
7457            |name, stack, obj| {
7458                match name {
7459                    "EventSubscription" => {
7460                        obj.event_subscription = Some(EventSubscriptionDeserializer::deserialize(
7461                            "EventSubscription",
7462                            stack,
7463                        )?);
7464                    }
7465                    _ => skip_tree(stack),
7466                }
7467                Ok(())
7468            },
7469        )
7470    }
7471}
7472#[derive(Clone, Debug, Default, PartialEq)]
7473#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7474pub struct RemoveTagsFromResourceMessage {
7475    /// <p>The Amazon Neptune resource that the tags are removed from. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see <a href="https://docs.aws.amazon.com/neptune/latest/UserGuide/tagging.ARN.html#tagging.ARN.Constructing"> Constructing an Amazon Resource Name (ARN)</a>.</p>
7476    pub resource_name: String,
7477    /// <p>The tag key (name) of the tag to be removed.</p>
7478    pub tag_keys: Vec<String>,
7479}
7480
7481/// Serialize `RemoveTagsFromResourceMessage` contents to a `SignedRequest`.
7482struct RemoveTagsFromResourceMessageSerializer;
7483impl RemoveTagsFromResourceMessageSerializer {
7484    fn serialize(params: &mut Params, name: &str, obj: &RemoveTagsFromResourceMessage) {
7485        let mut prefix = name.to_string();
7486        if prefix != "" {
7487            prefix.push_str(".");
7488        }
7489
7490        params.put(&format!("{}{}", prefix, "ResourceName"), &obj.resource_name);
7491        KeyListSerializer::serialize(params, &format!("{}{}", prefix, "TagKeys"), &obj.tag_keys);
7492    }
7493}
7494
7495#[derive(Clone, Debug, Default, PartialEq)]
7496#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7497pub struct ResetDBClusterParameterGroupMessage {
7498    /// <p>The name of the DB cluster parameter group to reset.</p>
7499    pub db_cluster_parameter_group_name: String,
7500    /// <p>A list of parameter names in the DB cluster parameter group to reset to the default values. You can't use this parameter if the <code>ResetAllParameters</code> parameter is set to <code>true</code>.</p>
7501    pub parameters: Option<Vec<Parameter>>,
7502    /// <p>A value that is set to <code>true</code> to reset all parameters in the DB cluster parameter group to their default values, and <code>false</code> otherwise. You can't use this parameter if there is a list of parameter names specified for the <code>Parameters</code> parameter.</p>
7503    pub reset_all_parameters: Option<bool>,
7504}
7505
7506/// Serialize `ResetDBClusterParameterGroupMessage` contents to a `SignedRequest`.
7507struct ResetDBClusterParameterGroupMessageSerializer;
7508impl ResetDBClusterParameterGroupMessageSerializer {
7509    fn serialize(params: &mut Params, name: &str, obj: &ResetDBClusterParameterGroupMessage) {
7510        let mut prefix = name.to_string();
7511        if prefix != "" {
7512            prefix.push_str(".");
7513        }
7514
7515        params.put(
7516            &format!("{}{}", prefix, "DBClusterParameterGroupName"),
7517            &obj.db_cluster_parameter_group_name,
7518        );
7519        if let Some(ref field_value) = obj.parameters {
7520            ParametersListSerializer::serialize(
7521                params,
7522                &format!("{}{}", prefix, "Parameter"),
7523                field_value,
7524            );
7525        }
7526        if let Some(ref field_value) = obj.reset_all_parameters {
7527            params.put(&format!("{}{}", prefix, "ResetAllParameters"), &field_value);
7528        }
7529    }
7530}
7531
7532#[derive(Clone, Debug, Default, PartialEq)]
7533#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7534pub struct ResetDBParameterGroupMessage {
7535    /// <p><p>The name of the DB parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Must match the name of an existing DBParameterGroup.</p> </li> </ul></p>
7536    pub db_parameter_group_name: String,
7537    /// <p>To reset the entire DB parameter group, specify the <code>DBParameterGroup</code> name and <code>ResetAllParameters</code> parameters. To reset specific parameters, provide a list of the following: <code>ParameterName</code> and <code>ApplyMethod</code>. A maximum of 20 parameters can be modified in a single request.</p> <p>Valid Values (for Apply method): <code>pending-reboot</code> </p>
7538    pub parameters: Option<Vec<Parameter>>,
7539    /// <p>Specifies whether (<code>true</code>) or not (<code>false</code>) to reset all parameters in the DB parameter group to default values.</p> <p>Default: <code>true</code> </p>
7540    pub reset_all_parameters: Option<bool>,
7541}
7542
7543/// Serialize `ResetDBParameterGroupMessage` contents to a `SignedRequest`.
7544struct ResetDBParameterGroupMessageSerializer;
7545impl ResetDBParameterGroupMessageSerializer {
7546    fn serialize(params: &mut Params, name: &str, obj: &ResetDBParameterGroupMessage) {
7547        let mut prefix = name.to_string();
7548        if prefix != "" {
7549            prefix.push_str(".");
7550        }
7551
7552        params.put(
7553            &format!("{}{}", prefix, "DBParameterGroupName"),
7554            &obj.db_parameter_group_name,
7555        );
7556        if let Some(ref field_value) = obj.parameters {
7557            ParametersListSerializer::serialize(
7558                params,
7559                &format!("{}{}", prefix, "Parameter"),
7560                field_value,
7561            );
7562        }
7563        if let Some(ref field_value) = obj.reset_all_parameters {
7564            params.put(&format!("{}{}", prefix, "ResetAllParameters"), &field_value);
7565        }
7566    }
7567}
7568
7569/// <p>Describes the pending maintenance actions for a resource.</p>
7570#[derive(Clone, Debug, Default, PartialEq)]
7571#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7572pub struct ResourcePendingMaintenanceActions {
7573    /// <p>A list that provides details about the pending maintenance actions for the resource.</p>
7574    pub pending_maintenance_action_details: Option<Vec<PendingMaintenanceAction>>,
7575    /// <p>The ARN of the resource that has pending maintenance actions.</p>
7576    pub resource_identifier: Option<String>,
7577}
7578
7579#[allow(dead_code)]
7580struct ResourcePendingMaintenanceActionsDeserializer;
7581impl ResourcePendingMaintenanceActionsDeserializer {
7582    #[allow(dead_code, unused_variables)]
7583    fn deserialize<T: Peek + Next>(
7584        tag_name: &str,
7585        stack: &mut T,
7586    ) -> Result<ResourcePendingMaintenanceActions, XmlParseError> {
7587        deserialize_elements::<_, ResourcePendingMaintenanceActions, _>(
7588            tag_name,
7589            stack,
7590            |name, stack, obj| {
7591                match name {
7592                    "PendingMaintenanceActionDetails" => {
7593                        obj.pending_maintenance_action_details
7594                            .get_or_insert(vec![])
7595                            .extend(PendingMaintenanceActionDetailsDeserializer::deserialize(
7596                                "PendingMaintenanceActionDetails",
7597                                stack,
7598                            )?);
7599                    }
7600                    "ResourceIdentifier" => {
7601                        obj.resource_identifier = Some(StringDeserializer::deserialize(
7602                            "ResourceIdentifier",
7603                            stack,
7604                        )?);
7605                    }
7606                    _ => skip_tree(stack),
7607                }
7608                Ok(())
7609            },
7610        )
7611    }
7612}
7613#[derive(Clone, Debug, Default, PartialEq)]
7614#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7615pub struct RestoreDBClusterFromSnapshotMessage {
7616    /// <p>Provides the list of EC2 Availability Zones that instances in the restored DB cluster can be created in.</p>
7617    pub availability_zones: Option<Vec<String>>,
7618    /// <p>The name of the DB cluster to create from the DB snapshot or DB cluster snapshot. This parameter isn't case-sensitive.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul> <p>Example: <code>my-snapshot-id</code> </p>
7619    pub db_cluster_identifier: String,
7620    /// <p><p>The name of the DB cluster parameter group to associate with the new DB cluster.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the name of an existing DBClusterParameterGroup.</p> </li> </ul></p>
7621    pub db_cluster_parameter_group_name: Option<String>,
7622    /// <p>The name of the DB subnet group to use for the new DB cluster.</p> <p>Constraints: If supplied, must match the name of an existing DBSubnetGroup.</p> <p>Example: <code>mySubnetgroup</code> </p>
7623    pub db_subnet_group_name: Option<String>,
7624    /// <p>Not supported.</p>
7625    pub database_name: Option<String>,
7626    /// <p>A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled. </p>
7627    pub deletion_protection: Option<bool>,
7628    /// <p>The list of logs that the restored DB cluster is to export to Amazon CloudWatch Logs.</p>
7629    pub enable_cloudwatch_logs_exports: Option<Vec<String>>,
7630    /// <p>True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false.</p> <p>Default: <code>false</code> </p>
7631    pub enable_iam_database_authentication: Option<bool>,
7632    /// <p>The database engine to use for the new DB cluster.</p> <p>Default: The same as source</p> <p>Constraint: Must be compatible with the engine of the source</p>
7633    pub engine: String,
7634    /// <p>The version of the database engine to use for the new DB cluster.</p>
7635    pub engine_version: Option<String>,
7636    /// <p><p>The AWS KMS key identifier to use when restoring an encrypted DB cluster from a DB snapshot or DB cluster snapshot.</p> <p>The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are restoring a DB cluster with the same AWS account that owns the KMS encryption key used to encrypt the new DB cluster, then you can use the KMS key alias instead of the ARN for the KMS encryption key.</p> <p>If you do not specify a value for the <code>KmsKeyId</code> parameter, then the following will occur:</p> <ul> <li> <p>If the DB snapshot or DB cluster snapshot in <code>SnapshotIdentifier</code> is encrypted, then the restored DB cluster is encrypted using the KMS key that was used to encrypt the DB snapshot or DB cluster snapshot.</p> </li> <li> <p>If the DB snapshot or DB cluster snapshot in <code>SnapshotIdentifier</code> is not encrypted, then the restored DB cluster is not encrypted.</p> </li> </ul></p>
7637    pub kms_key_id: Option<String>,
7638    /// <p> <i>(Not supported by Neptune)</i> </p>
7639    pub option_group_name: Option<String>,
7640    /// <p>The port number on which the new DB cluster accepts connections.</p> <p>Constraints: Value must be <code>1150-65535</code> </p> <p>Default: The same port as the original DB cluster.</p>
7641    pub port: Option<i64>,
7642    /// <p><p>The identifier for the DB snapshot or DB cluster snapshot to restore from.</p> <p>You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot. However, you can use only the ARN to specify a DB snapshot.</p> <p>Constraints:</p> <ul> <li> <p>Must match the identifier of an existing Snapshot.</p> </li> </ul></p>
7643    pub snapshot_identifier: String,
7644    /// <p>The tags to be assigned to the restored DB cluster.</p>
7645    pub tags: Option<Vec<Tag>>,
7646    /// <p>A list of VPC security groups that the new DB cluster will belong to.</p>
7647    pub vpc_security_group_ids: Option<Vec<String>>,
7648}
7649
7650/// Serialize `RestoreDBClusterFromSnapshotMessage` contents to a `SignedRequest`.
7651struct RestoreDBClusterFromSnapshotMessageSerializer;
7652impl RestoreDBClusterFromSnapshotMessageSerializer {
7653    fn serialize(params: &mut Params, name: &str, obj: &RestoreDBClusterFromSnapshotMessage) {
7654        let mut prefix = name.to_string();
7655        if prefix != "" {
7656            prefix.push_str(".");
7657        }
7658
7659        if let Some(ref field_value) = obj.availability_zones {
7660            AvailabilityZonesSerializer::serialize(
7661                params,
7662                &format!("{}{}", prefix, "AvailabilityZone"),
7663                field_value,
7664            );
7665        }
7666        params.put(
7667            &format!("{}{}", prefix, "DBClusterIdentifier"),
7668            &obj.db_cluster_identifier,
7669        );
7670        if let Some(ref field_value) = obj.db_cluster_parameter_group_name {
7671            params.put(
7672                &format!("{}{}", prefix, "DBClusterParameterGroupName"),
7673                &field_value,
7674            );
7675        }
7676        if let Some(ref field_value) = obj.db_subnet_group_name {
7677            params.put(&format!("{}{}", prefix, "DBSubnetGroupName"), &field_value);
7678        }
7679        if let Some(ref field_value) = obj.database_name {
7680            params.put(&format!("{}{}", prefix, "DatabaseName"), &field_value);
7681        }
7682        if let Some(ref field_value) = obj.deletion_protection {
7683            params.put(&format!("{}{}", prefix, "DeletionProtection"), &field_value);
7684        }
7685        if let Some(ref field_value) = obj.enable_cloudwatch_logs_exports {
7686            LogTypeListSerializer::serialize(
7687                params,
7688                &format!("{}{}", prefix, "EnableCloudwatchLogsExports"),
7689                field_value,
7690            );
7691        }
7692        if let Some(ref field_value) = obj.enable_iam_database_authentication {
7693            params.put(
7694                &format!("{}{}", prefix, "EnableIAMDatabaseAuthentication"),
7695                &field_value,
7696            );
7697        }
7698        params.put(&format!("{}{}", prefix, "Engine"), &obj.engine);
7699        if let Some(ref field_value) = obj.engine_version {
7700            params.put(&format!("{}{}", prefix, "EngineVersion"), &field_value);
7701        }
7702        if let Some(ref field_value) = obj.kms_key_id {
7703            params.put(&format!("{}{}", prefix, "KmsKeyId"), &field_value);
7704        }
7705        if let Some(ref field_value) = obj.option_group_name {
7706            params.put(&format!("{}{}", prefix, "OptionGroupName"), &field_value);
7707        }
7708        if let Some(ref field_value) = obj.port {
7709            params.put(&format!("{}{}", prefix, "Port"), &field_value);
7710        }
7711        params.put(
7712            &format!("{}{}", prefix, "SnapshotIdentifier"),
7713            &obj.snapshot_identifier,
7714        );
7715        if let Some(ref field_value) = obj.tags {
7716            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
7717        }
7718        if let Some(ref field_value) = obj.vpc_security_group_ids {
7719            VpcSecurityGroupIdListSerializer::serialize(
7720                params,
7721                &format!("{}{}", prefix, "VpcSecurityGroupId"),
7722                field_value,
7723            );
7724        }
7725    }
7726}
7727
7728#[derive(Clone, Debug, Default, PartialEq)]
7729#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7730pub struct RestoreDBClusterFromSnapshotResult {
7731    pub db_cluster: Option<DBCluster>,
7732}
7733
7734#[allow(dead_code)]
7735struct RestoreDBClusterFromSnapshotResultDeserializer;
7736impl RestoreDBClusterFromSnapshotResultDeserializer {
7737    #[allow(dead_code, unused_variables)]
7738    fn deserialize<T: Peek + Next>(
7739        tag_name: &str,
7740        stack: &mut T,
7741    ) -> Result<RestoreDBClusterFromSnapshotResult, XmlParseError> {
7742        deserialize_elements::<_, RestoreDBClusterFromSnapshotResult, _>(
7743            tag_name,
7744            stack,
7745            |name, stack, obj| {
7746                match name {
7747                    "DBCluster" => {
7748                        obj.db_cluster =
7749                            Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
7750                    }
7751                    _ => skip_tree(stack),
7752                }
7753                Ok(())
7754            },
7755        )
7756    }
7757}
7758#[derive(Clone, Debug, Default, PartialEq)]
7759#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7760pub struct RestoreDBClusterToPointInTimeMessage {
7761    /// <p><p>The name of the new DB cluster to be created.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul></p>
7762    pub db_cluster_identifier: String,
7763    /// <p><p>The name of the DB cluster parameter group to associate with the new DB cluster.</p> <p>Constraints:</p> <ul> <li> <p>If supplied, must match the name of an existing DBClusterParameterGroup.</p> </li> </ul></p>
7764    pub db_cluster_parameter_group_name: Option<String>,
7765    /// <p>The DB subnet group name to use for the new DB cluster.</p> <p>Constraints: If supplied, must match the name of an existing DBSubnetGroup.</p> <p>Example: <code>mySubnetgroup</code> </p>
7766    pub db_subnet_group_name: Option<String>,
7767    /// <p>A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled. </p>
7768    pub deletion_protection: Option<bool>,
7769    /// <p>The list of logs that the restored DB cluster is to export to CloudWatch Logs.</p>
7770    pub enable_cloudwatch_logs_exports: Option<Vec<String>>,
7771    /// <p>True to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts, and otherwise false.</p> <p>Default: <code>false</code> </p>
7772    pub enable_iam_database_authentication: Option<bool>,
7773    /// <p>The AWS KMS key identifier to use when restoring an encrypted DB cluster from an encrypted DB cluster.</p> <p>The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are restoring a DB cluster with the same AWS account that owns the KMS encryption key used to encrypt the new DB cluster, then you can use the KMS key alias instead of the ARN for the KMS encryption key.</p> <p>You can restore to a new DB cluster and encrypt the new DB cluster with a KMS key that is different than the KMS key used to encrypt the source DB cluster. The new DB cluster is encrypted with the KMS key identified by the <code>KmsKeyId</code> parameter.</p> <p>If you do not specify a value for the <code>KmsKeyId</code> parameter, then the following will occur:</p> <ul> <li> <p>If the DB cluster is encrypted, then the restored DB cluster is encrypted using the KMS key that was used to encrypt the source DB cluster.</p> </li> <li> <p>If the DB cluster is not encrypted, then the restored DB cluster is not encrypted.</p> </li> </ul> <p>If <code>DBClusterIdentifier</code> refers to a DB cluster that is not encrypted, then the restore request is rejected.</p>
7774    pub kms_key_id: Option<String>,
7775    /// <p> <i>(Not supported by Neptune)</i> </p>
7776    pub option_group_name: Option<String>,
7777    /// <p>The port number on which the new DB cluster accepts connections.</p> <p>Constraints: Value must be <code>1150-65535</code> </p> <p>Default: The same port as the original DB cluster.</p>
7778    pub port: Option<i64>,
7779    /// <p>The date and time to restore the DB cluster to.</p> <p>Valid Values: Value must be a time in Universal Coordinated Time (UTC) format</p> <p>Constraints:</p> <ul> <li> <p>Must be before the latest restorable time for the DB instance</p> </li> <li> <p>Must be specified if <code>UseLatestRestorableTime</code> parameter is not provided</p> </li> <li> <p>Cannot be specified if <code>UseLatestRestorableTime</code> parameter is true</p> </li> <li> <p>Cannot be specified if <code>RestoreType</code> parameter is <code>copy-on-write</code> </p> </li> </ul> <p>Example: <code>2015-03-07T23:45:00Z</code> </p>
7780    pub restore_to_time: Option<String>,
7781    /// <p>The type of restore to be performed. You can specify one of the following values:</p> <ul> <li> <p> <code>full-copy</code> - The new DB cluster is restored as a full copy of the source DB cluster.</p> </li> <li> <p> <code>copy-on-write</code> - The new DB cluster is restored as a clone of the source DB cluster.</p> </li> </ul> <p>If you don't specify a <code>RestoreType</code> value, then the new DB cluster is restored as a full copy of the source DB cluster.</p>
7782    pub restore_type: Option<String>,
7783    /// <p><p>The identifier of the source DB cluster from which to restore.</p> <p>Constraints:</p> <ul> <li> <p>Must match the identifier of an existing DBCluster.</p> </li> </ul></p>
7784    pub source_db_cluster_identifier: String,
7785    /// <p>The tags to be applied to the restored DB cluster.</p>
7786    pub tags: Option<Vec<Tag>>,
7787    /// <p>A value that is set to <code>true</code> to restore the DB cluster to the latest restorable backup time, and <code>false</code> otherwise.</p> <p>Default: <code>false</code> </p> <p>Constraints: Cannot be specified if <code>RestoreToTime</code> parameter is provided.</p>
7788    pub use_latest_restorable_time: Option<bool>,
7789    /// <p>A list of VPC security groups that the new DB cluster belongs to.</p>
7790    pub vpc_security_group_ids: Option<Vec<String>>,
7791}
7792
7793/// Serialize `RestoreDBClusterToPointInTimeMessage` contents to a `SignedRequest`.
7794struct RestoreDBClusterToPointInTimeMessageSerializer;
7795impl RestoreDBClusterToPointInTimeMessageSerializer {
7796    fn serialize(params: &mut Params, name: &str, obj: &RestoreDBClusterToPointInTimeMessage) {
7797        let mut prefix = name.to_string();
7798        if prefix != "" {
7799            prefix.push_str(".");
7800        }
7801
7802        params.put(
7803            &format!("{}{}", prefix, "DBClusterIdentifier"),
7804            &obj.db_cluster_identifier,
7805        );
7806        if let Some(ref field_value) = obj.db_cluster_parameter_group_name {
7807            params.put(
7808                &format!("{}{}", prefix, "DBClusterParameterGroupName"),
7809                &field_value,
7810            );
7811        }
7812        if let Some(ref field_value) = obj.db_subnet_group_name {
7813            params.put(&format!("{}{}", prefix, "DBSubnetGroupName"), &field_value);
7814        }
7815        if let Some(ref field_value) = obj.deletion_protection {
7816            params.put(&format!("{}{}", prefix, "DeletionProtection"), &field_value);
7817        }
7818        if let Some(ref field_value) = obj.enable_cloudwatch_logs_exports {
7819            LogTypeListSerializer::serialize(
7820                params,
7821                &format!("{}{}", prefix, "EnableCloudwatchLogsExports"),
7822                field_value,
7823            );
7824        }
7825        if let Some(ref field_value) = obj.enable_iam_database_authentication {
7826            params.put(
7827                &format!("{}{}", prefix, "EnableIAMDatabaseAuthentication"),
7828                &field_value,
7829            );
7830        }
7831        if let Some(ref field_value) = obj.kms_key_id {
7832            params.put(&format!("{}{}", prefix, "KmsKeyId"), &field_value);
7833        }
7834        if let Some(ref field_value) = obj.option_group_name {
7835            params.put(&format!("{}{}", prefix, "OptionGroupName"), &field_value);
7836        }
7837        if let Some(ref field_value) = obj.port {
7838            params.put(&format!("{}{}", prefix, "Port"), &field_value);
7839        }
7840        if let Some(ref field_value) = obj.restore_to_time {
7841            params.put(&format!("{}{}", prefix, "RestoreToTime"), &field_value);
7842        }
7843        if let Some(ref field_value) = obj.restore_type {
7844            params.put(&format!("{}{}", prefix, "RestoreType"), &field_value);
7845        }
7846        params.put(
7847            &format!("{}{}", prefix, "SourceDBClusterIdentifier"),
7848            &obj.source_db_cluster_identifier,
7849        );
7850        if let Some(ref field_value) = obj.tags {
7851            TagListSerializer::serialize(params, &format!("{}{}", prefix, "Tag"), field_value);
7852        }
7853        if let Some(ref field_value) = obj.use_latest_restorable_time {
7854            params.put(
7855                &format!("{}{}", prefix, "UseLatestRestorableTime"),
7856                &field_value,
7857            );
7858        }
7859        if let Some(ref field_value) = obj.vpc_security_group_ids {
7860            VpcSecurityGroupIdListSerializer::serialize(
7861                params,
7862                &format!("{}{}", prefix, "VpcSecurityGroupId"),
7863                field_value,
7864            );
7865        }
7866    }
7867}
7868
7869#[derive(Clone, Debug, Default, PartialEq)]
7870#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7871pub struct RestoreDBClusterToPointInTimeResult {
7872    pub db_cluster: Option<DBCluster>,
7873}
7874
7875#[allow(dead_code)]
7876struct RestoreDBClusterToPointInTimeResultDeserializer;
7877impl RestoreDBClusterToPointInTimeResultDeserializer {
7878    #[allow(dead_code, unused_variables)]
7879    fn deserialize<T: Peek + Next>(
7880        tag_name: &str,
7881        stack: &mut T,
7882    ) -> Result<RestoreDBClusterToPointInTimeResult, XmlParseError> {
7883        deserialize_elements::<_, RestoreDBClusterToPointInTimeResult, _>(
7884            tag_name,
7885            stack,
7886            |name, stack, obj| {
7887                match name {
7888                    "DBCluster" => {
7889                        obj.db_cluster =
7890                            Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
7891                    }
7892                    _ => skip_tree(stack),
7893                }
7894                Ok(())
7895            },
7896        )
7897    }
7898}
7899#[allow(dead_code)]
7900struct SourceIdsListDeserializer;
7901impl SourceIdsListDeserializer {
7902    #[allow(dead_code, unused_variables)]
7903    fn deserialize<T: Peek + Next>(
7904        tag_name: &str,
7905        stack: &mut T,
7906    ) -> Result<Vec<String>, XmlParseError> {
7907        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
7908            if name == "SourceId" {
7909                obj.push(StringDeserializer::deserialize("SourceId", stack)?);
7910            } else {
7911                skip_tree(stack);
7912            }
7913            Ok(())
7914        })
7915    }
7916}
7917
7918/// Serialize `SourceIdsList` contents to a `SignedRequest`.
7919struct SourceIdsListSerializer;
7920impl SourceIdsListSerializer {
7921    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
7922        for (index, obj) in obj.iter().enumerate() {
7923            let key = format!("{}.member.{}", name, index + 1);
7924            params.put(&key, &obj);
7925        }
7926    }
7927}
7928
7929#[allow(dead_code)]
7930struct SourceTypeDeserializer;
7931impl SourceTypeDeserializer {
7932    #[allow(dead_code, unused_variables)]
7933    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
7934        xml_util::deserialize_primitive(tag_name, stack, Ok)
7935    }
7936}
7937#[derive(Clone, Debug, Default, PartialEq)]
7938#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7939pub struct StartDBClusterMessage {
7940    /// <p>The DB cluster identifier of the Neptune DB cluster to be started. This parameter is stored as a lowercase string.</p>
7941    pub db_cluster_identifier: String,
7942}
7943
7944/// Serialize `StartDBClusterMessage` contents to a `SignedRequest`.
7945struct StartDBClusterMessageSerializer;
7946impl StartDBClusterMessageSerializer {
7947    fn serialize(params: &mut Params, name: &str, obj: &StartDBClusterMessage) {
7948        let mut prefix = name.to_string();
7949        if prefix != "" {
7950            prefix.push_str(".");
7951        }
7952
7953        params.put(
7954            &format!("{}{}", prefix, "DBClusterIdentifier"),
7955            &obj.db_cluster_identifier,
7956        );
7957    }
7958}
7959
7960#[derive(Clone, Debug, Default, PartialEq)]
7961#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7962pub struct StartDBClusterResult {
7963    pub db_cluster: Option<DBCluster>,
7964}
7965
7966#[allow(dead_code)]
7967struct StartDBClusterResultDeserializer;
7968impl StartDBClusterResultDeserializer {
7969    #[allow(dead_code, unused_variables)]
7970    fn deserialize<T: Peek + Next>(
7971        tag_name: &str,
7972        stack: &mut T,
7973    ) -> Result<StartDBClusterResult, XmlParseError> {
7974        deserialize_elements::<_, StartDBClusterResult, _>(tag_name, stack, |name, stack, obj| {
7975            match name {
7976                "DBCluster" => {
7977                    obj.db_cluster = Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
7978                }
7979                _ => skip_tree(stack),
7980            }
7981            Ok(())
7982        })
7983    }
7984}
7985#[derive(Clone, Debug, Default, PartialEq)]
7986#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7987pub struct StopDBClusterMessage {
7988    /// <p>The DB cluster identifier of the Neptune DB cluster to be stopped. This parameter is stored as a lowercase string.</p>
7989    pub db_cluster_identifier: String,
7990}
7991
7992/// Serialize `StopDBClusterMessage` contents to a `SignedRequest`.
7993struct StopDBClusterMessageSerializer;
7994impl StopDBClusterMessageSerializer {
7995    fn serialize(params: &mut Params, name: &str, obj: &StopDBClusterMessage) {
7996        let mut prefix = name.to_string();
7997        if prefix != "" {
7998            prefix.push_str(".");
7999        }
8000
8001        params.put(
8002            &format!("{}{}", prefix, "DBClusterIdentifier"),
8003            &obj.db_cluster_identifier,
8004        );
8005    }
8006}
8007
8008#[derive(Clone, Debug, Default, PartialEq)]
8009#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8010pub struct StopDBClusterResult {
8011    pub db_cluster: Option<DBCluster>,
8012}
8013
8014#[allow(dead_code)]
8015struct StopDBClusterResultDeserializer;
8016impl StopDBClusterResultDeserializer {
8017    #[allow(dead_code, unused_variables)]
8018    fn deserialize<T: Peek + Next>(
8019        tag_name: &str,
8020        stack: &mut T,
8021    ) -> Result<StopDBClusterResult, XmlParseError> {
8022        deserialize_elements::<_, StopDBClusterResult, _>(tag_name, stack, |name, stack, obj| {
8023            match name {
8024                "DBCluster" => {
8025                    obj.db_cluster = Some(DBClusterDeserializer::deserialize("DBCluster", stack)?);
8026                }
8027                _ => skip_tree(stack),
8028            }
8029            Ok(())
8030        })
8031    }
8032}
8033#[allow(dead_code)]
8034struct StringDeserializer;
8035impl StringDeserializer {
8036    #[allow(dead_code, unused_variables)]
8037    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
8038        xml_util::deserialize_primitive(tag_name, stack, Ok)
8039    }
8040}
8041/// <p>Specifies a subnet.</p> <p> This data type is used as a response element in the <a>DescribeDBSubnetGroups</a> action.</p>
8042#[derive(Clone, Debug, Default, PartialEq)]
8043#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8044pub struct Subnet {
8045    /// <p>Specifies the EC2 Availability Zone that the subnet is in.</p>
8046    pub subnet_availability_zone: Option<AvailabilityZone>,
8047    /// <p>Specifies the identifier of the subnet.</p>
8048    pub subnet_identifier: Option<String>,
8049    /// <p>Specifies the status of the subnet.</p>
8050    pub subnet_status: Option<String>,
8051}
8052
8053#[allow(dead_code)]
8054struct SubnetDeserializer;
8055impl SubnetDeserializer {
8056    #[allow(dead_code, unused_variables)]
8057    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Subnet, XmlParseError> {
8058        deserialize_elements::<_, Subnet, _>(tag_name, stack, |name, stack, obj| {
8059            match name {
8060                "SubnetAvailabilityZone" => {
8061                    obj.subnet_availability_zone = Some(AvailabilityZoneDeserializer::deserialize(
8062                        "SubnetAvailabilityZone",
8063                        stack,
8064                    )?);
8065                }
8066                "SubnetIdentifier" => {
8067                    obj.subnet_identifier =
8068                        Some(StringDeserializer::deserialize("SubnetIdentifier", stack)?);
8069                }
8070                "SubnetStatus" => {
8071                    obj.subnet_status =
8072                        Some(StringDeserializer::deserialize("SubnetStatus", stack)?);
8073                }
8074                _ => skip_tree(stack),
8075            }
8076            Ok(())
8077        })
8078    }
8079}
8080
8081/// Serialize `SubnetIdentifierList` contents to a `SignedRequest`.
8082struct SubnetIdentifierListSerializer;
8083impl SubnetIdentifierListSerializer {
8084    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
8085        for (index, obj) in obj.iter().enumerate() {
8086            let key = format!("{}.member.{}", name, index + 1);
8087            params.put(&key, &obj);
8088        }
8089    }
8090}
8091
8092#[allow(dead_code)]
8093struct SubnetListDeserializer;
8094impl SubnetListDeserializer {
8095    #[allow(dead_code, unused_variables)]
8096    fn deserialize<T: Peek + Next>(
8097        tag_name: &str,
8098        stack: &mut T,
8099    ) -> Result<Vec<Subnet>, XmlParseError> {
8100        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
8101            if name == "Subnet" {
8102                obj.push(SubnetDeserializer::deserialize("Subnet", stack)?);
8103            } else {
8104                skip_tree(stack);
8105            }
8106            Ok(())
8107        })
8108    }
8109}
8110#[allow(dead_code)]
8111struct SupportedCharacterSetsListDeserializer;
8112impl SupportedCharacterSetsListDeserializer {
8113    #[allow(dead_code, unused_variables)]
8114    fn deserialize<T: Peek + Next>(
8115        tag_name: &str,
8116        stack: &mut T,
8117    ) -> Result<Vec<CharacterSet>, XmlParseError> {
8118        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
8119            if name == "CharacterSet" {
8120                obj.push(CharacterSetDeserializer::deserialize(
8121                    "CharacterSet",
8122                    stack,
8123                )?);
8124            } else {
8125                skip_tree(stack);
8126            }
8127            Ok(())
8128        })
8129    }
8130}
8131#[allow(dead_code)]
8132struct SupportedTimezonesListDeserializer;
8133impl SupportedTimezonesListDeserializer {
8134    #[allow(dead_code, unused_variables)]
8135    fn deserialize<T: Peek + Next>(
8136        tag_name: &str,
8137        stack: &mut T,
8138    ) -> Result<Vec<Timezone>, XmlParseError> {
8139        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
8140            if name == "Timezone" {
8141                obj.push(TimezoneDeserializer::deserialize("Timezone", stack)?);
8142            } else {
8143                skip_tree(stack);
8144            }
8145            Ok(())
8146        })
8147    }
8148}
8149#[allow(dead_code)]
8150struct TStampDeserializer;
8151impl TStampDeserializer {
8152    #[allow(dead_code, unused_variables)]
8153    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
8154        xml_util::deserialize_primitive(tag_name, stack, Ok)
8155    }
8156}
8157/// <p>Metadata assigned to an Amazon Neptune resource consisting of a key-value pair.</p>
8158#[derive(Clone, Debug, Default, PartialEq)]
8159#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8160#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8161pub struct Tag {
8162    /// <p>A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with "aws:" or "rds:". The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").</p>
8163    pub key: Option<String>,
8164    /// <p>A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with "aws:" or "rds:". The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").</p>
8165    pub value: Option<String>,
8166}
8167
8168#[allow(dead_code)]
8169struct TagDeserializer;
8170impl TagDeserializer {
8171    #[allow(dead_code, unused_variables)]
8172    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Tag, XmlParseError> {
8173        deserialize_elements::<_, Tag, _>(tag_name, stack, |name, stack, obj| {
8174            match name {
8175                "Key" => {
8176                    obj.key = Some(StringDeserializer::deserialize("Key", stack)?);
8177                }
8178                "Value" => {
8179                    obj.value = Some(StringDeserializer::deserialize("Value", stack)?);
8180                }
8181                _ => skip_tree(stack),
8182            }
8183            Ok(())
8184        })
8185    }
8186}
8187
8188/// Serialize `Tag` contents to a `SignedRequest`.
8189struct TagSerializer;
8190impl TagSerializer {
8191    fn serialize(params: &mut Params, name: &str, obj: &Tag) {
8192        let mut prefix = name.to_string();
8193        if prefix != "" {
8194            prefix.push_str(".");
8195        }
8196
8197        if let Some(ref field_value) = obj.key {
8198            params.put(&format!("{}{}", prefix, "Key"), &field_value);
8199        }
8200        if let Some(ref field_value) = obj.value {
8201            params.put(&format!("{}{}", prefix, "Value"), &field_value);
8202        }
8203    }
8204}
8205
8206#[allow(dead_code)]
8207struct TagListDeserializer;
8208impl TagListDeserializer {
8209    #[allow(dead_code, unused_variables)]
8210    fn deserialize<T: Peek + Next>(
8211        tag_name: &str,
8212        stack: &mut T,
8213    ) -> Result<Vec<Tag>, XmlParseError> {
8214        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
8215            if name == "Tag" {
8216                obj.push(TagDeserializer::deserialize("Tag", stack)?);
8217            } else {
8218                skip_tree(stack);
8219            }
8220            Ok(())
8221        })
8222    }
8223}
8224
8225/// Serialize `TagList` contents to a `SignedRequest`.
8226struct TagListSerializer;
8227impl TagListSerializer {
8228    fn serialize(params: &mut Params, name: &str, obj: &Vec<Tag>) {
8229        for (index, obj) in obj.iter().enumerate() {
8230            let key = format!("{}.member.{}", name, index + 1);
8231            TagSerializer::serialize(params, &key, obj);
8232        }
8233    }
8234}
8235
8236#[derive(Clone, Debug, Default, PartialEq)]
8237#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8238pub struct TagListMessage {
8239    /// <p>List of tags returned by the ListTagsForResource operation.</p>
8240    pub tag_list: Option<Vec<Tag>>,
8241}
8242
8243#[allow(dead_code)]
8244struct TagListMessageDeserializer;
8245impl TagListMessageDeserializer {
8246    #[allow(dead_code, unused_variables)]
8247    fn deserialize<T: Peek + Next>(
8248        tag_name: &str,
8249        stack: &mut T,
8250    ) -> Result<TagListMessage, XmlParseError> {
8251        deserialize_elements::<_, TagListMessage, _>(tag_name, stack, |name, stack, obj| {
8252            match name {
8253                "TagList" => {
8254                    obj.tag_list
8255                        .get_or_insert(vec![])
8256                        .extend(TagListDeserializer::deserialize("TagList", stack)?);
8257                }
8258                _ => skip_tree(stack),
8259            }
8260            Ok(())
8261        })
8262    }
8263}
8264/// <p>A time zone associated with a <a>DBInstance</a>.</p>
8265#[derive(Clone, Debug, Default, PartialEq)]
8266#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8267pub struct Timezone {
8268    /// <p>The name of the time zone.</p>
8269    pub timezone_name: Option<String>,
8270}
8271
8272#[allow(dead_code)]
8273struct TimezoneDeserializer;
8274impl TimezoneDeserializer {
8275    #[allow(dead_code, unused_variables)]
8276    fn deserialize<T: Peek + Next>(
8277        tag_name: &str,
8278        stack: &mut T,
8279    ) -> Result<Timezone, XmlParseError> {
8280        deserialize_elements::<_, Timezone, _>(tag_name, stack, |name, stack, obj| {
8281            match name {
8282                "TimezoneName" => {
8283                    obj.timezone_name =
8284                        Some(StringDeserializer::deserialize("TimezoneName", stack)?);
8285                }
8286                _ => skip_tree(stack),
8287            }
8288            Ok(())
8289        })
8290    }
8291}
8292/// <p>The version of the database engine that a DB instance can be upgraded to.</p>
8293#[derive(Clone, Debug, Default, PartialEq)]
8294#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8295pub struct UpgradeTarget {
8296    /// <p>A value that indicates whether the target version is applied to any source DB instances that have AutoMinorVersionUpgrade set to true.</p>
8297    pub auto_upgrade: Option<bool>,
8298    /// <p>The version of the database engine that a DB instance can be upgraded to.</p>
8299    pub description: Option<String>,
8300    /// <p>The name of the upgrade target database engine.</p>
8301    pub engine: Option<String>,
8302    /// <p>The version number of the upgrade target database engine.</p>
8303    pub engine_version: Option<String>,
8304    /// <p>A value that indicates whether a database engine is upgraded to a major version.</p>
8305    pub is_major_version_upgrade: Option<bool>,
8306}
8307
8308#[allow(dead_code)]
8309struct UpgradeTargetDeserializer;
8310impl UpgradeTargetDeserializer {
8311    #[allow(dead_code, unused_variables)]
8312    fn deserialize<T: Peek + Next>(
8313        tag_name: &str,
8314        stack: &mut T,
8315    ) -> Result<UpgradeTarget, XmlParseError> {
8316        deserialize_elements::<_, UpgradeTarget, _>(tag_name, stack, |name, stack, obj| {
8317            match name {
8318                "AutoUpgrade" => {
8319                    obj.auto_upgrade =
8320                        Some(BooleanDeserializer::deserialize("AutoUpgrade", stack)?);
8321                }
8322                "Description" => {
8323                    obj.description = Some(StringDeserializer::deserialize("Description", stack)?);
8324                }
8325                "Engine" => {
8326                    obj.engine = Some(StringDeserializer::deserialize("Engine", stack)?);
8327                }
8328                "EngineVersion" => {
8329                    obj.engine_version =
8330                        Some(StringDeserializer::deserialize("EngineVersion", stack)?);
8331                }
8332                "IsMajorVersionUpgrade" => {
8333                    obj.is_major_version_upgrade = Some(BooleanDeserializer::deserialize(
8334                        "IsMajorVersionUpgrade",
8335                        stack,
8336                    )?);
8337                }
8338                _ => skip_tree(stack),
8339            }
8340            Ok(())
8341        })
8342    }
8343}
8344/// <p>Information about valid modifications that you can make to your DB instance. Contains the result of a successful call to the <a>DescribeValidDBInstanceModifications</a> action. You can use this information when you call <a>ModifyDBInstance</a>. </p>
8345#[derive(Clone, Debug, Default, PartialEq)]
8346#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8347pub struct ValidDBInstanceModificationsMessage {
8348    /// <p>Valid storage options for your DB instance.</p>
8349    pub storage: Option<Vec<ValidStorageOptions>>,
8350}
8351
8352#[allow(dead_code)]
8353struct ValidDBInstanceModificationsMessageDeserializer;
8354impl ValidDBInstanceModificationsMessageDeserializer {
8355    #[allow(dead_code, unused_variables)]
8356    fn deserialize<T: Peek + Next>(
8357        tag_name: &str,
8358        stack: &mut T,
8359    ) -> Result<ValidDBInstanceModificationsMessage, XmlParseError> {
8360        deserialize_elements::<_, ValidDBInstanceModificationsMessage, _>(
8361            tag_name,
8362            stack,
8363            |name, stack, obj| {
8364                match name {
8365                    "Storage" => {
8366                        obj.storage.get_or_insert(vec![]).extend(
8367                            ValidStorageOptionsListDeserializer::deserialize("Storage", stack)?,
8368                        );
8369                    }
8370                    _ => skip_tree(stack),
8371                }
8372                Ok(())
8373            },
8374        )
8375    }
8376}
8377/// <p>Information about valid modifications that you can make to your DB instance.</p> <p>Contains the result of a successful call to the <a>DescribeValidDBInstanceModifications</a> action.</p>
8378#[derive(Clone, Debug, Default, PartialEq)]
8379#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8380pub struct ValidStorageOptions {
8381    /// <p>The valid range of Provisioned IOPS to gibibytes of storage multiplier. For example, 3-10, which means that provisioned IOPS can be between 3 and 10 times storage.</p>
8382    pub iops_to_storage_ratio: Option<Vec<DoubleRange>>,
8383    /// <p>The valid range of provisioned IOPS. For example, 1000-20000.</p>
8384    pub provisioned_iops: Option<Vec<Range>>,
8385    /// <p>The valid range of storage in gibibytes. For example, 100 to 16384.</p>
8386    pub storage_size: Option<Vec<Range>>,
8387    /// <p>The valid storage types for your DB instance. For example, gp2, io1.</p>
8388    pub storage_type: Option<String>,
8389}
8390
8391#[allow(dead_code)]
8392struct ValidStorageOptionsDeserializer;
8393impl ValidStorageOptionsDeserializer {
8394    #[allow(dead_code, unused_variables)]
8395    fn deserialize<T: Peek + Next>(
8396        tag_name: &str,
8397        stack: &mut T,
8398    ) -> Result<ValidStorageOptions, XmlParseError> {
8399        deserialize_elements::<_, ValidStorageOptions, _>(tag_name, stack, |name, stack, obj| {
8400            match name {
8401                "IopsToStorageRatio" => {
8402                    obj.iops_to_storage_ratio.get_or_insert(vec![]).extend(
8403                        DoubleRangeListDeserializer::deserialize("IopsToStorageRatio", stack)?,
8404                    );
8405                }
8406                "ProvisionedIops" => {
8407                    obj.provisioned_iops.get_or_insert(vec![]).extend(
8408                        RangeListDeserializer::deserialize("ProvisionedIops", stack)?,
8409                    );
8410                }
8411                "StorageSize" => {
8412                    obj.storage_size
8413                        .get_or_insert(vec![])
8414                        .extend(RangeListDeserializer::deserialize("StorageSize", stack)?);
8415                }
8416                "StorageType" => {
8417                    obj.storage_type = Some(StringDeserializer::deserialize("StorageType", stack)?);
8418                }
8419                _ => skip_tree(stack),
8420            }
8421            Ok(())
8422        })
8423    }
8424}
8425#[allow(dead_code)]
8426struct ValidStorageOptionsListDeserializer;
8427impl ValidStorageOptionsListDeserializer {
8428    #[allow(dead_code, unused_variables)]
8429    fn deserialize<T: Peek + Next>(
8430        tag_name: &str,
8431        stack: &mut T,
8432    ) -> Result<Vec<ValidStorageOptions>, XmlParseError> {
8433        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
8434            if name == "ValidStorageOptions" {
8435                obj.push(ValidStorageOptionsDeserializer::deserialize(
8436                    "ValidStorageOptions",
8437                    stack,
8438                )?);
8439            } else {
8440                skip_tree(stack);
8441            }
8442            Ok(())
8443        })
8444    }
8445}
8446#[allow(dead_code)]
8447struct ValidUpgradeTargetListDeserializer;
8448impl ValidUpgradeTargetListDeserializer {
8449    #[allow(dead_code, unused_variables)]
8450    fn deserialize<T: Peek + Next>(
8451        tag_name: &str,
8452        stack: &mut T,
8453    ) -> Result<Vec<UpgradeTarget>, XmlParseError> {
8454        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
8455            if name == "UpgradeTarget" {
8456                obj.push(UpgradeTargetDeserializer::deserialize(
8457                    "UpgradeTarget",
8458                    stack,
8459                )?);
8460            } else {
8461                skip_tree(stack);
8462            }
8463            Ok(())
8464        })
8465    }
8466}
8467
8468/// Serialize `VpcSecurityGroupIdList` contents to a `SignedRequest`.
8469struct VpcSecurityGroupIdListSerializer;
8470impl VpcSecurityGroupIdListSerializer {
8471    fn serialize(params: &mut Params, name: &str, obj: &Vec<String>) {
8472        for (index, obj) in obj.iter().enumerate() {
8473            let key = format!("{}.member.{}", name, index + 1);
8474            params.put(&key, &obj);
8475        }
8476    }
8477}
8478
8479/// <p>This data type is used as a response element for queries on VPC security group membership.</p>
8480#[derive(Clone, Debug, Default, PartialEq)]
8481#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
8482pub struct VpcSecurityGroupMembership {
8483    /// <p>The status of the VPC security group.</p>
8484    pub status: Option<String>,
8485    /// <p>The name of the VPC security group.</p>
8486    pub vpc_security_group_id: Option<String>,
8487}
8488
8489#[allow(dead_code)]
8490struct VpcSecurityGroupMembershipDeserializer;
8491impl VpcSecurityGroupMembershipDeserializer {
8492    #[allow(dead_code, unused_variables)]
8493    fn deserialize<T: Peek + Next>(
8494        tag_name: &str,
8495        stack: &mut T,
8496    ) -> Result<VpcSecurityGroupMembership, XmlParseError> {
8497        deserialize_elements::<_, VpcSecurityGroupMembership, _>(
8498            tag_name,
8499            stack,
8500            |name, stack, obj| {
8501                match name {
8502                    "Status" => {
8503                        obj.status = Some(StringDeserializer::deserialize("Status", stack)?);
8504                    }
8505                    "VpcSecurityGroupId" => {
8506                        obj.vpc_security_group_id = Some(StringDeserializer::deserialize(
8507                            "VpcSecurityGroupId",
8508                            stack,
8509                        )?);
8510                    }
8511                    _ => skip_tree(stack),
8512                }
8513                Ok(())
8514            },
8515        )
8516    }
8517}
8518#[allow(dead_code)]
8519struct VpcSecurityGroupMembershipListDeserializer;
8520impl VpcSecurityGroupMembershipListDeserializer {
8521    #[allow(dead_code, unused_variables)]
8522    fn deserialize<T: Peek + Next>(
8523        tag_name: &str,
8524        stack: &mut T,
8525    ) -> Result<Vec<VpcSecurityGroupMembership>, XmlParseError> {
8526        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
8527            if name == "VpcSecurityGroupMembership" {
8528                obj.push(VpcSecurityGroupMembershipDeserializer::deserialize(
8529                    "VpcSecurityGroupMembership",
8530                    stack,
8531                )?);
8532            } else {
8533                skip_tree(stack);
8534            }
8535            Ok(())
8536        })
8537    }
8538}
8539/// Errors returned by AddRoleToDBCluster
8540#[derive(Debug, PartialEq)]
8541pub enum AddRoleToDBClusterError {
8542    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
8543    DBClusterNotFoundFault(String),
8544    /// <p>The specified IAM role Amazon Resource Name (ARN) is already associated with the specified DB cluster.</p>
8545    DBClusterRoleAlreadyExistsFault(String),
8546    /// <p>You have exceeded the maximum number of IAM roles that can be associated with the specified DB cluster.</p>
8547    DBClusterRoleQuotaExceededFault(String),
8548    /// <p>The DB cluster is not in a valid state.</p>
8549    InvalidDBClusterStateFault(String),
8550}
8551
8552impl AddRoleToDBClusterError {
8553    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AddRoleToDBClusterError> {
8554        {
8555            let reader = EventReader::new(res.body.as_ref());
8556            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8557            find_start_element(&mut stack);
8558            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8559                match &parsed_error.code[..] {
8560                    "DBClusterNotFoundFault" => {
8561                        return RusotoError::Service(
8562                            AddRoleToDBClusterError::DBClusterNotFoundFault(parsed_error.message),
8563                        )
8564                    }
8565                    "DBClusterRoleAlreadyExists" => {
8566                        return RusotoError::Service(
8567                            AddRoleToDBClusterError::DBClusterRoleAlreadyExistsFault(
8568                                parsed_error.message,
8569                            ),
8570                        )
8571                    }
8572                    "DBClusterRoleQuotaExceeded" => {
8573                        return RusotoError::Service(
8574                            AddRoleToDBClusterError::DBClusterRoleQuotaExceededFault(
8575                                parsed_error.message,
8576                            ),
8577                        )
8578                    }
8579                    "InvalidDBClusterStateFault" => {
8580                        return RusotoError::Service(
8581                            AddRoleToDBClusterError::InvalidDBClusterStateFault(
8582                                parsed_error.message,
8583                            ),
8584                        )
8585                    }
8586                    _ => {}
8587                }
8588            }
8589        }
8590        RusotoError::Unknown(res)
8591    }
8592
8593    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8594    where
8595        T: Peek + Next,
8596    {
8597        xml_util::start_element("ErrorResponse", stack)?;
8598        XmlErrorDeserializer::deserialize("Error", stack)
8599    }
8600}
8601impl fmt::Display for AddRoleToDBClusterError {
8602    #[allow(unused_variables)]
8603    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8604        match *self {
8605            AddRoleToDBClusterError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
8606            AddRoleToDBClusterError::DBClusterRoleAlreadyExistsFault(ref cause) => {
8607                write!(f, "{}", cause)
8608            }
8609            AddRoleToDBClusterError::DBClusterRoleQuotaExceededFault(ref cause) => {
8610                write!(f, "{}", cause)
8611            }
8612            AddRoleToDBClusterError::InvalidDBClusterStateFault(ref cause) => {
8613                write!(f, "{}", cause)
8614            }
8615        }
8616    }
8617}
8618impl Error for AddRoleToDBClusterError {}
8619/// Errors returned by AddSourceIdentifierToSubscription
8620#[derive(Debug, PartialEq)]
8621pub enum AddSourceIdentifierToSubscriptionError {
8622    /// <p>The source could not be found.</p>
8623    SourceNotFoundFault(String),
8624    /// <p>The designated subscription could not be found.</p>
8625    SubscriptionNotFoundFault(String),
8626}
8627
8628impl AddSourceIdentifierToSubscriptionError {
8629    pub fn from_response(
8630        res: BufferedHttpResponse,
8631    ) -> RusotoError<AddSourceIdentifierToSubscriptionError> {
8632        {
8633            let reader = EventReader::new(res.body.as_ref());
8634            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8635            find_start_element(&mut stack);
8636            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8637                match &parsed_error.code[..] {
8638                    "SourceNotFound" => {
8639                        return RusotoError::Service(
8640                            AddSourceIdentifierToSubscriptionError::SourceNotFoundFault(
8641                                parsed_error.message,
8642                            ),
8643                        )
8644                    }
8645                    "SubscriptionNotFound" => {
8646                        return RusotoError::Service(
8647                            AddSourceIdentifierToSubscriptionError::SubscriptionNotFoundFault(
8648                                parsed_error.message,
8649                            ),
8650                        )
8651                    }
8652                    _ => {}
8653                }
8654            }
8655        }
8656        RusotoError::Unknown(res)
8657    }
8658
8659    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8660    where
8661        T: Peek + Next,
8662    {
8663        xml_util::start_element("ErrorResponse", stack)?;
8664        XmlErrorDeserializer::deserialize("Error", stack)
8665    }
8666}
8667impl fmt::Display for AddSourceIdentifierToSubscriptionError {
8668    #[allow(unused_variables)]
8669    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8670        match *self {
8671            AddSourceIdentifierToSubscriptionError::SourceNotFoundFault(ref cause) => {
8672                write!(f, "{}", cause)
8673            }
8674            AddSourceIdentifierToSubscriptionError::SubscriptionNotFoundFault(ref cause) => {
8675                write!(f, "{}", cause)
8676            }
8677        }
8678    }
8679}
8680impl Error for AddSourceIdentifierToSubscriptionError {}
8681/// Errors returned by AddTagsToResource
8682#[derive(Debug, PartialEq)]
8683pub enum AddTagsToResourceError {
8684    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
8685    DBClusterNotFoundFault(String),
8686    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
8687    DBInstanceNotFoundFault(String),
8688    /// <p> <i>DBSnapshotIdentifier</i> does not refer to an existing DB snapshot.</p>
8689    DBSnapshotNotFoundFault(String),
8690}
8691
8692impl AddTagsToResourceError {
8693    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AddTagsToResourceError> {
8694        {
8695            let reader = EventReader::new(res.body.as_ref());
8696            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8697            find_start_element(&mut stack);
8698            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8699                match &parsed_error.code[..] {
8700                    "DBClusterNotFoundFault" => {
8701                        return RusotoError::Service(
8702                            AddTagsToResourceError::DBClusterNotFoundFault(parsed_error.message),
8703                        )
8704                    }
8705                    "DBInstanceNotFound" => {
8706                        return RusotoError::Service(
8707                            AddTagsToResourceError::DBInstanceNotFoundFault(parsed_error.message),
8708                        )
8709                    }
8710                    "DBSnapshotNotFound" => {
8711                        return RusotoError::Service(
8712                            AddTagsToResourceError::DBSnapshotNotFoundFault(parsed_error.message),
8713                        )
8714                    }
8715                    _ => {}
8716                }
8717            }
8718        }
8719        RusotoError::Unknown(res)
8720    }
8721
8722    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8723    where
8724        T: Peek + Next,
8725    {
8726        xml_util::start_element("ErrorResponse", stack)?;
8727        XmlErrorDeserializer::deserialize("Error", stack)
8728    }
8729}
8730impl fmt::Display for AddTagsToResourceError {
8731    #[allow(unused_variables)]
8732    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8733        match *self {
8734            AddTagsToResourceError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
8735            AddTagsToResourceError::DBInstanceNotFoundFault(ref cause) => write!(f, "{}", cause),
8736            AddTagsToResourceError::DBSnapshotNotFoundFault(ref cause) => write!(f, "{}", cause),
8737        }
8738    }
8739}
8740impl Error for AddTagsToResourceError {}
8741/// Errors returned by ApplyPendingMaintenanceAction
8742#[derive(Debug, PartialEq)]
8743pub enum ApplyPendingMaintenanceActionError {
8744    /// <p>The specified resource ID was not found.</p>
8745    ResourceNotFoundFault(String),
8746}
8747
8748impl ApplyPendingMaintenanceActionError {
8749    pub fn from_response(
8750        res: BufferedHttpResponse,
8751    ) -> RusotoError<ApplyPendingMaintenanceActionError> {
8752        {
8753            let reader = EventReader::new(res.body.as_ref());
8754            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8755            find_start_element(&mut stack);
8756            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8757                match &parsed_error.code[..] {
8758                    "ResourceNotFoundFault" => {
8759                        return RusotoError::Service(
8760                            ApplyPendingMaintenanceActionError::ResourceNotFoundFault(
8761                                parsed_error.message,
8762                            ),
8763                        )
8764                    }
8765                    _ => {}
8766                }
8767            }
8768        }
8769        RusotoError::Unknown(res)
8770    }
8771
8772    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8773    where
8774        T: Peek + Next,
8775    {
8776        xml_util::start_element("ErrorResponse", stack)?;
8777        XmlErrorDeserializer::deserialize("Error", stack)
8778    }
8779}
8780impl fmt::Display for ApplyPendingMaintenanceActionError {
8781    #[allow(unused_variables)]
8782    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8783        match *self {
8784            ApplyPendingMaintenanceActionError::ResourceNotFoundFault(ref cause) => {
8785                write!(f, "{}", cause)
8786            }
8787        }
8788    }
8789}
8790impl Error for ApplyPendingMaintenanceActionError {}
8791/// Errors returned by CopyDBClusterParameterGroup
8792#[derive(Debug, PartialEq)]
8793pub enum CopyDBClusterParameterGroupError {
8794    /// <p>A DB parameter group with the same name exists.</p>
8795    DBParameterGroupAlreadyExistsFault(String),
8796    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
8797    DBParameterGroupNotFoundFault(String),
8798    /// <p>Request would result in user exceeding the allowed number of DB parameter groups.</p>
8799    DBParameterGroupQuotaExceededFault(String),
8800}
8801
8802impl CopyDBClusterParameterGroupError {
8803    pub fn from_response(
8804        res: BufferedHttpResponse,
8805    ) -> RusotoError<CopyDBClusterParameterGroupError> {
8806        {
8807            let reader = EventReader::new(res.body.as_ref());
8808            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8809            find_start_element(&mut stack);
8810            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8811                match &parsed_error.code[..] {
8812                    "DBParameterGroupAlreadyExists" => {
8813                        return RusotoError::Service(
8814                            CopyDBClusterParameterGroupError::DBParameterGroupAlreadyExistsFault(
8815                                parsed_error.message,
8816                            ),
8817                        )
8818                    }
8819                    "DBParameterGroupNotFound" => {
8820                        return RusotoError::Service(
8821                            CopyDBClusterParameterGroupError::DBParameterGroupNotFoundFault(
8822                                parsed_error.message,
8823                            ),
8824                        )
8825                    }
8826                    "DBParameterGroupQuotaExceeded" => {
8827                        return RusotoError::Service(
8828                            CopyDBClusterParameterGroupError::DBParameterGroupQuotaExceededFault(
8829                                parsed_error.message,
8830                            ),
8831                        )
8832                    }
8833                    _ => {}
8834                }
8835            }
8836        }
8837        RusotoError::Unknown(res)
8838    }
8839
8840    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8841    where
8842        T: Peek + Next,
8843    {
8844        xml_util::start_element("ErrorResponse", stack)?;
8845        XmlErrorDeserializer::deserialize("Error", stack)
8846    }
8847}
8848impl fmt::Display for CopyDBClusterParameterGroupError {
8849    #[allow(unused_variables)]
8850    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8851        match *self {
8852            CopyDBClusterParameterGroupError::DBParameterGroupAlreadyExistsFault(ref cause) => {
8853                write!(f, "{}", cause)
8854            }
8855            CopyDBClusterParameterGroupError::DBParameterGroupNotFoundFault(ref cause) => {
8856                write!(f, "{}", cause)
8857            }
8858            CopyDBClusterParameterGroupError::DBParameterGroupQuotaExceededFault(ref cause) => {
8859                write!(f, "{}", cause)
8860            }
8861        }
8862    }
8863}
8864impl Error for CopyDBClusterParameterGroupError {}
8865/// Errors returned by CopyDBClusterSnapshot
8866#[derive(Debug, PartialEq)]
8867pub enum CopyDBClusterSnapshotError {
8868    /// <p>User already has a DB cluster snapshot with the given identifier.</p>
8869    DBClusterSnapshotAlreadyExistsFault(String),
8870    /// <p> <i>DBClusterSnapshotIdentifier</i> does not refer to an existing DB cluster snapshot.</p>
8871    DBClusterSnapshotNotFoundFault(String),
8872    /// <p>The supplied value is not a valid DB cluster snapshot state.</p>
8873    InvalidDBClusterSnapshotStateFault(String),
8874    /// <p>The DB cluster is not in a valid state.</p>
8875    InvalidDBClusterStateFault(String),
8876    /// <p>Error accessing KMS key.</p>
8877    KMSKeyNotAccessibleFault(String),
8878    /// <p>Request would result in user exceeding the allowed number of DB snapshots.</p>
8879    SnapshotQuotaExceededFault(String),
8880}
8881
8882impl CopyDBClusterSnapshotError {
8883    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CopyDBClusterSnapshotError> {
8884        {
8885            let reader = EventReader::new(res.body.as_ref());
8886            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8887            find_start_element(&mut stack);
8888            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8889                match &parsed_error.code[..] {
8890                    "DBClusterSnapshotAlreadyExistsFault" => {
8891                        return RusotoError::Service(
8892                            CopyDBClusterSnapshotError::DBClusterSnapshotAlreadyExistsFault(
8893                                parsed_error.message,
8894                            ),
8895                        )
8896                    }
8897                    "DBClusterSnapshotNotFoundFault" => {
8898                        return RusotoError::Service(
8899                            CopyDBClusterSnapshotError::DBClusterSnapshotNotFoundFault(
8900                                parsed_error.message,
8901                            ),
8902                        )
8903                    }
8904                    "InvalidDBClusterSnapshotStateFault" => {
8905                        return RusotoError::Service(
8906                            CopyDBClusterSnapshotError::InvalidDBClusterSnapshotStateFault(
8907                                parsed_error.message,
8908                            ),
8909                        )
8910                    }
8911                    "InvalidDBClusterStateFault" => {
8912                        return RusotoError::Service(
8913                            CopyDBClusterSnapshotError::InvalidDBClusterStateFault(
8914                                parsed_error.message,
8915                            ),
8916                        )
8917                    }
8918                    "KMSKeyNotAccessibleFault" => {
8919                        return RusotoError::Service(
8920                            CopyDBClusterSnapshotError::KMSKeyNotAccessibleFault(
8921                                parsed_error.message,
8922                            ),
8923                        )
8924                    }
8925                    "SnapshotQuotaExceeded" => {
8926                        return RusotoError::Service(
8927                            CopyDBClusterSnapshotError::SnapshotQuotaExceededFault(
8928                                parsed_error.message,
8929                            ),
8930                        )
8931                    }
8932                    _ => {}
8933                }
8934            }
8935        }
8936        RusotoError::Unknown(res)
8937    }
8938
8939    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8940    where
8941        T: Peek + Next,
8942    {
8943        xml_util::start_element("ErrorResponse", stack)?;
8944        XmlErrorDeserializer::deserialize("Error", stack)
8945    }
8946}
8947impl fmt::Display for CopyDBClusterSnapshotError {
8948    #[allow(unused_variables)]
8949    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8950        match *self {
8951            CopyDBClusterSnapshotError::DBClusterSnapshotAlreadyExistsFault(ref cause) => {
8952                write!(f, "{}", cause)
8953            }
8954            CopyDBClusterSnapshotError::DBClusterSnapshotNotFoundFault(ref cause) => {
8955                write!(f, "{}", cause)
8956            }
8957            CopyDBClusterSnapshotError::InvalidDBClusterSnapshotStateFault(ref cause) => {
8958                write!(f, "{}", cause)
8959            }
8960            CopyDBClusterSnapshotError::InvalidDBClusterStateFault(ref cause) => {
8961                write!(f, "{}", cause)
8962            }
8963            CopyDBClusterSnapshotError::KMSKeyNotAccessibleFault(ref cause) => {
8964                write!(f, "{}", cause)
8965            }
8966            CopyDBClusterSnapshotError::SnapshotQuotaExceededFault(ref cause) => {
8967                write!(f, "{}", cause)
8968            }
8969        }
8970    }
8971}
8972impl Error for CopyDBClusterSnapshotError {}
8973/// Errors returned by CopyDBParameterGroup
8974#[derive(Debug, PartialEq)]
8975pub enum CopyDBParameterGroupError {
8976    /// <p>A DB parameter group with the same name exists.</p>
8977    DBParameterGroupAlreadyExistsFault(String),
8978    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
8979    DBParameterGroupNotFoundFault(String),
8980    /// <p>Request would result in user exceeding the allowed number of DB parameter groups.</p>
8981    DBParameterGroupQuotaExceededFault(String),
8982}
8983
8984impl CopyDBParameterGroupError {
8985    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CopyDBParameterGroupError> {
8986        {
8987            let reader = EventReader::new(res.body.as_ref());
8988            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8989            find_start_element(&mut stack);
8990            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8991                match &parsed_error.code[..] {
8992                    "DBParameterGroupAlreadyExists" => {
8993                        return RusotoError::Service(
8994                            CopyDBParameterGroupError::DBParameterGroupAlreadyExistsFault(
8995                                parsed_error.message,
8996                            ),
8997                        )
8998                    }
8999                    "DBParameterGroupNotFound" => {
9000                        return RusotoError::Service(
9001                            CopyDBParameterGroupError::DBParameterGroupNotFoundFault(
9002                                parsed_error.message,
9003                            ),
9004                        )
9005                    }
9006                    "DBParameterGroupQuotaExceeded" => {
9007                        return RusotoError::Service(
9008                            CopyDBParameterGroupError::DBParameterGroupQuotaExceededFault(
9009                                parsed_error.message,
9010                            ),
9011                        )
9012                    }
9013                    _ => {}
9014                }
9015            }
9016        }
9017        RusotoError::Unknown(res)
9018    }
9019
9020    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9021    where
9022        T: Peek + Next,
9023    {
9024        xml_util::start_element("ErrorResponse", stack)?;
9025        XmlErrorDeserializer::deserialize("Error", stack)
9026    }
9027}
9028impl fmt::Display for CopyDBParameterGroupError {
9029    #[allow(unused_variables)]
9030    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9031        match *self {
9032            CopyDBParameterGroupError::DBParameterGroupAlreadyExistsFault(ref cause) => {
9033                write!(f, "{}", cause)
9034            }
9035            CopyDBParameterGroupError::DBParameterGroupNotFoundFault(ref cause) => {
9036                write!(f, "{}", cause)
9037            }
9038            CopyDBParameterGroupError::DBParameterGroupQuotaExceededFault(ref cause) => {
9039                write!(f, "{}", cause)
9040            }
9041        }
9042    }
9043}
9044impl Error for CopyDBParameterGroupError {}
9045/// Errors returned by CreateDBCluster
9046#[derive(Debug, PartialEq)]
9047pub enum CreateDBClusterError {
9048    /// <p>User already has a DB cluster with the given identifier.</p>
9049    DBClusterAlreadyExistsFault(String),
9050    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
9051    DBClusterNotFoundFault(String),
9052    /// <p> <i>DBClusterParameterGroupName</i> does not refer to an existing DB Cluster parameter group.</p>
9053    DBClusterParameterGroupNotFoundFault(String),
9054    /// <p>User attempted to create a new DB cluster and the user has already reached the maximum allowed DB cluster quota.</p>
9055    DBClusterQuotaExceededFault(String),
9056    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
9057    DBInstanceNotFoundFault(String),
9058    /// <p>Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.</p>
9059    DBSubnetGroupDoesNotCoverEnoughAZs(String),
9060    /// <p> <i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
9061    DBSubnetGroupNotFoundFault(String),
9062    /// <p>There is insufficient storage available for the current action. You may be able to resolve this error by updating your subnet group to use different Availability Zones that have more storage available.</p>
9063    InsufficientStorageClusterCapacityFault(String),
9064    /// <p>The DB cluster is not in a valid state.</p>
9065    InvalidDBClusterStateFault(String),
9066    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
9067    InvalidDBInstanceStateFault(String),
9068    /// <p>The DB subnet group cannot be deleted because it is in use.</p>
9069    InvalidDBSubnetGroupStateFault(String),
9070    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
9071    InvalidSubnet(String),
9072    /// <p>DB subnet group does not cover all Availability Zones after it is created because users' change.</p>
9073    InvalidVPCNetworkStateFault(String),
9074    /// <p>Error accessing KMS key.</p>
9075    KMSKeyNotAccessibleFault(String),
9076    /// <p>Request would result in user exceeding the allowed amount of storage available across all DB instances.</p>
9077    StorageQuotaExceededFault(String),
9078}
9079
9080impl CreateDBClusterError {
9081    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDBClusterError> {
9082        {
9083            let reader = EventReader::new(res.body.as_ref());
9084            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9085            find_start_element(&mut stack);
9086            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9087                match &parsed_error.code[..] {
9088                    "DBClusterAlreadyExistsFault" => {
9089                        return RusotoError::Service(
9090                            CreateDBClusterError::DBClusterAlreadyExistsFault(parsed_error.message),
9091                        )
9092                    }
9093                    "DBClusterNotFoundFault" => {
9094                        return RusotoError::Service(CreateDBClusterError::DBClusterNotFoundFault(
9095                            parsed_error.message,
9096                        ))
9097                    }
9098                    "DBClusterParameterGroupNotFound" => {
9099                        return RusotoError::Service(
9100                            CreateDBClusterError::DBClusterParameterGroupNotFoundFault(
9101                                parsed_error.message,
9102                            ),
9103                        )
9104                    }
9105                    "DBClusterQuotaExceededFault" => {
9106                        return RusotoError::Service(
9107                            CreateDBClusterError::DBClusterQuotaExceededFault(parsed_error.message),
9108                        )
9109                    }
9110                    "DBInstanceNotFound" => {
9111                        return RusotoError::Service(CreateDBClusterError::DBInstanceNotFoundFault(
9112                            parsed_error.message,
9113                        ))
9114                    }
9115                    "DBSubnetGroupDoesNotCoverEnoughAZs" => {
9116                        return RusotoError::Service(
9117                            CreateDBClusterError::DBSubnetGroupDoesNotCoverEnoughAZs(
9118                                parsed_error.message,
9119                            ),
9120                        )
9121                    }
9122                    "DBSubnetGroupNotFoundFault" => {
9123                        return RusotoError::Service(
9124                            CreateDBClusterError::DBSubnetGroupNotFoundFault(parsed_error.message),
9125                        )
9126                    }
9127                    "InsufficientStorageClusterCapacity" => {
9128                        return RusotoError::Service(
9129                            CreateDBClusterError::InsufficientStorageClusterCapacityFault(
9130                                parsed_error.message,
9131                            ),
9132                        )
9133                    }
9134                    "InvalidDBClusterStateFault" => {
9135                        return RusotoError::Service(
9136                            CreateDBClusterError::InvalidDBClusterStateFault(parsed_error.message),
9137                        )
9138                    }
9139                    "InvalidDBInstanceState" => {
9140                        return RusotoError::Service(
9141                            CreateDBClusterError::InvalidDBInstanceStateFault(parsed_error.message),
9142                        )
9143                    }
9144                    "InvalidDBSubnetGroupStateFault" => {
9145                        return RusotoError::Service(
9146                            CreateDBClusterError::InvalidDBSubnetGroupStateFault(
9147                                parsed_error.message,
9148                            ),
9149                        )
9150                    }
9151                    "InvalidSubnet" => {
9152                        return RusotoError::Service(CreateDBClusterError::InvalidSubnet(
9153                            parsed_error.message,
9154                        ))
9155                    }
9156                    "InvalidVPCNetworkStateFault" => {
9157                        return RusotoError::Service(
9158                            CreateDBClusterError::InvalidVPCNetworkStateFault(parsed_error.message),
9159                        )
9160                    }
9161                    "KMSKeyNotAccessibleFault" => {
9162                        return RusotoError::Service(
9163                            CreateDBClusterError::KMSKeyNotAccessibleFault(parsed_error.message),
9164                        )
9165                    }
9166                    "StorageQuotaExceeded" => {
9167                        return RusotoError::Service(
9168                            CreateDBClusterError::StorageQuotaExceededFault(parsed_error.message),
9169                        )
9170                    }
9171                    _ => {}
9172                }
9173            }
9174        }
9175        RusotoError::Unknown(res)
9176    }
9177
9178    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9179    where
9180        T: Peek + Next,
9181    {
9182        xml_util::start_element("ErrorResponse", stack)?;
9183        XmlErrorDeserializer::deserialize("Error", stack)
9184    }
9185}
9186impl fmt::Display for CreateDBClusterError {
9187    #[allow(unused_variables)]
9188    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9189        match *self {
9190            CreateDBClusterError::DBClusterAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
9191            CreateDBClusterError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
9192            CreateDBClusterError::DBClusterParameterGroupNotFoundFault(ref cause) => {
9193                write!(f, "{}", cause)
9194            }
9195            CreateDBClusterError::DBClusterQuotaExceededFault(ref cause) => write!(f, "{}", cause),
9196            CreateDBClusterError::DBInstanceNotFoundFault(ref cause) => write!(f, "{}", cause),
9197            CreateDBClusterError::DBSubnetGroupDoesNotCoverEnoughAZs(ref cause) => {
9198                write!(f, "{}", cause)
9199            }
9200            CreateDBClusterError::DBSubnetGroupNotFoundFault(ref cause) => write!(f, "{}", cause),
9201            CreateDBClusterError::InsufficientStorageClusterCapacityFault(ref cause) => {
9202                write!(f, "{}", cause)
9203            }
9204            CreateDBClusterError::InvalidDBClusterStateFault(ref cause) => write!(f, "{}", cause),
9205            CreateDBClusterError::InvalidDBInstanceStateFault(ref cause) => write!(f, "{}", cause),
9206            CreateDBClusterError::InvalidDBSubnetGroupStateFault(ref cause) => {
9207                write!(f, "{}", cause)
9208            }
9209            CreateDBClusterError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
9210            CreateDBClusterError::InvalidVPCNetworkStateFault(ref cause) => write!(f, "{}", cause),
9211            CreateDBClusterError::KMSKeyNotAccessibleFault(ref cause) => write!(f, "{}", cause),
9212            CreateDBClusterError::StorageQuotaExceededFault(ref cause) => write!(f, "{}", cause),
9213        }
9214    }
9215}
9216impl Error for CreateDBClusterError {}
9217/// Errors returned by CreateDBClusterParameterGroup
9218#[derive(Debug, PartialEq)]
9219pub enum CreateDBClusterParameterGroupError {
9220    /// <p>A DB parameter group with the same name exists.</p>
9221    DBParameterGroupAlreadyExistsFault(String),
9222    /// <p>Request would result in user exceeding the allowed number of DB parameter groups.</p>
9223    DBParameterGroupQuotaExceededFault(String),
9224}
9225
9226impl CreateDBClusterParameterGroupError {
9227    pub fn from_response(
9228        res: BufferedHttpResponse,
9229    ) -> RusotoError<CreateDBClusterParameterGroupError> {
9230        {
9231            let reader = EventReader::new(res.body.as_ref());
9232            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9233            find_start_element(&mut stack);
9234            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9235                match &parsed_error.code[..] {
9236                    "DBParameterGroupAlreadyExists" => {
9237                        return RusotoError::Service(
9238                            CreateDBClusterParameterGroupError::DBParameterGroupAlreadyExistsFault(
9239                                parsed_error.message,
9240                            ),
9241                        )
9242                    }
9243                    "DBParameterGroupQuotaExceeded" => {
9244                        return RusotoError::Service(
9245                            CreateDBClusterParameterGroupError::DBParameterGroupQuotaExceededFault(
9246                                parsed_error.message,
9247                            ),
9248                        )
9249                    }
9250                    _ => {}
9251                }
9252            }
9253        }
9254        RusotoError::Unknown(res)
9255    }
9256
9257    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9258    where
9259        T: Peek + Next,
9260    {
9261        xml_util::start_element("ErrorResponse", stack)?;
9262        XmlErrorDeserializer::deserialize("Error", stack)
9263    }
9264}
9265impl fmt::Display for CreateDBClusterParameterGroupError {
9266    #[allow(unused_variables)]
9267    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9268        match *self {
9269            CreateDBClusterParameterGroupError::DBParameterGroupAlreadyExistsFault(ref cause) => {
9270                write!(f, "{}", cause)
9271            }
9272            CreateDBClusterParameterGroupError::DBParameterGroupQuotaExceededFault(ref cause) => {
9273                write!(f, "{}", cause)
9274            }
9275        }
9276    }
9277}
9278impl Error for CreateDBClusterParameterGroupError {}
9279/// Errors returned by CreateDBClusterSnapshot
9280#[derive(Debug, PartialEq)]
9281pub enum CreateDBClusterSnapshotError {
9282    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
9283    DBClusterNotFoundFault(String),
9284    /// <p>User already has a DB cluster snapshot with the given identifier.</p>
9285    DBClusterSnapshotAlreadyExistsFault(String),
9286    /// <p>The supplied value is not a valid DB cluster snapshot state.</p>
9287    InvalidDBClusterSnapshotStateFault(String),
9288    /// <p>The DB cluster is not in a valid state.</p>
9289    InvalidDBClusterStateFault(String),
9290    /// <p>Request would result in user exceeding the allowed number of DB snapshots.</p>
9291    SnapshotQuotaExceededFault(String),
9292}
9293
9294impl CreateDBClusterSnapshotError {
9295    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDBClusterSnapshotError> {
9296        {
9297            let reader = EventReader::new(res.body.as_ref());
9298            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9299            find_start_element(&mut stack);
9300            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9301                match &parsed_error.code[..] {
9302                    "DBClusterNotFoundFault" => {
9303                        return RusotoError::Service(
9304                            CreateDBClusterSnapshotError::DBClusterNotFoundFault(
9305                                parsed_error.message,
9306                            ),
9307                        )
9308                    }
9309                    "DBClusterSnapshotAlreadyExistsFault" => {
9310                        return RusotoError::Service(
9311                            CreateDBClusterSnapshotError::DBClusterSnapshotAlreadyExistsFault(
9312                                parsed_error.message,
9313                            ),
9314                        )
9315                    }
9316                    "InvalidDBClusterSnapshotStateFault" => {
9317                        return RusotoError::Service(
9318                            CreateDBClusterSnapshotError::InvalidDBClusterSnapshotStateFault(
9319                                parsed_error.message,
9320                            ),
9321                        )
9322                    }
9323                    "InvalidDBClusterStateFault" => {
9324                        return RusotoError::Service(
9325                            CreateDBClusterSnapshotError::InvalidDBClusterStateFault(
9326                                parsed_error.message,
9327                            ),
9328                        )
9329                    }
9330                    "SnapshotQuotaExceeded" => {
9331                        return RusotoError::Service(
9332                            CreateDBClusterSnapshotError::SnapshotQuotaExceededFault(
9333                                parsed_error.message,
9334                            ),
9335                        )
9336                    }
9337                    _ => {}
9338                }
9339            }
9340        }
9341        RusotoError::Unknown(res)
9342    }
9343
9344    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9345    where
9346        T: Peek + Next,
9347    {
9348        xml_util::start_element("ErrorResponse", stack)?;
9349        XmlErrorDeserializer::deserialize("Error", stack)
9350    }
9351}
9352impl fmt::Display for CreateDBClusterSnapshotError {
9353    #[allow(unused_variables)]
9354    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9355        match *self {
9356            CreateDBClusterSnapshotError::DBClusterNotFoundFault(ref cause) => {
9357                write!(f, "{}", cause)
9358            }
9359            CreateDBClusterSnapshotError::DBClusterSnapshotAlreadyExistsFault(ref cause) => {
9360                write!(f, "{}", cause)
9361            }
9362            CreateDBClusterSnapshotError::InvalidDBClusterSnapshotStateFault(ref cause) => {
9363                write!(f, "{}", cause)
9364            }
9365            CreateDBClusterSnapshotError::InvalidDBClusterStateFault(ref cause) => {
9366                write!(f, "{}", cause)
9367            }
9368            CreateDBClusterSnapshotError::SnapshotQuotaExceededFault(ref cause) => {
9369                write!(f, "{}", cause)
9370            }
9371        }
9372    }
9373}
9374impl Error for CreateDBClusterSnapshotError {}
9375/// Errors returned by CreateDBInstance
9376#[derive(Debug, PartialEq)]
9377pub enum CreateDBInstanceError {
9378    /// <p>Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.</p> <p>Neptune may not also be authorized via IAM to perform necessary actions on your behalf.</p>
9379    AuthorizationNotFoundFault(String),
9380    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
9381    DBClusterNotFoundFault(String),
9382    /// <p>User already has a DB instance with the given identifier.</p>
9383    DBInstanceAlreadyExistsFault(String),
9384    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
9385    DBParameterGroupNotFoundFault(String),
9386    /// <p> <i>DBSecurityGroupName</i> does not refer to an existing DB security group.</p>
9387    DBSecurityGroupNotFoundFault(String),
9388    /// <p>Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.</p>
9389    DBSubnetGroupDoesNotCoverEnoughAZs(String),
9390    /// <p> <i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
9391    DBSubnetGroupNotFoundFault(String),
9392    /// <p> <i>Domain</i> does not refer to an existing Active Directory Domain.</p>
9393    DomainNotFoundFault(String),
9394    /// <p>Request would result in user exceeding the allowed number of DB instances.</p>
9395    InstanceQuotaExceededFault(String),
9396    /// <p>Specified DB instance class is not available in the specified Availability Zone.</p>
9397    InsufficientDBInstanceCapacityFault(String),
9398    /// <p>The DB cluster is not in a valid state.</p>
9399    InvalidDBClusterStateFault(String),
9400    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
9401    InvalidSubnet(String),
9402    /// <p>DB subnet group does not cover all Availability Zones after it is created because users' change.</p>
9403    InvalidVPCNetworkStateFault(String),
9404    /// <p>Error accessing KMS key.</p>
9405    KMSKeyNotAccessibleFault(String),
9406    /// <p>The designated option group could not be found.</p>
9407    OptionGroupNotFoundFault(String),
9408    /// <p>Provisioned IOPS not available in the specified Availability Zone.</p>
9409    ProvisionedIopsNotAvailableInAZFault(String),
9410    /// <p>Request would result in user exceeding the allowed amount of storage available across all DB instances.</p>
9411    StorageQuotaExceededFault(String),
9412    /// <p> <i>StorageType</i> specified cannot be associated with the DB Instance.</p>
9413    StorageTypeNotSupportedFault(String),
9414}
9415
9416impl CreateDBInstanceError {
9417    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDBInstanceError> {
9418        {
9419            let reader = EventReader::new(res.body.as_ref());
9420            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9421            find_start_element(&mut stack);
9422            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9423                match &parsed_error.code[..] {
9424                    "AuthorizationNotFound" => {
9425                        return RusotoError::Service(
9426                            CreateDBInstanceError::AuthorizationNotFoundFault(parsed_error.message),
9427                        )
9428                    }
9429                    "DBClusterNotFoundFault" => {
9430                        return RusotoError::Service(CreateDBInstanceError::DBClusterNotFoundFault(
9431                            parsed_error.message,
9432                        ))
9433                    }
9434                    "DBInstanceAlreadyExists" => {
9435                        return RusotoError::Service(
9436                            CreateDBInstanceError::DBInstanceAlreadyExistsFault(
9437                                parsed_error.message,
9438                            ),
9439                        )
9440                    }
9441                    "DBParameterGroupNotFound" => {
9442                        return RusotoError::Service(
9443                            CreateDBInstanceError::DBParameterGroupNotFoundFault(
9444                                parsed_error.message,
9445                            ),
9446                        )
9447                    }
9448                    "DBSecurityGroupNotFound" => {
9449                        return RusotoError::Service(
9450                            CreateDBInstanceError::DBSecurityGroupNotFoundFault(
9451                                parsed_error.message,
9452                            ),
9453                        )
9454                    }
9455                    "DBSubnetGroupDoesNotCoverEnoughAZs" => {
9456                        return RusotoError::Service(
9457                            CreateDBInstanceError::DBSubnetGroupDoesNotCoverEnoughAZs(
9458                                parsed_error.message,
9459                            ),
9460                        )
9461                    }
9462                    "DBSubnetGroupNotFoundFault" => {
9463                        return RusotoError::Service(
9464                            CreateDBInstanceError::DBSubnetGroupNotFoundFault(parsed_error.message),
9465                        )
9466                    }
9467                    "DomainNotFoundFault" => {
9468                        return RusotoError::Service(CreateDBInstanceError::DomainNotFoundFault(
9469                            parsed_error.message,
9470                        ))
9471                    }
9472                    "InstanceQuotaExceeded" => {
9473                        return RusotoError::Service(
9474                            CreateDBInstanceError::InstanceQuotaExceededFault(parsed_error.message),
9475                        )
9476                    }
9477                    "InsufficientDBInstanceCapacity" => {
9478                        return RusotoError::Service(
9479                            CreateDBInstanceError::InsufficientDBInstanceCapacityFault(
9480                                parsed_error.message,
9481                            ),
9482                        )
9483                    }
9484                    "InvalidDBClusterStateFault" => {
9485                        return RusotoError::Service(
9486                            CreateDBInstanceError::InvalidDBClusterStateFault(parsed_error.message),
9487                        )
9488                    }
9489                    "InvalidSubnet" => {
9490                        return RusotoError::Service(CreateDBInstanceError::InvalidSubnet(
9491                            parsed_error.message,
9492                        ))
9493                    }
9494                    "InvalidVPCNetworkStateFault" => {
9495                        return RusotoError::Service(
9496                            CreateDBInstanceError::InvalidVPCNetworkStateFault(
9497                                parsed_error.message,
9498                            ),
9499                        )
9500                    }
9501                    "KMSKeyNotAccessibleFault" => {
9502                        return RusotoError::Service(
9503                            CreateDBInstanceError::KMSKeyNotAccessibleFault(parsed_error.message),
9504                        )
9505                    }
9506                    "OptionGroupNotFoundFault" => {
9507                        return RusotoError::Service(
9508                            CreateDBInstanceError::OptionGroupNotFoundFault(parsed_error.message),
9509                        )
9510                    }
9511                    "ProvisionedIopsNotAvailableInAZFault" => {
9512                        return RusotoError::Service(
9513                            CreateDBInstanceError::ProvisionedIopsNotAvailableInAZFault(
9514                                parsed_error.message,
9515                            ),
9516                        )
9517                    }
9518                    "StorageQuotaExceeded" => {
9519                        return RusotoError::Service(
9520                            CreateDBInstanceError::StorageQuotaExceededFault(parsed_error.message),
9521                        )
9522                    }
9523                    "StorageTypeNotSupported" => {
9524                        return RusotoError::Service(
9525                            CreateDBInstanceError::StorageTypeNotSupportedFault(
9526                                parsed_error.message,
9527                            ),
9528                        )
9529                    }
9530                    _ => {}
9531                }
9532            }
9533        }
9534        RusotoError::Unknown(res)
9535    }
9536
9537    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9538    where
9539        T: Peek + Next,
9540    {
9541        xml_util::start_element("ErrorResponse", stack)?;
9542        XmlErrorDeserializer::deserialize("Error", stack)
9543    }
9544}
9545impl fmt::Display for CreateDBInstanceError {
9546    #[allow(unused_variables)]
9547    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9548        match *self {
9549            CreateDBInstanceError::AuthorizationNotFoundFault(ref cause) => write!(f, "{}", cause),
9550            CreateDBInstanceError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
9551            CreateDBInstanceError::DBInstanceAlreadyExistsFault(ref cause) => {
9552                write!(f, "{}", cause)
9553            }
9554            CreateDBInstanceError::DBParameterGroupNotFoundFault(ref cause) => {
9555                write!(f, "{}", cause)
9556            }
9557            CreateDBInstanceError::DBSecurityGroupNotFoundFault(ref cause) => {
9558                write!(f, "{}", cause)
9559            }
9560            CreateDBInstanceError::DBSubnetGroupDoesNotCoverEnoughAZs(ref cause) => {
9561                write!(f, "{}", cause)
9562            }
9563            CreateDBInstanceError::DBSubnetGroupNotFoundFault(ref cause) => write!(f, "{}", cause),
9564            CreateDBInstanceError::DomainNotFoundFault(ref cause) => write!(f, "{}", cause),
9565            CreateDBInstanceError::InstanceQuotaExceededFault(ref cause) => write!(f, "{}", cause),
9566            CreateDBInstanceError::InsufficientDBInstanceCapacityFault(ref cause) => {
9567                write!(f, "{}", cause)
9568            }
9569            CreateDBInstanceError::InvalidDBClusterStateFault(ref cause) => write!(f, "{}", cause),
9570            CreateDBInstanceError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
9571            CreateDBInstanceError::InvalidVPCNetworkStateFault(ref cause) => write!(f, "{}", cause),
9572            CreateDBInstanceError::KMSKeyNotAccessibleFault(ref cause) => write!(f, "{}", cause),
9573            CreateDBInstanceError::OptionGroupNotFoundFault(ref cause) => write!(f, "{}", cause),
9574            CreateDBInstanceError::ProvisionedIopsNotAvailableInAZFault(ref cause) => {
9575                write!(f, "{}", cause)
9576            }
9577            CreateDBInstanceError::StorageQuotaExceededFault(ref cause) => write!(f, "{}", cause),
9578            CreateDBInstanceError::StorageTypeNotSupportedFault(ref cause) => {
9579                write!(f, "{}", cause)
9580            }
9581        }
9582    }
9583}
9584impl Error for CreateDBInstanceError {}
9585/// Errors returned by CreateDBParameterGroup
9586#[derive(Debug, PartialEq)]
9587pub enum CreateDBParameterGroupError {
9588    /// <p>A DB parameter group with the same name exists.</p>
9589    DBParameterGroupAlreadyExistsFault(String),
9590    /// <p>Request would result in user exceeding the allowed number of DB parameter groups.</p>
9591    DBParameterGroupQuotaExceededFault(String),
9592}
9593
9594impl CreateDBParameterGroupError {
9595    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDBParameterGroupError> {
9596        {
9597            let reader = EventReader::new(res.body.as_ref());
9598            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9599            find_start_element(&mut stack);
9600            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9601                match &parsed_error.code[..] {
9602                    "DBParameterGroupAlreadyExists" => {
9603                        return RusotoError::Service(
9604                            CreateDBParameterGroupError::DBParameterGroupAlreadyExistsFault(
9605                                parsed_error.message,
9606                            ),
9607                        )
9608                    }
9609                    "DBParameterGroupQuotaExceeded" => {
9610                        return RusotoError::Service(
9611                            CreateDBParameterGroupError::DBParameterGroupQuotaExceededFault(
9612                                parsed_error.message,
9613                            ),
9614                        )
9615                    }
9616                    _ => {}
9617                }
9618            }
9619        }
9620        RusotoError::Unknown(res)
9621    }
9622
9623    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9624    where
9625        T: Peek + Next,
9626    {
9627        xml_util::start_element("ErrorResponse", stack)?;
9628        XmlErrorDeserializer::deserialize("Error", stack)
9629    }
9630}
9631impl fmt::Display for CreateDBParameterGroupError {
9632    #[allow(unused_variables)]
9633    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9634        match *self {
9635            CreateDBParameterGroupError::DBParameterGroupAlreadyExistsFault(ref cause) => {
9636                write!(f, "{}", cause)
9637            }
9638            CreateDBParameterGroupError::DBParameterGroupQuotaExceededFault(ref cause) => {
9639                write!(f, "{}", cause)
9640            }
9641        }
9642    }
9643}
9644impl Error for CreateDBParameterGroupError {}
9645/// Errors returned by CreateDBSubnetGroup
9646#[derive(Debug, PartialEq)]
9647pub enum CreateDBSubnetGroupError {
9648    /// <p> <i>DBSubnetGroupName</i> is already used by an existing DB subnet group.</p>
9649    DBSubnetGroupAlreadyExistsFault(String),
9650    /// <p>Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.</p>
9651    DBSubnetGroupDoesNotCoverEnoughAZs(String),
9652    /// <p>Request would result in user exceeding the allowed number of DB subnet groups.</p>
9653    DBSubnetGroupQuotaExceededFault(String),
9654    /// <p>Request would result in user exceeding the allowed number of subnets in a DB subnet groups.</p>
9655    DBSubnetQuotaExceededFault(String),
9656    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
9657    InvalidSubnet(String),
9658}
9659
9660impl CreateDBSubnetGroupError {
9661    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDBSubnetGroupError> {
9662        {
9663            let reader = EventReader::new(res.body.as_ref());
9664            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9665            find_start_element(&mut stack);
9666            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9667                match &parsed_error.code[..] {
9668                    "DBSubnetGroupAlreadyExists" => {
9669                        return RusotoError::Service(
9670                            CreateDBSubnetGroupError::DBSubnetGroupAlreadyExistsFault(
9671                                parsed_error.message,
9672                            ),
9673                        )
9674                    }
9675                    "DBSubnetGroupDoesNotCoverEnoughAZs" => {
9676                        return RusotoError::Service(
9677                            CreateDBSubnetGroupError::DBSubnetGroupDoesNotCoverEnoughAZs(
9678                                parsed_error.message,
9679                            ),
9680                        )
9681                    }
9682                    "DBSubnetGroupQuotaExceeded" => {
9683                        return RusotoError::Service(
9684                            CreateDBSubnetGroupError::DBSubnetGroupQuotaExceededFault(
9685                                parsed_error.message,
9686                            ),
9687                        )
9688                    }
9689                    "DBSubnetQuotaExceededFault" => {
9690                        return RusotoError::Service(
9691                            CreateDBSubnetGroupError::DBSubnetQuotaExceededFault(
9692                                parsed_error.message,
9693                            ),
9694                        )
9695                    }
9696                    "InvalidSubnet" => {
9697                        return RusotoError::Service(CreateDBSubnetGroupError::InvalidSubnet(
9698                            parsed_error.message,
9699                        ))
9700                    }
9701                    _ => {}
9702                }
9703            }
9704        }
9705        RusotoError::Unknown(res)
9706    }
9707
9708    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9709    where
9710        T: Peek + Next,
9711    {
9712        xml_util::start_element("ErrorResponse", stack)?;
9713        XmlErrorDeserializer::deserialize("Error", stack)
9714    }
9715}
9716impl fmt::Display for CreateDBSubnetGroupError {
9717    #[allow(unused_variables)]
9718    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9719        match *self {
9720            CreateDBSubnetGroupError::DBSubnetGroupAlreadyExistsFault(ref cause) => {
9721                write!(f, "{}", cause)
9722            }
9723            CreateDBSubnetGroupError::DBSubnetGroupDoesNotCoverEnoughAZs(ref cause) => {
9724                write!(f, "{}", cause)
9725            }
9726            CreateDBSubnetGroupError::DBSubnetGroupQuotaExceededFault(ref cause) => {
9727                write!(f, "{}", cause)
9728            }
9729            CreateDBSubnetGroupError::DBSubnetQuotaExceededFault(ref cause) => {
9730                write!(f, "{}", cause)
9731            }
9732            CreateDBSubnetGroupError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
9733        }
9734    }
9735}
9736impl Error for CreateDBSubnetGroupError {}
9737/// Errors returned by CreateEventSubscription
9738#[derive(Debug, PartialEq)]
9739pub enum CreateEventSubscriptionError {
9740    /// <p>You have exceeded the number of events you can subscribe to.</p>
9741    EventSubscriptionQuotaExceededFault(String),
9742    /// <p>The SNS topic is invalid.</p>
9743    SNSInvalidTopicFault(String),
9744    /// <p>There is no SNS authorization.</p>
9745    SNSNoAuthorizationFault(String),
9746    /// <p>The ARN of the SNS topic could not be found.</p>
9747    SNSTopicArnNotFoundFault(String),
9748    /// <p>The source could not be found.</p>
9749    SourceNotFoundFault(String),
9750    /// <p>This subscription already exists.</p>
9751    SubscriptionAlreadyExistFault(String),
9752    /// <p>The designated subscription category could not be found.</p>
9753    SubscriptionCategoryNotFoundFault(String),
9754}
9755
9756impl CreateEventSubscriptionError {
9757    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateEventSubscriptionError> {
9758        {
9759            let reader = EventReader::new(res.body.as_ref());
9760            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9761            find_start_element(&mut stack);
9762            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9763                match &parsed_error.code[..] {
9764                    "EventSubscriptionQuotaExceeded" => {
9765                        return RusotoError::Service(
9766                            CreateEventSubscriptionError::EventSubscriptionQuotaExceededFault(
9767                                parsed_error.message,
9768                            ),
9769                        )
9770                    }
9771                    "SNSInvalidTopic" => {
9772                        return RusotoError::Service(
9773                            CreateEventSubscriptionError::SNSInvalidTopicFault(
9774                                parsed_error.message,
9775                            ),
9776                        )
9777                    }
9778                    "SNSNoAuthorization" => {
9779                        return RusotoError::Service(
9780                            CreateEventSubscriptionError::SNSNoAuthorizationFault(
9781                                parsed_error.message,
9782                            ),
9783                        )
9784                    }
9785                    "SNSTopicArnNotFound" => {
9786                        return RusotoError::Service(
9787                            CreateEventSubscriptionError::SNSTopicArnNotFoundFault(
9788                                parsed_error.message,
9789                            ),
9790                        )
9791                    }
9792                    "SourceNotFound" => {
9793                        return RusotoError::Service(
9794                            CreateEventSubscriptionError::SourceNotFoundFault(parsed_error.message),
9795                        )
9796                    }
9797                    "SubscriptionAlreadyExist" => {
9798                        return RusotoError::Service(
9799                            CreateEventSubscriptionError::SubscriptionAlreadyExistFault(
9800                                parsed_error.message,
9801                            ),
9802                        )
9803                    }
9804                    "SubscriptionCategoryNotFound" => {
9805                        return RusotoError::Service(
9806                            CreateEventSubscriptionError::SubscriptionCategoryNotFoundFault(
9807                                parsed_error.message,
9808                            ),
9809                        )
9810                    }
9811                    _ => {}
9812                }
9813            }
9814        }
9815        RusotoError::Unknown(res)
9816    }
9817
9818    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9819    where
9820        T: Peek + Next,
9821    {
9822        xml_util::start_element("ErrorResponse", stack)?;
9823        XmlErrorDeserializer::deserialize("Error", stack)
9824    }
9825}
9826impl fmt::Display for CreateEventSubscriptionError {
9827    #[allow(unused_variables)]
9828    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9829        match *self {
9830            CreateEventSubscriptionError::EventSubscriptionQuotaExceededFault(ref cause) => {
9831                write!(f, "{}", cause)
9832            }
9833            CreateEventSubscriptionError::SNSInvalidTopicFault(ref cause) => write!(f, "{}", cause),
9834            CreateEventSubscriptionError::SNSNoAuthorizationFault(ref cause) => {
9835                write!(f, "{}", cause)
9836            }
9837            CreateEventSubscriptionError::SNSTopicArnNotFoundFault(ref cause) => {
9838                write!(f, "{}", cause)
9839            }
9840            CreateEventSubscriptionError::SourceNotFoundFault(ref cause) => write!(f, "{}", cause),
9841            CreateEventSubscriptionError::SubscriptionAlreadyExistFault(ref cause) => {
9842                write!(f, "{}", cause)
9843            }
9844            CreateEventSubscriptionError::SubscriptionCategoryNotFoundFault(ref cause) => {
9845                write!(f, "{}", cause)
9846            }
9847        }
9848    }
9849}
9850impl Error for CreateEventSubscriptionError {}
9851/// Errors returned by DeleteDBCluster
9852#[derive(Debug, PartialEq)]
9853pub enum DeleteDBClusterError {
9854    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
9855    DBClusterNotFoundFault(String),
9856    /// <p>User already has a DB cluster snapshot with the given identifier.</p>
9857    DBClusterSnapshotAlreadyExistsFault(String),
9858    /// <p>The supplied value is not a valid DB cluster snapshot state.</p>
9859    InvalidDBClusterSnapshotStateFault(String),
9860    /// <p>The DB cluster is not in a valid state.</p>
9861    InvalidDBClusterStateFault(String),
9862    /// <p>Request would result in user exceeding the allowed number of DB snapshots.</p>
9863    SnapshotQuotaExceededFault(String),
9864}
9865
9866impl DeleteDBClusterError {
9867    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDBClusterError> {
9868        {
9869            let reader = EventReader::new(res.body.as_ref());
9870            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9871            find_start_element(&mut stack);
9872            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9873                match &parsed_error.code[..] {
9874                    "DBClusterNotFoundFault" => {
9875                        return RusotoError::Service(DeleteDBClusterError::DBClusterNotFoundFault(
9876                            parsed_error.message,
9877                        ))
9878                    }
9879                    "DBClusterSnapshotAlreadyExistsFault" => {
9880                        return RusotoError::Service(
9881                            DeleteDBClusterError::DBClusterSnapshotAlreadyExistsFault(
9882                                parsed_error.message,
9883                            ),
9884                        )
9885                    }
9886                    "InvalidDBClusterSnapshotStateFault" => {
9887                        return RusotoError::Service(
9888                            DeleteDBClusterError::InvalidDBClusterSnapshotStateFault(
9889                                parsed_error.message,
9890                            ),
9891                        )
9892                    }
9893                    "InvalidDBClusterStateFault" => {
9894                        return RusotoError::Service(
9895                            DeleteDBClusterError::InvalidDBClusterStateFault(parsed_error.message),
9896                        )
9897                    }
9898                    "SnapshotQuotaExceeded" => {
9899                        return RusotoError::Service(
9900                            DeleteDBClusterError::SnapshotQuotaExceededFault(parsed_error.message),
9901                        )
9902                    }
9903                    _ => {}
9904                }
9905            }
9906        }
9907        RusotoError::Unknown(res)
9908    }
9909
9910    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9911    where
9912        T: Peek + Next,
9913    {
9914        xml_util::start_element("ErrorResponse", stack)?;
9915        XmlErrorDeserializer::deserialize("Error", stack)
9916    }
9917}
9918impl fmt::Display for DeleteDBClusterError {
9919    #[allow(unused_variables)]
9920    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9921        match *self {
9922            DeleteDBClusterError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
9923            DeleteDBClusterError::DBClusterSnapshotAlreadyExistsFault(ref cause) => {
9924                write!(f, "{}", cause)
9925            }
9926            DeleteDBClusterError::InvalidDBClusterSnapshotStateFault(ref cause) => {
9927                write!(f, "{}", cause)
9928            }
9929            DeleteDBClusterError::InvalidDBClusterStateFault(ref cause) => write!(f, "{}", cause),
9930            DeleteDBClusterError::SnapshotQuotaExceededFault(ref cause) => write!(f, "{}", cause),
9931        }
9932    }
9933}
9934impl Error for DeleteDBClusterError {}
9935/// Errors returned by DeleteDBClusterParameterGroup
9936#[derive(Debug, PartialEq)]
9937pub enum DeleteDBClusterParameterGroupError {
9938    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
9939    DBParameterGroupNotFoundFault(String),
9940    /// <p>The DB parameter group is in use or is in an invalid state. If you are attempting to delete the parameter group, you cannot delete it when the parameter group is in this state.</p>
9941    InvalidDBParameterGroupStateFault(String),
9942}
9943
9944impl DeleteDBClusterParameterGroupError {
9945    pub fn from_response(
9946        res: BufferedHttpResponse,
9947    ) -> RusotoError<DeleteDBClusterParameterGroupError> {
9948        {
9949            let reader = EventReader::new(res.body.as_ref());
9950            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9951            find_start_element(&mut stack);
9952            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9953                match &parsed_error.code[..] {
9954                    "DBParameterGroupNotFound" => {
9955                        return RusotoError::Service(
9956                            DeleteDBClusterParameterGroupError::DBParameterGroupNotFoundFault(
9957                                parsed_error.message,
9958                            ),
9959                        )
9960                    }
9961                    "InvalidDBParameterGroupState" => {
9962                        return RusotoError::Service(
9963                            DeleteDBClusterParameterGroupError::InvalidDBParameterGroupStateFault(
9964                                parsed_error.message,
9965                            ),
9966                        )
9967                    }
9968                    _ => {}
9969                }
9970            }
9971        }
9972        RusotoError::Unknown(res)
9973    }
9974
9975    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9976    where
9977        T: Peek + Next,
9978    {
9979        xml_util::start_element("ErrorResponse", stack)?;
9980        XmlErrorDeserializer::deserialize("Error", stack)
9981    }
9982}
9983impl fmt::Display for DeleteDBClusterParameterGroupError {
9984    #[allow(unused_variables)]
9985    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9986        match *self {
9987            DeleteDBClusterParameterGroupError::DBParameterGroupNotFoundFault(ref cause) => {
9988                write!(f, "{}", cause)
9989            }
9990            DeleteDBClusterParameterGroupError::InvalidDBParameterGroupStateFault(ref cause) => {
9991                write!(f, "{}", cause)
9992            }
9993        }
9994    }
9995}
9996impl Error for DeleteDBClusterParameterGroupError {}
9997/// Errors returned by DeleteDBClusterSnapshot
9998#[derive(Debug, PartialEq)]
9999pub enum DeleteDBClusterSnapshotError {
10000    /// <p> <i>DBClusterSnapshotIdentifier</i> does not refer to an existing DB cluster snapshot.</p>
10001    DBClusterSnapshotNotFoundFault(String),
10002    /// <p>The supplied value is not a valid DB cluster snapshot state.</p>
10003    InvalidDBClusterSnapshotStateFault(String),
10004}
10005
10006impl DeleteDBClusterSnapshotError {
10007    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDBClusterSnapshotError> {
10008        {
10009            let reader = EventReader::new(res.body.as_ref());
10010            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10011            find_start_element(&mut stack);
10012            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10013                match &parsed_error.code[..] {
10014                    "DBClusterSnapshotNotFoundFault" => {
10015                        return RusotoError::Service(
10016                            DeleteDBClusterSnapshotError::DBClusterSnapshotNotFoundFault(
10017                                parsed_error.message,
10018                            ),
10019                        )
10020                    }
10021                    "InvalidDBClusterSnapshotStateFault" => {
10022                        return RusotoError::Service(
10023                            DeleteDBClusterSnapshotError::InvalidDBClusterSnapshotStateFault(
10024                                parsed_error.message,
10025                            ),
10026                        )
10027                    }
10028                    _ => {}
10029                }
10030            }
10031        }
10032        RusotoError::Unknown(res)
10033    }
10034
10035    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10036    where
10037        T: Peek + Next,
10038    {
10039        xml_util::start_element("ErrorResponse", stack)?;
10040        XmlErrorDeserializer::deserialize("Error", stack)
10041    }
10042}
10043impl fmt::Display for DeleteDBClusterSnapshotError {
10044    #[allow(unused_variables)]
10045    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10046        match *self {
10047            DeleteDBClusterSnapshotError::DBClusterSnapshotNotFoundFault(ref cause) => {
10048                write!(f, "{}", cause)
10049            }
10050            DeleteDBClusterSnapshotError::InvalidDBClusterSnapshotStateFault(ref cause) => {
10051                write!(f, "{}", cause)
10052            }
10053        }
10054    }
10055}
10056impl Error for DeleteDBClusterSnapshotError {}
10057/// Errors returned by DeleteDBInstance
10058#[derive(Debug, PartialEq)]
10059pub enum DeleteDBInstanceError {
10060    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
10061    DBInstanceNotFoundFault(String),
10062    /// <p> <i>DBSnapshotIdentifier</i> is already used by an existing snapshot.</p>
10063    DBSnapshotAlreadyExistsFault(String),
10064    /// <p>The DB cluster is not in a valid state.</p>
10065    InvalidDBClusterStateFault(String),
10066    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
10067    InvalidDBInstanceStateFault(String),
10068    /// <p>Request would result in user exceeding the allowed number of DB snapshots.</p>
10069    SnapshotQuotaExceededFault(String),
10070}
10071
10072impl DeleteDBInstanceError {
10073    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDBInstanceError> {
10074        {
10075            let reader = EventReader::new(res.body.as_ref());
10076            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10077            find_start_element(&mut stack);
10078            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10079                match &parsed_error.code[..] {
10080                    "DBInstanceNotFound" => {
10081                        return RusotoError::Service(
10082                            DeleteDBInstanceError::DBInstanceNotFoundFault(parsed_error.message),
10083                        )
10084                    }
10085                    "DBSnapshotAlreadyExists" => {
10086                        return RusotoError::Service(
10087                            DeleteDBInstanceError::DBSnapshotAlreadyExistsFault(
10088                                parsed_error.message,
10089                            ),
10090                        )
10091                    }
10092                    "InvalidDBClusterStateFault" => {
10093                        return RusotoError::Service(
10094                            DeleteDBInstanceError::InvalidDBClusterStateFault(parsed_error.message),
10095                        )
10096                    }
10097                    "InvalidDBInstanceState" => {
10098                        return RusotoError::Service(
10099                            DeleteDBInstanceError::InvalidDBInstanceStateFault(
10100                                parsed_error.message,
10101                            ),
10102                        )
10103                    }
10104                    "SnapshotQuotaExceeded" => {
10105                        return RusotoError::Service(
10106                            DeleteDBInstanceError::SnapshotQuotaExceededFault(parsed_error.message),
10107                        )
10108                    }
10109                    _ => {}
10110                }
10111            }
10112        }
10113        RusotoError::Unknown(res)
10114    }
10115
10116    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10117    where
10118        T: Peek + Next,
10119    {
10120        xml_util::start_element("ErrorResponse", stack)?;
10121        XmlErrorDeserializer::deserialize("Error", stack)
10122    }
10123}
10124impl fmt::Display for DeleteDBInstanceError {
10125    #[allow(unused_variables)]
10126    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10127        match *self {
10128            DeleteDBInstanceError::DBInstanceNotFoundFault(ref cause) => write!(f, "{}", cause),
10129            DeleteDBInstanceError::DBSnapshotAlreadyExistsFault(ref cause) => {
10130                write!(f, "{}", cause)
10131            }
10132            DeleteDBInstanceError::InvalidDBClusterStateFault(ref cause) => write!(f, "{}", cause),
10133            DeleteDBInstanceError::InvalidDBInstanceStateFault(ref cause) => write!(f, "{}", cause),
10134            DeleteDBInstanceError::SnapshotQuotaExceededFault(ref cause) => write!(f, "{}", cause),
10135        }
10136    }
10137}
10138impl Error for DeleteDBInstanceError {}
10139/// Errors returned by DeleteDBParameterGroup
10140#[derive(Debug, PartialEq)]
10141pub enum DeleteDBParameterGroupError {
10142    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
10143    DBParameterGroupNotFoundFault(String),
10144    /// <p>The DB parameter group is in use or is in an invalid state. If you are attempting to delete the parameter group, you cannot delete it when the parameter group is in this state.</p>
10145    InvalidDBParameterGroupStateFault(String),
10146}
10147
10148impl DeleteDBParameterGroupError {
10149    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDBParameterGroupError> {
10150        {
10151            let reader = EventReader::new(res.body.as_ref());
10152            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10153            find_start_element(&mut stack);
10154            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10155                match &parsed_error.code[..] {
10156                    "DBParameterGroupNotFound" => {
10157                        return RusotoError::Service(
10158                            DeleteDBParameterGroupError::DBParameterGroupNotFoundFault(
10159                                parsed_error.message,
10160                            ),
10161                        )
10162                    }
10163                    "InvalidDBParameterGroupState" => {
10164                        return RusotoError::Service(
10165                            DeleteDBParameterGroupError::InvalidDBParameterGroupStateFault(
10166                                parsed_error.message,
10167                            ),
10168                        )
10169                    }
10170                    _ => {}
10171                }
10172            }
10173        }
10174        RusotoError::Unknown(res)
10175    }
10176
10177    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10178    where
10179        T: Peek + Next,
10180    {
10181        xml_util::start_element("ErrorResponse", stack)?;
10182        XmlErrorDeserializer::deserialize("Error", stack)
10183    }
10184}
10185impl fmt::Display for DeleteDBParameterGroupError {
10186    #[allow(unused_variables)]
10187    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10188        match *self {
10189            DeleteDBParameterGroupError::DBParameterGroupNotFoundFault(ref cause) => {
10190                write!(f, "{}", cause)
10191            }
10192            DeleteDBParameterGroupError::InvalidDBParameterGroupStateFault(ref cause) => {
10193                write!(f, "{}", cause)
10194            }
10195        }
10196    }
10197}
10198impl Error for DeleteDBParameterGroupError {}
10199/// Errors returned by DeleteDBSubnetGroup
10200#[derive(Debug, PartialEq)]
10201pub enum DeleteDBSubnetGroupError {
10202    /// <p> <i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
10203    DBSubnetGroupNotFoundFault(String),
10204    /// <p>The DB subnet group cannot be deleted because it is in use.</p>
10205    InvalidDBSubnetGroupStateFault(String),
10206    /// <p>The DB subnet is not in the <i>available</i> state.</p>
10207    InvalidDBSubnetStateFault(String),
10208}
10209
10210impl DeleteDBSubnetGroupError {
10211    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDBSubnetGroupError> {
10212        {
10213            let reader = EventReader::new(res.body.as_ref());
10214            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10215            find_start_element(&mut stack);
10216            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10217                match &parsed_error.code[..] {
10218                    "DBSubnetGroupNotFoundFault" => {
10219                        return RusotoError::Service(
10220                            DeleteDBSubnetGroupError::DBSubnetGroupNotFoundFault(
10221                                parsed_error.message,
10222                            ),
10223                        )
10224                    }
10225                    "InvalidDBSubnetGroupStateFault" => {
10226                        return RusotoError::Service(
10227                            DeleteDBSubnetGroupError::InvalidDBSubnetGroupStateFault(
10228                                parsed_error.message,
10229                            ),
10230                        )
10231                    }
10232                    "InvalidDBSubnetStateFault" => {
10233                        return RusotoError::Service(
10234                            DeleteDBSubnetGroupError::InvalidDBSubnetStateFault(
10235                                parsed_error.message,
10236                            ),
10237                        )
10238                    }
10239                    _ => {}
10240                }
10241            }
10242        }
10243        RusotoError::Unknown(res)
10244    }
10245
10246    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10247    where
10248        T: Peek + Next,
10249    {
10250        xml_util::start_element("ErrorResponse", stack)?;
10251        XmlErrorDeserializer::deserialize("Error", stack)
10252    }
10253}
10254impl fmt::Display for DeleteDBSubnetGroupError {
10255    #[allow(unused_variables)]
10256    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10257        match *self {
10258            DeleteDBSubnetGroupError::DBSubnetGroupNotFoundFault(ref cause) => {
10259                write!(f, "{}", cause)
10260            }
10261            DeleteDBSubnetGroupError::InvalidDBSubnetGroupStateFault(ref cause) => {
10262                write!(f, "{}", cause)
10263            }
10264            DeleteDBSubnetGroupError::InvalidDBSubnetStateFault(ref cause) => {
10265                write!(f, "{}", cause)
10266            }
10267        }
10268    }
10269}
10270impl Error for DeleteDBSubnetGroupError {}
10271/// Errors returned by DeleteEventSubscription
10272#[derive(Debug, PartialEq)]
10273pub enum DeleteEventSubscriptionError {
10274    /// <p>The event subscription is in an invalid state.</p>
10275    InvalidEventSubscriptionStateFault(String),
10276    /// <p>The designated subscription could not be found.</p>
10277    SubscriptionNotFoundFault(String),
10278}
10279
10280impl DeleteEventSubscriptionError {
10281    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteEventSubscriptionError> {
10282        {
10283            let reader = EventReader::new(res.body.as_ref());
10284            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10285            find_start_element(&mut stack);
10286            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10287                match &parsed_error.code[..] {
10288                    "InvalidEventSubscriptionState" => {
10289                        return RusotoError::Service(
10290                            DeleteEventSubscriptionError::InvalidEventSubscriptionStateFault(
10291                                parsed_error.message,
10292                            ),
10293                        )
10294                    }
10295                    "SubscriptionNotFound" => {
10296                        return RusotoError::Service(
10297                            DeleteEventSubscriptionError::SubscriptionNotFoundFault(
10298                                parsed_error.message,
10299                            ),
10300                        )
10301                    }
10302                    _ => {}
10303                }
10304            }
10305        }
10306        RusotoError::Unknown(res)
10307    }
10308
10309    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10310    where
10311        T: Peek + Next,
10312    {
10313        xml_util::start_element("ErrorResponse", stack)?;
10314        XmlErrorDeserializer::deserialize("Error", stack)
10315    }
10316}
10317impl fmt::Display for DeleteEventSubscriptionError {
10318    #[allow(unused_variables)]
10319    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10320        match *self {
10321            DeleteEventSubscriptionError::InvalidEventSubscriptionStateFault(ref cause) => {
10322                write!(f, "{}", cause)
10323            }
10324            DeleteEventSubscriptionError::SubscriptionNotFoundFault(ref cause) => {
10325                write!(f, "{}", cause)
10326            }
10327        }
10328    }
10329}
10330impl Error for DeleteEventSubscriptionError {}
10331/// Errors returned by DescribeDBClusterParameterGroups
10332#[derive(Debug, PartialEq)]
10333pub enum DescribeDBClusterParameterGroupsError {
10334    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
10335    DBParameterGroupNotFoundFault(String),
10336}
10337
10338impl DescribeDBClusterParameterGroupsError {
10339    pub fn from_response(
10340        res: BufferedHttpResponse,
10341    ) -> RusotoError<DescribeDBClusterParameterGroupsError> {
10342        {
10343            let reader = EventReader::new(res.body.as_ref());
10344            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10345            find_start_element(&mut stack);
10346            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10347                match &parsed_error.code[..] {
10348                    "DBParameterGroupNotFound" => {
10349                        return RusotoError::Service(
10350                            DescribeDBClusterParameterGroupsError::DBParameterGroupNotFoundFault(
10351                                parsed_error.message,
10352                            ),
10353                        )
10354                    }
10355                    _ => {}
10356                }
10357            }
10358        }
10359        RusotoError::Unknown(res)
10360    }
10361
10362    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10363    where
10364        T: Peek + Next,
10365    {
10366        xml_util::start_element("ErrorResponse", stack)?;
10367        XmlErrorDeserializer::deserialize("Error", stack)
10368    }
10369}
10370impl fmt::Display for DescribeDBClusterParameterGroupsError {
10371    #[allow(unused_variables)]
10372    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10373        match *self {
10374            DescribeDBClusterParameterGroupsError::DBParameterGroupNotFoundFault(ref cause) => {
10375                write!(f, "{}", cause)
10376            }
10377        }
10378    }
10379}
10380impl Error for DescribeDBClusterParameterGroupsError {}
10381/// Errors returned by DescribeDBClusterParameters
10382#[derive(Debug, PartialEq)]
10383pub enum DescribeDBClusterParametersError {
10384    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
10385    DBParameterGroupNotFoundFault(String),
10386}
10387
10388impl DescribeDBClusterParametersError {
10389    pub fn from_response(
10390        res: BufferedHttpResponse,
10391    ) -> RusotoError<DescribeDBClusterParametersError> {
10392        {
10393            let reader = EventReader::new(res.body.as_ref());
10394            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10395            find_start_element(&mut stack);
10396            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10397                match &parsed_error.code[..] {
10398                    "DBParameterGroupNotFound" => {
10399                        return RusotoError::Service(
10400                            DescribeDBClusterParametersError::DBParameterGroupNotFoundFault(
10401                                parsed_error.message,
10402                            ),
10403                        )
10404                    }
10405                    _ => {}
10406                }
10407            }
10408        }
10409        RusotoError::Unknown(res)
10410    }
10411
10412    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10413    where
10414        T: Peek + Next,
10415    {
10416        xml_util::start_element("ErrorResponse", stack)?;
10417        XmlErrorDeserializer::deserialize("Error", stack)
10418    }
10419}
10420impl fmt::Display for DescribeDBClusterParametersError {
10421    #[allow(unused_variables)]
10422    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10423        match *self {
10424            DescribeDBClusterParametersError::DBParameterGroupNotFoundFault(ref cause) => {
10425                write!(f, "{}", cause)
10426            }
10427        }
10428    }
10429}
10430impl Error for DescribeDBClusterParametersError {}
10431/// Errors returned by DescribeDBClusterSnapshotAttributes
10432#[derive(Debug, PartialEq)]
10433pub enum DescribeDBClusterSnapshotAttributesError {
10434    /// <p> <i>DBClusterSnapshotIdentifier</i> does not refer to an existing DB cluster snapshot.</p>
10435    DBClusterSnapshotNotFoundFault(String),
10436}
10437
10438impl DescribeDBClusterSnapshotAttributesError {
10439    pub fn from_response(
10440        res: BufferedHttpResponse,
10441    ) -> RusotoError<DescribeDBClusterSnapshotAttributesError> {
10442        {
10443            let reader = EventReader::new(res.body.as_ref());
10444            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10445            find_start_element(&mut stack);
10446            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10447                match &parsed_error.code[..] {
10448                    "DBClusterSnapshotNotFoundFault" => return RusotoError::Service(
10449                        DescribeDBClusterSnapshotAttributesError::DBClusterSnapshotNotFoundFault(
10450                            parsed_error.message,
10451                        ),
10452                    ),
10453                    _ => {}
10454                }
10455            }
10456        }
10457        RusotoError::Unknown(res)
10458    }
10459
10460    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10461    where
10462        T: Peek + Next,
10463    {
10464        xml_util::start_element("ErrorResponse", stack)?;
10465        XmlErrorDeserializer::deserialize("Error", stack)
10466    }
10467}
10468impl fmt::Display for DescribeDBClusterSnapshotAttributesError {
10469    #[allow(unused_variables)]
10470    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10471        match *self {
10472            DescribeDBClusterSnapshotAttributesError::DBClusterSnapshotNotFoundFault(ref cause) => {
10473                write!(f, "{}", cause)
10474            }
10475        }
10476    }
10477}
10478impl Error for DescribeDBClusterSnapshotAttributesError {}
10479/// Errors returned by DescribeDBClusterSnapshots
10480#[derive(Debug, PartialEq)]
10481pub enum DescribeDBClusterSnapshotsError {
10482    /// <p> <i>DBClusterSnapshotIdentifier</i> does not refer to an existing DB cluster snapshot.</p>
10483    DBClusterSnapshotNotFoundFault(String),
10484}
10485
10486impl DescribeDBClusterSnapshotsError {
10487    pub fn from_response(
10488        res: BufferedHttpResponse,
10489    ) -> RusotoError<DescribeDBClusterSnapshotsError> {
10490        {
10491            let reader = EventReader::new(res.body.as_ref());
10492            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10493            find_start_element(&mut stack);
10494            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10495                match &parsed_error.code[..] {
10496                    "DBClusterSnapshotNotFoundFault" => {
10497                        return RusotoError::Service(
10498                            DescribeDBClusterSnapshotsError::DBClusterSnapshotNotFoundFault(
10499                                parsed_error.message,
10500                            ),
10501                        )
10502                    }
10503                    _ => {}
10504                }
10505            }
10506        }
10507        RusotoError::Unknown(res)
10508    }
10509
10510    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10511    where
10512        T: Peek + Next,
10513    {
10514        xml_util::start_element("ErrorResponse", stack)?;
10515        XmlErrorDeserializer::deserialize("Error", stack)
10516    }
10517}
10518impl fmt::Display for DescribeDBClusterSnapshotsError {
10519    #[allow(unused_variables)]
10520    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10521        match *self {
10522            DescribeDBClusterSnapshotsError::DBClusterSnapshotNotFoundFault(ref cause) => {
10523                write!(f, "{}", cause)
10524            }
10525        }
10526    }
10527}
10528impl Error for DescribeDBClusterSnapshotsError {}
10529/// Errors returned by DescribeDBClusters
10530#[derive(Debug, PartialEq)]
10531pub enum DescribeDBClustersError {
10532    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
10533    DBClusterNotFoundFault(String),
10534}
10535
10536impl DescribeDBClustersError {
10537    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDBClustersError> {
10538        {
10539            let reader = EventReader::new(res.body.as_ref());
10540            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10541            find_start_element(&mut stack);
10542            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10543                match &parsed_error.code[..] {
10544                    "DBClusterNotFoundFault" => {
10545                        return RusotoError::Service(
10546                            DescribeDBClustersError::DBClusterNotFoundFault(parsed_error.message),
10547                        )
10548                    }
10549                    _ => {}
10550                }
10551            }
10552        }
10553        RusotoError::Unknown(res)
10554    }
10555
10556    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10557    where
10558        T: Peek + Next,
10559    {
10560        xml_util::start_element("ErrorResponse", stack)?;
10561        XmlErrorDeserializer::deserialize("Error", stack)
10562    }
10563}
10564impl fmt::Display for DescribeDBClustersError {
10565    #[allow(unused_variables)]
10566    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10567        match *self {
10568            DescribeDBClustersError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
10569        }
10570    }
10571}
10572impl Error for DescribeDBClustersError {}
10573/// Errors returned by DescribeDBEngineVersions
10574#[derive(Debug, PartialEq)]
10575pub enum DescribeDBEngineVersionsError {}
10576
10577impl DescribeDBEngineVersionsError {
10578    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDBEngineVersionsError> {
10579        {
10580            let reader = EventReader::new(res.body.as_ref());
10581            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10582            find_start_element(&mut stack);
10583            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10584                match &parsed_error.code[..] {
10585                    _ => {}
10586                }
10587            }
10588        }
10589        RusotoError::Unknown(res)
10590    }
10591
10592    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10593    where
10594        T: Peek + Next,
10595    {
10596        xml_util::start_element("ErrorResponse", stack)?;
10597        XmlErrorDeserializer::deserialize("Error", stack)
10598    }
10599}
10600impl fmt::Display for DescribeDBEngineVersionsError {
10601    #[allow(unused_variables)]
10602    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10603        match *self {}
10604    }
10605}
10606impl Error for DescribeDBEngineVersionsError {}
10607/// Errors returned by DescribeDBInstances
10608#[derive(Debug, PartialEq)]
10609pub enum DescribeDBInstancesError {
10610    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
10611    DBInstanceNotFoundFault(String),
10612}
10613
10614impl DescribeDBInstancesError {
10615    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDBInstancesError> {
10616        {
10617            let reader = EventReader::new(res.body.as_ref());
10618            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10619            find_start_element(&mut stack);
10620            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10621                match &parsed_error.code[..] {
10622                    "DBInstanceNotFound" => {
10623                        return RusotoError::Service(
10624                            DescribeDBInstancesError::DBInstanceNotFoundFault(parsed_error.message),
10625                        )
10626                    }
10627                    _ => {}
10628                }
10629            }
10630        }
10631        RusotoError::Unknown(res)
10632    }
10633
10634    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10635    where
10636        T: Peek + Next,
10637    {
10638        xml_util::start_element("ErrorResponse", stack)?;
10639        XmlErrorDeserializer::deserialize("Error", stack)
10640    }
10641}
10642impl fmt::Display for DescribeDBInstancesError {
10643    #[allow(unused_variables)]
10644    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10645        match *self {
10646            DescribeDBInstancesError::DBInstanceNotFoundFault(ref cause) => write!(f, "{}", cause),
10647        }
10648    }
10649}
10650impl Error for DescribeDBInstancesError {}
10651/// Errors returned by DescribeDBParameterGroups
10652#[derive(Debug, PartialEq)]
10653pub enum DescribeDBParameterGroupsError {
10654    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
10655    DBParameterGroupNotFoundFault(String),
10656}
10657
10658impl DescribeDBParameterGroupsError {
10659    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDBParameterGroupsError> {
10660        {
10661            let reader = EventReader::new(res.body.as_ref());
10662            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10663            find_start_element(&mut stack);
10664            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10665                match &parsed_error.code[..] {
10666                    "DBParameterGroupNotFound" => {
10667                        return RusotoError::Service(
10668                            DescribeDBParameterGroupsError::DBParameterGroupNotFoundFault(
10669                                parsed_error.message,
10670                            ),
10671                        )
10672                    }
10673                    _ => {}
10674                }
10675            }
10676        }
10677        RusotoError::Unknown(res)
10678    }
10679
10680    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10681    where
10682        T: Peek + Next,
10683    {
10684        xml_util::start_element("ErrorResponse", stack)?;
10685        XmlErrorDeserializer::deserialize("Error", stack)
10686    }
10687}
10688impl fmt::Display for DescribeDBParameterGroupsError {
10689    #[allow(unused_variables)]
10690    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10691        match *self {
10692            DescribeDBParameterGroupsError::DBParameterGroupNotFoundFault(ref cause) => {
10693                write!(f, "{}", cause)
10694            }
10695        }
10696    }
10697}
10698impl Error for DescribeDBParameterGroupsError {}
10699/// Errors returned by DescribeDBParameters
10700#[derive(Debug, PartialEq)]
10701pub enum DescribeDBParametersError {
10702    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
10703    DBParameterGroupNotFoundFault(String),
10704}
10705
10706impl DescribeDBParametersError {
10707    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDBParametersError> {
10708        {
10709            let reader = EventReader::new(res.body.as_ref());
10710            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10711            find_start_element(&mut stack);
10712            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10713                match &parsed_error.code[..] {
10714                    "DBParameterGroupNotFound" => {
10715                        return RusotoError::Service(
10716                            DescribeDBParametersError::DBParameterGroupNotFoundFault(
10717                                parsed_error.message,
10718                            ),
10719                        )
10720                    }
10721                    _ => {}
10722                }
10723            }
10724        }
10725        RusotoError::Unknown(res)
10726    }
10727
10728    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10729    where
10730        T: Peek + Next,
10731    {
10732        xml_util::start_element("ErrorResponse", stack)?;
10733        XmlErrorDeserializer::deserialize("Error", stack)
10734    }
10735}
10736impl fmt::Display for DescribeDBParametersError {
10737    #[allow(unused_variables)]
10738    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10739        match *self {
10740            DescribeDBParametersError::DBParameterGroupNotFoundFault(ref cause) => {
10741                write!(f, "{}", cause)
10742            }
10743        }
10744    }
10745}
10746impl Error for DescribeDBParametersError {}
10747/// Errors returned by DescribeDBSubnetGroups
10748#[derive(Debug, PartialEq)]
10749pub enum DescribeDBSubnetGroupsError {
10750    /// <p> <i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
10751    DBSubnetGroupNotFoundFault(String),
10752}
10753
10754impl DescribeDBSubnetGroupsError {
10755    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDBSubnetGroupsError> {
10756        {
10757            let reader = EventReader::new(res.body.as_ref());
10758            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10759            find_start_element(&mut stack);
10760            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10761                match &parsed_error.code[..] {
10762                    "DBSubnetGroupNotFoundFault" => {
10763                        return RusotoError::Service(
10764                            DescribeDBSubnetGroupsError::DBSubnetGroupNotFoundFault(
10765                                parsed_error.message,
10766                            ),
10767                        )
10768                    }
10769                    _ => {}
10770                }
10771            }
10772        }
10773        RusotoError::Unknown(res)
10774    }
10775
10776    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10777    where
10778        T: Peek + Next,
10779    {
10780        xml_util::start_element("ErrorResponse", stack)?;
10781        XmlErrorDeserializer::deserialize("Error", stack)
10782    }
10783}
10784impl fmt::Display for DescribeDBSubnetGroupsError {
10785    #[allow(unused_variables)]
10786    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10787        match *self {
10788            DescribeDBSubnetGroupsError::DBSubnetGroupNotFoundFault(ref cause) => {
10789                write!(f, "{}", cause)
10790            }
10791        }
10792    }
10793}
10794impl Error for DescribeDBSubnetGroupsError {}
10795/// Errors returned by DescribeEngineDefaultClusterParameters
10796#[derive(Debug, PartialEq)]
10797pub enum DescribeEngineDefaultClusterParametersError {}
10798
10799impl DescribeEngineDefaultClusterParametersError {
10800    pub fn from_response(
10801        res: BufferedHttpResponse,
10802    ) -> RusotoError<DescribeEngineDefaultClusterParametersError> {
10803        {
10804            let reader = EventReader::new(res.body.as_ref());
10805            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10806            find_start_element(&mut stack);
10807            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10808                match &parsed_error.code[..] {
10809                    _ => {}
10810                }
10811            }
10812        }
10813        RusotoError::Unknown(res)
10814    }
10815
10816    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10817    where
10818        T: Peek + Next,
10819    {
10820        xml_util::start_element("ErrorResponse", stack)?;
10821        XmlErrorDeserializer::deserialize("Error", stack)
10822    }
10823}
10824impl fmt::Display for DescribeEngineDefaultClusterParametersError {
10825    #[allow(unused_variables)]
10826    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10827        match *self {}
10828    }
10829}
10830impl Error for DescribeEngineDefaultClusterParametersError {}
10831/// Errors returned by DescribeEngineDefaultParameters
10832#[derive(Debug, PartialEq)]
10833pub enum DescribeEngineDefaultParametersError {}
10834
10835impl DescribeEngineDefaultParametersError {
10836    pub fn from_response(
10837        res: BufferedHttpResponse,
10838    ) -> RusotoError<DescribeEngineDefaultParametersError> {
10839        {
10840            let reader = EventReader::new(res.body.as_ref());
10841            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10842            find_start_element(&mut stack);
10843            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10844                match &parsed_error.code[..] {
10845                    _ => {}
10846                }
10847            }
10848        }
10849        RusotoError::Unknown(res)
10850    }
10851
10852    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10853    where
10854        T: Peek + Next,
10855    {
10856        xml_util::start_element("ErrorResponse", stack)?;
10857        XmlErrorDeserializer::deserialize("Error", stack)
10858    }
10859}
10860impl fmt::Display for DescribeEngineDefaultParametersError {
10861    #[allow(unused_variables)]
10862    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10863        match *self {}
10864    }
10865}
10866impl Error for DescribeEngineDefaultParametersError {}
10867/// Errors returned by DescribeEventCategories
10868#[derive(Debug, PartialEq)]
10869pub enum DescribeEventCategoriesError {}
10870
10871impl DescribeEventCategoriesError {
10872    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEventCategoriesError> {
10873        {
10874            let reader = EventReader::new(res.body.as_ref());
10875            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10876            find_start_element(&mut stack);
10877            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10878                match &parsed_error.code[..] {
10879                    _ => {}
10880                }
10881            }
10882        }
10883        RusotoError::Unknown(res)
10884    }
10885
10886    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10887    where
10888        T: Peek + Next,
10889    {
10890        xml_util::start_element("ErrorResponse", stack)?;
10891        XmlErrorDeserializer::deserialize("Error", stack)
10892    }
10893}
10894impl fmt::Display for DescribeEventCategoriesError {
10895    #[allow(unused_variables)]
10896    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10897        match *self {}
10898    }
10899}
10900impl Error for DescribeEventCategoriesError {}
10901/// Errors returned by DescribeEventSubscriptions
10902#[derive(Debug, PartialEq)]
10903pub enum DescribeEventSubscriptionsError {
10904    /// <p>The designated subscription could not be found.</p>
10905    SubscriptionNotFoundFault(String),
10906}
10907
10908impl DescribeEventSubscriptionsError {
10909    pub fn from_response(
10910        res: BufferedHttpResponse,
10911    ) -> RusotoError<DescribeEventSubscriptionsError> {
10912        {
10913            let reader = EventReader::new(res.body.as_ref());
10914            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10915            find_start_element(&mut stack);
10916            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10917                match &parsed_error.code[..] {
10918                    "SubscriptionNotFound" => {
10919                        return RusotoError::Service(
10920                            DescribeEventSubscriptionsError::SubscriptionNotFoundFault(
10921                                parsed_error.message,
10922                            ),
10923                        )
10924                    }
10925                    _ => {}
10926                }
10927            }
10928        }
10929        RusotoError::Unknown(res)
10930    }
10931
10932    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10933    where
10934        T: Peek + Next,
10935    {
10936        xml_util::start_element("ErrorResponse", stack)?;
10937        XmlErrorDeserializer::deserialize("Error", stack)
10938    }
10939}
10940impl fmt::Display for DescribeEventSubscriptionsError {
10941    #[allow(unused_variables)]
10942    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10943        match *self {
10944            DescribeEventSubscriptionsError::SubscriptionNotFoundFault(ref cause) => {
10945                write!(f, "{}", cause)
10946            }
10947        }
10948    }
10949}
10950impl Error for DescribeEventSubscriptionsError {}
10951/// Errors returned by DescribeEvents
10952#[derive(Debug, PartialEq)]
10953pub enum DescribeEventsError {}
10954
10955impl DescribeEventsError {
10956    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEventsError> {
10957        {
10958            let reader = EventReader::new(res.body.as_ref());
10959            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10960            find_start_element(&mut stack);
10961            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10962                match &parsed_error.code[..] {
10963                    _ => {}
10964                }
10965            }
10966        }
10967        RusotoError::Unknown(res)
10968    }
10969
10970    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10971    where
10972        T: Peek + Next,
10973    {
10974        xml_util::start_element("ErrorResponse", stack)?;
10975        XmlErrorDeserializer::deserialize("Error", stack)
10976    }
10977}
10978impl fmt::Display for DescribeEventsError {
10979    #[allow(unused_variables)]
10980    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10981        match *self {}
10982    }
10983}
10984impl Error for DescribeEventsError {}
10985/// Errors returned by DescribeOrderableDBInstanceOptions
10986#[derive(Debug, PartialEq)]
10987pub enum DescribeOrderableDBInstanceOptionsError {}
10988
10989impl DescribeOrderableDBInstanceOptionsError {
10990    pub fn from_response(
10991        res: BufferedHttpResponse,
10992    ) -> RusotoError<DescribeOrderableDBInstanceOptionsError> {
10993        {
10994            let reader = EventReader::new(res.body.as_ref());
10995            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10996            find_start_element(&mut stack);
10997            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10998                match &parsed_error.code[..] {
10999                    _ => {}
11000                }
11001            }
11002        }
11003        RusotoError::Unknown(res)
11004    }
11005
11006    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11007    where
11008        T: Peek + Next,
11009    {
11010        xml_util::start_element("ErrorResponse", stack)?;
11011        XmlErrorDeserializer::deserialize("Error", stack)
11012    }
11013}
11014impl fmt::Display for DescribeOrderableDBInstanceOptionsError {
11015    #[allow(unused_variables)]
11016    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11017        match *self {}
11018    }
11019}
11020impl Error for DescribeOrderableDBInstanceOptionsError {}
11021/// Errors returned by DescribePendingMaintenanceActions
11022#[derive(Debug, PartialEq)]
11023pub enum DescribePendingMaintenanceActionsError {
11024    /// <p>The specified resource ID was not found.</p>
11025    ResourceNotFoundFault(String),
11026}
11027
11028impl DescribePendingMaintenanceActionsError {
11029    pub fn from_response(
11030        res: BufferedHttpResponse,
11031    ) -> RusotoError<DescribePendingMaintenanceActionsError> {
11032        {
11033            let reader = EventReader::new(res.body.as_ref());
11034            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11035            find_start_element(&mut stack);
11036            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11037                match &parsed_error.code[..] {
11038                    "ResourceNotFoundFault" => {
11039                        return RusotoError::Service(
11040                            DescribePendingMaintenanceActionsError::ResourceNotFoundFault(
11041                                parsed_error.message,
11042                            ),
11043                        )
11044                    }
11045                    _ => {}
11046                }
11047            }
11048        }
11049        RusotoError::Unknown(res)
11050    }
11051
11052    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11053    where
11054        T: Peek + Next,
11055    {
11056        xml_util::start_element("ErrorResponse", stack)?;
11057        XmlErrorDeserializer::deserialize("Error", stack)
11058    }
11059}
11060impl fmt::Display for DescribePendingMaintenanceActionsError {
11061    #[allow(unused_variables)]
11062    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11063        match *self {
11064            DescribePendingMaintenanceActionsError::ResourceNotFoundFault(ref cause) => {
11065                write!(f, "{}", cause)
11066            }
11067        }
11068    }
11069}
11070impl Error for DescribePendingMaintenanceActionsError {}
11071/// Errors returned by DescribeValidDBInstanceModifications
11072#[derive(Debug, PartialEq)]
11073pub enum DescribeValidDBInstanceModificationsError {
11074    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
11075    DBInstanceNotFoundFault(String),
11076    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
11077    InvalidDBInstanceStateFault(String),
11078}
11079
11080impl DescribeValidDBInstanceModificationsError {
11081    pub fn from_response(
11082        res: BufferedHttpResponse,
11083    ) -> RusotoError<DescribeValidDBInstanceModificationsError> {
11084        {
11085            let reader = EventReader::new(res.body.as_ref());
11086            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11087            find_start_element(&mut stack);
11088            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11089                match &parsed_error.code[..] {
11090                    "DBInstanceNotFound" => {
11091                        return RusotoError::Service(
11092                            DescribeValidDBInstanceModificationsError::DBInstanceNotFoundFault(
11093                                parsed_error.message,
11094                            ),
11095                        )
11096                    }
11097                    "InvalidDBInstanceState" => {
11098                        return RusotoError::Service(
11099                            DescribeValidDBInstanceModificationsError::InvalidDBInstanceStateFault(
11100                                parsed_error.message,
11101                            ),
11102                        )
11103                    }
11104                    _ => {}
11105                }
11106            }
11107        }
11108        RusotoError::Unknown(res)
11109    }
11110
11111    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11112    where
11113        T: Peek + Next,
11114    {
11115        xml_util::start_element("ErrorResponse", stack)?;
11116        XmlErrorDeserializer::deserialize("Error", stack)
11117    }
11118}
11119impl fmt::Display for DescribeValidDBInstanceModificationsError {
11120    #[allow(unused_variables)]
11121    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11122        match *self {
11123            DescribeValidDBInstanceModificationsError::DBInstanceNotFoundFault(ref cause) => {
11124                write!(f, "{}", cause)
11125            }
11126            DescribeValidDBInstanceModificationsError::InvalidDBInstanceStateFault(ref cause) => {
11127                write!(f, "{}", cause)
11128            }
11129        }
11130    }
11131}
11132impl Error for DescribeValidDBInstanceModificationsError {}
11133/// Errors returned by FailoverDBCluster
11134#[derive(Debug, PartialEq)]
11135pub enum FailoverDBClusterError {
11136    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
11137    DBClusterNotFoundFault(String),
11138    /// <p>The DB cluster is not in a valid state.</p>
11139    InvalidDBClusterStateFault(String),
11140    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
11141    InvalidDBInstanceStateFault(String),
11142}
11143
11144impl FailoverDBClusterError {
11145    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<FailoverDBClusterError> {
11146        {
11147            let reader = EventReader::new(res.body.as_ref());
11148            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11149            find_start_element(&mut stack);
11150            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11151                match &parsed_error.code[..] {
11152                    "DBClusterNotFoundFault" => {
11153                        return RusotoError::Service(
11154                            FailoverDBClusterError::DBClusterNotFoundFault(parsed_error.message),
11155                        )
11156                    }
11157                    "InvalidDBClusterStateFault" => {
11158                        return RusotoError::Service(
11159                            FailoverDBClusterError::InvalidDBClusterStateFault(
11160                                parsed_error.message,
11161                            ),
11162                        )
11163                    }
11164                    "InvalidDBInstanceState" => {
11165                        return RusotoError::Service(
11166                            FailoverDBClusterError::InvalidDBInstanceStateFault(
11167                                parsed_error.message,
11168                            ),
11169                        )
11170                    }
11171                    _ => {}
11172                }
11173            }
11174        }
11175        RusotoError::Unknown(res)
11176    }
11177
11178    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11179    where
11180        T: Peek + Next,
11181    {
11182        xml_util::start_element("ErrorResponse", stack)?;
11183        XmlErrorDeserializer::deserialize("Error", stack)
11184    }
11185}
11186impl fmt::Display for FailoverDBClusterError {
11187    #[allow(unused_variables)]
11188    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11189        match *self {
11190            FailoverDBClusterError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
11191            FailoverDBClusterError::InvalidDBClusterStateFault(ref cause) => write!(f, "{}", cause),
11192            FailoverDBClusterError::InvalidDBInstanceStateFault(ref cause) => {
11193                write!(f, "{}", cause)
11194            }
11195        }
11196    }
11197}
11198impl Error for FailoverDBClusterError {}
11199/// Errors returned by ListTagsForResource
11200#[derive(Debug, PartialEq)]
11201pub enum ListTagsForResourceError {
11202    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
11203    DBClusterNotFoundFault(String),
11204    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
11205    DBInstanceNotFoundFault(String),
11206    /// <p> <i>DBSnapshotIdentifier</i> does not refer to an existing DB snapshot.</p>
11207    DBSnapshotNotFoundFault(String),
11208}
11209
11210impl ListTagsForResourceError {
11211    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
11212        {
11213            let reader = EventReader::new(res.body.as_ref());
11214            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11215            find_start_element(&mut stack);
11216            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11217                match &parsed_error.code[..] {
11218                    "DBClusterNotFoundFault" => {
11219                        return RusotoError::Service(
11220                            ListTagsForResourceError::DBClusterNotFoundFault(parsed_error.message),
11221                        )
11222                    }
11223                    "DBInstanceNotFound" => {
11224                        return RusotoError::Service(
11225                            ListTagsForResourceError::DBInstanceNotFoundFault(parsed_error.message),
11226                        )
11227                    }
11228                    "DBSnapshotNotFound" => {
11229                        return RusotoError::Service(
11230                            ListTagsForResourceError::DBSnapshotNotFoundFault(parsed_error.message),
11231                        )
11232                    }
11233                    _ => {}
11234                }
11235            }
11236        }
11237        RusotoError::Unknown(res)
11238    }
11239
11240    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11241    where
11242        T: Peek + Next,
11243    {
11244        xml_util::start_element("ErrorResponse", stack)?;
11245        XmlErrorDeserializer::deserialize("Error", stack)
11246    }
11247}
11248impl fmt::Display for ListTagsForResourceError {
11249    #[allow(unused_variables)]
11250    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11251        match *self {
11252            ListTagsForResourceError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
11253            ListTagsForResourceError::DBInstanceNotFoundFault(ref cause) => write!(f, "{}", cause),
11254            ListTagsForResourceError::DBSnapshotNotFoundFault(ref cause) => write!(f, "{}", cause),
11255        }
11256    }
11257}
11258impl Error for ListTagsForResourceError {}
11259/// Errors returned by ModifyDBCluster
11260#[derive(Debug, PartialEq)]
11261pub enum ModifyDBClusterError {
11262    /// <p>User already has a DB cluster with the given identifier.</p>
11263    DBClusterAlreadyExistsFault(String),
11264    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
11265    DBClusterNotFoundFault(String),
11266    /// <p> <i>DBClusterParameterGroupName</i> does not refer to an existing DB Cluster parameter group.</p>
11267    DBClusterParameterGroupNotFoundFault(String),
11268    /// <p> <i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
11269    DBSubnetGroupNotFoundFault(String),
11270    /// <p>The DB cluster is not in a valid state.</p>
11271    InvalidDBClusterStateFault(String),
11272    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
11273    InvalidDBInstanceStateFault(String),
11274    /// <p>The state of the DB security group does not allow deletion.</p>
11275    InvalidDBSecurityGroupStateFault(String),
11276    /// <p>The DB subnet group cannot be deleted because it is in use.</p>
11277    InvalidDBSubnetGroupStateFault(String),
11278    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
11279    InvalidSubnet(String),
11280    /// <p>DB subnet group does not cover all Availability Zones after it is created because users' change.</p>
11281    InvalidVPCNetworkStateFault(String),
11282    /// <p>Request would result in user exceeding the allowed amount of storage available across all DB instances.</p>
11283    StorageQuotaExceededFault(String),
11284}
11285
11286impl ModifyDBClusterError {
11287    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyDBClusterError> {
11288        {
11289            let reader = EventReader::new(res.body.as_ref());
11290            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11291            find_start_element(&mut stack);
11292            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11293                match &parsed_error.code[..] {
11294                    "DBClusterAlreadyExistsFault" => {
11295                        return RusotoError::Service(
11296                            ModifyDBClusterError::DBClusterAlreadyExistsFault(parsed_error.message),
11297                        )
11298                    }
11299                    "DBClusterNotFoundFault" => {
11300                        return RusotoError::Service(ModifyDBClusterError::DBClusterNotFoundFault(
11301                            parsed_error.message,
11302                        ))
11303                    }
11304                    "DBClusterParameterGroupNotFound" => {
11305                        return RusotoError::Service(
11306                            ModifyDBClusterError::DBClusterParameterGroupNotFoundFault(
11307                                parsed_error.message,
11308                            ),
11309                        )
11310                    }
11311                    "DBSubnetGroupNotFoundFault" => {
11312                        return RusotoError::Service(
11313                            ModifyDBClusterError::DBSubnetGroupNotFoundFault(parsed_error.message),
11314                        )
11315                    }
11316                    "InvalidDBClusterStateFault" => {
11317                        return RusotoError::Service(
11318                            ModifyDBClusterError::InvalidDBClusterStateFault(parsed_error.message),
11319                        )
11320                    }
11321                    "InvalidDBInstanceState" => {
11322                        return RusotoError::Service(
11323                            ModifyDBClusterError::InvalidDBInstanceStateFault(parsed_error.message),
11324                        )
11325                    }
11326                    "InvalidDBSecurityGroupState" => {
11327                        return RusotoError::Service(
11328                            ModifyDBClusterError::InvalidDBSecurityGroupStateFault(
11329                                parsed_error.message,
11330                            ),
11331                        )
11332                    }
11333                    "InvalidDBSubnetGroupStateFault" => {
11334                        return RusotoError::Service(
11335                            ModifyDBClusterError::InvalidDBSubnetGroupStateFault(
11336                                parsed_error.message,
11337                            ),
11338                        )
11339                    }
11340                    "InvalidSubnet" => {
11341                        return RusotoError::Service(ModifyDBClusterError::InvalidSubnet(
11342                            parsed_error.message,
11343                        ))
11344                    }
11345                    "InvalidVPCNetworkStateFault" => {
11346                        return RusotoError::Service(
11347                            ModifyDBClusterError::InvalidVPCNetworkStateFault(parsed_error.message),
11348                        )
11349                    }
11350                    "StorageQuotaExceeded" => {
11351                        return RusotoError::Service(
11352                            ModifyDBClusterError::StorageQuotaExceededFault(parsed_error.message),
11353                        )
11354                    }
11355                    _ => {}
11356                }
11357            }
11358        }
11359        RusotoError::Unknown(res)
11360    }
11361
11362    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11363    where
11364        T: Peek + Next,
11365    {
11366        xml_util::start_element("ErrorResponse", stack)?;
11367        XmlErrorDeserializer::deserialize("Error", stack)
11368    }
11369}
11370impl fmt::Display for ModifyDBClusterError {
11371    #[allow(unused_variables)]
11372    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11373        match *self {
11374            ModifyDBClusterError::DBClusterAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
11375            ModifyDBClusterError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
11376            ModifyDBClusterError::DBClusterParameterGroupNotFoundFault(ref cause) => {
11377                write!(f, "{}", cause)
11378            }
11379            ModifyDBClusterError::DBSubnetGroupNotFoundFault(ref cause) => write!(f, "{}", cause),
11380            ModifyDBClusterError::InvalidDBClusterStateFault(ref cause) => write!(f, "{}", cause),
11381            ModifyDBClusterError::InvalidDBInstanceStateFault(ref cause) => write!(f, "{}", cause),
11382            ModifyDBClusterError::InvalidDBSecurityGroupStateFault(ref cause) => {
11383                write!(f, "{}", cause)
11384            }
11385            ModifyDBClusterError::InvalidDBSubnetGroupStateFault(ref cause) => {
11386                write!(f, "{}", cause)
11387            }
11388            ModifyDBClusterError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
11389            ModifyDBClusterError::InvalidVPCNetworkStateFault(ref cause) => write!(f, "{}", cause),
11390            ModifyDBClusterError::StorageQuotaExceededFault(ref cause) => write!(f, "{}", cause),
11391        }
11392    }
11393}
11394impl Error for ModifyDBClusterError {}
11395/// Errors returned by ModifyDBClusterParameterGroup
11396#[derive(Debug, PartialEq)]
11397pub enum ModifyDBClusterParameterGroupError {
11398    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
11399    DBParameterGroupNotFoundFault(String),
11400    /// <p>The DB parameter group is in use or is in an invalid state. If you are attempting to delete the parameter group, you cannot delete it when the parameter group is in this state.</p>
11401    InvalidDBParameterGroupStateFault(String),
11402}
11403
11404impl ModifyDBClusterParameterGroupError {
11405    pub fn from_response(
11406        res: BufferedHttpResponse,
11407    ) -> RusotoError<ModifyDBClusterParameterGroupError> {
11408        {
11409            let reader = EventReader::new(res.body.as_ref());
11410            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11411            find_start_element(&mut stack);
11412            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11413                match &parsed_error.code[..] {
11414                    "DBParameterGroupNotFound" => {
11415                        return RusotoError::Service(
11416                            ModifyDBClusterParameterGroupError::DBParameterGroupNotFoundFault(
11417                                parsed_error.message,
11418                            ),
11419                        )
11420                    }
11421                    "InvalidDBParameterGroupState" => {
11422                        return RusotoError::Service(
11423                            ModifyDBClusterParameterGroupError::InvalidDBParameterGroupStateFault(
11424                                parsed_error.message,
11425                            ),
11426                        )
11427                    }
11428                    _ => {}
11429                }
11430            }
11431        }
11432        RusotoError::Unknown(res)
11433    }
11434
11435    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11436    where
11437        T: Peek + Next,
11438    {
11439        xml_util::start_element("ErrorResponse", stack)?;
11440        XmlErrorDeserializer::deserialize("Error", stack)
11441    }
11442}
11443impl fmt::Display for ModifyDBClusterParameterGroupError {
11444    #[allow(unused_variables)]
11445    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11446        match *self {
11447            ModifyDBClusterParameterGroupError::DBParameterGroupNotFoundFault(ref cause) => {
11448                write!(f, "{}", cause)
11449            }
11450            ModifyDBClusterParameterGroupError::InvalidDBParameterGroupStateFault(ref cause) => {
11451                write!(f, "{}", cause)
11452            }
11453        }
11454    }
11455}
11456impl Error for ModifyDBClusterParameterGroupError {}
11457/// Errors returned by ModifyDBClusterSnapshotAttribute
11458#[derive(Debug, PartialEq)]
11459pub enum ModifyDBClusterSnapshotAttributeError {
11460    /// <p> <i>DBClusterSnapshotIdentifier</i> does not refer to an existing DB cluster snapshot.</p>
11461    DBClusterSnapshotNotFoundFault(String),
11462    /// <p>The supplied value is not a valid DB cluster snapshot state.</p>
11463    InvalidDBClusterSnapshotStateFault(String),
11464    /// <p>You have exceeded the maximum number of accounts that you can share a manual DB snapshot with.</p>
11465    SharedSnapshotQuotaExceededFault(String),
11466}
11467
11468impl ModifyDBClusterSnapshotAttributeError {
11469    pub fn from_response(
11470        res: BufferedHttpResponse,
11471    ) -> RusotoError<ModifyDBClusterSnapshotAttributeError> {
11472        {
11473            let reader = EventReader::new(res.body.as_ref());
11474            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11475            find_start_element(&mut stack);
11476            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11477                match &parsed_error.code[..] {
11478                    "DBClusterSnapshotNotFoundFault" => {
11479                        return RusotoError::Service(
11480                            ModifyDBClusterSnapshotAttributeError::DBClusterSnapshotNotFoundFault(
11481                                parsed_error.message,
11482                            ),
11483                        )
11484                    }
11485                    "InvalidDBClusterSnapshotStateFault" => return RusotoError::Service(
11486                        ModifyDBClusterSnapshotAttributeError::InvalidDBClusterSnapshotStateFault(
11487                            parsed_error.message,
11488                        ),
11489                    ),
11490                    "SharedSnapshotQuotaExceeded" => {
11491                        return RusotoError::Service(
11492                            ModifyDBClusterSnapshotAttributeError::SharedSnapshotQuotaExceededFault(
11493                                parsed_error.message,
11494                            ),
11495                        )
11496                    }
11497                    _ => {}
11498                }
11499            }
11500        }
11501        RusotoError::Unknown(res)
11502    }
11503
11504    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11505    where
11506        T: Peek + Next,
11507    {
11508        xml_util::start_element("ErrorResponse", stack)?;
11509        XmlErrorDeserializer::deserialize("Error", stack)
11510    }
11511}
11512impl fmt::Display for ModifyDBClusterSnapshotAttributeError {
11513    #[allow(unused_variables)]
11514    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11515        match *self {
11516            ModifyDBClusterSnapshotAttributeError::DBClusterSnapshotNotFoundFault(ref cause) => {
11517                write!(f, "{}", cause)
11518            }
11519            ModifyDBClusterSnapshotAttributeError::InvalidDBClusterSnapshotStateFault(
11520                ref cause,
11521            ) => write!(f, "{}", cause),
11522            ModifyDBClusterSnapshotAttributeError::SharedSnapshotQuotaExceededFault(ref cause) => {
11523                write!(f, "{}", cause)
11524            }
11525        }
11526    }
11527}
11528impl Error for ModifyDBClusterSnapshotAttributeError {}
11529/// Errors returned by ModifyDBInstance
11530#[derive(Debug, PartialEq)]
11531pub enum ModifyDBInstanceError {
11532    /// <p>Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.</p> <p>Neptune may not also be authorized via IAM to perform necessary actions on your behalf.</p>
11533    AuthorizationNotFoundFault(String),
11534    /// <p> <i>CertificateIdentifier</i> does not refer to an existing certificate.</p>
11535    CertificateNotFoundFault(String),
11536    /// <p>User already has a DB instance with the given identifier.</p>
11537    DBInstanceAlreadyExistsFault(String),
11538    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
11539    DBInstanceNotFoundFault(String),
11540    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
11541    DBParameterGroupNotFoundFault(String),
11542    /// <p> <i>DBSecurityGroupName</i> does not refer to an existing DB security group.</p>
11543    DBSecurityGroupNotFoundFault(String),
11544    /// <p>The DB upgrade failed because a resource the DB depends on could not be modified.</p>
11545    DBUpgradeDependencyFailureFault(String),
11546    /// <p> <i>Domain</i> does not refer to an existing Active Directory Domain.</p>
11547    DomainNotFoundFault(String),
11548    /// <p>Specified DB instance class is not available in the specified Availability Zone.</p>
11549    InsufficientDBInstanceCapacityFault(String),
11550    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
11551    InvalidDBInstanceStateFault(String),
11552    /// <p>The state of the DB security group does not allow deletion.</p>
11553    InvalidDBSecurityGroupStateFault(String),
11554    /// <p>DB subnet group does not cover all Availability Zones after it is created because users' change.</p>
11555    InvalidVPCNetworkStateFault(String),
11556    /// <p>The designated option group could not be found.</p>
11557    OptionGroupNotFoundFault(String),
11558    /// <p>Provisioned IOPS not available in the specified Availability Zone.</p>
11559    ProvisionedIopsNotAvailableInAZFault(String),
11560    /// <p>Request would result in user exceeding the allowed amount of storage available across all DB instances.</p>
11561    StorageQuotaExceededFault(String),
11562    /// <p> <i>StorageType</i> specified cannot be associated with the DB Instance.</p>
11563    StorageTypeNotSupportedFault(String),
11564}
11565
11566impl ModifyDBInstanceError {
11567    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyDBInstanceError> {
11568        {
11569            let reader = EventReader::new(res.body.as_ref());
11570            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11571            find_start_element(&mut stack);
11572            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11573                match &parsed_error.code[..] {
11574                    "AuthorizationNotFound" => {
11575                        return RusotoError::Service(
11576                            ModifyDBInstanceError::AuthorizationNotFoundFault(parsed_error.message),
11577                        )
11578                    }
11579                    "CertificateNotFound" => {
11580                        return RusotoError::Service(
11581                            ModifyDBInstanceError::CertificateNotFoundFault(parsed_error.message),
11582                        )
11583                    }
11584                    "DBInstanceAlreadyExists" => {
11585                        return RusotoError::Service(
11586                            ModifyDBInstanceError::DBInstanceAlreadyExistsFault(
11587                                parsed_error.message,
11588                            ),
11589                        )
11590                    }
11591                    "DBInstanceNotFound" => {
11592                        return RusotoError::Service(
11593                            ModifyDBInstanceError::DBInstanceNotFoundFault(parsed_error.message),
11594                        )
11595                    }
11596                    "DBParameterGroupNotFound" => {
11597                        return RusotoError::Service(
11598                            ModifyDBInstanceError::DBParameterGroupNotFoundFault(
11599                                parsed_error.message,
11600                            ),
11601                        )
11602                    }
11603                    "DBSecurityGroupNotFound" => {
11604                        return RusotoError::Service(
11605                            ModifyDBInstanceError::DBSecurityGroupNotFoundFault(
11606                                parsed_error.message,
11607                            ),
11608                        )
11609                    }
11610                    "DBUpgradeDependencyFailure" => {
11611                        return RusotoError::Service(
11612                            ModifyDBInstanceError::DBUpgradeDependencyFailureFault(
11613                                parsed_error.message,
11614                            ),
11615                        )
11616                    }
11617                    "DomainNotFoundFault" => {
11618                        return RusotoError::Service(ModifyDBInstanceError::DomainNotFoundFault(
11619                            parsed_error.message,
11620                        ))
11621                    }
11622                    "InsufficientDBInstanceCapacity" => {
11623                        return RusotoError::Service(
11624                            ModifyDBInstanceError::InsufficientDBInstanceCapacityFault(
11625                                parsed_error.message,
11626                            ),
11627                        )
11628                    }
11629                    "InvalidDBInstanceState" => {
11630                        return RusotoError::Service(
11631                            ModifyDBInstanceError::InvalidDBInstanceStateFault(
11632                                parsed_error.message,
11633                            ),
11634                        )
11635                    }
11636                    "InvalidDBSecurityGroupState" => {
11637                        return RusotoError::Service(
11638                            ModifyDBInstanceError::InvalidDBSecurityGroupStateFault(
11639                                parsed_error.message,
11640                            ),
11641                        )
11642                    }
11643                    "InvalidVPCNetworkStateFault" => {
11644                        return RusotoError::Service(
11645                            ModifyDBInstanceError::InvalidVPCNetworkStateFault(
11646                                parsed_error.message,
11647                            ),
11648                        )
11649                    }
11650                    "OptionGroupNotFoundFault" => {
11651                        return RusotoError::Service(
11652                            ModifyDBInstanceError::OptionGroupNotFoundFault(parsed_error.message),
11653                        )
11654                    }
11655                    "ProvisionedIopsNotAvailableInAZFault" => {
11656                        return RusotoError::Service(
11657                            ModifyDBInstanceError::ProvisionedIopsNotAvailableInAZFault(
11658                                parsed_error.message,
11659                            ),
11660                        )
11661                    }
11662                    "StorageQuotaExceeded" => {
11663                        return RusotoError::Service(
11664                            ModifyDBInstanceError::StorageQuotaExceededFault(parsed_error.message),
11665                        )
11666                    }
11667                    "StorageTypeNotSupported" => {
11668                        return RusotoError::Service(
11669                            ModifyDBInstanceError::StorageTypeNotSupportedFault(
11670                                parsed_error.message,
11671                            ),
11672                        )
11673                    }
11674                    _ => {}
11675                }
11676            }
11677        }
11678        RusotoError::Unknown(res)
11679    }
11680
11681    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11682    where
11683        T: Peek + Next,
11684    {
11685        xml_util::start_element("ErrorResponse", stack)?;
11686        XmlErrorDeserializer::deserialize("Error", stack)
11687    }
11688}
11689impl fmt::Display for ModifyDBInstanceError {
11690    #[allow(unused_variables)]
11691    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11692        match *self {
11693            ModifyDBInstanceError::AuthorizationNotFoundFault(ref cause) => write!(f, "{}", cause),
11694            ModifyDBInstanceError::CertificateNotFoundFault(ref cause) => write!(f, "{}", cause),
11695            ModifyDBInstanceError::DBInstanceAlreadyExistsFault(ref cause) => {
11696                write!(f, "{}", cause)
11697            }
11698            ModifyDBInstanceError::DBInstanceNotFoundFault(ref cause) => write!(f, "{}", cause),
11699            ModifyDBInstanceError::DBParameterGroupNotFoundFault(ref cause) => {
11700                write!(f, "{}", cause)
11701            }
11702            ModifyDBInstanceError::DBSecurityGroupNotFoundFault(ref cause) => {
11703                write!(f, "{}", cause)
11704            }
11705            ModifyDBInstanceError::DBUpgradeDependencyFailureFault(ref cause) => {
11706                write!(f, "{}", cause)
11707            }
11708            ModifyDBInstanceError::DomainNotFoundFault(ref cause) => write!(f, "{}", cause),
11709            ModifyDBInstanceError::InsufficientDBInstanceCapacityFault(ref cause) => {
11710                write!(f, "{}", cause)
11711            }
11712            ModifyDBInstanceError::InvalidDBInstanceStateFault(ref cause) => write!(f, "{}", cause),
11713            ModifyDBInstanceError::InvalidDBSecurityGroupStateFault(ref cause) => {
11714                write!(f, "{}", cause)
11715            }
11716            ModifyDBInstanceError::InvalidVPCNetworkStateFault(ref cause) => write!(f, "{}", cause),
11717            ModifyDBInstanceError::OptionGroupNotFoundFault(ref cause) => write!(f, "{}", cause),
11718            ModifyDBInstanceError::ProvisionedIopsNotAvailableInAZFault(ref cause) => {
11719                write!(f, "{}", cause)
11720            }
11721            ModifyDBInstanceError::StorageQuotaExceededFault(ref cause) => write!(f, "{}", cause),
11722            ModifyDBInstanceError::StorageTypeNotSupportedFault(ref cause) => {
11723                write!(f, "{}", cause)
11724            }
11725        }
11726    }
11727}
11728impl Error for ModifyDBInstanceError {}
11729/// Errors returned by ModifyDBParameterGroup
11730#[derive(Debug, PartialEq)]
11731pub enum ModifyDBParameterGroupError {
11732    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
11733    DBParameterGroupNotFoundFault(String),
11734    /// <p>The DB parameter group is in use or is in an invalid state. If you are attempting to delete the parameter group, you cannot delete it when the parameter group is in this state.</p>
11735    InvalidDBParameterGroupStateFault(String),
11736}
11737
11738impl ModifyDBParameterGroupError {
11739    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyDBParameterGroupError> {
11740        {
11741            let reader = EventReader::new(res.body.as_ref());
11742            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11743            find_start_element(&mut stack);
11744            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11745                match &parsed_error.code[..] {
11746                    "DBParameterGroupNotFound" => {
11747                        return RusotoError::Service(
11748                            ModifyDBParameterGroupError::DBParameterGroupNotFoundFault(
11749                                parsed_error.message,
11750                            ),
11751                        )
11752                    }
11753                    "InvalidDBParameterGroupState" => {
11754                        return RusotoError::Service(
11755                            ModifyDBParameterGroupError::InvalidDBParameterGroupStateFault(
11756                                parsed_error.message,
11757                            ),
11758                        )
11759                    }
11760                    _ => {}
11761                }
11762            }
11763        }
11764        RusotoError::Unknown(res)
11765    }
11766
11767    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11768    where
11769        T: Peek + Next,
11770    {
11771        xml_util::start_element("ErrorResponse", stack)?;
11772        XmlErrorDeserializer::deserialize("Error", stack)
11773    }
11774}
11775impl fmt::Display for ModifyDBParameterGroupError {
11776    #[allow(unused_variables)]
11777    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11778        match *self {
11779            ModifyDBParameterGroupError::DBParameterGroupNotFoundFault(ref cause) => {
11780                write!(f, "{}", cause)
11781            }
11782            ModifyDBParameterGroupError::InvalidDBParameterGroupStateFault(ref cause) => {
11783                write!(f, "{}", cause)
11784            }
11785        }
11786    }
11787}
11788impl Error for ModifyDBParameterGroupError {}
11789/// Errors returned by ModifyDBSubnetGroup
11790#[derive(Debug, PartialEq)]
11791pub enum ModifyDBSubnetGroupError {
11792    /// <p>Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.</p>
11793    DBSubnetGroupDoesNotCoverEnoughAZs(String),
11794    /// <p> <i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
11795    DBSubnetGroupNotFoundFault(String),
11796    /// <p>Request would result in user exceeding the allowed number of subnets in a DB subnet groups.</p>
11797    DBSubnetQuotaExceededFault(String),
11798    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
11799    InvalidSubnet(String),
11800    /// <p>The DB subnet is already in use in the Availability Zone.</p>
11801    SubnetAlreadyInUse(String),
11802}
11803
11804impl ModifyDBSubnetGroupError {
11805    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyDBSubnetGroupError> {
11806        {
11807            let reader = EventReader::new(res.body.as_ref());
11808            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11809            find_start_element(&mut stack);
11810            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11811                match &parsed_error.code[..] {
11812                    "DBSubnetGroupDoesNotCoverEnoughAZs" => {
11813                        return RusotoError::Service(
11814                            ModifyDBSubnetGroupError::DBSubnetGroupDoesNotCoverEnoughAZs(
11815                                parsed_error.message,
11816                            ),
11817                        )
11818                    }
11819                    "DBSubnetGroupNotFoundFault" => {
11820                        return RusotoError::Service(
11821                            ModifyDBSubnetGroupError::DBSubnetGroupNotFoundFault(
11822                                parsed_error.message,
11823                            ),
11824                        )
11825                    }
11826                    "DBSubnetQuotaExceededFault" => {
11827                        return RusotoError::Service(
11828                            ModifyDBSubnetGroupError::DBSubnetQuotaExceededFault(
11829                                parsed_error.message,
11830                            ),
11831                        )
11832                    }
11833                    "InvalidSubnet" => {
11834                        return RusotoError::Service(ModifyDBSubnetGroupError::InvalidSubnet(
11835                            parsed_error.message,
11836                        ))
11837                    }
11838                    "SubnetAlreadyInUse" => {
11839                        return RusotoError::Service(ModifyDBSubnetGroupError::SubnetAlreadyInUse(
11840                            parsed_error.message,
11841                        ))
11842                    }
11843                    _ => {}
11844                }
11845            }
11846        }
11847        RusotoError::Unknown(res)
11848    }
11849
11850    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11851    where
11852        T: Peek + Next,
11853    {
11854        xml_util::start_element("ErrorResponse", stack)?;
11855        XmlErrorDeserializer::deserialize("Error", stack)
11856    }
11857}
11858impl fmt::Display for ModifyDBSubnetGroupError {
11859    #[allow(unused_variables)]
11860    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11861        match *self {
11862            ModifyDBSubnetGroupError::DBSubnetGroupDoesNotCoverEnoughAZs(ref cause) => {
11863                write!(f, "{}", cause)
11864            }
11865            ModifyDBSubnetGroupError::DBSubnetGroupNotFoundFault(ref cause) => {
11866                write!(f, "{}", cause)
11867            }
11868            ModifyDBSubnetGroupError::DBSubnetQuotaExceededFault(ref cause) => {
11869                write!(f, "{}", cause)
11870            }
11871            ModifyDBSubnetGroupError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
11872            ModifyDBSubnetGroupError::SubnetAlreadyInUse(ref cause) => write!(f, "{}", cause),
11873        }
11874    }
11875}
11876impl Error for ModifyDBSubnetGroupError {}
11877/// Errors returned by ModifyEventSubscription
11878#[derive(Debug, PartialEq)]
11879pub enum ModifyEventSubscriptionError {
11880    /// <p>You have exceeded the number of events you can subscribe to.</p>
11881    EventSubscriptionQuotaExceededFault(String),
11882    /// <p>The SNS topic is invalid.</p>
11883    SNSInvalidTopicFault(String),
11884    /// <p>There is no SNS authorization.</p>
11885    SNSNoAuthorizationFault(String),
11886    /// <p>The ARN of the SNS topic could not be found.</p>
11887    SNSTopicArnNotFoundFault(String),
11888    /// <p>The designated subscription category could not be found.</p>
11889    SubscriptionCategoryNotFoundFault(String),
11890    /// <p>The designated subscription could not be found.</p>
11891    SubscriptionNotFoundFault(String),
11892}
11893
11894impl ModifyEventSubscriptionError {
11895    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyEventSubscriptionError> {
11896        {
11897            let reader = EventReader::new(res.body.as_ref());
11898            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11899            find_start_element(&mut stack);
11900            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11901                match &parsed_error.code[..] {
11902                    "EventSubscriptionQuotaExceeded" => {
11903                        return RusotoError::Service(
11904                            ModifyEventSubscriptionError::EventSubscriptionQuotaExceededFault(
11905                                parsed_error.message,
11906                            ),
11907                        )
11908                    }
11909                    "SNSInvalidTopic" => {
11910                        return RusotoError::Service(
11911                            ModifyEventSubscriptionError::SNSInvalidTopicFault(
11912                                parsed_error.message,
11913                            ),
11914                        )
11915                    }
11916                    "SNSNoAuthorization" => {
11917                        return RusotoError::Service(
11918                            ModifyEventSubscriptionError::SNSNoAuthorizationFault(
11919                                parsed_error.message,
11920                            ),
11921                        )
11922                    }
11923                    "SNSTopicArnNotFound" => {
11924                        return RusotoError::Service(
11925                            ModifyEventSubscriptionError::SNSTopicArnNotFoundFault(
11926                                parsed_error.message,
11927                            ),
11928                        )
11929                    }
11930                    "SubscriptionCategoryNotFound" => {
11931                        return RusotoError::Service(
11932                            ModifyEventSubscriptionError::SubscriptionCategoryNotFoundFault(
11933                                parsed_error.message,
11934                            ),
11935                        )
11936                    }
11937                    "SubscriptionNotFound" => {
11938                        return RusotoError::Service(
11939                            ModifyEventSubscriptionError::SubscriptionNotFoundFault(
11940                                parsed_error.message,
11941                            ),
11942                        )
11943                    }
11944                    _ => {}
11945                }
11946            }
11947        }
11948        RusotoError::Unknown(res)
11949    }
11950
11951    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11952    where
11953        T: Peek + Next,
11954    {
11955        xml_util::start_element("ErrorResponse", stack)?;
11956        XmlErrorDeserializer::deserialize("Error", stack)
11957    }
11958}
11959impl fmt::Display for ModifyEventSubscriptionError {
11960    #[allow(unused_variables)]
11961    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11962        match *self {
11963            ModifyEventSubscriptionError::EventSubscriptionQuotaExceededFault(ref cause) => {
11964                write!(f, "{}", cause)
11965            }
11966            ModifyEventSubscriptionError::SNSInvalidTopicFault(ref cause) => write!(f, "{}", cause),
11967            ModifyEventSubscriptionError::SNSNoAuthorizationFault(ref cause) => {
11968                write!(f, "{}", cause)
11969            }
11970            ModifyEventSubscriptionError::SNSTopicArnNotFoundFault(ref cause) => {
11971                write!(f, "{}", cause)
11972            }
11973            ModifyEventSubscriptionError::SubscriptionCategoryNotFoundFault(ref cause) => {
11974                write!(f, "{}", cause)
11975            }
11976            ModifyEventSubscriptionError::SubscriptionNotFoundFault(ref cause) => {
11977                write!(f, "{}", cause)
11978            }
11979        }
11980    }
11981}
11982impl Error for ModifyEventSubscriptionError {}
11983/// Errors returned by PromoteReadReplicaDBCluster
11984#[derive(Debug, PartialEq)]
11985pub enum PromoteReadReplicaDBClusterError {
11986    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
11987    DBClusterNotFoundFault(String),
11988    /// <p>The DB cluster is not in a valid state.</p>
11989    InvalidDBClusterStateFault(String),
11990}
11991
11992impl PromoteReadReplicaDBClusterError {
11993    pub fn from_response(
11994        res: BufferedHttpResponse,
11995    ) -> RusotoError<PromoteReadReplicaDBClusterError> {
11996        {
11997            let reader = EventReader::new(res.body.as_ref());
11998            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11999            find_start_element(&mut stack);
12000            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12001                match &parsed_error.code[..] {
12002                    "DBClusterNotFoundFault" => {
12003                        return RusotoError::Service(
12004                            PromoteReadReplicaDBClusterError::DBClusterNotFoundFault(
12005                                parsed_error.message,
12006                            ),
12007                        )
12008                    }
12009                    "InvalidDBClusterStateFault" => {
12010                        return RusotoError::Service(
12011                            PromoteReadReplicaDBClusterError::InvalidDBClusterStateFault(
12012                                parsed_error.message,
12013                            ),
12014                        )
12015                    }
12016                    _ => {}
12017                }
12018            }
12019        }
12020        RusotoError::Unknown(res)
12021    }
12022
12023    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12024    where
12025        T: Peek + Next,
12026    {
12027        xml_util::start_element("ErrorResponse", stack)?;
12028        XmlErrorDeserializer::deserialize("Error", stack)
12029    }
12030}
12031impl fmt::Display for PromoteReadReplicaDBClusterError {
12032    #[allow(unused_variables)]
12033    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12034        match *self {
12035            PromoteReadReplicaDBClusterError::DBClusterNotFoundFault(ref cause) => {
12036                write!(f, "{}", cause)
12037            }
12038            PromoteReadReplicaDBClusterError::InvalidDBClusterStateFault(ref cause) => {
12039                write!(f, "{}", cause)
12040            }
12041        }
12042    }
12043}
12044impl Error for PromoteReadReplicaDBClusterError {}
12045/// Errors returned by RebootDBInstance
12046#[derive(Debug, PartialEq)]
12047pub enum RebootDBInstanceError {
12048    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
12049    DBInstanceNotFoundFault(String),
12050    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
12051    InvalidDBInstanceStateFault(String),
12052}
12053
12054impl RebootDBInstanceError {
12055    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RebootDBInstanceError> {
12056        {
12057            let reader = EventReader::new(res.body.as_ref());
12058            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12059            find_start_element(&mut stack);
12060            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12061                match &parsed_error.code[..] {
12062                    "DBInstanceNotFound" => {
12063                        return RusotoError::Service(
12064                            RebootDBInstanceError::DBInstanceNotFoundFault(parsed_error.message),
12065                        )
12066                    }
12067                    "InvalidDBInstanceState" => {
12068                        return RusotoError::Service(
12069                            RebootDBInstanceError::InvalidDBInstanceStateFault(
12070                                parsed_error.message,
12071                            ),
12072                        )
12073                    }
12074                    _ => {}
12075                }
12076            }
12077        }
12078        RusotoError::Unknown(res)
12079    }
12080
12081    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12082    where
12083        T: Peek + Next,
12084    {
12085        xml_util::start_element("ErrorResponse", stack)?;
12086        XmlErrorDeserializer::deserialize("Error", stack)
12087    }
12088}
12089impl fmt::Display for RebootDBInstanceError {
12090    #[allow(unused_variables)]
12091    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12092        match *self {
12093            RebootDBInstanceError::DBInstanceNotFoundFault(ref cause) => write!(f, "{}", cause),
12094            RebootDBInstanceError::InvalidDBInstanceStateFault(ref cause) => write!(f, "{}", cause),
12095        }
12096    }
12097}
12098impl Error for RebootDBInstanceError {}
12099/// Errors returned by RemoveRoleFromDBCluster
12100#[derive(Debug, PartialEq)]
12101pub enum RemoveRoleFromDBClusterError {
12102    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
12103    DBClusterNotFoundFault(String),
12104    /// <p>The specified IAM role Amazon Resource Name (ARN) is not associated with the specified DB cluster.</p>
12105    DBClusterRoleNotFoundFault(String),
12106    /// <p>The DB cluster is not in a valid state.</p>
12107    InvalidDBClusterStateFault(String),
12108}
12109
12110impl RemoveRoleFromDBClusterError {
12111    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RemoveRoleFromDBClusterError> {
12112        {
12113            let reader = EventReader::new(res.body.as_ref());
12114            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12115            find_start_element(&mut stack);
12116            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12117                match &parsed_error.code[..] {
12118                    "DBClusterNotFoundFault" => {
12119                        return RusotoError::Service(
12120                            RemoveRoleFromDBClusterError::DBClusterNotFoundFault(
12121                                parsed_error.message,
12122                            ),
12123                        )
12124                    }
12125                    "DBClusterRoleNotFound" => {
12126                        return RusotoError::Service(
12127                            RemoveRoleFromDBClusterError::DBClusterRoleNotFoundFault(
12128                                parsed_error.message,
12129                            ),
12130                        )
12131                    }
12132                    "InvalidDBClusterStateFault" => {
12133                        return RusotoError::Service(
12134                            RemoveRoleFromDBClusterError::InvalidDBClusterStateFault(
12135                                parsed_error.message,
12136                            ),
12137                        )
12138                    }
12139                    _ => {}
12140                }
12141            }
12142        }
12143        RusotoError::Unknown(res)
12144    }
12145
12146    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12147    where
12148        T: Peek + Next,
12149    {
12150        xml_util::start_element("ErrorResponse", stack)?;
12151        XmlErrorDeserializer::deserialize("Error", stack)
12152    }
12153}
12154impl fmt::Display for RemoveRoleFromDBClusterError {
12155    #[allow(unused_variables)]
12156    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12157        match *self {
12158            RemoveRoleFromDBClusterError::DBClusterNotFoundFault(ref cause) => {
12159                write!(f, "{}", cause)
12160            }
12161            RemoveRoleFromDBClusterError::DBClusterRoleNotFoundFault(ref cause) => {
12162                write!(f, "{}", cause)
12163            }
12164            RemoveRoleFromDBClusterError::InvalidDBClusterStateFault(ref cause) => {
12165                write!(f, "{}", cause)
12166            }
12167        }
12168    }
12169}
12170impl Error for RemoveRoleFromDBClusterError {}
12171/// Errors returned by RemoveSourceIdentifierFromSubscription
12172#[derive(Debug, PartialEq)]
12173pub enum RemoveSourceIdentifierFromSubscriptionError {
12174    /// <p>The source could not be found.</p>
12175    SourceNotFoundFault(String),
12176    /// <p>The designated subscription could not be found.</p>
12177    SubscriptionNotFoundFault(String),
12178}
12179
12180impl RemoveSourceIdentifierFromSubscriptionError {
12181    pub fn from_response(
12182        res: BufferedHttpResponse,
12183    ) -> RusotoError<RemoveSourceIdentifierFromSubscriptionError> {
12184        {
12185            let reader = EventReader::new(res.body.as_ref());
12186            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12187            find_start_element(&mut stack);
12188            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12189                match &parsed_error.code[..] {
12190                    "SourceNotFound" => {
12191                        return RusotoError::Service(
12192                            RemoveSourceIdentifierFromSubscriptionError::SourceNotFoundFault(
12193                                parsed_error.message,
12194                            ),
12195                        )
12196                    }
12197                    "SubscriptionNotFound" => {
12198                        return RusotoError::Service(
12199                            RemoveSourceIdentifierFromSubscriptionError::SubscriptionNotFoundFault(
12200                                parsed_error.message,
12201                            ),
12202                        )
12203                    }
12204                    _ => {}
12205                }
12206            }
12207        }
12208        RusotoError::Unknown(res)
12209    }
12210
12211    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12212    where
12213        T: Peek + Next,
12214    {
12215        xml_util::start_element("ErrorResponse", stack)?;
12216        XmlErrorDeserializer::deserialize("Error", stack)
12217    }
12218}
12219impl fmt::Display for RemoveSourceIdentifierFromSubscriptionError {
12220    #[allow(unused_variables)]
12221    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12222        match *self {
12223            RemoveSourceIdentifierFromSubscriptionError::SourceNotFoundFault(ref cause) => {
12224                write!(f, "{}", cause)
12225            }
12226            RemoveSourceIdentifierFromSubscriptionError::SubscriptionNotFoundFault(ref cause) => {
12227                write!(f, "{}", cause)
12228            }
12229        }
12230    }
12231}
12232impl Error for RemoveSourceIdentifierFromSubscriptionError {}
12233/// Errors returned by RemoveTagsFromResource
12234#[derive(Debug, PartialEq)]
12235pub enum RemoveTagsFromResourceError {
12236    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
12237    DBClusterNotFoundFault(String),
12238    /// <p> <i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
12239    DBInstanceNotFoundFault(String),
12240    /// <p> <i>DBSnapshotIdentifier</i> does not refer to an existing DB snapshot.</p>
12241    DBSnapshotNotFoundFault(String),
12242}
12243
12244impl RemoveTagsFromResourceError {
12245    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RemoveTagsFromResourceError> {
12246        {
12247            let reader = EventReader::new(res.body.as_ref());
12248            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12249            find_start_element(&mut stack);
12250            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12251                match &parsed_error.code[..] {
12252                    "DBClusterNotFoundFault" => {
12253                        return RusotoError::Service(
12254                            RemoveTagsFromResourceError::DBClusterNotFoundFault(
12255                                parsed_error.message,
12256                            ),
12257                        )
12258                    }
12259                    "DBInstanceNotFound" => {
12260                        return RusotoError::Service(
12261                            RemoveTagsFromResourceError::DBInstanceNotFoundFault(
12262                                parsed_error.message,
12263                            ),
12264                        )
12265                    }
12266                    "DBSnapshotNotFound" => {
12267                        return RusotoError::Service(
12268                            RemoveTagsFromResourceError::DBSnapshotNotFoundFault(
12269                                parsed_error.message,
12270                            ),
12271                        )
12272                    }
12273                    _ => {}
12274                }
12275            }
12276        }
12277        RusotoError::Unknown(res)
12278    }
12279
12280    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12281    where
12282        T: Peek + Next,
12283    {
12284        xml_util::start_element("ErrorResponse", stack)?;
12285        XmlErrorDeserializer::deserialize("Error", stack)
12286    }
12287}
12288impl fmt::Display for RemoveTagsFromResourceError {
12289    #[allow(unused_variables)]
12290    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12291        match *self {
12292            RemoveTagsFromResourceError::DBClusterNotFoundFault(ref cause) => {
12293                write!(f, "{}", cause)
12294            }
12295            RemoveTagsFromResourceError::DBInstanceNotFoundFault(ref cause) => {
12296                write!(f, "{}", cause)
12297            }
12298            RemoveTagsFromResourceError::DBSnapshotNotFoundFault(ref cause) => {
12299                write!(f, "{}", cause)
12300            }
12301        }
12302    }
12303}
12304impl Error for RemoveTagsFromResourceError {}
12305/// Errors returned by ResetDBClusterParameterGroup
12306#[derive(Debug, PartialEq)]
12307pub enum ResetDBClusterParameterGroupError {
12308    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
12309    DBParameterGroupNotFoundFault(String),
12310    /// <p>The DB parameter group is in use or is in an invalid state. If you are attempting to delete the parameter group, you cannot delete it when the parameter group is in this state.</p>
12311    InvalidDBParameterGroupStateFault(String),
12312}
12313
12314impl ResetDBClusterParameterGroupError {
12315    pub fn from_response(
12316        res: BufferedHttpResponse,
12317    ) -> RusotoError<ResetDBClusterParameterGroupError> {
12318        {
12319            let reader = EventReader::new(res.body.as_ref());
12320            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12321            find_start_element(&mut stack);
12322            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12323                match &parsed_error.code[..] {
12324                    "DBParameterGroupNotFound" => {
12325                        return RusotoError::Service(
12326                            ResetDBClusterParameterGroupError::DBParameterGroupNotFoundFault(
12327                                parsed_error.message,
12328                            ),
12329                        )
12330                    }
12331                    "InvalidDBParameterGroupState" => {
12332                        return RusotoError::Service(
12333                            ResetDBClusterParameterGroupError::InvalidDBParameterGroupStateFault(
12334                                parsed_error.message,
12335                            ),
12336                        )
12337                    }
12338                    _ => {}
12339                }
12340            }
12341        }
12342        RusotoError::Unknown(res)
12343    }
12344
12345    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12346    where
12347        T: Peek + Next,
12348    {
12349        xml_util::start_element("ErrorResponse", stack)?;
12350        XmlErrorDeserializer::deserialize("Error", stack)
12351    }
12352}
12353impl fmt::Display for ResetDBClusterParameterGroupError {
12354    #[allow(unused_variables)]
12355    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12356        match *self {
12357            ResetDBClusterParameterGroupError::DBParameterGroupNotFoundFault(ref cause) => {
12358                write!(f, "{}", cause)
12359            }
12360            ResetDBClusterParameterGroupError::InvalidDBParameterGroupStateFault(ref cause) => {
12361                write!(f, "{}", cause)
12362            }
12363        }
12364    }
12365}
12366impl Error for ResetDBClusterParameterGroupError {}
12367/// Errors returned by ResetDBParameterGroup
12368#[derive(Debug, PartialEq)]
12369pub enum ResetDBParameterGroupError {
12370    /// <p> <i>DBParameterGroupName</i> does not refer to an existing DB parameter group.</p>
12371    DBParameterGroupNotFoundFault(String),
12372    /// <p>The DB parameter group is in use or is in an invalid state. If you are attempting to delete the parameter group, you cannot delete it when the parameter group is in this state.</p>
12373    InvalidDBParameterGroupStateFault(String),
12374}
12375
12376impl ResetDBParameterGroupError {
12377    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ResetDBParameterGroupError> {
12378        {
12379            let reader = EventReader::new(res.body.as_ref());
12380            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12381            find_start_element(&mut stack);
12382            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12383                match &parsed_error.code[..] {
12384                    "DBParameterGroupNotFound" => {
12385                        return RusotoError::Service(
12386                            ResetDBParameterGroupError::DBParameterGroupNotFoundFault(
12387                                parsed_error.message,
12388                            ),
12389                        )
12390                    }
12391                    "InvalidDBParameterGroupState" => {
12392                        return RusotoError::Service(
12393                            ResetDBParameterGroupError::InvalidDBParameterGroupStateFault(
12394                                parsed_error.message,
12395                            ),
12396                        )
12397                    }
12398                    _ => {}
12399                }
12400            }
12401        }
12402        RusotoError::Unknown(res)
12403    }
12404
12405    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12406    where
12407        T: Peek + Next,
12408    {
12409        xml_util::start_element("ErrorResponse", stack)?;
12410        XmlErrorDeserializer::deserialize("Error", stack)
12411    }
12412}
12413impl fmt::Display for ResetDBParameterGroupError {
12414    #[allow(unused_variables)]
12415    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12416        match *self {
12417            ResetDBParameterGroupError::DBParameterGroupNotFoundFault(ref cause) => {
12418                write!(f, "{}", cause)
12419            }
12420            ResetDBParameterGroupError::InvalidDBParameterGroupStateFault(ref cause) => {
12421                write!(f, "{}", cause)
12422            }
12423        }
12424    }
12425}
12426impl Error for ResetDBParameterGroupError {}
12427/// Errors returned by RestoreDBClusterFromSnapshot
12428#[derive(Debug, PartialEq)]
12429pub enum RestoreDBClusterFromSnapshotError {
12430    /// <p>User already has a DB cluster with the given identifier.</p>
12431    DBClusterAlreadyExistsFault(String),
12432    /// <p> <i>DBClusterParameterGroupName</i> does not refer to an existing DB Cluster parameter group.</p>
12433    DBClusterParameterGroupNotFoundFault(String),
12434    /// <p>User attempted to create a new DB cluster and the user has already reached the maximum allowed DB cluster quota.</p>
12435    DBClusterQuotaExceededFault(String),
12436    /// <p> <i>DBClusterSnapshotIdentifier</i> does not refer to an existing DB cluster snapshot.</p>
12437    DBClusterSnapshotNotFoundFault(String),
12438    /// <p> <i>DBSnapshotIdentifier</i> does not refer to an existing DB snapshot.</p>
12439    DBSnapshotNotFoundFault(String),
12440    /// <p> <i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
12441    DBSubnetGroupNotFoundFault(String),
12442    /// <p>The DB cluster does not have enough capacity for the current operation.</p>
12443    InsufficientDBClusterCapacityFault(String),
12444    /// <p>There is insufficient storage available for the current action. You may be able to resolve this error by updating your subnet group to use different Availability Zones that have more storage available.</p>
12445    InsufficientStorageClusterCapacityFault(String),
12446    /// <p>The supplied value is not a valid DB cluster snapshot state.</p>
12447    InvalidDBClusterSnapshotStateFault(String),
12448    /// <p>The state of the DB snapshot does not allow deletion.</p>
12449    InvalidDBSnapshotStateFault(String),
12450    /// <p>Cannot restore from vpc backup to non-vpc DB instance.</p>
12451    InvalidRestoreFault(String),
12452    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
12453    InvalidSubnet(String),
12454    /// <p>DB subnet group does not cover all Availability Zones after it is created because users' change.</p>
12455    InvalidVPCNetworkStateFault(String),
12456    /// <p>Error accessing KMS key.</p>
12457    KMSKeyNotAccessibleFault(String),
12458    /// <p>The designated option group could not be found.</p>
12459    OptionGroupNotFoundFault(String),
12460    /// <p>Request would result in user exceeding the allowed amount of storage available across all DB instances.</p>
12461    StorageQuotaExceededFault(String),
12462}
12463
12464impl RestoreDBClusterFromSnapshotError {
12465    pub fn from_response(
12466        res: BufferedHttpResponse,
12467    ) -> RusotoError<RestoreDBClusterFromSnapshotError> {
12468        {
12469            let reader = EventReader::new(res.body.as_ref());
12470            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12471            find_start_element(&mut stack);
12472            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12473                match &parsed_error.code[..] {
12474                    "DBClusterAlreadyExistsFault" => {
12475                        return RusotoError::Service(
12476                            RestoreDBClusterFromSnapshotError::DBClusterAlreadyExistsFault(
12477                                parsed_error.message,
12478                            ),
12479                        )
12480                    }
12481                    "DBClusterParameterGroupNotFound" => {
12482                        return RusotoError::Service(
12483                            RestoreDBClusterFromSnapshotError::DBClusterParameterGroupNotFoundFault(
12484                                parsed_error.message,
12485                            ),
12486                        )
12487                    }
12488                    "DBClusterQuotaExceededFault" => {
12489                        return RusotoError::Service(
12490                            RestoreDBClusterFromSnapshotError::DBClusterQuotaExceededFault(
12491                                parsed_error.message,
12492                            ),
12493                        )
12494                    }
12495                    "DBClusterSnapshotNotFoundFault" => {
12496                        return RusotoError::Service(
12497                            RestoreDBClusterFromSnapshotError::DBClusterSnapshotNotFoundFault(
12498                                parsed_error.message,
12499                            ),
12500                        )
12501                    }
12502                    "DBSnapshotNotFound" => {
12503                        return RusotoError::Service(
12504                            RestoreDBClusterFromSnapshotError::DBSnapshotNotFoundFault(
12505                                parsed_error.message,
12506                            ),
12507                        )
12508                    }
12509                    "DBSubnetGroupNotFoundFault" => {
12510                        return RusotoError::Service(
12511                            RestoreDBClusterFromSnapshotError::DBSubnetGroupNotFoundFault(
12512                                parsed_error.message,
12513                            ),
12514                        )
12515                    }
12516                    "InsufficientDBClusterCapacityFault" => {
12517                        return RusotoError::Service(
12518                            RestoreDBClusterFromSnapshotError::InsufficientDBClusterCapacityFault(
12519                                parsed_error.message,
12520                            ),
12521                        )
12522                    }
12523                    "InsufficientStorageClusterCapacity" => return RusotoError::Service(
12524                        RestoreDBClusterFromSnapshotError::InsufficientStorageClusterCapacityFault(
12525                            parsed_error.message,
12526                        ),
12527                    ),
12528                    "InvalidDBClusterSnapshotStateFault" => {
12529                        return RusotoError::Service(
12530                            RestoreDBClusterFromSnapshotError::InvalidDBClusterSnapshotStateFault(
12531                                parsed_error.message,
12532                            ),
12533                        )
12534                    }
12535                    "InvalidDBSnapshotState" => {
12536                        return RusotoError::Service(
12537                            RestoreDBClusterFromSnapshotError::InvalidDBSnapshotStateFault(
12538                                parsed_error.message,
12539                            ),
12540                        )
12541                    }
12542                    "InvalidRestoreFault" => {
12543                        return RusotoError::Service(
12544                            RestoreDBClusterFromSnapshotError::InvalidRestoreFault(
12545                                parsed_error.message,
12546                            ),
12547                        )
12548                    }
12549                    "InvalidSubnet" => {
12550                        return RusotoError::Service(
12551                            RestoreDBClusterFromSnapshotError::InvalidSubnet(parsed_error.message),
12552                        )
12553                    }
12554                    "InvalidVPCNetworkStateFault" => {
12555                        return RusotoError::Service(
12556                            RestoreDBClusterFromSnapshotError::InvalidVPCNetworkStateFault(
12557                                parsed_error.message,
12558                            ),
12559                        )
12560                    }
12561                    "KMSKeyNotAccessibleFault" => {
12562                        return RusotoError::Service(
12563                            RestoreDBClusterFromSnapshotError::KMSKeyNotAccessibleFault(
12564                                parsed_error.message,
12565                            ),
12566                        )
12567                    }
12568                    "OptionGroupNotFoundFault" => {
12569                        return RusotoError::Service(
12570                            RestoreDBClusterFromSnapshotError::OptionGroupNotFoundFault(
12571                                parsed_error.message,
12572                            ),
12573                        )
12574                    }
12575                    "StorageQuotaExceeded" => {
12576                        return RusotoError::Service(
12577                            RestoreDBClusterFromSnapshotError::StorageQuotaExceededFault(
12578                                parsed_error.message,
12579                            ),
12580                        )
12581                    }
12582                    _ => {}
12583                }
12584            }
12585        }
12586        RusotoError::Unknown(res)
12587    }
12588
12589    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12590    where
12591        T: Peek + Next,
12592    {
12593        xml_util::start_element("ErrorResponse", stack)?;
12594        XmlErrorDeserializer::deserialize("Error", stack)
12595    }
12596}
12597impl fmt::Display for RestoreDBClusterFromSnapshotError {
12598    #[allow(unused_variables)]
12599    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12600        match *self {
12601            RestoreDBClusterFromSnapshotError::DBClusterAlreadyExistsFault(ref cause) => {
12602                write!(f, "{}", cause)
12603            }
12604            RestoreDBClusterFromSnapshotError::DBClusterParameterGroupNotFoundFault(ref cause) => {
12605                write!(f, "{}", cause)
12606            }
12607            RestoreDBClusterFromSnapshotError::DBClusterQuotaExceededFault(ref cause) => {
12608                write!(f, "{}", cause)
12609            }
12610            RestoreDBClusterFromSnapshotError::DBClusterSnapshotNotFoundFault(ref cause) => {
12611                write!(f, "{}", cause)
12612            }
12613            RestoreDBClusterFromSnapshotError::DBSnapshotNotFoundFault(ref cause) => {
12614                write!(f, "{}", cause)
12615            }
12616            RestoreDBClusterFromSnapshotError::DBSubnetGroupNotFoundFault(ref cause) => {
12617                write!(f, "{}", cause)
12618            }
12619            RestoreDBClusterFromSnapshotError::InsufficientDBClusterCapacityFault(ref cause) => {
12620                write!(f, "{}", cause)
12621            }
12622            RestoreDBClusterFromSnapshotError::InsufficientStorageClusterCapacityFault(
12623                ref cause,
12624            ) => write!(f, "{}", cause),
12625            RestoreDBClusterFromSnapshotError::InvalidDBClusterSnapshotStateFault(ref cause) => {
12626                write!(f, "{}", cause)
12627            }
12628            RestoreDBClusterFromSnapshotError::InvalidDBSnapshotStateFault(ref cause) => {
12629                write!(f, "{}", cause)
12630            }
12631            RestoreDBClusterFromSnapshotError::InvalidRestoreFault(ref cause) => {
12632                write!(f, "{}", cause)
12633            }
12634            RestoreDBClusterFromSnapshotError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
12635            RestoreDBClusterFromSnapshotError::InvalidVPCNetworkStateFault(ref cause) => {
12636                write!(f, "{}", cause)
12637            }
12638            RestoreDBClusterFromSnapshotError::KMSKeyNotAccessibleFault(ref cause) => {
12639                write!(f, "{}", cause)
12640            }
12641            RestoreDBClusterFromSnapshotError::OptionGroupNotFoundFault(ref cause) => {
12642                write!(f, "{}", cause)
12643            }
12644            RestoreDBClusterFromSnapshotError::StorageQuotaExceededFault(ref cause) => {
12645                write!(f, "{}", cause)
12646            }
12647        }
12648    }
12649}
12650impl Error for RestoreDBClusterFromSnapshotError {}
12651/// Errors returned by RestoreDBClusterToPointInTime
12652#[derive(Debug, PartialEq)]
12653pub enum RestoreDBClusterToPointInTimeError {
12654    /// <p>User already has a DB cluster with the given identifier.</p>
12655    DBClusterAlreadyExistsFault(String),
12656    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
12657    DBClusterNotFoundFault(String),
12658    /// <p> <i>DBClusterParameterGroupName</i> does not refer to an existing DB Cluster parameter group.</p>
12659    DBClusterParameterGroupNotFoundFault(String),
12660    /// <p>User attempted to create a new DB cluster and the user has already reached the maximum allowed DB cluster quota.</p>
12661    DBClusterQuotaExceededFault(String),
12662    /// <p> <i>DBClusterSnapshotIdentifier</i> does not refer to an existing DB cluster snapshot.</p>
12663    DBClusterSnapshotNotFoundFault(String),
12664    /// <p> <i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
12665    DBSubnetGroupNotFoundFault(String),
12666    /// <p>The DB cluster does not have enough capacity for the current operation.</p>
12667    InsufficientDBClusterCapacityFault(String),
12668    /// <p>There is insufficient storage available for the current action. You may be able to resolve this error by updating your subnet group to use different Availability Zones that have more storage available.</p>
12669    InsufficientStorageClusterCapacityFault(String),
12670    /// <p>The supplied value is not a valid DB cluster snapshot state.</p>
12671    InvalidDBClusterSnapshotStateFault(String),
12672    /// <p>The DB cluster is not in a valid state.</p>
12673    InvalidDBClusterStateFault(String),
12674    /// <p>The state of the DB snapshot does not allow deletion.</p>
12675    InvalidDBSnapshotStateFault(String),
12676    /// <p>Cannot restore from vpc backup to non-vpc DB instance.</p>
12677    InvalidRestoreFault(String),
12678    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
12679    InvalidSubnet(String),
12680    /// <p>DB subnet group does not cover all Availability Zones after it is created because users' change.</p>
12681    InvalidVPCNetworkStateFault(String),
12682    /// <p>Error accessing KMS key.</p>
12683    KMSKeyNotAccessibleFault(String),
12684    /// <p>The designated option group could not be found.</p>
12685    OptionGroupNotFoundFault(String),
12686    /// <p>Request would result in user exceeding the allowed amount of storage available across all DB instances.</p>
12687    StorageQuotaExceededFault(String),
12688}
12689
12690impl RestoreDBClusterToPointInTimeError {
12691    pub fn from_response(
12692        res: BufferedHttpResponse,
12693    ) -> RusotoError<RestoreDBClusterToPointInTimeError> {
12694        {
12695            let reader = EventReader::new(res.body.as_ref());
12696            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12697            find_start_element(&mut stack);
12698            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12699                match &parsed_error.code[..] {
12700                    "DBClusterAlreadyExistsFault" => {
12701                        return RusotoError::Service(
12702                            RestoreDBClusterToPointInTimeError::DBClusterAlreadyExistsFault(
12703                                parsed_error.message,
12704                            ),
12705                        )
12706                    }
12707                    "DBClusterNotFoundFault" => {
12708                        return RusotoError::Service(
12709                            RestoreDBClusterToPointInTimeError::DBClusterNotFoundFault(
12710                                parsed_error.message,
12711                            ),
12712                        )
12713                    }
12714                    "DBClusterParameterGroupNotFound" => return RusotoError::Service(
12715                        RestoreDBClusterToPointInTimeError::DBClusterParameterGroupNotFoundFault(
12716                            parsed_error.message,
12717                        ),
12718                    ),
12719                    "DBClusterQuotaExceededFault" => {
12720                        return RusotoError::Service(
12721                            RestoreDBClusterToPointInTimeError::DBClusterQuotaExceededFault(
12722                                parsed_error.message,
12723                            ),
12724                        )
12725                    }
12726                    "DBClusterSnapshotNotFoundFault" => {
12727                        return RusotoError::Service(
12728                            RestoreDBClusterToPointInTimeError::DBClusterSnapshotNotFoundFault(
12729                                parsed_error.message,
12730                            ),
12731                        )
12732                    }
12733                    "DBSubnetGroupNotFoundFault" => {
12734                        return RusotoError::Service(
12735                            RestoreDBClusterToPointInTimeError::DBSubnetGroupNotFoundFault(
12736                                parsed_error.message,
12737                            ),
12738                        )
12739                    }
12740                    "InsufficientDBClusterCapacityFault" => {
12741                        return RusotoError::Service(
12742                            RestoreDBClusterToPointInTimeError::InsufficientDBClusterCapacityFault(
12743                                parsed_error.message,
12744                            ),
12745                        )
12746                    }
12747                    "InsufficientStorageClusterCapacity" => return RusotoError::Service(
12748                        RestoreDBClusterToPointInTimeError::InsufficientStorageClusterCapacityFault(
12749                            parsed_error.message,
12750                        ),
12751                    ),
12752                    "InvalidDBClusterSnapshotStateFault" => {
12753                        return RusotoError::Service(
12754                            RestoreDBClusterToPointInTimeError::InvalidDBClusterSnapshotStateFault(
12755                                parsed_error.message,
12756                            ),
12757                        )
12758                    }
12759                    "InvalidDBClusterStateFault" => {
12760                        return RusotoError::Service(
12761                            RestoreDBClusterToPointInTimeError::InvalidDBClusterStateFault(
12762                                parsed_error.message,
12763                            ),
12764                        )
12765                    }
12766                    "InvalidDBSnapshotState" => {
12767                        return RusotoError::Service(
12768                            RestoreDBClusterToPointInTimeError::InvalidDBSnapshotStateFault(
12769                                parsed_error.message,
12770                            ),
12771                        )
12772                    }
12773                    "InvalidRestoreFault" => {
12774                        return RusotoError::Service(
12775                            RestoreDBClusterToPointInTimeError::InvalidRestoreFault(
12776                                parsed_error.message,
12777                            ),
12778                        )
12779                    }
12780                    "InvalidSubnet" => {
12781                        return RusotoError::Service(
12782                            RestoreDBClusterToPointInTimeError::InvalidSubnet(parsed_error.message),
12783                        )
12784                    }
12785                    "InvalidVPCNetworkStateFault" => {
12786                        return RusotoError::Service(
12787                            RestoreDBClusterToPointInTimeError::InvalidVPCNetworkStateFault(
12788                                parsed_error.message,
12789                            ),
12790                        )
12791                    }
12792                    "KMSKeyNotAccessibleFault" => {
12793                        return RusotoError::Service(
12794                            RestoreDBClusterToPointInTimeError::KMSKeyNotAccessibleFault(
12795                                parsed_error.message,
12796                            ),
12797                        )
12798                    }
12799                    "OptionGroupNotFoundFault" => {
12800                        return RusotoError::Service(
12801                            RestoreDBClusterToPointInTimeError::OptionGroupNotFoundFault(
12802                                parsed_error.message,
12803                            ),
12804                        )
12805                    }
12806                    "StorageQuotaExceeded" => {
12807                        return RusotoError::Service(
12808                            RestoreDBClusterToPointInTimeError::StorageQuotaExceededFault(
12809                                parsed_error.message,
12810                            ),
12811                        )
12812                    }
12813                    _ => {}
12814                }
12815            }
12816        }
12817        RusotoError::Unknown(res)
12818    }
12819
12820    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12821    where
12822        T: Peek + Next,
12823    {
12824        xml_util::start_element("ErrorResponse", stack)?;
12825        XmlErrorDeserializer::deserialize("Error", stack)
12826    }
12827}
12828impl fmt::Display for RestoreDBClusterToPointInTimeError {
12829    #[allow(unused_variables)]
12830    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12831        match *self {
12832            RestoreDBClusterToPointInTimeError::DBClusterAlreadyExistsFault(ref cause) => {
12833                write!(f, "{}", cause)
12834            }
12835            RestoreDBClusterToPointInTimeError::DBClusterNotFoundFault(ref cause) => {
12836                write!(f, "{}", cause)
12837            }
12838            RestoreDBClusterToPointInTimeError::DBClusterParameterGroupNotFoundFault(ref cause) => {
12839                write!(f, "{}", cause)
12840            }
12841            RestoreDBClusterToPointInTimeError::DBClusterQuotaExceededFault(ref cause) => {
12842                write!(f, "{}", cause)
12843            }
12844            RestoreDBClusterToPointInTimeError::DBClusterSnapshotNotFoundFault(ref cause) => {
12845                write!(f, "{}", cause)
12846            }
12847            RestoreDBClusterToPointInTimeError::DBSubnetGroupNotFoundFault(ref cause) => {
12848                write!(f, "{}", cause)
12849            }
12850            RestoreDBClusterToPointInTimeError::InsufficientDBClusterCapacityFault(ref cause) => {
12851                write!(f, "{}", cause)
12852            }
12853            RestoreDBClusterToPointInTimeError::InsufficientStorageClusterCapacityFault(
12854                ref cause,
12855            ) => write!(f, "{}", cause),
12856            RestoreDBClusterToPointInTimeError::InvalidDBClusterSnapshotStateFault(ref cause) => {
12857                write!(f, "{}", cause)
12858            }
12859            RestoreDBClusterToPointInTimeError::InvalidDBClusterStateFault(ref cause) => {
12860                write!(f, "{}", cause)
12861            }
12862            RestoreDBClusterToPointInTimeError::InvalidDBSnapshotStateFault(ref cause) => {
12863                write!(f, "{}", cause)
12864            }
12865            RestoreDBClusterToPointInTimeError::InvalidRestoreFault(ref cause) => {
12866                write!(f, "{}", cause)
12867            }
12868            RestoreDBClusterToPointInTimeError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
12869            RestoreDBClusterToPointInTimeError::InvalidVPCNetworkStateFault(ref cause) => {
12870                write!(f, "{}", cause)
12871            }
12872            RestoreDBClusterToPointInTimeError::KMSKeyNotAccessibleFault(ref cause) => {
12873                write!(f, "{}", cause)
12874            }
12875            RestoreDBClusterToPointInTimeError::OptionGroupNotFoundFault(ref cause) => {
12876                write!(f, "{}", cause)
12877            }
12878            RestoreDBClusterToPointInTimeError::StorageQuotaExceededFault(ref cause) => {
12879                write!(f, "{}", cause)
12880            }
12881        }
12882    }
12883}
12884impl Error for RestoreDBClusterToPointInTimeError {}
12885/// Errors returned by StartDBCluster
12886#[derive(Debug, PartialEq)]
12887pub enum StartDBClusterError {
12888    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
12889    DBClusterNotFoundFault(String),
12890    /// <p>The DB cluster is not in a valid state.</p>
12891    InvalidDBClusterStateFault(String),
12892    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
12893    InvalidDBInstanceStateFault(String),
12894}
12895
12896impl StartDBClusterError {
12897    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartDBClusterError> {
12898        {
12899            let reader = EventReader::new(res.body.as_ref());
12900            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12901            find_start_element(&mut stack);
12902            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12903                match &parsed_error.code[..] {
12904                    "DBClusterNotFoundFault" => {
12905                        return RusotoError::Service(StartDBClusterError::DBClusterNotFoundFault(
12906                            parsed_error.message,
12907                        ))
12908                    }
12909                    "InvalidDBClusterStateFault" => {
12910                        return RusotoError::Service(
12911                            StartDBClusterError::InvalidDBClusterStateFault(parsed_error.message),
12912                        )
12913                    }
12914                    "InvalidDBInstanceState" => {
12915                        return RusotoError::Service(
12916                            StartDBClusterError::InvalidDBInstanceStateFault(parsed_error.message),
12917                        )
12918                    }
12919                    _ => {}
12920                }
12921            }
12922        }
12923        RusotoError::Unknown(res)
12924    }
12925
12926    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12927    where
12928        T: Peek + Next,
12929    {
12930        xml_util::start_element("ErrorResponse", stack)?;
12931        XmlErrorDeserializer::deserialize("Error", stack)
12932    }
12933}
12934impl fmt::Display for StartDBClusterError {
12935    #[allow(unused_variables)]
12936    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12937        match *self {
12938            StartDBClusterError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
12939            StartDBClusterError::InvalidDBClusterStateFault(ref cause) => write!(f, "{}", cause),
12940            StartDBClusterError::InvalidDBInstanceStateFault(ref cause) => write!(f, "{}", cause),
12941        }
12942    }
12943}
12944impl Error for StartDBClusterError {}
12945/// Errors returned by StopDBCluster
12946#[derive(Debug, PartialEq)]
12947pub enum StopDBClusterError {
12948    /// <p> <i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
12949    DBClusterNotFoundFault(String),
12950    /// <p>The DB cluster is not in a valid state.</p>
12951    InvalidDBClusterStateFault(String),
12952    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
12953    InvalidDBInstanceStateFault(String),
12954}
12955
12956impl StopDBClusterError {
12957    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopDBClusterError> {
12958        {
12959            let reader = EventReader::new(res.body.as_ref());
12960            let mut stack = XmlResponse::new(reader.into_iter().peekable());
12961            find_start_element(&mut stack);
12962            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
12963                match &parsed_error.code[..] {
12964                    "DBClusterNotFoundFault" => {
12965                        return RusotoError::Service(StopDBClusterError::DBClusterNotFoundFault(
12966                            parsed_error.message,
12967                        ))
12968                    }
12969                    "InvalidDBClusterStateFault" => {
12970                        return RusotoError::Service(
12971                            StopDBClusterError::InvalidDBClusterStateFault(parsed_error.message),
12972                        )
12973                    }
12974                    "InvalidDBInstanceState" => {
12975                        return RusotoError::Service(
12976                            StopDBClusterError::InvalidDBInstanceStateFault(parsed_error.message),
12977                        )
12978                    }
12979                    _ => {}
12980                }
12981            }
12982        }
12983        RusotoError::Unknown(res)
12984    }
12985
12986    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
12987    where
12988        T: Peek + Next,
12989    {
12990        xml_util::start_element("ErrorResponse", stack)?;
12991        XmlErrorDeserializer::deserialize("Error", stack)
12992    }
12993}
12994impl fmt::Display for StopDBClusterError {
12995    #[allow(unused_variables)]
12996    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12997        match *self {
12998            StopDBClusterError::DBClusterNotFoundFault(ref cause) => write!(f, "{}", cause),
12999            StopDBClusterError::InvalidDBClusterStateFault(ref cause) => write!(f, "{}", cause),
13000            StopDBClusterError::InvalidDBInstanceStateFault(ref cause) => write!(f, "{}", cause),
13001        }
13002    }
13003}
13004impl Error for StopDBClusterError {}
13005/// Trait representing the capabilities of the Amazon Neptune API. Amazon Neptune clients implement this trait.
13006#[async_trait]
13007pub trait Neptune {
13008    /// <p>Associates an Identity and Access Management (IAM) role from an Neptune DB cluster.</p>
13009    async fn add_role_to_db_cluster(
13010        &self,
13011        input: AddRoleToDBClusterMessage,
13012    ) -> Result<(), RusotoError<AddRoleToDBClusterError>>;
13013
13014    /// <p>Adds a source identifier to an existing event notification subscription.</p>
13015    async fn add_source_identifier_to_subscription(
13016        &self,
13017        input: AddSourceIdentifierToSubscriptionMessage,
13018    ) -> Result<
13019        AddSourceIdentifierToSubscriptionResult,
13020        RusotoError<AddSourceIdentifierToSubscriptionError>,
13021    >;
13022
13023    /// <p>Adds metadata tags to an Amazon Neptune resource. These tags can also be used with cost allocation reporting to track cost associated with Amazon Neptune resources, or used in a Condition statement in an IAM policy for Amazon Neptune.</p>
13024    async fn add_tags_to_resource(
13025        &self,
13026        input: AddTagsToResourceMessage,
13027    ) -> Result<(), RusotoError<AddTagsToResourceError>>;
13028
13029    /// <p>Applies a pending maintenance action to a resource (for example, to a DB instance).</p>
13030    async fn apply_pending_maintenance_action(
13031        &self,
13032        input: ApplyPendingMaintenanceActionMessage,
13033    ) -> Result<ApplyPendingMaintenanceActionResult, RusotoError<ApplyPendingMaintenanceActionError>>;
13034
13035    /// <p>Copies the specified DB cluster parameter group.</p>
13036    async fn copy_db_cluster_parameter_group(
13037        &self,
13038        input: CopyDBClusterParameterGroupMessage,
13039    ) -> Result<CopyDBClusterParameterGroupResult, RusotoError<CopyDBClusterParameterGroupError>>;
13040
13041    /// <p>Copies a snapshot of a DB cluster.</p> <p>To copy a DB cluster snapshot from a shared manual DB cluster snapshot, <code>SourceDBClusterSnapshotIdentifier</code> must be the Amazon Resource Name (ARN) of the shared DB cluster snapshot.</p>
13042    async fn copy_db_cluster_snapshot(
13043        &self,
13044        input: CopyDBClusterSnapshotMessage,
13045    ) -> Result<CopyDBClusterSnapshotResult, RusotoError<CopyDBClusterSnapshotError>>;
13046
13047    /// <p>Copies the specified DB parameter group.</p>
13048    async fn copy_db_parameter_group(
13049        &self,
13050        input: CopyDBParameterGroupMessage,
13051    ) -> Result<CopyDBParameterGroupResult, RusotoError<CopyDBParameterGroupError>>;
13052
13053    /// <p>Creates a new Amazon Neptune DB cluster.</p> <p>You can use the <code>ReplicationSourceIdentifier</code> parameter to create the DB cluster as a Read Replica of another DB cluster or Amazon Neptune DB instance.</p> <p>Note that when you create a new cluster using <code>CreateDBCluster</code> directly, deletion protection is disabled by default (when you create a new production cluster in the console, deletion protection is enabled by default). You can only delete a DB cluster if its <code>DeletionProtection</code> field is set to <code>false</code>.</p>
13054    async fn create_db_cluster(
13055        &self,
13056        input: CreateDBClusterMessage,
13057    ) -> Result<CreateDBClusterResult, RusotoError<CreateDBClusterError>>;
13058
13059    /// <p><p>Creates a new DB cluster parameter group.</p> <p>Parameters in a DB cluster parameter group apply to all of the instances in a DB cluster.</p> <p> A DB cluster parameter group is initially created with the default parameters for the database engine used by instances in the DB cluster. To provide custom values for any of the parameters, you must modify the group after creating it using <a>ModifyDBClusterParameterGroup</a>. Once you&#39;ve created a DB cluster parameter group, you need to associate it with your DB cluster using <a>ModifyDBCluster</a>. When you associate a new DB cluster parameter group with a running DB cluster, you need to reboot the DB instances in the DB cluster without failover for the new DB cluster parameter group and associated settings to take effect.</p> <important> <p>After you create a DB cluster parameter group, you should wait at least 5 minutes before creating your first DB cluster that uses that DB cluster parameter group as the default parameter group. This allows Amazon Neptune to fully complete the create action before the DB cluster parameter group is used as the default for a new DB cluster. This is especially important for parameters that are critical when creating the default database for a DB cluster, such as the character set for the default database defined by the <code>character<em>set</em>database</code> parameter. You can use the <i>Parameter Groups</i> option of the <a href="https://console.aws.amazon.com/rds/">Amazon Neptune console</a> or the <a>DescribeDBClusterParameters</a> command to verify that your DB cluster parameter group has been created or modified.</p> </important></p>
13060    async fn create_db_cluster_parameter_group(
13061        &self,
13062        input: CreateDBClusterParameterGroupMessage,
13063    ) -> Result<CreateDBClusterParameterGroupResult, RusotoError<CreateDBClusterParameterGroupError>>;
13064
13065    /// <p>Creates a snapshot of a DB cluster.</p>
13066    async fn create_db_cluster_snapshot(
13067        &self,
13068        input: CreateDBClusterSnapshotMessage,
13069    ) -> Result<CreateDBClusterSnapshotResult, RusotoError<CreateDBClusterSnapshotError>>;
13070
13071    /// <p>Creates a new DB instance.</p>
13072    async fn create_db_instance(
13073        &self,
13074        input: CreateDBInstanceMessage,
13075    ) -> Result<CreateDBInstanceResult, RusotoError<CreateDBInstanceError>>;
13076
13077    /// <p><p>Creates a new DB parameter group.</p> <p>A DB parameter group is initially created with the default parameters for the database engine used by the DB instance. To provide custom values for any of the parameters, you must modify the group after creating it using <i>ModifyDBParameterGroup</i>. Once you&#39;ve created a DB parameter group, you need to associate it with your DB instance using <i>ModifyDBInstance</i>. When you associate a new DB parameter group with a running DB instance, you need to reboot the DB instance without failover for the new DB parameter group and associated settings to take effect.</p> <important> <p>After you create a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon Neptune to fully complete the create action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the <code>character<em>set</em>database</code> parameter. You can use the <i>Parameter Groups</i> option of the Amazon Neptune console or the <i>DescribeDBParameters</i> command to verify that your DB parameter group has been created or modified.</p> </important></p>
13078    async fn create_db_parameter_group(
13079        &self,
13080        input: CreateDBParameterGroupMessage,
13081    ) -> Result<CreateDBParameterGroupResult, RusotoError<CreateDBParameterGroupError>>;
13082
13083    /// <p>Creates a new DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the AWS Region.</p>
13084    async fn create_db_subnet_group(
13085        &self,
13086        input: CreateDBSubnetGroupMessage,
13087    ) -> Result<CreateDBSubnetGroupResult, RusotoError<CreateDBSubnetGroupError>>;
13088
13089    /// <p>Creates an event notification subscription. This action requires a topic ARN (Amazon Resource Name) created by either the Neptune console, the SNS console, or the SNS API. To obtain an ARN with SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console.</p> <p>You can specify the type of source (SourceType) you want to be notified of, provide a list of Neptune sources (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. For example, you can specify SourceType = db-instance, SourceIds = mydbinstance1, mydbinstance2 and EventCategories = Availability, Backup.</p> <p>If you specify both the SourceType and SourceIds, such as SourceType = db-instance and SourceIdentifier = myDBInstance1, you are notified of all the db-instance events for the specified source. If you specify a SourceType but do not specify a SourceIdentifier, you receive notice of the events for that source type for all your Neptune sources. If you do not specify either the SourceType nor the SourceIdentifier, you are notified of events generated from all Neptune sources belonging to your customer account.</p>
13090    async fn create_event_subscription(
13091        &self,
13092        input: CreateEventSubscriptionMessage,
13093    ) -> Result<CreateEventSubscriptionResult, RusotoError<CreateEventSubscriptionError>>;
13094
13095    /// <p>The DeleteDBCluster action deletes a previously provisioned DB cluster. When you delete a DB cluster, all automated backups for that DB cluster are deleted and can't be recovered. Manual DB cluster snapshots of the specified DB cluster are not deleted.</p> <p>Note that the DB Cluster cannot be deleted if deletion protection is enabled. To delete it, you must first set its <code>DeletionProtection</code> field to <code>False</code>.</p>
13096    async fn delete_db_cluster(
13097        &self,
13098        input: DeleteDBClusterMessage,
13099    ) -> Result<DeleteDBClusterResult, RusotoError<DeleteDBClusterError>>;
13100
13101    /// <p>Deletes a specified DB cluster parameter group. The DB cluster parameter group to be deleted can't be associated with any DB clusters.</p>
13102    async fn delete_db_cluster_parameter_group(
13103        &self,
13104        input: DeleteDBClusterParameterGroupMessage,
13105    ) -> Result<(), RusotoError<DeleteDBClusterParameterGroupError>>;
13106
13107    /// <p><p>Deletes a DB cluster snapshot. If the snapshot is being copied, the copy operation is terminated.</p> <note> <p>The DB cluster snapshot must be in the <code>available</code> state to be deleted.</p> </note></p>
13108    async fn delete_db_cluster_snapshot(
13109        &self,
13110        input: DeleteDBClusterSnapshotMessage,
13111    ) -> Result<DeleteDBClusterSnapshotResult, RusotoError<DeleteDBClusterSnapshotError>>;
13112
13113    /// <p>The DeleteDBInstance action deletes a previously provisioned DB instance. When you delete a DB instance, all automated backups for that instance are deleted and can't be recovered. Manual DB snapshots of the DB instance to be deleted by <code>DeleteDBInstance</code> are not deleted.</p> <p> If you request a final DB snapshot the status of the Amazon Neptune DB instance is <code>deleting</code> until the DB snapshot is created. The API action <code>DescribeDBInstance</code> is used to monitor the status of this operation. The action can't be canceled or reverted once submitted.</p> <p>Note that when a DB instance is in a failure state and has a status of <code>failed</code>, <code>incompatible-restore</code>, or <code>incompatible-network</code>, you can only delete it when the <code>SkipFinalSnapshot</code> parameter is set to <code>true</code>.</p> <p>You can't delete a DB instance if it is the only instance in the DB cluster, or if it has deletion protection enabled.</p>
13114    async fn delete_db_instance(
13115        &self,
13116        input: DeleteDBInstanceMessage,
13117    ) -> Result<DeleteDBInstanceResult, RusotoError<DeleteDBInstanceError>>;
13118
13119    /// <p>Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted can't be associated with any DB instances.</p>
13120    async fn delete_db_parameter_group(
13121        &self,
13122        input: DeleteDBParameterGroupMessage,
13123    ) -> Result<(), RusotoError<DeleteDBParameterGroupError>>;
13124
13125    /// <p><p>Deletes a DB subnet group.</p> <note> <p>The specified database subnet group must not be associated with any DB instances.</p> </note></p>
13126    async fn delete_db_subnet_group(
13127        &self,
13128        input: DeleteDBSubnetGroupMessage,
13129    ) -> Result<(), RusotoError<DeleteDBSubnetGroupError>>;
13130
13131    /// <p>Deletes an event notification subscription.</p>
13132    async fn delete_event_subscription(
13133        &self,
13134        input: DeleteEventSubscriptionMessage,
13135    ) -> Result<DeleteEventSubscriptionResult, RusotoError<DeleteEventSubscriptionError>>;
13136
13137    /// <p> Returns a list of <code>DBClusterParameterGroup</code> descriptions. If a <code>DBClusterParameterGroupName</code> parameter is specified, the list will contain only the description of the specified DB cluster parameter group.</p>
13138    async fn describe_db_cluster_parameter_groups(
13139        &self,
13140        input: DescribeDBClusterParameterGroupsMessage,
13141    ) -> Result<DBClusterParameterGroupsMessage, RusotoError<DescribeDBClusterParameterGroupsError>>;
13142
13143    /// <p>Returns the detailed parameter list for a particular DB cluster parameter group.</p>
13144    async fn describe_db_cluster_parameters(
13145        &self,
13146        input: DescribeDBClusterParametersMessage,
13147    ) -> Result<DBClusterParameterGroupDetails, RusotoError<DescribeDBClusterParametersError>>;
13148
13149    /// <p>Returns a list of DB cluster snapshot attribute names and values for a manual DB cluster snapshot.</p> <p>When sharing snapshots with other AWS accounts, <code>DescribeDBClusterSnapshotAttributes</code> returns the <code>restore</code> attribute and a list of IDs for the AWS accounts that are authorized to copy or restore the manual DB cluster snapshot. If <code>all</code> is included in the list of values for the <code>restore</code> attribute, then the manual DB cluster snapshot is public and can be copied or restored by all AWS accounts.</p> <p>To add or remove access for an AWS account to copy or restore a manual DB cluster snapshot, or to make the manual DB cluster snapshot public or private, use the <a>ModifyDBClusterSnapshotAttribute</a> API action.</p>
13150    async fn describe_db_cluster_snapshot_attributes(
13151        &self,
13152        input: DescribeDBClusterSnapshotAttributesMessage,
13153    ) -> Result<
13154        DescribeDBClusterSnapshotAttributesResult,
13155        RusotoError<DescribeDBClusterSnapshotAttributesError>,
13156    >;
13157
13158    /// <p>Returns information about DB cluster snapshots. This API action supports pagination.</p>
13159    async fn describe_db_cluster_snapshots(
13160        &self,
13161        input: DescribeDBClusterSnapshotsMessage,
13162    ) -> Result<DBClusterSnapshotMessage, RusotoError<DescribeDBClusterSnapshotsError>>;
13163
13164    /// <p><p>Returns information about provisioned DB clusters, and supports pagination.</p> <note> <p>This operation can also return information for Amazon RDS clusters and Amazon DocDB clusters.</p> </note></p>
13165    async fn describe_db_clusters(
13166        &self,
13167        input: DescribeDBClustersMessage,
13168    ) -> Result<DBClusterMessage, RusotoError<DescribeDBClustersError>>;
13169
13170    /// <p>Returns a list of the available DB engines.</p>
13171    async fn describe_db_engine_versions(
13172        &self,
13173        input: DescribeDBEngineVersionsMessage,
13174    ) -> Result<DBEngineVersionMessage, RusotoError<DescribeDBEngineVersionsError>>;
13175
13176    /// <p><p>Returns information about provisioned instances, and supports pagination.</p> <note> <p>This operation can also return information for Amazon RDS instances and Amazon DocDB instances.</p> </note></p>
13177    async fn describe_db_instances(
13178        &self,
13179        input: DescribeDBInstancesMessage,
13180    ) -> Result<DBInstanceMessage, RusotoError<DescribeDBInstancesError>>;
13181
13182    /// <p>Returns a list of <code>DBParameterGroup</code> descriptions. If a <code>DBParameterGroupName</code> is specified, the list will contain only the description of the specified DB parameter group.</p>
13183    async fn describe_db_parameter_groups(
13184        &self,
13185        input: DescribeDBParameterGroupsMessage,
13186    ) -> Result<DBParameterGroupsMessage, RusotoError<DescribeDBParameterGroupsError>>;
13187
13188    /// <p>Returns the detailed parameter list for a particular DB parameter group.</p>
13189    async fn describe_db_parameters(
13190        &self,
13191        input: DescribeDBParametersMessage,
13192    ) -> Result<DBParameterGroupDetails, RusotoError<DescribeDBParametersError>>;
13193
13194    /// <p>Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is specified, the list will contain only the descriptions of the specified DBSubnetGroup.</p> <p>For an overview of CIDR ranges, go to the <a href="http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing">Wikipedia Tutorial</a>.</p>
13195    async fn describe_db_subnet_groups(
13196        &self,
13197        input: DescribeDBSubnetGroupsMessage,
13198    ) -> Result<DBSubnetGroupMessage, RusotoError<DescribeDBSubnetGroupsError>>;
13199
13200    /// <p>Returns the default engine and system parameter information for the cluster database engine.</p>
13201    async fn describe_engine_default_cluster_parameters(
13202        &self,
13203        input: DescribeEngineDefaultClusterParametersMessage,
13204    ) -> Result<
13205        DescribeEngineDefaultClusterParametersResult,
13206        RusotoError<DescribeEngineDefaultClusterParametersError>,
13207    >;
13208
13209    /// <p>Returns the default engine and system parameter information for the specified database engine.</p>
13210    async fn describe_engine_default_parameters(
13211        &self,
13212        input: DescribeEngineDefaultParametersMessage,
13213    ) -> Result<
13214        DescribeEngineDefaultParametersResult,
13215        RusotoError<DescribeEngineDefaultParametersError>,
13216    >;
13217
13218    /// <p>Displays a list of categories for all event source types, or, if specified, for a specified source type.</p>
13219    async fn describe_event_categories(
13220        &self,
13221        input: DescribeEventCategoriesMessage,
13222    ) -> Result<EventCategoriesMessage, RusotoError<DescribeEventCategoriesError>>;
13223
13224    /// <p>Lists all the subscription descriptions for a customer account. The description for a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, CreationTime, and Status.</p> <p>If you specify a SubscriptionName, lists the description for that subscription.</p>
13225    async fn describe_event_subscriptions(
13226        &self,
13227        input: DescribeEventSubscriptionsMessage,
13228    ) -> Result<EventSubscriptionsMessage, RusotoError<DescribeEventSubscriptionsError>>;
13229
13230    /// <p>Returns events related to DB instances, DB security groups, DB snapshots, and DB parameter groups for the past 14 days. Events specific to a particular DB instance, DB security group, database snapshot, or DB parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned.</p>
13231    async fn describe_events(
13232        &self,
13233        input: DescribeEventsMessage,
13234    ) -> Result<EventsMessage, RusotoError<DescribeEventsError>>;
13235
13236    /// <p>Returns a list of orderable DB instance options for the specified engine.</p>
13237    async fn describe_orderable_db_instance_options(
13238        &self,
13239        input: DescribeOrderableDBInstanceOptionsMessage,
13240    ) -> Result<
13241        OrderableDBInstanceOptionsMessage,
13242        RusotoError<DescribeOrderableDBInstanceOptionsError>,
13243    >;
13244
13245    /// <p>Returns a list of resources (for example, DB instances) that have at least one pending maintenance action.</p>
13246    async fn describe_pending_maintenance_actions(
13247        &self,
13248        input: DescribePendingMaintenanceActionsMessage,
13249    ) -> Result<PendingMaintenanceActionsMessage, RusotoError<DescribePendingMaintenanceActionsError>>;
13250
13251    /// <p>You can call <a>DescribeValidDBInstanceModifications</a> to learn what modifications you can make to your DB instance. You can use this information when you call <a>ModifyDBInstance</a>.</p>
13252    async fn describe_valid_db_instance_modifications(
13253        &self,
13254        input: DescribeValidDBInstanceModificationsMessage,
13255    ) -> Result<
13256        DescribeValidDBInstanceModificationsResult,
13257        RusotoError<DescribeValidDBInstanceModificationsError>,
13258    >;
13259
13260    /// <p>Forces a failover for a DB cluster.</p> <p>A failover for a DB cluster promotes one of the Read Replicas (read-only instances) in the DB cluster to be the primary instance (the cluster writer).</p> <p>Amazon Neptune will automatically fail over to a Read Replica, if one exists, when the primary instance fails. You can force a failover when you want to simulate a failure of a primary instance for testing. Because each instance in a DB cluster has its own endpoint address, you will need to clean up and re-establish any existing connections that use those endpoint addresses when the failover is complete.</p>
13261    async fn failover_db_cluster(
13262        &self,
13263        input: FailoverDBClusterMessage,
13264    ) -> Result<FailoverDBClusterResult, RusotoError<FailoverDBClusterError>>;
13265
13266    /// <p>Lists all tags on an Amazon Neptune resource.</p>
13267    async fn list_tags_for_resource(
13268        &self,
13269        input: ListTagsForResourceMessage,
13270    ) -> Result<TagListMessage, RusotoError<ListTagsForResourceError>>;
13271
13272    /// <p>Modify a setting for a DB cluster. You can change one or more database configuration parameters by specifying these parameters and the new values in the request.</p>
13273    async fn modify_db_cluster(
13274        &self,
13275        input: ModifyDBClusterMessage,
13276    ) -> Result<ModifyDBClusterResult, RusotoError<ModifyDBClusterError>>;
13277
13278    /// <p><p> Modifies the parameters of a DB cluster parameter group. To modify more than one parameter, submit a list of the following: <code>ParameterName</code>, <code>ParameterValue</code>, and <code>ApplyMethod</code>. A maximum of 20 parameters can be modified in a single request.</p> <note> <p>Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB cluster associated with the parameter group before the change can take effect.</p> </note> <important> <p>After you create a DB cluster parameter group, you should wait at least 5 minutes before creating your first DB cluster that uses that DB cluster parameter group as the default parameter group. This allows Amazon Neptune to fully complete the create action before the parameter group is used as the default for a new DB cluster. This is especially important for parameters that are critical when creating the default database for a DB cluster, such as the character set for the default database defined by the <code>character<em>set</em>database</code> parameter. You can use the <i>Parameter Groups</i> option of the Amazon Neptune console or the <a>DescribeDBClusterParameters</a> command to verify that your DB cluster parameter group has been created or modified.</p> </important></p>
13279    async fn modify_db_cluster_parameter_group(
13280        &self,
13281        input: ModifyDBClusterParameterGroupMessage,
13282    ) -> Result<DBClusterParameterGroupNameMessage, RusotoError<ModifyDBClusterParameterGroupError>>;
13283
13284    /// <p>Adds an attribute and values to, or removes an attribute and values from, a manual DB cluster snapshot.</p> <p>To share a manual DB cluster snapshot with other AWS accounts, specify <code>restore</code> as the <code>AttributeName</code> and use the <code>ValuesToAdd</code> parameter to add a list of IDs of the AWS accounts that are authorized to restore the manual DB cluster snapshot. Use the value <code>all</code> to make the manual DB cluster snapshot public, which means that it can be copied or restored by all AWS accounts. Do not add the <code>all</code> value for any manual DB cluster snapshots that contain private information that you don't want available to all AWS accounts. If a manual DB cluster snapshot is encrypted, it can be shared, but only by specifying a list of authorized AWS account IDs for the <code>ValuesToAdd</code> parameter. You can't use <code>all</code> as a value for that parameter in this case.</p> <p>To view which AWS accounts have access to copy or restore a manual DB cluster snapshot, or whether a manual DB cluster snapshot public or private, use the <a>DescribeDBClusterSnapshotAttributes</a> API action.</p>
13285    async fn modify_db_cluster_snapshot_attribute(
13286        &self,
13287        input: ModifyDBClusterSnapshotAttributeMessage,
13288    ) -> Result<
13289        ModifyDBClusterSnapshotAttributeResult,
13290        RusotoError<ModifyDBClusterSnapshotAttributeError>,
13291    >;
13292
13293    /// <p>Modifies settings for a DB instance. You can change one or more database configuration parameters by specifying these parameters and the new values in the request. To learn what modifications you can make to your DB instance, call <a>DescribeValidDBInstanceModifications</a> before you call <a>ModifyDBInstance</a>.</p>
13294    async fn modify_db_instance(
13295        &self,
13296        input: ModifyDBInstanceMessage,
13297    ) -> Result<ModifyDBInstanceResult, RusotoError<ModifyDBInstanceError>>;
13298
13299    /// <p><p>Modifies the parameters of a DB parameter group. To modify more than one parameter, submit a list of the following: <code>ParameterName</code>, <code>ParameterValue</code>, and <code>ApplyMethod</code>. A maximum of 20 parameters can be modified in a single request.</p> <note> <p>Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB instance associated with the parameter group before the change can take effect.</p> </note> <important> <p>After you modify a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon Neptune to fully complete the modify action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the <code>character<em>set</em>database</code> parameter. You can use the <i>Parameter Groups</i> option of the Amazon Neptune console or the <i>DescribeDBParameters</i> command to verify that your DB parameter group has been created or modified.</p> </important></p>
13300    async fn modify_db_parameter_group(
13301        &self,
13302        input: ModifyDBParameterGroupMessage,
13303    ) -> Result<DBParameterGroupNameMessage, RusotoError<ModifyDBParameterGroupError>>;
13304
13305    /// <p>Modifies an existing DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the AWS Region.</p>
13306    async fn modify_db_subnet_group(
13307        &self,
13308        input: ModifyDBSubnetGroupMessage,
13309    ) -> Result<ModifyDBSubnetGroupResult, RusotoError<ModifyDBSubnetGroupError>>;
13310
13311    /// <p>Modifies an existing event notification subscription. Note that you can't modify the source identifiers using this call; to change source identifiers for a subscription, use the <a>AddSourceIdentifierToSubscription</a> and <a>RemoveSourceIdentifierFromSubscription</a> calls.</p> <p>You can see a list of the event categories for a given SourceType by using the <b>DescribeEventCategories</b> action.</p>
13312    async fn modify_event_subscription(
13313        &self,
13314        input: ModifyEventSubscriptionMessage,
13315    ) -> Result<ModifyEventSubscriptionResult, RusotoError<ModifyEventSubscriptionError>>;
13316
13317    /// <p>Not supported.</p>
13318    async fn promote_read_replica_db_cluster(
13319        &self,
13320        input: PromoteReadReplicaDBClusterMessage,
13321    ) -> Result<PromoteReadReplicaDBClusterResult, RusotoError<PromoteReadReplicaDBClusterError>>;
13322
13323    /// <p>You might need to reboot your DB instance, usually for maintenance reasons. For example, if you make certain modifications, or if you change the DB parameter group associated with the DB instance, you must reboot the instance for the changes to take effect.</p> <p>Rebooting a DB instance restarts the database engine service. Rebooting a DB instance results in a momentary outage, during which the DB instance status is set to rebooting.</p>
13324    async fn reboot_db_instance(
13325        &self,
13326        input: RebootDBInstanceMessage,
13327    ) -> Result<RebootDBInstanceResult, RusotoError<RebootDBInstanceError>>;
13328
13329    /// <p>Disassociates an Identity and Access Management (IAM) role from a DB cluster.</p>
13330    async fn remove_role_from_db_cluster(
13331        &self,
13332        input: RemoveRoleFromDBClusterMessage,
13333    ) -> Result<(), RusotoError<RemoveRoleFromDBClusterError>>;
13334
13335    /// <p>Removes a source identifier from an existing event notification subscription.</p>
13336    async fn remove_source_identifier_from_subscription(
13337        &self,
13338        input: RemoveSourceIdentifierFromSubscriptionMessage,
13339    ) -> Result<
13340        RemoveSourceIdentifierFromSubscriptionResult,
13341        RusotoError<RemoveSourceIdentifierFromSubscriptionError>,
13342    >;
13343
13344    /// <p>Removes metadata tags from an Amazon Neptune resource.</p>
13345    async fn remove_tags_from_resource(
13346        &self,
13347        input: RemoveTagsFromResourceMessage,
13348    ) -> Result<(), RusotoError<RemoveTagsFromResourceError>>;
13349
13350    /// <p> Modifies the parameters of a DB cluster parameter group to the default value. To reset specific parameters submit a list of the following: <code>ParameterName</code> and <code>ApplyMethod</code>. To reset the entire DB cluster parameter group, specify the <code>DBClusterParameterGroupName</code> and <code>ResetAllParameters</code> parameters.</p> <p> When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to <code>pending-reboot</code> to take effect on the next DB instance restart or <a>RebootDBInstance</a> request. You must call <a>RebootDBInstance</a> for every DB instance in your DB cluster that you want the updated static parameter to apply to.</p>
13351    async fn reset_db_cluster_parameter_group(
13352        &self,
13353        input: ResetDBClusterParameterGroupMessage,
13354    ) -> Result<DBClusterParameterGroupNameMessage, RusotoError<ResetDBClusterParameterGroupError>>;
13355
13356    /// <p>Modifies the parameters of a DB parameter group to the engine/system default value. To reset specific parameters, provide a list of the following: <code>ParameterName</code> and <code>ApplyMethod</code>. To reset the entire DB parameter group, specify the <code>DBParameterGroup</code> name and <code>ResetAllParameters</code> parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to <code>pending-reboot</code> to take effect on the next DB instance restart or <code>RebootDBInstance</code> request.</p>
13357    async fn reset_db_parameter_group(
13358        &self,
13359        input: ResetDBParameterGroupMessage,
13360    ) -> Result<DBParameterGroupNameMessage, RusotoError<ResetDBParameterGroupError>>;
13361
13362    /// <p>Creates a new DB cluster from a DB snapshot or DB cluster snapshot.</p> <p>If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.</p> <p>If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.</p>
13363    async fn restore_db_cluster_from_snapshot(
13364        &self,
13365        input: RestoreDBClusterFromSnapshotMessage,
13366    ) -> Result<RestoreDBClusterFromSnapshotResult, RusotoError<RestoreDBClusterFromSnapshotError>>;
13367
13368    /// <p><p>Restores a DB cluster to an arbitrary point in time. Users can restore to any point in time before <code>LatestRestorableTime</code> for up to <code>BackupRetentionPeriod</code> days. The target DB cluster is created from the source DB cluster with the same configuration as the original DB cluster, except that the new DB cluster is created with the default DB security group.</p> <note> <p>This action only restores the DB cluster, not the DB instances for that DB cluster. You must invoke the <a>CreateDBInstance</a> action to create DB instances for the restored DB cluster, specifying the identifier of the restored DB cluster in <code>DBClusterIdentifier</code>. You can create DB instances only after the <code>RestoreDBClusterToPointInTime</code> action has completed and the DB cluster is available.</p> </note></p>
13369    async fn restore_db_cluster_to_point_in_time(
13370        &self,
13371        input: RestoreDBClusterToPointInTimeMessage,
13372    ) -> Result<RestoreDBClusterToPointInTimeResult, RusotoError<RestoreDBClusterToPointInTimeError>>;
13373
13374    /// <p>Starts an Amazon Neptune DB cluster that was stopped using the AWS console, the AWS CLI stop-db-cluster command, or the StopDBCluster API.</p>
13375    async fn start_db_cluster(
13376        &self,
13377        input: StartDBClusterMessage,
13378    ) -> Result<StartDBClusterResult, RusotoError<StartDBClusterError>>;
13379
13380    /// <p>Stops an Amazon Neptune DB cluster. When you stop a DB cluster, Neptune retains the DB cluster's metadata, including its endpoints and DB parameter groups.</p> <p>Neptune also retains the transaction logs so you can do a point-in-time restore if necessary.</p>
13381    async fn stop_db_cluster(
13382        &self,
13383        input: StopDBClusterMessage,
13384    ) -> Result<StopDBClusterResult, RusotoError<StopDBClusterError>>;
13385}
13386/// A client for the Amazon Neptune API.
13387#[derive(Clone)]
13388pub struct NeptuneClient {
13389    client: Client,
13390    region: region::Region,
13391}
13392
13393impl NeptuneClient {
13394    /// Creates a client backed by the default tokio event loop.
13395    ///
13396    /// The client will use the default credentials provider and tls client.
13397    pub fn new(region: region::Region) -> NeptuneClient {
13398        NeptuneClient {
13399            client: Client::shared(),
13400            region,
13401        }
13402    }
13403
13404    pub fn new_with<P, D>(
13405        request_dispatcher: D,
13406        credentials_provider: P,
13407        region: region::Region,
13408    ) -> NeptuneClient
13409    where
13410        P: ProvideAwsCredentials + Send + Sync + 'static,
13411        D: DispatchSignedRequest + Send + Sync + 'static,
13412    {
13413        NeptuneClient {
13414            client: Client::new_with(credentials_provider, request_dispatcher),
13415            region,
13416        }
13417    }
13418
13419    pub fn new_with_client(client: Client, region: region::Region) -> NeptuneClient {
13420        NeptuneClient { client, region }
13421    }
13422}
13423
13424#[async_trait]
13425impl Neptune for NeptuneClient {
13426    /// <p>Associates an Identity and Access Management (IAM) role from an Neptune DB cluster.</p>
13427    async fn add_role_to_db_cluster(
13428        &self,
13429        input: AddRoleToDBClusterMessage,
13430    ) -> Result<(), RusotoError<AddRoleToDBClusterError>> {
13431        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13432        let params = self.new_params("AddRoleToDBCluster");
13433        let mut params = params;
13434        AddRoleToDBClusterMessageSerializer::serialize(&mut params, "", &input);
13435        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13436        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13437
13438        let response = self
13439            .sign_and_dispatch(request, AddRoleToDBClusterError::from_response)
13440            .await?;
13441
13442        std::mem::drop(response);
13443        Ok(())
13444    }
13445
13446    /// <p>Adds a source identifier to an existing event notification subscription.</p>
13447    async fn add_source_identifier_to_subscription(
13448        &self,
13449        input: AddSourceIdentifierToSubscriptionMessage,
13450    ) -> Result<
13451        AddSourceIdentifierToSubscriptionResult,
13452        RusotoError<AddSourceIdentifierToSubscriptionError>,
13453    > {
13454        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13455        let params = self.new_params("AddSourceIdentifierToSubscription");
13456        let mut params = params;
13457        AddSourceIdentifierToSubscriptionMessageSerializer::serialize(&mut params, "", &input);
13458        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13459        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13460
13461        let response = self
13462            .sign_and_dispatch(
13463                request,
13464                AddSourceIdentifierToSubscriptionError::from_response,
13465            )
13466            .await?;
13467
13468        let mut response = response;
13469        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13470            xml_util::start_element(actual_tag_name, stack)?;
13471            let result = AddSourceIdentifierToSubscriptionResultDeserializer::deserialize(
13472                "AddSourceIdentifierToSubscriptionResult",
13473                stack,
13474            )?;
13475            skip_tree(stack);
13476            xml_util::end_element(actual_tag_name, stack)?;
13477            Ok(result)
13478        })
13479        .await?;
13480
13481        drop(response); // parse non-payload
13482        Ok(result)
13483    }
13484
13485    /// <p>Adds metadata tags to an Amazon Neptune resource. These tags can also be used with cost allocation reporting to track cost associated with Amazon Neptune resources, or used in a Condition statement in an IAM policy for Amazon Neptune.</p>
13486    async fn add_tags_to_resource(
13487        &self,
13488        input: AddTagsToResourceMessage,
13489    ) -> Result<(), RusotoError<AddTagsToResourceError>> {
13490        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13491        let params = self.new_params("AddTagsToResource");
13492        let mut params = params;
13493        AddTagsToResourceMessageSerializer::serialize(&mut params, "", &input);
13494        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13495        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13496
13497        let response = self
13498            .sign_and_dispatch(request, AddTagsToResourceError::from_response)
13499            .await?;
13500
13501        std::mem::drop(response);
13502        Ok(())
13503    }
13504
13505    /// <p>Applies a pending maintenance action to a resource (for example, to a DB instance).</p>
13506    async fn apply_pending_maintenance_action(
13507        &self,
13508        input: ApplyPendingMaintenanceActionMessage,
13509    ) -> Result<ApplyPendingMaintenanceActionResult, RusotoError<ApplyPendingMaintenanceActionError>>
13510    {
13511        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13512        let params = self.new_params("ApplyPendingMaintenanceAction");
13513        let mut params = params;
13514        ApplyPendingMaintenanceActionMessageSerializer::serialize(&mut params, "", &input);
13515        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13516        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13517
13518        let response = self
13519            .sign_and_dispatch(request, ApplyPendingMaintenanceActionError::from_response)
13520            .await?;
13521
13522        let mut response = response;
13523        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13524            xml_util::start_element(actual_tag_name, stack)?;
13525            let result = ApplyPendingMaintenanceActionResultDeserializer::deserialize(
13526                "ApplyPendingMaintenanceActionResult",
13527                stack,
13528            )?;
13529            skip_tree(stack);
13530            xml_util::end_element(actual_tag_name, stack)?;
13531            Ok(result)
13532        })
13533        .await?;
13534
13535        drop(response); // parse non-payload
13536        Ok(result)
13537    }
13538
13539    /// <p>Copies the specified DB cluster parameter group.</p>
13540    async fn copy_db_cluster_parameter_group(
13541        &self,
13542        input: CopyDBClusterParameterGroupMessage,
13543    ) -> Result<CopyDBClusterParameterGroupResult, RusotoError<CopyDBClusterParameterGroupError>>
13544    {
13545        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13546        let params = self.new_params("CopyDBClusterParameterGroup");
13547        let mut params = params;
13548        CopyDBClusterParameterGroupMessageSerializer::serialize(&mut params, "", &input);
13549        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13550        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13551
13552        let response = self
13553            .sign_and_dispatch(request, CopyDBClusterParameterGroupError::from_response)
13554            .await?;
13555
13556        let mut response = response;
13557        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13558            xml_util::start_element(actual_tag_name, stack)?;
13559            let result = CopyDBClusterParameterGroupResultDeserializer::deserialize(
13560                "CopyDBClusterParameterGroupResult",
13561                stack,
13562            )?;
13563            skip_tree(stack);
13564            xml_util::end_element(actual_tag_name, stack)?;
13565            Ok(result)
13566        })
13567        .await?;
13568
13569        drop(response); // parse non-payload
13570        Ok(result)
13571    }
13572
13573    /// <p>Copies a snapshot of a DB cluster.</p> <p>To copy a DB cluster snapshot from a shared manual DB cluster snapshot, <code>SourceDBClusterSnapshotIdentifier</code> must be the Amazon Resource Name (ARN) of the shared DB cluster snapshot.</p>
13574    async fn copy_db_cluster_snapshot(
13575        &self,
13576        input: CopyDBClusterSnapshotMessage,
13577    ) -> Result<CopyDBClusterSnapshotResult, RusotoError<CopyDBClusterSnapshotError>> {
13578        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13579        let params = self.new_params("CopyDBClusterSnapshot");
13580        let mut params = params;
13581        CopyDBClusterSnapshotMessageSerializer::serialize(&mut params, "", &input);
13582        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13583        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13584
13585        let response = self
13586            .sign_and_dispatch(request, CopyDBClusterSnapshotError::from_response)
13587            .await?;
13588
13589        let mut response = response;
13590        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13591            xml_util::start_element(actual_tag_name, stack)?;
13592            let result = CopyDBClusterSnapshotResultDeserializer::deserialize(
13593                "CopyDBClusterSnapshotResult",
13594                stack,
13595            )?;
13596            skip_tree(stack);
13597            xml_util::end_element(actual_tag_name, stack)?;
13598            Ok(result)
13599        })
13600        .await?;
13601
13602        drop(response); // parse non-payload
13603        Ok(result)
13604    }
13605
13606    /// <p>Copies the specified DB parameter group.</p>
13607    async fn copy_db_parameter_group(
13608        &self,
13609        input: CopyDBParameterGroupMessage,
13610    ) -> Result<CopyDBParameterGroupResult, RusotoError<CopyDBParameterGroupError>> {
13611        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13612        let params = self.new_params("CopyDBParameterGroup");
13613        let mut params = params;
13614        CopyDBParameterGroupMessageSerializer::serialize(&mut params, "", &input);
13615        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13616        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13617
13618        let response = self
13619            .sign_and_dispatch(request, CopyDBParameterGroupError::from_response)
13620            .await?;
13621
13622        let mut response = response;
13623        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13624            xml_util::start_element(actual_tag_name, stack)?;
13625            let result = CopyDBParameterGroupResultDeserializer::deserialize(
13626                "CopyDBParameterGroupResult",
13627                stack,
13628            )?;
13629            skip_tree(stack);
13630            xml_util::end_element(actual_tag_name, stack)?;
13631            Ok(result)
13632        })
13633        .await?;
13634
13635        drop(response); // parse non-payload
13636        Ok(result)
13637    }
13638
13639    /// <p>Creates a new Amazon Neptune DB cluster.</p> <p>You can use the <code>ReplicationSourceIdentifier</code> parameter to create the DB cluster as a Read Replica of another DB cluster or Amazon Neptune DB instance.</p> <p>Note that when you create a new cluster using <code>CreateDBCluster</code> directly, deletion protection is disabled by default (when you create a new production cluster in the console, deletion protection is enabled by default). You can only delete a DB cluster if its <code>DeletionProtection</code> field is set to <code>false</code>.</p>
13640    async fn create_db_cluster(
13641        &self,
13642        input: CreateDBClusterMessage,
13643    ) -> Result<CreateDBClusterResult, RusotoError<CreateDBClusterError>> {
13644        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13645        let params = self.new_params("CreateDBCluster");
13646        let mut params = params;
13647        CreateDBClusterMessageSerializer::serialize(&mut params, "", &input);
13648        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13649        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13650
13651        let response = self
13652            .sign_and_dispatch(request, CreateDBClusterError::from_response)
13653            .await?;
13654
13655        let mut response = response;
13656        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13657            xml_util::start_element(actual_tag_name, stack)?;
13658            let result =
13659                CreateDBClusterResultDeserializer::deserialize("CreateDBClusterResult", stack)?;
13660            skip_tree(stack);
13661            xml_util::end_element(actual_tag_name, stack)?;
13662            Ok(result)
13663        })
13664        .await?;
13665
13666        drop(response); // parse non-payload
13667        Ok(result)
13668    }
13669
13670    /// <p><p>Creates a new DB cluster parameter group.</p> <p>Parameters in a DB cluster parameter group apply to all of the instances in a DB cluster.</p> <p> A DB cluster parameter group is initially created with the default parameters for the database engine used by instances in the DB cluster. To provide custom values for any of the parameters, you must modify the group after creating it using <a>ModifyDBClusterParameterGroup</a>. Once you&#39;ve created a DB cluster parameter group, you need to associate it with your DB cluster using <a>ModifyDBCluster</a>. When you associate a new DB cluster parameter group with a running DB cluster, you need to reboot the DB instances in the DB cluster without failover for the new DB cluster parameter group and associated settings to take effect.</p> <important> <p>After you create a DB cluster parameter group, you should wait at least 5 minutes before creating your first DB cluster that uses that DB cluster parameter group as the default parameter group. This allows Amazon Neptune to fully complete the create action before the DB cluster parameter group is used as the default for a new DB cluster. This is especially important for parameters that are critical when creating the default database for a DB cluster, such as the character set for the default database defined by the <code>character<em>set</em>database</code> parameter. You can use the <i>Parameter Groups</i> option of the <a href="https://console.aws.amazon.com/rds/">Amazon Neptune console</a> or the <a>DescribeDBClusterParameters</a> command to verify that your DB cluster parameter group has been created or modified.</p> </important></p>
13671    async fn create_db_cluster_parameter_group(
13672        &self,
13673        input: CreateDBClusterParameterGroupMessage,
13674    ) -> Result<CreateDBClusterParameterGroupResult, RusotoError<CreateDBClusterParameterGroupError>>
13675    {
13676        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13677        let params = self.new_params("CreateDBClusterParameterGroup");
13678        let mut params = params;
13679        CreateDBClusterParameterGroupMessageSerializer::serialize(&mut params, "", &input);
13680        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13681        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13682
13683        let response = self
13684            .sign_and_dispatch(request, CreateDBClusterParameterGroupError::from_response)
13685            .await?;
13686
13687        let mut response = response;
13688        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13689            xml_util::start_element(actual_tag_name, stack)?;
13690            let result = CreateDBClusterParameterGroupResultDeserializer::deserialize(
13691                "CreateDBClusterParameterGroupResult",
13692                stack,
13693            )?;
13694            skip_tree(stack);
13695            xml_util::end_element(actual_tag_name, stack)?;
13696            Ok(result)
13697        })
13698        .await?;
13699
13700        drop(response); // parse non-payload
13701        Ok(result)
13702    }
13703
13704    /// <p>Creates a snapshot of a DB cluster.</p>
13705    async fn create_db_cluster_snapshot(
13706        &self,
13707        input: CreateDBClusterSnapshotMessage,
13708    ) -> Result<CreateDBClusterSnapshotResult, RusotoError<CreateDBClusterSnapshotError>> {
13709        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13710        let params = self.new_params("CreateDBClusterSnapshot");
13711        let mut params = params;
13712        CreateDBClusterSnapshotMessageSerializer::serialize(&mut params, "", &input);
13713        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13714        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13715
13716        let response = self
13717            .sign_and_dispatch(request, CreateDBClusterSnapshotError::from_response)
13718            .await?;
13719
13720        let mut response = response;
13721        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13722            xml_util::start_element(actual_tag_name, stack)?;
13723            let result = CreateDBClusterSnapshotResultDeserializer::deserialize(
13724                "CreateDBClusterSnapshotResult",
13725                stack,
13726            )?;
13727            skip_tree(stack);
13728            xml_util::end_element(actual_tag_name, stack)?;
13729            Ok(result)
13730        })
13731        .await?;
13732
13733        drop(response); // parse non-payload
13734        Ok(result)
13735    }
13736
13737    /// <p>Creates a new DB instance.</p>
13738    async fn create_db_instance(
13739        &self,
13740        input: CreateDBInstanceMessage,
13741    ) -> Result<CreateDBInstanceResult, RusotoError<CreateDBInstanceError>> {
13742        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13743        let params = self.new_params("CreateDBInstance");
13744        let mut params = params;
13745        CreateDBInstanceMessageSerializer::serialize(&mut params, "", &input);
13746        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13747        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13748
13749        let response = self
13750            .sign_and_dispatch(request, CreateDBInstanceError::from_response)
13751            .await?;
13752
13753        let mut response = response;
13754        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13755            xml_util::start_element(actual_tag_name, stack)?;
13756            let result =
13757                CreateDBInstanceResultDeserializer::deserialize("CreateDBInstanceResult", stack)?;
13758            skip_tree(stack);
13759            xml_util::end_element(actual_tag_name, stack)?;
13760            Ok(result)
13761        })
13762        .await?;
13763
13764        drop(response); // parse non-payload
13765        Ok(result)
13766    }
13767
13768    /// <p><p>Creates a new DB parameter group.</p> <p>A DB parameter group is initially created with the default parameters for the database engine used by the DB instance. To provide custom values for any of the parameters, you must modify the group after creating it using <i>ModifyDBParameterGroup</i>. Once you&#39;ve created a DB parameter group, you need to associate it with your DB instance using <i>ModifyDBInstance</i>. When you associate a new DB parameter group with a running DB instance, you need to reboot the DB instance without failover for the new DB parameter group and associated settings to take effect.</p> <important> <p>After you create a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon Neptune to fully complete the create action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the <code>character<em>set</em>database</code> parameter. You can use the <i>Parameter Groups</i> option of the Amazon Neptune console or the <i>DescribeDBParameters</i> command to verify that your DB parameter group has been created or modified.</p> </important></p>
13769    async fn create_db_parameter_group(
13770        &self,
13771        input: CreateDBParameterGroupMessage,
13772    ) -> Result<CreateDBParameterGroupResult, RusotoError<CreateDBParameterGroupError>> {
13773        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13774        let params = self.new_params("CreateDBParameterGroup");
13775        let mut params = params;
13776        CreateDBParameterGroupMessageSerializer::serialize(&mut params, "", &input);
13777        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13778        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13779
13780        let response = self
13781            .sign_and_dispatch(request, CreateDBParameterGroupError::from_response)
13782            .await?;
13783
13784        let mut response = response;
13785        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13786            xml_util::start_element(actual_tag_name, stack)?;
13787            let result = CreateDBParameterGroupResultDeserializer::deserialize(
13788                "CreateDBParameterGroupResult",
13789                stack,
13790            )?;
13791            skip_tree(stack);
13792            xml_util::end_element(actual_tag_name, stack)?;
13793            Ok(result)
13794        })
13795        .await?;
13796
13797        drop(response); // parse non-payload
13798        Ok(result)
13799    }
13800
13801    /// <p>Creates a new DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the AWS Region.</p>
13802    async fn create_db_subnet_group(
13803        &self,
13804        input: CreateDBSubnetGroupMessage,
13805    ) -> Result<CreateDBSubnetGroupResult, RusotoError<CreateDBSubnetGroupError>> {
13806        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13807        let params = self.new_params("CreateDBSubnetGroup");
13808        let mut params = params;
13809        CreateDBSubnetGroupMessageSerializer::serialize(&mut params, "", &input);
13810        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13811        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13812
13813        let response = self
13814            .sign_and_dispatch(request, CreateDBSubnetGroupError::from_response)
13815            .await?;
13816
13817        let mut response = response;
13818        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13819            xml_util::start_element(actual_tag_name, stack)?;
13820            let result = CreateDBSubnetGroupResultDeserializer::deserialize(
13821                "CreateDBSubnetGroupResult",
13822                stack,
13823            )?;
13824            skip_tree(stack);
13825            xml_util::end_element(actual_tag_name, stack)?;
13826            Ok(result)
13827        })
13828        .await?;
13829
13830        drop(response); // parse non-payload
13831        Ok(result)
13832    }
13833
13834    /// <p>Creates an event notification subscription. This action requires a topic ARN (Amazon Resource Name) created by either the Neptune console, the SNS console, or the SNS API. To obtain an ARN with SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console.</p> <p>You can specify the type of source (SourceType) you want to be notified of, provide a list of Neptune sources (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. For example, you can specify SourceType = db-instance, SourceIds = mydbinstance1, mydbinstance2 and EventCategories = Availability, Backup.</p> <p>If you specify both the SourceType and SourceIds, such as SourceType = db-instance and SourceIdentifier = myDBInstance1, you are notified of all the db-instance events for the specified source. If you specify a SourceType but do not specify a SourceIdentifier, you receive notice of the events for that source type for all your Neptune sources. If you do not specify either the SourceType nor the SourceIdentifier, you are notified of events generated from all Neptune sources belonging to your customer account.</p>
13835    async fn create_event_subscription(
13836        &self,
13837        input: CreateEventSubscriptionMessage,
13838    ) -> Result<CreateEventSubscriptionResult, RusotoError<CreateEventSubscriptionError>> {
13839        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13840        let params = self.new_params("CreateEventSubscription");
13841        let mut params = params;
13842        CreateEventSubscriptionMessageSerializer::serialize(&mut params, "", &input);
13843        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13844        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13845
13846        let response = self
13847            .sign_and_dispatch(request, CreateEventSubscriptionError::from_response)
13848            .await?;
13849
13850        let mut response = response;
13851        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13852            xml_util::start_element(actual_tag_name, stack)?;
13853            let result = CreateEventSubscriptionResultDeserializer::deserialize(
13854                "CreateEventSubscriptionResult",
13855                stack,
13856            )?;
13857            skip_tree(stack);
13858            xml_util::end_element(actual_tag_name, stack)?;
13859            Ok(result)
13860        })
13861        .await?;
13862
13863        drop(response); // parse non-payload
13864        Ok(result)
13865    }
13866
13867    /// <p>The DeleteDBCluster action deletes a previously provisioned DB cluster. When you delete a DB cluster, all automated backups for that DB cluster are deleted and can't be recovered. Manual DB cluster snapshots of the specified DB cluster are not deleted.</p> <p>Note that the DB Cluster cannot be deleted if deletion protection is enabled. To delete it, you must first set its <code>DeletionProtection</code> field to <code>False</code>.</p>
13868    async fn delete_db_cluster(
13869        &self,
13870        input: DeleteDBClusterMessage,
13871    ) -> Result<DeleteDBClusterResult, RusotoError<DeleteDBClusterError>> {
13872        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13873        let params = self.new_params("DeleteDBCluster");
13874        let mut params = params;
13875        DeleteDBClusterMessageSerializer::serialize(&mut params, "", &input);
13876        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13877        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13878
13879        let response = self
13880            .sign_and_dispatch(request, DeleteDBClusterError::from_response)
13881            .await?;
13882
13883        let mut response = response;
13884        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13885            xml_util::start_element(actual_tag_name, stack)?;
13886            let result =
13887                DeleteDBClusterResultDeserializer::deserialize("DeleteDBClusterResult", stack)?;
13888            skip_tree(stack);
13889            xml_util::end_element(actual_tag_name, stack)?;
13890            Ok(result)
13891        })
13892        .await?;
13893
13894        drop(response); // parse non-payload
13895        Ok(result)
13896    }
13897
13898    /// <p>Deletes a specified DB cluster parameter group. The DB cluster parameter group to be deleted can't be associated with any DB clusters.</p>
13899    async fn delete_db_cluster_parameter_group(
13900        &self,
13901        input: DeleteDBClusterParameterGroupMessage,
13902    ) -> Result<(), RusotoError<DeleteDBClusterParameterGroupError>> {
13903        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13904        let params = self.new_params("DeleteDBClusterParameterGroup");
13905        let mut params = params;
13906        DeleteDBClusterParameterGroupMessageSerializer::serialize(&mut params, "", &input);
13907        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13908        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13909
13910        let response = self
13911            .sign_and_dispatch(request, DeleteDBClusterParameterGroupError::from_response)
13912            .await?;
13913
13914        std::mem::drop(response);
13915        Ok(())
13916    }
13917
13918    /// <p><p>Deletes a DB cluster snapshot. If the snapshot is being copied, the copy operation is terminated.</p> <note> <p>The DB cluster snapshot must be in the <code>available</code> state to be deleted.</p> </note></p>
13919    async fn delete_db_cluster_snapshot(
13920        &self,
13921        input: DeleteDBClusterSnapshotMessage,
13922    ) -> Result<DeleteDBClusterSnapshotResult, RusotoError<DeleteDBClusterSnapshotError>> {
13923        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13924        let params = self.new_params("DeleteDBClusterSnapshot");
13925        let mut params = params;
13926        DeleteDBClusterSnapshotMessageSerializer::serialize(&mut params, "", &input);
13927        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13928        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13929
13930        let response = self
13931            .sign_and_dispatch(request, DeleteDBClusterSnapshotError::from_response)
13932            .await?;
13933
13934        let mut response = response;
13935        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13936            xml_util::start_element(actual_tag_name, stack)?;
13937            let result = DeleteDBClusterSnapshotResultDeserializer::deserialize(
13938                "DeleteDBClusterSnapshotResult",
13939                stack,
13940            )?;
13941            skip_tree(stack);
13942            xml_util::end_element(actual_tag_name, stack)?;
13943            Ok(result)
13944        })
13945        .await?;
13946
13947        drop(response); // parse non-payload
13948        Ok(result)
13949    }
13950
13951    /// <p>The DeleteDBInstance action deletes a previously provisioned DB instance. When you delete a DB instance, all automated backups for that instance are deleted and can't be recovered. Manual DB snapshots of the DB instance to be deleted by <code>DeleteDBInstance</code> are not deleted.</p> <p> If you request a final DB snapshot the status of the Amazon Neptune DB instance is <code>deleting</code> until the DB snapshot is created. The API action <code>DescribeDBInstance</code> is used to monitor the status of this operation. The action can't be canceled or reverted once submitted.</p> <p>Note that when a DB instance is in a failure state and has a status of <code>failed</code>, <code>incompatible-restore</code>, or <code>incompatible-network</code>, you can only delete it when the <code>SkipFinalSnapshot</code> parameter is set to <code>true</code>.</p> <p>You can't delete a DB instance if it is the only instance in the DB cluster, or if it has deletion protection enabled.</p>
13952    async fn delete_db_instance(
13953        &self,
13954        input: DeleteDBInstanceMessage,
13955    ) -> Result<DeleteDBInstanceResult, RusotoError<DeleteDBInstanceError>> {
13956        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13957        let params = self.new_params("DeleteDBInstance");
13958        let mut params = params;
13959        DeleteDBInstanceMessageSerializer::serialize(&mut params, "", &input);
13960        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13961        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13962
13963        let response = self
13964            .sign_and_dispatch(request, DeleteDBInstanceError::from_response)
13965            .await?;
13966
13967        let mut response = response;
13968        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13969            xml_util::start_element(actual_tag_name, stack)?;
13970            let result =
13971                DeleteDBInstanceResultDeserializer::deserialize("DeleteDBInstanceResult", stack)?;
13972            skip_tree(stack);
13973            xml_util::end_element(actual_tag_name, stack)?;
13974            Ok(result)
13975        })
13976        .await?;
13977
13978        drop(response); // parse non-payload
13979        Ok(result)
13980    }
13981
13982    /// <p>Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted can't be associated with any DB instances.</p>
13983    async fn delete_db_parameter_group(
13984        &self,
13985        input: DeleteDBParameterGroupMessage,
13986    ) -> Result<(), RusotoError<DeleteDBParameterGroupError>> {
13987        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
13988        let params = self.new_params("DeleteDBParameterGroup");
13989        let mut params = params;
13990        DeleteDBParameterGroupMessageSerializer::serialize(&mut params, "", &input);
13991        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
13992        request.set_content_type("application/x-www-form-urlencoded".to_owned());
13993
13994        let response = self
13995            .sign_and_dispatch(request, DeleteDBParameterGroupError::from_response)
13996            .await?;
13997
13998        std::mem::drop(response);
13999        Ok(())
14000    }
14001
14002    /// <p><p>Deletes a DB subnet group.</p> <note> <p>The specified database subnet group must not be associated with any DB instances.</p> </note></p>
14003    async fn delete_db_subnet_group(
14004        &self,
14005        input: DeleteDBSubnetGroupMessage,
14006    ) -> Result<(), RusotoError<DeleteDBSubnetGroupError>> {
14007        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14008        let params = self.new_params("DeleteDBSubnetGroup");
14009        let mut params = params;
14010        DeleteDBSubnetGroupMessageSerializer::serialize(&mut params, "", &input);
14011        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14012        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14013
14014        let response = self
14015            .sign_and_dispatch(request, DeleteDBSubnetGroupError::from_response)
14016            .await?;
14017
14018        std::mem::drop(response);
14019        Ok(())
14020    }
14021
14022    /// <p>Deletes an event notification subscription.</p>
14023    async fn delete_event_subscription(
14024        &self,
14025        input: DeleteEventSubscriptionMessage,
14026    ) -> Result<DeleteEventSubscriptionResult, RusotoError<DeleteEventSubscriptionError>> {
14027        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14028        let params = self.new_params("DeleteEventSubscription");
14029        let mut params = params;
14030        DeleteEventSubscriptionMessageSerializer::serialize(&mut params, "", &input);
14031        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14032        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14033
14034        let response = self
14035            .sign_and_dispatch(request, DeleteEventSubscriptionError::from_response)
14036            .await?;
14037
14038        let mut response = response;
14039        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14040            xml_util::start_element(actual_tag_name, stack)?;
14041            let result = DeleteEventSubscriptionResultDeserializer::deserialize(
14042                "DeleteEventSubscriptionResult",
14043                stack,
14044            )?;
14045            skip_tree(stack);
14046            xml_util::end_element(actual_tag_name, stack)?;
14047            Ok(result)
14048        })
14049        .await?;
14050
14051        drop(response); // parse non-payload
14052        Ok(result)
14053    }
14054
14055    /// <p> Returns a list of <code>DBClusterParameterGroup</code> descriptions. If a <code>DBClusterParameterGroupName</code> parameter is specified, the list will contain only the description of the specified DB cluster parameter group.</p>
14056    async fn describe_db_cluster_parameter_groups(
14057        &self,
14058        input: DescribeDBClusterParameterGroupsMessage,
14059    ) -> Result<DBClusterParameterGroupsMessage, RusotoError<DescribeDBClusterParameterGroupsError>>
14060    {
14061        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14062        let params = self.new_params("DescribeDBClusterParameterGroups");
14063        let mut params = params;
14064        DescribeDBClusterParameterGroupsMessageSerializer::serialize(&mut params, "", &input);
14065        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14066        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14067
14068        let response = self
14069            .sign_and_dispatch(
14070                request,
14071                DescribeDBClusterParameterGroupsError::from_response,
14072            )
14073            .await?;
14074
14075        let mut response = response;
14076        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14077            xml_util::start_element(actual_tag_name, stack)?;
14078            let result = DBClusterParameterGroupsMessageDeserializer::deserialize(
14079                "DescribeDBClusterParameterGroupsResult",
14080                stack,
14081            )?;
14082            skip_tree(stack);
14083            xml_util::end_element(actual_tag_name, stack)?;
14084            Ok(result)
14085        })
14086        .await?;
14087
14088        drop(response); // parse non-payload
14089        Ok(result)
14090    }
14091
14092    /// <p>Returns the detailed parameter list for a particular DB cluster parameter group.</p>
14093    async fn describe_db_cluster_parameters(
14094        &self,
14095        input: DescribeDBClusterParametersMessage,
14096    ) -> Result<DBClusterParameterGroupDetails, RusotoError<DescribeDBClusterParametersError>> {
14097        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14098        let params = self.new_params("DescribeDBClusterParameters");
14099        let mut params = params;
14100        DescribeDBClusterParametersMessageSerializer::serialize(&mut params, "", &input);
14101        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14102        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14103
14104        let response = self
14105            .sign_and_dispatch(request, DescribeDBClusterParametersError::from_response)
14106            .await?;
14107
14108        let mut response = response;
14109        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14110            xml_util::start_element(actual_tag_name, stack)?;
14111            let result = DBClusterParameterGroupDetailsDeserializer::deserialize(
14112                "DescribeDBClusterParametersResult",
14113                stack,
14114            )?;
14115            skip_tree(stack);
14116            xml_util::end_element(actual_tag_name, stack)?;
14117            Ok(result)
14118        })
14119        .await?;
14120
14121        drop(response); // parse non-payload
14122        Ok(result)
14123    }
14124
14125    /// <p>Returns a list of DB cluster snapshot attribute names and values for a manual DB cluster snapshot.</p> <p>When sharing snapshots with other AWS accounts, <code>DescribeDBClusterSnapshotAttributes</code> returns the <code>restore</code> attribute and a list of IDs for the AWS accounts that are authorized to copy or restore the manual DB cluster snapshot. If <code>all</code> is included in the list of values for the <code>restore</code> attribute, then the manual DB cluster snapshot is public and can be copied or restored by all AWS accounts.</p> <p>To add or remove access for an AWS account to copy or restore a manual DB cluster snapshot, or to make the manual DB cluster snapshot public or private, use the <a>ModifyDBClusterSnapshotAttribute</a> API action.</p>
14126    async fn describe_db_cluster_snapshot_attributes(
14127        &self,
14128        input: DescribeDBClusterSnapshotAttributesMessage,
14129    ) -> Result<
14130        DescribeDBClusterSnapshotAttributesResult,
14131        RusotoError<DescribeDBClusterSnapshotAttributesError>,
14132    > {
14133        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14134        let params = self.new_params("DescribeDBClusterSnapshotAttributes");
14135        let mut params = params;
14136        DescribeDBClusterSnapshotAttributesMessageSerializer::serialize(&mut params, "", &input);
14137        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14138        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14139
14140        let response = self
14141            .sign_and_dispatch(
14142                request,
14143                DescribeDBClusterSnapshotAttributesError::from_response,
14144            )
14145            .await?;
14146
14147        let mut response = response;
14148        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14149            xml_util::start_element(actual_tag_name, stack)?;
14150            let result = DescribeDBClusterSnapshotAttributesResultDeserializer::deserialize(
14151                "DescribeDBClusterSnapshotAttributesResult",
14152                stack,
14153            )?;
14154            skip_tree(stack);
14155            xml_util::end_element(actual_tag_name, stack)?;
14156            Ok(result)
14157        })
14158        .await?;
14159
14160        drop(response); // parse non-payload
14161        Ok(result)
14162    }
14163
14164    /// <p>Returns information about DB cluster snapshots. This API action supports pagination.</p>
14165    async fn describe_db_cluster_snapshots(
14166        &self,
14167        input: DescribeDBClusterSnapshotsMessage,
14168    ) -> Result<DBClusterSnapshotMessage, RusotoError<DescribeDBClusterSnapshotsError>> {
14169        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14170        let params = self.new_params("DescribeDBClusterSnapshots");
14171        let mut params = params;
14172        DescribeDBClusterSnapshotsMessageSerializer::serialize(&mut params, "", &input);
14173        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14174        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14175
14176        let response = self
14177            .sign_and_dispatch(request, DescribeDBClusterSnapshotsError::from_response)
14178            .await?;
14179
14180        let mut response = response;
14181        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14182            xml_util::start_element(actual_tag_name, stack)?;
14183            let result = DBClusterSnapshotMessageDeserializer::deserialize(
14184                "DescribeDBClusterSnapshotsResult",
14185                stack,
14186            )?;
14187            skip_tree(stack);
14188            xml_util::end_element(actual_tag_name, stack)?;
14189            Ok(result)
14190        })
14191        .await?;
14192
14193        drop(response); // parse non-payload
14194        Ok(result)
14195    }
14196
14197    /// <p><p>Returns information about provisioned DB clusters, and supports pagination.</p> <note> <p>This operation can also return information for Amazon RDS clusters and Amazon DocDB clusters.</p> </note></p>
14198    async fn describe_db_clusters(
14199        &self,
14200        input: DescribeDBClustersMessage,
14201    ) -> Result<DBClusterMessage, RusotoError<DescribeDBClustersError>> {
14202        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14203        let params = self.new_params("DescribeDBClusters");
14204        let mut params = params;
14205        DescribeDBClustersMessageSerializer::serialize(&mut params, "", &input);
14206        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14207        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14208
14209        let response = self
14210            .sign_and_dispatch(request, DescribeDBClustersError::from_response)
14211            .await?;
14212
14213        let mut response = response;
14214        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14215            xml_util::start_element(actual_tag_name, stack)?;
14216            let result =
14217                DBClusterMessageDeserializer::deserialize("DescribeDBClustersResult", stack)?;
14218            skip_tree(stack);
14219            xml_util::end_element(actual_tag_name, stack)?;
14220            Ok(result)
14221        })
14222        .await?;
14223
14224        drop(response); // parse non-payload
14225        Ok(result)
14226    }
14227
14228    /// <p>Returns a list of the available DB engines.</p>
14229    async fn describe_db_engine_versions(
14230        &self,
14231        input: DescribeDBEngineVersionsMessage,
14232    ) -> Result<DBEngineVersionMessage, RusotoError<DescribeDBEngineVersionsError>> {
14233        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14234        let params = self.new_params("DescribeDBEngineVersions");
14235        let mut params = params;
14236        DescribeDBEngineVersionsMessageSerializer::serialize(&mut params, "", &input);
14237        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14238        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14239
14240        let response = self
14241            .sign_and_dispatch(request, DescribeDBEngineVersionsError::from_response)
14242            .await?;
14243
14244        let mut response = response;
14245        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14246            xml_util::start_element(actual_tag_name, stack)?;
14247            let result = DBEngineVersionMessageDeserializer::deserialize(
14248                "DescribeDBEngineVersionsResult",
14249                stack,
14250            )?;
14251            skip_tree(stack);
14252            xml_util::end_element(actual_tag_name, stack)?;
14253            Ok(result)
14254        })
14255        .await?;
14256
14257        drop(response); // parse non-payload
14258        Ok(result)
14259    }
14260
14261    /// <p><p>Returns information about provisioned instances, and supports pagination.</p> <note> <p>This operation can also return information for Amazon RDS instances and Amazon DocDB instances.</p> </note></p>
14262    async fn describe_db_instances(
14263        &self,
14264        input: DescribeDBInstancesMessage,
14265    ) -> Result<DBInstanceMessage, RusotoError<DescribeDBInstancesError>> {
14266        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14267        let params = self.new_params("DescribeDBInstances");
14268        let mut params = params;
14269        DescribeDBInstancesMessageSerializer::serialize(&mut params, "", &input);
14270        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14271        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14272
14273        let response = self
14274            .sign_and_dispatch(request, DescribeDBInstancesError::from_response)
14275            .await?;
14276
14277        let mut response = response;
14278        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14279            xml_util::start_element(actual_tag_name, stack)?;
14280            let result =
14281                DBInstanceMessageDeserializer::deserialize("DescribeDBInstancesResult", stack)?;
14282            skip_tree(stack);
14283            xml_util::end_element(actual_tag_name, stack)?;
14284            Ok(result)
14285        })
14286        .await?;
14287
14288        drop(response); // parse non-payload
14289        Ok(result)
14290    }
14291
14292    /// <p>Returns a list of <code>DBParameterGroup</code> descriptions. If a <code>DBParameterGroupName</code> is specified, the list will contain only the description of the specified DB parameter group.</p>
14293    async fn describe_db_parameter_groups(
14294        &self,
14295        input: DescribeDBParameterGroupsMessage,
14296    ) -> Result<DBParameterGroupsMessage, RusotoError<DescribeDBParameterGroupsError>> {
14297        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14298        let params = self.new_params("DescribeDBParameterGroups");
14299        let mut params = params;
14300        DescribeDBParameterGroupsMessageSerializer::serialize(&mut params, "", &input);
14301        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14302        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14303
14304        let response = self
14305            .sign_and_dispatch(request, DescribeDBParameterGroupsError::from_response)
14306            .await?;
14307
14308        let mut response = response;
14309        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14310            xml_util::start_element(actual_tag_name, stack)?;
14311            let result = DBParameterGroupsMessageDeserializer::deserialize(
14312                "DescribeDBParameterGroupsResult",
14313                stack,
14314            )?;
14315            skip_tree(stack);
14316            xml_util::end_element(actual_tag_name, stack)?;
14317            Ok(result)
14318        })
14319        .await?;
14320
14321        drop(response); // parse non-payload
14322        Ok(result)
14323    }
14324
14325    /// <p>Returns the detailed parameter list for a particular DB parameter group.</p>
14326    async fn describe_db_parameters(
14327        &self,
14328        input: DescribeDBParametersMessage,
14329    ) -> Result<DBParameterGroupDetails, RusotoError<DescribeDBParametersError>> {
14330        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14331        let params = self.new_params("DescribeDBParameters");
14332        let mut params = params;
14333        DescribeDBParametersMessageSerializer::serialize(&mut params, "", &input);
14334        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14335        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14336
14337        let response = self
14338            .sign_and_dispatch(request, DescribeDBParametersError::from_response)
14339            .await?;
14340
14341        let mut response = response;
14342        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14343            xml_util::start_element(actual_tag_name, stack)?;
14344            let result = DBParameterGroupDetailsDeserializer::deserialize(
14345                "DescribeDBParametersResult",
14346                stack,
14347            )?;
14348            skip_tree(stack);
14349            xml_util::end_element(actual_tag_name, stack)?;
14350            Ok(result)
14351        })
14352        .await?;
14353
14354        drop(response); // parse non-payload
14355        Ok(result)
14356    }
14357
14358    /// <p>Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is specified, the list will contain only the descriptions of the specified DBSubnetGroup.</p> <p>For an overview of CIDR ranges, go to the <a href="http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing">Wikipedia Tutorial</a>.</p>
14359    async fn describe_db_subnet_groups(
14360        &self,
14361        input: DescribeDBSubnetGroupsMessage,
14362    ) -> Result<DBSubnetGroupMessage, RusotoError<DescribeDBSubnetGroupsError>> {
14363        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14364        let params = self.new_params("DescribeDBSubnetGroups");
14365        let mut params = params;
14366        DescribeDBSubnetGroupsMessageSerializer::serialize(&mut params, "", &input);
14367        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14368        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14369
14370        let response = self
14371            .sign_and_dispatch(request, DescribeDBSubnetGroupsError::from_response)
14372            .await?;
14373
14374        let mut response = response;
14375        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14376            xml_util::start_element(actual_tag_name, stack)?;
14377            let result = DBSubnetGroupMessageDeserializer::deserialize(
14378                "DescribeDBSubnetGroupsResult",
14379                stack,
14380            )?;
14381            skip_tree(stack);
14382            xml_util::end_element(actual_tag_name, stack)?;
14383            Ok(result)
14384        })
14385        .await?;
14386
14387        drop(response); // parse non-payload
14388        Ok(result)
14389    }
14390
14391    /// <p>Returns the default engine and system parameter information for the cluster database engine.</p>
14392    async fn describe_engine_default_cluster_parameters(
14393        &self,
14394        input: DescribeEngineDefaultClusterParametersMessage,
14395    ) -> Result<
14396        DescribeEngineDefaultClusterParametersResult,
14397        RusotoError<DescribeEngineDefaultClusterParametersError>,
14398    > {
14399        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14400        let params = self.new_params("DescribeEngineDefaultClusterParameters");
14401        let mut params = params;
14402        DescribeEngineDefaultClusterParametersMessageSerializer::serialize(&mut params, "", &input);
14403        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14404        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14405
14406        let response = self
14407            .sign_and_dispatch(
14408                request,
14409                DescribeEngineDefaultClusterParametersError::from_response,
14410            )
14411            .await?;
14412
14413        let mut response = response;
14414        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14415            xml_util::start_element(actual_tag_name, stack)?;
14416            let result = DescribeEngineDefaultClusterParametersResultDeserializer::deserialize(
14417                "DescribeEngineDefaultClusterParametersResult",
14418                stack,
14419            )?;
14420            skip_tree(stack);
14421            xml_util::end_element(actual_tag_name, stack)?;
14422            Ok(result)
14423        })
14424        .await?;
14425
14426        drop(response); // parse non-payload
14427        Ok(result)
14428    }
14429
14430    /// <p>Returns the default engine and system parameter information for the specified database engine.</p>
14431    async fn describe_engine_default_parameters(
14432        &self,
14433        input: DescribeEngineDefaultParametersMessage,
14434    ) -> Result<
14435        DescribeEngineDefaultParametersResult,
14436        RusotoError<DescribeEngineDefaultParametersError>,
14437    > {
14438        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14439        let params = self.new_params("DescribeEngineDefaultParameters");
14440        let mut params = params;
14441        DescribeEngineDefaultParametersMessageSerializer::serialize(&mut params, "", &input);
14442        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14443        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14444
14445        let response = self
14446            .sign_and_dispatch(request, DescribeEngineDefaultParametersError::from_response)
14447            .await?;
14448
14449        let mut response = response;
14450        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14451            xml_util::start_element(actual_tag_name, stack)?;
14452            let result = DescribeEngineDefaultParametersResultDeserializer::deserialize(
14453                "DescribeEngineDefaultParametersResult",
14454                stack,
14455            )?;
14456            skip_tree(stack);
14457            xml_util::end_element(actual_tag_name, stack)?;
14458            Ok(result)
14459        })
14460        .await?;
14461
14462        drop(response); // parse non-payload
14463        Ok(result)
14464    }
14465
14466    /// <p>Displays a list of categories for all event source types, or, if specified, for a specified source type.</p>
14467    async fn describe_event_categories(
14468        &self,
14469        input: DescribeEventCategoriesMessage,
14470    ) -> Result<EventCategoriesMessage, RusotoError<DescribeEventCategoriesError>> {
14471        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14472        let params = self.new_params("DescribeEventCategories");
14473        let mut params = params;
14474        DescribeEventCategoriesMessageSerializer::serialize(&mut params, "", &input);
14475        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14476        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14477
14478        let response = self
14479            .sign_and_dispatch(request, DescribeEventCategoriesError::from_response)
14480            .await?;
14481
14482        let mut response = response;
14483        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14484            xml_util::start_element(actual_tag_name, stack)?;
14485            let result = EventCategoriesMessageDeserializer::deserialize(
14486                "DescribeEventCategoriesResult",
14487                stack,
14488            )?;
14489            skip_tree(stack);
14490            xml_util::end_element(actual_tag_name, stack)?;
14491            Ok(result)
14492        })
14493        .await?;
14494
14495        drop(response); // parse non-payload
14496        Ok(result)
14497    }
14498
14499    /// <p>Lists all the subscription descriptions for a customer account. The description for a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, CreationTime, and Status.</p> <p>If you specify a SubscriptionName, lists the description for that subscription.</p>
14500    async fn describe_event_subscriptions(
14501        &self,
14502        input: DescribeEventSubscriptionsMessage,
14503    ) -> Result<EventSubscriptionsMessage, RusotoError<DescribeEventSubscriptionsError>> {
14504        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14505        let params = self.new_params("DescribeEventSubscriptions");
14506        let mut params = params;
14507        DescribeEventSubscriptionsMessageSerializer::serialize(&mut params, "", &input);
14508        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14509        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14510
14511        let response = self
14512            .sign_and_dispatch(request, DescribeEventSubscriptionsError::from_response)
14513            .await?;
14514
14515        let mut response = response;
14516        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14517            xml_util::start_element(actual_tag_name, stack)?;
14518            let result = EventSubscriptionsMessageDeserializer::deserialize(
14519                "DescribeEventSubscriptionsResult",
14520                stack,
14521            )?;
14522            skip_tree(stack);
14523            xml_util::end_element(actual_tag_name, stack)?;
14524            Ok(result)
14525        })
14526        .await?;
14527
14528        drop(response); // parse non-payload
14529        Ok(result)
14530    }
14531
14532    /// <p>Returns events related to DB instances, DB security groups, DB snapshots, and DB parameter groups for the past 14 days. Events specific to a particular DB instance, DB security group, database snapshot, or DB parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned.</p>
14533    async fn describe_events(
14534        &self,
14535        input: DescribeEventsMessage,
14536    ) -> Result<EventsMessage, RusotoError<DescribeEventsError>> {
14537        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14538        let params = self.new_params("DescribeEvents");
14539        let mut params = params;
14540        DescribeEventsMessageSerializer::serialize(&mut params, "", &input);
14541        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14542        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14543
14544        let response = self
14545            .sign_and_dispatch(request, DescribeEventsError::from_response)
14546            .await?;
14547
14548        let mut response = response;
14549        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14550            xml_util::start_element(actual_tag_name, stack)?;
14551            let result = EventsMessageDeserializer::deserialize("DescribeEventsResult", stack)?;
14552            skip_tree(stack);
14553            xml_util::end_element(actual_tag_name, stack)?;
14554            Ok(result)
14555        })
14556        .await?;
14557
14558        drop(response); // parse non-payload
14559        Ok(result)
14560    }
14561
14562    /// <p>Returns a list of orderable DB instance options for the specified engine.</p>
14563    async fn describe_orderable_db_instance_options(
14564        &self,
14565        input: DescribeOrderableDBInstanceOptionsMessage,
14566    ) -> Result<
14567        OrderableDBInstanceOptionsMessage,
14568        RusotoError<DescribeOrderableDBInstanceOptionsError>,
14569    > {
14570        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14571        let params = self.new_params("DescribeOrderableDBInstanceOptions");
14572        let mut params = params;
14573        DescribeOrderableDBInstanceOptionsMessageSerializer::serialize(&mut params, "", &input);
14574        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14575        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14576
14577        let response = self
14578            .sign_and_dispatch(
14579                request,
14580                DescribeOrderableDBInstanceOptionsError::from_response,
14581            )
14582            .await?;
14583
14584        let mut response = response;
14585        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14586            xml_util::start_element(actual_tag_name, stack)?;
14587            let result = OrderableDBInstanceOptionsMessageDeserializer::deserialize(
14588                "DescribeOrderableDBInstanceOptionsResult",
14589                stack,
14590            )?;
14591            skip_tree(stack);
14592            xml_util::end_element(actual_tag_name, stack)?;
14593            Ok(result)
14594        })
14595        .await?;
14596
14597        drop(response); // parse non-payload
14598        Ok(result)
14599    }
14600
14601    /// <p>Returns a list of resources (for example, DB instances) that have at least one pending maintenance action.</p>
14602    async fn describe_pending_maintenance_actions(
14603        &self,
14604        input: DescribePendingMaintenanceActionsMessage,
14605    ) -> Result<PendingMaintenanceActionsMessage, RusotoError<DescribePendingMaintenanceActionsError>>
14606    {
14607        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14608        let params = self.new_params("DescribePendingMaintenanceActions");
14609        let mut params = params;
14610        DescribePendingMaintenanceActionsMessageSerializer::serialize(&mut params, "", &input);
14611        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14612        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14613
14614        let response = self
14615            .sign_and_dispatch(
14616                request,
14617                DescribePendingMaintenanceActionsError::from_response,
14618            )
14619            .await?;
14620
14621        let mut response = response;
14622        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14623            xml_util::start_element(actual_tag_name, stack)?;
14624            let result = PendingMaintenanceActionsMessageDeserializer::deserialize(
14625                "DescribePendingMaintenanceActionsResult",
14626                stack,
14627            )?;
14628            skip_tree(stack);
14629            xml_util::end_element(actual_tag_name, stack)?;
14630            Ok(result)
14631        })
14632        .await?;
14633
14634        drop(response); // parse non-payload
14635        Ok(result)
14636    }
14637
14638    /// <p>You can call <a>DescribeValidDBInstanceModifications</a> to learn what modifications you can make to your DB instance. You can use this information when you call <a>ModifyDBInstance</a>.</p>
14639    async fn describe_valid_db_instance_modifications(
14640        &self,
14641        input: DescribeValidDBInstanceModificationsMessage,
14642    ) -> Result<
14643        DescribeValidDBInstanceModificationsResult,
14644        RusotoError<DescribeValidDBInstanceModificationsError>,
14645    > {
14646        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14647        let params = self.new_params("DescribeValidDBInstanceModifications");
14648        let mut params = params;
14649        DescribeValidDBInstanceModificationsMessageSerializer::serialize(&mut params, "", &input);
14650        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14651        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14652
14653        let response = self
14654            .sign_and_dispatch(
14655                request,
14656                DescribeValidDBInstanceModificationsError::from_response,
14657            )
14658            .await?;
14659
14660        let mut response = response;
14661        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14662            xml_util::start_element(actual_tag_name, stack)?;
14663            let result = DescribeValidDBInstanceModificationsResultDeserializer::deserialize(
14664                "DescribeValidDBInstanceModificationsResult",
14665                stack,
14666            )?;
14667            skip_tree(stack);
14668            xml_util::end_element(actual_tag_name, stack)?;
14669            Ok(result)
14670        })
14671        .await?;
14672
14673        drop(response); // parse non-payload
14674        Ok(result)
14675    }
14676
14677    /// <p>Forces a failover for a DB cluster.</p> <p>A failover for a DB cluster promotes one of the Read Replicas (read-only instances) in the DB cluster to be the primary instance (the cluster writer).</p> <p>Amazon Neptune will automatically fail over to a Read Replica, if one exists, when the primary instance fails. You can force a failover when you want to simulate a failure of a primary instance for testing. Because each instance in a DB cluster has its own endpoint address, you will need to clean up and re-establish any existing connections that use those endpoint addresses when the failover is complete.</p>
14678    async fn failover_db_cluster(
14679        &self,
14680        input: FailoverDBClusterMessage,
14681    ) -> Result<FailoverDBClusterResult, RusotoError<FailoverDBClusterError>> {
14682        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14683        let params = self.new_params("FailoverDBCluster");
14684        let mut params = params;
14685        FailoverDBClusterMessageSerializer::serialize(&mut params, "", &input);
14686        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14687        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14688
14689        let response = self
14690            .sign_and_dispatch(request, FailoverDBClusterError::from_response)
14691            .await?;
14692
14693        let mut response = response;
14694        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14695            xml_util::start_element(actual_tag_name, stack)?;
14696            let result =
14697                FailoverDBClusterResultDeserializer::deserialize("FailoverDBClusterResult", stack)?;
14698            skip_tree(stack);
14699            xml_util::end_element(actual_tag_name, stack)?;
14700            Ok(result)
14701        })
14702        .await?;
14703
14704        drop(response); // parse non-payload
14705        Ok(result)
14706    }
14707
14708    /// <p>Lists all tags on an Amazon Neptune resource.</p>
14709    async fn list_tags_for_resource(
14710        &self,
14711        input: ListTagsForResourceMessage,
14712    ) -> Result<TagListMessage, RusotoError<ListTagsForResourceError>> {
14713        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14714        let params = self.new_params("ListTagsForResource");
14715        let mut params = params;
14716        ListTagsForResourceMessageSerializer::serialize(&mut params, "", &input);
14717        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14718        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14719
14720        let response = self
14721            .sign_and_dispatch(request, ListTagsForResourceError::from_response)
14722            .await?;
14723
14724        let mut response = response;
14725        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14726            xml_util::start_element(actual_tag_name, stack)?;
14727            let result =
14728                TagListMessageDeserializer::deserialize("ListTagsForResourceResult", stack)?;
14729            skip_tree(stack);
14730            xml_util::end_element(actual_tag_name, stack)?;
14731            Ok(result)
14732        })
14733        .await?;
14734
14735        drop(response); // parse non-payload
14736        Ok(result)
14737    }
14738
14739    /// <p>Modify a setting for a DB cluster. You can change one or more database configuration parameters by specifying these parameters and the new values in the request.</p>
14740    async fn modify_db_cluster(
14741        &self,
14742        input: ModifyDBClusterMessage,
14743    ) -> Result<ModifyDBClusterResult, RusotoError<ModifyDBClusterError>> {
14744        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14745        let params = self.new_params("ModifyDBCluster");
14746        let mut params = params;
14747        ModifyDBClusterMessageSerializer::serialize(&mut params, "", &input);
14748        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14749        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14750
14751        let response = self
14752            .sign_and_dispatch(request, ModifyDBClusterError::from_response)
14753            .await?;
14754
14755        let mut response = response;
14756        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14757            xml_util::start_element(actual_tag_name, stack)?;
14758            let result =
14759                ModifyDBClusterResultDeserializer::deserialize("ModifyDBClusterResult", stack)?;
14760            skip_tree(stack);
14761            xml_util::end_element(actual_tag_name, stack)?;
14762            Ok(result)
14763        })
14764        .await?;
14765
14766        drop(response); // parse non-payload
14767        Ok(result)
14768    }
14769
14770    /// <p><p> Modifies the parameters of a DB cluster parameter group. To modify more than one parameter, submit a list of the following: <code>ParameterName</code>, <code>ParameterValue</code>, and <code>ApplyMethod</code>. A maximum of 20 parameters can be modified in a single request.</p> <note> <p>Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB cluster associated with the parameter group before the change can take effect.</p> </note> <important> <p>After you create a DB cluster parameter group, you should wait at least 5 minutes before creating your first DB cluster that uses that DB cluster parameter group as the default parameter group. This allows Amazon Neptune to fully complete the create action before the parameter group is used as the default for a new DB cluster. This is especially important for parameters that are critical when creating the default database for a DB cluster, such as the character set for the default database defined by the <code>character<em>set</em>database</code> parameter. You can use the <i>Parameter Groups</i> option of the Amazon Neptune console or the <a>DescribeDBClusterParameters</a> command to verify that your DB cluster parameter group has been created or modified.</p> </important></p>
14771    async fn modify_db_cluster_parameter_group(
14772        &self,
14773        input: ModifyDBClusterParameterGroupMessage,
14774    ) -> Result<DBClusterParameterGroupNameMessage, RusotoError<ModifyDBClusterParameterGroupError>>
14775    {
14776        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14777        let params = self.new_params("ModifyDBClusterParameterGroup");
14778        let mut params = params;
14779        ModifyDBClusterParameterGroupMessageSerializer::serialize(&mut params, "", &input);
14780        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14781        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14782
14783        let response = self
14784            .sign_and_dispatch(request, ModifyDBClusterParameterGroupError::from_response)
14785            .await?;
14786
14787        let mut response = response;
14788        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14789            xml_util::start_element(actual_tag_name, stack)?;
14790            let result = DBClusterParameterGroupNameMessageDeserializer::deserialize(
14791                "ModifyDBClusterParameterGroupResult",
14792                stack,
14793            )?;
14794            skip_tree(stack);
14795            xml_util::end_element(actual_tag_name, stack)?;
14796            Ok(result)
14797        })
14798        .await?;
14799
14800        drop(response); // parse non-payload
14801        Ok(result)
14802    }
14803
14804    /// <p>Adds an attribute and values to, or removes an attribute and values from, a manual DB cluster snapshot.</p> <p>To share a manual DB cluster snapshot with other AWS accounts, specify <code>restore</code> as the <code>AttributeName</code> and use the <code>ValuesToAdd</code> parameter to add a list of IDs of the AWS accounts that are authorized to restore the manual DB cluster snapshot. Use the value <code>all</code> to make the manual DB cluster snapshot public, which means that it can be copied or restored by all AWS accounts. Do not add the <code>all</code> value for any manual DB cluster snapshots that contain private information that you don't want available to all AWS accounts. If a manual DB cluster snapshot is encrypted, it can be shared, but only by specifying a list of authorized AWS account IDs for the <code>ValuesToAdd</code> parameter. You can't use <code>all</code> as a value for that parameter in this case.</p> <p>To view which AWS accounts have access to copy or restore a manual DB cluster snapshot, or whether a manual DB cluster snapshot public or private, use the <a>DescribeDBClusterSnapshotAttributes</a> API action.</p>
14805    async fn modify_db_cluster_snapshot_attribute(
14806        &self,
14807        input: ModifyDBClusterSnapshotAttributeMessage,
14808    ) -> Result<
14809        ModifyDBClusterSnapshotAttributeResult,
14810        RusotoError<ModifyDBClusterSnapshotAttributeError>,
14811    > {
14812        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14813        let params = self.new_params("ModifyDBClusterSnapshotAttribute");
14814        let mut params = params;
14815        ModifyDBClusterSnapshotAttributeMessageSerializer::serialize(&mut params, "", &input);
14816        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14817        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14818
14819        let response = self
14820            .sign_and_dispatch(
14821                request,
14822                ModifyDBClusterSnapshotAttributeError::from_response,
14823            )
14824            .await?;
14825
14826        let mut response = response;
14827        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14828            xml_util::start_element(actual_tag_name, stack)?;
14829            let result = ModifyDBClusterSnapshotAttributeResultDeserializer::deserialize(
14830                "ModifyDBClusterSnapshotAttributeResult",
14831                stack,
14832            )?;
14833            skip_tree(stack);
14834            xml_util::end_element(actual_tag_name, stack)?;
14835            Ok(result)
14836        })
14837        .await?;
14838
14839        drop(response); // parse non-payload
14840        Ok(result)
14841    }
14842
14843    /// <p>Modifies settings for a DB instance. You can change one or more database configuration parameters by specifying these parameters and the new values in the request. To learn what modifications you can make to your DB instance, call <a>DescribeValidDBInstanceModifications</a> before you call <a>ModifyDBInstance</a>.</p>
14844    async fn modify_db_instance(
14845        &self,
14846        input: ModifyDBInstanceMessage,
14847    ) -> Result<ModifyDBInstanceResult, RusotoError<ModifyDBInstanceError>> {
14848        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14849        let params = self.new_params("ModifyDBInstance");
14850        let mut params = params;
14851        ModifyDBInstanceMessageSerializer::serialize(&mut params, "", &input);
14852        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14853        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14854
14855        let response = self
14856            .sign_and_dispatch(request, ModifyDBInstanceError::from_response)
14857            .await?;
14858
14859        let mut response = response;
14860        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14861            xml_util::start_element(actual_tag_name, stack)?;
14862            let result =
14863                ModifyDBInstanceResultDeserializer::deserialize("ModifyDBInstanceResult", stack)?;
14864            skip_tree(stack);
14865            xml_util::end_element(actual_tag_name, stack)?;
14866            Ok(result)
14867        })
14868        .await?;
14869
14870        drop(response); // parse non-payload
14871        Ok(result)
14872    }
14873
14874    /// <p><p>Modifies the parameters of a DB parameter group. To modify more than one parameter, submit a list of the following: <code>ParameterName</code>, <code>ParameterValue</code>, and <code>ApplyMethod</code>. A maximum of 20 parameters can be modified in a single request.</p> <note> <p>Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB instance associated with the parameter group before the change can take effect.</p> </note> <important> <p>After you modify a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon Neptune to fully complete the modify action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the <code>character<em>set</em>database</code> parameter. You can use the <i>Parameter Groups</i> option of the Amazon Neptune console or the <i>DescribeDBParameters</i> command to verify that your DB parameter group has been created or modified.</p> </important></p>
14875    async fn modify_db_parameter_group(
14876        &self,
14877        input: ModifyDBParameterGroupMessage,
14878    ) -> Result<DBParameterGroupNameMessage, RusotoError<ModifyDBParameterGroupError>> {
14879        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14880        let params = self.new_params("ModifyDBParameterGroup");
14881        let mut params = params;
14882        ModifyDBParameterGroupMessageSerializer::serialize(&mut params, "", &input);
14883        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14884        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14885
14886        let response = self
14887            .sign_and_dispatch(request, ModifyDBParameterGroupError::from_response)
14888            .await?;
14889
14890        let mut response = response;
14891        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14892            xml_util::start_element(actual_tag_name, stack)?;
14893            let result = DBParameterGroupNameMessageDeserializer::deserialize(
14894                "ModifyDBParameterGroupResult",
14895                stack,
14896            )?;
14897            skip_tree(stack);
14898            xml_util::end_element(actual_tag_name, stack)?;
14899            Ok(result)
14900        })
14901        .await?;
14902
14903        drop(response); // parse non-payload
14904        Ok(result)
14905    }
14906
14907    /// <p>Modifies an existing DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the AWS Region.</p>
14908    async fn modify_db_subnet_group(
14909        &self,
14910        input: ModifyDBSubnetGroupMessage,
14911    ) -> Result<ModifyDBSubnetGroupResult, RusotoError<ModifyDBSubnetGroupError>> {
14912        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14913        let params = self.new_params("ModifyDBSubnetGroup");
14914        let mut params = params;
14915        ModifyDBSubnetGroupMessageSerializer::serialize(&mut params, "", &input);
14916        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14917        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14918
14919        let response = self
14920            .sign_and_dispatch(request, ModifyDBSubnetGroupError::from_response)
14921            .await?;
14922
14923        let mut response = response;
14924        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14925            xml_util::start_element(actual_tag_name, stack)?;
14926            let result = ModifyDBSubnetGroupResultDeserializer::deserialize(
14927                "ModifyDBSubnetGroupResult",
14928                stack,
14929            )?;
14930            skip_tree(stack);
14931            xml_util::end_element(actual_tag_name, stack)?;
14932            Ok(result)
14933        })
14934        .await?;
14935
14936        drop(response); // parse non-payload
14937        Ok(result)
14938    }
14939
14940    /// <p>Modifies an existing event notification subscription. Note that you can't modify the source identifiers using this call; to change source identifiers for a subscription, use the <a>AddSourceIdentifierToSubscription</a> and <a>RemoveSourceIdentifierFromSubscription</a> calls.</p> <p>You can see a list of the event categories for a given SourceType by using the <b>DescribeEventCategories</b> action.</p>
14941    async fn modify_event_subscription(
14942        &self,
14943        input: ModifyEventSubscriptionMessage,
14944    ) -> Result<ModifyEventSubscriptionResult, RusotoError<ModifyEventSubscriptionError>> {
14945        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14946        let params = self.new_params("ModifyEventSubscription");
14947        let mut params = params;
14948        ModifyEventSubscriptionMessageSerializer::serialize(&mut params, "", &input);
14949        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14950        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14951
14952        let response = self
14953            .sign_and_dispatch(request, ModifyEventSubscriptionError::from_response)
14954            .await?;
14955
14956        let mut response = response;
14957        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14958            xml_util::start_element(actual_tag_name, stack)?;
14959            let result = ModifyEventSubscriptionResultDeserializer::deserialize(
14960                "ModifyEventSubscriptionResult",
14961                stack,
14962            )?;
14963            skip_tree(stack);
14964            xml_util::end_element(actual_tag_name, stack)?;
14965            Ok(result)
14966        })
14967        .await?;
14968
14969        drop(response); // parse non-payload
14970        Ok(result)
14971    }
14972
14973    /// <p>Not supported.</p>
14974    async fn promote_read_replica_db_cluster(
14975        &self,
14976        input: PromoteReadReplicaDBClusterMessage,
14977    ) -> Result<PromoteReadReplicaDBClusterResult, RusotoError<PromoteReadReplicaDBClusterError>>
14978    {
14979        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
14980        let params = self.new_params("PromoteReadReplicaDBCluster");
14981        let mut params = params;
14982        PromoteReadReplicaDBClusterMessageSerializer::serialize(&mut params, "", &input);
14983        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
14984        request.set_content_type("application/x-www-form-urlencoded".to_owned());
14985
14986        let response = self
14987            .sign_and_dispatch(request, PromoteReadReplicaDBClusterError::from_response)
14988            .await?;
14989
14990        let mut response = response;
14991        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
14992            xml_util::start_element(actual_tag_name, stack)?;
14993            let result = PromoteReadReplicaDBClusterResultDeserializer::deserialize(
14994                "PromoteReadReplicaDBClusterResult",
14995                stack,
14996            )?;
14997            skip_tree(stack);
14998            xml_util::end_element(actual_tag_name, stack)?;
14999            Ok(result)
15000        })
15001        .await?;
15002
15003        drop(response); // parse non-payload
15004        Ok(result)
15005    }
15006
15007    /// <p>You might need to reboot your DB instance, usually for maintenance reasons. For example, if you make certain modifications, or if you change the DB parameter group associated with the DB instance, you must reboot the instance for the changes to take effect.</p> <p>Rebooting a DB instance restarts the database engine service. Rebooting a DB instance results in a momentary outage, during which the DB instance status is set to rebooting.</p>
15008    async fn reboot_db_instance(
15009        &self,
15010        input: RebootDBInstanceMessage,
15011    ) -> Result<RebootDBInstanceResult, RusotoError<RebootDBInstanceError>> {
15012        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15013        let params = self.new_params("RebootDBInstance");
15014        let mut params = params;
15015        RebootDBInstanceMessageSerializer::serialize(&mut params, "", &input);
15016        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15017        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15018
15019        let response = self
15020            .sign_and_dispatch(request, RebootDBInstanceError::from_response)
15021            .await?;
15022
15023        let mut response = response;
15024        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
15025            xml_util::start_element(actual_tag_name, stack)?;
15026            let result =
15027                RebootDBInstanceResultDeserializer::deserialize("RebootDBInstanceResult", stack)?;
15028            skip_tree(stack);
15029            xml_util::end_element(actual_tag_name, stack)?;
15030            Ok(result)
15031        })
15032        .await?;
15033
15034        drop(response); // parse non-payload
15035        Ok(result)
15036    }
15037
15038    /// <p>Disassociates an Identity and Access Management (IAM) role from a DB cluster.</p>
15039    async fn remove_role_from_db_cluster(
15040        &self,
15041        input: RemoveRoleFromDBClusterMessage,
15042    ) -> Result<(), RusotoError<RemoveRoleFromDBClusterError>> {
15043        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15044        let params = self.new_params("RemoveRoleFromDBCluster");
15045        let mut params = params;
15046        RemoveRoleFromDBClusterMessageSerializer::serialize(&mut params, "", &input);
15047        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15048        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15049
15050        let response = self
15051            .sign_and_dispatch(request, RemoveRoleFromDBClusterError::from_response)
15052            .await?;
15053
15054        std::mem::drop(response);
15055        Ok(())
15056    }
15057
15058    /// <p>Removes a source identifier from an existing event notification subscription.</p>
15059    async fn remove_source_identifier_from_subscription(
15060        &self,
15061        input: RemoveSourceIdentifierFromSubscriptionMessage,
15062    ) -> Result<
15063        RemoveSourceIdentifierFromSubscriptionResult,
15064        RusotoError<RemoveSourceIdentifierFromSubscriptionError>,
15065    > {
15066        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15067        let params = self.new_params("RemoveSourceIdentifierFromSubscription");
15068        let mut params = params;
15069        RemoveSourceIdentifierFromSubscriptionMessageSerializer::serialize(&mut params, "", &input);
15070        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15071        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15072
15073        let response = self
15074            .sign_and_dispatch(
15075                request,
15076                RemoveSourceIdentifierFromSubscriptionError::from_response,
15077            )
15078            .await?;
15079
15080        let mut response = response;
15081        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
15082            xml_util::start_element(actual_tag_name, stack)?;
15083            let result = RemoveSourceIdentifierFromSubscriptionResultDeserializer::deserialize(
15084                "RemoveSourceIdentifierFromSubscriptionResult",
15085                stack,
15086            )?;
15087            skip_tree(stack);
15088            xml_util::end_element(actual_tag_name, stack)?;
15089            Ok(result)
15090        })
15091        .await?;
15092
15093        drop(response); // parse non-payload
15094        Ok(result)
15095    }
15096
15097    /// <p>Removes metadata tags from an Amazon Neptune resource.</p>
15098    async fn remove_tags_from_resource(
15099        &self,
15100        input: RemoveTagsFromResourceMessage,
15101    ) -> Result<(), RusotoError<RemoveTagsFromResourceError>> {
15102        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15103        let params = self.new_params("RemoveTagsFromResource");
15104        let mut params = params;
15105        RemoveTagsFromResourceMessageSerializer::serialize(&mut params, "", &input);
15106        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15107        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15108
15109        let response = self
15110            .sign_and_dispatch(request, RemoveTagsFromResourceError::from_response)
15111            .await?;
15112
15113        std::mem::drop(response);
15114        Ok(())
15115    }
15116
15117    /// <p> Modifies the parameters of a DB cluster parameter group to the default value. To reset specific parameters submit a list of the following: <code>ParameterName</code> and <code>ApplyMethod</code>. To reset the entire DB cluster parameter group, specify the <code>DBClusterParameterGroupName</code> and <code>ResetAllParameters</code> parameters.</p> <p> When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to <code>pending-reboot</code> to take effect on the next DB instance restart or <a>RebootDBInstance</a> request. You must call <a>RebootDBInstance</a> for every DB instance in your DB cluster that you want the updated static parameter to apply to.</p>
15118    async fn reset_db_cluster_parameter_group(
15119        &self,
15120        input: ResetDBClusterParameterGroupMessage,
15121    ) -> Result<DBClusterParameterGroupNameMessage, RusotoError<ResetDBClusterParameterGroupError>>
15122    {
15123        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15124        let params = self.new_params("ResetDBClusterParameterGroup");
15125        let mut params = params;
15126        ResetDBClusterParameterGroupMessageSerializer::serialize(&mut params, "", &input);
15127        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15128        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15129
15130        let response = self
15131            .sign_and_dispatch(request, ResetDBClusterParameterGroupError::from_response)
15132            .await?;
15133
15134        let mut response = response;
15135        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
15136            xml_util::start_element(actual_tag_name, stack)?;
15137            let result = DBClusterParameterGroupNameMessageDeserializer::deserialize(
15138                "ResetDBClusterParameterGroupResult",
15139                stack,
15140            )?;
15141            skip_tree(stack);
15142            xml_util::end_element(actual_tag_name, stack)?;
15143            Ok(result)
15144        })
15145        .await?;
15146
15147        drop(response); // parse non-payload
15148        Ok(result)
15149    }
15150
15151    /// <p>Modifies the parameters of a DB parameter group to the engine/system default value. To reset specific parameters, provide a list of the following: <code>ParameterName</code> and <code>ApplyMethod</code>. To reset the entire DB parameter group, specify the <code>DBParameterGroup</code> name and <code>ResetAllParameters</code> parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to <code>pending-reboot</code> to take effect on the next DB instance restart or <code>RebootDBInstance</code> request.</p>
15152    async fn reset_db_parameter_group(
15153        &self,
15154        input: ResetDBParameterGroupMessage,
15155    ) -> Result<DBParameterGroupNameMessage, RusotoError<ResetDBParameterGroupError>> {
15156        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15157        let params = self.new_params("ResetDBParameterGroup");
15158        let mut params = params;
15159        ResetDBParameterGroupMessageSerializer::serialize(&mut params, "", &input);
15160        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15161        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15162
15163        let response = self
15164            .sign_and_dispatch(request, ResetDBParameterGroupError::from_response)
15165            .await?;
15166
15167        let mut response = response;
15168        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
15169            xml_util::start_element(actual_tag_name, stack)?;
15170            let result = DBParameterGroupNameMessageDeserializer::deserialize(
15171                "ResetDBParameterGroupResult",
15172                stack,
15173            )?;
15174            skip_tree(stack);
15175            xml_util::end_element(actual_tag_name, stack)?;
15176            Ok(result)
15177        })
15178        .await?;
15179
15180        drop(response); // parse non-payload
15181        Ok(result)
15182    }
15183
15184    /// <p>Creates a new DB cluster from a DB snapshot or DB cluster snapshot.</p> <p>If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.</p> <p>If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.</p>
15185    async fn restore_db_cluster_from_snapshot(
15186        &self,
15187        input: RestoreDBClusterFromSnapshotMessage,
15188    ) -> Result<RestoreDBClusterFromSnapshotResult, RusotoError<RestoreDBClusterFromSnapshotError>>
15189    {
15190        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15191        let params = self.new_params("RestoreDBClusterFromSnapshot");
15192        let mut params = params;
15193        RestoreDBClusterFromSnapshotMessageSerializer::serialize(&mut params, "", &input);
15194        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15195        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15196
15197        let response = self
15198            .sign_and_dispatch(request, RestoreDBClusterFromSnapshotError::from_response)
15199            .await?;
15200
15201        let mut response = response;
15202        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
15203            xml_util::start_element(actual_tag_name, stack)?;
15204            let result = RestoreDBClusterFromSnapshotResultDeserializer::deserialize(
15205                "RestoreDBClusterFromSnapshotResult",
15206                stack,
15207            )?;
15208            skip_tree(stack);
15209            xml_util::end_element(actual_tag_name, stack)?;
15210            Ok(result)
15211        })
15212        .await?;
15213
15214        drop(response); // parse non-payload
15215        Ok(result)
15216    }
15217
15218    /// <p><p>Restores a DB cluster to an arbitrary point in time. Users can restore to any point in time before <code>LatestRestorableTime</code> for up to <code>BackupRetentionPeriod</code> days. The target DB cluster is created from the source DB cluster with the same configuration as the original DB cluster, except that the new DB cluster is created with the default DB security group.</p> <note> <p>This action only restores the DB cluster, not the DB instances for that DB cluster. You must invoke the <a>CreateDBInstance</a> action to create DB instances for the restored DB cluster, specifying the identifier of the restored DB cluster in <code>DBClusterIdentifier</code>. You can create DB instances only after the <code>RestoreDBClusterToPointInTime</code> action has completed and the DB cluster is available.</p> </note></p>
15219    async fn restore_db_cluster_to_point_in_time(
15220        &self,
15221        input: RestoreDBClusterToPointInTimeMessage,
15222    ) -> Result<RestoreDBClusterToPointInTimeResult, RusotoError<RestoreDBClusterToPointInTimeError>>
15223    {
15224        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15225        let params = self.new_params("RestoreDBClusterToPointInTime");
15226        let mut params = params;
15227        RestoreDBClusterToPointInTimeMessageSerializer::serialize(&mut params, "", &input);
15228        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15229        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15230
15231        let response = self
15232            .sign_and_dispatch(request, RestoreDBClusterToPointInTimeError::from_response)
15233            .await?;
15234
15235        let mut response = response;
15236        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
15237            xml_util::start_element(actual_tag_name, stack)?;
15238            let result = RestoreDBClusterToPointInTimeResultDeserializer::deserialize(
15239                "RestoreDBClusterToPointInTimeResult",
15240                stack,
15241            )?;
15242            skip_tree(stack);
15243            xml_util::end_element(actual_tag_name, stack)?;
15244            Ok(result)
15245        })
15246        .await?;
15247
15248        drop(response); // parse non-payload
15249        Ok(result)
15250    }
15251
15252    /// <p>Starts an Amazon Neptune DB cluster that was stopped using the AWS console, the AWS CLI stop-db-cluster command, or the StopDBCluster API.</p>
15253    async fn start_db_cluster(
15254        &self,
15255        input: StartDBClusterMessage,
15256    ) -> Result<StartDBClusterResult, RusotoError<StartDBClusterError>> {
15257        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15258        let params = self.new_params("StartDBCluster");
15259        let mut params = params;
15260        StartDBClusterMessageSerializer::serialize(&mut params, "", &input);
15261        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15262        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15263
15264        let response = self
15265            .sign_and_dispatch(request, StartDBClusterError::from_response)
15266            .await?;
15267
15268        let mut response = response;
15269        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
15270            xml_util::start_element(actual_tag_name, stack)?;
15271            let result =
15272                StartDBClusterResultDeserializer::deserialize("StartDBClusterResult", stack)?;
15273            skip_tree(stack);
15274            xml_util::end_element(actual_tag_name, stack)?;
15275            Ok(result)
15276        })
15277        .await?;
15278
15279        drop(response); // parse non-payload
15280        Ok(result)
15281    }
15282
15283    /// <p>Stops an Amazon Neptune DB cluster. When you stop a DB cluster, Neptune retains the DB cluster's metadata, including its endpoints and DB parameter groups.</p> <p>Neptune also retains the transaction logs so you can do a point-in-time restore if necessary.</p>
15284    async fn stop_db_cluster(
15285        &self,
15286        input: StopDBClusterMessage,
15287    ) -> Result<StopDBClusterResult, RusotoError<StopDBClusterError>> {
15288        let mut request = SignedRequest::new("POST", "rds", &self.region, "/");
15289        let params = self.new_params("StopDBCluster");
15290        let mut params = params;
15291        StopDBClusterMessageSerializer::serialize(&mut params, "", &input);
15292        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
15293        request.set_content_type("application/x-www-form-urlencoded".to_owned());
15294
15295        let response = self
15296            .sign_and_dispatch(request, StopDBClusterError::from_response)
15297            .await?;
15298
15299        let mut response = response;
15300        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
15301            xml_util::start_element(actual_tag_name, stack)?;
15302            let result =
15303                StopDBClusterResultDeserializer::deserialize("StopDBClusterResult", stack)?;
15304            skip_tree(stack);
15305            xml_util::end_element(actual_tag_name, stack)?;
15306            Ok(result)
15307        })
15308        .await?;
15309
15310        drop(response); // parse non-payload
15311        Ok(result)
15312    }
15313}