/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace EKS { namespace Model { /** */ class AWS_EKS_API CreateNodegroupRequest : public EKSRequest { public: CreateNodegroupRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateNodegroup"; } Aws::String SerializePayload() const override; /** *

The name of the cluster to create the node group in.

*/ inline const Aws::String& GetClusterName() const{ return m_clusterName; } /** *

The name of the cluster to create the node group in.

*/ inline bool ClusterNameHasBeenSet() const { return m_clusterNameHasBeenSet; } /** *

The name of the cluster to create the node group in.

*/ inline void SetClusterName(const Aws::String& value) { m_clusterNameHasBeenSet = true; m_clusterName = value; } /** *

The name of the cluster to create the node group in.

*/ inline void SetClusterName(Aws::String&& value) { m_clusterNameHasBeenSet = true; m_clusterName = std::move(value); } /** *

The name of the cluster to create the node group in.

*/ inline void SetClusterName(const char* value) { m_clusterNameHasBeenSet = true; m_clusterName.assign(value); } /** *

The name of the cluster to create the node group in.

*/ inline CreateNodegroupRequest& WithClusterName(const Aws::String& value) { SetClusterName(value); return *this;} /** *

The name of the cluster to create the node group in.

*/ inline CreateNodegroupRequest& WithClusterName(Aws::String&& value) { SetClusterName(std::move(value)); return *this;} /** *

The name of the cluster to create the node group in.

*/ inline CreateNodegroupRequest& WithClusterName(const char* value) { SetClusterName(value); return *this;} /** *

The unique name to give your node group.

*/ inline const Aws::String& GetNodegroupName() const{ return m_nodegroupName; } /** *

The unique name to give your node group.

*/ inline bool NodegroupNameHasBeenSet() const { return m_nodegroupNameHasBeenSet; } /** *

The unique name to give your node group.

*/ inline void SetNodegroupName(const Aws::String& value) { m_nodegroupNameHasBeenSet = true; m_nodegroupName = value; } /** *

The unique name to give your node group.

*/ inline void SetNodegroupName(Aws::String&& value) { m_nodegroupNameHasBeenSet = true; m_nodegroupName = std::move(value); } /** *

The unique name to give your node group.

*/ inline void SetNodegroupName(const char* value) { m_nodegroupNameHasBeenSet = true; m_nodegroupName.assign(value); } /** *

The unique name to give your node group.

*/ inline CreateNodegroupRequest& WithNodegroupName(const Aws::String& value) { SetNodegroupName(value); return *this;} /** *

The unique name to give your node group.

*/ inline CreateNodegroupRequest& WithNodegroupName(Aws::String&& value) { SetNodegroupName(std::move(value)); return *this;} /** *

The unique name to give your node group.

*/ inline CreateNodegroupRequest& WithNodegroupName(const char* value) { SetNodegroupName(value); return *this;} /** *

The scaling configuration details for the Auto Scaling group that is created * for your node group.

*/ inline const NodegroupScalingConfig& GetScalingConfig() const{ return m_scalingConfig; } /** *

The scaling configuration details for the Auto Scaling group that is created * for your node group.

*/ inline bool ScalingConfigHasBeenSet() const { return m_scalingConfigHasBeenSet; } /** *

The scaling configuration details for the Auto Scaling group that is created * for your node group.

*/ inline void SetScalingConfig(const NodegroupScalingConfig& value) { m_scalingConfigHasBeenSet = true; m_scalingConfig = value; } /** *

The scaling configuration details for the Auto Scaling group that is created * for your node group.

*/ inline void SetScalingConfig(NodegroupScalingConfig&& value) { m_scalingConfigHasBeenSet = true; m_scalingConfig = std::move(value); } /** *

The scaling configuration details for the Auto Scaling group that is created * for your node group.

*/ inline CreateNodegroupRequest& WithScalingConfig(const NodegroupScalingConfig& value) { SetScalingConfig(value); return *this;} /** *

The scaling configuration details for the Auto Scaling group that is created * for your node group.

*/ inline CreateNodegroupRequest& WithScalingConfig(NodegroupScalingConfig&& value) { SetScalingConfig(std::move(value)); return *this;} /** *

The root device disk size (in GiB) for your node group instances. The default * disk size is 20 GiB. If you specify launchTemplate, then don't * specify diskSize, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline int GetDiskSize() const{ return m_diskSize; } /** *

The root device disk size (in GiB) for your node group instances. The default * disk size is 20 GiB. If you specify launchTemplate, then don't * specify diskSize, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline bool DiskSizeHasBeenSet() const { return m_diskSizeHasBeenSet; } /** *

The root device disk size (in GiB) for your node group instances. The default * disk size is 20 GiB. If you specify launchTemplate, then don't * specify diskSize, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetDiskSize(int value) { m_diskSizeHasBeenSet = true; m_diskSize = value; } /** *

The root device disk size (in GiB) for your node group instances. The default * disk size is 20 GiB. If you specify launchTemplate, then don't * specify diskSize, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithDiskSize(int value) { SetDiskSize(value); return *this;} /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline const Aws::Vector& GetSubnets() const{ return m_subnets; } /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline bool SubnetsHasBeenSet() const { return m_subnetsHasBeenSet; } /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetSubnets(const Aws::Vector& value) { m_subnetsHasBeenSet = true; m_subnets = value; } /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetSubnets(Aws::Vector&& value) { m_subnetsHasBeenSet = true; m_subnets = std::move(value); } /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithSubnets(const Aws::Vector& value) { SetSubnets(value); return *this;} /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithSubnets(Aws::Vector&& value) { SetSubnets(std::move(value)); return *this;} /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& AddSubnets(const Aws::String& value) { m_subnetsHasBeenSet = true; m_subnets.push_back(value); return *this; } /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& AddSubnets(Aws::String&& value) { m_subnetsHasBeenSet = true; m_subnets.push_back(std::move(value)); return *this; } /** *

The subnets to use for the Auto Scaling group that is created for your node * group. These subnets must have the tag key * kubernetes.io/cluster/CLUSTER_NAME with a value of * shared, where CLUSTER_NAME is replaced with the name * of your cluster. If you specify launchTemplate, then don't specify * * SubnetId in your launch template, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& AddSubnets(const char* value) { m_subnetsHasBeenSet = true; m_subnets.push_back(value); return *this; } /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline const Aws::Vector& GetInstanceTypes() const{ return m_instanceTypes; } /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline bool InstanceTypesHasBeenSet() const { return m_instanceTypesHasBeenSet; } /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetInstanceTypes(const Aws::Vector& value) { m_instanceTypesHasBeenSet = true; m_instanceTypes = value; } /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetInstanceTypes(Aws::Vector&& value) { m_instanceTypesHasBeenSet = true; m_instanceTypes = std::move(value); } /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithInstanceTypes(const Aws::Vector& value) { SetInstanceTypes(value); return *this;} /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithInstanceTypes(Aws::Vector&& value) { SetInstanceTypes(std::move(value)); return *this;} /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& AddInstanceTypes(const Aws::String& value) { m_instanceTypesHasBeenSet = true; m_instanceTypes.push_back(value); return *this; } /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& AddInstanceTypes(Aws::String&& value) { m_instanceTypesHasBeenSet = true; m_instanceTypes.push_back(std::move(value)); return *this; } /** *

The instance type to use for your node group. You can specify a single * instance type for a node group. The default value for instanceTypes * is t3.medium. If you choose a GPU instance type, be sure to specify * AL2_x86_64_GPU with the amiType parameter. If you * specify launchTemplate, then don't specify * instanceTypes, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& AddInstanceTypes(const char* value) { m_instanceTypesHasBeenSet = true; m_instanceTypes.push_back(value); return *this; } /** *

The AMI type for your node group. GPU instance types should use the * AL2_x86_64_GPU AMI type, which uses the Amazon EKS-optimized Linux * AMI with GPU support. Non-GPU instances should use the AL2_x86_64 * AMI type, which uses the Amazon EKS-optimized Linux AMI. If you specify * launchTemplate, and your launch template uses a custom AMI, then * don't specify amiType, or the node group deployment will fail. For * more information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline const AMITypes& GetAmiType() const{ return m_amiType; } /** *

The AMI type for your node group. GPU instance types should use the * AL2_x86_64_GPU AMI type, which uses the Amazon EKS-optimized Linux * AMI with GPU support. Non-GPU instances should use the AL2_x86_64 * AMI type, which uses the Amazon EKS-optimized Linux AMI. If you specify * launchTemplate, and your launch template uses a custom AMI, then * don't specify amiType, or the node group deployment will fail. For * more information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline bool AmiTypeHasBeenSet() const { return m_amiTypeHasBeenSet; } /** *

The AMI type for your node group. GPU instance types should use the * AL2_x86_64_GPU AMI type, which uses the Amazon EKS-optimized Linux * AMI with GPU support. Non-GPU instances should use the AL2_x86_64 * AMI type, which uses the Amazon EKS-optimized Linux AMI. If you specify * launchTemplate, and your launch template uses a custom AMI, then * don't specify amiType, or the node group deployment will fail. For * more information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetAmiType(const AMITypes& value) { m_amiTypeHasBeenSet = true; m_amiType = value; } /** *

The AMI type for your node group. GPU instance types should use the * AL2_x86_64_GPU AMI type, which uses the Amazon EKS-optimized Linux * AMI with GPU support. Non-GPU instances should use the AL2_x86_64 * AMI type, which uses the Amazon EKS-optimized Linux AMI. If you specify * launchTemplate, and your launch template uses a custom AMI, then * don't specify amiType, or the node group deployment will fail. For * more information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetAmiType(AMITypes&& value) { m_amiTypeHasBeenSet = true; m_amiType = std::move(value); } /** *

The AMI type for your node group. GPU instance types should use the * AL2_x86_64_GPU AMI type, which uses the Amazon EKS-optimized Linux * AMI with GPU support. Non-GPU instances should use the AL2_x86_64 * AMI type, which uses the Amazon EKS-optimized Linux AMI. If you specify * launchTemplate, and your launch template uses a custom AMI, then * don't specify amiType, or the node group deployment will fail. For * more information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithAmiType(const AMITypes& value) { SetAmiType(value); return *this;} /** *

The AMI type for your node group. GPU instance types should use the * AL2_x86_64_GPU AMI type, which uses the Amazon EKS-optimized Linux * AMI with GPU support. Non-GPU instances should use the AL2_x86_64 * AMI type, which uses the Amazon EKS-optimized Linux AMI. If you specify * launchTemplate, and your launch template uses a custom AMI, then * don't specify amiType, or the node group deployment will fail. For * more information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithAmiType(AMITypes&& value) { SetAmiType(std::move(value)); return *this;} /** *

The remote access (SSH) configuration to use with your node group. If you * specify launchTemplate, then don't specify * remoteAccess, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline const RemoteAccessConfig& GetRemoteAccess() const{ return m_remoteAccess; } /** *

The remote access (SSH) configuration to use with your node group. If you * specify launchTemplate, then don't specify * remoteAccess, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline bool RemoteAccessHasBeenSet() const { return m_remoteAccessHasBeenSet; } /** *

The remote access (SSH) configuration to use with your node group. If you * specify launchTemplate, then don't specify * remoteAccess, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetRemoteAccess(const RemoteAccessConfig& value) { m_remoteAccessHasBeenSet = true; m_remoteAccess = value; } /** *

The remote access (SSH) configuration to use with your node group. If you * specify launchTemplate, then don't specify * remoteAccess, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetRemoteAccess(RemoteAccessConfig&& value) { m_remoteAccessHasBeenSet = true; m_remoteAccess = std::move(value); } /** *

The remote access (SSH) configuration to use with your node group. If you * specify launchTemplate, then don't specify * remoteAccess, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithRemoteAccess(const RemoteAccessConfig& value) { SetRemoteAccess(value); return *this;} /** *

The remote access (SSH) configuration to use with your node group. If you * specify launchTemplate, then don't specify * remoteAccess, or the node group deployment will fail. For more * information about using launch templates with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithRemoteAccess(RemoteAccessConfig&& value) { SetRemoteAccess(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the IAM role to associate with your node * group. The Amazon EKS worker node kubelet daemon makes calls to AWS * APIs on your behalf. Worker nodes receive permissions for these API calls * through an IAM instance profile and associated policies. Before you can launch * worker nodes and register them into a cluster, you must create an IAM role for * those worker nodes to use when they are launched. For more information, see Amazon * EKS Worker Node IAM Role in the Amazon EKS User Guide . If * you specify launchTemplate, then don't specify * IamInstanceProfile in your launch template, or the node group * deployment will fail. For more information about using launch templates with * Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline const Aws::String& GetNodeRole() const{ return m_nodeRole; } /** *

The Amazon Resource Name (ARN) of the IAM role to associate with your node * group. The Amazon EKS worker node kubelet daemon makes calls to AWS * APIs on your behalf. Worker nodes receive permissions for these API calls * through an IAM instance profile and associated policies. Before you can launch * worker nodes and register them into a cluster, you must create an IAM role for * those worker nodes to use when they are launched. For more information, see Amazon * EKS Worker Node IAM Role in the Amazon EKS User Guide . If * you specify launchTemplate, then don't specify * IamInstanceProfile in your launch template, or the node group * deployment will fail. For more information about using launch templates with * Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline bool NodeRoleHasBeenSet() const { return m_nodeRoleHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the IAM role to associate with your node * group. The Amazon EKS worker node kubelet daemon makes calls to AWS * APIs on your behalf. Worker nodes receive permissions for these API calls * through an IAM instance profile and associated policies. Before you can launch * worker nodes and register them into a cluster, you must create an IAM role for * those worker nodes to use when they are launched. For more information, see Amazon * EKS Worker Node IAM Role in the Amazon EKS User Guide . If * you specify launchTemplate, then don't specify * IamInstanceProfile in your launch template, or the node group * deployment will fail. For more information about using launch templates with * Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetNodeRole(const Aws::String& value) { m_nodeRoleHasBeenSet = true; m_nodeRole = value; } /** *

The Amazon Resource Name (ARN) of the IAM role to associate with your node * group. The Amazon EKS worker node kubelet daemon makes calls to AWS * APIs on your behalf. Worker nodes receive permissions for these API calls * through an IAM instance profile and associated policies. Before you can launch * worker nodes and register them into a cluster, you must create an IAM role for * those worker nodes to use when they are launched. For more information, see Amazon * EKS Worker Node IAM Role in the Amazon EKS User Guide . If * you specify launchTemplate, then don't specify * IamInstanceProfile in your launch template, or the node group * deployment will fail. For more information about using launch templates with * Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetNodeRole(Aws::String&& value) { m_nodeRoleHasBeenSet = true; m_nodeRole = std::move(value); } /** *

The Amazon Resource Name (ARN) of the IAM role to associate with your node * group. The Amazon EKS worker node kubelet daemon makes calls to AWS * APIs on your behalf. Worker nodes receive permissions for these API calls * through an IAM instance profile and associated policies. Before you can launch * worker nodes and register them into a cluster, you must create an IAM role for * those worker nodes to use when they are launched. For more information, see Amazon * EKS Worker Node IAM Role in the Amazon EKS User Guide . If * you specify launchTemplate, then don't specify * IamInstanceProfile in your launch template, or the node group * deployment will fail. For more information about using launch templates with * Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetNodeRole(const char* value) { m_nodeRoleHasBeenSet = true; m_nodeRole.assign(value); } /** *

The Amazon Resource Name (ARN) of the IAM role to associate with your node * group. The Amazon EKS worker node kubelet daemon makes calls to AWS * APIs on your behalf. Worker nodes receive permissions for these API calls * through an IAM instance profile and associated policies. Before you can launch * worker nodes and register them into a cluster, you must create an IAM role for * those worker nodes to use when they are launched. For more information, see Amazon * EKS Worker Node IAM Role in the Amazon EKS User Guide . If * you specify launchTemplate, then don't specify * IamInstanceProfile in your launch template, or the node group * deployment will fail. For more information about using launch templates with * Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithNodeRole(const Aws::String& value) { SetNodeRole(value); return *this;} /** *

The Amazon Resource Name (ARN) of the IAM role to associate with your node * group. The Amazon EKS worker node kubelet daemon makes calls to AWS * APIs on your behalf. Worker nodes receive permissions for these API calls * through an IAM instance profile and associated policies. Before you can launch * worker nodes and register them into a cluster, you must create an IAM role for * those worker nodes to use when they are launched. For more information, see Amazon * EKS Worker Node IAM Role in the Amazon EKS User Guide . If * you specify launchTemplate, then don't specify * IamInstanceProfile in your launch template, or the node group * deployment will fail. For more information about using launch templates with * Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithNodeRole(Aws::String&& value) { SetNodeRole(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the IAM role to associate with your node * group. The Amazon EKS worker node kubelet daemon makes calls to AWS * APIs on your behalf. Worker nodes receive permissions for these API calls * through an IAM instance profile and associated policies. Before you can launch * worker nodes and register them into a cluster, you must create an IAM role for * those worker nodes to use when they are launched. For more information, see Amazon * EKS Worker Node IAM Role in the Amazon EKS User Guide . If * you specify launchTemplate, then don't specify * IamInstanceProfile in your launch template, or the node group * deployment will fail. For more information about using launch templates with * Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithNodeRole(const char* value) { SetNodeRole(value); return *this;} /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline const Aws::Map& GetLabels() const{ return m_labels; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline bool LabelsHasBeenSet() const { return m_labelsHasBeenSet; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline void SetLabels(const Aws::Map& value) { m_labelsHasBeenSet = true; m_labels = value; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline void SetLabels(Aws::Map&& value) { m_labelsHasBeenSet = true; m_labels = std::move(value); } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& WithLabels(const Aws::Map& value) { SetLabels(value); return *this;} /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& WithLabels(Aws::Map&& value) { SetLabels(std::move(value)); return *this;} /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& AddLabels(const Aws::String& key, const Aws::String& value) { m_labelsHasBeenSet = true; m_labels.emplace(key, value); return *this; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& AddLabels(Aws::String&& key, const Aws::String& value) { m_labelsHasBeenSet = true; m_labels.emplace(std::move(key), value); return *this; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& AddLabels(const Aws::String& key, Aws::String&& value) { m_labelsHasBeenSet = true; m_labels.emplace(key, std::move(value)); return *this; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& AddLabels(Aws::String&& key, Aws::String&& value) { m_labelsHasBeenSet = true; m_labels.emplace(std::move(key), std::move(value)); return *this; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& AddLabels(const char* key, Aws::String&& value) { m_labelsHasBeenSet = true; m_labels.emplace(key, std::move(value)); return *this; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& AddLabels(Aws::String&& key, const char* value) { m_labelsHasBeenSet = true; m_labels.emplace(std::move(key), value); return *this; } /** *

The Kubernetes labels to be applied to the nodes in the node group when they * are created.

*/ inline CreateNodegroupRequest& AddLabels(const char* key, const char* value) { m_labelsHasBeenSet = true; m_labels.emplace(key, value); return *this; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline const Aws::Map& GetTags() const{ return m_tags; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline void SetTags(const Aws::Map& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline void SetTags(Aws::Map&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& WithTags(const Aws::Map& value) { SetTags(value); return *this;} /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& WithTags(Aws::Map&& value) { SetTags(std::move(value)); return *this;} /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& AddTags(const Aws::String& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& AddTags(Aws::String&& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& AddTags(const Aws::String& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& AddTags(Aws::String&& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), std::move(value)); return *this; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& AddTags(const char* key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& AddTags(Aws::String&& key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } /** *

The metadata to apply to the node group to assist with categorization and * organization. Each tag consists of a key and an optional value, both of which * you define. Node group tags do not propagate to any other resources associated * with the node group, such as the Amazon EC2 instances or subnets.

*/ inline CreateNodegroupRequest& AddTags(const char* key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } /** *

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

*/ inline const Aws::String& GetClientRequestToken() const{ return m_clientRequestToken; } /** *

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

*/ inline bool ClientRequestTokenHasBeenSet() const { return m_clientRequestTokenHasBeenSet; } /** *

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

*/ inline void SetClientRequestToken(const Aws::String& value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken = value; } /** *

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

*/ inline void SetClientRequestToken(Aws::String&& value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken = std::move(value); } /** *

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

*/ inline void SetClientRequestToken(const char* value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken.assign(value); } /** *

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

*/ inline CreateNodegroupRequest& WithClientRequestToken(const Aws::String& value) { SetClientRequestToken(value); return *this;} /** *

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

*/ inline CreateNodegroupRequest& WithClientRequestToken(Aws::String&& value) { SetClientRequestToken(std::move(value)); return *this;} /** *

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

*/ inline CreateNodegroupRequest& WithClientRequestToken(const char* value) { SetClientRequestToken(value); return *this;} /** *

An object representing a node group's launch template specification. If * specified, then do not specify instanceTypes, * diskSize, or remoteAccess. If specified, make sure * that the launch template meets the requirements in * launchTemplateSpecification.

*/ inline const LaunchTemplateSpecification& GetLaunchTemplate() const{ return m_launchTemplate; } /** *

An object representing a node group's launch template specification. If * specified, then do not specify instanceTypes, * diskSize, or remoteAccess. If specified, make sure * that the launch template meets the requirements in * launchTemplateSpecification.

*/ inline bool LaunchTemplateHasBeenSet() const { return m_launchTemplateHasBeenSet; } /** *

An object representing a node group's launch template specification. If * specified, then do not specify instanceTypes, * diskSize, or remoteAccess. If specified, make sure * that the launch template meets the requirements in * launchTemplateSpecification.

*/ inline void SetLaunchTemplate(const LaunchTemplateSpecification& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = value; } /** *

An object representing a node group's launch template specification. If * specified, then do not specify instanceTypes, * diskSize, or remoteAccess. If specified, make sure * that the launch template meets the requirements in * launchTemplateSpecification.

*/ inline void SetLaunchTemplate(LaunchTemplateSpecification&& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = std::move(value); } /** *

An object representing a node group's launch template specification. If * specified, then do not specify instanceTypes, * diskSize, or remoteAccess. If specified, make sure * that the launch template meets the requirements in * launchTemplateSpecification.

*/ inline CreateNodegroupRequest& WithLaunchTemplate(const LaunchTemplateSpecification& value) { SetLaunchTemplate(value); return *this;} /** *

An object representing a node group's launch template specification. If * specified, then do not specify instanceTypes, * diskSize, or remoteAccess. If specified, make sure * that the launch template meets the requirements in * launchTemplateSpecification.

*/ inline CreateNodegroupRequest& WithLaunchTemplate(LaunchTemplateSpecification&& value) { SetLaunchTemplate(std::move(value)); return *this;} /** *

The Kubernetes version to use for your managed nodes. By default, the * Kubernetes version of the cluster is used, and this is the only accepted * specified value. If you specify launchTemplate, and your launch * template uses a custom AMI, then don't specify version, or the node * group deployment will fail. For more information about using launch templates * with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline const Aws::String& GetVersion() const{ return m_version; } /** *

The Kubernetes version to use for your managed nodes. By default, the * Kubernetes version of the cluster is used, and this is the only accepted * specified value. If you specify launchTemplate, and your launch * template uses a custom AMI, then don't specify version, or the node * group deployment will fail. For more information about using launch templates * with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline bool VersionHasBeenSet() const { return m_versionHasBeenSet; } /** *

The Kubernetes version to use for your managed nodes. By default, the * Kubernetes version of the cluster is used, and this is the only accepted * specified value. If you specify launchTemplate, and your launch * template uses a custom AMI, then don't specify version, or the node * group deployment will fail. For more information about using launch templates * with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetVersion(const Aws::String& value) { m_versionHasBeenSet = true; m_version = value; } /** *

The Kubernetes version to use for your managed nodes. By default, the * Kubernetes version of the cluster is used, and this is the only accepted * specified value. If you specify launchTemplate, and your launch * template uses a custom AMI, then don't specify version, or the node * group deployment will fail. For more information about using launch templates * with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetVersion(Aws::String&& value) { m_versionHasBeenSet = true; m_version = std::move(value); } /** *

The Kubernetes version to use for your managed nodes. By default, the * Kubernetes version of the cluster is used, and this is the only accepted * specified value. If you specify launchTemplate, and your launch * template uses a custom AMI, then don't specify version, or the node * group deployment will fail. For more information about using launch templates * with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetVersion(const char* value) { m_versionHasBeenSet = true; m_version.assign(value); } /** *

The Kubernetes version to use for your managed nodes. By default, the * Kubernetes version of the cluster is used, and this is the only accepted * specified value. If you specify launchTemplate, and your launch * template uses a custom AMI, then don't specify version, or the node * group deployment will fail. For more information about using launch templates * with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithVersion(const Aws::String& value) { SetVersion(value); return *this;} /** *

The Kubernetes version to use for your managed nodes. By default, the * Kubernetes version of the cluster is used, and this is the only accepted * specified value. If you specify launchTemplate, and your launch * template uses a custom AMI, then don't specify version, or the node * group deployment will fail. For more information about using launch templates * with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithVersion(Aws::String&& value) { SetVersion(std::move(value)); return *this;} /** *

The Kubernetes version to use for your managed nodes. By default, the * Kubernetes version of the cluster is used, and this is the only accepted * specified value. If you specify launchTemplate, and your launch * template uses a custom AMI, then don't specify version, or the node * group deployment will fail. For more information about using launch templates * with Amazon EKS, see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithVersion(const char* value) { SetVersion(value); return *this;} /** *

The AMI version of the Amazon EKS-optimized AMI to use with your node group. * By default, the latest available AMI version for the node group's current * Kubernetes version is used. For more information, see Amazon * EKS-Optimized Linux AMI Versions in the Amazon EKS User Guide. If you * specify launchTemplate, and your launch template uses a custom AMI, * then don't specify releaseVersion, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline const Aws::String& GetReleaseVersion() const{ return m_releaseVersion; } /** *

The AMI version of the Amazon EKS-optimized AMI to use with your node group. * By default, the latest available AMI version for the node group's current * Kubernetes version is used. For more information, see Amazon * EKS-Optimized Linux AMI Versions in the Amazon EKS User Guide. If you * specify launchTemplate, and your launch template uses a custom AMI, * then don't specify releaseVersion, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline bool ReleaseVersionHasBeenSet() const { return m_releaseVersionHasBeenSet; } /** *

The AMI version of the Amazon EKS-optimized AMI to use with your node group. * By default, the latest available AMI version for the node group's current * Kubernetes version is used. For more information, see Amazon * EKS-Optimized Linux AMI Versions in the Amazon EKS User Guide. If you * specify launchTemplate, and your launch template uses a custom AMI, * then don't specify releaseVersion, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetReleaseVersion(const Aws::String& value) { m_releaseVersionHasBeenSet = true; m_releaseVersion = value; } /** *

The AMI version of the Amazon EKS-optimized AMI to use with your node group. * By default, the latest available AMI version for the node group's current * Kubernetes version is used. For more information, see Amazon * EKS-Optimized Linux AMI Versions in the Amazon EKS User Guide. If you * specify launchTemplate, and your launch template uses a custom AMI, * then don't specify releaseVersion, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetReleaseVersion(Aws::String&& value) { m_releaseVersionHasBeenSet = true; m_releaseVersion = std::move(value); } /** *

The AMI version of the Amazon EKS-optimized AMI to use with your node group. * By default, the latest available AMI version for the node group's current * Kubernetes version is used. For more information, see Amazon * EKS-Optimized Linux AMI Versions in the Amazon EKS User Guide. If you * specify launchTemplate, and your launch template uses a custom AMI, * then don't specify releaseVersion, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline void SetReleaseVersion(const char* value) { m_releaseVersionHasBeenSet = true; m_releaseVersion.assign(value); } /** *

The AMI version of the Amazon EKS-optimized AMI to use with your node group. * By default, the latest available AMI version for the node group's current * Kubernetes version is used. For more information, see Amazon * EKS-Optimized Linux AMI Versions in the Amazon EKS User Guide. If you * specify launchTemplate, and your launch template uses a custom AMI, * then don't specify releaseVersion, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithReleaseVersion(const Aws::String& value) { SetReleaseVersion(value); return *this;} /** *

The AMI version of the Amazon EKS-optimized AMI to use with your node group. * By default, the latest available AMI version for the node group's current * Kubernetes version is used. For more information, see Amazon * EKS-Optimized Linux AMI Versions in the Amazon EKS User Guide. If you * specify launchTemplate, and your launch template uses a custom AMI, * then don't specify releaseVersion, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithReleaseVersion(Aws::String&& value) { SetReleaseVersion(std::move(value)); return *this;} /** *

The AMI version of the Amazon EKS-optimized AMI to use with your node group. * By default, the latest available AMI version for the node group's current * Kubernetes version is used. For more information, see Amazon * EKS-Optimized Linux AMI Versions in the Amazon EKS User Guide. If you * specify launchTemplate, and your launch template uses a custom AMI, * then don't specify releaseVersion, or the node group deployment * will fail. For more information about using launch templates with Amazon EKS, * see Launch * template support in the Amazon EKS User Guide.

*/ inline CreateNodegroupRequest& WithReleaseVersion(const char* value) { SetReleaseVersion(value); return *this;} private: Aws::String m_clusterName; bool m_clusterNameHasBeenSet; Aws::String m_nodegroupName; bool m_nodegroupNameHasBeenSet; NodegroupScalingConfig m_scalingConfig; bool m_scalingConfigHasBeenSet; int m_diskSize; bool m_diskSizeHasBeenSet; Aws::Vector m_subnets; bool m_subnetsHasBeenSet; Aws::Vector m_instanceTypes; bool m_instanceTypesHasBeenSet; AMITypes m_amiType; bool m_amiTypeHasBeenSet; RemoteAccessConfig m_remoteAccess; bool m_remoteAccessHasBeenSet; Aws::String m_nodeRole; bool m_nodeRoleHasBeenSet; Aws::Map m_labels; bool m_labelsHasBeenSet; Aws::Map m_tags; bool m_tagsHasBeenSet; Aws::String m_clientRequestToken; bool m_clientRequestTokenHasBeenSet; LaunchTemplateSpecification m_launchTemplate; bool m_launchTemplateHasBeenSet; Aws::String m_version; bool m_versionHasBeenSet; Aws::String m_releaseVersion; bool m_releaseVersionHasBeenSet; }; } // namespace Model } // namespace EKS } // namespace Aws