// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::create_disk_snapshot::_create_disk_snapshot_input::CreateDiskSnapshotInputBuilder;
pub use crate::operation::create_disk_snapshot::_create_disk_snapshot_output::CreateDiskSnapshotOutputBuilder;
impl crate::operation::create_disk_snapshot::builders::CreateDiskSnapshotInputBuilder {
/// 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_disk_snapshot::CreateDiskSnapshotOutput,
::aws_smithy_runtime_api::client::result::SdkError<
crate::operation::create_disk_snapshot::CreateDiskSnapshotError,
::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
>,
> {
let mut fluent_builder = client.create_disk_snapshot();
fluent_builder.inner = self;
fluent_builder.send().await
}
}
/// Fluent builder constructing a request to `CreateDiskSnapshot`.
///
/// <p>Creates a snapshot of a block storage disk. You can use snapshots for backups, to make copies of disks, and to save data before shutting down a Lightsail instance.</p>
/// <p>You can take a snapshot of an attached disk that is in use; however, snapshots only capture data that has been written to your disk at the time the snapshot command is issued. This may exclude any data that has been cached by any applications or the operating system. If you can pause any file systems on the disk long enough to take a snapshot, your snapshot should be complete. Nevertheless, if you cannot pause all file writes to the disk, you should unmount the disk from within the Lightsail instance, issue the create disk snapshot command, and then remount the disk to ensure a consistent and complete snapshot. You may remount and use your disk while the snapshot status is pending.</p>
/// <p>You can also use this operation to create a snapshot of an instance's system volume. You might want to do this, for example, to recover data from the system volume of a botched instance or to create a backup of the system volume like you would for a block storage disk. To create a snapshot of a system volume, just define the <code>instance name</code> parameter when issuing the snapshot command, and a snapshot of the defined instance's system volume will be created. After the snapshot is available, you can create a block storage disk from the snapshot and attach it to a running instance to access the data on the disk.</p>
/// <p>The <code>create disk snapshot</code> operation supports tag-based access control via request tags. For more information, see the <a href="https://docs.aws.amazon.com/lightsail/latest/userguide/amazon-lightsail-controlling-access-using-tags">Amazon Lightsail Developer Guide</a>.</p>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct CreateDiskSnapshotFluentBuilder {
handle: ::std::sync::Arc<crate::client::Handle>,
inner: crate::operation::create_disk_snapshot::builders::CreateDiskSnapshotInputBuilder,
config_override: ::std::option::Option<crate::config::Builder>,
}
impl
crate::client::customize::internal::CustomizableSend<
crate::operation::create_disk_snapshot::CreateDiskSnapshotOutput,
crate::operation::create_disk_snapshot::CreateDiskSnapshotError,
> for CreateDiskSnapshotFluentBuilder
{
fn send(
self,
config_override: crate::config::Builder,
) -> crate::client::customize::internal::BoxFuture<
crate::client::customize::internal::SendResult<
crate::operation::create_disk_snapshot::CreateDiskSnapshotOutput,
crate::operation::create_disk_snapshot::CreateDiskSnapshotError,
>,
> {
::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
}
}
impl CreateDiskSnapshotFluentBuilder {
/// Creates a new `CreateDiskSnapshotFluentBuilder`.
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 CreateDiskSnapshot as a reference.
pub fn as_input(&self) -> &crate::operation::create_disk_snapshot::builders::CreateDiskSnapshotInputBuilder {
&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_disk_snapshot::CreateDiskSnapshotOutput,
::aws_smithy_runtime_api::client::result::SdkError<
crate::operation::create_disk_snapshot::CreateDiskSnapshotError,
::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_disk_snapshot::CreateDiskSnapshot::operation_runtime_plugins(
self.handle.runtime_plugins.clone(),
&self.handle.conf,
self.config_override,
);
crate::operation::create_disk_snapshot::CreateDiskSnapshot::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_disk_snapshot::CreateDiskSnapshotOutput,
crate::operation::create_disk_snapshot::CreateDiskSnapshotError,
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 unique name of the source disk (<code>Disk-Virginia-1</code>).</p><note>
/// <p>This parameter cannot be defined together with the <code>instance name</code> parameter. The <code>disk name</code> and <code>instance name</code> parameters are mutually exclusive.</p>
/// </note>
pub fn disk_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.disk_name(input.into());
self
}
/// <p>The unique name of the source disk (<code>Disk-Virginia-1</code>).</p><note>
/// <p>This parameter cannot be defined together with the <code>instance name</code> parameter. The <code>disk name</code> and <code>instance name</code> parameters are mutually exclusive.</p>
/// </note>
pub fn set_disk_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_disk_name(input);
self
}
/// <p>The unique name of the source disk (<code>Disk-Virginia-1</code>).</p><note>
/// <p>This parameter cannot be defined together with the <code>instance name</code> parameter. The <code>disk name</code> and <code>instance name</code> parameters are mutually exclusive.</p>
/// </note>
pub fn get_disk_name(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_disk_name()
}
/// <p>The name of the destination disk snapshot (<code>my-disk-snapshot</code>) based on the source disk.</p>
pub fn disk_snapshot_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.disk_snapshot_name(input.into());
self
}
/// <p>The name of the destination disk snapshot (<code>my-disk-snapshot</code>) based on the source disk.</p>
pub fn set_disk_snapshot_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_disk_snapshot_name(input);
self
}
/// <p>The name of the destination disk snapshot (<code>my-disk-snapshot</code>) based on the source disk.</p>
pub fn get_disk_snapshot_name(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_disk_snapshot_name()
}
/// <p>The unique name of the source instance (<code>Amazon_Linux-512MB-Virginia-1</code>). When this is defined, a snapshot of the instance's system volume is created.</p><note>
/// <p>This parameter cannot be defined together with the <code>disk name</code> parameter. The <code>instance name</code> and <code>disk name</code> parameters are mutually exclusive.</p>
/// </note>
pub fn instance_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.instance_name(input.into());
self
}
/// <p>The unique name of the source instance (<code>Amazon_Linux-512MB-Virginia-1</code>). When this is defined, a snapshot of the instance's system volume is created.</p><note>
/// <p>This parameter cannot be defined together with the <code>disk name</code> parameter. The <code>instance name</code> and <code>disk name</code> parameters are mutually exclusive.</p>
/// </note>
pub fn set_instance_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_instance_name(input);
self
}
/// <p>The unique name of the source instance (<code>Amazon_Linux-512MB-Virginia-1</code>). When this is defined, a snapshot of the instance's system volume is created.</p><note>
/// <p>This parameter cannot be defined together with the <code>disk name</code> parameter. The <code>instance name</code> and <code>disk name</code> parameters are mutually exclusive.</p>
/// </note>
pub fn get_instance_name(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_instance_name()
}
///
/// Appends an item to `tags`.
///
/// To override the contents of this collection use [`set_tags`](Self::set_tags).
///
/// <p>The tag keys and optional values to add to the resource during create.</p>
/// <p>Use the <code>TagResource</code> action to tag a resource after it's created.</p>
pub fn tags(mut self, input: crate::types::Tag) -> Self {
self.inner = self.inner.tags(input);
self
}
/// <p>The tag keys and optional values to add to the resource during create.</p>
/// <p>Use the <code>TagResource</code> action to tag a resource after it's created.</p>
pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
self.inner = self.inner.set_tags(input);
self
}
/// <p>The tag keys and optional values to add to the resource during create.</p>
/// <p>Use the <code>TagResource</code> action to tag a resource after it's created.</p>
pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
self.inner.get_tags()
}
}