aws-sdk-route53recoveryreadiness 0.24.0

AWS SDK for AWS Route53 Recovery Readiness
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>The resource element of a resource set.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct Resource {
    /// <p>The component identifier of the resource, generated when DNS target resource is used.</p>
    #[doc(hidden)]
    pub component_id: std::option::Option<std::string::String>,
    /// <p>The DNS target resource.</p>
    #[doc(hidden)]
    pub dns_target_resource: std::option::Option<crate::model::DnsTargetResource>,
    /// <p>A list of recovery group Amazon Resource Names (ARNs) and cell ARNs that this resource is contained within.</p>
    #[doc(hidden)]
    pub readiness_scopes: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The Amazon Resource Name (ARN) of the Amazon Web Services resource.</p>
    #[doc(hidden)]
    pub resource_arn: std::option::Option<std::string::String>,
}
impl Resource {
    /// <p>The component identifier of the resource, generated when DNS target resource is used.</p>
    pub fn component_id(&self) -> std::option::Option<&str> {
        self.component_id.as_deref()
    }
    /// <p>The DNS target resource.</p>
    pub fn dns_target_resource(&self) -> std::option::Option<&crate::model::DnsTargetResource> {
        self.dns_target_resource.as_ref()
    }
    /// <p>A list of recovery group Amazon Resource Names (ARNs) and cell ARNs that this resource is contained within.</p>
    pub fn readiness_scopes(&self) -> std::option::Option<&[std::string::String]> {
        self.readiness_scopes.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) of the Amazon Web Services resource.</p>
    pub fn resource_arn(&self) -> std::option::Option<&str> {
        self.resource_arn.as_deref()
    }
}
/// See [`Resource`](crate::model::Resource).
pub mod resource {

    /// A builder for [`Resource`](crate::model::Resource).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) component_id: std::option::Option<std::string::String>,
        pub(crate) dns_target_resource: std::option::Option<crate::model::DnsTargetResource>,
        pub(crate) readiness_scopes: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) resource_arn: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The component identifier of the resource, generated when DNS target resource is used.</p>
        pub fn component_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.component_id = Some(input.into());
            self
        }
        /// <p>The component identifier of the resource, generated when DNS target resource is used.</p>
        pub fn set_component_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.component_id = input;
            self
        }
        /// <p>The DNS target resource.</p>
        pub fn dns_target_resource(mut self, input: crate::model::DnsTargetResource) -> Self {
            self.dns_target_resource = Some(input);
            self
        }
        /// <p>The DNS target resource.</p>
        pub fn set_dns_target_resource(
            mut self,
            input: std::option::Option<crate::model::DnsTargetResource>,
        ) -> Self {
            self.dns_target_resource = input;
            self
        }
        /// Appends an item to `readiness_scopes`.
        ///
        /// To override the contents of this collection use [`set_readiness_scopes`](Self::set_readiness_scopes).
        ///
        /// <p>A list of recovery group Amazon Resource Names (ARNs) and cell ARNs that this resource is contained within.</p>
        pub fn readiness_scopes(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.readiness_scopes.unwrap_or_default();
            v.push(input.into());
            self.readiness_scopes = Some(v);
            self
        }
        /// <p>A list of recovery group Amazon Resource Names (ARNs) and cell ARNs that this resource is contained within.</p>
        pub fn set_readiness_scopes(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.readiness_scopes = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the Amazon Web Services resource.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.resource_arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the Amazon Web Services resource.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.resource_arn = input;
            self
        }
        /// Consumes the builder and constructs a [`Resource`](crate::model::Resource).
        pub fn build(self) -> crate::model::Resource {
            crate::model::Resource {
                component_id: self.component_id,
                dns_target_resource: self.dns_target_resource,
                readiness_scopes: self.readiness_scopes,
                resource_arn: self.resource_arn,
            }
        }
    }
}
impl Resource {
    /// Creates a new builder-style object to manufacture [`Resource`](crate::model::Resource).
    pub fn builder() -> crate::model::resource::Builder {
        crate::model::resource::Builder::default()
    }
}

/// <p>A component for DNS/routing control readiness checks and architecture checks.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct DnsTargetResource {
    /// <p>The domain name that acts as an ingress point to a portion of the customer application.</p>
    #[doc(hidden)]
    pub domain_name: std::option::Option<std::string::String>,
    /// <p>The hosted zone Amazon Resource Name (ARN) that contains the DNS record with the provided name of the target resource.</p>
    #[doc(hidden)]
    pub hosted_zone_arn: std::option::Option<std::string::String>,
    /// <p>The Route 53 record set ID that uniquely identifies a DNS record, given a name and a type.</p>
    #[doc(hidden)]
    pub record_set_id: std::option::Option<std::string::String>,
    /// <p>The type of DNS record of the target resource.</p>
    #[doc(hidden)]
    pub record_type: std::option::Option<std::string::String>,
    /// <p>The target resource of the DNS target resource.</p>
    #[doc(hidden)]
    pub target_resource: std::option::Option<crate::model::TargetResource>,
}
impl DnsTargetResource {
    /// <p>The domain name that acts as an ingress point to a portion of the customer application.</p>
    pub fn domain_name(&self) -> std::option::Option<&str> {
        self.domain_name.as_deref()
    }
    /// <p>The hosted zone Amazon Resource Name (ARN) that contains the DNS record with the provided name of the target resource.</p>
    pub fn hosted_zone_arn(&self) -> std::option::Option<&str> {
        self.hosted_zone_arn.as_deref()
    }
    /// <p>The Route 53 record set ID that uniquely identifies a DNS record, given a name and a type.</p>
    pub fn record_set_id(&self) -> std::option::Option<&str> {
        self.record_set_id.as_deref()
    }
    /// <p>The type of DNS record of the target resource.</p>
    pub fn record_type(&self) -> std::option::Option<&str> {
        self.record_type.as_deref()
    }
    /// <p>The target resource of the DNS target resource.</p>
    pub fn target_resource(&self) -> std::option::Option<&crate::model::TargetResource> {
        self.target_resource.as_ref()
    }
}
/// See [`DnsTargetResource`](crate::model::DnsTargetResource).
pub mod dns_target_resource {

