aws-sdk-ec2 1.244.0

AWS SDK for Amazon Elastic Compute Cloud
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::create_application_status_check::_create_application_status_check_input::CreateApplicationStatusCheckInputBuilder;

pub use crate::operation::create_application_status_check::_create_application_status_check_output::CreateApplicationStatusCheckOutputBuilder;

impl crate::operation::create_application_status_check::builders::CreateApplicationStatusCheckInputBuilder {
    /// Sends a request with this input using the given client.
    pub async fn send_with(
        self,
        client: &crate::Client,
    ) -> ::std::result::Result<
        crate::operation::create_application_status_check::CreateApplicationStatusCheckOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::create_application_status_check::CreateApplicationStatusCheckError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let mut fluent_builder = client.create_application_status_check();
        fluent_builder.inner = self;
        fluent_builder.send().await
    }
}
/// Fluent builder constructing a request to `CreateApplicationStatusCheck`.
///
/// <p>Creates an application status check for monitoring the health of applications running on your instances. You can configure the protocol, port, path, and thresholds for the health check. The following rules apply:</p>
/// <ul>
/// <li>
/// <p>You can create a maximum of 50 application status checks per account.</p></li>
/// <li>
/// <p>Health checks do not start until you associate the check with instances or tags using <code>AssociateApplicationStatusCheck</code>.</p></li>
/// <li>
/// <p>The <code>Timeout</code> value must be less than the <code>Interval</code> value.</p></li>
/// <li>
/// <p>The <code>Path</code> must start with a forward slash (<code>/</code>). Default: <code>/</code>.</p></li>
/// <li>
/// <p>If you do not specify <code>Aggregation</code>, it defaults to <code>included</code>, which means the check contributes to the instance-level application status.</p></li>
/// <li>
/// <p>Default values: <code>Interval</code> is 60 seconds, <code>Timeout</code> is 6 seconds, <code>FailureThreshold</code> is 2, <code>SuccessThreshold</code> is 5, <code>StatusCodeMatcher</code> is <code>200</code>, <code>InitializationGracePeriodSeconds</code> is 300 seconds.</p></li>
/// <li>
/// <p>You can tag the application status check during creation. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html">Tag your Amazon EC2 resources</a>.</p></li>
/// </ul>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct CreateApplicationStatusCheckFluentBuilder {
    handle: ::std::sync::Arc<crate::client::Handle>,
    inner: crate::operation::create_application_status_check::builders::CreateApplicationStatusCheckInputBuilder,
    config_override: ::std::option::Option<crate::config::Builder>,
}
impl
    crate::client::customize::internal::CustomizableSend<
        crate::operation::create_application_status_check::CreateApplicationStatusCheckOutput,
        crate::operation::create_application_status_check::CreateApplicationStatusCheckError,
    > for CreateApplicationStatusCheckFluentBuilder
{
    fn send(
        self,
        config_override: crate::config::Builder,
    ) -> crate::client::customize::internal::BoxFuture<
        crate::client::customize::internal::SendResult<
            crate::operation::create_application_status_check::CreateApplicationStatusCheckOutput,
            crate::operation::create_application_status_check::CreateApplicationStatusCheckError,
        >,
    > {
        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
    }
}
impl CreateApplicationStatusCheckFluentBuilder {
    /// Creates a new `CreateApplicationStatusCheckFluentBuilder`.
    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
        Self {
            handle,
            inner: ::std::default::Default::default(),
            config_override: ::std::option::Option::None,
        }
    }
    /// Access the CreateApplicationStatusCheck as a reference.
    pub fn as_input(&self) -> &crate::operation::create_application_status_check::builders::CreateApplicationStatusCheckInputBuilder {
        &self.inner
    }
    /// Sends the request and returns the response.
    ///
    /// If an error occurs, an `SdkError` will be returned with additional details that
    /// can be matched against.
    ///
    /// By default, any retryable failures will be retried twice. Retry behavior
    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
    /// set when configuring the client.
    pub async fn send(
        self,
    ) -> ::std::result::Result<
        crate::operation::create_application_status_check::CreateApplicationStatusCheckOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::create_application_status_check::CreateApplicationStatusCheckError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let input = self
            .inner
            .build()
            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
        let runtime_plugins = crate::operation::create_application_status_check::CreateApplicationStatusCheck::operation_runtime_plugins(
            self.handle.runtime_plugins.clone(),
            &self.handle.conf,
            self.config_override,
        );
        crate::operation::create_application_status_check::CreateApplicationStatusCheck::orchestrate(&runtime_plugins, input).await
    }

    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
    pub fn customize(
        self,
    ) -> crate::client::customize::CustomizableOperation<
        crate::operation::create_application_status_check::CreateApplicationStatusCheckOutput,
        crate::operation::create_application_status_check::CreateApplicationStatusCheckError,
        Self,
    > {
        crate::client::customize::CustomizableOperation::new(self)
    }
    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
        self.set_config_override(::std::option::Option::Some(config_override.into()));
        self
    }

    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
        self.config_override = config_override;
        self
    }
    ///
    /// Appends an item to `HealthCheckPaths`.
    ///
    /// To override the contents of this collection use [`set_health_check_paths`](Self::set_health_check_paths).
    ///
    /// <p>The health check paths to use for the application status check. Health check paths define the network path from a source subnet to one or more destination subnets for cross-Availability Zone or Availability Zone to Local Zone health checking. If omitted, health checks are performed in the same subnet as the instance.</p>
    pub fn health_check_paths(mut self, input: crate::types::HealthCheckPathRequestObject) -> Self {
        self.inner = self.inner.health_check_paths(input);
        self
    }
    /// <p>The health check paths to use for the application status check. Health check paths define the network path from a source subnet to one or more destination subnets for cross-Availability Zone or Availability Zone to Local Zone health checking. If omitted, health checks are performed in the same subnet as the instance.</p>
    pub fn set_health_check_paths(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::HealthCheckPathRequestObject>>) -> Self {
        self.inner = self.inner.set_health_check_paths(input);
        self
    }
    /// <p>The health check paths to use for the application status check. Health check paths define the network path from a source subnet to one or more destination subnets for cross-Availability Zone or Availability Zone to Local Zone health checking. If omitted, health checks are performed in the same subnet as the instance.</p>
    pub fn get_health_check_paths(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::HealthCheckPathRequestObject>> {
        self.inner.get_health_check_paths()
    }
    /// <p>The aggregation setting for the application status check. When set to <code>included</code>, the result of this check contributes to the instance-level application status reported by <code>DescribeApplicationStatus</code>. When set to <code>excluded</code>, the check runs independently and does not affect the instance-level status. Valid values: <code>included</code> | <code>excluded</code>.</p>
    pub fn aggregation(mut self, input: crate::types::AggregationStatusEnum) -> Self {
        self.inner = self.inner.aggregation(input);
        self
    }
    /// <p>The aggregation setting for the application status check. When set to <code>included</code>, the result of this check contributes to the instance-level application status reported by <code>DescribeApplicationStatus</code>. When set to <code>excluded</code>, the check runs independently and does not affect the instance-level status. Valid values: <code>included</code> | <code>excluded</code>.</p>
    pub fn set_aggregation(mut self, input: ::std::option::Option<crate::types::AggregationStatusEnum>) -> Self {
        self.inner = self.inner.set_aggregation(input);
        self
    }
    /// <p>The aggregation setting for the application status check. When set to <code>included</code>, the result of this check contributes to the instance-level application status reported by <code>DescribeApplicationStatus</code>. When set to <code>excluded</code>, the check runs independently and does not affect the instance-level status. Valid values: <code>included</code> | <code>excluded</code>.</p>
    pub fn get_aggregation(&self) -> &::std::option::Option<crate::types::AggregationStatusEnum> {
        self.inner.get_aggregation()
    }
    /// <p>The protocol to use for the health check. Valid values: <code>http</code> | <code>https</code>.</p>
    pub fn protocol(mut self, input: crate::types::NetworkProtocolEnum) -> Self {
        self.inner = self.inner.protocol(input);
        self
    }
    /// <p>The protocol to use for the health check. Valid values: <code>http</code> | <code>https</code>.</p>
    pub fn set_protocol(mut self, input: ::std::option::Option<crate::types::NetworkProtocolEnum>) -> Self {
        self.inner = self.inner.set_protocol(input);
        self
    }
    /// <p>The protocol to use for the health check. Valid values: <code>http</code> | <code>https</code>.</p>
    pub fn get_protocol(&self) -> &::std::option::Option<crate::types::NetworkProtocolEnum> {
        self.inner.get_protocol()
    }
    /// <p>The port to use for the health check. Valid values: 1 to 65535.</p>
    pub fn port(mut self, input: i32) -> Self {
        self.inner = self.inner.port(input);
        self
    }
    /// <p>The port to use for the health check. Valid values: 1 to 65535.</p>
    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
        self.inner = self.inner.set_port(input);
        self
    }
    /// <p>The port to use for the health check. Valid values: 1 to 65535.</p>
    pub fn get_port(&self) -> &::std::option::Option<i32> {
        self.inner.get_port()
    }
    /// <p>The URL path to use for the health check HTTP request (for example, <code>/health</code> or <code>/status</code>).</p>
    pub fn path(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.path(input.into());
        self
    }
    /// <p>The URL path to use for the health check HTTP request (for example, <code>/health</code> or <code>/status</code>).</p>
    pub fn set_path(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_path(input);
        self
    }
    /// <p>The URL path to use for the health check HTTP request (for example, <code>/health</code> or <code>/status</code>).</p>
    pub fn get_path(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_path()
    }
    /// <p>The index of the network device to use for the health check. The value must be greater than or equal to 0.</p>
    pub fn device_index(mut self, input: i32) -> Self {
        self.inner = self.inner.device_index(input);
        self
    }
    /// <p>The index of the network device to use for the health check. The value must be greater than or equal to 0.</p>
    pub fn set_device_index(mut self, input: ::std::option::Option<i32>) -> Self {
        self.inner = self.inner.set_device_index(input);
        self
    }
    /// <p>The index of the network device to use for the health check. The value must be greater than or equal to 0.</p>
    pub fn get_device_index(&self) -> &::std::option::Option<i32> {
        self.inner.get_device_index()
    }
    /// <p>The IP version to use for the health check. Valid values: <code>ipv4</code> and <code>ipv6</code>.</p>
    pub fn ip_version(mut self, input: crate::types::IpVersionEnum) -> Self {
        self.inner = self.inner.ip_version(input);
        self
    }
    /// <p>The IP version to use for the health check. Valid values: <code>ipv4</code> and <code>ipv6</code>.</p>
    pub fn set_ip_version(mut self, input: ::std::option::Option<crate::types::IpVersionEnum>) -> Self {
        self.inner = self.inner.set_ip_version(input);
        self
    }
    /// <p>The IP version to use for the health check. Valid values: <code>ipv4</code> and <code>ipv6</code>.</p>
    pub fn get_ip_version(&self) -> &::std::option::Option<crate::types::IpVersionEnum> {
        self.inner.get_ip_version()
    }
    /// <p>The IP scope to use for the health check. Valid value: <code>private</code>.</p>
    pub fn ip_scope(mut self, input: crate::types::IpScopeEnum) -> Self {
        self.inner = self.inner.ip_scope(input);
        self
    }
    /// <p>The IP scope to use for the health check. Valid value: <code>private</code>.</p>
    pub fn set_ip_scope(mut self, input: ::std::option::Option<crate::types::IpScopeEnum>) -> Self {
        self.inner = self.inner.set_ip_scope(input);
        self
    }
    /// <p>The IP scope to use for the health check. Valid value: <code>private</code>.</p>
    pub fn get_ip_scope(&self) -> &::std::option::Option<crate::types::IpScopeEnum> {
        self.inner.get_ip_scope()
    }
    /// <p>The interval, in seconds, between health checks. Valid value: 60.</p>
    pub fn interval(mut self, input: i32) -> Self {
        self.inner = self.inner.interval(input);
        self
    }
    /// <p>The interval, in seconds, between health checks. Valid value: 60.</p>
    pub fn set_interval(mut self, input: ::std::option::Option<i32>) -> Self {
        self.inner = self.inner.set_interval(input);
        self
    }
    /// <p>The interval, in seconds, between health checks. Valid value: 60.</p>
    pub fn get_interval(&self) -> &::std::option::Option<i32> {
        self.inner.get_interval()
    }
    /// <p>The amount of time, in seconds, to wait for a health check response before considering it failed. Valid values: 1 to 30. The value must be less than <code>Interval</code>.</p>
    pub fn timeout(mut self, input: i32) -> Self {
        self.inner = self.inner.timeout(input);
        self
    }
    /// <p>The amount of time, in seconds, to wait for a health check response before considering it failed. Valid values: 1 to 30. The value must be less than <code>Interval</code>.</p>
    pub fn set_timeout(mut self, input: ::std::option::Option<i32>) -> Self {
        self.inner = self.inner.set_timeout(input);
        self
    }
    /// <p>The amount of time, in seconds, to wait for a health check response before considering it failed. Valid values: 1 to 30. The value must be less than <code>Interval</code>.</p>
    pub fn get_timeout(&self) -> &::std::option::Option<i32> {
        self.inner.get_timeout()
    }
    /// <p>The number of consecutive failed health checks before the application status is considered impaired. The value must be greater than 0.</p>
    pub fn failure_threshold(mut self, input: i32) -> Self {
        self.inner = self.inner.failure_threshold(input);
        self
    }
    /// <p>The number of consecutive failed health checks before the application status is considered impaired. The value must be greater than 0.</p>
    pub fn set_failure_threshold(mut self, input: ::std::option::Option<i32>) -> Self {
        self.inner = self.inner.set_failure_threshold(input);
        self
    }
    /// <p>The number of consecutive failed health checks before the application status is considered impaired. The value must be greater than 0.</p>
    pub fn get_failure_threshold(&self) -> &::std::option::Option<i32> {
        self.inner.get_failure_threshold()
    }
    /// <p>The number of consecutive successful health checks before the application status is considered healthy. The value must be greater than 0.</p>
    pub fn success_threshold(mut self, input: i32) -> Self {
        self.inner = self.inner.success_threshold(input);
        self
    }
    /// <p>The number of consecutive successful health checks before the application status is considered healthy. The value must be greater than 0.</p>
    pub fn set_success_threshold(mut self, input: ::std::option::Option<i32>) -> Self {
        self.inner = self.inner.set_success_threshold(input);
        self
    }
    /// <p>The number of consecutive successful health checks before the application status is considered healthy. The value must be greater than 0.</p>
    pub fn get_success_threshold(&self) -> &::std::option::Option<i32> {
        self.inner.get_success_threshold()
    }
    /// <p>The HTTP status codes that indicate a successful health check response. Specify a comma-separated list of individual status codes or ranges, for example, <code>200,202,300-399</code>. For a range, the first value must be less than the second value. Maximum length: 64 characters. Default: <code>200</code>.</p>
    pub fn status_code_matcher(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.status_code_matcher(input.into());
        self
    }
    /// <p>The HTTP status codes that indicate a successful health check response. Specify a comma-separated list of individual status codes or ranges, for example, <code>200,202,300-399</code>. For a range, the first value must be less than the second value. Maximum length: 64 characters. Default: <code>200</code>.</p>
    pub fn set_status_code_matcher(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_status_code_matcher(input);
        self
    }
    /// <p>The HTTP status codes that indicate a successful health check response. Specify a comma-separated list of individual status codes or ranges, for example, <code>200,202,300-399</code>. For a range, the first value must be less than the second value. Maximum length: 64 characters. Default: <code>200</code>.</p>
    pub fn get_status_code_matcher(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_status_code_matcher()
    }
    /// <p>The number of seconds to wait before starting health checks after an instance is launched. Valid values: 1 to 600.</p>
    pub fn initialization_grace_period_seconds(mut self, input: i32) -> Self {
        self.inner = self.inner.initialization_grace_period_seconds(input);
        self
    }
    /// <p>The number of seconds to wait before starting health checks after an instance is launched. Valid values: 1 to 600.</p>
    pub fn set_initialization_grace_period_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
        self.inner = self.inner.set_initialization_grace_period_seconds(input);
        self
    }
    /// <p>The number of seconds to wait before starting health checks after an instance is launched. Valid values: 1 to 600.</p>
    pub fn get_initialization_grace_period_seconds(&self) -> &::std::option::Option<i32> {
        self.inner.get_initialization_grace_period_seconds()
    }
    ///
    /// Appends an item to `TagSpecifications`.
    ///
    /// To override the contents of this collection use [`set_tag_specifications`](Self::set_tag_specifications).
    ///
    /// <p>The tags to apply to the application status check.</p>
    pub fn tag_specifications(mut self, input: crate::types::TagSpecification) -> Self {
        self.inner = self.inner.tag_specifications(input);
        self
    }
    /// <p>The tags to apply to the application status check.</p>
    pub fn set_tag_specifications(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>>) -> Self {
        self.inner = self.inner.set_tag_specifications(input);
        self
    }
    /// <p>The tags to apply to the application status check.</p>
    pub fn get_tag_specifications(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>> {
        self.inner.get_tag_specifications()
    }
    /// <p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency</a>.</p>
    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.client_token(input.into());
        self
    }
    /// <p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency</a>.</p>
    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_client_token(input);
        self
    }
    /// <p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency</a>.</p>
    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_client_token()
    }
    /// <p>Checks whether you have the required permissions for the operation, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
    pub fn dry_run(mut self, input: bool) -> Self {
        self.inner = self.inner.dry_run(input);
        self
    }
    /// <p>Checks whether you have the required permissions for the operation, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
    pub fn set_dry_run(mut self, input: ::std::option::Option<bool>) -> Self {
        self.inner = self.inner.set_dry_run(input);
        self
    }
    /// <p>Checks whether you have the required permissions for the operation, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
    pub fn get_dry_run(&self) -> &::std::option::Option<bool> {
        self.inner.get_dry_run()
    }
}