1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>A data volume to mount from another container.</p>
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct AwsEcsTaskDefinitionVolumesDetails {
    /// <p>Information about a Docker volume.</p>
    #[doc(hidden)]
    pub docker_volume_configuration: std::option::Option<
        crate::types::AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails,
    >,
    /// <p>Information about the Amazon Elastic File System file system that is used for task storage.</p>
    #[doc(hidden)]
    pub efs_volume_configuration:
        std::option::Option<crate::types::AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails>,
    /// <p>Information about a bind mount host volume.</p>
    #[doc(hidden)]
    pub host: std::option::Option<crate::types::AwsEcsTaskDefinitionVolumesHostDetails>,
    /// <p>The name of the data volume.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
}
impl AwsEcsTaskDefinitionVolumesDetails {
    /// <p>Information about a Docker volume.</p>
    pub fn docker_volume_configuration(
        &self,
    ) -> std::option::Option<
        &crate::types::AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails,
    > {
        self.docker_volume_configuration.as_ref()
    }
    /// <p>Information about the Amazon Elastic File System file system that is used for task storage.</p>
    pub fn efs_volume_configuration(
        &self,
    ) -> std::option::Option<&crate::types::AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails>
    {
        self.efs_volume_configuration.as_ref()
    }
    /// <p>Information about a bind mount host volume.</p>
    pub fn host(
        &self,
    ) -> std::option::Option<&crate::types::AwsEcsTaskDefinitionVolumesHostDetails> {
        self.host.as_ref()
    }
    /// <p>The name of the data volume.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
}
impl AwsEcsTaskDefinitionVolumesDetails {
    /// Creates a new builder-style object to manufacture [`AwsEcsTaskDefinitionVolumesDetails`](crate::types::AwsEcsTaskDefinitionVolumesDetails).
    pub fn builder() -> crate::types::builders::AwsEcsTaskDefinitionVolumesDetailsBuilder {
        crate::types::builders::AwsEcsTaskDefinitionVolumesDetailsBuilder::default()
    }
}

/// A builder for [`AwsEcsTaskDefinitionVolumesDetails`](crate::types::AwsEcsTaskDefinitionVolumesDetails).
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
pub struct AwsEcsTaskDefinitionVolumesDetailsBuilder {
    pub(crate) docker_volume_configuration: std::option::Option<
        crate::types::AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails,
    >,
    pub(crate) efs_volume_configuration:
        std::option::Option<crate::types::AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails>,
    pub(crate) host: std::option::Option<crate::types::AwsEcsTaskDefinitionVolumesHostDetails>,
    pub(crate) name: std::option::Option<std::string::String>,
}
impl AwsEcsTaskDefinitionVolumesDetailsBuilder {
    /// <p>Information about a Docker volume.</p>
    pub fn docker_volume_configuration(
        mut self,
        input: crate::types::AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails,
    ) -> Self {
        self.docker_volume_configuration = Some(input);
        self
    }
    /// <p>Information about a Docker volume.</p>
    pub fn set_docker_volume_configuration(
        mut self,
        input: std::option::Option<
            crate::types::AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails,
        >,
    ) -> Self {
        self.docker_volume_configuration = input;
        self
    }
    /// <p>Information about the Amazon Elastic File System file system that is used for task storage.</p>
    pub fn efs_volume_configuration(
        mut self,
        input: crate::types::AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails,
    ) -> Self {
        self.efs_volume_configuration = Some(input);
        self
    }
    /// <p>Information about the Amazon Elastic File System file system that is used for task storage.</p>
    pub fn set_efs_volume_configuration(
        mut self,
        input: std::option::Option<
            crate::types::AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails,
        >,
    ) -> Self {
        self.efs_volume_configuration = input;
        self
    }
    /// <p>Information about a bind mount host volume.</p>
    pub fn host(mut self, input: crate::types::AwsEcsTaskDefinitionVolumesHostDetails) -> Self {
        self.host = Some(input);
        self
    }
    /// <p>Information about a bind mount host volume.</p>
    pub fn set_host(
        mut self,
        input: std::option::Option<crate::types::AwsEcsTaskDefinitionVolumesHostDetails>,
    ) -> Self {
        self.host = input;
        self
    }
    /// <p>The name of the data volume.</p>
    pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
        self.name = Some(input.into());
        self
    }
    /// <p>The name of the data volume.</p>
    pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
        self.name = input;
        self
    }
    /// Consumes the builder and constructs a [`AwsEcsTaskDefinitionVolumesDetails`](crate::types::AwsEcsTaskDefinitionVolumesDetails).
    pub fn build(self) -> crate::types::AwsEcsTaskDefinitionVolumesDetails {
        crate::types::AwsEcsTaskDefinitionVolumesDetails {
            docker_volume_configuration: self.docker_volume_configuration,
            efs_volume_configuration: self.efs_volume_configuration,
            host: self.host,
            name: self.name,
        }
    }
}