    /// A builder for [`DnsTargetResource`](crate::model::DnsTargetResource).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) domain_name: std::option::Option<std::string::String>,
        pub(crate) hosted_zone_arn: std::option::Option<std::string::String>,
        pub(crate) record_set_id: std::option::Option<std::string::String>,
        pub(crate) record_type: std::option::Option<std::string::String>,
        pub(crate) target_resource: std::option::Option<crate::model::TargetResource>,
    }
    impl Builder {
        /// <p>The domain name that acts as an ingress point to a portion of the customer application.</p>
        pub fn domain_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.domain_name = Some(input.into());
            self
        }
        /// <p>The domain name that acts as an ingress point to a portion of the customer application.</p>
        pub fn set_domain_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.domain_name = input;
            self
        }
        /// <p>The hosted zone Amazon Resource Name (ARN) that contains the DNS record with the provided name of the target resource.</p>
        pub fn hosted_zone_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.hosted_zone_arn = Some(input.into());
            self
        }
        /// <p>The hosted zone Amazon Resource Name (ARN) that contains the DNS record with the provided name of the target resource.</p>
        pub fn set_hosted_zone_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.hosted_zone_arn = input;
            self
        }
        /// <p>The Route 53 record set ID that uniquely identifies a DNS record, given a name and a type.</p>
        pub fn record_set_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.record_set_id = Some(input.into());
            self
        }
        /// <p>The Route 53 record set ID that uniquely identifies a DNS record, given a name and a type.</p>
        pub fn set_record_set_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.record_set_id = input;
            self
        }
        /// <p>The type of DNS record of the target resource.</p>
        pub fn record_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.record_type = Some(input.into());
            self
        }
        /// <p>The type of DNS record of the target resource.</p>
        pub fn set_record_type(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.record_type = input;
            self
        }
        /// <p>The target resource of the DNS target resource.</p>
        pub fn target_resource(mut self, input: crate::model::TargetResource) -> Self {
            self.target_resource = Some(input);
            self
        }
        /// <p>The target resource of the DNS target resource.</p>
        pub fn set_target_resource(
            mut self,
            input: std::option::Option<crate::model::TargetResource>,
        ) -> Self {
            self.target_resource = input;
            self
        }
        /// Consumes the builder and constructs a [`DnsTargetResource`](crate::model::DnsTargetResource).
        pub fn build(self) -> crate::model::DnsTargetResource {
            crate::model::DnsTargetResource {
                domain_name: self.domain_name,
                hosted_zone_arn: self.hosted_zone_arn,
                record_set_id: self.record_set_id,
                record_type: self.record_type,
                target_resource: self.target_resource,
            }
        }
    }
}
impl DnsTargetResource {
    /// Creates a new builder-style object to manufacture [`DnsTargetResource`](crate::model::DnsTargetResource).
    pub fn builder() -> crate::model::dns_target_resource::Builder {
        crate::model::dns_target_resource::Builder::default()
    }
}

/// <p>The target resource that the Route 53 record points to.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct TargetResource {
    /// <p>The Network Load Balancer Resource.</p>
    #[doc(hidden)]
    pub nlb_resource: std::option::Option<crate::model::NlbResource>,
    /// <p>The Route 53 resource.</p>
    #[doc(hidden)]
    pub r53_resource: std::option::Option<crate::model::R53ResourceRecord>,
}
impl TargetResource {
    /// <p>The Network Load Balancer Resource.</p>
    pub fn nlb_resource(&self) -> std::option::Option<&crate::model::NlbResource> {
        self.nlb_resource.as_ref()
    }
    /// <p>The Route 53 resource.</p>
    pub fn r53_resource(&self) -> std::option::Option<&crate::model::R53ResourceRecord> {
        self.r53_resource.as_ref()
    }
}
/// See [`TargetResource`](crate::model::TargetResource).
pub mod target_resource {

    /// A builder for [`TargetResource`](crate::model::TargetResource).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) nlb_resource: std::option::Option<crate::model::NlbResource>,
        pub(crate) r53_resource: std::option::Option<crate::model::R53ResourceRecord>,
    }
    impl Builder {
        /// <p>The Network Load Balancer Resource.</p>
        pub fn nlb_resource(mut self, input: crate::model::NlbResource) -> Self {
            self.nlb_resource = Some(input);
            self
        }
        /// <p>The Network Load Balancer Resource.</p>
        pub fn set_nlb_resource(
            mut self,
            input: std::option::Option<crate::model::NlbResource>,
        ) -> Self {
            self.nlb_resource = input;
            self
        }
        /// <p>The Route 53 resource.</p>
        pub fn r53_resource(mut self, input: crate::model::R53ResourceRecord) -> Self {
            self.r53_resource = Some(input);
            self
        }
        /// <p>The Route 53 resource.</p>
        pub fn set_r53_resource(
            mut self,
            input: std::option::Option<crate::model::R53ResourceRecord>,
        ) -> Self {
            self.r53_resource = input;
            self
        }
        /// Consumes the builder and constructs a [`TargetResource`](crate::model::TargetResource).
        pub fn build(self) -> crate::model::TargetResource {
            crate::model::TargetResource {
                nlb_resource: self.nlb_resource,
                r53_resource: self.r53_resource,
            }
        }
    }
}
impl TargetResource {
    /// Creates a new builder-style object to manufacture [`TargetResource`](crate::model::TargetResource).
    pub fn builder() -> crate::model::target_resource::Builder {
        crate::model::target_resource::Builder::default()
    }
}

