/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.eks.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.AmazonWebServiceRequest; /** * * @see AWS API * Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class CreateClusterRequest extends com.amazonaws.AmazonWebServiceRequest implements Serializable, Cloneable { /** *

* The unique name to give to your cluster. *

*/ private String name; /** *

* The desired Kubernetes version for your cluster. If you don't specify a value here, the default version available * in Amazon EKS is used. *

* *

* The default version might not be the latest version available. *

*
*/ private String version; /** *

* The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make * calls to Amazon Web Services API operations on your behalf. For more information, see Amazon EKS Service IAM Role in * the Amazon EKS User Guide . *

*/ private String roleArn; /** *

* The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific * requirements to work properly with Kubernetes. For more information, see Cluster VPC Considerations and Cluster Security Group * Considerations in the Amazon EKS User Guide. You must specify at least two subnets. You can specify up * to five security groups. However, we recommend that you use a dedicated security group for your cluster control * plane. *

*/ private VpcConfigRequest resourcesVpcConfig; /** *

* The Kubernetes network configuration for the cluster. *

*/ private KubernetesNetworkConfigRequest kubernetesNetworkConfig; /** *

* Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, * cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster control plane * logs in the Amazon EKS User Guide . *

* *

* CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For * more information, see CloudWatch Pricing. *

*
*/ private Logging logging; /** *

* Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. *

*/ private String clientRequestToken; /** *

* The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of a key * and an optional value. You define both. *

*/ private java.util.Map tags; /** *

* The encryption configuration for the cluster. *

*/ private java.util.List encryptionConfig; /** *

* An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost. * Before creating a local cluster on an Outpost, review Local clusters * for Amazon EKS on Amazon Web Services Outposts in the Amazon EKS User Guide. This object isn't * available for creating Amazon EKS clusters on the Amazon Web Services cloud. *

*/ private OutpostConfigRequest outpostConfig; /** *

* The unique name to give to your cluster. *

* * @param name * The unique name to give to your cluster. */ public void setName(String name) { this.name = name; } /** *

* The unique name to give to your cluster. *

* * @return The unique name to give to your cluster. */ public String getName() { return this.name; } /** *

* The unique name to give to your cluster. *

* * @param name * The unique name to give to your cluster. * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withName(String name) { setName(name); return this; } /** *

* The desired Kubernetes version for your cluster. If you don't specify a value here, the default version available * in Amazon EKS is used. *

* *

* The default version might not be the latest version available. *

*
* * @param version * The desired Kubernetes version for your cluster. If you don't specify a value here, the default version * available in Amazon EKS is used.

*

* The default version might not be the latest version available. *

*/ public void setVersion(String version) { this.version = version; } /** *

* The desired Kubernetes version for your cluster. If you don't specify a value here, the default version available * in Amazon EKS is used. *

* *

* The default version might not be the latest version available. *

*
* * @return The desired Kubernetes version for your cluster. If you don't specify a value here, the default version * available in Amazon EKS is used.

*

* The default version might not be the latest version available. *

*/ public String getVersion() { return this.version; } /** *

* The desired Kubernetes version for your cluster. If you don't specify a value here, the default version available * in Amazon EKS is used. *

* *

* The default version might not be the latest version available. *

*
* * @param version * The desired Kubernetes version for your cluster. If you don't specify a value here, the default version * available in Amazon EKS is used.

*

* The default version might not be the latest version available. *

* @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withVersion(String version) { setVersion(version); return this; } /** *

* The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make * calls to Amazon Web Services API operations on your behalf. For more information, see Amazon EKS Service IAM Role in * the Amazon EKS User Guide . *

* * @param roleArn * The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane * to make calls to Amazon Web Services API operations on your behalf. For more information, see Amazon EKS Service IAM * Role in the Amazon EKS User Guide . */ public void setRoleArn(String roleArn) { this.roleArn = roleArn; } /** *

* The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make * calls to Amazon Web Services API operations on your behalf. For more information, see Amazon EKS Service IAM Role in * the Amazon EKS User Guide . *

* * @return The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane * to make calls to Amazon Web Services API operations on your behalf. For more information, see Amazon EKS Service IAM * Role in the Amazon EKS User Guide . */ public String getRoleArn() { return this.roleArn; } /** *

* The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make * calls to Amazon Web Services API operations on your behalf. For more information, see Amazon EKS Service IAM Role in * the Amazon EKS User Guide . *

* * @param roleArn * The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane * to make calls to Amazon Web Services API operations on your behalf. For more information, see Amazon EKS Service IAM * Role in the Amazon EKS User Guide . * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withRoleArn(String roleArn) { setRoleArn(roleArn); return this; } /** *

* The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific * requirements to work properly with Kubernetes. For more information, see Cluster VPC Considerations and Cluster Security Group * Considerations in the Amazon EKS User Guide. You must specify at least two subnets. You can specify up * to five security groups. However, we recommend that you use a dedicated security group for your cluster control * plane. *

* * @param resourcesVpcConfig * The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific * requirements to work properly with Kubernetes. For more information, see Cluster VPC Considerations * and Cluster Security Group * Considerations in the Amazon EKS User Guide. You must specify at least two subnets. You can * specify up to five security groups. However, we recommend that you use a dedicated security group for your * cluster control plane. */ public void setResourcesVpcConfig(VpcConfigRequest resourcesVpcConfig) { this.resourcesVpcConfig = resourcesVpcConfig; } /** *

* The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific * requirements to work properly with Kubernetes. For more information, see Cluster VPC Considerations and Cluster Security Group * Considerations in the Amazon EKS User Guide. You must specify at least two subnets. You can specify up * to five security groups. However, we recommend that you use a dedicated security group for your cluster control * plane. *

* * @return The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific * requirements to work properly with Kubernetes. For more information, see Cluster VPC Considerations * and Cluster Security Group * Considerations in the Amazon EKS User Guide. You must specify at least two subnets. You can * specify up to five security groups. However, we recommend that you use a dedicated security group for * your cluster control plane. */ public VpcConfigRequest getResourcesVpcConfig() { return this.resourcesVpcConfig; } /** *

* The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific * requirements to work properly with Kubernetes. For more information, see Cluster VPC Considerations and Cluster Security Group * Considerations in the Amazon EKS User Guide. You must specify at least two subnets. You can specify up * to five security groups. However, we recommend that you use a dedicated security group for your cluster control * plane. *

* * @param resourcesVpcConfig * The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific * requirements to work properly with Kubernetes. For more information, see Cluster VPC Considerations * and Cluster Security Group * Considerations in the Amazon EKS User Guide. You must specify at least two subnets. You can * specify up to five security groups. However, we recommend that you use a dedicated security group for your * cluster control plane. * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withResourcesVpcConfig(VpcConfigRequest resourcesVpcConfig) { setResourcesVpcConfig(resourcesVpcConfig); return this; } /** *

* The Kubernetes network configuration for the cluster. *

* * @param kubernetesNetworkConfig * The Kubernetes network configuration for the cluster. */ public void setKubernetesNetworkConfig(KubernetesNetworkConfigRequest kubernetesNetworkConfig) { this.kubernetesNetworkConfig = kubernetesNetworkConfig; } /** *

* The Kubernetes network configuration for the cluster. *

* * @return The Kubernetes network configuration for the cluster. */ public KubernetesNetworkConfigRequest getKubernetesNetworkConfig() { return this.kubernetesNetworkConfig; } /** *

* The Kubernetes network configuration for the cluster. *

* * @param kubernetesNetworkConfig * The Kubernetes network configuration for the cluster. * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withKubernetesNetworkConfig(KubernetesNetworkConfigRequest kubernetesNetworkConfig) { setKubernetesNetworkConfig(kubernetesNetworkConfig); return this; } /** *

* Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, * cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster control plane * logs in the Amazon EKS User Guide . *

* *

* CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For * more information, see CloudWatch Pricing. *

*
* * @param logging * Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By * default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster control * plane logs in the Amazon EKS User Guide .

*

* CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. * For more information, see CloudWatch Pricing. *

*/ public void setLogging(Logging logging) { this.logging = logging; } /** *

* Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, * cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster control plane * logs in the Amazon EKS User Guide . *

* *

* CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For * more information, see CloudWatch Pricing. *

*
* * @return Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By * default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster * control plane logs in the Amazon EKS User Guide .

*

* CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. * For more information, see CloudWatch Pricing. *

*/ public Logging getLogging() { return this.logging; } /** *

* Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, * cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster control plane * logs in the Amazon EKS User Guide . *

* *

* CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For * more information, see CloudWatch Pricing. *

*
* * @param logging * Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By * default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster control * plane logs in the Amazon EKS User Guide .

*

* CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. * For more information, see CloudWatch Pricing. *

* @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withLogging(Logging logging) { setLogging(logging); return this; } /** *

* Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. *

* * @param clientRequestToken * Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. */ public void setClientRequestToken(String clientRequestToken) { this.clientRequestToken = clientRequestToken; } /** *

* Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. *

* * @return Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. */ public String getClientRequestToken() { return this.clientRequestToken; } /** *

* Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. *

* * @param clientRequestToken * Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withClientRequestToken(String clientRequestToken) { setClientRequestToken(clientRequestToken); return this; } /** *

* The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of a key * and an optional value. You define both. *

* * @return The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of * a key and an optional value. You define both. */ public java.util.Map getTags() { return tags; } /** *

* The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of a key * and an optional value. You define both. *

* * @param tags * The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of * a key and an optional value. You define both. */ public void setTags(java.util.Map tags) { this.tags = tags; } /** *

* The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of a key * and an optional value. You define both. *

* * @param tags * The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of * a key and an optional value. You define both. * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withTags(java.util.Map tags) { setTags(tags); return this; } /** * Add a single Tags entry * * @see CreateClusterRequest#withTags * @returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest addTagsEntry(String key, String value) { if (null == this.tags) { this.tags = new java.util.HashMap(); } if (this.tags.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.tags.put(key, value); return this; } /** * Removes all the entries added into Tags. * * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest clearTagsEntries() { this.tags = null; return this; } /** *

* The encryption configuration for the cluster. *

* * @return The encryption configuration for the cluster. */ public java.util.List getEncryptionConfig() { return encryptionConfig; } /** *

* The encryption configuration for the cluster. *

* * @param encryptionConfig * The encryption configuration for the cluster. */ public void setEncryptionConfig(java.util.Collection encryptionConfig) { if (encryptionConfig == null) { this.encryptionConfig = null; return; } this.encryptionConfig = new java.util.ArrayList(encryptionConfig); } /** *

* The encryption configuration for the cluster. *

*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setEncryptionConfig(java.util.Collection)} or {@link #withEncryptionConfig(java.util.Collection)} if you * want to override the existing values. *

* * @param encryptionConfig * The encryption configuration for the cluster. * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withEncryptionConfig(EncryptionConfig... encryptionConfig) { if (this.encryptionConfig == null) { setEncryptionConfig(new java.util.ArrayList(encryptionConfig.length)); } for (EncryptionConfig ele : encryptionConfig) { this.encryptionConfig.add(ele); } return this; } /** *

* The encryption configuration for the cluster. *

* * @param encryptionConfig * The encryption configuration for the cluster. * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withEncryptionConfig(java.util.Collection encryptionConfig) { setEncryptionConfig(encryptionConfig); return this; } /** *

* An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost. * Before creating a local cluster on an Outpost, review Local clusters * for Amazon EKS on Amazon Web Services Outposts in the Amazon EKS User Guide. This object isn't * available for creating Amazon EKS clusters on the Amazon Web Services cloud. *

* * @param outpostConfig * An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services * Outpost. Before creating a local cluster on an Outpost, review Local * clusters for Amazon EKS on Amazon Web Services Outposts in the Amazon EKS User Guide. This * object isn't available for creating Amazon EKS clusters on the Amazon Web Services cloud. */ public void setOutpostConfig(OutpostConfigRequest outpostConfig) { this.outpostConfig = outpostConfig; } /** *

* An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost. * Before creating a local cluster on an Outpost, review Local clusters * for Amazon EKS on Amazon Web Services Outposts in the Amazon EKS User Guide. This object isn't * available for creating Amazon EKS clusters on the Amazon Web Services cloud. *

* * @return An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services * Outpost. Before creating a local cluster on an Outpost, review Local * clusters for Amazon EKS on Amazon Web Services Outposts in the Amazon EKS User Guide. This * object isn't available for creating Amazon EKS clusters on the Amazon Web Services cloud. */ public OutpostConfigRequest getOutpostConfig() { return this.outpostConfig; } /** *

* An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost. * Before creating a local cluster on an Outpost, review Local clusters * for Amazon EKS on Amazon Web Services Outposts in the Amazon EKS User Guide. This object isn't * available for creating Amazon EKS clusters on the Amazon Web Services cloud. *

* * @param outpostConfig * An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services * Outpost. Before creating a local cluster on an Outpost, review Local * clusters for Amazon EKS on Amazon Web Services Outposts in the Amazon EKS User Guide. This * object isn't available for creating Amazon EKS clusters on the Amazon Web Services cloud. * @return Returns a reference to this object so that method calls can be chained together. */ public CreateClusterRequest withOutpostConfig(OutpostConfigRequest outpostConfig) { setOutpostConfig(outpostConfig); return this; } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getName() != null) sb.append("Name: ").append(getName()).append(","); if (getVersion() != null) sb.append("Version: ").append(getVersion()).append(","); if (getRoleArn() != null) sb.append("RoleArn: ").append(getRoleArn()).append(","); if (getResourcesVpcConfig() != null) sb.append("ResourcesVpcConfig: ").append(getResourcesVpcConfig()).append(","); if (getKubernetesNetworkConfig() != null) sb.append("KubernetesNetworkConfig: ").append(getKubernetesNetworkConfig()).append(","); if (getLogging() != null) sb.append("Logging: ").append(getLogging()).append(","); if (getClientRequestToken() != null) sb.append("ClientRequestToken: ").append(getClientRequestToken()).append(","); if (getTags() != null) sb.append("Tags: ").append(getTags()).append(","); if (getEncryptionConfig() != null) sb.append("EncryptionConfig: ").append(getEncryptionConfig()).append(","); if (getOutpostConfig() != null) sb.append("OutpostConfig: ").append(getOutpostConfig()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof CreateClusterRequest == false) return false; CreateClusterRequest other = (CreateClusterRequest) obj; if (other.getName() == null ^ this.getName() == null) return false; if (other.getName() != null && other.getName().equals(this.getName()) == false) return false; if (other.getVersion() == null ^ this.getVersion() == null) return false; if (other.getVersion() != null && other.getVersion().equals(this.getVersion()) == false) return false; if (other.getRoleArn() == null ^ this.getRoleArn() == null) return false; if (other.getRoleArn() != null && other.getRoleArn().equals(this.getRoleArn()) == false) return false; if (other.getResourcesVpcConfig() == null ^ this.getResourcesVpcConfig() == null) return false; if (other.getResourcesVpcConfig() != null && other.getResourcesVpcConfig().equals(this.getResourcesVpcConfig()) == false) return false; if (other.getKubernetesNetworkConfig() == null ^ this.getKubernetesNetworkConfig() == null) return false; if (other.getKubernetesNetworkConfig() != null && other.getKubernetesNetworkConfig().equals(this.getKubernetesNetworkConfig()) == false) return false; if (other.getLogging() == null ^ this.getLogging() == null) return false; if (other.getLogging() != null && other.getLogging().equals(this.getLogging()) == false) return false; if (other.getClientRequestToken() == null ^ this.getClientRequestToken() == null) return false; if (other.getClientRequestToken() != null && other.getClientRequestToken().equals(this.getClientRequestToken()) == false) return false; if (other.getTags() == null ^ this.getTags() == null) return false; if (other.getTags() != null && other.getTags().equals(this.getTags()) == false) return false; if (other.getEncryptionConfig() == null ^ this.getEncryptionConfig() == null) return false; if (other.getEncryptionConfig() != null && other.getEncryptionConfig().equals(this.getEncryptionConfig()) == false) return false; if (other.getOutpostConfig() == null ^ this.getOutpostConfig() == null) return false; if (other.getOutpostConfig() != null && other.getOutpostConfig().equals(this.getOutpostConfig()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getName() == null) ? 0 : getName().hashCode()); hashCode = prime * hashCode + ((getVersion() == null) ? 0 : getVersion().hashCode()); hashCode = prime * hashCode + ((getRoleArn() == null) ? 0 : getRoleArn().hashCode()); hashCode = prime * hashCode + ((getResourcesVpcConfig() == null) ? 0 : getResourcesVpcConfig().hashCode()); hashCode = prime * hashCode + ((getKubernetesNetworkConfig() == null) ? 0 : getKubernetesNetworkConfig().hashCode()); hashCode = prime * hashCode + ((getLogging() == null) ? 0 : getLogging().hashCode()); hashCode = prime * hashCode + ((getClientRequestToken() == null) ? 0 : getClientRequestToken().hashCode()); hashCode = prime * hashCode + ((getTags() == null) ? 0 : getTags().hashCode()); hashCode = prime * hashCode + ((getEncryptionConfig() == null) ? 0 : getEncryptionConfig().hashCode()); hashCode = prime * hashCode + ((getOutpostConfig() == null) ? 0 : getOutpostConfig().hashCode()); return hashCode; } @Override public CreateClusterRequest clone() { return (CreateClusterRequest) super.clone(); } }