// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::update_compute_node_group::_update_compute_node_group_input::UpdateComputeNodeGroupInputBuilder;
pub use crate::operation::update_compute_node_group::_update_compute_node_group_output::UpdateComputeNodeGroupOutputBuilder;
impl crate::operation::update_compute_node_group::builders::UpdateComputeNodeGroupInputBuilder {
/// Sends a request with this input using the given client.
pub async fn send_with(
self,
client: &crate::Client,
) -> ::std::result::Result<
crate::operation::update_compute_node_group::UpdateComputeNodeGroupOutput,
::aws_smithy_runtime_api::client::result::SdkError<
crate::operation::update_compute_node_group::UpdateComputeNodeGroupError,
::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
>,
> {
let mut fluent_builder = client.update_compute_node_group();
fluent_builder.inner = self;
fluent_builder.send().await
}
}
/// Fluent builder constructing a request to `UpdateComputeNodeGroup`.
///
/// <p>Updates a compute node group. You can update many of the fields related to your compute node group including the configurations for networking, compute nodes, and settings specific to your scheduler (such as Slurm).</p>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct UpdateComputeNodeGroupFluentBuilder {
handle: ::std::sync::Arc<crate::client::Handle>,
inner: crate::operation::update_compute_node_group::builders::UpdateComputeNodeGroupInputBuilder,
config_override: ::std::option::Option<crate::config::Builder>,
}
impl
crate::client::customize::internal::CustomizableSend<
crate::operation::update_compute_node_group::UpdateComputeNodeGroupOutput,
crate::operation::update_compute_node_group::UpdateComputeNodeGroupError,
> for UpdateComputeNodeGroupFluentBuilder
{
fn send(
self,
config_override: crate::config::Builder,
) -> crate::client::customize::internal::BoxFuture<
crate::client::customize::internal::SendResult<
crate::operation::update_compute_node_group::UpdateComputeNodeGroupOutput,
crate::operation::update_compute_node_group::UpdateComputeNodeGroupError,
>,
> {
::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
}
}
impl UpdateComputeNodeGroupFluentBuilder {
/// Creates a new `UpdateComputeNodeGroupFluentBuilder`.
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 UpdateComputeNodeGroup as a reference.
pub fn as_input(&self) -> &crate::operation::update_compute_node_group::builders::UpdateComputeNodeGroupInputBuilder {
&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::update_compute_node_group::UpdateComputeNodeGroupOutput,
::aws_smithy_runtime_api::client::result::SdkError<
crate::operation::update_compute_node_group::UpdateComputeNodeGroupError,
::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::update_compute_node_group::UpdateComputeNodeGroup::operation_runtime_plugins(
self.handle.runtime_plugins.clone(),
&self.handle.conf,
self.config_override,
);
crate::operation::update_compute_node_group::UpdateComputeNodeGroup::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::update_compute_node_group::UpdateComputeNodeGroupOutput,
crate::operation::update_compute_node_group::UpdateComputeNodeGroupError,
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
}
/// <p>The name or ID of the cluster of the compute node group.</p>
pub fn cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.cluster_identifier(input.into());
self
}
/// <p>The name or ID of the cluster of the compute node group.</p>
pub fn set_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_cluster_identifier(input);
self
}
/// <p>The name or ID of the cluster of the compute node group.</p>
pub fn get_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_cluster_identifier()
}
/// <p>The name or ID of the compute node group.</p>
pub fn compute_node_group_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.compute_node_group_identifier(input.into());
self
}
/// <p>The name or ID of the compute node group.</p>
pub fn set_compute_node_group_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_compute_node_group_identifier(input);
self
}
/// <p>The name or ID of the compute node group.</p>
pub fn get_compute_node_group_identifier(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_compute_node_group_identifier()
}
/// <p>The ID of the Amazon Machine Image (AMI) that PCS uses to launch instances. If not provided, PCS uses the AMI ID specified in the custom launch template.</p>
pub fn ami_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.ami_id(input.into());
self
}
/// <p>The ID of the Amazon Machine Image (AMI) that PCS uses to launch instances. If not provided, PCS uses the AMI ID specified in the custom launch template.</p>
pub fn set_ami_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_ami_id(input);
self
}
/// <p>The ID of the Amazon Machine Image (AMI) that PCS uses to launch instances. If not provided, PCS uses the AMI ID specified in the custom launch template.</p>
pub fn get_ami_id(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_ami_id()
}
///
/// Appends an item to `subnetIds`.
///
/// To override the contents of this collection use [`set_subnet_ids`](Self::set_subnet_ids).
///
/// <p>The list of subnet IDs where the compute node group provisions instances. The subnets must be in the same VPC as the cluster.</p>
pub fn subnet_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.subnet_ids(input.into());
self
}
/// <p>The list of subnet IDs where the compute node group provisions instances. The subnets must be in the same VPC as the cluster.</p>
pub fn set_subnet_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
self.inner = self.inner.set_subnet_ids(input);
self
}
/// <p>The list of subnet IDs where the compute node group provisions instances. The subnets must be in the same VPC as the cluster.</p>
pub fn get_subnet_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
self.inner.get_subnet_ids()
}
/// <p>An Amazon EC2 launch template PCS uses to launch compute nodes.</p>
pub fn custom_launch_template(mut self, input: crate::types::CustomLaunchTemplate) -> Self {
self.inner = self.inner.custom_launch_template(input);
self
}
/// <p>An Amazon EC2 launch template PCS uses to launch compute nodes.</p>
pub fn set_custom_launch_template(mut self, input: ::std::option::Option<crate::types::CustomLaunchTemplate>) -> Self {
self.inner = self.inner.set_custom_launch_template(input);
self
}
/// <p>An Amazon EC2 launch template PCS uses to launch compute nodes.</p>
pub fn get_custom_launch_template(&self) -> &::std::option::Option<crate::types::CustomLaunchTemplate> {
self.inner.get_custom_launch_template()
}
/// <p>Specifies how EC2 instances are purchased on your behalf. PCS supports On-Demand Instances, Spot Instances, and Amazon EC2 Capacity Blocks for ML. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-purchasing-options.html">Amazon EC2 billing and purchasing options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. For more information about PCS support for Capacity Blocks, see <a href="https://docs.aws.amazon.com/pcs/latest/userguide/capacity-blocks.html">Using Amazon EC2 Capacity Blocks for ML with PCS</a> in the <i>PCS User Guide</i>. If you don't provide this option, it defaults to On-Demand.</p>
pub fn purchase_option(mut self, input: crate::types::PurchaseOption) -> Self {
self.inner = self.inner.purchase_option(input);
self
}
/// <p>Specifies how EC2 instances are purchased on your behalf. PCS supports On-Demand Instances, Spot Instances, and Amazon EC2 Capacity Blocks for ML. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-purchasing-options.html">Amazon EC2 billing and purchasing options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. For more information about PCS support for Capacity Blocks, see <a href="https://docs.aws.amazon.com/pcs/latest/userguide/capacity-blocks.html">Using Amazon EC2 Capacity Blocks for ML with PCS</a> in the <i>PCS User Guide</i>. If you don't provide this option, it defaults to On-Demand.</p>
pub fn set_purchase_option(mut self, input: ::std::option::Option<crate::types::PurchaseOption>) -> Self {
self.inner = self.inner.set_purchase_option(input);
self
}
/// <p>Specifies how EC2 instances are purchased on your behalf. PCS supports On-Demand Instances, Spot Instances, and Amazon EC2 Capacity Blocks for ML. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-purchasing-options.html">Amazon EC2 billing and purchasing options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>. For more information about PCS support for Capacity Blocks, see <a href="https://docs.aws.amazon.com/pcs/latest/userguide/capacity-blocks.html">Using Amazon EC2 Capacity Blocks for ML with PCS</a> in the <i>PCS User Guide</i>. If you don't provide this option, it defaults to On-Demand.</p>
pub fn get_purchase_option(&self) -> &::std::option::Option<crate::types::PurchaseOption> {
self.inner.get_purchase_option()
}
/// <p>Additional configuration when you specify <code>SPOT</code> as the <code>purchaseOption</code> for the <code>CreateComputeNodeGroup</code> API action.</p>
pub fn spot_options(mut self, input: crate::types::SpotOptions) -> Self {
self.inner = self.inner.spot_options(input);
self
}
/// <p>Additional configuration when you specify <code>SPOT</code> as the <code>purchaseOption</code> for the <code>CreateComputeNodeGroup</code> API action.</p>
pub fn set_spot_options(mut self, input: ::std::option::Option<crate::types::SpotOptions>) -> Self {
self.inner = self.inner.set_spot_options(input);
self
}
/// <p>Additional configuration when you specify <code>SPOT</code> as the <code>purchaseOption</code> for the <code>CreateComputeNodeGroup</code> API action.</p>
pub fn get_spot_options(&self) -> &::std::option::Option<crate::types::SpotOptions> {
self.inner.get_spot_options()
}
/// <p>Specifies the boundaries of the compute node group auto scaling.</p>
pub fn scaling_configuration(mut self, input: crate::types::ScalingConfigurationRequest) -> Self {
self.inner = self.inner.scaling_configuration(input);
self
}
/// <p>Specifies the boundaries of the compute node group auto scaling.</p>
pub fn set_scaling_configuration(mut self, input: ::std::option::Option<crate::types::ScalingConfigurationRequest>) -> Self {
self.inner = self.inner.set_scaling_configuration(input);
self
}
/// <p>Specifies the boundaries of the compute node group auto scaling.</p>
pub fn get_scaling_configuration(&self) -> &::std::option::Option<crate::types::ScalingConfigurationRequest> {
self.inner.get_scaling_configuration()
}
/// <p>The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have the <code>pcs:RegisterComputeNodeGroupInstance</code> permission and the role name must start with <code>AWSPCS</code> or must have the path <code>/aws-pcs/</code>. For more information, see <a href="https://docs.aws.amazon.com/pcs/latest/userguide/security-instance-profiles.html">IAM instance profiles for PCS</a> in the <i>PCS User Guide</i>.</p>
pub fn iam_instance_profile_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.iam_instance_profile_arn(input.into());
self
}
/// <p>The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have the <code>pcs:RegisterComputeNodeGroupInstance</code> permission and the role name must start with <code>AWSPCS</code> or must have the path <code>/aws-pcs/</code>. For more information, see <a href="https://docs.aws.amazon.com/pcs/latest/userguide/security-instance-profiles.html">IAM instance profiles for PCS</a> in the <i>PCS User Guide</i>.</p>
pub fn set_iam_instance_profile_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_iam_instance_profile_arn(input);
self
}
/// <p>The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have the <code>pcs:RegisterComputeNodeGroupInstance</code> permission and the role name must start with <code>AWSPCS</code> or must have the path <code>/aws-pcs/</code>. For more information, see <a href="https://docs.aws.amazon.com/pcs/latest/userguide/security-instance-profiles.html">IAM instance profiles for PCS</a> in the <i>PCS User Guide</i>.</p>
pub fn get_iam_instance_profile_arn(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_iam_instance_profile_arn()
}
/// <p>Additional options related to the Slurm scheduler.</p>
pub fn slurm_configuration(mut self, input: crate::types::UpdateComputeNodeGroupSlurmConfigurationRequest) -> Self {
self.inner = self.inner.slurm_configuration(input);
self
}
/// <p>Additional options related to the Slurm scheduler.</p>
pub fn set_slurm_configuration(mut self, input: ::std::option::Option<crate::types::UpdateComputeNodeGroupSlurmConfigurationRequest>) -> Self {
self.inner = self.inner.set_slurm_configuration(input);
self
}
/// <p>Additional options related to the Slurm scheduler.</p>
pub fn get_slurm_configuration(&self) -> &::std::option::Option<crate::types::UpdateComputeNodeGroupSlurmConfigurationRequest> {
self.inner.get_slurm_configuration()
}
/// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully, the subsequent retries with the same client token return the result from the original successful request and they have no additional effect. If you don't specify a client token, the CLI and SDK automatically generate 1 for you.</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>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully, the subsequent retries with the same client token return the result from the original successful request and they have no additional effect. If you don't specify a client token, the CLI and SDK automatically generate 1 for you.</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>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully, the subsequent retries with the same client token return the result from the original successful request and they have no additional effect. If you don't specify a client token, the CLI and SDK automatically generate 1 for you.</p>
pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_client_token()
}
}