/// <p>The Route 53 resource that a DNS target resource record points to.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct R53ResourceRecord {
    /// <p>The DNS target domain name.</p>
    #[doc(hidden)]
    pub domain_name: std::option::Option<std::string::String>,
    /// <p>The Route 53 Resource Record Set ID.</p>
    #[doc(hidden)]
    pub record_set_id: std::option::Option<std::string::String>,
}
impl R53ResourceRecord {
    /// <p>The DNS target domain name.</p>
    pub fn domain_name(&self) -> std::option::Option<&str> {
        self.domain_name.as_deref()
    }
    /// <p>The Route 53 Resource Record Set ID.</p>
    pub fn record_set_id(&self) -> std::option::Option<&str> {
        self.record_set_id.as_deref()
    }
}
/// See [`R53ResourceRecord`](crate::model::R53ResourceRecord).
pub mod r53_resource_record {

    /// A builder for [`R53ResourceRecord`](crate::model::R53ResourceRecord).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) domain_name: std::option::Option<std::string::String>,
        pub(crate) record_set_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The DNS target domain name.</p>
        pub fn domain_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.domain_name = Some(input.into());
            self
        }
        /// <p>The DNS target domain name.</p>
        pub fn set_domain_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.domain_name = input;
            self
        }
        /// <p>The Route 53 Resource Record Set ID.</p>
        pub fn record_set_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.record_set_id = Some(input.into());
            self
        }
        /// <p>The Route 53 Resource Record Set ID.</p>
        pub fn set_record_set_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.record_set_id = input;
            self
        }
        /// Consumes the builder and constructs a [`R53ResourceRecord`](crate::model::R53ResourceRecord).
        pub fn build(self) -> crate::model::R53ResourceRecord {
            crate::model::R53ResourceRecord {
                domain_name: self.domain_name,
                record_set_id: self.record_set_id,
            }
        }
    }
}
impl R53ResourceRecord {
    /// Creates a new builder-style object to manufacture [`R53ResourceRecord`](crate::model::R53ResourceRecord).
    pub fn builder() -> crate::model::r53_resource_record::Builder {
        crate::model::r53_resource_record::Builder::default()
    }
}

/// <p>The Network Load Balancer resource that a DNS target resource points to.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct NlbResource {
    /// <p>The Network Load Balancer resource Amazon Resource Name (ARN).</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
}
impl NlbResource {
    /// <p>The Network Load Balancer resource Amazon Resource Name (ARN).</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
}
/// See [`NlbResource`](crate::model::NlbResource).
pub mod nlb_resource {

    /// A builder for [`NlbResource`](crate::model::NlbResource).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The Network Load Balancer resource Amazon Resource Name (ARN).</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Network Load Balancer resource Amazon Resource Name (ARN).</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// Consumes the builder and constructs a [`NlbResource`](crate::model::NlbResource).
        pub fn build(self) -> crate::model::NlbResource {
            crate::model::NlbResource { arn: self.arn }
        }
    }
}
impl NlbResource {
    /// Creates a new builder-style object to manufacture [`NlbResource`](crate::model::NlbResource).
    pub fn builder() -> crate::model::nlb_resource::Builder {
        crate::model::nlb_resource::Builder::default()
    }
}

/// <p>Readiness rule information, including the resource type, rule ID, and rule description.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListRulesOutput {
    /// <p>The resource type that the readiness rule applies to.</p>
    #[doc(hidden)]
    pub resource_type: std::option::Option<std::string::String>,
    /// <p>The description of a readiness rule.</p>
    #[doc(hidden)]
    pub rule_description: std::option::Option<std::string::String>,
    /// <p>The ID for the readiness rule.</p>
    #[doc(hidden)]
    pub rule_id: std::option::Option<std::string::String>,
}
impl ListRulesOutput {
    /// <p>The resource type that the readiness rule applies to.</p>
    pub fn resource_type(&self) -> std::option::Option<&str> {
        self.resource_type.as_deref()
    }
    /// <p>The description of a readiness rule.</p>
    pub fn rule_description(&self) -> std::option::Option<&str> {
        self.rule_description.as_deref()
    }
    /// <p>The ID for the readiness rule.</p>
    pub fn rule_id(&self) -> std::option::Option<&str> {
        self.rule_id.as_deref()
    }
}
/// See [`ListRulesOutput`](crate::model::ListRulesOutput).
pub mod list_rules_output {

    /// A builder for [`ListRulesOutput`](crate::model::ListRulesOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) resource_type: std::option::Option<std::string::String>,
        pub(crate) rule_description: std::option::Option<std::string::String>,
        pub(crate) rule_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The resource type that the readiness rule applies to.</p>
        pub fn resource_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.resource_type = Some(input.into());
            self
        }
        /// <p>The resource type that the readiness rule applies to.</p>
        pub fn set_resource_type(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.resource_type = input;
            self
        }
        /// <p>The description of a readiness rule.</p>
        pub fn rule_description(mut self, input: impl Into<std::string::String>) -> Self {
            self.rule_description = Some(input.into());
            self
        }
        /// <p>The description of a readiness rule.</p>
        pub fn set_rule_description(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.rule_description = input;
            self
        }
        /// <p>The ID for the readiness rule.</p>
        pub fn rule_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.rule_id = Some(input.into());
            self
        }
        /// <p>The ID for the readiness rule.</p>
        pub fn set_rule_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.rule_id = input;
            self
        }
        /// Consumes the builder and constructs a [`ListRulesOutput`](crate::model::ListRulesOutput).
        pub fn build(self) -> crate::model::ListRulesOutput {
            crate::model::ListRulesOutput {
                resource_type: self.resource_type,
                rule_description: self.rule_description,
                rule_id: self.rule_id,
            }
        }
    }
}
impl ListRulesOutput {
    /// Creates a new builder-style object to manufacture [`ListRulesOutput`](crate::model::ListRulesOutput).
    pub fn builder() -> crate::model::list_rules_output::Builder {
        crate::model::list_rules_output::Builder::default()
    }
}

