aws_sdk_eks/operation/update_addon/
_update_addon_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct UpdateAddonInput {
6    /// <p>The name of your cluster.</p>
7    pub cluster_name: ::std::option::Option<::std::string::String>,
8    /// <p>The name of the add-on. The name must match one of the names returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html"> <code>ListAddons</code> </a>.</p>
9    pub addon_name: ::std::option::Option<::std::string::String>,
10    /// <p>The version of the add-on. The version must match one of the versions returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html"> <code>DescribeAddonVersions</code> </a>.</p>
11    pub addon_version: ::std::option::Option<::std::string::String>,
12    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i>Amazon EKS User Guide</i>.</p><note>
13    /// <p>To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html">Enabling IAM roles for service accounts on your cluster</a> in the <i>Amazon EKS User Guide</i>.</p>
14    /// </note>
15    pub service_account_role_arn: ::std::option::Option<::std::string::String>,
16    /// <p>How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Conflicts are handled based on the option you choose:</p>
17    /// <ul>
18    /// <li>
19    /// <p><b>None</b> – Amazon EKS doesn't change the value. The update might fail.</p></li>
20    /// <li>
21    /// <p><b>Overwrite</b> – Amazon EKS overwrites the changed value back to the Amazon EKS default value.</p></li>
22    /// <li>
23    /// <p><b>Preserve</b> – Amazon EKS preserves the value. If you choose this option, we recommend that you test any field and value changes on a non-production cluster before updating the add-on on your production cluster.</p></li>
24    /// </ul>
25    pub resolve_conflicts: ::std::option::Option<crate::types::ResolveConflicts>,
26    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
27    pub client_request_token: ::std::option::Option<::std::string::String>,
28    /// <p>The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by <code>DescribeAddonConfiguration</code>.</p>
29    pub configuration_values: ::std::option::Option<::std::string::String>,
30    /// <p>An array of Pod Identity Assocations to be updated. Each EKS Pod Identity association maps a Kubernetes service account to an IAM Role. If this value is left blank, no change. If an empty array is provided, existing Pod Identity Assocations owned by the Addon are deleted.</p>
31    /// <p>For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html">Attach an IAM Role to an Amazon EKS add-on using Pod Identity</a> in the <i>Amazon EKS User Guide</i>.</p>
32    pub pod_identity_associations: ::std::option::Option<::std::vec::Vec<crate::types::AddonPodIdentityAssociations>>,
33}
34impl UpdateAddonInput {
35    /// <p>The name of your cluster.</p>
36    pub fn cluster_name(&self) -> ::std::option::Option<&str> {
37        self.cluster_name.as_deref()
38    }
39    /// <p>The name of the add-on. The name must match one of the names returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html"> <code>ListAddons</code> </a>.</p>
40    pub fn addon_name(&self) -> ::std::option::Option<&str> {
41        self.addon_name.as_deref()
42    }
43    /// <p>The version of the add-on. The version must match one of the versions returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html"> <code>DescribeAddonVersions</code> </a>.</p>
44    pub fn addon_version(&self) -> ::std::option::Option<&str> {
45        self.addon_version.as_deref()
46    }
47    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i>Amazon EKS User Guide</i>.</p><note>
48    /// <p>To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html">Enabling IAM roles for service accounts on your cluster</a> in the <i>Amazon EKS User Guide</i>.</p>
49    /// </note>
50    pub fn service_account_role_arn(&self) -> ::std::option::Option<&str> {
51        self.service_account_role_arn.as_deref()
52    }
53    /// <p>How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Conflicts are handled based on the option you choose:</p>
54    /// <ul>
55    /// <li>
56    /// <p><b>None</b> – Amazon EKS doesn't change the value. The update might fail.</p></li>
57    /// <li>
58    /// <p><b>Overwrite</b> – Amazon EKS overwrites the changed value back to the Amazon EKS default value.</p></li>
59    /// <li>
60    /// <p><b>Preserve</b> – Amazon EKS preserves the value. If you choose this option, we recommend that you test any field and value changes on a non-production cluster before updating the add-on on your production cluster.</p></li>
61    /// </ul>
62    pub fn resolve_conflicts(&self) -> ::std::option::Option<&crate::types::ResolveConflicts> {
63        self.resolve_conflicts.as_ref()
64    }
65    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
66    pub fn client_request_token(&self) -> ::std::option::Option<&str> {
67        self.client_request_token.as_deref()
68    }
69    /// <p>The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by <code>DescribeAddonConfiguration</code>.</p>
70    pub fn configuration_values(&self) -> ::std::option::Option<&str> {
71        self.configuration_values.as_deref()
72    }
73    /// <p>An array of Pod Identity Assocations to be updated. Each EKS Pod Identity association maps a Kubernetes service account to an IAM Role. If this value is left blank, no change. If an empty array is provided, existing Pod Identity Assocations owned by the Addon are deleted.</p>
74    /// <p>For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html">Attach an IAM Role to an Amazon EKS add-on using Pod Identity</a> in the <i>Amazon EKS User Guide</i>.</p>
75    ///
76    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.pod_identity_associations.is_none()`.
77    pub fn pod_identity_associations(&self) -> &[crate::types::AddonPodIdentityAssociations] {
78        self.pod_identity_associations.as_deref().unwrap_or_default()
79    }
80}
81impl UpdateAddonInput {
82    /// Creates a new builder-style object to manufacture [`UpdateAddonInput`](crate::operation::update_addon::UpdateAddonInput).
83    pub fn builder() -> crate::operation::update_addon::builders::UpdateAddonInputBuilder {
84        crate::operation::update_addon::builders::UpdateAddonInputBuilder::default()
85    }
86}
87
88/// A builder for [`UpdateAddonInput`](crate::operation::update_addon::UpdateAddonInput).
89#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
90#[non_exhaustive]
91pub struct UpdateAddonInputBuilder {
92    pub(crate) cluster_name: ::std::option::Option<::std::string::String>,
93    pub(crate) addon_name: ::std::option::Option<::std::string::String>,
94    pub(crate) addon_version: ::std::option::Option<::std::string::String>,
95    pub(crate) service_account_role_arn: ::std::option::Option<::std::string::String>,
96    pub(crate) resolve_conflicts: ::std::option::Option<crate::types::ResolveConflicts>,
97    pub(crate) client_request_token: ::std::option::Option<::std::string::String>,
98    pub(crate) configuration_values: ::std::option::Option<::std::string::String>,
99    pub(crate) pod_identity_associations: ::std::option::Option<::std::vec::Vec<crate::types::AddonPodIdentityAssociations>>,
100}
101impl UpdateAddonInputBuilder {
102    /// <p>The name of your cluster.</p>
103    /// This field is required.
104    pub fn cluster_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
105        self.cluster_name = ::std::option::Option::Some(input.into());
106        self
107    }
108    /// <p>The name of your cluster.</p>
109    pub fn set_cluster_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
110        self.cluster_name = input;
111        self
112    }
113    /// <p>The name of your cluster.</p>
114    pub fn get_cluster_name(&self) -> &::std::option::Option<::std::string::String> {
115        &self.cluster_name
116    }
117    /// <p>The name of the add-on. The name must match one of the names returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html"> <code>ListAddons</code> </a>.</p>
118    /// This field is required.
119    pub fn addon_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
120        self.addon_name = ::std::option::Option::Some(input.into());
121        self
122    }
123    /// <p>The name of the add-on. The name must match one of the names returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html"> <code>ListAddons</code> </a>.</p>
124    pub fn set_addon_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
125        self.addon_name = input;
126        self
127    }
128    /// <p>The name of the add-on. The name must match one of the names returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html"> <code>ListAddons</code> </a>.</p>
129    pub fn get_addon_name(&self) -> &::std::option::Option<::std::string::String> {
130        &self.addon_name
131    }
132    /// <p>The version of the add-on. The version must match one of the versions returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html"> <code>DescribeAddonVersions</code> </a>.</p>
133    pub fn addon_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
134        self.addon_version = ::std::option::Option::Some(input.into());
135        self
136    }
137    /// <p>The version of the add-on. The version must match one of the versions returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html"> <code>DescribeAddonVersions</code> </a>.</p>
138    pub fn set_addon_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
139        self.addon_version = input;
140        self
141    }
142    /// <p>The version of the add-on. The version must match one of the versions returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html"> <code>DescribeAddonVersions</code> </a>.</p>
143    pub fn get_addon_version(&self) -> &::std::option::Option<::std::string::String> {
144        &self.addon_version
145    }
146    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i>Amazon EKS User Guide</i>.</p><note>
147    /// <p>To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html">Enabling IAM roles for service accounts on your cluster</a> in the <i>Amazon EKS User Guide</i>.</p>
148    /// </note>
149    pub fn service_account_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
150        self.service_account_role_arn = ::std::option::Option::Some(input.into());
151        self
152    }
153    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i>Amazon EKS User Guide</i>.</p><note>
154    /// <p>To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html">Enabling IAM roles for service accounts on your cluster</a> in the <i>Amazon EKS User Guide</i>.</p>
155    /// </note>
156    pub fn set_service_account_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
157        self.service_account_role_arn = input;
158        self
159    }
160    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i>Amazon EKS User Guide</i>.</p><note>
161    /// <p>To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html">Enabling IAM roles for service accounts on your cluster</a> in the <i>Amazon EKS User Guide</i>.</p>
162    /// </note>
163    pub fn get_service_account_role_arn(&self) -> &::std::option::Option<::std::string::String> {
164        &self.service_account_role_arn
165    }
166    /// <p>How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Conflicts are handled based on the option you choose:</p>
167    /// <ul>
168    /// <li>
169    /// <p><b>None</b> – Amazon EKS doesn't change the value. The update might fail.</p></li>
170    /// <li>
171    /// <p><b>Overwrite</b> – Amazon EKS overwrites the changed value back to the Amazon EKS default value.</p></li>
172    /// <li>
173    /// <p><b>Preserve</b> – Amazon EKS preserves the value. If you choose this option, we recommend that you test any field and value changes on a non-production cluster before updating the add-on on your production cluster.</p></li>
174    /// </ul>
175    pub fn resolve_conflicts(mut self, input: crate::types::ResolveConflicts) -> Self {
176        self.resolve_conflicts = ::std::option::Option::Some(input);
177        self
178    }
179    /// <p>How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Conflicts are handled based on the option you choose:</p>
180    /// <ul>
181    /// <li>
182    /// <p><b>None</b> – Amazon EKS doesn't change the value. The update might fail.</p></li>
183    /// <li>
184    /// <p><b>Overwrite</b> – Amazon EKS overwrites the changed value back to the Amazon EKS default value.</p></li>
185    /// <li>
186    /// <p><b>Preserve</b> – Amazon EKS preserves the value. If you choose this option, we recommend that you test any field and value changes on a non-production cluster before updating the add-on on your production cluster.</p></li>
187    /// </ul>
188    pub fn set_resolve_conflicts(mut self, input: ::std::option::Option<crate::types::ResolveConflicts>) -> Self {
189        self.resolve_conflicts = input;
190        self
191    }
192    /// <p>How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Conflicts are handled based on the option you choose:</p>
193    /// <ul>
194    /// <li>
195    /// <p><b>None</b> – Amazon EKS doesn't change the value. The update might fail.</p></li>
196    /// <li>
197    /// <p><b>Overwrite</b> – Amazon EKS overwrites the changed value back to the Amazon EKS default value.</p></li>
198    /// <li>
199    /// <p><b>Preserve</b> – Amazon EKS preserves the value. If you choose this option, we recommend that you test any field and value changes on a non-production cluster before updating the add-on on your production cluster.</p></li>
200    /// </ul>
201    pub fn get_resolve_conflicts(&self) -> &::std::option::Option<crate::types::ResolveConflicts> {
202        &self.resolve_conflicts
203    }
204    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
205    pub fn client_request_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
206        self.client_request_token = ::std::option::Option::Some(input.into());
207        self
208    }
209    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
210    pub fn set_client_request_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
211        self.client_request_token = input;
212        self
213    }
214    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
215    pub fn get_client_request_token(&self) -> &::std::option::Option<::std::string::String> {
216        &self.client_request_token
217    }
218    /// <p>The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by <code>DescribeAddonConfiguration</code>.</p>
219    pub fn configuration_values(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
220        self.configuration_values = ::std::option::Option::Some(input.into());
221        self
222    }
223    /// <p>The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by <code>DescribeAddonConfiguration</code>.</p>
224    pub fn set_configuration_values(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
225        self.configuration_values = input;
226        self
227    }
228    /// <p>The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by <code>DescribeAddonConfiguration</code>.</p>
229    pub fn get_configuration_values(&self) -> &::std::option::Option<::std::string::String> {
230        &self.configuration_values
231    }
232    /// Appends an item to `pod_identity_associations`.
233    ///
234    /// To override the contents of this collection use [`set_pod_identity_associations`](Self::set_pod_identity_associations).
235    ///
236    /// <p>An array of Pod Identity Assocations to be updated. Each EKS Pod Identity association maps a Kubernetes service account to an IAM Role. If this value is left blank, no change. If an empty array is provided, existing Pod Identity Assocations owned by the Addon are deleted.</p>
237    /// <p>For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html">Attach an IAM Role to an Amazon EKS add-on using Pod Identity</a> in the <i>Amazon EKS User Guide</i>.</p>
238    pub fn pod_identity_associations(mut self, input: crate::types::AddonPodIdentityAssociations) -> Self {
239        let mut v = self.pod_identity_associations.unwrap_or_default();
240        v.push(input);
241        self.pod_identity_associations = ::std::option::Option::Some(v);
242        self
243    }
244    /// <p>An array of Pod Identity Assocations to be updated. Each EKS Pod Identity association maps a Kubernetes service account to an IAM Role. If this value is left blank, no change. If an empty array is provided, existing Pod Identity Assocations owned by the Addon are deleted.</p>
245    /// <p>For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html">Attach an IAM Role to an Amazon EKS add-on using Pod Identity</a> in the <i>Amazon EKS User Guide</i>.</p>
246    pub fn set_pod_identity_associations(
247        mut self,
248        input: ::std::option::Option<::std::vec::Vec<crate::types::AddonPodIdentityAssociations>>,
249    ) -> Self {
250        self.pod_identity_associations = input;
251        self
252    }
253    /// <p>An array of Pod Identity Assocations to be updated. Each EKS Pod Identity association maps a Kubernetes service account to an IAM Role. If this value is left blank, no change. If an empty array is provided, existing Pod Identity Assocations owned by the Addon are deleted.</p>
254    /// <p>For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html">Attach an IAM Role to an Amazon EKS add-on using Pod Identity</a> in the <i>Amazon EKS User Guide</i>.</p>
255    pub fn get_pod_identity_associations(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::AddonPodIdentityAssociations>> {
256        &self.pod_identity_associations
257    }
258    /// Consumes the builder and constructs a [`UpdateAddonInput`](crate::operation::update_addon::UpdateAddonInput).
259    pub fn build(self) -> ::std::result::Result<crate::operation::update_addon::UpdateAddonInput, ::aws_smithy_types::error::operation::BuildError> {
260        ::std::result::Result::Ok(crate::operation::update_addon::UpdateAddonInput {
261            cluster_name: self.cluster_name,
262            addon_name: self.addon_name,
263            addon_version: self.addon_version,
264            service_account_role_arn: self.service_account_role_arn,
265            resolve_conflicts: self.resolve_conflicts,
266            client_request_token: self.client_request_token,
267            configuration_values: self.configuration_values,
268            pod_identity_associations: self.pod_identity_associations,
269        })
270    }
271}