/// <p>A collection of resources of the same type.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ResourceSetOutput {
    /// <p>The Amazon Resource Name (ARN) for the resource set.</p>
    #[doc(hidden)]
    pub resource_set_arn: std::option::Option<std::string::String>,
    /// <p>The name of the resource set.</p>
    #[doc(hidden)]
    pub resource_set_name: std::option::Option<std::string::String>,
    /// <p>The resource type of the resources in the resource set. Enter one of the following values for resource type:</p>
    /// <p>AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage, AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm, AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume, AWS::ElasticLoadBalancing::LoadBalancer, AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function, AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck, AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC, AWS::EC2::VPNConnection, AWS::EC2::VPNGateway, AWS::Route53RecoveryReadiness::DNSTargetResource</p>
    #[doc(hidden)]
    pub resource_set_type: std::option::Option<std::string::String>,
    /// <p>A list of resource objects.</p>
    #[doc(hidden)]
    pub resources: std::option::Option<std::vec::Vec<crate::model::Resource>>,
    /// <p>A collection of tags associated with a resource.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl ResourceSetOutput {
    /// <p>The Amazon Resource Name (ARN) for the resource set.</p>
    pub fn resource_set_arn(&self) -> std::option::Option<&str> {
        self.resource_set_arn.as_deref()
    }
    /// <p>The name of the resource set.</p>
    pub fn resource_set_name(&self) -> std::option::Option<&str> {
        self.resource_set_name.as_deref()
    }
    /// <p>The resource type of the resources in the resource set. Enter one of the following values for resource type:</p>
    /// <p>AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage, AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm, AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume, AWS::ElasticLoadBalancing::LoadBalancer, AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function, AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck, AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC, AWS::EC2::VPNConnection, AWS::EC2::VPNGateway, AWS::Route53RecoveryReadiness::DNSTargetResource</p>
    pub fn resource_set_type(&self) -> std::option::Option<&str> {
        self.resource_set_type.as_deref()
    }
    /// <p>A list of resource objects.</p>
    pub fn resources(&self) -> std::option::Option<&[crate::model::Resource]> {
        self.resources.as_deref()
    }
    /// <p>A collection of tags associated with a resource.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`ResourceSetOutput`](crate::model::ResourceSetOutput).
pub mod resource_set_output {

    /// A builder for [`ResourceSetOutput`](crate::model::ResourceSetOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) resource_set_arn: std::option::Option<std::string::String>,
        pub(crate) resource_set_name: std::option::Option<std::string::String>,
        pub(crate) resource_set_type: std::option::Option<std::string::String>,
        pub(crate) resources: std::option::Option<std::vec::Vec<crate::model::Resource>>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The Amazon Resource Name (ARN) for the resource set.</p>
        pub fn resource_set_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.resource_set_arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for the resource set.</p>
        pub fn set_resource_set_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.resource_set_arn = input;
            self
        }
        /// <p>The name of the resource set.</p>
        pub fn resource_set_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.resource_set_name = Some(input.into());
            self
        }
        /// <p>The name of the resource set.</p>
        pub fn set_resource_set_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.resource_set_name = input;
            self
        }
        /// <p>The resource type of the resources in the resource set. Enter one of the following values for resource type:</p>
        /// <p>AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage, AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm, AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume, AWS::ElasticLoadBalancing::LoadBalancer, AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function, AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck, AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC, AWS::EC2::VPNConnection, AWS::EC2::VPNGateway, AWS::Route53RecoveryReadiness::DNSTargetResource</p>
        pub fn resource_set_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.resource_set_type = Some(input.into());
            self
        }
        /// <p>The resource type of the resources in the resource set. Enter one of the following values for resource type:</p>
        /// <p>AWS::ApiGateway::Stage, AWS::ApiGatewayV2::Stage, AWS::AutoScaling::AutoScalingGroup, AWS::CloudWatch::Alarm, AWS::EC2::CustomerGateway, AWS::DynamoDB::Table, AWS::EC2::Volume, AWS::ElasticLoadBalancing::LoadBalancer, AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::Lambda::Function, AWS::MSK::Cluster, AWS::RDS::DBCluster, AWS::Route53::HealthCheck, AWS::SQS::Queue, AWS::SNS::Topic, AWS::SNS::Subscription, AWS::EC2::VPC, AWS::EC2::VPNConnection, AWS::EC2::VPNGateway, AWS::Route53RecoveryReadiness::DNSTargetResource</p>
        pub fn set_resource_set_type(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.resource_set_type = input;
            self
        }
        /// Appends an item to `resources`.
        ///
        /// To override the contents of this collection use [`set_resources`](Self::set_resources).
        ///
        /// <p>A list of resource objects.</p>
        pub fn resources(mut self, input: crate::model::Resource) -> Self {
            let mut v = self.resources.unwrap_or_default();
            v.push(input);
            self.resources = Some(v);
            self
        }
        /// <p>A list of resource objects.</p>
        pub fn set_resources(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Resource>>,
        ) -> Self {
            self.resources = input;
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A collection of tags associated with a resource.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>A collection of tags associated with a resource.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`ResourceSetOutput`](crate::model::ResourceSetOutput).
        pub fn build(self) -> crate::model::ResourceSetOutput {
            crate::model::ResourceSetOutput {
                resource_set_arn: self.resource_set_arn,
                resource_set_name: self.resource_set_name,
                resource_set_type: self.resource_set_type,
                resources: self.resources,
                tags: self.tags,
            }
        }
    }
}
impl ResourceSetOutput {
    /// Creates a new builder-style object to manufacture [`ResourceSetOutput`](crate::model::ResourceSetOutput).
    pub fn builder() -> crate::model::resource_set_output::Builder {
        crate::model::resource_set_output::Builder::default()
    }
}

/// <p>A representation of the application, typically containing multiple cells.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct RecoveryGroupOutput {
    /// <p>A list of a cell's Amazon Resource Names (ARNs).</p>
    #[doc(hidden)]
    pub cells: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The Amazon Resource Name (ARN) for the recovery group.</p>
    #[doc(hidden)]
    pub recovery_group_arn: std::option::Option<std::string::String>,
    /// <p>The name of the recovery group.</p>
    #[doc(hidden)]
    pub recovery_group_name: std::option::Option<std::string::String>,
    /// <p>The tags associated with the recovery group.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl RecoveryGroupOutput {
    /// <p>A list of a cell's Amazon Resource Names (ARNs).</p>
    pub fn cells(&self) -> std::option::Option<&[std::string::String]> {
        self.cells.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) for the recovery group.</p>
    pub fn recovery_group_arn(&self) -> std::option::Option<&str> {
        self.recovery_group_arn.as_deref()
    }
    /// <p>The name of the recovery group.</p>
    pub fn recovery_group_name(&self) -> std::option::Option<&str> {
        self.recovery_group_name.as_deref()
    }
    /// <p>The tags associated with the recovery group.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`RecoveryGroupOutput`](crate::model::RecoveryGroupOutput).
pub mod recovery_group_output {

    /// A builder for [`RecoveryGroupOutput`](crate::model::RecoveryGroupOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) cells: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) recovery_group_arn: std::option::Option<std::string::String>,
        pub(crate) recovery_group_name: std::option::Option<std::string::String>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// Appends an item to `cells`.
        ///
        /// To override the contents of this collection use [`set_cells`](Self::set_cells).
        ///
        /// <p>A list of a cell's Amazon Resource Names (ARNs).</p>
        pub fn cells(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.cells.unwrap_or_default();
            v.push(input.into());
            self.cells = Some(v);
            self
        }
        /// <p>A list of a cell's Amazon Resource Names (ARNs).</p>
        pub fn set_cells(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.cells = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) for the recovery group.</p>
        pub fn recovery_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.recovery_group_arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for the recovery group.</p>
        pub fn set_recovery_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.recovery_group_arn = input;
            self
        }
        /// <p>The name of the recovery group.</p>
        pub fn recovery_group_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.recovery_group_name = Some(input.into());
            self
        }
        /// <p>The name of the recovery group.</p>
        pub fn set_recovery_group_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.recovery_group_name = input;
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags associated with the recovery group.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>The tags associated with the recovery group.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`RecoveryGroupOutput`](crate::model::RecoveryGroupOutput).
        pub fn build(self) -> crate::model::RecoveryGroupOutput {
            crate::model::RecoveryGroupOutput {
                cells: self.cells,
                recovery_group_arn: self.recovery_group_arn,
                recovery_group_name: self.recovery_group_name,
                tags: self.tags,
            }
        }
    }
}
impl RecoveryGroupOutput {
    /// Creates a new builder-style object to manufacture [`RecoveryGroupOutput`](crate::model::RecoveryGroupOutput).
    pub fn builder() -> crate::model::recovery_group_output::Builder {
        crate::model::recovery_group_output::Builder::default()
    }
}

/// <p>A readiness check.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ReadinessCheckOutput {
    /// <p>The Amazon Resource Name (ARN) associated with a readiness check.</p>
    #[doc(hidden)]
    pub readiness_check_arn: std::option::Option<std::string::String>,
    /// <p>Name of a readiness check.</p>
    #[doc(hidden)]
    pub readiness_check_name: std::option::Option<std::string::String>,
    /// <p>Name of the resource set to be checked.</p>
    #[doc(hidden)]
    pub resource_set: std::option::Option<std::string::String>,
    /// <p>A collection of tags associated with a resource.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl ReadinessCheckOutput {
    /// <p>The Amazon Resource Name (ARN) associated with a readiness check.</p>
    pub fn readiness_check_arn(&self) -> std::option::Option<&str> {
        self.readiness_check_arn.as_deref()
    }
    /// <p>Name of a readiness check.</p>
    pub fn readiness_check_name(&self) -> std::option::Option<&str> {
        self.readiness_check_name.as_deref()
    }
    /// <p>Name of the resource set to be checked.</p>
    pub fn resource_set(&self) -> std::option::Option<&str> {
        self.resource_set.as_deref()
    }
    /// <p>A collection of tags associated with a resource.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`ReadinessCheckOutput`](crate::model::ReadinessCheckOutput).
pub mod readiness_check_output {

    /// A builder for [`ReadinessCheckOutput`](crate::model::ReadinessCheckOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) readiness_check_arn: std::option::Option<std::string::String>,
        pub(crate) readiness_check_name: std::option::Option<std::string::String>,
        pub(crate) resource_set: std::option::Option<std::string::String>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The Amazon Resource Name (ARN) associated with a readiness check.</p>
        pub fn readiness_check_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.readiness_check_arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) associated with a readiness check.</p>
        pub fn set_readiness_check_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.readiness_check_arn = input;
            self
        }
        /// <p>Name of a readiness check.</p>
        pub fn readiness_check_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.readiness_check_name = Some(input.into());
            self
        }
        /// <p>Name of a readiness check.</p>
        pub fn set_readiness_check_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.readiness_check_name = input;
            self
        }
        /// <p>Name of the resource set to be checked.</p>
        pub fn resource_set(mut self, input: impl Into<std::string::String>) -> Self {
            self.resource_set = Some(input.into());
            self
        }
        /// <p>Name of the resource set to be checked.</p>
        pub fn set_resource_set(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.resource_set = input;
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A collection of tags associated with a resource.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>A collection of tags associated with a resource.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`ReadinessCheckOutput`](crate::model::ReadinessCheckOutput).
        pub fn build(self) -> crate::model::ReadinessCheckOutput {
            crate::model::ReadinessCheckOutput {
                readiness_check_arn: self.readiness_check_arn,
                readiness_check_name: self.readiness_check_name,
                resource_set: self.resource_set,
                tags: self.tags,
            }
        }
    }
}
impl ReadinessCheckOutput {
    /// Creates a new builder-style object to manufacture [`ReadinessCheckOutput`](crate::model::ReadinessCheckOutput).
    pub fn builder() -> crate::model::readiness_check_output::Builder {
        crate::model::readiness_check_output::Builder::default()
    }
}

/// <p>Information about a cell.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct CellOutput {
    /// <p>The Amazon Resource Name (ARN) for the cell.</p>
    #[doc(hidden)]
    pub cell_arn: std::option::Option<std::string::String>,
    /// <p>The name of the cell.</p>
    #[doc(hidden)]
    pub cell_name: std::option::Option<std::string::String>,
    /// <p>A list of cell ARNs.</p>
    #[doc(hidden)]
    pub cells: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The readiness scope for the cell, which can be a cell Amazon Resource Name (ARN) or a recovery group ARN. This is a list but currently can have only one element.</p>
    #[doc(hidden)]
    pub parent_readiness_scopes: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>Tags on the resources.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl CellOutput {
    /// <p>The Amazon Resource Name (ARN) for the cell.</p>
    pub fn cell_arn(&self) -> std::option::Option<&str> {
        self.cell_arn.as_deref()
    }
    /// <p>The name of the cell.</p>
    pub fn cell_name(&self) -> std::option::Option<&str> {
        self.cell_name.as_deref()
    }
    /// <p>A list of cell ARNs.</p>
    pub fn cells(&self) -> std::option::Option<&[std::string::String]> {
        self.cells.as_deref()
    }
    /// <p>The readiness scope for the cell, which can be a cell Amazon Resource Name (ARN) or a recovery group ARN. This is a list but currently can have only one element.</p>
    pub fn parent_readiness_scopes(&self) -> std::option::Option<&[std::string::String]> {
        self.parent_readiness_scopes.as_deref()
    }
    /// <p>Tags on the resources.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`CellOutput`](crate::model::CellOutput).
pub mod cell_output {

    /// A builder for [`CellOutput`](crate::model::CellOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) cell_arn: std::option::Option<std::string::String>,
        pub(crate) cell_name: std::option::Option<std::string::String>,
        pub(crate) cells: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) parent_readiness_scopes: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The Amazon Resource Name (ARN) for the cell.</p>
        pub fn cell_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.cell_arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for the cell.</p>
        pub fn set_cell_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.cell_arn = input;
            self
        }
        /// <p>The name of the cell.</p>
        pub fn cell_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.cell_name = Some(input.into());
            self
        }
        /// <p>The name of the cell.</p>
        pub fn set_cell_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.cell_name = input;
            self
        }
        /// Appends an item to `cells`.
        ///
        /// To override the contents of this collection use [`set_cells`](Self::set_cells).
        ///
        /// <p>A list of cell ARNs.</p>
        pub fn cells(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.cells.unwrap_or_default();
            v.push(input.into());
            self.cells = Some(v);
            self
        }
        /// <p>A list of cell ARNs.</p>
        pub fn set_cells(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.cells = input;
            self
        }
        /// Appends an item to `parent_readiness_scopes`.
        ///
        /// To override the contents of this collection use [`set_parent_readiness_scopes`](Self::set_parent_readiness_scopes).
        ///
        /// <p>The readiness scope for the cell, which can be a cell Amazon Resource Name (ARN) or a recovery group ARN. This is a list but currently can have only one element.</p>
        pub fn parent_readiness_scopes(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.parent_readiness_scopes.unwrap_or_default();
            v.push(input.into());
            self.parent_readiness_scopes = Some(v);
            self
        }
        /// <p>The readiness scope for the cell, which can be a cell Amazon Resource Name (ARN) or a recovery group ARN. This is a list but currently can have only one element.</p>
        pub fn set_parent_readiness_scopes(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.parent_readiness_scopes = input;
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>Tags on the resources.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>Tags on the resources.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`CellOutput`](crate::model::CellOutput).
        pub fn build(self) -> crate::model::CellOutput {
            crate::model::CellOutput {
                cell_arn: self.cell_arn,
                cell_name: self.cell_name,
                cells: self.cells,
                parent_readiness_scopes: self.parent_readiness_scopes,
                tags: self.tags,
            }
        }
    }
}
impl CellOutput {
    /// Creates a new builder-style object to manufacture [`CellOutput`](crate::model::CellOutput).
    pub fn builder() -> crate::model::cell_output::Builder {
        crate::model::cell_output::Builder::default()
    }
}

/// <p>Summary of all readiness check statuses in a recovery group, paginated in GetRecoveryGroupReadinessSummary and GetCellReadinessSummary.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ReadinessCheckSummary {
    /// <p>The readiness status of this readiness check.</p>
    #[doc(hidden)]
    pub readiness: std::option::Option<crate::model::Readiness>,
    /// <p>The name of a readiness check.</p>
    #[doc(hidden)]
    pub readiness_check_name: std::option::Option<std::string::String>,
}
impl ReadinessCheckSummary {
    /// <p>The readiness status of this readiness check.</p>
    pub fn readiness(&self) -> std::option::Option<&crate::model::Readiness> {
        self.readiness.as_ref()
    }
    /// <p>The name of a readiness check.</p>
    pub fn readiness_check_name(&self) -> std::option::Option<&str> {
        self.readiness_check_name.as_deref()
    }
}
/// See [`ReadinessCheckSummary`](crate::model::ReadinessCheckSummary).
pub mod readiness_check_summary {

    /// A builder for [`ReadinessCheckSummary`](crate::model::ReadinessCheckSummary).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) readiness: std::option::Option<crate::model::Readiness>,
        pub(crate) readiness_check_name: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The readiness status of this readiness check.</p>
        pub fn readiness(mut self, input: crate::model::Readiness) -> Self {
            self.readiness = Some(input);
            self
        }
        /// <p>The readiness status of this readiness check.</p>
        pub fn set_readiness(
            mut self,
            input: std::option::Option<crate::model::Readiness>,
        ) -> Self {
            self.readiness = input;
            self
        }
        /// <p>The name of a readiness check.</p>
        pub fn readiness_check_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.readiness_check_name = Some(input.into());
            self
        }
        /// <p>The name of a readiness check.</p>
        pub fn set_readiness_check_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.readiness_check_name = input;
            self
        }
        /// Consumes the builder and constructs a [`ReadinessCheckSummary`](crate::model::ReadinessCheckSummary).
        pub fn build(self) -> crate::model::ReadinessCheckSummary {
            crate::model::ReadinessCheckSummary {
                readiness: self.readiness,
                readiness_check_name: self.readiness_check_name,
            }
        }
    }
}
impl ReadinessCheckSummary {
    /// Creates a new builder-style object to manufacture [`ReadinessCheckSummary`](crate::model::ReadinessCheckSummary).
    pub fn builder() -> crate::model::readiness_check_summary::Builder {
        crate::model::readiness_check_summary::Builder::default()
    }
}

/// When writing a match expression against `Readiness`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let readiness = unimplemented!();
/// match readiness {
///     Readiness::NotAuthorized => { /* ... */ },
///     Readiness::NotReady => { /* ... */ },
///     Readiness::Ready => { /* ... */ },
///     Readiness::UnknownValue => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `readiness` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `Readiness::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `Readiness::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `Readiness::NewFeature` is defined.
/// Specifically, when `readiness` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `Readiness::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
/// <p>The readiness status.</p>
///
/// _Note: `Readiness::Unknown` has been renamed to `::UnknownValue`._
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum Readiness {
    #[allow(missing_docs)] // documentation missing in model
    NotAuthorized,
    #[allow(missing_docs)] // documentation missing in model
    NotReady,
    #[allow(missing_docs)] // documentation missing in model
    Ready,
    /// _Note: `::Unknown` has been renamed to `::UnknownValue`._
    UnknownValue,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for Readiness {
    fn from(s: &str) -> Self {
        match s {
            "NOT_AUTHORIZED" => Readiness::NotAuthorized,
            "NOT_READY" => Readiness::NotReady,
            "READY" => Readiness::Ready,
            "UNKNOWN" => Readiness::UnknownValue,
            other => Readiness::Unknown(crate::types::UnknownVariantValue(other.to_owned())),
        }
    }
}
impl std::str::FromStr for Readiness {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(Readiness::from(s))
    }
}
impl Readiness {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            Readiness::NotAuthorized => "NOT_AUTHORIZED",
            Readiness::NotReady => "NOT_READY",
            Readiness::Ready => "READY",
            Readiness::UnknownValue => "UNKNOWN",
            Readiness::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` values of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &["NOT_AUTHORIZED", "NOT_READY", "READY", "UNKNOWN"]
    }
}
impl AsRef<str> for Readiness {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

/// <p>The result of a successful Resource request, with status for an individual resource.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ResourceResult {
    /// <p>The component id of the resource.</p>
    #[doc(hidden)]
    pub component_id: std::option::Option<std::string::String>,
    /// <p>The time (UTC) that the resource was last checked for readiness, in ISO-8601 format.</p>
    #[doc(hidden)]
    pub last_checked_timestamp: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The readiness of a resource.</p>
    #[doc(hidden)]
    pub readiness: std::option::Option<crate::model::Readiness>,
    /// <p>The Amazon Resource Name (ARN) of the resource.</p>
    #[doc(hidden)]
    pub resource_arn: std::option::Option<std::string::String>,
}
impl ResourceResult {
    /// <p>The component id of the resource.</p>
    pub fn component_id(&self) -> std::option::Option<&str> {
        self.component_id.as_deref()
    }
    /// <p>The time (UTC) that the resource was last checked for readiness, in ISO-8601 format.</p>
    pub fn last_checked_timestamp(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_checked_timestamp.as_ref()
    }
    /// <p>The readiness of a resource.</p>
    pub fn readiness(&self) -> std::option::Option<&crate::model::Readiness> {
        self.readiness.as_ref()
    }
    /// <p>The Amazon Resource Name (ARN) of the resource.</p>
    pub fn resource_arn(&self) -> std::option::Option<&str> {
        self.resource_arn.as_deref()
    }
}
/// See [`ResourceResult`](crate::model::ResourceResult).
pub mod resource_result {

    /// A builder for [`ResourceResult`](crate::model::ResourceResult).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) component_id: std::option::Option<std::string::String>,
        pub(crate) last_checked_timestamp: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) readiness: std::option::Option<crate::model::Readiness>,
        pub(crate) resource_arn: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The component id of the resource.</p>
        pub fn component_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.component_id = Some(input.into());
            self
        }
        /// <p>The component id of the resource.</p>
        pub fn set_component_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.component_id = input;
            self
        }
        /// <p>The time (UTC) that the resource was last checked for readiness, in ISO-8601 format.</p>
        pub fn last_checked_timestamp(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_checked_timestamp = Some(input);
            self
        }
        /// <p>The time (UTC) that the resource was last checked for readiness, in ISO-8601 format.</p>
        pub fn set_last_checked_timestamp(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_checked_timestamp = input;
            self
        }
        /// <p>The readiness of a resource.</p>
        pub fn readiness(mut self, input: crate::model::Readiness) -> Self {
            self.readiness = Some(input);
            self
        }
        /// <p>The readiness of a resource.</p>
        pub fn set_readiness(
            mut self,
            input: std::option::Option<crate::model::Readiness>,
        ) -> Self {
            self.readiness = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.resource_arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.resource_arn = input;
            self
        }
        /// Consumes the builder and constructs a [`ResourceResult`](crate::model::ResourceResult).
        pub fn build(self) -> crate::model::ResourceResult {
            crate::model::ResourceResult {
                component_id: self.component_id,
                last_checked_timestamp: self.last_checked_timestamp,
                readiness: self.readiness,
                resource_arn: self.resource_arn,
            }
        }
    }
}
impl ResourceResult {
    /// Creates a new builder-style object to manufacture [`ResourceResult`](crate::model::ResourceResult).
    pub fn builder() -> crate::model::resource_result::Builder {
        crate::model::resource_result::Builder::default()
    }
}

/// <p>Information relating to readiness check status.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct Message {
    /// <p>The text of a readiness check message.</p>
    #[doc(hidden)]
    pub message_text: std::option::Option<std::string::String>,
}
impl Message {
    /// <p>The text of a readiness check message.</p>
    pub fn message_text(&self) -> std::option::Option<&str> {
        self.message_text.as_deref()
    }
}
/// See [`Message`](crate::model::Message).
pub mod message {

    /// A builder for [`Message`](crate::model::Message).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) message_text: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The text of a readiness check message.</p>
        pub fn message_text(mut self, input: impl Into<std::string::String>) -> Self {
            self.message_text = Some(input.into());
            self
        }
        /// <p>The text of a readiness check message.</p>
        pub fn set_message_text(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.message_text = input;
            self
        }
        /// Consumes the builder and constructs a [`Message`](crate::model::Message).
        pub fn build(self) -> crate::model::Message {
            crate::model::Message {
                message_text: self.message_text,
            }
        }
    }
}
impl Message {
    /// Creates a new builder-style object to manufacture [`Message`](crate::model::Message).
    pub fn builder() -> crate::model::message::Builder {
        crate::model::message::Builder::default()
    }
}

/// <p>The result of a successful Rule request, with status for an individual rule.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct RuleResult {
    /// <p>The time the resource was last checked for readiness, in ISO-8601 format, UTC.</p>
    #[doc(hidden)]
    pub last_checked_timestamp: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>Details about the resource's readiness.</p>
    #[doc(hidden)]
    pub messages: std::option::Option<std::vec::Vec<crate::model::Message>>,
    /// <p>The readiness at rule level.</p>
    #[doc(hidden)]
    pub readiness: std::option::Option<crate::model::Readiness>,
    /// <p>The identifier of the rule.</p>
    #[doc(hidden)]
    pub rule_id: std::option::Option<std::string::String>,
}
impl RuleResult {
    /// <p>The time the resource was last checked for readiness, in ISO-8601 format, UTC.</p>
    pub fn last_checked_timestamp(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_checked_timestamp.as_ref()
    }
    /// <p>Details about the resource's readiness.</p>
    pub fn messages(&self) -> std::option::Option<&[crate::model::Message]> {
        self.messages.as_deref()
    }
    /// <p>The readiness at rule level.</p>
    pub fn readiness(&self) -> std::option::Option<&crate::model::Readiness> {
        self.readiness.as_ref()
    }
    /// <p>The identifier of the rule.</p>
    pub fn rule_id(&self) -> std::option::Option<&str> {
        self.rule_id.as_deref()
    }
}
/// See [`RuleResult`](crate::model::RuleResult).
pub mod rule_result {

    /// A builder for [`RuleResult`](crate::model::RuleResult).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) last_checked_timestamp: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) messages: std::option::Option<std::vec::Vec<crate::model::Message>>,
        pub(crate) readiness: std::option::Option<crate::model::Readiness>,
        pub(crate) rule_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The time the resource was last checked for readiness, in ISO-8601 format, UTC.</p>
        pub fn last_checked_timestamp(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_checked_timestamp = Some(input);
            self
        }
        /// <p>The time the resource was last checked for readiness, in ISO-8601 format, UTC.</p>
        pub fn set_last_checked_timestamp(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_checked_timestamp = input;
            self
        }
        /// Appends an item to `messages`.
        ///
        /// To override the contents of this collection use [`set_messages`](Self::set_messages).
        ///
        /// <p>Details about the resource's readiness.</p>
        pub fn messages(mut self, input: crate::model::Message) -> Self {
            let mut v = self.messages.unwrap_or_default();
            v.push(input);
            self.messages = Some(v);
            self
        }
        /// <p>Details about the resource's readiness.</p>
        pub fn set_messages(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Message>>,
        ) -> Self {
            self.messages = input;
            self
        }
        /// <p>The readiness at rule level.</p>
        pub fn readiness(mut self, input: crate::model::Readiness) -> Self {
            self.readiness = Some(input);
            self
        }
        /// <p>The readiness at rule level.</p>
        pub fn set_readiness(
            mut self,
            input: std::option::Option<crate::model::Readiness>,
        ) -> Self {
            self.readiness = input;
            self
        }
        /// <p>The identifier of the rule.</p>
        pub fn rule_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.rule_id = Some(input.into());
            self
        }
        /// <p>The identifier of the rule.</p>
        pub fn set_rule_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.rule_id = input;
            self
        }
        /// Consumes the builder and constructs a [`RuleResult`](crate::model::RuleResult).
        pub fn build(self) -> crate::model::RuleResult {
            crate::model::RuleResult {
                last_checked_timestamp: self.last_checked_timestamp,
                messages: self.messages,
                readiness: self.readiness,
                rule_id: self.rule_id,
            }
        }
    }
}
impl RuleResult {
    /// Creates a new builder-style object to manufacture [`RuleResult`](crate::model::RuleResult).
    pub fn builder() -> crate::model::rule_result::Builder {
        crate::model::rule_result::Builder::default()
    }
}

/// <p>Recommendations that are provided to make an application more recovery resilient.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct Recommendation {
    /// <p>Text of the recommendations that are provided to make an application more recovery resilient.</p>
    #[doc(hidden)]
    pub recommendation_text: std::option::Option<std::string::String>,
}
impl Recommendation {
    /// <p>Text of the recommendations that are provided to make an application more recovery resilient.</p>
    pub fn recommendation_text(&self) -> std::option::Option<&str> {
        self.recommendation_text.as_deref()
    }
}
/// See [`Recommendation`](crate::model::Recommendation).
pub mod recommendation {

    /// A builder for [`Recommendation`](crate::model::Recommendation).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) recommendation_text: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>Text of the recommendations that are provided to make an application more recovery resilient.</p>
        pub fn recommendation_text(mut self, input: impl Into<std::string::String>) -> Self {
            self.recommendation_text = Some(input.into());
            self
        }
        /// <p>Text of the recommendations that are provided to make an application more recovery resilient.</p>
        pub fn set_recommendation_text(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.recommendation_text = input;
            self
        }
        /// Consumes the builder and constructs a [`Recommendation`](crate::model::Recommendation).
        pub fn build(self) -> crate::model::Recommendation {
            crate::model::Recommendation {
                recommendation_text: self.recommendation_text,
            }
        }
    }
}
impl Recommendation {
    /// Creates a new builder-style object to manufacture [`Recommendation`](crate::model::Recommendation).
    pub fn builder() -> crate::model::recommendation::Builder {
        crate::model::recommendation::Builder::default()
    }
}