From 06b42975818f22fe16ded536a8c8c3d0819e24c4 Mon Sep 17 00:00:00 2001 From: MyannaHarris Date: Thu, 4 Nov 2021 11:47:38 -0700 Subject: [PATCH] [AWS EKS - Scale-to-0] Add EKS service and DescribeNodegroup API call This change adds the AWS EKS service to the vendor service directory and adds the DescribeNodegroup API call to the AWSWrapper. This will be used for the AWS scale-to-0 project to get more information about empty managed nodegroups Related proposal: https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/proposals/circumvent-tag-limit-aws.md --- .../aws/aws_cloud_provider_test.go | 10 +- .../cloudprovider/aws/aws_manager.go | 3 +- .../cloudprovider/aws/aws_manager_test.go | 6 +- .../cloudprovider/aws/aws_wrapper.go | 66 + .../cloudprovider/aws/aws_wrapper_test.go | 171 +- .../aws/instance_type_cache_test.go | 2 +- cluster-autoscaler/go.mod | 2 + .../aws/aws-sdk-go/service/eks/api.go | 10716 ++++++++++++++++ .../aws/aws-sdk-go/service/eks/doc.go | 40 + .../aws/aws-sdk-go/service/eks/errors.go | 101 + .../aws/aws-sdk-go/service/eks/service.go | 104 + .../aws/aws-sdk-go/service/eks/waiters.go | 331 + cluster-autoscaler/vendor/modules.txt | 2 + 13 files changed, 11543 insertions(+), 11 deletions(-) create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/api.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/doc.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/errors.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/service.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/waiters.go diff --git a/cluster-autoscaler/cloudprovider/aws/aws_cloud_provider_test.go b/cluster-autoscaler/cloudprovider/aws/aws_cloud_provider_test.go index d92be0060c..8287142836 100644 --- a/cluster-autoscaler/cloudprovider/aws/aws_cloud_provider_test.go +++ b/cluster-autoscaler/cloudprovider/aws/aws_cloud_provider_test.go @@ -38,8 +38,8 @@ var testAwsManager = &AwsManager{ awsService: testAwsService, } -func newTestAwsManagerWithMockServices(mockAutoScaling autoScalingI, mockEC2 ec2I, autoDiscoverySpecs []asgAutoDiscoveryConfig) *AwsManager { - awsService := awsWrapper{mockAutoScaling, mockEC2} +func newTestAwsManagerWithMockServices(mockAutoScaling autoScalingI, mockEC2 ec2I, mockEKS eksI, autoDiscoverySpecs []asgAutoDiscoveryConfig) *AwsManager { + awsService := awsWrapper{mockAutoScaling, mockEC2, mockEKS} return &AwsManager{ awsService: awsService, asgCache: &asgCache{ @@ -56,13 +56,13 @@ func newTestAwsManagerWithMockServices(mockAutoScaling autoScalingI, mockEC2 ec2 } func newTestAwsManagerWithAsgs(t *testing.T, mockAutoScaling autoScalingI, mockEC2 ec2I, specs []string) *AwsManager { - m := newTestAwsManagerWithMockServices(mockAutoScaling, mockEC2, nil) + m := newTestAwsManagerWithMockServices(mockAutoScaling, mockEC2, nil, nil) m.asgCache.parseExplicitAsgs(specs) return m } func newTestAwsManagerWithAutoAsgs(t *testing.T, mockAutoScaling autoScalingI, mockEC2 ec2I, specs []string, autoDiscoverySpecs []asgAutoDiscoveryConfig) *AwsManager { - m := newTestAwsManagerWithMockServices(mockAutoScaling, mockEC2, autoDiscoverySpecs) + m := newTestAwsManagerWithMockServices(mockAutoScaling, mockEC2, nil, autoDiscoverySpecs) m.asgCache.parseExplicitAsgs(specs) return m } @@ -524,7 +524,7 @@ func TestDeleteNodesAfterMultipleRefreshes(t *testing.T) { func TestGetResourceLimiter(t *testing.T) { mockAutoScaling := &autoScalingMock{} mockEC2 := &ec2Mock{} - m := newTestAwsManagerWithMockServices(mockAutoScaling, mockEC2, nil) + m := newTestAwsManagerWithMockServices(mockAutoScaling, mockEC2, nil, nil) provider := testProvider(t, m) _, err := provider.GetResourceLimiter() diff --git a/cluster-autoscaler/cloudprovider/aws/aws_manager.go b/cluster-autoscaler/cloudprovider/aws/aws_manager.go index d36bf1da76..58237c0524 100644 --- a/cluster-autoscaler/cloudprovider/aws/aws_manager.go +++ b/cluster-autoscaler/cloudprovider/aws/aws_manager.go @@ -34,6 +34,7 @@ import ( "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/autoscaling" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/aws/aws-sdk-go/service/eks" "gopkg.in/gcfg.v1" apiv1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -194,7 +195,7 @@ func createAWSManagerInternal( return nil, err } - awsService = &awsWrapper{autoscaling.New(sess), ec2.New(sess)} + awsService = &awsWrapper{autoscaling.New(sess), ec2.New(sess), eks.New(sess)} } specs, err := parseASGAutoDiscoverySpecs(discoveryOpts) diff --git a/cluster-autoscaler/cloudprovider/aws/aws_manager_test.go b/cluster-autoscaler/cloudprovider/aws/aws_manager_test.go index 7a8e91351a..16b7e11856 100644 --- a/cluster-autoscaler/cloudprovider/aws/aws_manager_test.go +++ b/cluster-autoscaler/cloudprovider/aws/aws_manager_test.go @@ -330,7 +330,7 @@ func TestFetchExplicitAsgs(t *testing.T) { defer resetAWSRegion(os.LookupEnv("AWS_REGION")) os.Setenv("AWS_REGION", "fanghorn") instanceTypes, _ := GetStaticEC2InstanceTypes() - m, err := createAWSManagerInternal(nil, do, &awsWrapper{a, nil}, instanceTypes) + m, err := createAWSManagerInternal(nil, do, &awsWrapper{a, nil, nil}, instanceTypes) assert.NoError(t, err) asgs := m.asgCache.Get() @@ -395,7 +395,7 @@ func TestGetASGTemplate(t *testing.T) { instanceTypes, _ := GetStaticEC2InstanceTypes() do := cloudprovider.NodeGroupDiscoveryOptions{} - m, err := createAWSManagerInternal(nil, do, &awsWrapper{nil, e}, instanceTypes) + m, err := createAWSManagerInternal(nil, do, &awsWrapper{nil, e, nil}, instanceTypes) origGetInstanceTypeFunc := getInstanceTypeForAsg defer func() { getInstanceTypeForAsg = origGetInstanceTypeFunc }() getInstanceTypeForAsg = func(m *asgCache, asg *asg) (string, error) { @@ -483,7 +483,7 @@ func TestFetchAutoAsgs(t *testing.T) { os.Setenv("AWS_REGION", "fanghorn") // fetchAutoASGs is called at manager creation time, via forceRefresh instanceTypes, _ := GetStaticEC2InstanceTypes() - m, err := createAWSManagerInternal(nil, do, &awsWrapper{a, nil}, instanceTypes) + m, err := createAWSManagerInternal(nil, do, &awsWrapper{a, nil, nil}, instanceTypes) assert.NoError(t, err) asgs := m.asgCache.Get() diff --git a/cluster-autoscaler/cloudprovider/aws/aws_wrapper.go b/cluster-autoscaler/cloudprovider/aws/aws_wrapper.go index 3ef87f91fa..86453300b7 100644 --- a/cluster-autoscaler/cloudprovider/aws/aws_wrapper.go +++ b/cluster-autoscaler/cloudprovider/aws/aws_wrapper.go @@ -18,11 +18,14 @@ package aws import ( "fmt" + "strconv" "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/autoscaling" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/aws/aws-sdk-go/service/eks" + apiv1 "k8s.io/api/core/v1" klog "k8s.io/klog/v2" ) @@ -40,10 +43,73 @@ type ec2I interface { DescribeLaunchTemplateVersions(input *ec2.DescribeLaunchTemplateVersionsInput) (*ec2.DescribeLaunchTemplateVersionsOutput, error) } +// eksI is the interface that represents a specific aspect of EKS (Elastic Kubernetes Service) which is provided by AWS SDK for use in CA +type eksI interface { + DescribeNodegroup(input *eks.DescribeNodegroupInput) (*eks.DescribeNodegroupOutput, error) +} + // awsWrapper provides several utility methods over the services provided by the AWS SDK type awsWrapper struct { autoScalingI ec2I + eksI +} + +func (m *awsWrapper) getManagedNodegroupInfo(nodegroupName string, clusterName string) ([]apiv1.Taint, map[string]string, error) { + params := &eks.DescribeNodegroupInput{ + ClusterName: &clusterName, + NodegroupName: &nodegroupName, + } + start := time.Now() + r, err := m.DescribeNodegroup(params) + observeAWSRequest("DescribeNodegroup", err, start) + if err != nil { + return nil, nil, err + } + + taints := make([]apiv1.Taint, 0) + labels := make(map[string]string) + + // Labels will include diskSize, amiType, capacityType, version + if r.Nodegroup.DiskSize != nil { + labels["diskSize"] = strconv.FormatInt(*r.Nodegroup.DiskSize, 10) + } + + if r.Nodegroup.AmiType != nil && len(*r.Nodegroup.AmiType) > 0 { + labels["amiType"] = *r.Nodegroup.AmiType + } + + if r.Nodegroup.CapacityType != nil && len(*r.Nodegroup.CapacityType) > 0 { + labels["capacityType"] = *r.Nodegroup.CapacityType + } + + if r.Nodegroup.Version != nil && len(*r.Nodegroup.Version) > 0 { + labels["k8sVersion"] = *r.Nodegroup.Version + } + + if r.Nodegroup.Labels != nil && len(r.Nodegroup.Labels) > 0 { + labelsMap := r.Nodegroup.Labels + for k, v := range labelsMap { + if v != nil { + labels[k] = *v + } + } + } + + if r.Nodegroup.Taints != nil && len(r.Nodegroup.Taints) > 0 { + taintList := r.Nodegroup.Taints + for _, taint := range taintList { + if taint != nil && taint.Effect != nil && taint.Key != nil && taint.Value != nil { + taints = append(taints, apiv1.Taint{ + Key: *taint.Key, + Value: *taint.Value, + Effect: apiv1.TaintEffect(*taint.Effect), + }) + } + } + } + + return taints, labels, nil } func (m *awsWrapper) getInstanceTypeByLaunchConfigNames(launchConfigToQuery []*string) (map[string]string, error) { diff --git a/cluster-autoscaler/cloudprovider/aws/aws_wrapper_test.go b/cluster-autoscaler/cloudprovider/aws/aws_wrapper_test.go index 86c12efab3..4fc2778db0 100644 --- a/cluster-autoscaler/cloudprovider/aws/aws_wrapper_test.go +++ b/cluster-autoscaler/cloudprovider/aws/aws_wrapper_test.go @@ -19,13 +19,16 @@ package aws import ( "fmt" "os" + "strconv" "testing" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/autoscaling" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/aws/aws-sdk-go/service/eks" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + apiv1 "k8s.io/api/core/v1" ) type autoScalingMock struct { @@ -66,13 +69,178 @@ func (e *ec2Mock) DescribeLaunchTemplateVersions(i *ec2.DescribeLaunchTemplateVe return args.Get(0).(*ec2.DescribeLaunchTemplateVersionsOutput), nil } -var testAwsService = awsWrapper{&autoScalingMock{}, &ec2Mock{}} +type eksMock struct { + mock.Mock +} + +func (k *eksMock) DescribeNodegroup(i *eks.DescribeNodegroupInput) (*eks.DescribeNodegroupOutput, error) { + args := k.Called(i) + return args.Get(0).(*eks.DescribeNodegroupOutput), nil +} + +var testAwsService = awsWrapper{&autoScalingMock{}, &ec2Mock{}, &eksMock{}} + +func TestGetManagedNodegroup(t *testing.T) { + k := &eksMock{} + awsWrapper := &awsWrapper{ + autoScalingI: nil, + ec2I: nil, + eksI: k, + } + + labelKey1 := "labelKey 1" + labelKey2 := "labelKey 2" + labelValue1 := "testValue 1" + labelValue2 := "testValue 2" + nodegroupName := "testNodegroup" + clusterName := "testCluster" + + taintEffect1 := "effect 1" + taintKey1 := "key 1" + taintValue1 := "value 1" + taint1 := eks.Taint{ + Effect: &taintEffect1, + Key: &taintKey1, + Value: &taintValue1, + } + + taintEffect2 := "effect 2" + taintKey2 := "key 2" + taintValue2 := "value 2" + taint2 := eks.Taint{ + Effect: &taintEffect2, + Key: &taintKey2, + Value: &taintValue2, + } + + amiType := "testAmiType" + diskSize := int64(100) + capacityType := "testCapacityType" + k8sVersion := "1.19" + + // Create test nodegroup + testNodegroup := eks.Nodegroup{ + AmiType: &amiType, + ClusterName: &clusterName, + DiskSize: &diskSize, + Labels: map[string]*string{labelKey1: &labelValue1, labelKey2: &labelValue2}, + NodegroupName: &nodegroupName, + CapacityType: &capacityType, + Version: &k8sVersion, + Taints: []*eks.Taint{&taint1, &taint2}, + } + + k.On("DescribeNodegroup", &eks.DescribeNodegroupInput{ + ClusterName: &clusterName, + NodegroupName: &nodegroupName, + }).Return(&eks.DescribeNodegroupOutput{Nodegroup: &testNodegroup}) + + taintList, labelMap, err := awsWrapper.getManagedNodegroupInfo(nodegroupName, clusterName) + assert.Nil(t, err) + assert.Equal(t, len(taintList), 2) + assert.Equal(t, taintList[0].Effect, apiv1.TaintEffect(taintEffect1)) + assert.Equal(t, taintList[0].Key, taintKey1) + assert.Equal(t, taintList[0].Value, taintValue1) + assert.Equal(t, taintList[1].Effect, apiv1.TaintEffect(taintEffect2)) + assert.Equal(t, taintList[1].Key, taintKey2) + assert.Equal(t, taintList[1].Value, taintValue2) + assert.Equal(t, len(labelMap), 6) + assert.Equal(t, labelMap[labelKey1], labelValue1) + assert.Equal(t, labelMap[labelKey2], labelValue2) + assert.Equal(t, labelMap["diskSize"], strconv.FormatInt(diskSize, 10)) + assert.Equal(t, labelMap["amiType"], amiType) + assert.Equal(t, labelMap["capacityType"], capacityType) + assert.Equal(t, labelMap["k8sVersion"], k8sVersion) +} + +func TestGetManagedNodegroupWithNilValues(t *testing.T) { + k := &eksMock{} + awsWrapper := &awsWrapper{ + autoScalingI: nil, + ec2I: nil, + eksI: k, + } + + nodegroupName := "testNodegroup" + clusterName := "testCluster" + + amiType := "testAmiType" + capacityType := "testCapacityType" + k8sVersion := "1.19" + + // Create test nodegroup + testNodegroup := eks.Nodegroup{ + AmiType: &amiType, + ClusterName: &clusterName, + DiskSize: nil, + Labels: nil, + NodegroupName: &nodegroupName, + CapacityType: &capacityType, + Version: &k8sVersion, + Taints: nil, + } + + k.On("DescribeNodegroup", &eks.DescribeNodegroupInput{ + ClusterName: &clusterName, + NodegroupName: &nodegroupName, + }).Return(&eks.DescribeNodegroupOutput{Nodegroup: &testNodegroup}) + + taintList, labelMap, err := awsWrapper.getManagedNodegroupInfo(nodegroupName, clusterName) + assert.Nil(t, err) + assert.Equal(t, len(taintList), 0) + assert.Equal(t, len(labelMap), 3) + assert.Equal(t, labelMap["amiType"], amiType) + assert.Equal(t, labelMap["capacityType"], capacityType) + assert.Equal(t, labelMap["k8sVersion"], k8sVersion) +} + +func TestGetManagedNodegroupWithEmptyValues(t *testing.T) { + k := &eksMock{} + awsWrapper := &awsWrapper{ + autoScalingI: nil, + ec2I: nil, + eksI: k, + } + + nodegroupName := "testNodegroup" + clusterName := "testCluster" + + amiType := "testAmiType" + capacityType := "testCapacityType" + k8sVersion := "1.19" + + // Create test nodegroup + testNodegroup := eks.Nodegroup{ + AmiType: &amiType, + ClusterName: &clusterName, + DiskSize: nil, + Labels: make(map[string]*string), + NodegroupName: &nodegroupName, + CapacityType: &capacityType, + Version: &k8sVersion, + Taints: make([]*eks.Taint, 0), + } + + k.On("DescribeNodegroup", &eks.DescribeNodegroupInput{ + ClusterName: &clusterName, + NodegroupName: &nodegroupName, + }).Return(&eks.DescribeNodegroupOutput{Nodegroup: &testNodegroup}) + + taintList, labelMap, err := awsWrapper.getManagedNodegroupInfo(nodegroupName, clusterName) + assert.Nil(t, err) + assert.Equal(t, len(taintList), 0) + assert.Equal(t, len(labelMap), 3) + assert.Equal(t, labelMap["amiType"], amiType) + assert.Equal(t, labelMap["capacityType"], capacityType) + assert.Equal(t, labelMap["k8sVersion"], k8sVersion) +} func TestMoreThen100Groups(t *testing.T) { a := &autoScalingMock{} awsWrapper := &awsWrapper{ autoScalingI: a, ec2I: nil, + eksI: nil, } // Generate 101 ASG names @@ -152,6 +320,7 @@ func TestGetInstanceTypesForAsgs(t *testing.T) { awsWrapper := &awsWrapper{ autoScalingI: a, ec2I: e, + eksI: nil, } cases := []struct { diff --git a/cluster-autoscaler/cloudprovider/aws/instance_type_cache_test.go b/cluster-autoscaler/cloudprovider/aws/instance_type_cache_test.go index 45fcc844a9..79e4fae98e 100644 --- a/cluster-autoscaler/cloudprovider/aws/instance_type_cache_test.go +++ b/cluster-autoscaler/cloudprovider/aws/instance_type_cache_test.go @@ -76,7 +76,7 @@ func TestLTVersionChange(t *testing.T) { }, fakeClock, ) - m := newAsgInstanceTypeCacheWithClock(&awsWrapper{a, e}, fakeClock, fakeStore) + m := newAsgInstanceTypeCacheWithClock(&awsWrapper{a, e, nil}, fakeClock, fakeStore) for i := 0; i < 2; i++ { err := m.populate([]*asg{ diff --git a/cluster-autoscaler/go.mod b/cluster-autoscaler/go.mod index 86a71970cd..6cbaa92005 100644 --- a/cluster-autoscaler/go.mod +++ b/cluster-autoscaler/go.mod @@ -41,6 +41,8 @@ require ( k8s.io/utils v0.0.0-20210802155522-efc7438f0176 ) +replace github.com/aws/aws-sdk-go/service/eks => github.com/aws/aws-sdk-go/service/eks v1.38.49 + replace github.com/digitalocean/godo => github.com/digitalocean/godo v1.27.0 replace github.com/rancher/go-rancher => github.com/rancher/go-rancher v0.1.0 diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/api.go new file mode 100644 index 0000000000..56cd9ae935 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/api.go @@ -0,0 +1,10716 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package eks + +import ( + "fmt" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" + "github.com/aws/aws-sdk-go/private/protocol/restjson" +) + +const opAssociateEncryptionConfig = "AssociateEncryptionConfig" + +// AssociateEncryptionConfigRequest generates a "aws/request.Request" representing the +// client's request for the AssociateEncryptionConfig operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateEncryptionConfig for more information on using the AssociateEncryptionConfig +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateEncryptionConfigRequest method. +// req, resp := client.AssociateEncryptionConfigRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AssociateEncryptionConfig +func (c *EKS) AssociateEncryptionConfigRequest(input *AssociateEncryptionConfigInput) (req *request.Request, output *AssociateEncryptionConfigOutput) { + op := &request.Operation{ + Name: opAssociateEncryptionConfig, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/encryption-config/associate", + } + + if input == nil { + input = &AssociateEncryptionConfigInput{} + } + + output = &AssociateEncryptionConfigOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateEncryptionConfig API operation for Amazon Elastic Kubernetes Service. +// +// Associate encryption configuration to an existing cluster. +// +// You can use this API to enable encryption on existing clusters which do not +// have encryption already enabled. This allows you to implement a defense-in-depth +// security strategy without migrating applications to new EKS clusters. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation AssociateEncryptionConfig for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AssociateEncryptionConfig +func (c *EKS) AssociateEncryptionConfig(input *AssociateEncryptionConfigInput) (*AssociateEncryptionConfigOutput, error) { + req, out := c.AssociateEncryptionConfigRequest(input) + return out, req.Send() +} + +// AssociateEncryptionConfigWithContext is the same as AssociateEncryptionConfig with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateEncryptionConfig for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) AssociateEncryptionConfigWithContext(ctx aws.Context, input *AssociateEncryptionConfigInput, opts ...request.Option) (*AssociateEncryptionConfigOutput, error) { + req, out := c.AssociateEncryptionConfigRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateIdentityProviderConfig = "AssociateIdentityProviderConfig" + +// AssociateIdentityProviderConfigRequest generates a "aws/request.Request" representing the +// client's request for the AssociateIdentityProviderConfig operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateIdentityProviderConfig for more information on using the AssociateIdentityProviderConfig +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateIdentityProviderConfigRequest method. +// req, resp := client.AssociateIdentityProviderConfigRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AssociateIdentityProviderConfig +func (c *EKS) AssociateIdentityProviderConfigRequest(input *AssociateIdentityProviderConfigInput) (req *request.Request, output *AssociateIdentityProviderConfigOutput) { + op := &request.Operation{ + Name: opAssociateIdentityProviderConfig, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/identity-provider-configs/associate", + } + + if input == nil { + input = &AssociateIdentityProviderConfigInput{} + } + + output = &AssociateIdentityProviderConfigOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateIdentityProviderConfig API operation for Amazon Elastic Kubernetes Service. +// +// Associate an identity provider configuration to a cluster. +// +// If you want to authenticate identities using an identity provider, you can +// create an identity provider configuration and associate it to your cluster. +// After configuring authentication to your cluster you can create Kubernetes +// roles and clusterroles to assign permissions to the roles, and then bind +// the roles to the identities using Kubernetes rolebindings and clusterrolebindings. +// For more information see Using RBAC Authorization (https://kubernetes.io/docs/reference/access-authn-authz/rbac/) +// in the Kubernetes documentation. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation AssociateIdentityProviderConfig for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AssociateIdentityProviderConfig +func (c *EKS) AssociateIdentityProviderConfig(input *AssociateIdentityProviderConfigInput) (*AssociateIdentityProviderConfigOutput, error) { + req, out := c.AssociateIdentityProviderConfigRequest(input) + return out, req.Send() +} + +// AssociateIdentityProviderConfigWithContext is the same as AssociateIdentityProviderConfig with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateIdentityProviderConfig for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) AssociateIdentityProviderConfigWithContext(ctx aws.Context, input *AssociateIdentityProviderConfigInput, opts ...request.Option) (*AssociateIdentityProviderConfigOutput, error) { + req, out := c.AssociateIdentityProviderConfigRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateAddon = "CreateAddon" + +// CreateAddonRequest generates a "aws/request.Request" representing the +// client's request for the CreateAddon operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateAddon for more information on using the CreateAddon +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateAddonRequest method. +// req, resp := client.CreateAddonRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateAddon +func (c *EKS) CreateAddonRequest(input *CreateAddonInput) (req *request.Request, output *CreateAddonOutput) { + op := &request.Operation{ + Name: opCreateAddon, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/addons", + } + + if input == nil { + input = &CreateAddonInput{} + } + + output = &CreateAddonOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateAddon API operation for Amazon Elastic Kubernetes Service. +// +// Creates an Amazon EKS add-on. +// +// Amazon EKS add-ons help to automate the provisioning and lifecycle management +// of common operational software for Amazon EKS clusters. Amazon EKS add-ons +// can only be used with Amazon EKS clusters running version 1.18 with platform +// version eks.3 or later because add-ons rely on the Server-side Apply Kubernetes +// feature, which is only available in Kubernetes 1.18 and later. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation CreateAddon for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateAddon +func (c *EKS) CreateAddon(input *CreateAddonInput) (*CreateAddonOutput, error) { + req, out := c.CreateAddonRequest(input) + return out, req.Send() +} + +// CreateAddonWithContext is the same as CreateAddon with the addition of +// the ability to pass a context and additional request options. +// +// See CreateAddon for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) CreateAddonWithContext(ctx aws.Context, input *CreateAddonInput, opts ...request.Option) (*CreateAddonOutput, error) { + req, out := c.CreateAddonRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateCluster = "CreateCluster" + +// CreateClusterRequest generates a "aws/request.Request" representing the +// client's request for the CreateCluster operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateCluster for more information on using the CreateCluster +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateClusterRequest method. +// req, resp := client.CreateClusterRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateCluster +func (c *EKS) CreateClusterRequest(input *CreateClusterInput) (req *request.Request, output *CreateClusterOutput) { + op := &request.Operation{ + Name: opCreateCluster, + HTTPMethod: "POST", + HTTPPath: "/clusters", + } + + if input == nil { + input = &CreateClusterInput{} + } + + output = &CreateClusterOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateCluster API operation for Amazon Elastic Kubernetes Service. +// +// Creates an Amazon EKS control plane. +// +// The Amazon EKS control plane consists of control plane instances that run +// the Kubernetes software, such as etcd and the API server. The control plane +// runs in an account managed by AWS, and the Kubernetes API is exposed via +// the Amazon EKS API server endpoint. Each Amazon EKS cluster control plane +// is single-tenant and unique and runs on its own set of Amazon EC2 instances. +// +// The cluster control plane is provisioned across multiple Availability Zones +// and fronted by an Elastic Load Balancing Network Load Balancer. Amazon EKS +// also provisions elastic network interfaces in your VPC subnets to provide +// connectivity from the control plane instances to the nodes (for example, +// to support kubectl exec, logs, and proxy data flows). +// +// Amazon EKS nodes run in your AWS account and connect to your cluster's control +// plane via the Kubernetes API server endpoint and a certificate file that +// is created for your cluster. +// +// Cluster creation typically takes several minutes. After you create an Amazon +// EKS cluster, you must configure your Kubernetes tooling to communicate with +// the API server and launch nodes into your cluster. For more information, +// see Managing Cluster Authentication (https://docs.aws.amazon.com/eks/latest/userguide/managing-auth.html) +// and Launching Amazon EKS nodes (https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html) +// in the Amazon EKS User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation CreateCluster for usage and error information. +// +// Returned Error Types: +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceLimitExceededException +// You have encountered a service limit on the specified resource. +// +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// * UnsupportedAvailabilityZoneException +// At least one of your specified cluster subnets is in an Availability Zone +// that does not support Amazon EKS. The exception output specifies the supported +// Availability Zones for your account, from which you can choose subnets for +// your cluster. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateCluster +func (c *EKS) CreateCluster(input *CreateClusterInput) (*CreateClusterOutput, error) { + req, out := c.CreateClusterRequest(input) + return out, req.Send() +} + +// CreateClusterWithContext is the same as CreateCluster with the addition of +// the ability to pass a context and additional request options. +// +// See CreateCluster for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) CreateClusterWithContext(ctx aws.Context, input *CreateClusterInput, opts ...request.Option) (*CreateClusterOutput, error) { + req, out := c.CreateClusterRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateFargateProfile = "CreateFargateProfile" + +// CreateFargateProfileRequest generates a "aws/request.Request" representing the +// client's request for the CreateFargateProfile operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateFargateProfile for more information on using the CreateFargateProfile +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateFargateProfileRequest method. +// req, resp := client.CreateFargateProfileRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateFargateProfile +func (c *EKS) CreateFargateProfileRequest(input *CreateFargateProfileInput) (req *request.Request, output *CreateFargateProfileOutput) { + op := &request.Operation{ + Name: opCreateFargateProfile, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/fargate-profiles", + } + + if input == nil { + input = &CreateFargateProfileInput{} + } + + output = &CreateFargateProfileOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateFargateProfile API operation for Amazon Elastic Kubernetes Service. +// +// Creates an AWS Fargate profile for your Amazon EKS cluster. You must have +// at least one Fargate profile in a cluster to be able to run pods on Fargate. +// +// The Fargate profile allows an administrator to declare which pods run on +// Fargate and specify which pods run on which Fargate profile. This declaration +// is done through the profile’s selectors. Each profile can have up to five +// selectors that contain a namespace and labels. A namespace is required for +// every selector. The label field consists of multiple optional key-value pairs. +// Pods that match the selectors are scheduled on Fargate. If a to-be-scheduled +// pod matches any of the selectors in the Fargate profile, then that pod is +// run on Fargate. +// +// When you create a Fargate profile, you must specify a pod execution role +// to use with the pods that are scheduled with the profile. This role is added +// to the cluster's Kubernetes Role Based Access Control (https://kubernetes.io/docs/admin/authorization/rbac/) +// (RBAC) for authorization so that the kubelet that is running on the Fargate +// infrastructure can register with your Amazon EKS cluster so that it can appear +// in your cluster as a node. The pod execution role also provides IAM permissions +// to the Fargate infrastructure to allow read access to Amazon ECR image repositories. +// For more information, see Pod Execution Role (https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) +// in the Amazon EKS User Guide. +// +// Fargate profiles are immutable. However, you can create a new updated profile +// to replace an existing profile and then delete the original after the updated +// profile has finished creating. +// +// If any Fargate profiles in a cluster are in the DELETING status, you must +// wait for that Fargate profile to finish deleting before you can create any +// other profiles in that cluster. +// +// For more information, see AWS Fargate Profile (https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html) +// in the Amazon EKS User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation CreateFargateProfile for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceLimitExceededException +// You have encountered a service limit on the specified resource. +// +// * UnsupportedAvailabilityZoneException +// At least one of your specified cluster subnets is in an Availability Zone +// that does not support Amazon EKS. The exception output specifies the supported +// Availability Zones for your account, from which you can choose subnets for +// your cluster. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateFargateProfile +func (c *EKS) CreateFargateProfile(input *CreateFargateProfileInput) (*CreateFargateProfileOutput, error) { + req, out := c.CreateFargateProfileRequest(input) + return out, req.Send() +} + +// CreateFargateProfileWithContext is the same as CreateFargateProfile with the addition of +// the ability to pass a context and additional request options. +// +// See CreateFargateProfile for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) CreateFargateProfileWithContext(ctx aws.Context, input *CreateFargateProfileInput, opts ...request.Option) (*CreateFargateProfileOutput, error) { + req, out := c.CreateFargateProfileRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateNodegroup = "CreateNodegroup" + +// CreateNodegroupRequest generates a "aws/request.Request" representing the +// client's request for the CreateNodegroup operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateNodegroup for more information on using the CreateNodegroup +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateNodegroupRequest method. +// req, resp := client.CreateNodegroupRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateNodegroup +func (c *EKS) CreateNodegroupRequest(input *CreateNodegroupInput) (req *request.Request, output *CreateNodegroupOutput) { + op := &request.Operation{ + Name: opCreateNodegroup, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/node-groups", + } + + if input == nil { + input = &CreateNodegroupInput{} + } + + output = &CreateNodegroupOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateNodegroup API operation for Amazon Elastic Kubernetes Service. +// +// Creates a managed node group for an Amazon EKS cluster. You can only create +// a node group for your cluster that is equal to the current Kubernetes version +// for the cluster. All node groups are created with the latest AMI release +// version for the respective minor Kubernetes version of the cluster, unless +// you deploy a custom AMI using a launch template. For more information about +// using launch templates, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html). +// +// An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and +// associated Amazon EC2 instances that are managed by AWS for an Amazon EKS +// cluster. Each node group uses a version of the Amazon EKS optimized Amazon +// Linux 2 AMI. For more information, see Managed Node Groups (https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) +// in the Amazon EKS User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation CreateNodegroup for usage and error information. +// +// Returned Error Types: +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceLimitExceededException +// You have encountered a service limit on the specified resource. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateNodegroup +func (c *EKS) CreateNodegroup(input *CreateNodegroupInput) (*CreateNodegroupOutput, error) { + req, out := c.CreateNodegroupRequest(input) + return out, req.Send() +} + +// CreateNodegroupWithContext is the same as CreateNodegroup with the addition of +// the ability to pass a context and additional request options. +// +// See CreateNodegroup for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) CreateNodegroupWithContext(ctx aws.Context, input *CreateNodegroupInput, opts ...request.Option) (*CreateNodegroupOutput, error) { + req, out := c.CreateNodegroupRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteAddon = "DeleteAddon" + +// DeleteAddonRequest generates a "aws/request.Request" representing the +// client's request for the DeleteAddon operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteAddon for more information on using the DeleteAddon +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteAddonRequest method. +// req, resp := client.DeleteAddonRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteAddon +func (c *EKS) DeleteAddonRequest(input *DeleteAddonInput) (req *request.Request, output *DeleteAddonOutput) { + op := &request.Operation{ + Name: opDeleteAddon, + HTTPMethod: "DELETE", + HTTPPath: "/clusters/{name}/addons/{addonName}", + } + + if input == nil { + input = &DeleteAddonInput{} + } + + output = &DeleteAddonOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteAddon API operation for Amazon Elastic Kubernetes Service. +// +// Delete an Amazon EKS add-on. +// +// When you remove the add-on, it will also be deleted from the cluster. You +// can always manually start an add-on on the cluster using the Kubernetes API. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DeleteAddon for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteAddon +func (c *EKS) DeleteAddon(input *DeleteAddonInput) (*DeleteAddonOutput, error) { + req, out := c.DeleteAddonRequest(input) + return out, req.Send() +} + +// DeleteAddonWithContext is the same as DeleteAddon with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteAddon for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DeleteAddonWithContext(ctx aws.Context, input *DeleteAddonInput, opts ...request.Option) (*DeleteAddonOutput, error) { + req, out := c.DeleteAddonRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteCluster = "DeleteCluster" + +// DeleteClusterRequest generates a "aws/request.Request" representing the +// client's request for the DeleteCluster operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteCluster for more information on using the DeleteCluster +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteClusterRequest method. +// req, resp := client.DeleteClusterRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteCluster +func (c *EKS) DeleteClusterRequest(input *DeleteClusterInput) (req *request.Request, output *DeleteClusterOutput) { + op := &request.Operation{ + Name: opDeleteCluster, + HTTPMethod: "DELETE", + HTTPPath: "/clusters/{name}", + } + + if input == nil { + input = &DeleteClusterInput{} + } + + output = &DeleteClusterOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteCluster API operation for Amazon Elastic Kubernetes Service. +// +// Deletes the Amazon EKS cluster control plane. +// +// If you have active services in your cluster that are associated with a load +// balancer, you must delete those services before deleting the cluster so that +// the load balancers are deleted properly. Otherwise, you can have orphaned +// resources in your VPC that prevent you from being able to delete the VPC. +// For more information, see Deleting a Cluster (https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html) +// in the Amazon EKS User Guide. +// +// If you have managed node groups or Fargate profiles attached to the cluster, +// you must delete them first. For more information, see DeleteNodegroup and +// DeleteFargateProfile. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DeleteCluster for usage and error information. +// +// Returned Error Types: +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteCluster +func (c *EKS) DeleteCluster(input *DeleteClusterInput) (*DeleteClusterOutput, error) { + req, out := c.DeleteClusterRequest(input) + return out, req.Send() +} + +// DeleteClusterWithContext is the same as DeleteCluster with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteCluster for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DeleteClusterWithContext(ctx aws.Context, input *DeleteClusterInput, opts ...request.Option) (*DeleteClusterOutput, error) { + req, out := c.DeleteClusterRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteFargateProfile = "DeleteFargateProfile" + +// DeleteFargateProfileRequest generates a "aws/request.Request" representing the +// client's request for the DeleteFargateProfile operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteFargateProfile for more information on using the DeleteFargateProfile +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteFargateProfileRequest method. +// req, resp := client.DeleteFargateProfileRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteFargateProfile +func (c *EKS) DeleteFargateProfileRequest(input *DeleteFargateProfileInput) (req *request.Request, output *DeleteFargateProfileOutput) { + op := &request.Operation{ + Name: opDeleteFargateProfile, + HTTPMethod: "DELETE", + HTTPPath: "/clusters/{name}/fargate-profiles/{fargateProfileName}", + } + + if input == nil { + input = &DeleteFargateProfileInput{} + } + + output = &DeleteFargateProfileOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteFargateProfile API operation for Amazon Elastic Kubernetes Service. +// +// Deletes an AWS Fargate profile. +// +// When you delete a Fargate profile, any pods running on Fargate that were +// created with the profile are deleted. If those pods match another Fargate +// profile, then they are scheduled on Fargate with that profile. If they no +// longer match any Fargate profiles, then they are not scheduled on Fargate +// and they may remain in a pending state. +// +// Only one Fargate profile in a cluster can be in the DELETING status at a +// time. You must wait for a Fargate profile to finish deleting before you can +// delete any other profiles in that cluster. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DeleteFargateProfile for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteFargateProfile +func (c *EKS) DeleteFargateProfile(input *DeleteFargateProfileInput) (*DeleteFargateProfileOutput, error) { + req, out := c.DeleteFargateProfileRequest(input) + return out, req.Send() +} + +// DeleteFargateProfileWithContext is the same as DeleteFargateProfile with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteFargateProfile for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DeleteFargateProfileWithContext(ctx aws.Context, input *DeleteFargateProfileInput, opts ...request.Option) (*DeleteFargateProfileOutput, error) { + req, out := c.DeleteFargateProfileRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteNodegroup = "DeleteNodegroup" + +// DeleteNodegroupRequest generates a "aws/request.Request" representing the +// client's request for the DeleteNodegroup operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteNodegroup for more information on using the DeleteNodegroup +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteNodegroupRequest method. +// req, resp := client.DeleteNodegroupRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteNodegroup +func (c *EKS) DeleteNodegroupRequest(input *DeleteNodegroupInput) (req *request.Request, output *DeleteNodegroupOutput) { + op := &request.Operation{ + Name: opDeleteNodegroup, + HTTPMethod: "DELETE", + HTTPPath: "/clusters/{name}/node-groups/{nodegroupName}", + } + + if input == nil { + input = &DeleteNodegroupInput{} + } + + output = &DeleteNodegroupOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteNodegroup API operation for Amazon Elastic Kubernetes Service. +// +// Deletes an Amazon EKS node group for a cluster. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DeleteNodegroup for usage and error information. +// +// Returned Error Types: +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteNodegroup +func (c *EKS) DeleteNodegroup(input *DeleteNodegroupInput) (*DeleteNodegroupOutput, error) { + req, out := c.DeleteNodegroupRequest(input) + return out, req.Send() +} + +// DeleteNodegroupWithContext is the same as DeleteNodegroup with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteNodegroup for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DeleteNodegroupWithContext(ctx aws.Context, input *DeleteNodegroupInput, opts ...request.Option) (*DeleteNodegroupOutput, error) { + req, out := c.DeleteNodegroupRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeAddon = "DescribeAddon" + +// DescribeAddonRequest generates a "aws/request.Request" representing the +// client's request for the DescribeAddon operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeAddon for more information on using the DescribeAddon +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeAddonRequest method. +// req, resp := client.DescribeAddonRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeAddon +func (c *EKS) DescribeAddonRequest(input *DescribeAddonInput) (req *request.Request, output *DescribeAddonOutput) { + op := &request.Operation{ + Name: opDescribeAddon, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/addons/{addonName}", + } + + if input == nil { + input = &DescribeAddonInput{} + } + + output = &DescribeAddonOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeAddon API operation for Amazon Elastic Kubernetes Service. +// +// Describes an Amazon EKS add-on. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DescribeAddon for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeAddon +func (c *EKS) DescribeAddon(input *DescribeAddonInput) (*DescribeAddonOutput, error) { + req, out := c.DescribeAddonRequest(input) + return out, req.Send() +} + +// DescribeAddonWithContext is the same as DescribeAddon with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeAddon for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DescribeAddonWithContext(ctx aws.Context, input *DescribeAddonInput, opts ...request.Option) (*DescribeAddonOutput, error) { + req, out := c.DescribeAddonRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeAddonVersions = "DescribeAddonVersions" + +// DescribeAddonVersionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeAddonVersions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeAddonVersions for more information on using the DescribeAddonVersions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeAddonVersionsRequest method. +// req, resp := client.DescribeAddonVersionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeAddonVersions +func (c *EKS) DescribeAddonVersionsRequest(input *DescribeAddonVersionsInput) (req *request.Request, output *DescribeAddonVersionsOutput) { + op := &request.Operation{ + Name: opDescribeAddonVersions, + HTTPMethod: "GET", + HTTPPath: "/addons/supported-versions", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeAddonVersionsInput{} + } + + output = &DescribeAddonVersionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeAddonVersions API operation for Amazon Elastic Kubernetes Service. +// +// Describes the Kubernetes versions that the add-on can be used with. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DescribeAddonVersions for usage and error information. +// +// Returned Error Types: +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeAddonVersions +func (c *EKS) DescribeAddonVersions(input *DescribeAddonVersionsInput) (*DescribeAddonVersionsOutput, error) { + req, out := c.DescribeAddonVersionsRequest(input) + return out, req.Send() +} + +// DescribeAddonVersionsWithContext is the same as DescribeAddonVersions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeAddonVersions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DescribeAddonVersionsWithContext(ctx aws.Context, input *DescribeAddonVersionsInput, opts ...request.Option) (*DescribeAddonVersionsOutput, error) { + req, out := c.DescribeAddonVersionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeAddonVersionsPages iterates over the pages of a DescribeAddonVersions operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeAddonVersions method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeAddonVersions operation. +// pageNum := 0 +// err := client.DescribeAddonVersionsPages(params, +// func(page *eks.DescribeAddonVersionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EKS) DescribeAddonVersionsPages(input *DescribeAddonVersionsInput, fn func(*DescribeAddonVersionsOutput, bool) bool) error { + return c.DescribeAddonVersionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeAddonVersionsPagesWithContext same as DescribeAddonVersionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DescribeAddonVersionsPagesWithContext(ctx aws.Context, input *DescribeAddonVersionsInput, fn func(*DescribeAddonVersionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeAddonVersionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeAddonVersionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeAddonVersionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeCluster = "DescribeCluster" + +// DescribeClusterRequest generates a "aws/request.Request" representing the +// client's request for the DescribeCluster operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeCluster for more information on using the DescribeCluster +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeClusterRequest method. +// req, resp := client.DescribeClusterRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeCluster +func (c *EKS) DescribeClusterRequest(input *DescribeClusterInput) (req *request.Request, output *DescribeClusterOutput) { + op := &request.Operation{ + Name: opDescribeCluster, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}", + } + + if input == nil { + input = &DescribeClusterInput{} + } + + output = &DescribeClusterOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeCluster API operation for Amazon Elastic Kubernetes Service. +// +// Returns descriptive information about an Amazon EKS cluster. +// +// The API server endpoint and certificate authority data returned by this operation +// are required for kubelet and kubectl to communicate with your Kubernetes +// API server. For more information, see Create a kubeconfig for Amazon EKS +// (https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html). +// +// The API server endpoint and certificate authority data aren't available until +// the cluster reaches the ACTIVE state. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DescribeCluster for usage and error information. +// +// Returned Error Types: +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeCluster +func (c *EKS) DescribeCluster(input *DescribeClusterInput) (*DescribeClusterOutput, error) { + req, out := c.DescribeClusterRequest(input) + return out, req.Send() +} + +// DescribeClusterWithContext is the same as DescribeCluster with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeCluster for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DescribeClusterWithContext(ctx aws.Context, input *DescribeClusterInput, opts ...request.Option) (*DescribeClusterOutput, error) { + req, out := c.DescribeClusterRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeFargateProfile = "DescribeFargateProfile" + +// DescribeFargateProfileRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFargateProfile operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFargateProfile for more information on using the DescribeFargateProfile +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFargateProfileRequest method. +// req, resp := client.DescribeFargateProfileRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeFargateProfile +func (c *EKS) DescribeFargateProfileRequest(input *DescribeFargateProfileInput) (req *request.Request, output *DescribeFargateProfileOutput) { + op := &request.Operation{ + Name: opDescribeFargateProfile, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/fargate-profiles/{fargateProfileName}", + } + + if input == nil { + input = &DescribeFargateProfileInput{} + } + + output = &DescribeFargateProfileOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFargateProfile API operation for Amazon Elastic Kubernetes Service. +// +// Returns descriptive information about an AWS Fargate profile. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DescribeFargateProfile for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeFargateProfile +func (c *EKS) DescribeFargateProfile(input *DescribeFargateProfileInput) (*DescribeFargateProfileOutput, error) { + req, out := c.DescribeFargateProfileRequest(input) + return out, req.Send() +} + +// DescribeFargateProfileWithContext is the same as DescribeFargateProfile with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFargateProfile for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DescribeFargateProfileWithContext(ctx aws.Context, input *DescribeFargateProfileInput, opts ...request.Option) (*DescribeFargateProfileOutput, error) { + req, out := c.DescribeFargateProfileRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeIdentityProviderConfig = "DescribeIdentityProviderConfig" + +// DescribeIdentityProviderConfigRequest generates a "aws/request.Request" representing the +// client's request for the DescribeIdentityProviderConfig operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeIdentityProviderConfig for more information on using the DescribeIdentityProviderConfig +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeIdentityProviderConfigRequest method. +// req, resp := client.DescribeIdentityProviderConfigRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeIdentityProviderConfig +func (c *EKS) DescribeIdentityProviderConfigRequest(input *DescribeIdentityProviderConfigInput) (req *request.Request, output *DescribeIdentityProviderConfigOutput) { + op := &request.Operation{ + Name: opDescribeIdentityProviderConfig, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/identity-provider-configs/describe", + } + + if input == nil { + input = &DescribeIdentityProviderConfigInput{} + } + + output = &DescribeIdentityProviderConfigOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeIdentityProviderConfig API operation for Amazon Elastic Kubernetes Service. +// +// Returns descriptive information about an identity provider configuration. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DescribeIdentityProviderConfig for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeIdentityProviderConfig +func (c *EKS) DescribeIdentityProviderConfig(input *DescribeIdentityProviderConfigInput) (*DescribeIdentityProviderConfigOutput, error) { + req, out := c.DescribeIdentityProviderConfigRequest(input) + return out, req.Send() +} + +// DescribeIdentityProviderConfigWithContext is the same as DescribeIdentityProviderConfig with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeIdentityProviderConfig for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DescribeIdentityProviderConfigWithContext(ctx aws.Context, input *DescribeIdentityProviderConfigInput, opts ...request.Option) (*DescribeIdentityProviderConfigOutput, error) { + req, out := c.DescribeIdentityProviderConfigRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeNodegroup = "DescribeNodegroup" + +// DescribeNodegroupRequest generates a "aws/request.Request" representing the +// client's request for the DescribeNodegroup operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeNodegroup for more information on using the DescribeNodegroup +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeNodegroupRequest method. +// req, resp := client.DescribeNodegroupRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeNodegroup +func (c *EKS) DescribeNodegroupRequest(input *DescribeNodegroupInput) (req *request.Request, output *DescribeNodegroupOutput) { + op := &request.Operation{ + Name: opDescribeNodegroup, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/node-groups/{nodegroupName}", + } + + if input == nil { + input = &DescribeNodegroupInput{} + } + + output = &DescribeNodegroupOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeNodegroup API operation for Amazon Elastic Kubernetes Service. +// +// Returns descriptive information about an Amazon EKS node group. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DescribeNodegroup for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeNodegroup +func (c *EKS) DescribeNodegroup(input *DescribeNodegroupInput) (*DescribeNodegroupOutput, error) { + req, out := c.DescribeNodegroupRequest(input) + return out, req.Send() +} + +// DescribeNodegroupWithContext is the same as DescribeNodegroup with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeNodegroup for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DescribeNodegroupWithContext(ctx aws.Context, input *DescribeNodegroupInput, opts ...request.Option) (*DescribeNodegroupOutput, error) { + req, out := c.DescribeNodegroupRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeUpdate = "DescribeUpdate" + +// DescribeUpdateRequest generates a "aws/request.Request" representing the +// client's request for the DescribeUpdate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeUpdate for more information on using the DescribeUpdate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeUpdateRequest method. +// req, resp := client.DescribeUpdateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeUpdate +func (c *EKS) DescribeUpdateRequest(input *DescribeUpdateInput) (req *request.Request, output *DescribeUpdateOutput) { + op := &request.Operation{ + Name: opDescribeUpdate, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/updates/{updateId}", + } + + if input == nil { + input = &DescribeUpdateInput{} + } + + output = &DescribeUpdateOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeUpdate API operation for Amazon Elastic Kubernetes Service. +// +// Returns descriptive information about an update against your Amazon EKS cluster +// or associated managed node group. +// +// When the status of the update is Succeeded, the update is complete. If an +// update fails, the status is Failed, and an error detail explains the reason +// for the failure. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DescribeUpdate for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeUpdate +func (c *EKS) DescribeUpdate(input *DescribeUpdateInput) (*DescribeUpdateOutput, error) { + req, out := c.DescribeUpdateRequest(input) + return out, req.Send() +} + +// DescribeUpdateWithContext is the same as DescribeUpdate with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeUpdate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DescribeUpdateWithContext(ctx aws.Context, input *DescribeUpdateInput, opts ...request.Option) (*DescribeUpdateOutput, error) { + req, out := c.DescribeUpdateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisassociateIdentityProviderConfig = "DisassociateIdentityProviderConfig" + +// DisassociateIdentityProviderConfigRequest generates a "aws/request.Request" representing the +// client's request for the DisassociateIdentityProviderConfig operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisassociateIdentityProviderConfig for more information on using the DisassociateIdentityProviderConfig +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisassociateIdentityProviderConfigRequest method. +// req, resp := client.DisassociateIdentityProviderConfigRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DisassociateIdentityProviderConfig +func (c *EKS) DisassociateIdentityProviderConfigRequest(input *DisassociateIdentityProviderConfigInput) (req *request.Request, output *DisassociateIdentityProviderConfigOutput) { + op := &request.Operation{ + Name: opDisassociateIdentityProviderConfig, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/identity-provider-configs/disassociate", + } + + if input == nil { + input = &DisassociateIdentityProviderConfigInput{} + } + + output = &DisassociateIdentityProviderConfigOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisassociateIdentityProviderConfig API operation for Amazon Elastic Kubernetes Service. +// +// Disassociates an identity provider configuration from a cluster. If you disassociate +// an identity provider from your cluster, users included in the provider can +// no longer access the cluster. However, you can still access the cluster with +// AWS IAM users. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation DisassociateIdentityProviderConfig for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DisassociateIdentityProviderConfig +func (c *EKS) DisassociateIdentityProviderConfig(input *DisassociateIdentityProviderConfigInput) (*DisassociateIdentityProviderConfigOutput, error) { + req, out := c.DisassociateIdentityProviderConfigRequest(input) + return out, req.Send() +} + +// DisassociateIdentityProviderConfigWithContext is the same as DisassociateIdentityProviderConfig with the addition of +// the ability to pass a context and additional request options. +// +// See DisassociateIdentityProviderConfig for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) DisassociateIdentityProviderConfigWithContext(ctx aws.Context, input *DisassociateIdentityProviderConfigInput, opts ...request.Option) (*DisassociateIdentityProviderConfigOutput, error) { + req, out := c.DisassociateIdentityProviderConfigRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opListAddons = "ListAddons" + +// ListAddonsRequest generates a "aws/request.Request" representing the +// client's request for the ListAddons operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListAddons for more information on using the ListAddons +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListAddonsRequest method. +// req, resp := client.ListAddonsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListAddons +func (c *EKS) ListAddonsRequest(input *ListAddonsInput) (req *request.Request, output *ListAddonsOutput) { + op := &request.Operation{ + Name: opListAddons, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/addons", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListAddonsInput{} + } + + output = &ListAddonsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListAddons API operation for Amazon Elastic Kubernetes Service. +// +// Lists the available add-ons. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation ListAddons for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListAddons +func (c *EKS) ListAddons(input *ListAddonsInput) (*ListAddonsOutput, error) { + req, out := c.ListAddonsRequest(input) + return out, req.Send() +} + +// ListAddonsWithContext is the same as ListAddons with the addition of +// the ability to pass a context and additional request options. +// +// See ListAddons for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListAddonsWithContext(ctx aws.Context, input *ListAddonsInput, opts ...request.Option) (*ListAddonsOutput, error) { + req, out := c.ListAddonsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListAddonsPages iterates over the pages of a ListAddons operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListAddons method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListAddons operation. +// pageNum := 0 +// err := client.ListAddonsPages(params, +// func(page *eks.ListAddonsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EKS) ListAddonsPages(input *ListAddonsInput, fn func(*ListAddonsOutput, bool) bool) error { + return c.ListAddonsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListAddonsPagesWithContext same as ListAddonsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListAddonsPagesWithContext(ctx aws.Context, input *ListAddonsInput, fn func(*ListAddonsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListAddonsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListAddonsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListAddonsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListClusters = "ListClusters" + +// ListClustersRequest generates a "aws/request.Request" representing the +// client's request for the ListClusters operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListClusters for more information on using the ListClusters +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListClustersRequest method. +// req, resp := client.ListClustersRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListClusters +func (c *EKS) ListClustersRequest(input *ListClustersInput) (req *request.Request, output *ListClustersOutput) { + op := &request.Operation{ + Name: opListClusters, + HTTPMethod: "GET", + HTTPPath: "/clusters", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListClustersInput{} + } + + output = &ListClustersOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListClusters API operation for Amazon Elastic Kubernetes Service. +// +// Lists the Amazon EKS clusters in your AWS account in the specified Region. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation ListClusters for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListClusters +func (c *EKS) ListClusters(input *ListClustersInput) (*ListClustersOutput, error) { + req, out := c.ListClustersRequest(input) + return out, req.Send() +} + +// ListClustersWithContext is the same as ListClusters with the addition of +// the ability to pass a context and additional request options. +// +// See ListClusters for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListClustersWithContext(ctx aws.Context, input *ListClustersInput, opts ...request.Option) (*ListClustersOutput, error) { + req, out := c.ListClustersRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListClustersPages iterates over the pages of a ListClusters operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListClusters method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListClusters operation. +// pageNum := 0 +// err := client.ListClustersPages(params, +// func(page *eks.ListClustersOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EKS) ListClustersPages(input *ListClustersInput, fn func(*ListClustersOutput, bool) bool) error { + return c.ListClustersPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListClustersPagesWithContext same as ListClustersPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListClustersPagesWithContext(ctx aws.Context, input *ListClustersInput, fn func(*ListClustersOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListClustersInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListClustersRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListClustersOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListFargateProfiles = "ListFargateProfiles" + +// ListFargateProfilesRequest generates a "aws/request.Request" representing the +// client's request for the ListFargateProfiles operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListFargateProfiles for more information on using the ListFargateProfiles +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListFargateProfilesRequest method. +// req, resp := client.ListFargateProfilesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListFargateProfiles +func (c *EKS) ListFargateProfilesRequest(input *ListFargateProfilesInput) (req *request.Request, output *ListFargateProfilesOutput) { + op := &request.Operation{ + Name: opListFargateProfiles, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/fargate-profiles", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListFargateProfilesInput{} + } + + output = &ListFargateProfilesOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListFargateProfiles API operation for Amazon Elastic Kubernetes Service. +// +// Lists the AWS Fargate profiles associated with the specified cluster in your +// AWS account in the specified Region. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation ListFargateProfiles for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListFargateProfiles +func (c *EKS) ListFargateProfiles(input *ListFargateProfilesInput) (*ListFargateProfilesOutput, error) { + req, out := c.ListFargateProfilesRequest(input) + return out, req.Send() +} + +// ListFargateProfilesWithContext is the same as ListFargateProfiles with the addition of +// the ability to pass a context and additional request options. +// +// See ListFargateProfiles for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListFargateProfilesWithContext(ctx aws.Context, input *ListFargateProfilesInput, opts ...request.Option) (*ListFargateProfilesOutput, error) { + req, out := c.ListFargateProfilesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListFargateProfilesPages iterates over the pages of a ListFargateProfiles operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListFargateProfiles method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListFargateProfiles operation. +// pageNum := 0 +// err := client.ListFargateProfilesPages(params, +// func(page *eks.ListFargateProfilesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EKS) ListFargateProfilesPages(input *ListFargateProfilesInput, fn func(*ListFargateProfilesOutput, bool) bool) error { + return c.ListFargateProfilesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListFargateProfilesPagesWithContext same as ListFargateProfilesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListFargateProfilesPagesWithContext(ctx aws.Context, input *ListFargateProfilesInput, fn func(*ListFargateProfilesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListFargateProfilesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListFargateProfilesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListFargateProfilesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListIdentityProviderConfigs = "ListIdentityProviderConfigs" + +// ListIdentityProviderConfigsRequest generates a "aws/request.Request" representing the +// client's request for the ListIdentityProviderConfigs operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListIdentityProviderConfigs for more information on using the ListIdentityProviderConfigs +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListIdentityProviderConfigsRequest method. +// req, resp := client.ListIdentityProviderConfigsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListIdentityProviderConfigs +func (c *EKS) ListIdentityProviderConfigsRequest(input *ListIdentityProviderConfigsInput) (req *request.Request, output *ListIdentityProviderConfigsOutput) { + op := &request.Operation{ + Name: opListIdentityProviderConfigs, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/identity-provider-configs", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListIdentityProviderConfigsInput{} + } + + output = &ListIdentityProviderConfigsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListIdentityProviderConfigs API operation for Amazon Elastic Kubernetes Service. +// +// A list of identity provider configurations. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation ListIdentityProviderConfigs for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListIdentityProviderConfigs +func (c *EKS) ListIdentityProviderConfigs(input *ListIdentityProviderConfigsInput) (*ListIdentityProviderConfigsOutput, error) { + req, out := c.ListIdentityProviderConfigsRequest(input) + return out, req.Send() +} + +// ListIdentityProviderConfigsWithContext is the same as ListIdentityProviderConfigs with the addition of +// the ability to pass a context and additional request options. +// +// See ListIdentityProviderConfigs for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListIdentityProviderConfigsWithContext(ctx aws.Context, input *ListIdentityProviderConfigsInput, opts ...request.Option) (*ListIdentityProviderConfigsOutput, error) { + req, out := c.ListIdentityProviderConfigsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListIdentityProviderConfigsPages iterates over the pages of a ListIdentityProviderConfigs operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListIdentityProviderConfigs method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListIdentityProviderConfigs operation. +// pageNum := 0 +// err := client.ListIdentityProviderConfigsPages(params, +// func(page *eks.ListIdentityProviderConfigsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EKS) ListIdentityProviderConfigsPages(input *ListIdentityProviderConfigsInput, fn func(*ListIdentityProviderConfigsOutput, bool) bool) error { + return c.ListIdentityProviderConfigsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListIdentityProviderConfigsPagesWithContext same as ListIdentityProviderConfigsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListIdentityProviderConfigsPagesWithContext(ctx aws.Context, input *ListIdentityProviderConfigsInput, fn func(*ListIdentityProviderConfigsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListIdentityProviderConfigsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListIdentityProviderConfigsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListIdentityProviderConfigsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListNodegroups = "ListNodegroups" + +// ListNodegroupsRequest generates a "aws/request.Request" representing the +// client's request for the ListNodegroups operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListNodegroups for more information on using the ListNodegroups +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListNodegroupsRequest method. +// req, resp := client.ListNodegroupsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListNodegroups +func (c *EKS) ListNodegroupsRequest(input *ListNodegroupsInput) (req *request.Request, output *ListNodegroupsOutput) { + op := &request.Operation{ + Name: opListNodegroups, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/node-groups", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListNodegroupsInput{} + } + + output = &ListNodegroupsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListNodegroups API operation for Amazon Elastic Kubernetes Service. +// +// Lists the Amazon EKS managed node groups associated with the specified cluster +// in your AWS account in the specified Region. Self-managed node groups are +// not listed. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation ListNodegroups for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ServiceUnavailableException +// The service is unavailable. Back off and retry the operation. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListNodegroups +func (c *EKS) ListNodegroups(input *ListNodegroupsInput) (*ListNodegroupsOutput, error) { + req, out := c.ListNodegroupsRequest(input) + return out, req.Send() +} + +// ListNodegroupsWithContext is the same as ListNodegroups with the addition of +// the ability to pass a context and additional request options. +// +// See ListNodegroups for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListNodegroupsWithContext(ctx aws.Context, input *ListNodegroupsInput, opts ...request.Option) (*ListNodegroupsOutput, error) { + req, out := c.ListNodegroupsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListNodegroupsPages iterates over the pages of a ListNodegroups operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListNodegroups method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListNodegroups operation. +// pageNum := 0 +// err := client.ListNodegroupsPages(params, +// func(page *eks.ListNodegroupsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EKS) ListNodegroupsPages(input *ListNodegroupsInput, fn func(*ListNodegroupsOutput, bool) bool) error { + return c.ListNodegroupsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListNodegroupsPagesWithContext same as ListNodegroupsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListNodegroupsPagesWithContext(ctx aws.Context, input *ListNodegroupsInput, fn func(*ListNodegroupsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListNodegroupsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListNodegroupsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListNodegroupsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListTagsForResource = "ListTagsForResource" + +// ListTagsForResourceRequest generates a "aws/request.Request" representing the +// client's request for the ListTagsForResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListTagsForResource for more information on using the ListTagsForResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListTagsForResourceRequest method. +// req, resp := client.ListTagsForResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListTagsForResource +func (c *EKS) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) { + op := &request.Operation{ + Name: opListTagsForResource, + HTTPMethod: "GET", + HTTPPath: "/tags/{resourceArn}", + } + + if input == nil { + input = &ListTagsForResourceInput{} + } + + output = &ListTagsForResourceOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListTagsForResource API operation for Amazon Elastic Kubernetes Service. +// +// List the tags for an Amazon EKS resource. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation ListTagsForResource for usage and error information. +// +// Returned Error Types: +// * BadRequestException +// This exception is thrown if the request contains a semantic error. The precise +// meaning will depend on the API, and will be documented in the error message. +// +// * NotFoundException +// A service resource associated with the request could not be found. Clients +// should not retry such requests. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListTagsForResource +func (c *EKS) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) { + req, out := c.ListTagsForResourceRequest(input) + return out, req.Send() +} + +// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of +// the ability to pass a context and additional request options. +// +// See ListTagsForResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) { + req, out := c.ListTagsForResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opListUpdates = "ListUpdates" + +// ListUpdatesRequest generates a "aws/request.Request" representing the +// client's request for the ListUpdates operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListUpdates for more information on using the ListUpdates +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListUpdatesRequest method. +// req, resp := client.ListUpdatesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListUpdates +func (c *EKS) ListUpdatesRequest(input *ListUpdatesInput) (req *request.Request, output *ListUpdatesOutput) { + op := &request.Operation{ + Name: opListUpdates, + HTTPMethod: "GET", + HTTPPath: "/clusters/{name}/updates", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListUpdatesInput{} + } + + output = &ListUpdatesOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListUpdates API operation for Amazon Elastic Kubernetes Service. +// +// Lists the updates associated with an Amazon EKS cluster or managed node group +// in your AWS account, in the specified Region. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation ListUpdates for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListUpdates +func (c *EKS) ListUpdates(input *ListUpdatesInput) (*ListUpdatesOutput, error) { + req, out := c.ListUpdatesRequest(input) + return out, req.Send() +} + +// ListUpdatesWithContext is the same as ListUpdates with the addition of +// the ability to pass a context and additional request options. +// +// See ListUpdates for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListUpdatesWithContext(ctx aws.Context, input *ListUpdatesInput, opts ...request.Option) (*ListUpdatesOutput, error) { + req, out := c.ListUpdatesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListUpdatesPages iterates over the pages of a ListUpdates operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListUpdates method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListUpdates operation. +// pageNum := 0 +// err := client.ListUpdatesPages(params, +// func(page *eks.ListUpdatesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EKS) ListUpdatesPages(input *ListUpdatesInput, fn func(*ListUpdatesOutput, bool) bool) error { + return c.ListUpdatesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListUpdatesPagesWithContext same as ListUpdatesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) ListUpdatesPagesWithContext(ctx aws.Context, input *ListUpdatesInput, fn func(*ListUpdatesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListUpdatesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListUpdatesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListUpdatesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opTagResource = "TagResource" + +// TagResourceRequest generates a "aws/request.Request" representing the +// client's request for the TagResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagResource for more information on using the TagResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TagResourceRequest method. +// req, resp := client.TagResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/TagResource +func (c *EKS) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) { + op := &request.Operation{ + Name: opTagResource, + HTTPMethod: "POST", + HTTPPath: "/tags/{resourceArn}", + } + + if input == nil { + input = &TagResourceInput{} + } + + output = &TagResourceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagResource API operation for Amazon Elastic Kubernetes Service. +// +// Associates the specified tags to a resource with the specified resourceArn. +// If existing tags on a resource are not specified in the request parameters, +// they are not changed. When a resource is deleted, the tags associated with +// that resource are deleted as well. Tags that you create for Amazon EKS resources +// do not propagate to any other resources associated with the cluster. For +// example, if you tag a cluster with this operation, that tag does not automatically +// propagate to the subnets and nodes associated with the cluster. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation TagResource for usage and error information. +// +// Returned Error Types: +// * BadRequestException +// This exception is thrown if the request contains a semantic error. The precise +// meaning will depend on the API, and will be documented in the error message. +// +// * NotFoundException +// A service resource associated with the request could not be found. Clients +// should not retry such requests. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/TagResource +func (c *EKS) TagResource(input *TagResourceInput) (*TagResourceOutput, error) { + req, out := c.TagResourceRequest(input) + return out, req.Send() +} + +// TagResourceWithContext is the same as TagResource with the addition of +// the ability to pass a context and additional request options. +// +// See TagResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) { + req, out := c.TagResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUntagResource = "UntagResource" + +// UntagResourceRequest generates a "aws/request.Request" representing the +// client's request for the UntagResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagResource for more information on using the UntagResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UntagResourceRequest method. +// req, resp := client.UntagResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UntagResource +func (c *EKS) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) { + op := &request.Operation{ + Name: opUntagResource, + HTTPMethod: "DELETE", + HTTPPath: "/tags/{resourceArn}", + } + + if input == nil { + input = &UntagResourceInput{} + } + + output = &UntagResourceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagResource API operation for Amazon Elastic Kubernetes Service. +// +// Deletes specified tags from a resource. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation UntagResource for usage and error information. +// +// Returned Error Types: +// * BadRequestException +// This exception is thrown if the request contains a semantic error. The precise +// meaning will depend on the API, and will be documented in the error message. +// +// * NotFoundException +// A service resource associated with the request could not be found. Clients +// should not retry such requests. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UntagResource +func (c *EKS) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) { + req, out := c.UntagResourceRequest(input) + return out, req.Send() +} + +// UntagResourceWithContext is the same as UntagResource with the addition of +// the ability to pass a context and additional request options. +// +// See UntagResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) { + req, out := c.UntagResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUpdateAddon = "UpdateAddon" + +// UpdateAddonRequest generates a "aws/request.Request" representing the +// client's request for the UpdateAddon operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UpdateAddon for more information on using the UpdateAddon +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UpdateAddonRequest method. +// req, resp := client.UpdateAddonRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateAddon +func (c *EKS) UpdateAddonRequest(input *UpdateAddonInput) (req *request.Request, output *UpdateAddonOutput) { + op := &request.Operation{ + Name: opUpdateAddon, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/addons/{addonName}/update", + } + + if input == nil { + input = &UpdateAddonInput{} + } + + output = &UpdateAddonOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateAddon API operation for Amazon Elastic Kubernetes Service. +// +// Updates an Amazon EKS add-on. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation UpdateAddon for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateAddon +func (c *EKS) UpdateAddon(input *UpdateAddonInput) (*UpdateAddonOutput, error) { + req, out := c.UpdateAddonRequest(input) + return out, req.Send() +} + +// UpdateAddonWithContext is the same as UpdateAddon with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateAddon for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) UpdateAddonWithContext(ctx aws.Context, input *UpdateAddonInput, opts ...request.Option) (*UpdateAddonOutput, error) { + req, out := c.UpdateAddonRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUpdateClusterConfig = "UpdateClusterConfig" + +// UpdateClusterConfigRequest generates a "aws/request.Request" representing the +// client's request for the UpdateClusterConfig operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UpdateClusterConfig for more information on using the UpdateClusterConfig +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UpdateClusterConfigRequest method. +// req, resp := client.UpdateClusterConfigRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateClusterConfig +func (c *EKS) UpdateClusterConfigRequest(input *UpdateClusterConfigInput) (req *request.Request, output *UpdateClusterConfigOutput) { + op := &request.Operation{ + Name: opUpdateClusterConfig, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/update-config", + } + + if input == nil { + input = &UpdateClusterConfigInput{} + } + + output = &UpdateClusterConfigOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateClusterConfig API operation for Amazon Elastic Kubernetes Service. +// +// Updates an Amazon EKS cluster configuration. Your cluster continues to function +// during the update. The response output includes an update ID that you can +// use to track the status of your cluster update with the DescribeUpdate API +// operation. +// +// You can use this API operation to 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 (https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) +// 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 Amazon CloudWatch +// Pricing (http://aws.amazon.com/cloudwatch/pricing/). +// +// You can also use this API operation to enable or disable public and private +// access to your cluster's Kubernetes API server endpoint. By default, public +// access is enabled, and private access is disabled. For more information, +// see Amazon EKS Cluster Endpoint Access Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) +// in the Amazon EKS User Guide . +// +// You can't update the subnets or security group IDs for an existing cluster. +// +// Cluster updates are asynchronous, and they should finish within a few minutes. +// During an update, the cluster status moves to UPDATING (this status transition +// is eventually consistent). When the update is complete (either Failed or +// Successful), the cluster status moves to Active. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation UpdateClusterConfig for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateClusterConfig +func (c *EKS) UpdateClusterConfig(input *UpdateClusterConfigInput) (*UpdateClusterConfigOutput, error) { + req, out := c.UpdateClusterConfigRequest(input) + return out, req.Send() +} + +// UpdateClusterConfigWithContext is the same as UpdateClusterConfig with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateClusterConfig for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) UpdateClusterConfigWithContext(ctx aws.Context, input *UpdateClusterConfigInput, opts ...request.Option) (*UpdateClusterConfigOutput, error) { + req, out := c.UpdateClusterConfigRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUpdateClusterVersion = "UpdateClusterVersion" + +// UpdateClusterVersionRequest generates a "aws/request.Request" representing the +// client's request for the UpdateClusterVersion operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UpdateClusterVersion for more information on using the UpdateClusterVersion +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UpdateClusterVersionRequest method. +// req, resp := client.UpdateClusterVersionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateClusterVersion +func (c *EKS) UpdateClusterVersionRequest(input *UpdateClusterVersionInput) (req *request.Request, output *UpdateClusterVersionOutput) { + op := &request.Operation{ + Name: opUpdateClusterVersion, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/updates", + } + + if input == nil { + input = &UpdateClusterVersionInput{} + } + + output = &UpdateClusterVersionOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateClusterVersion API operation for Amazon Elastic Kubernetes Service. +// +// Updates an Amazon EKS cluster to the specified Kubernetes version. Your cluster +// continues to function during the update. The response output includes an +// update ID that you can use to track the status of your cluster update with +// the DescribeUpdate API operation. +// +// Cluster updates are asynchronous, and they should finish within a few minutes. +// During an update, the cluster status moves to UPDATING (this status transition +// is eventually consistent). When the update is complete (either Failed or +// Successful), the cluster status moves to Active. +// +// If your cluster has managed node groups attached to it, all of your node +// groups’ Kubernetes versions must match the cluster’s Kubernetes version +// in order to update the cluster to a new Kubernetes version. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation UpdateClusterVersion for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateClusterVersion +func (c *EKS) UpdateClusterVersion(input *UpdateClusterVersionInput) (*UpdateClusterVersionOutput, error) { + req, out := c.UpdateClusterVersionRequest(input) + return out, req.Send() +} + +// UpdateClusterVersionWithContext is the same as UpdateClusterVersion with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateClusterVersion for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) UpdateClusterVersionWithContext(ctx aws.Context, input *UpdateClusterVersionInput, opts ...request.Option) (*UpdateClusterVersionOutput, error) { + req, out := c.UpdateClusterVersionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUpdateNodegroupConfig = "UpdateNodegroupConfig" + +// UpdateNodegroupConfigRequest generates a "aws/request.Request" representing the +// client's request for the UpdateNodegroupConfig operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UpdateNodegroupConfig for more information on using the UpdateNodegroupConfig +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UpdateNodegroupConfigRequest method. +// req, resp := client.UpdateNodegroupConfigRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateNodegroupConfig +func (c *EKS) UpdateNodegroupConfigRequest(input *UpdateNodegroupConfigInput) (req *request.Request, output *UpdateNodegroupConfigOutput) { + op := &request.Operation{ + Name: opUpdateNodegroupConfig, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/node-groups/{nodegroupName}/update-config", + } + + if input == nil { + input = &UpdateNodegroupConfigInput{} + } + + output = &UpdateNodegroupConfigOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateNodegroupConfig API operation for Amazon Elastic Kubernetes Service. +// +// Updates an Amazon EKS managed node group configuration. Your node group continues +// to function during the update. The response output includes an update ID +// that you can use to track the status of your node group update with the DescribeUpdate +// API operation. Currently you can update the Kubernetes labels for a node +// group or the scaling configuration. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation UpdateNodegroupConfig for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateNodegroupConfig +func (c *EKS) UpdateNodegroupConfig(input *UpdateNodegroupConfigInput) (*UpdateNodegroupConfigOutput, error) { + req, out := c.UpdateNodegroupConfigRequest(input) + return out, req.Send() +} + +// UpdateNodegroupConfigWithContext is the same as UpdateNodegroupConfig with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateNodegroupConfig for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) UpdateNodegroupConfigWithContext(ctx aws.Context, input *UpdateNodegroupConfigInput, opts ...request.Option) (*UpdateNodegroupConfigOutput, error) { + req, out := c.UpdateNodegroupConfigRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUpdateNodegroupVersion = "UpdateNodegroupVersion" + +// UpdateNodegroupVersionRequest generates a "aws/request.Request" representing the +// client's request for the UpdateNodegroupVersion operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UpdateNodegroupVersion for more information on using the UpdateNodegroupVersion +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UpdateNodegroupVersionRequest method. +// req, resp := client.UpdateNodegroupVersionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateNodegroupVersion +func (c *EKS) UpdateNodegroupVersionRequest(input *UpdateNodegroupVersionInput) (req *request.Request, output *UpdateNodegroupVersionOutput) { + op := &request.Operation{ + Name: opUpdateNodegroupVersion, + HTTPMethod: "POST", + HTTPPath: "/clusters/{name}/node-groups/{nodegroupName}/update-version", + } + + if input == nil { + input = &UpdateNodegroupVersionInput{} + } + + output = &UpdateNodegroupVersionOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateNodegroupVersion API operation for Amazon Elastic Kubernetes Service. +// +// Updates the Kubernetes version or AMI version of an Amazon EKS managed node +// group. +// +// You can update a node group using a launch template only if the node group +// was originally deployed with a launch template. If you need to update a custom +// AMI in a node group that was deployed with a launch template, then update +// your custom AMI, specify the new ID in a new version of the launch template, +// and then update the node group to the new version of the launch template. +// +// If you update without a launch template, then you can update to the latest +// available AMI version of a node group's current Kubernetes version by not +// specifying a Kubernetes version in the request. You can update to the latest +// AMI version of your cluster's current Kubernetes version by specifying your +// cluster's Kubernetes version in the request. For more information, see Amazon +// EKS optimized Amazon Linux 2 AMI versions (https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) +// in the Amazon EKS User Guide. +// +// You cannot roll back a node group to an earlier Kubernetes version or AMI +// version. +// +// When a node in a managed node group is terminated due to a scaling action +// or update, the pods in that node are drained first. Amazon EKS attempts to +// drain the nodes gracefully and will fail if it is unable to do so. You can +// force the update if Amazon EKS is unable to drain the nodes as a result of +// a pod disruption budget issue. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Kubernetes Service's +// API operation UpdateNodegroupVersion for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ClientException +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +// +// * ServerException +// These errors are usually caused by a server-side issue. +// +// * ResourceInUseException +// The specified resource is in use. +// +// * ResourceNotFoundException +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +// +// * InvalidRequestException +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateNodegroupVersion +func (c *EKS) UpdateNodegroupVersion(input *UpdateNodegroupVersionInput) (*UpdateNodegroupVersionOutput, error) { + req, out := c.UpdateNodegroupVersionRequest(input) + return out, req.Send() +} + +// UpdateNodegroupVersionWithContext is the same as UpdateNodegroupVersion with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateNodegroupVersion for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) UpdateNodegroupVersionWithContext(ctx aws.Context, input *UpdateNodegroupVersionInput, opts ...request.Option) (*UpdateNodegroupVersionOutput, error) { + req, out := c.UpdateNodegroupVersionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// An Amazon EKS add-on. +type Addon struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the add-on. + AddonArn *string `locationName:"addonArn" type:"string"` + + // The name of the add-on. + AddonName *string `locationName:"addonName" type:"string"` + + // The version of the add-on. + AddonVersion *string `locationName:"addonVersion" type:"string"` + + // The name of the cluster. + ClusterName *string `locationName:"clusterName" min:"1" type:"string"` + + // The date and time that the add-on was created. + CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` + + // An object that represents the health of the add-on. + Health *AddonHealth `locationName:"health" type:"structure"` + + // The date and time that the add-on was last modified. + ModifiedAt *time.Time `locationName:"modifiedAt" type:"timestamp"` + + // The Amazon Resource Name (ARN) of the IAM role that is bound to the Kubernetes + // service account used by the add-on. + ServiceAccountRoleArn *string `locationName:"serviceAccountRoleArn" type:"string"` + + // The status of the add-on. + Status *string `locationName:"status" type:"string" enum:"AddonStatus"` + + // The metadata that you apply to the add-on to assist with categorization and + // organization. Each tag consists of a key and an optional value, both of which + // you define. Add-on tags do not propagate to any other resources associated + // with the cluster. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` +} + +// String returns the string representation +func (s Addon) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Addon) GoString() string { + return s.String() +} + +// SetAddonArn sets the AddonArn field's value. +func (s *Addon) SetAddonArn(v string) *Addon { + s.AddonArn = &v + return s +} + +// SetAddonName sets the AddonName field's value. +func (s *Addon) SetAddonName(v string) *Addon { + s.AddonName = &v + return s +} + +// SetAddonVersion sets the AddonVersion field's value. +func (s *Addon) SetAddonVersion(v string) *Addon { + s.AddonVersion = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *Addon) SetClusterName(v string) *Addon { + s.ClusterName = &v + return s +} + +// SetCreatedAt sets the CreatedAt field's value. +func (s *Addon) SetCreatedAt(v time.Time) *Addon { + s.CreatedAt = &v + return s +} + +// SetHealth sets the Health field's value. +func (s *Addon) SetHealth(v *AddonHealth) *Addon { + s.Health = v + return s +} + +// SetModifiedAt sets the ModifiedAt field's value. +func (s *Addon) SetModifiedAt(v time.Time) *Addon { + s.ModifiedAt = &v + return s +} + +// SetServiceAccountRoleArn sets the ServiceAccountRoleArn field's value. +func (s *Addon) SetServiceAccountRoleArn(v string) *Addon { + s.ServiceAccountRoleArn = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *Addon) SetStatus(v string) *Addon { + s.Status = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Addon) SetTags(v map[string]*string) *Addon { + s.Tags = v + return s +} + +// The health of the add-on. +type AddonHealth struct { + _ struct{} `type:"structure"` + + // An object that represents the add-on's health issues. + Issues []*AddonIssue `locationName:"issues" type:"list"` +} + +// String returns the string representation +func (s AddonHealth) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddonHealth) GoString() string { + return s.String() +} + +// SetIssues sets the Issues field's value. +func (s *AddonHealth) SetIssues(v []*AddonIssue) *AddonHealth { + s.Issues = v + return s +} + +// Information about an add-on. +type AddonInfo struct { + _ struct{} `type:"structure"` + + // The name of the add-on. + AddonName *string `locationName:"addonName" type:"string"` + + // An object that represents information about available add-on versions and + // compatible Kubernetes versions. + AddonVersions []*AddonVersionInfo `locationName:"addonVersions" type:"list"` + + // The type of the add-on. + Type *string `locationName:"type" type:"string"` +} + +// String returns the string representation +func (s AddonInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddonInfo) GoString() string { + return s.String() +} + +// SetAddonName sets the AddonName field's value. +func (s *AddonInfo) SetAddonName(v string) *AddonInfo { + s.AddonName = &v + return s +} + +// SetAddonVersions sets the AddonVersions field's value. +func (s *AddonInfo) SetAddonVersions(v []*AddonVersionInfo) *AddonInfo { + s.AddonVersions = v + return s +} + +// SetType sets the Type field's value. +func (s *AddonInfo) SetType(v string) *AddonInfo { + s.Type = &v + return s +} + +// An issue related to an add-on. +type AddonIssue struct { + _ struct{} `type:"structure"` + + // A code that describes the type of issue. + Code *string `locationName:"code" type:"string" enum:"AddonIssueCode"` + + // A message that provides details about the issue and what might cause it. + Message *string `locationName:"message" type:"string"` + + // The resource IDs of the issue. + ResourceIds []*string `locationName:"resourceIds" type:"list"` +} + +// String returns the string representation +func (s AddonIssue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddonIssue) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *AddonIssue) SetCode(v string) *AddonIssue { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *AddonIssue) SetMessage(v string) *AddonIssue { + s.Message = &v + return s +} + +// SetResourceIds sets the ResourceIds field's value. +func (s *AddonIssue) SetResourceIds(v []*string) *AddonIssue { + s.ResourceIds = v + return s +} + +// Information about an add-on version. +type AddonVersionInfo struct { + _ struct{} `type:"structure"` + + // The version of the add-on. + AddonVersion *string `locationName:"addonVersion" type:"string"` + + // The architectures that the version supports. + Architecture []*string `locationName:"architecture" type:"list"` + + // An object that represents the compatibilities of a version. + Compatibilities []*Compatibility `locationName:"compatibilities" type:"list"` +} + +// String returns the string representation +func (s AddonVersionInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddonVersionInfo) GoString() string { + return s.String() +} + +// SetAddonVersion sets the AddonVersion field's value. +func (s *AddonVersionInfo) SetAddonVersion(v string) *AddonVersionInfo { + s.AddonVersion = &v + return s +} + +// SetArchitecture sets the Architecture field's value. +func (s *AddonVersionInfo) SetArchitecture(v []*string) *AddonVersionInfo { + s.Architecture = v + return s +} + +// SetCompatibilities sets the Compatibilities field's value. +func (s *AddonVersionInfo) SetCompatibilities(v []*Compatibility) *AddonVersionInfo { + s.Compatibilities = v + return s +} + +type AssociateEncryptionConfigInput struct { + _ struct{} `type:"structure"` + + // The client request token you are using with the encryption configuration. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the cluster that you are associating with encryption configuration. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The configuration you are using for encryption. + // + // EncryptionConfig is a required field + EncryptionConfig []*EncryptionConfig `locationName:"encryptionConfig" type:"list" required:"true"` +} + +// String returns the string representation +func (s AssociateEncryptionConfigInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateEncryptionConfigInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateEncryptionConfigInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateEncryptionConfigInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.EncryptionConfig == nil { + invalidParams.Add(request.NewErrParamRequired("EncryptionConfig")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *AssociateEncryptionConfigInput) SetClientRequestToken(v string) *AssociateEncryptionConfigInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *AssociateEncryptionConfigInput) SetClusterName(v string) *AssociateEncryptionConfigInput { + s.ClusterName = &v + return s +} + +// SetEncryptionConfig sets the EncryptionConfig field's value. +func (s *AssociateEncryptionConfigInput) SetEncryptionConfig(v []*EncryptionConfig) *AssociateEncryptionConfigInput { + s.EncryptionConfig = v + return s +} + +type AssociateEncryptionConfigOutput struct { + _ struct{} `type:"structure"` + + // An object representing an asynchronous update. + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s AssociateEncryptionConfigOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateEncryptionConfigOutput) GoString() string { + return s.String() +} + +// SetUpdate sets the Update field's value. +func (s *AssociateEncryptionConfigOutput) SetUpdate(v *Update) *AssociateEncryptionConfigOutput { + s.Update = v + return s +} + +type AssociateIdentityProviderConfigInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the cluster to associate the configuration to. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // An object that represents an OpenID Connect (OIDC) identity provider configuration. + // + // Oidc is a required field + Oidc *OidcIdentityProviderConfigRequest `locationName:"oidc" type:"structure" required:"true"` + + // The metadata to apply to the configuration to assist with categorization + // and organization. Each tag consists of a key and an optional value, both + // of which you define. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` +} + +// String returns the string representation +func (s AssociateIdentityProviderConfigInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateIdentityProviderConfigInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateIdentityProviderConfigInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateIdentityProviderConfigInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.Oidc == nil { + invalidParams.Add(request.NewErrParamRequired("Oidc")) + } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } + if s.Oidc != nil { + if err := s.Oidc.Validate(); err != nil { + invalidParams.AddNested("Oidc", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *AssociateIdentityProviderConfigInput) SetClientRequestToken(v string) *AssociateIdentityProviderConfigInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *AssociateIdentityProviderConfigInput) SetClusterName(v string) *AssociateIdentityProviderConfigInput { + s.ClusterName = &v + return s +} + +// SetOidc sets the Oidc field's value. +func (s *AssociateIdentityProviderConfigInput) SetOidc(v *OidcIdentityProviderConfigRequest) *AssociateIdentityProviderConfigInput { + s.Oidc = v + return s +} + +// SetTags sets the Tags field's value. +func (s *AssociateIdentityProviderConfigInput) SetTags(v map[string]*string) *AssociateIdentityProviderConfigInput { + s.Tags = v + return s +} + +type AssociateIdentityProviderConfigOutput struct { + _ struct{} `type:"structure"` + + // The tags for the resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + + // An object representing an asynchronous update. + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s AssociateIdentityProviderConfigOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateIdentityProviderConfigOutput) GoString() string { + return s.String() +} + +// SetTags sets the Tags field's value. +func (s *AssociateIdentityProviderConfigOutput) SetTags(v map[string]*string) *AssociateIdentityProviderConfigOutput { + s.Tags = v + return s +} + +// SetUpdate sets the Update field's value. +func (s *AssociateIdentityProviderConfigOutput) SetUpdate(v *Update) *AssociateIdentityProviderConfigOutput { + s.Update = v + return s +} + +// An Auto Scaling group that is associated with an Amazon EKS managed node +// group. +type AutoScalingGroup struct { + _ struct{} `type:"structure"` + + // The name of the Auto Scaling group associated with an Amazon EKS managed + // node group. + Name *string `locationName:"name" type:"string"` +} + +// String returns the string representation +func (s AutoScalingGroup) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AutoScalingGroup) GoString() string { + return s.String() +} + +// SetName sets the Name field's value. +func (s *AutoScalingGroup) SetName(v string) *AutoScalingGroup { + s.Name = &v + return s +} + +// This exception is thrown if the request contains a semantic error. The precise +// meaning will depend on the API, and will be documented in the error message. +type BadRequestException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s BadRequestException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BadRequestException) GoString() string { + return s.String() +} + +func newErrorBadRequestException(v protocol.ResponseMetadata) error { + return &BadRequestException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *BadRequestException) Code() string { + return "BadRequestException" +} + +// Message returns the exception's message. +func (s *BadRequestException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *BadRequestException) OrigErr() error { + return nil +} + +func (s *BadRequestException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *BadRequestException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *BadRequestException) RequestID() string { + return s.RespMetadata.RequestID +} + +// An object representing the certificate-authority-data for your cluster. +type Certificate struct { + _ struct{} `type:"structure"` + + // The Base64-encoded certificate data required to communicate with your cluster. + // Add this to the certificate-authority-data section of the kubeconfig file + // for your cluster. + Data *string `locationName:"data" type:"string"` +} + +// String returns the string representation +func (s Certificate) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Certificate) GoString() string { + return s.String() +} + +// SetData sets the Data field's value. +func (s *Certificate) SetData(v string) *Certificate { + s.Data = &v + return s +} + +// These errors are usually caused by a client action. Actions can include using +// an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource or specifying an identifier that is not valid. +type ClientException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + AddonName *string `locationName:"addonName" type:"string"` + + // The Amazon EKS cluster associated with the exception. + ClusterName *string `locationName:"clusterName" type:"string"` + + Message_ *string `locationName:"message" type:"string"` + + // The Amazon EKS managed node group associated with the exception. + NodegroupName *string `locationName:"nodegroupName" type:"string"` +} + +// String returns the string representation +func (s ClientException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientException) GoString() string { + return s.String() +} + +func newErrorClientException(v protocol.ResponseMetadata) error { + return &ClientException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *ClientException) Code() string { + return "ClientException" +} + +// Message returns the exception's message. +func (s *ClientException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *ClientException) OrigErr() error { + return nil +} + +func (s *ClientException) Error() string { + return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *ClientException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *ClientException) RequestID() string { + return s.RespMetadata.RequestID +} + +// An object representing an Amazon EKS cluster. +type Cluster struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the cluster. + Arn *string `locationName:"arn" type:"string"` + + // The certificate-authority-data for your cluster. + CertificateAuthority *Certificate `locationName:"certificateAuthority" type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string"` + + // The Unix epoch timestamp in seconds for when the cluster was created. + CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` + + // The encryption configuration for the cluster. + EncryptionConfig []*EncryptionConfig `locationName:"encryptionConfig" type:"list"` + + // The endpoint for your Kubernetes API server. + Endpoint *string `locationName:"endpoint" type:"string"` + + // The identity provider information for the cluster. + Identity *Identity `locationName:"identity" type:"structure"` + + // The Kubernetes network configuration for the cluster. + KubernetesNetworkConfig *KubernetesNetworkConfigResponse `locationName:"kubernetesNetworkConfig" type:"structure"` + + // The logging configuration for your cluster. + Logging *Logging `locationName:"logging" type:"structure"` + + // The name of the cluster. + Name *string `locationName:"name" type:"string"` + + // The platform version of your Amazon EKS cluster. For more information, see + // Platform Versions (https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) + // in the Amazon EKS User Guide . + PlatformVersion *string `locationName:"platformVersion" type:"string"` + + // The VPC configuration 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 (https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) + // and Cluster Security Group Considerations (https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) + // in the Amazon EKS User Guide. + ResourcesVpcConfig *VpcConfigResponse `locationName:"resourcesVpcConfig" type:"structure"` + + // The Amazon Resource Name (ARN) of the IAM role that provides permissions + // for the Kubernetes control plane to make calls to AWS API operations on your + // behalf. + RoleArn *string `locationName:"roleArn" type:"string"` + + // The current status of the cluster. + Status *string `locationName:"status" type:"string" enum:"ClusterStatus"` + + // The metadata that you apply to the cluster to assist with categorization + // and organization. Each tag consists of a key and an optional value, both + // of which you define. Cluster tags do not propagate to any other resources + // associated with the cluster. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + + // The Kubernetes server version for the cluster. + Version *string `locationName:"version" type:"string"` +} + +// String returns the string representation +func (s Cluster) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Cluster) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *Cluster) SetArn(v string) *Cluster { + s.Arn = &v + return s +} + +// SetCertificateAuthority sets the CertificateAuthority field's value. +func (s *Cluster) SetCertificateAuthority(v *Certificate) *Cluster { + s.CertificateAuthority = v + return s +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *Cluster) SetClientRequestToken(v string) *Cluster { + s.ClientRequestToken = &v + return s +} + +// SetCreatedAt sets the CreatedAt field's value. +func (s *Cluster) SetCreatedAt(v time.Time) *Cluster { + s.CreatedAt = &v + return s +} + +// SetEncryptionConfig sets the EncryptionConfig field's value. +func (s *Cluster) SetEncryptionConfig(v []*EncryptionConfig) *Cluster { + s.EncryptionConfig = v + return s +} + +// SetEndpoint sets the Endpoint field's value. +func (s *Cluster) SetEndpoint(v string) *Cluster { + s.Endpoint = &v + return s +} + +// SetIdentity sets the Identity field's value. +func (s *Cluster) SetIdentity(v *Identity) *Cluster { + s.Identity = v + return s +} + +// SetKubernetesNetworkConfig sets the KubernetesNetworkConfig field's value. +func (s *Cluster) SetKubernetesNetworkConfig(v *KubernetesNetworkConfigResponse) *Cluster { + s.KubernetesNetworkConfig = v + return s +} + +// SetLogging sets the Logging field's value. +func (s *Cluster) SetLogging(v *Logging) *Cluster { + s.Logging = v + return s +} + +// SetName sets the Name field's value. +func (s *Cluster) SetName(v string) *Cluster { + s.Name = &v + return s +} + +// SetPlatformVersion sets the PlatformVersion field's value. +func (s *Cluster) SetPlatformVersion(v string) *Cluster { + s.PlatformVersion = &v + return s +} + +// SetResourcesVpcConfig sets the ResourcesVpcConfig field's value. +func (s *Cluster) SetResourcesVpcConfig(v *VpcConfigResponse) *Cluster { + s.ResourcesVpcConfig = v + return s +} + +// SetRoleArn sets the RoleArn field's value. +func (s *Cluster) SetRoleArn(v string) *Cluster { + s.RoleArn = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *Cluster) SetStatus(v string) *Cluster { + s.Status = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Cluster) SetTags(v map[string]*string) *Cluster { + s.Tags = v + return s +} + +// SetVersion sets the Version field's value. +func (s *Cluster) SetVersion(v string) *Cluster { + s.Version = &v + return s +} + +// Compatibility information. +type Compatibility struct { + _ struct{} `type:"structure"` + + // The supported Kubernetes version of the cluster. + ClusterVersion *string `locationName:"clusterVersion" type:"string"` + + // The supported default version. + DefaultVersion *bool `locationName:"defaultVersion" type:"boolean"` + + // The supported compute platform. + PlatformVersions []*string `locationName:"platformVersions" type:"list"` +} + +// String returns the string representation +func (s Compatibility) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Compatibility) GoString() string { + return s.String() +} + +// SetClusterVersion sets the ClusterVersion field's value. +func (s *Compatibility) SetClusterVersion(v string) *Compatibility { + s.ClusterVersion = &v + return s +} + +// SetDefaultVersion sets the DefaultVersion field's value. +func (s *Compatibility) SetDefaultVersion(v bool) *Compatibility { + s.DefaultVersion = &v + return s +} + +// SetPlatformVersions sets the PlatformVersions field's value. +func (s *Compatibility) SetPlatformVersions(v []*string) *Compatibility { + s.PlatformVersions = v + return s +} + +type CreateAddonInput struct { + _ struct{} `type:"structure"` + + // The name of the add-on. The name must match one of the names returned by + // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). + // + // AddonName is a required field + AddonName *string `locationName:"addonName" type:"string" required:"true"` + + // The version of the add-on. The version must match one of the versions returned + // by DescribeAddonVersions (https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html). + AddonVersion *string `locationName:"addonVersion" type:"string"` + + // A unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the cluster to create the add-on for. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` + + // How to resolve parameter value conflicts when migrating an existing add-on + // to an Amazon EKS add-on. + ResolveConflicts *string `locationName:"resolveConflicts" type:"string" enum:"ResolveConflicts"` + + // 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 + // Amazon EKS node IAM role (https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) + // in the Amazon EKS User Guide. + // + // To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) + // provider created for your cluster. For more information, see Enabling IAM + // roles for service accounts on your cluster (https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) + // in the Amazon EKS User Guide. + ServiceAccountRoleArn *string `locationName:"serviceAccountRoleArn" min:"1" type:"string"` + + // The metadata to apply to the cluster to assist with categorization and organization. + // Each tag consists of a key and an optional value, both of which you define. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` +} + +// String returns the string representation +func (s CreateAddonInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateAddonInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateAddonInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateAddonInput"} + if s.AddonName == nil { + invalidParams.Add(request.NewErrParamRequired("AddonName")) + } + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.ServiceAccountRoleArn != nil && len(*s.ServiceAccountRoleArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ServiceAccountRoleArn", 1)) + } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddonName sets the AddonName field's value. +func (s *CreateAddonInput) SetAddonName(v string) *CreateAddonInput { + s.AddonName = &v + return s +} + +// SetAddonVersion sets the AddonVersion field's value. +func (s *CreateAddonInput) SetAddonVersion(v string) *CreateAddonInput { + s.AddonVersion = &v + return s +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *CreateAddonInput) SetClientRequestToken(v string) *CreateAddonInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *CreateAddonInput) SetClusterName(v string) *CreateAddonInput { + s.ClusterName = &v + return s +} + +// SetResolveConflicts sets the ResolveConflicts field's value. +func (s *CreateAddonInput) SetResolveConflicts(v string) *CreateAddonInput { + s.ResolveConflicts = &v + return s +} + +// SetServiceAccountRoleArn sets the ServiceAccountRoleArn field's value. +func (s *CreateAddonInput) SetServiceAccountRoleArn(v string) *CreateAddonInput { + s.ServiceAccountRoleArn = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *CreateAddonInput) SetTags(v map[string]*string) *CreateAddonInput { + s.Tags = v + return s +} + +type CreateAddonOutput struct { + _ struct{} `type:"structure"` + + // An Amazon EKS add-on. + Addon *Addon `locationName:"addon" type:"structure"` +} + +// String returns the string representation +func (s CreateAddonOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateAddonOutput) GoString() string { + return s.String() +} + +// SetAddon sets the Addon field's value. +func (s *CreateAddonOutput) SetAddon(v *Addon) *CreateAddonOutput { + s.Addon = v + return s +} + +type CreateClusterInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The encryption configuration for the cluster. + EncryptionConfig []*EncryptionConfig `locationName:"encryptionConfig" type:"list"` + + // The Kubernetes network configuration for the cluster. + KubernetesNetworkConfig *KubernetesNetworkConfigRequest `locationName:"kubernetesNetworkConfig" type:"structure"` + + // 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 (https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) + // 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 Amazon CloudWatch + // Pricing (http://aws.amazon.com/cloudwatch/pricing/). + Logging *Logging `locationName:"logging" type:"structure"` + + // The unique name to give to your cluster. + // + // Name is a required field + Name *string `locationName:"name" min:"1" type:"string" required:"true"` + + // The VPC configuration 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 (https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) + // and Cluster Security Group Considerations (https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) + // in the Amazon EKS User Guide. You must specify at least two subnets. You + // can specify up to five security groups, but we recommend that you use a dedicated + // security group for your cluster control plane. + // + // ResourcesVpcConfig is a required field + ResourcesVpcConfig *VpcConfigRequest `locationName:"resourcesVpcConfig" type:"structure" required:"true"` + + // The Amazon Resource Name (ARN) of the IAM role that provides permissions + // for the Kubernetes control plane to make calls to AWS API operations on your + // behalf. For more information, see Amazon EKS Service IAM Role (https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) + // in the Amazon EKS User Guide . + // + // RoleArn is a required field + RoleArn *string `locationName:"roleArn" type:"string" required:"true"` + + // The metadata to apply to the cluster to assist with categorization and organization. + // Each tag consists of a key and an optional value, both of which you define. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + + // The desired Kubernetes version for your cluster. If you don't specify a value + // here, the latest version available in Amazon EKS is used. + Version *string `locationName:"version" type:"string"` +} + +// String returns the string representation +func (s CreateClusterInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateClusterInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateClusterInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateClusterInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + if s.ResourcesVpcConfig == nil { + invalidParams.Add(request.NewErrParamRequired("ResourcesVpcConfig")) + } + if s.RoleArn == nil { + invalidParams.Add(request.NewErrParamRequired("RoleArn")) + } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *CreateClusterInput) SetClientRequestToken(v string) *CreateClusterInput { + s.ClientRequestToken = &v + return s +} + +// SetEncryptionConfig sets the EncryptionConfig field's value. +func (s *CreateClusterInput) SetEncryptionConfig(v []*EncryptionConfig) *CreateClusterInput { + s.EncryptionConfig = v + return s +} + +// SetKubernetesNetworkConfig sets the KubernetesNetworkConfig field's value. +func (s *CreateClusterInput) SetKubernetesNetworkConfig(v *KubernetesNetworkConfigRequest) *CreateClusterInput { + s.KubernetesNetworkConfig = v + return s +} + +// SetLogging sets the Logging field's value. +func (s *CreateClusterInput) SetLogging(v *Logging) *CreateClusterInput { + s.Logging = v + return s +} + +// SetName sets the Name field's value. +func (s *CreateClusterInput) SetName(v string) *CreateClusterInput { + s.Name = &v + return s +} + +// SetResourcesVpcConfig sets the ResourcesVpcConfig field's value. +func (s *CreateClusterInput) SetResourcesVpcConfig(v *VpcConfigRequest) *CreateClusterInput { + s.ResourcesVpcConfig = v + return s +} + +// SetRoleArn sets the RoleArn field's value. +func (s *CreateClusterInput) SetRoleArn(v string) *CreateClusterInput { + s.RoleArn = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *CreateClusterInput) SetTags(v map[string]*string) *CreateClusterInput { + s.Tags = v + return s +} + +// SetVersion sets the Version field's value. +func (s *CreateClusterInput) SetVersion(v string) *CreateClusterInput { + s.Version = &v + return s +} + +type CreateClusterOutput struct { + _ struct{} `type:"structure"` + + // The full description of your new cluster. + Cluster *Cluster `locationName:"cluster" type:"structure"` +} + +// String returns the string representation +func (s CreateClusterOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateClusterOutput) GoString() string { + return s.String() +} + +// SetCluster sets the Cluster field's value. +func (s *CreateClusterOutput) SetCluster(v *Cluster) *CreateClusterOutput { + s.Cluster = v + return s +} + +type CreateFargateProfileInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the Amazon EKS cluster to apply the Fargate profile to. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The name of the Fargate profile. + // + // FargateProfileName is a required field + FargateProfileName *string `locationName:"fargateProfileName" type:"string" required:"true"` + + // The Amazon Resource Name (ARN) of the pod execution role to use for pods + // that match the selectors in the Fargate profile. The pod execution role allows + // Fargate infrastructure to register with your cluster as a node, and it provides + // read access to Amazon ECR image repositories. For more information, see Pod + // Execution Role (https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) + // in the Amazon EKS User Guide. + // + // PodExecutionRoleArn is a required field + PodExecutionRoleArn *string `locationName:"podExecutionRoleArn" type:"string" required:"true"` + + // The selectors to match for pods to use this Fargate profile. Each selector + // must have an associated namespace. Optionally, you can also specify labels + // for a namespace. You may specify up to five selectors in a Fargate profile. + Selectors []*FargateProfileSelector `locationName:"selectors" type:"list"` + + // The IDs of subnets to launch your pods into. At this time, pods running on + // Fargate are not assigned public IP addresses, so only private subnets (with + // no direct route to an Internet Gateway) are accepted for this parameter. + Subnets []*string `locationName:"subnets" type:"list"` + + // The metadata to apply to the Fargate profile to assist with categorization + // and organization. Each tag consists of a key and an optional value, both + // of which you define. Fargate profile tags do not propagate to any other resources + // associated with the Fargate profile, such as the pods that are scheduled + // with it. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` +} + +// String returns the string representation +func (s CreateFargateProfileInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFargateProfileInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateFargateProfileInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateFargateProfileInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.FargateProfileName == nil { + invalidParams.Add(request.NewErrParamRequired("FargateProfileName")) + } + if s.PodExecutionRoleArn == nil { + invalidParams.Add(request.NewErrParamRequired("PodExecutionRoleArn")) + } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *CreateFargateProfileInput) SetClientRequestToken(v string) *CreateFargateProfileInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *CreateFargateProfileInput) SetClusterName(v string) *CreateFargateProfileInput { + s.ClusterName = &v + return s +} + +// SetFargateProfileName sets the FargateProfileName field's value. +func (s *CreateFargateProfileInput) SetFargateProfileName(v string) *CreateFargateProfileInput { + s.FargateProfileName = &v + return s +} + +// SetPodExecutionRoleArn sets the PodExecutionRoleArn field's value. +func (s *CreateFargateProfileInput) SetPodExecutionRoleArn(v string) *CreateFargateProfileInput { + s.PodExecutionRoleArn = &v + return s +} + +// SetSelectors sets the Selectors field's value. +func (s *CreateFargateProfileInput) SetSelectors(v []*FargateProfileSelector) *CreateFargateProfileInput { + s.Selectors = v + return s +} + +// SetSubnets sets the Subnets field's value. +func (s *CreateFargateProfileInput) SetSubnets(v []*string) *CreateFargateProfileInput { + s.Subnets = v + return s +} + +// SetTags sets the Tags field's value. +func (s *CreateFargateProfileInput) SetTags(v map[string]*string) *CreateFargateProfileInput { + s.Tags = v + return s +} + +type CreateFargateProfileOutput struct { + _ struct{} `type:"structure"` + + // The full description of your new Fargate profile. + FargateProfile *FargateProfile `locationName:"fargateProfile" type:"structure"` +} + +// String returns the string representation +func (s CreateFargateProfileOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFargateProfileOutput) GoString() string { + return s.String() +} + +// SetFargateProfile sets the FargateProfile field's value. +func (s *CreateFargateProfileOutput) SetFargateProfile(v *FargateProfile) *CreateFargateProfileOutput { + s.FargateProfile = v + return s +} + +type CreateNodegroupInput struct { + _ struct{} `type:"structure"` + + // The AMI type for your node group. GPU instance types should use the AL2_x86_64_GPU + // AMI type. Non-GPU instances should use the AL2_x86_64 AMI type. Arm instances + // should use the AL2_ARM_64 AMI type. All types use the Amazon EKS optimized + // Amazon Linux 2 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 (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + AmiType *string `locationName:"amiType" type:"string" enum:"AMITypes"` + + // The capacity type for your node group. + CapacityType *string `locationName:"capacityType" type:"string" enum:"CapacityTypes"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the cluster to create the node group in. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // 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 (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + DiskSize *int64 `locationName:"diskSize" type:"integer"` + + // Specify the instance types for a node group. If you specify a GPU instance + // type, be sure to specify AL2_x86_64_GPU with the amiType parameter. If you + // specify launchTemplate, then you can specify zero or one instance type in + // your launch template or you can specify 0-20 instance types for instanceTypes. + // If however, you specify an instance type in your launch template and specify + // any instanceTypes, the node group deployment will fail. If you don't specify + // an instance type in a launch template or for instanceTypes, then t3.medium + // is used, by default. If you specify Spot for capacityType, then we recommend + // specifying multiple values for instanceTypes. For more information, see Managed + // node group capacity types (https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types) + // and Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + InstanceTypes []*string `locationName:"instanceTypes" type:"list"` + + // The Kubernetes labels to be applied to the nodes in the node group when they + // are created. + Labels map[string]*string `locationName:"labels" type:"map"` + + // An object representing a node group's launch template specification. If specified, + // then do not specify instanceTypes, diskSize, or remoteAccess and make sure + // that the launch template meets the requirements in launchTemplateSpecification. + LaunchTemplate *LaunchTemplateSpecification `locationName:"launchTemplate" type:"structure"` + + // 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. Nodes receive permissions for these API calls through an + // IAM instance profile and associated policies. Before you can launch nodes + // and register them into a cluster, you must create an IAM role for those nodes + // to use when they are launched. For more information, see Amazon EKS node + // IAM role (https://docs.aws.amazon.com/eks/latest/userguide/worker_node_IAM_role.html) + // in the Amazon EKS User Guide . If you specify launchTemplate, then don't + // specify IamInstanceProfile (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html) + // 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 (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + // + // NodeRole is a required field + NodeRole *string `locationName:"nodeRole" type:"string" required:"true"` + + // The unique name to give your node group. + // + // NodegroupName is a required field + NodegroupName *string `locationName:"nodegroupName" type:"string" required:"true"` + + // 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 + // Amazon Linux 2 AMI versions (https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) + // 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 (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + ReleaseVersion *string `locationName:"releaseVersion" type:"string"` + + // 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 (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + RemoteAccess *RemoteAccessConfig `locationName:"remoteAccess" type:"structure"` + + // The scaling configuration details for the Auto Scaling group that is created + // for your node group. + ScalingConfig *NodegroupScalingConfig `locationName:"scalingConfig" type:"structure"` + + // The subnets to use for the Auto Scaling group that is created for your node + // group. If you specify launchTemplate, then don't specify SubnetId (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html) + // 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 (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + // + // Subnets is a required field + Subnets []*string `locationName:"subnets" type:"list" required:"true"` + + // 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. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + + // The Kubernetes taints to be applied to the nodes in the node group. + Taints []*Taint `locationName:"taints" type:"list"` + + // 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 (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + Version *string `locationName:"version" type:"string"` +} + +// String returns the string representation +func (s CreateNodegroupInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNodegroupInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateNodegroupInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateNodegroupInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.NodeRole == nil { + invalidParams.Add(request.NewErrParamRequired("NodeRole")) + } + if s.NodegroupName == nil { + invalidParams.Add(request.NewErrParamRequired("NodegroupName")) + } + if s.Subnets == nil { + invalidParams.Add(request.NewErrParamRequired("Subnets")) + } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } + if s.ScalingConfig != nil { + if err := s.ScalingConfig.Validate(); err != nil { + invalidParams.AddNested("ScalingConfig", err.(request.ErrInvalidParams)) + } + } + if s.Taints != nil { + for i, v := range s.Taints { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Taints", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAmiType sets the AmiType field's value. +func (s *CreateNodegroupInput) SetAmiType(v string) *CreateNodegroupInput { + s.AmiType = &v + return s +} + +// SetCapacityType sets the CapacityType field's value. +func (s *CreateNodegroupInput) SetCapacityType(v string) *CreateNodegroupInput { + s.CapacityType = &v + return s +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *CreateNodegroupInput) SetClientRequestToken(v string) *CreateNodegroupInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *CreateNodegroupInput) SetClusterName(v string) *CreateNodegroupInput { + s.ClusterName = &v + return s +} + +// SetDiskSize sets the DiskSize field's value. +func (s *CreateNodegroupInput) SetDiskSize(v int64) *CreateNodegroupInput { + s.DiskSize = &v + return s +} + +// SetInstanceTypes sets the InstanceTypes field's value. +func (s *CreateNodegroupInput) SetInstanceTypes(v []*string) *CreateNodegroupInput { + s.InstanceTypes = v + return s +} + +// SetLabels sets the Labels field's value. +func (s *CreateNodegroupInput) SetLabels(v map[string]*string) *CreateNodegroupInput { + s.Labels = v + return s +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *CreateNodegroupInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *CreateNodegroupInput { + s.LaunchTemplate = v + return s +} + +// SetNodeRole sets the NodeRole field's value. +func (s *CreateNodegroupInput) SetNodeRole(v string) *CreateNodegroupInput { + s.NodeRole = &v + return s +} + +// SetNodegroupName sets the NodegroupName field's value. +func (s *CreateNodegroupInput) SetNodegroupName(v string) *CreateNodegroupInput { + s.NodegroupName = &v + return s +} + +// SetReleaseVersion sets the ReleaseVersion field's value. +func (s *CreateNodegroupInput) SetReleaseVersion(v string) *CreateNodegroupInput { + s.ReleaseVersion = &v + return s +} + +// SetRemoteAccess sets the RemoteAccess field's value. +func (s *CreateNodegroupInput) SetRemoteAccess(v *RemoteAccessConfig) *CreateNodegroupInput { + s.RemoteAccess = v + return s +} + +// SetScalingConfig sets the ScalingConfig field's value. +func (s *CreateNodegroupInput) SetScalingConfig(v *NodegroupScalingConfig) *CreateNodegroupInput { + s.ScalingConfig = v + return s +} + +// SetSubnets sets the Subnets field's value. +func (s *CreateNodegroupInput) SetSubnets(v []*string) *CreateNodegroupInput { + s.Subnets = v + return s +} + +// SetTags sets the Tags field's value. +func (s *CreateNodegroupInput) SetTags(v map[string]*string) *CreateNodegroupInput { + s.Tags = v + return s +} + +// SetTaints sets the Taints field's value. +func (s *CreateNodegroupInput) SetTaints(v []*Taint) *CreateNodegroupInput { + s.Taints = v + return s +} + +// SetVersion sets the Version field's value. +func (s *CreateNodegroupInput) SetVersion(v string) *CreateNodegroupInput { + s.Version = &v + return s +} + +type CreateNodegroupOutput struct { + _ struct{} `type:"structure"` + + // The full description of your new node group. + Nodegroup *Nodegroup `locationName:"nodegroup" type:"structure"` +} + +// String returns the string representation +func (s CreateNodegroupOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNodegroupOutput) GoString() string { + return s.String() +} + +// SetNodegroup sets the Nodegroup field's value. +func (s *CreateNodegroupOutput) SetNodegroup(v *Nodegroup) *CreateNodegroupOutput { + s.Nodegroup = v + return s +} + +type DeleteAddonInput struct { + _ struct{} `type:"structure"` + + // The name of the add-on. The name must match one of the names returned by + // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). + // + // AddonName is a required field + AddonName *string `location:"uri" locationName:"addonName" type:"string" required:"true"` + + // The name of the cluster to delete the add-on from. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteAddonInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteAddonInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteAddonInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteAddonInput"} + if s.AddonName == nil { + invalidParams.Add(request.NewErrParamRequired("AddonName")) + } + if s.AddonName != nil && len(*s.AddonName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("AddonName", 1)) + } + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddonName sets the AddonName field's value. +func (s *DeleteAddonInput) SetAddonName(v string) *DeleteAddonInput { + s.AddonName = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *DeleteAddonInput) SetClusterName(v string) *DeleteAddonInput { + s.ClusterName = &v + return s +} + +type DeleteAddonOutput struct { + _ struct{} `type:"structure"` + + // An Amazon EKS add-on. + Addon *Addon `locationName:"addon" type:"structure"` +} + +// String returns the string representation +func (s DeleteAddonOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteAddonOutput) GoString() string { + return s.String() +} + +// SetAddon sets the Addon field's value. +func (s *DeleteAddonOutput) SetAddon(v *Addon) *DeleteAddonOutput { + s.Addon = v + return s +} + +type DeleteClusterInput struct { + _ struct{} `type:"structure"` + + // The name of the cluster to delete. + // + // Name is a required field + Name *string `location:"uri" locationName:"name" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteClusterInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteClusterInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteClusterInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteClusterInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetName sets the Name field's value. +func (s *DeleteClusterInput) SetName(v string) *DeleteClusterInput { + s.Name = &v + return s +} + +type DeleteClusterOutput struct { + _ struct{} `type:"structure"` + + // The full description of the cluster to delete. + Cluster *Cluster `locationName:"cluster" type:"structure"` +} + +// String returns the string representation +func (s DeleteClusterOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteClusterOutput) GoString() string { + return s.String() +} + +// SetCluster sets the Cluster field's value. +func (s *DeleteClusterOutput) SetCluster(v *Cluster) *DeleteClusterOutput { + s.Cluster = v + return s +} + +type DeleteFargateProfileInput struct { + _ struct{} `type:"structure"` + + // The name of the Amazon EKS cluster associated with the Fargate profile to + // delete. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The name of the Fargate profile to delete. + // + // FargateProfileName is a required field + FargateProfileName *string `location:"uri" locationName:"fargateProfileName" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteFargateProfileInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFargateProfileInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteFargateProfileInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteFargateProfileInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.FargateProfileName == nil { + invalidParams.Add(request.NewErrParamRequired("FargateProfileName")) + } + if s.FargateProfileName != nil && len(*s.FargateProfileName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("FargateProfileName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *DeleteFargateProfileInput) SetClusterName(v string) *DeleteFargateProfileInput { + s.ClusterName = &v + return s +} + +// SetFargateProfileName sets the FargateProfileName field's value. +func (s *DeleteFargateProfileInput) SetFargateProfileName(v string) *DeleteFargateProfileInput { + s.FargateProfileName = &v + return s +} + +type DeleteFargateProfileOutput struct { + _ struct{} `type:"structure"` + + // The deleted Fargate profile. + FargateProfile *FargateProfile `locationName:"fargateProfile" type:"structure"` +} + +// String returns the string representation +func (s DeleteFargateProfileOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFargateProfileOutput) GoString() string { + return s.String() +} + +// SetFargateProfile sets the FargateProfile field's value. +func (s *DeleteFargateProfileOutput) SetFargateProfile(v *FargateProfile) *DeleteFargateProfileOutput { + s.FargateProfile = v + return s +} + +type DeleteNodegroupInput struct { + _ struct{} `type:"structure"` + + // The name of the Amazon EKS cluster that is associated with your node group. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The name of the node group to delete. + // + // NodegroupName is a required field + NodegroupName *string `location:"uri" locationName:"nodegroupName" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteNodegroupInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNodegroupInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteNodegroupInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteNodegroupInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.NodegroupName == nil { + invalidParams.Add(request.NewErrParamRequired("NodegroupName")) + } + if s.NodegroupName != nil && len(*s.NodegroupName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NodegroupName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *DeleteNodegroupInput) SetClusterName(v string) *DeleteNodegroupInput { + s.ClusterName = &v + return s +} + +// SetNodegroupName sets the NodegroupName field's value. +func (s *DeleteNodegroupInput) SetNodegroupName(v string) *DeleteNodegroupInput { + s.NodegroupName = &v + return s +} + +type DeleteNodegroupOutput struct { + _ struct{} `type:"structure"` + + // The full description of your deleted node group. + Nodegroup *Nodegroup `locationName:"nodegroup" type:"structure"` +} + +// String returns the string representation +func (s DeleteNodegroupOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNodegroupOutput) GoString() string { + return s.String() +} + +// SetNodegroup sets the Nodegroup field's value. +func (s *DeleteNodegroupOutput) SetNodegroup(v *Nodegroup) *DeleteNodegroupOutput { + s.Nodegroup = v + return s +} + +type DescribeAddonInput struct { + _ struct{} `type:"structure"` + + // The name of the add-on. The name must match one of the names returned by + // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). + // + // AddonName is a required field + AddonName *string `location:"uri" locationName:"addonName" type:"string" required:"true"` + + // The name of the cluster. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeAddonInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAddonInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeAddonInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeAddonInput"} + if s.AddonName == nil { + invalidParams.Add(request.NewErrParamRequired("AddonName")) + } + if s.AddonName != nil && len(*s.AddonName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("AddonName", 1)) + } + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddonName sets the AddonName field's value. +func (s *DescribeAddonInput) SetAddonName(v string) *DescribeAddonInput { + s.AddonName = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *DescribeAddonInput) SetClusterName(v string) *DescribeAddonInput { + s.ClusterName = &v + return s +} + +type DescribeAddonOutput struct { + _ struct{} `type:"structure"` + + // An Amazon EKS add-on. + Addon *Addon `locationName:"addon" type:"structure"` +} + +// String returns the string representation +func (s DescribeAddonOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAddonOutput) GoString() string { + return s.String() +} + +// SetAddon sets the Addon field's value. +func (s *DescribeAddonOutput) SetAddon(v *Addon) *DescribeAddonOutput { + s.Addon = v + return s +} + +type DescribeAddonVersionsInput struct { + _ struct{} `type:"structure"` + + // The name of the add-on. The name must match one of the names returned by + // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). + AddonName *string `location:"querystring" locationName:"addonName" type:"string"` + + // The Kubernetes versions that the add-on can be used with. + KubernetesVersion *string `location:"querystring" locationName:"kubernetesVersion" type:"string"` + + // The maximum number of results to return. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The nextToken value returned from a previous paginated DescribeAddonVersionsRequest + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + // + // This token should be treated as an opaque identifier that is used only to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeAddonVersionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAddonVersionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeAddonVersionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeAddonVersionsInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddonName sets the AddonName field's value. +func (s *DescribeAddonVersionsInput) SetAddonName(v string) *DescribeAddonVersionsInput { + s.AddonName = &v + return s +} + +// SetKubernetesVersion sets the KubernetesVersion field's value. +func (s *DescribeAddonVersionsInput) SetKubernetesVersion(v string) *DescribeAddonVersionsInput { + s.KubernetesVersion = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeAddonVersionsInput) SetMaxResults(v int64) *DescribeAddonVersionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeAddonVersionsInput) SetNextToken(v string) *DescribeAddonVersionsInput { + s.NextToken = &v + return s +} + +type DescribeAddonVersionsOutput struct { + _ struct{} `type:"structure"` + + // The list of available versions with Kubernetes version compatibility. + Addons []*AddonInfo `locationName:"addons" type:"list"` + + // The nextToken value returned from a previous paginated DescribeAddonVersionsResponse + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + // + // This token should be treated as an opaque identifier that is used only to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeAddonVersionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAddonVersionsOutput) GoString() string { + return s.String() +} + +// SetAddons sets the Addons field's value. +func (s *DescribeAddonVersionsOutput) SetAddons(v []*AddonInfo) *DescribeAddonVersionsOutput { + s.Addons = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeAddonVersionsOutput) SetNextToken(v string) *DescribeAddonVersionsOutput { + s.NextToken = &v + return s +} + +type DescribeClusterInput struct { + _ struct{} `type:"structure"` + + // The name of the cluster to describe. + // + // Name is a required field + Name *string `location:"uri" locationName:"name" type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeClusterInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClusterInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeClusterInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeClusterInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetName sets the Name field's value. +func (s *DescribeClusterInput) SetName(v string) *DescribeClusterInput { + s.Name = &v + return s +} + +type DescribeClusterOutput struct { + _ struct{} `type:"structure"` + + // The full description of your specified cluster. + Cluster *Cluster `locationName:"cluster" type:"structure"` +} + +// String returns the string representation +func (s DescribeClusterOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClusterOutput) GoString() string { + return s.String() +} + +// SetCluster sets the Cluster field's value. +func (s *DescribeClusterOutput) SetCluster(v *Cluster) *DescribeClusterOutput { + s.Cluster = v + return s +} + +type DescribeFargateProfileInput struct { + _ struct{} `type:"structure"` + + // The name of the Amazon EKS cluster associated with the Fargate profile. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The name of the Fargate profile to describe. + // + // FargateProfileName is a required field + FargateProfileName *string `location:"uri" locationName:"fargateProfileName" type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeFargateProfileInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFargateProfileInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeFargateProfileInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeFargateProfileInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.FargateProfileName == nil { + invalidParams.Add(request.NewErrParamRequired("FargateProfileName")) + } + if s.FargateProfileName != nil && len(*s.FargateProfileName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("FargateProfileName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *DescribeFargateProfileInput) SetClusterName(v string) *DescribeFargateProfileInput { + s.ClusterName = &v + return s +} + +// SetFargateProfileName sets the FargateProfileName field's value. +func (s *DescribeFargateProfileInput) SetFargateProfileName(v string) *DescribeFargateProfileInput { + s.FargateProfileName = &v + return s +} + +type DescribeFargateProfileOutput struct { + _ struct{} `type:"structure"` + + // The full description of your Fargate profile. + FargateProfile *FargateProfile `locationName:"fargateProfile" type:"structure"` +} + +// String returns the string representation +func (s DescribeFargateProfileOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFargateProfileOutput) GoString() string { + return s.String() +} + +// SetFargateProfile sets the FargateProfile field's value. +func (s *DescribeFargateProfileOutput) SetFargateProfile(v *FargateProfile) *DescribeFargateProfileOutput { + s.FargateProfile = v + return s +} + +type DescribeIdentityProviderConfigInput struct { + _ struct{} `type:"structure"` + + // The cluster name that the identity provider configuration is associated to. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // An object that represents an identity provider configuration. + // + // IdentityProviderConfig is a required field + IdentityProviderConfig *IdentityProviderConfig `locationName:"identityProviderConfig" type:"structure" required:"true"` +} + +// String returns the string representation +func (s DescribeIdentityProviderConfigInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeIdentityProviderConfigInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeIdentityProviderConfigInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeIdentityProviderConfigInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.IdentityProviderConfig == nil { + invalidParams.Add(request.NewErrParamRequired("IdentityProviderConfig")) + } + if s.IdentityProviderConfig != nil { + if err := s.IdentityProviderConfig.Validate(); err != nil { + invalidParams.AddNested("IdentityProviderConfig", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *DescribeIdentityProviderConfigInput) SetClusterName(v string) *DescribeIdentityProviderConfigInput { + s.ClusterName = &v + return s +} + +// SetIdentityProviderConfig sets the IdentityProviderConfig field's value. +func (s *DescribeIdentityProviderConfigInput) SetIdentityProviderConfig(v *IdentityProviderConfig) *DescribeIdentityProviderConfigInput { + s.IdentityProviderConfig = v + return s +} + +type DescribeIdentityProviderConfigOutput struct { + _ struct{} `type:"structure"` + + // The object that represents an OpenID Connect (OIDC) identity provider configuration. + IdentityProviderConfig *IdentityProviderConfigResponse `locationName:"identityProviderConfig" type:"structure"` +} + +// String returns the string representation +func (s DescribeIdentityProviderConfigOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeIdentityProviderConfigOutput) GoString() string { + return s.String() +} + +// SetIdentityProviderConfig sets the IdentityProviderConfig field's value. +func (s *DescribeIdentityProviderConfigOutput) SetIdentityProviderConfig(v *IdentityProviderConfigResponse) *DescribeIdentityProviderConfigOutput { + s.IdentityProviderConfig = v + return s +} + +type DescribeNodegroupInput struct { + _ struct{} `type:"structure"` + + // The name of the Amazon EKS cluster associated with the node group. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The name of the node group to describe. + // + // NodegroupName is a required field + NodegroupName *string `location:"uri" locationName:"nodegroupName" type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeNodegroupInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNodegroupInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeNodegroupInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeNodegroupInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.NodegroupName == nil { + invalidParams.Add(request.NewErrParamRequired("NodegroupName")) + } + if s.NodegroupName != nil && len(*s.NodegroupName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NodegroupName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *DescribeNodegroupInput) SetClusterName(v string) *DescribeNodegroupInput { + s.ClusterName = &v + return s +} + +// SetNodegroupName sets the NodegroupName field's value. +func (s *DescribeNodegroupInput) SetNodegroupName(v string) *DescribeNodegroupInput { + s.NodegroupName = &v + return s +} + +type DescribeNodegroupOutput struct { + _ struct{} `type:"structure"` + + // The full description of your node group. + Nodegroup *Nodegroup `locationName:"nodegroup" type:"structure"` +} + +// String returns the string representation +func (s DescribeNodegroupOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNodegroupOutput) GoString() string { + return s.String() +} + +// SetNodegroup sets the Nodegroup field's value. +func (s *DescribeNodegroupOutput) SetNodegroup(v *Nodegroup) *DescribeNodegroupOutput { + s.Nodegroup = v + return s +} + +type DescribeUpdateInput struct { + _ struct{} `type:"structure"` + + // The name of the add-on. The name must match one of the names returned by + // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). + AddonName *string `location:"querystring" locationName:"addonName" type:"string"` + + // The name of the Amazon EKS cluster associated with the update. + // + // Name is a required field + Name *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The name of the Amazon EKS node group associated with the update. + NodegroupName *string `location:"querystring" locationName:"nodegroupName" type:"string"` + + // The ID of the update to describe. + // + // UpdateId is a required field + UpdateId *string `location:"uri" locationName:"updateId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeUpdateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeUpdateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeUpdateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeUpdateInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + if s.UpdateId == nil { + invalidParams.Add(request.NewErrParamRequired("UpdateId")) + } + if s.UpdateId != nil && len(*s.UpdateId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("UpdateId", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddonName sets the AddonName field's value. +func (s *DescribeUpdateInput) SetAddonName(v string) *DescribeUpdateInput { + s.AddonName = &v + return s +} + +// SetName sets the Name field's value. +func (s *DescribeUpdateInput) SetName(v string) *DescribeUpdateInput { + s.Name = &v + return s +} + +// SetNodegroupName sets the NodegroupName field's value. +func (s *DescribeUpdateInput) SetNodegroupName(v string) *DescribeUpdateInput { + s.NodegroupName = &v + return s +} + +// SetUpdateId sets the UpdateId field's value. +func (s *DescribeUpdateInput) SetUpdateId(v string) *DescribeUpdateInput { + s.UpdateId = &v + return s +} + +type DescribeUpdateOutput struct { + _ struct{} `type:"structure"` + + // The full description of the specified update. + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s DescribeUpdateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeUpdateOutput) GoString() string { + return s.String() +} + +// SetUpdate sets the Update field's value. +func (s *DescribeUpdateOutput) SetUpdate(v *Update) *DescribeUpdateOutput { + s.Update = v + return s +} + +type DisassociateIdentityProviderConfigInput struct { + _ struct{} `type:"structure"` + + // A unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the cluster to disassociate an identity provider from. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // An object that represents an identity provider configuration. + // + // IdentityProviderConfig is a required field + IdentityProviderConfig *IdentityProviderConfig `locationName:"identityProviderConfig" type:"structure" required:"true"` +} + +// String returns the string representation +func (s DisassociateIdentityProviderConfigInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateIdentityProviderConfigInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisassociateIdentityProviderConfigInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisassociateIdentityProviderConfigInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.IdentityProviderConfig == nil { + invalidParams.Add(request.NewErrParamRequired("IdentityProviderConfig")) + } + if s.IdentityProviderConfig != nil { + if err := s.IdentityProviderConfig.Validate(); err != nil { + invalidParams.AddNested("IdentityProviderConfig", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *DisassociateIdentityProviderConfigInput) SetClientRequestToken(v string) *DisassociateIdentityProviderConfigInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *DisassociateIdentityProviderConfigInput) SetClusterName(v string) *DisassociateIdentityProviderConfigInput { + s.ClusterName = &v + return s +} + +// SetIdentityProviderConfig sets the IdentityProviderConfig field's value. +func (s *DisassociateIdentityProviderConfigInput) SetIdentityProviderConfig(v *IdentityProviderConfig) *DisassociateIdentityProviderConfigInput { + s.IdentityProviderConfig = v + return s +} + +type DisassociateIdentityProviderConfigOutput struct { + _ struct{} `type:"structure"` + + // An object representing an asynchronous update. + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s DisassociateIdentityProviderConfigOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateIdentityProviderConfigOutput) GoString() string { + return s.String() +} + +// SetUpdate sets the Update field's value. +func (s *DisassociateIdentityProviderConfigOutput) SetUpdate(v *Update) *DisassociateIdentityProviderConfigOutput { + s.Update = v + return s +} + +// The encryption configuration for the cluster. +type EncryptionConfig struct { + _ struct{} `type:"structure"` + + // AWS Key Management Service (AWS KMS) key. Either the ARN or the alias can + // be used. + Provider *Provider `locationName:"provider" type:"structure"` + + // Specifies the resources to be encrypted. The only supported value is "secrets". + Resources []*string `locationName:"resources" type:"list"` +} + +// String returns the string representation +func (s EncryptionConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EncryptionConfig) GoString() string { + return s.String() +} + +// SetProvider sets the Provider field's value. +func (s *EncryptionConfig) SetProvider(v *Provider) *EncryptionConfig { + s.Provider = v + return s +} + +// SetResources sets the Resources field's value. +func (s *EncryptionConfig) SetResources(v []*string) *EncryptionConfig { + s.Resources = v + return s +} + +// An object representing an error when an asynchronous operation fails. +type ErrorDetail struct { + _ struct{} `type:"structure"` + + // A brief description of the error. + // + // * SubnetNotFound: We couldn't find one of the subnets associated with + // the cluster. + // + // * SecurityGroupNotFound: We couldn't find one of the security groups associated + // with the cluster. + // + // * EniLimitReached: You have reached the elastic network interface limit + // for your account. + // + // * IpNotAvailable: A subnet associated with the cluster doesn't have any + // free IP addresses. + // + // * AccessDenied: You don't have permissions to perform the specified operation. + // + // * OperationNotPermitted: The service role associated with the cluster + // doesn't have the required access permissions for Amazon EKS. + // + // * VpcIdNotFound: We couldn't find the VPC associated with the cluster. + ErrorCode *string `locationName:"errorCode" type:"string" enum:"ErrorCode"` + + // A more complete description of the error. + ErrorMessage *string `locationName:"errorMessage" type:"string"` + + // An optional field that contains the resource IDs associated with the error. + ResourceIds []*string `locationName:"resourceIds" type:"list"` +} + +// String returns the string representation +func (s ErrorDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ErrorDetail) GoString() string { + return s.String() +} + +// SetErrorCode sets the ErrorCode field's value. +func (s *ErrorDetail) SetErrorCode(v string) *ErrorDetail { + s.ErrorCode = &v + return s +} + +// SetErrorMessage sets the ErrorMessage field's value. +func (s *ErrorDetail) SetErrorMessage(v string) *ErrorDetail { + s.ErrorMessage = &v + return s +} + +// SetResourceIds sets the ResourceIds field's value. +func (s *ErrorDetail) SetResourceIds(v []*string) *ErrorDetail { + s.ResourceIds = v + return s +} + +// An object representing an AWS Fargate profile. +type FargateProfile struct { + _ struct{} `type:"structure"` + + // The name of the Amazon EKS cluster that the Fargate profile belongs to. + ClusterName *string `locationName:"clusterName" type:"string"` + + // The Unix epoch timestamp in seconds for when the Fargate profile was created. + CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` + + // The full Amazon Resource Name (ARN) of the Fargate profile. + FargateProfileArn *string `locationName:"fargateProfileArn" type:"string"` + + // The name of the Fargate profile. + FargateProfileName *string `locationName:"fargateProfileName" type:"string"` + + // The Amazon Resource Name (ARN) of the pod execution role to use for pods + // that match the selectors in the Fargate profile. For more information, see + // Pod Execution Role (https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) + // in the Amazon EKS User Guide. + PodExecutionRoleArn *string `locationName:"podExecutionRoleArn" type:"string"` + + // The selectors to match for pods to use this Fargate profile. + Selectors []*FargateProfileSelector `locationName:"selectors" type:"list"` + + // The current status of the Fargate profile. + Status *string `locationName:"status" type:"string" enum:"FargateProfileStatus"` + + // The IDs of subnets to launch pods into. + Subnets []*string `locationName:"subnets" type:"list"` + + // The metadata applied to the Fargate profile to assist with categorization + // and organization. Each tag consists of a key and an optional value, both + // of which you define. Fargate profile tags do not propagate to any other resources + // associated with the Fargate profile, such as the pods that are scheduled + // with it. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` +} + +// String returns the string representation +func (s FargateProfile) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FargateProfile) GoString() string { + return s.String() +} + +// SetClusterName sets the ClusterName field's value. +func (s *FargateProfile) SetClusterName(v string) *FargateProfile { + s.ClusterName = &v + return s +} + +// SetCreatedAt sets the CreatedAt field's value. +func (s *FargateProfile) SetCreatedAt(v time.Time) *FargateProfile { + s.CreatedAt = &v + return s +} + +// SetFargateProfileArn sets the FargateProfileArn field's value. +func (s *FargateProfile) SetFargateProfileArn(v string) *FargateProfile { + s.FargateProfileArn = &v + return s +} + +// SetFargateProfileName sets the FargateProfileName field's value. +func (s *FargateProfile) SetFargateProfileName(v string) *FargateProfile { + s.FargateProfileName = &v + return s +} + +// SetPodExecutionRoleArn sets the PodExecutionRoleArn field's value. +func (s *FargateProfile) SetPodExecutionRoleArn(v string) *FargateProfile { + s.PodExecutionRoleArn = &v + return s +} + +// SetSelectors sets the Selectors field's value. +func (s *FargateProfile) SetSelectors(v []*FargateProfileSelector) *FargateProfile { + s.Selectors = v + return s +} + +// SetStatus sets the Status field's value. +func (s *FargateProfile) SetStatus(v string) *FargateProfile { + s.Status = &v + return s +} + +// SetSubnets sets the Subnets field's value. +func (s *FargateProfile) SetSubnets(v []*string) *FargateProfile { + s.Subnets = v + return s +} + +// SetTags sets the Tags field's value. +func (s *FargateProfile) SetTags(v map[string]*string) *FargateProfile { + s.Tags = v + return s +} + +// An object representing an AWS Fargate profile selector. +type FargateProfileSelector struct { + _ struct{} `type:"structure"` + + // The Kubernetes labels that the selector should match. A pod must contain + // all of the labels that are specified in the selector for it to be considered + // a match. + Labels map[string]*string `locationName:"labels" type:"map"` + + // The Kubernetes namespace that the selector should match. + Namespace *string `locationName:"namespace" type:"string"` +} + +// String returns the string representation +func (s FargateProfileSelector) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FargateProfileSelector) GoString() string { + return s.String() +} + +// SetLabels sets the Labels field's value. +func (s *FargateProfileSelector) SetLabels(v map[string]*string) *FargateProfileSelector { + s.Labels = v + return s +} + +// SetNamespace sets the Namespace field's value. +func (s *FargateProfileSelector) SetNamespace(v string) *FargateProfileSelector { + s.Namespace = &v + return s +} + +// An object representing an identity provider. +type Identity struct { + _ struct{} `type:"structure"` + + // An object representing the OpenID Connect (https://openid.net/connect/) identity + // provider information. + Oidc *OIDC `locationName:"oidc" type:"structure"` +} + +// String returns the string representation +func (s Identity) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Identity) GoString() string { + return s.String() +} + +// SetOidc sets the Oidc field's value. +func (s *Identity) SetOidc(v *OIDC) *Identity { + s.Oidc = v + return s +} + +// An object representing an identity provider configuration. +type IdentityProviderConfig struct { + _ struct{} `type:"structure"` + + // The name of the identity provider configuration. + // + // Name is a required field + Name *string `locationName:"name" type:"string" required:"true"` + + // The type of the identity provider configuration. + // + // Type is a required field + Type *string `locationName:"type" type:"string" required:"true"` +} + +// String returns the string representation +func (s IdentityProviderConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IdentityProviderConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *IdentityProviderConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "IdentityProviderConfig"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetName sets the Name field's value. +func (s *IdentityProviderConfig) SetName(v string) *IdentityProviderConfig { + s.Name = &v + return s +} + +// SetType sets the Type field's value. +func (s *IdentityProviderConfig) SetType(v string) *IdentityProviderConfig { + s.Type = &v + return s +} + +// An object that represents an identity configuration. +type IdentityProviderConfigResponse struct { + _ struct{} `type:"structure"` + + // An object that represents an OpenID Connect (OIDC) identity provider configuration. + Oidc *OidcIdentityProviderConfig `locationName:"oidc" type:"structure"` +} + +// String returns the string representation +func (s IdentityProviderConfigResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IdentityProviderConfigResponse) GoString() string { + return s.String() +} + +// SetOidc sets the Oidc field's value. +func (s *IdentityProviderConfigResponse) SetOidc(v *OidcIdentityProviderConfig) *IdentityProviderConfigResponse { + s.Oidc = v + return s +} + +// The specified parameter is invalid. Review the available parameters for the +// API request. +type InvalidParameterException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + AddonName *string `locationName:"addonName" type:"string"` + + // The Amazon EKS cluster associated with the exception. + ClusterName *string `locationName:"clusterName" type:"string"` + + // The Fargate profile associated with the exception. + FargateProfileName *string `locationName:"fargateProfileName" type:"string"` + + Message_ *string `locationName:"message" type:"string"` + + // The Amazon EKS managed node group associated with the exception. + NodegroupName *string `locationName:"nodegroupName" type:"string"` +} + +// String returns the string representation +func (s InvalidParameterException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InvalidParameterException) GoString() string { + return s.String() +} + +func newErrorInvalidParameterException(v protocol.ResponseMetadata) error { + return &InvalidParameterException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *InvalidParameterException) Code() string { + return "InvalidParameterException" +} + +// Message returns the exception's message. +func (s *InvalidParameterException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *InvalidParameterException) OrigErr() error { + return nil +} + +func (s *InvalidParameterException) Error() string { + return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *InvalidParameterException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *InvalidParameterException) RequestID() string { + return s.RespMetadata.RequestID +} + +// The request is invalid given the state of the cluster. Check the state of +// the cluster and the associated operations. +type InvalidRequestException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + AddonName *string `locationName:"addonName" type:"string"` + + // The Amazon EKS cluster associated with the exception. + ClusterName *string `locationName:"clusterName" type:"string"` + + Message_ *string `locationName:"message" type:"string"` + + // The Amazon EKS managed node group associated with the exception. + NodegroupName *string `locationName:"nodegroupName" type:"string"` +} + +// String returns the string representation +func (s InvalidRequestException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InvalidRequestException) GoString() string { + return s.String() +} + +func newErrorInvalidRequestException(v protocol.ResponseMetadata) error { + return &InvalidRequestException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *InvalidRequestException) Code() string { + return "InvalidRequestException" +} + +// Message returns the exception's message. +func (s *InvalidRequestException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *InvalidRequestException) OrigErr() error { + return nil +} + +func (s *InvalidRequestException) Error() string { + return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *InvalidRequestException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *InvalidRequestException) RequestID() string { + return s.RespMetadata.RequestID +} + +// An object representing an issue with an Amazon EKS resource. +type Issue struct { + _ struct{} `type:"structure"` + + // A brief description of the error. + // + // * AccessDenied: Amazon EKS or one or more of your managed nodes is failing + // to authenticate or authorize with your Kubernetes cluster API server. + // + // * AsgInstanceLaunchFailures: Your Auto Scaling group is experiencing failures + // while attempting to launch instances. + // + // * AutoScalingGroupNotFound: We couldn't find the Auto Scaling group associated + // with the managed node group. You may be able to recreate an Auto Scaling + // group with the same settings to recover. + // + // * ClusterUnreachable: Amazon EKS or one or more of your managed nodes + // is unable to to communicate with your Kubernetes cluster API server. This + // can happen if there are network disruptions or if API servers are timing + // out processing requests. + // + // * Ec2LaunchTemplateNotFound: We couldn't find the Amazon EC2 launch template + // for your managed node group. You may be able to recreate a launch template + // with the same settings to recover. + // + // * Ec2LaunchTemplateVersionMismatch: The Amazon EC2 launch template version + // for your managed node group does not match the version that Amazon EKS + // created. You may be able to revert to the version that Amazon EKS created + // to recover. + // + // * Ec2SecurityGroupDeletionFailure: We could not delete the remote access + // security group for your managed node group. Remove any dependencies from + // the security group. + // + // * Ec2SecurityGroupNotFound: We couldn't find the cluster security group + // for the cluster. You must recreate your cluster. + // + // * Ec2SubnetInvalidConfiguration: One or more Amazon EC2 subnets specified + // for a node group do not automatically assign public IP addresses to instances + // launched into it. If you want your instances to be assigned a public IP + // address, then you need to enable the auto-assign public IP address setting + // for the subnet. See Modifying the public IPv4 addressing attribute for + // your subnet (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) + // in the Amazon VPC User Guide. + // + // * IamInstanceProfileNotFound: We couldn't find the IAM instance profile + // for your managed node group. You may be able to recreate an instance profile + // with the same settings to recover. + // + // * IamNodeRoleNotFound: We couldn't find the IAM role for your managed + // node group. You may be able to recreate an IAM role with the same settings + // to recover. + // + // * InstanceLimitExceeded: Your AWS account is unable to launch any more + // instances of the specified instance type. You may be able to request an + // Amazon EC2 instance limit increase to recover. + // + // * InsufficientFreeAddresses: One or more of the subnets associated with + // your managed node group does not have enough available IP addresses for + // new nodes. + // + // * InternalFailure: These errors are usually caused by an Amazon EKS server-side + // issue. + // + // * NodeCreationFailure: Your launched instances are unable to register + // with your Amazon EKS cluster. Common causes of this failure are insufficient + // node IAM role (https://docs.aws.amazon.com/eks/latest/userguide/worker_node_IAM_role.html) + // permissions or lack of outbound internet access for the nodes. + Code *string `locationName:"code" type:"string" enum:"NodegroupIssueCode"` + + // The error message associated with the issue. + Message *string `locationName:"message" type:"string"` + + // The AWS resources that are afflicted by this issue. + ResourceIds []*string `locationName:"resourceIds" type:"list"` +} + +// String returns the string representation +func (s Issue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Issue) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *Issue) SetCode(v string) *Issue { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *Issue) SetMessage(v string) *Issue { + s.Message = &v + return s +} + +// SetResourceIds sets the ResourceIds field's value. +func (s *Issue) SetResourceIds(v []*string) *Issue { + s.ResourceIds = v + return s +} + +// The Kubernetes network configuration for the cluster. +type KubernetesNetworkConfigRequest struct { + _ struct{} `type:"structure"` + + // The CIDR block to assign Kubernetes service IP addresses from. If you don't + // specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 + // or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that + // does not overlap with resources in other networks that are peered or connected + // to your VPC. The block must meet the following requirements: + // + // * Within one of the following private IP address blocks: 10.0.0.0/8, 172.16.0.0.0/12, + // or 192.168.0.0/16. + // + // * Doesn't overlap with any CIDR block assigned to the VPC that you selected + // for VPC. + // + // * Between /24 and /12. + // + // You can only specify a custom CIDR block when you create a cluster and can't + // change this value once the cluster is created. + ServiceIpv4Cidr *string `locationName:"serviceIpv4Cidr" type:"string"` +} + +// String returns the string representation +func (s KubernetesNetworkConfigRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s KubernetesNetworkConfigRequest) GoString() string { + return s.String() +} + +// SetServiceIpv4Cidr sets the ServiceIpv4Cidr field's value. +func (s *KubernetesNetworkConfigRequest) SetServiceIpv4Cidr(v string) *KubernetesNetworkConfigRequest { + s.ServiceIpv4Cidr = &v + return s +} + +// The Kubernetes network configuration for the cluster. +type KubernetesNetworkConfigResponse struct { + _ struct{} `type:"structure"` + + // The CIDR block that Kubernetes service IP addresses are assigned from. If + // you didn't specify a CIDR block when you created the cluster, then Kubernetes + // assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. + // If this was specified, then it was specified when the cluster was created + // and it cannot be changed. + ServiceIpv4Cidr *string `locationName:"serviceIpv4Cidr" type:"string"` +} + +// String returns the string representation +func (s KubernetesNetworkConfigResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s KubernetesNetworkConfigResponse) GoString() string { + return s.String() +} + +// SetServiceIpv4Cidr sets the ServiceIpv4Cidr field's value. +func (s *KubernetesNetworkConfigResponse) SetServiceIpv4Cidr(v string) *KubernetesNetworkConfigResponse { + s.ServiceIpv4Cidr = &v + return s +} + +// An object representing a node group launch template specification. The launch +// template cannot include SubnetId (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html), +// IamInstanceProfile (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html), +// RequestSpotInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html), +// HibernationOptions (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_HibernationOptionsRequest.html), +// or TerminateInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TerminateInstances.html), +// or the node group deployment or update will fail. For more information about +// launch templates, see CreateLaunchTemplate (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html) +// in the Amazon EC2 API Reference. For more information about using launch +// templates with Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) +// in the Amazon EKS User Guide. +// +// Specify either name or id, but not both. +type LaunchTemplateSpecification struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + Id *string `locationName:"id" type:"string"` + + // The name of the launch template. + Name *string `locationName:"name" type:"string"` + + // The version of the launch template to use. If no version is specified, then + // the template's default version is used. + Version *string `locationName:"version" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateSpecification) GoString() string { + return s.String() +} + +// SetId sets the Id field's value. +func (s *LaunchTemplateSpecification) SetId(v string) *LaunchTemplateSpecification { + s.Id = &v + return s +} + +// SetName sets the Name field's value. +func (s *LaunchTemplateSpecification) SetName(v string) *LaunchTemplateSpecification { + s.Name = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *LaunchTemplateSpecification) SetVersion(v string) *LaunchTemplateSpecification { + s.Version = &v + return s +} + +type ListAddonsInput struct { + _ struct{} `type:"structure"` + + // The name of the cluster. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` + + // The maximum number of add-on results returned by ListAddonsRequest in paginated + // output. When you use this parameter, ListAddonsRequest returns only maxResults + // results in a single page along with a nextToken response element. You can + // see the remaining results of the initial request by sending another ListAddonsRequest + // request with the returned nextToken value. This value can be between 1 and + // 100. If you don't use this parameter, ListAddonsRequest returns up to 100 + // results and a nextToken value, if applicable. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The nextToken value returned from a previous paginated ListAddonsRequest + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + // + // This token should be treated as an opaque identifier that is used only to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListAddonsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListAddonsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListAddonsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListAddonsInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *ListAddonsInput) SetClusterName(v string) *ListAddonsInput { + s.ClusterName = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListAddonsInput) SetMaxResults(v int64) *ListAddonsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListAddonsInput) SetNextToken(v string) *ListAddonsInput { + s.NextToken = &v + return s +} + +type ListAddonsOutput struct { + _ struct{} `type:"structure"` + + // A list of available add-ons. + Addons []*string `locationName:"addons" type:"list"` + + // The nextToken value returned from a previous paginated ListAddonsResponse + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + // + // This token should be treated as an opaque identifier that is used only to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListAddonsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListAddonsOutput) GoString() string { + return s.String() +} + +// SetAddons sets the Addons field's value. +func (s *ListAddonsOutput) SetAddons(v []*string) *ListAddonsOutput { + s.Addons = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListAddonsOutput) SetNextToken(v string) *ListAddonsOutput { + s.NextToken = &v + return s +} + +type ListClustersInput struct { + _ struct{} `type:"structure"` + + // The maximum number of cluster results returned by ListClusters in paginated + // output. When you use this parameter, ListClusters returns only maxResults + // results in a single page along with a nextToken response element. You can + // see the remaining results of the initial request by sending another ListClusters + // request with the returned nextToken value. This value can be between 1 and + // 100. If you don't use this parameter, ListClusters returns up to 100 results + // and a nextToken value if applicable. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The nextToken value returned from a previous paginated ListClusters request + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + // + // This token should be treated as an opaque identifier that is used only to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListClustersInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListClustersInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListClustersInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListClustersInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListClustersInput) SetMaxResults(v int64) *ListClustersInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListClustersInput) SetNextToken(v string) *ListClustersInput { + s.NextToken = &v + return s +} + +type ListClustersOutput struct { + _ struct{} `type:"structure"` + + // A list of all of the clusters for your account in the specified Region. + Clusters []*string `locationName:"clusters" type:"list"` + + // The nextToken value to include in a future ListClusters request. When the + // results of a ListClusters request exceed maxResults, you can use this value + // to retrieve the next page of results. This value is null when there are no + // more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListClustersOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListClustersOutput) GoString() string { + return s.String() +} + +// SetClusters sets the Clusters field's value. +func (s *ListClustersOutput) SetClusters(v []*string) *ListClustersOutput { + s.Clusters = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListClustersOutput) SetNextToken(v string) *ListClustersOutput { + s.NextToken = &v + return s +} + +type ListFargateProfilesInput struct { + _ struct{} `type:"structure"` + + // The name of the Amazon EKS cluster that you would like to listFargate profiles + // in. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The maximum number of Fargate profile results returned by ListFargateProfiles + // in paginated output. When you use this parameter, ListFargateProfiles returns + // only maxResults results in a single page along with a nextToken response + // element. You can see the remaining results of the initial request by sending + // another ListFargateProfiles request with the returned nextToken value. This + // value can be between 1 and 100. If you don't use this parameter, ListFargateProfiles + // returns up to 100 results and a nextToken value if applicable. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The nextToken value returned from a previous paginated ListFargateProfiles + // request where maxResults was used and the results exceeded the value of that + // parameter. Pagination continues from the end of the previous results that + // returned the nextToken value. + NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListFargateProfilesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListFargateProfilesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListFargateProfilesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListFargateProfilesInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *ListFargateProfilesInput) SetClusterName(v string) *ListFargateProfilesInput { + s.ClusterName = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListFargateProfilesInput) SetMaxResults(v int64) *ListFargateProfilesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListFargateProfilesInput) SetNextToken(v string) *ListFargateProfilesInput { + s.NextToken = &v + return s +} + +type ListFargateProfilesOutput struct { + _ struct{} `type:"structure"` + + // A list of all of the Fargate profiles associated with the specified cluster. + FargateProfileNames []*string `locationName:"fargateProfileNames" type:"list"` + + // The nextToken value to include in a future ListFargateProfiles request. When + // the results of a ListFargateProfiles request exceed maxResults, you can use + // this value to retrieve the next page of results. This value is null when + // there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListFargateProfilesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListFargateProfilesOutput) GoString() string { + return s.String() +} + +// SetFargateProfileNames sets the FargateProfileNames field's value. +func (s *ListFargateProfilesOutput) SetFargateProfileNames(v []*string) *ListFargateProfilesOutput { + s.FargateProfileNames = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListFargateProfilesOutput) SetNextToken(v string) *ListFargateProfilesOutput { + s.NextToken = &v + return s +} + +type ListIdentityProviderConfigsInput struct { + _ struct{} `type:"structure"` + + // The cluster name that you want to list identity provider configurations for. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The maximum number of identity provider configurations returned by ListIdentityProviderConfigs + // in paginated output. When you use this parameter, ListIdentityProviderConfigs + // returns only maxResults results in a single page along with a nextToken response + // element. You can see the remaining results of the initial request by sending + // another ListIdentityProviderConfigs request with the returned nextToken value. + // This value can be between 1 and 100. If you don't use this parameter, ListIdentityProviderConfigs + // returns up to 100 results and a nextToken value, if applicable. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The nextToken value returned from a previous paginated IdentityProviderConfigsRequest + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListIdentityProviderConfigsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListIdentityProviderConfigsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListIdentityProviderConfigsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListIdentityProviderConfigsInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *ListIdentityProviderConfigsInput) SetClusterName(v string) *ListIdentityProviderConfigsInput { + s.ClusterName = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListIdentityProviderConfigsInput) SetMaxResults(v int64) *ListIdentityProviderConfigsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListIdentityProviderConfigsInput) SetNextToken(v string) *ListIdentityProviderConfigsInput { + s.NextToken = &v + return s +} + +type ListIdentityProviderConfigsOutput struct { + _ struct{} `type:"structure"` + + // The identity provider configurations for the cluster. + IdentityProviderConfigs []*IdentityProviderConfig `locationName:"identityProviderConfigs" type:"list"` + + // The nextToken value returned from a previous paginated ListIdentityProviderConfigsResponse + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListIdentityProviderConfigsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListIdentityProviderConfigsOutput) GoString() string { + return s.String() +} + +// SetIdentityProviderConfigs sets the IdentityProviderConfigs field's value. +func (s *ListIdentityProviderConfigsOutput) SetIdentityProviderConfigs(v []*IdentityProviderConfig) *ListIdentityProviderConfigsOutput { + s.IdentityProviderConfigs = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListIdentityProviderConfigsOutput) SetNextToken(v string) *ListIdentityProviderConfigsOutput { + s.NextToken = &v + return s +} + +type ListNodegroupsInput struct { + _ struct{} `type:"structure"` + + // The name of the Amazon EKS cluster that you would like to list node groups + // in. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The maximum number of node group results returned by ListNodegroups in paginated + // output. When you use this parameter, ListNodegroups returns only maxResults + // results in a single page along with a nextToken response element. You can + // see the remaining results of the initial request by sending another ListNodegroups + // request with the returned nextToken value. This value can be between 1 and + // 100. If you don't use this parameter, ListNodegroups returns up to 100 results + // and a nextToken value if applicable. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The nextToken value returned from a previous paginated ListNodegroups request + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListNodegroupsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListNodegroupsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListNodegroupsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListNodegroupsInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterName sets the ClusterName field's value. +func (s *ListNodegroupsInput) SetClusterName(v string) *ListNodegroupsInput { + s.ClusterName = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListNodegroupsInput) SetMaxResults(v int64) *ListNodegroupsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListNodegroupsInput) SetNextToken(v string) *ListNodegroupsInput { + s.NextToken = &v + return s +} + +type ListNodegroupsOutput struct { + _ struct{} `type:"structure"` + + // The nextToken value to include in a future ListNodegroups request. When the + // results of a ListNodegroups request exceed maxResults, you can use this value + // to retrieve the next page of results. This value is null when there are no + // more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // A list of all of the node groups associated with the specified cluster. + Nodegroups []*string `locationName:"nodegroups" type:"list"` +} + +// String returns the string representation +func (s ListNodegroupsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListNodegroupsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListNodegroupsOutput) SetNextToken(v string) *ListNodegroupsOutput { + s.NextToken = &v + return s +} + +// SetNodegroups sets the Nodegroups field's value. +func (s *ListNodegroupsOutput) SetNodegroups(v []*string) *ListNodegroupsOutput { + s.Nodegroups = v + return s +} + +type ListTagsForResourceInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) that identifies the resource for which to + // list the tags. Currently, the supported resources are Amazon EKS clusters + // and managed node groups. + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListTagsForResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListTagsForResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListTagsForResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput { + s.ResourceArn = &v + return s +} + +type ListTagsForResourceOutput struct { + _ struct{} `type:"structure"` + + // The tags for the resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` +} + +// String returns the string representation +func (s ListTagsForResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListTagsForResourceOutput) GoString() string { + return s.String() +} + +// SetTags sets the Tags field's value. +func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput { + s.Tags = v + return s +} + +type ListUpdatesInput struct { + _ struct{} `type:"structure"` + + // The names of the installed add-ons that have available updates. + AddonName *string `location:"querystring" locationName:"addonName" type:"string"` + + // The maximum number of update results returned by ListUpdates in paginated + // output. When you use this parameter, ListUpdates returns only maxResults + // results in a single page along with a nextToken response element. You can + // see the remaining results of the initial request by sending another ListUpdates + // request with the returned nextToken value. This value can be between 1 and + // 100. If you don't use this parameter, ListUpdates returns up to 100 results + // and a nextToken value if applicable. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The name of the Amazon EKS cluster to list updates for. + // + // Name is a required field + Name *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The nextToken value returned from a previous paginated ListUpdates request + // where maxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // nextToken value. + NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` + + // The name of the Amazon EKS managed node group to list updates for. + NodegroupName *string `location:"querystring" locationName:"nodegroupName" type:"string"` +} + +// String returns the string representation +func (s ListUpdatesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListUpdatesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListUpdatesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListUpdatesInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddonName sets the AddonName field's value. +func (s *ListUpdatesInput) SetAddonName(v string) *ListUpdatesInput { + s.AddonName = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListUpdatesInput) SetMaxResults(v int64) *ListUpdatesInput { + s.MaxResults = &v + return s +} + +// SetName sets the Name field's value. +func (s *ListUpdatesInput) SetName(v string) *ListUpdatesInput { + s.Name = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListUpdatesInput) SetNextToken(v string) *ListUpdatesInput { + s.NextToken = &v + return s +} + +// SetNodegroupName sets the NodegroupName field's value. +func (s *ListUpdatesInput) SetNodegroupName(v string) *ListUpdatesInput { + s.NodegroupName = &v + return s +} + +type ListUpdatesOutput struct { + _ struct{} `type:"structure"` + + // The nextToken value to include in a future ListUpdates request. When the + // results of a ListUpdates request exceed maxResults, you can use this value + // to retrieve the next page of results. This value is null when there are no + // more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // A list of all the updates for the specified cluster and Region. + UpdateIds []*string `locationName:"updateIds" type:"list"` +} + +// String returns the string representation +func (s ListUpdatesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListUpdatesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListUpdatesOutput) SetNextToken(v string) *ListUpdatesOutput { + s.NextToken = &v + return s +} + +// SetUpdateIds sets the UpdateIds field's value. +func (s *ListUpdatesOutput) SetUpdateIds(v []*string) *ListUpdatesOutput { + s.UpdateIds = v + return s +} + +// An object representing the enabled or disabled Kubernetes control plane logs +// for your cluster. +type LogSetup struct { + _ struct{} `type:"structure"` + + // If a log type is enabled, that log type exports its control plane logs to + // CloudWatch Logs. If a log type isn't enabled, that log type doesn't export + // its control plane logs. Each individual log type can be enabled or disabled + // independently. + Enabled *bool `locationName:"enabled" type:"boolean"` + + // The available cluster control plane log types. + Types []*string `locationName:"types" type:"list"` +} + +// String returns the string representation +func (s LogSetup) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LogSetup) GoString() string { + return s.String() +} + +// SetEnabled sets the Enabled field's value. +func (s *LogSetup) SetEnabled(v bool) *LogSetup { + s.Enabled = &v + return s +} + +// SetTypes sets the Types field's value. +func (s *LogSetup) SetTypes(v []*string) *LogSetup { + s.Types = v + return s +} + +// An object representing the logging configuration for resources in your cluster. +type Logging struct { + _ struct{} `type:"structure"` + + // The cluster control plane logging configuration for your cluster. + ClusterLogging []*LogSetup `locationName:"clusterLogging" type:"list"` +} + +// String returns the string representation +func (s Logging) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Logging) GoString() string { + return s.String() +} + +// SetClusterLogging sets the ClusterLogging field's value. +func (s *Logging) SetClusterLogging(v []*LogSetup) *Logging { + s.ClusterLogging = v + return s +} + +// An object representing an Amazon EKS managed node group. +type Nodegroup struct { + _ struct{} `type:"structure"` + + // If the node group was deployed using a launch template with a custom AMI, + // then this is CUSTOM. For node groups that weren't deployed using a launch + // template, this is the AMI type that was specified in the node group configuration. + AmiType *string `locationName:"amiType" type:"string" enum:"AMITypes"` + + // The capacity type of your managed node group. + CapacityType *string `locationName:"capacityType" type:"string" enum:"CapacityTypes"` + + // The name of the cluster that the managed node group resides in. + ClusterName *string `locationName:"clusterName" type:"string"` + + // The Unix epoch timestamp in seconds for when the managed node group was created. + CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` + + // If the node group wasn't deployed with a launch template, then this is the + // disk size in the node group configuration. If the node group was deployed + // with a launch template, then this is null. + DiskSize *int64 `locationName:"diskSize" type:"integer"` + + // The health status of the node group. If there are issues with your node group's + // health, they are listed here. + Health *NodegroupHealth `locationName:"health" type:"structure"` + + // If the node group wasn't deployed with a launch template, then this is the + // instance type that is associated with the node group. If the node group was + // deployed with a launch template, then this is null. + InstanceTypes []*string `locationName:"instanceTypes" type:"list"` + + // The Kubernetes labels applied to the nodes in the node group. + // + // Only labels that are applied with the Amazon EKS API are shown here. There + // may be other Kubernetes labels applied to the nodes in this group. + Labels map[string]*string `locationName:"labels" type:"map"` + + // If a launch template was used to create the node group, then this is the + // launch template that was used. + LaunchTemplate *LaunchTemplateSpecification `locationName:"launchTemplate" type:"structure"` + + // The Unix epoch timestamp in seconds for when the managed node group was last + // modified. + ModifiedAt *time.Time `locationName:"modifiedAt" type:"timestamp"` + + // The IAM role associated with your node group. The Amazon EKS node kubelet + // daemon makes calls to AWS APIs on your behalf. Nodes receive permissions + // for these API calls through an IAM instance profile and associated policies. + NodeRole *string `locationName:"nodeRole" type:"string"` + + // The Amazon Resource Name (ARN) associated with the managed node group. + NodegroupArn *string `locationName:"nodegroupArn" type:"string"` + + // The name associated with an Amazon EKS managed node group. + NodegroupName *string `locationName:"nodegroupName" type:"string"` + + // If the node group was deployed using a launch template with a custom AMI, + // then this is the AMI ID that was specified in the launch template. For node + // groups that weren't deployed using a launch template, this is the version + // of the Amazon EKS optimized AMI that the node group was deployed with. + ReleaseVersion *string `locationName:"releaseVersion" type:"string"` + + // If the node group wasn't deployed with a launch template, then this is the + // remote access configuration that is associated with the node group. If the + // node group was deployed with a launch template, then this is null. + RemoteAccess *RemoteAccessConfig `locationName:"remoteAccess" type:"structure"` + + // The resources associated with the node group, such as Auto Scaling groups + // and security groups for remote access. + Resources *NodegroupResources `locationName:"resources" type:"structure"` + + // The scaling configuration details for the Auto Scaling group that is associated + // with your node group. + ScalingConfig *NodegroupScalingConfig `locationName:"scalingConfig" type:"structure"` + + // The current status of the managed node group. + Status *string `locationName:"status" type:"string" enum:"NodegroupStatus"` + + // The subnets that were specified for the Auto Scaling group that is associated + // with your node group. + Subnets []*string `locationName:"subnets" type:"list"` + + // The metadata applied 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. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + + // The Kubernetes taints to be applied to the nodes in the node group when they + // are created. Effect is one of NoSchedule, PreferNoSchedule, or NoExecute. + // Kubernetes taints can be used together with tolerations to control how workloads + // are scheduled to your nodes. + Taints []*Taint `locationName:"taints" type:"list"` + + // The Kubernetes version of the managed node group. + Version *string `locationName:"version" type:"string"` +} + +// String returns the string representation +func (s Nodegroup) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Nodegroup) GoString() string { + return s.String() +} + +// SetAmiType sets the AmiType field's value. +func (s *Nodegroup) SetAmiType(v string) *Nodegroup { + s.AmiType = &v + return s +} + +// SetCapacityType sets the CapacityType field's value. +func (s *Nodegroup) SetCapacityType(v string) *Nodegroup { + s.CapacityType = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *Nodegroup) SetClusterName(v string) *Nodegroup { + s.ClusterName = &v + return s +} + +// SetCreatedAt sets the CreatedAt field's value. +func (s *Nodegroup) SetCreatedAt(v time.Time) *Nodegroup { + s.CreatedAt = &v + return s +} + +// SetDiskSize sets the DiskSize field's value. +func (s *Nodegroup) SetDiskSize(v int64) *Nodegroup { + s.DiskSize = &v + return s +} + +// SetHealth sets the Health field's value. +func (s *Nodegroup) SetHealth(v *NodegroupHealth) *Nodegroup { + s.Health = v + return s +} + +// SetInstanceTypes sets the InstanceTypes field's value. +func (s *Nodegroup) SetInstanceTypes(v []*string) *Nodegroup { + s.InstanceTypes = v + return s +} + +// SetLabels sets the Labels field's value. +func (s *Nodegroup) SetLabels(v map[string]*string) *Nodegroup { + s.Labels = v + return s +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *Nodegroup) SetLaunchTemplate(v *LaunchTemplateSpecification) *Nodegroup { + s.LaunchTemplate = v + return s +} + +// SetModifiedAt sets the ModifiedAt field's value. +func (s *Nodegroup) SetModifiedAt(v time.Time) *Nodegroup { + s.ModifiedAt = &v + return s +} + +// SetNodeRole sets the NodeRole field's value. +func (s *Nodegroup) SetNodeRole(v string) *Nodegroup { + s.NodeRole = &v + return s +} + +// SetNodegroupArn sets the NodegroupArn field's value. +func (s *Nodegroup) SetNodegroupArn(v string) *Nodegroup { + s.NodegroupArn = &v + return s +} + +// SetNodegroupName sets the NodegroupName field's value. +func (s *Nodegroup) SetNodegroupName(v string) *Nodegroup { + s.NodegroupName = &v + return s +} + +// SetReleaseVersion sets the ReleaseVersion field's value. +func (s *Nodegroup) SetReleaseVersion(v string) *Nodegroup { + s.ReleaseVersion = &v + return s +} + +// SetRemoteAccess sets the RemoteAccess field's value. +func (s *Nodegroup) SetRemoteAccess(v *RemoteAccessConfig) *Nodegroup { + s.RemoteAccess = v + return s +} + +// SetResources sets the Resources field's value. +func (s *Nodegroup) SetResources(v *NodegroupResources) *Nodegroup { + s.Resources = v + return s +} + +// SetScalingConfig sets the ScalingConfig field's value. +func (s *Nodegroup) SetScalingConfig(v *NodegroupScalingConfig) *Nodegroup { + s.ScalingConfig = v + return s +} + +// SetStatus sets the Status field's value. +func (s *Nodegroup) SetStatus(v string) *Nodegroup { + s.Status = &v + return s +} + +// SetSubnets sets the Subnets field's value. +func (s *Nodegroup) SetSubnets(v []*string) *Nodegroup { + s.Subnets = v + return s +} + +// SetTags sets the Tags field's value. +func (s *Nodegroup) SetTags(v map[string]*string) *Nodegroup { + s.Tags = v + return s +} + +// SetTaints sets the Taints field's value. +func (s *Nodegroup) SetTaints(v []*Taint) *Nodegroup { + s.Taints = v + return s +} + +// SetVersion sets the Version field's value. +func (s *Nodegroup) SetVersion(v string) *Nodegroup { + s.Version = &v + return s +} + +// An object representing the health status of the node group. +type NodegroupHealth struct { + _ struct{} `type:"structure"` + + // Any issues that are associated with the node group. + Issues []*Issue `locationName:"issues" type:"list"` +} + +// String returns the string representation +func (s NodegroupHealth) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NodegroupHealth) GoString() string { + return s.String() +} + +// SetIssues sets the Issues field's value. +func (s *NodegroupHealth) SetIssues(v []*Issue) *NodegroupHealth { + s.Issues = v + return s +} + +// An object representing the resources associated with the node group, such +// as Auto Scaling groups and security groups for remote access. +type NodegroupResources struct { + _ struct{} `type:"structure"` + + // The Auto Scaling groups associated with the node group. + AutoScalingGroups []*AutoScalingGroup `locationName:"autoScalingGroups" type:"list"` + + // The remote access security group associated with the node group. This security + // group controls SSH access to the nodes. + RemoteAccessSecurityGroup *string `locationName:"remoteAccessSecurityGroup" type:"string"` +} + +// String returns the string representation +func (s NodegroupResources) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NodegroupResources) GoString() string { + return s.String() +} + +// SetAutoScalingGroups sets the AutoScalingGroups field's value. +func (s *NodegroupResources) SetAutoScalingGroups(v []*AutoScalingGroup) *NodegroupResources { + s.AutoScalingGroups = v + return s +} + +// SetRemoteAccessSecurityGroup sets the RemoteAccessSecurityGroup field's value. +func (s *NodegroupResources) SetRemoteAccessSecurityGroup(v string) *NodegroupResources { + s.RemoteAccessSecurityGroup = &v + return s +} + +// An object representing the scaling configuration details for the Auto Scaling +// group that is associated with your node group. When creating a node group, +// you must specify all or none of the properties. When updating a node group, +// you can specify any or none of the properties. +type NodegroupScalingConfig struct { + _ struct{} `type:"structure"` + + // The current number of nodes that the managed node group should maintain. + DesiredSize *int64 `locationName:"desiredSize" type:"integer"` + + // The maximum number of nodes that the managed node group can scale out to. + // For information about the maximum number that you can specify, see Amazon + // EKS service quotas (https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html) + // in the Amazon EKS User Guide. + MaxSize *int64 `locationName:"maxSize" min:"1" type:"integer"` + + // The minimum number of nodes that the managed node group can scale in to. + // This number must be greater than zero. + MinSize *int64 `locationName:"minSize" type:"integer"` +} + +// String returns the string representation +func (s NodegroupScalingConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NodegroupScalingConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *NodegroupScalingConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "NodegroupScalingConfig"} + if s.MaxSize != nil && *s.MaxSize < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxSize", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDesiredSize sets the DesiredSize field's value. +func (s *NodegroupScalingConfig) SetDesiredSize(v int64) *NodegroupScalingConfig { + s.DesiredSize = &v + return s +} + +// SetMaxSize sets the MaxSize field's value. +func (s *NodegroupScalingConfig) SetMaxSize(v int64) *NodegroupScalingConfig { + s.MaxSize = &v + return s +} + +// SetMinSize sets the MinSize field's value. +func (s *NodegroupScalingConfig) SetMinSize(v int64) *NodegroupScalingConfig { + s.MinSize = &v + return s +} + +// A service resource associated with the request could not be found. Clients +// should not retry such requests. +type NotFoundException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s NotFoundException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NotFoundException) GoString() string { + return s.String() +} + +func newErrorNotFoundException(v protocol.ResponseMetadata) error { + return &NotFoundException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *NotFoundException) Code() string { + return "NotFoundException" +} + +// Message returns the exception's message. +func (s *NotFoundException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *NotFoundException) OrigErr() error { + return nil +} + +func (s *NotFoundException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *NotFoundException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *NotFoundException) RequestID() string { + return s.RespMetadata.RequestID +} + +// An object representing the OpenID Connect (https://openid.net/connect/) (OIDC) +// identity provider information for the cluster. +type OIDC struct { + _ struct{} `type:"structure"` + + // The issuer URL for the OIDC identity provider. + Issuer *string `locationName:"issuer" type:"string"` +} + +// String returns the string representation +func (s OIDC) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OIDC) GoString() string { + return s.String() +} + +// SetIssuer sets the Issuer field's value. +func (s *OIDC) SetIssuer(v string) *OIDC { + s.Issuer = &v + return s +} + +// An object that represents the configuration for an OpenID Connect (OIDC) +// identity provider. +type OidcIdentityProviderConfig struct { + _ struct{} `type:"structure"` + + // This is also known as audience. The ID of the client application that makes + // authentication requests to the OIDC identity provider. + ClientId *string `locationName:"clientId" type:"string"` + + // The cluster that the configuration is associated to. + ClusterName *string `locationName:"clusterName" type:"string"` + + // The JSON web token (JWT) claim that the provider uses to return your groups. + GroupsClaim *string `locationName:"groupsClaim" type:"string"` + + // The prefix that is prepended to group claims to prevent clashes with existing + // names (such as system: groups). For example, the valueoidc: creates group + // names like oidc:engineering and oidc:infra. The prefix can't contain system: + GroupsPrefix *string `locationName:"groupsPrefix" type:"string"` + + // The ARN of the configuration. + IdentityProviderConfigArn *string `locationName:"identityProviderConfigArn" type:"string"` + + // The name of the configuration. + IdentityProviderConfigName *string `locationName:"identityProviderConfigName" type:"string"` + + // The URL of the OIDC identity provider that allows the API server to discover + // public signing keys for verifying tokens. + IssuerUrl *string `locationName:"issuerUrl" type:"string"` + + // The key-value pairs that describe required claims in the identity token. + // If set, each claim is verified to be present in the token with a matching + // value. + RequiredClaims map[string]*string `locationName:"requiredClaims" type:"map"` + + // The status of the OIDC identity provider. + Status *string `locationName:"status" type:"string" enum:"ConfigStatus"` + + // The metadata to apply to the provider configuration to assist with categorization + // and organization. Each tag consists of a key and an optional value, both + // of which you defined. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + + // The JSON Web token (JWT) claim that is used as the username. + UsernameClaim *string `locationName:"usernameClaim" type:"string"` + + // The prefix that is prepended to username claims to prevent clashes with existing + // names. The prefix can't contain system: + UsernamePrefix *string `locationName:"usernamePrefix" type:"string"` +} + +// String returns the string representation +func (s OidcIdentityProviderConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OidcIdentityProviderConfig) GoString() string { + return s.String() +} + +// SetClientId sets the ClientId field's value. +func (s *OidcIdentityProviderConfig) SetClientId(v string) *OidcIdentityProviderConfig { + s.ClientId = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *OidcIdentityProviderConfig) SetClusterName(v string) *OidcIdentityProviderConfig { + s.ClusterName = &v + return s +} + +// SetGroupsClaim sets the GroupsClaim field's value. +func (s *OidcIdentityProviderConfig) SetGroupsClaim(v string) *OidcIdentityProviderConfig { + s.GroupsClaim = &v + return s +} + +// SetGroupsPrefix sets the GroupsPrefix field's value. +func (s *OidcIdentityProviderConfig) SetGroupsPrefix(v string) *OidcIdentityProviderConfig { + s.GroupsPrefix = &v + return s +} + +// SetIdentityProviderConfigArn sets the IdentityProviderConfigArn field's value. +func (s *OidcIdentityProviderConfig) SetIdentityProviderConfigArn(v string) *OidcIdentityProviderConfig { + s.IdentityProviderConfigArn = &v + return s +} + +// SetIdentityProviderConfigName sets the IdentityProviderConfigName field's value. +func (s *OidcIdentityProviderConfig) SetIdentityProviderConfigName(v string) *OidcIdentityProviderConfig { + s.IdentityProviderConfigName = &v + return s +} + +// SetIssuerUrl sets the IssuerUrl field's value. +func (s *OidcIdentityProviderConfig) SetIssuerUrl(v string) *OidcIdentityProviderConfig { + s.IssuerUrl = &v + return s +} + +// SetRequiredClaims sets the RequiredClaims field's value. +func (s *OidcIdentityProviderConfig) SetRequiredClaims(v map[string]*string) *OidcIdentityProviderConfig { + s.RequiredClaims = v + return s +} + +// SetStatus sets the Status field's value. +func (s *OidcIdentityProviderConfig) SetStatus(v string) *OidcIdentityProviderConfig { + s.Status = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *OidcIdentityProviderConfig) SetTags(v map[string]*string) *OidcIdentityProviderConfig { + s.Tags = v + return s +} + +// SetUsernameClaim sets the UsernameClaim field's value. +func (s *OidcIdentityProviderConfig) SetUsernameClaim(v string) *OidcIdentityProviderConfig { + s.UsernameClaim = &v + return s +} + +// SetUsernamePrefix sets the UsernamePrefix field's value. +func (s *OidcIdentityProviderConfig) SetUsernamePrefix(v string) *OidcIdentityProviderConfig { + s.UsernamePrefix = &v + return s +} + +// An object representing an OpenID Connect (OIDC) configuration. Before associating +// an OIDC identity provider to your cluster, review the considerations in Authenticating +// users for your cluster from an OpenID Connect identity provider (https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html) +// in the Amazon EKS User Guide. +type OidcIdentityProviderConfigRequest struct { + _ struct{} `type:"structure"` + + // This is also known as audience. The ID for the client application that makes + // authentication requests to the OpenID identity provider. + // + // ClientId is a required field + ClientId *string `locationName:"clientId" type:"string" required:"true"` + + // The JWT claim that the provider uses to return your groups. + GroupsClaim *string `locationName:"groupsClaim" type:"string"` + + // The prefix that is prepended to group claims to prevent clashes with existing + // names (such as system: groups). For example, the valueoidc: will create group + // names like oidc:engineering and oidc:infra. + GroupsPrefix *string `locationName:"groupsPrefix" type:"string"` + + // The name of the OIDC provider configuration. + // + // IdentityProviderConfigName is a required field + IdentityProviderConfigName *string `locationName:"identityProviderConfigName" type:"string" required:"true"` + + // The URL of the OpenID identity provider that allows the API server to discover + // public signing keys for verifying tokens. The URL must begin with https:// + // and should correspond to the iss claim in the provider's OIDC ID tokens. + // Per the OIDC standard, path components are allowed but query parameters are + // not. Typically the URL consists of only a hostname, like https://server.example.org + // or https://example.com. This URL should point to the level below .well-known/openid-configuration + // and must be publicly accessible over the internet. + // + // IssuerUrl is a required field + IssuerUrl *string `locationName:"issuerUrl" type:"string" required:"true"` + + // The key value pairs that describe required claims in the identity token. + // If set, each claim is verified to be present in the token with a matching + // value. For the maximum number of claims that you can require, see Amazon + // EKS service quotas (https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html) + // in the Amazon EKS User Guide. + RequiredClaims map[string]*string `locationName:"requiredClaims" type:"map"` + + // The JSON Web Token (JWT) claim to use as the username. The default is sub, + // which is expected to be a unique identifier of the end user. You can choose + // other claims, such as email or name, depending on the OpenID identity provider. + // Claims other than email are prefixed with the issuer URL to prevent naming + // clashes with other plug-ins. + UsernameClaim *string `locationName:"usernameClaim" type:"string"` + + // The prefix that is prepended to username claims to prevent clashes with existing + // names. If you do not provide this field, and username is a value other than + // email, the prefix defaults to issuerurl#. You can use the value - to disable + // all prefixing. + UsernamePrefix *string `locationName:"usernamePrefix" type:"string"` +} + +// String returns the string representation +func (s OidcIdentityProviderConfigRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OidcIdentityProviderConfigRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *OidcIdentityProviderConfigRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "OidcIdentityProviderConfigRequest"} + if s.ClientId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientId")) + } + if s.IdentityProviderConfigName == nil { + invalidParams.Add(request.NewErrParamRequired("IdentityProviderConfigName")) + } + if s.IssuerUrl == nil { + invalidParams.Add(request.NewErrParamRequired("IssuerUrl")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientId sets the ClientId field's value. +func (s *OidcIdentityProviderConfigRequest) SetClientId(v string) *OidcIdentityProviderConfigRequest { + s.ClientId = &v + return s +} + +// SetGroupsClaim sets the GroupsClaim field's value. +func (s *OidcIdentityProviderConfigRequest) SetGroupsClaim(v string) *OidcIdentityProviderConfigRequest { + s.GroupsClaim = &v + return s +} + +// SetGroupsPrefix sets the GroupsPrefix field's value. +func (s *OidcIdentityProviderConfigRequest) SetGroupsPrefix(v string) *OidcIdentityProviderConfigRequest { + s.GroupsPrefix = &v + return s +} + +// SetIdentityProviderConfigName sets the IdentityProviderConfigName field's value. +func (s *OidcIdentityProviderConfigRequest) SetIdentityProviderConfigName(v string) *OidcIdentityProviderConfigRequest { + s.IdentityProviderConfigName = &v + return s +} + +// SetIssuerUrl sets the IssuerUrl field's value. +func (s *OidcIdentityProviderConfigRequest) SetIssuerUrl(v string) *OidcIdentityProviderConfigRequest { + s.IssuerUrl = &v + return s +} + +// SetRequiredClaims sets the RequiredClaims field's value. +func (s *OidcIdentityProviderConfigRequest) SetRequiredClaims(v map[string]*string) *OidcIdentityProviderConfigRequest { + s.RequiredClaims = v + return s +} + +// SetUsernameClaim sets the UsernameClaim field's value. +func (s *OidcIdentityProviderConfigRequest) SetUsernameClaim(v string) *OidcIdentityProviderConfigRequest { + s.UsernameClaim = &v + return s +} + +// SetUsernamePrefix sets the UsernamePrefix field's value. +func (s *OidcIdentityProviderConfigRequest) SetUsernamePrefix(v string) *OidcIdentityProviderConfigRequest { + s.UsernamePrefix = &v + return s +} + +// Identifies the AWS Key Management Service (AWS KMS) key used to encrypt the +// secrets. +type Provider struct { + _ struct{} `type:"structure"` + + // Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, + // created in the same region as the cluster, and if the KMS key was created + // in a different account, the user must have access to the KMS key. For more + // information, see Allowing Users in Other Accounts to Use a KMS key (https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html) + // in the AWS Key Management Service Developer Guide. + KeyArn *string `locationName:"keyArn" type:"string"` +} + +// String returns the string representation +func (s Provider) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Provider) GoString() string { + return s.String() +} + +// SetKeyArn sets the KeyArn field's value. +func (s *Provider) SetKeyArn(v string) *Provider { + s.KeyArn = &v + return s +} + +// An object representing the remote access configuration for the managed node +// group. +type RemoteAccessConfig struct { + _ struct{} `type:"structure"` + + // The Amazon EC2 SSH key that provides access for SSH communication with the + // nodes in the managed node group. For more information, see Amazon EC2 Key + // Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) + // in the Amazon Elastic Compute Cloud User Guide for Linux Instances. + Ec2SshKey *string `locationName:"ec2SshKey" type:"string"` + + // The security groups that are allowed SSH access (port 22) to the nodes. If + // you specify an Amazon EC2 SSH key but do not specify a source security group + // when you create a managed node group, then port 22 on the nodes is opened + // to the internet (0.0.0.0/0). For more information, see Security Groups for + // Your VPC (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) + // in the Amazon Virtual Private Cloud User Guide. + SourceSecurityGroups []*string `locationName:"sourceSecurityGroups" type:"list"` +} + +// String returns the string representation +func (s RemoteAccessConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RemoteAccessConfig) GoString() string { + return s.String() +} + +// SetEc2SshKey sets the Ec2SshKey field's value. +func (s *RemoteAccessConfig) SetEc2SshKey(v string) *RemoteAccessConfig { + s.Ec2SshKey = &v + return s +} + +// SetSourceSecurityGroups sets the SourceSecurityGroups field's value. +func (s *RemoteAccessConfig) SetSourceSecurityGroups(v []*string) *RemoteAccessConfig { + s.SourceSecurityGroups = v + return s +} + +// The specified resource is in use. +type ResourceInUseException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + AddonName *string `locationName:"addonName" type:"string"` + + // The Amazon EKS cluster associated with the exception. + ClusterName *string `locationName:"clusterName" type:"string"` + + Message_ *string `locationName:"message" type:"string"` + + // The Amazon EKS managed node group associated with the exception. + NodegroupName *string `locationName:"nodegroupName" type:"string"` +} + +// String returns the string representation +func (s ResourceInUseException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResourceInUseException) GoString() string { + return s.String() +} + +func newErrorResourceInUseException(v protocol.ResponseMetadata) error { + return &ResourceInUseException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *ResourceInUseException) Code() string { + return "ResourceInUseException" +} + +// Message returns the exception's message. +func (s *ResourceInUseException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *ResourceInUseException) OrigErr() error { + return nil +} + +func (s *ResourceInUseException) Error() string { + return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *ResourceInUseException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *ResourceInUseException) RequestID() string { + return s.RespMetadata.RequestID +} + +// You have encountered a service limit on the specified resource. +type ResourceLimitExceededException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + // The Amazon EKS cluster associated with the exception. + ClusterName *string `locationName:"clusterName" type:"string"` + + Message_ *string `locationName:"message" type:"string"` + + // The Amazon EKS managed node group associated with the exception. + NodegroupName *string `locationName:"nodegroupName" type:"string"` +} + +// String returns the string representation +func (s ResourceLimitExceededException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResourceLimitExceededException) GoString() string { + return s.String() +} + +func newErrorResourceLimitExceededException(v protocol.ResponseMetadata) error { + return &ResourceLimitExceededException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *ResourceLimitExceededException) Code() string { + return "ResourceLimitExceededException" +} + +// Message returns the exception's message. +func (s *ResourceLimitExceededException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *ResourceLimitExceededException) OrigErr() error { + return nil +} + +func (s *ResourceLimitExceededException) Error() string { + return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *ResourceLimitExceededException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *ResourceLimitExceededException) RequestID() string { + return s.RespMetadata.RequestID +} + +// The specified resource could not be found. You can view your available clusters +// with ListClusters. You can view your available managed node groups with ListNodegroups. +// Amazon EKS clusters and node groups are Region-specific. +type ResourceNotFoundException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + AddonName *string `locationName:"addonName" type:"string"` + + // The Amazon EKS cluster associated with the exception. + ClusterName *string `locationName:"clusterName" type:"string"` + + // The Fargate profile associated with the exception. + FargateProfileName *string `locationName:"fargateProfileName" type:"string"` + + Message_ *string `locationName:"message" type:"string"` + + // The Amazon EKS managed node group associated with the exception. + NodegroupName *string `locationName:"nodegroupName" type:"string"` +} + +// String returns the string representation +func (s ResourceNotFoundException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResourceNotFoundException) GoString() string { + return s.String() +} + +func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error { + return &ResourceNotFoundException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *ResourceNotFoundException) Code() string { + return "ResourceNotFoundException" +} + +// Message returns the exception's message. +func (s *ResourceNotFoundException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *ResourceNotFoundException) OrigErr() error { + return nil +} + +func (s *ResourceNotFoundException) Error() string { + return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *ResourceNotFoundException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *ResourceNotFoundException) RequestID() string { + return s.RespMetadata.RequestID +} + +// These errors are usually caused by a server-side issue. +type ServerException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + AddonName *string `locationName:"addonName" type:"string"` + + // The Amazon EKS cluster associated with the exception. + ClusterName *string `locationName:"clusterName" type:"string"` + + Message_ *string `locationName:"message" type:"string"` + + // The Amazon EKS managed node group associated with the exception. + NodegroupName *string `locationName:"nodegroupName" type:"string"` +} + +// String returns the string representation +func (s ServerException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServerException) GoString() string { + return s.String() +} + +func newErrorServerException(v protocol.ResponseMetadata) error { + return &ServerException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *ServerException) Code() string { + return "ServerException" +} + +// Message returns the exception's message. +func (s *ServerException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *ServerException) OrigErr() error { + return nil +} + +func (s *ServerException) Error() string { + return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *ServerException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *ServerException) RequestID() string { + return s.RespMetadata.RequestID +} + +// The service is unavailable. Back off and retry the operation. +type ServiceUnavailableException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ServiceUnavailableException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServiceUnavailableException) GoString() string { + return s.String() +} + +func newErrorServiceUnavailableException(v protocol.ResponseMetadata) error { + return &ServiceUnavailableException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *ServiceUnavailableException) Code() string { + return "ServiceUnavailableException" +} + +// Message returns the exception's message. +func (s *ServiceUnavailableException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *ServiceUnavailableException) OrigErr() error { + return nil +} + +func (s *ServiceUnavailableException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *ServiceUnavailableException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *ServiceUnavailableException) RequestID() string { + return s.RespMetadata.RequestID +} + +type TagResourceInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the resource to which to add tags. Currently, + // the supported resources are Amazon EKS clusters and managed node groups. + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` + + // The tags to add to the resource. A tag is an array of key-value pairs. + // + // Tags is a required field + Tags map[string]*string `locationName:"tags" min:"1" type:"map" required:"true"` +} + +// String returns the string representation +func (s TagResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput { + s.ResourceArn = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput { + s.Tags = v + return s +} + +type TagResourceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s TagResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagResourceOutput) GoString() string { + return s.String() +} + +// A property that allows a node to repel a set of pods. +type Taint struct { + _ struct{} `type:"structure"` + + // The effect of the taint. + Effect *string `locationName:"effect" type:"string" enum:"TaintEffect"` + + // The key of the taint. + Key *string `locationName:"key" min:"1" type:"string"` + + // The value of the taint. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s Taint) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Taint) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Taint) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Taint"} + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEffect sets the Effect field's value. +func (s *Taint) SetEffect(v string) *Taint { + s.Effect = &v + return s +} + +// SetKey sets the Key field's value. +func (s *Taint) SetKey(v string) *Taint { + s.Key = &v + return s +} + +// SetValue sets the Value field's value. +func (s *Taint) SetValue(v string) *Taint { + s.Value = &v + return s +} + +// At least one of your specified cluster subnets is in an Availability Zone +// that does not support Amazon EKS. The exception output specifies the supported +// Availability Zones for your account, from which you can choose subnets for +// your cluster. +type UnsupportedAvailabilityZoneException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + // The Amazon EKS cluster associated with the exception. + ClusterName *string `locationName:"clusterName" type:"string"` + + Message_ *string `locationName:"message" type:"string"` + + // The Amazon EKS managed node group associated with the exception. + NodegroupName *string `locationName:"nodegroupName" type:"string"` + + // The supported Availability Zones for your account. Choose subnets in these + // Availability Zones for your cluster. + ValidZones []*string `locationName:"validZones" type:"list"` +} + +// String returns the string representation +func (s UnsupportedAvailabilityZoneException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnsupportedAvailabilityZoneException) GoString() string { + return s.String() +} + +func newErrorUnsupportedAvailabilityZoneException(v protocol.ResponseMetadata) error { + return &UnsupportedAvailabilityZoneException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *UnsupportedAvailabilityZoneException) Code() string { + return "UnsupportedAvailabilityZoneException" +} + +// Message returns the exception's message. +func (s *UnsupportedAvailabilityZoneException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *UnsupportedAvailabilityZoneException) OrigErr() error { + return nil +} + +func (s *UnsupportedAvailabilityZoneException) Error() string { + return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *UnsupportedAvailabilityZoneException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *UnsupportedAvailabilityZoneException) RequestID() string { + return s.RespMetadata.RequestID +} + +type UntagResourceInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the resource from which to delete tags. + // Currently, the supported resources are Amazon EKS clusters and managed node + // groups. + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` + + // The keys of the tags to be removed. + // + // TagKeys is a required field + TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"` +} + +// String returns the string representation +func (s UntagResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + if s.TagKeys != nil && len(s.TagKeys) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput { + s.ResourceArn = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput { + s.TagKeys = v + return s +} + +type UntagResourceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UntagResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagResourceOutput) GoString() string { + return s.String() +} + +// An object representing an asynchronous update. +type Update struct { + _ struct{} `type:"structure"` + + // The Unix epoch timestamp in seconds for when the update was created. + CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` + + // Any errors associated with a Failed update. + Errors []*ErrorDetail `locationName:"errors" type:"list"` + + // A UUID that is used to track the update. + Id *string `locationName:"id" type:"string"` + + // A key-value map that contains the parameters associated with the update. + Params []*UpdateParam `locationName:"params" type:"list"` + + // The current status of the update. + Status *string `locationName:"status" type:"string" enum:"UpdateStatus"` + + // The type of the update. + Type *string `locationName:"type" type:"string" enum:"UpdateType"` +} + +// String returns the string representation +func (s Update) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Update) GoString() string { + return s.String() +} + +// SetCreatedAt sets the CreatedAt field's value. +func (s *Update) SetCreatedAt(v time.Time) *Update { + s.CreatedAt = &v + return s +} + +// SetErrors sets the Errors field's value. +func (s *Update) SetErrors(v []*ErrorDetail) *Update { + s.Errors = v + return s +} + +// SetId sets the Id field's value. +func (s *Update) SetId(v string) *Update { + s.Id = &v + return s +} + +// SetParams sets the Params field's value. +func (s *Update) SetParams(v []*UpdateParam) *Update { + s.Params = v + return s +} + +// SetStatus sets the Status field's value. +func (s *Update) SetStatus(v string) *Update { + s.Status = &v + return s +} + +// SetType sets the Type field's value. +func (s *Update) SetType(v string) *Update { + s.Type = &v + return s +} + +type UpdateAddonInput struct { + _ struct{} `type:"structure"` + + // The name of the add-on. The name must match one of the names returned by + // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). + // + // AddonName is a required field + AddonName *string `location:"uri" locationName:"addonName" type:"string" required:"true"` + + // The version of the add-on. The version must match one of the versions returned + // by DescribeAddonVersions (https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html). + AddonVersion *string `locationName:"addonVersion" type:"string"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the cluster. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` + + // How to resolve parameter value conflicts when applying the new version of + // the add-on to the cluster. + ResolveConflicts *string `locationName:"resolveConflicts" type:"string" enum:"ResolveConflicts"` + + // 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 + // Amazon EKS node IAM role (https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) + // in the Amazon EKS User Guide. + // + // To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) + // provider created for your cluster. For more information, see Enabling IAM + // roles for service accounts on your cluster (https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) + // in the Amazon EKS User Guide. + ServiceAccountRoleArn *string `locationName:"serviceAccountRoleArn" min:"1" type:"string"` +} + +// String returns the string representation +func (s UpdateAddonInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateAddonInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateAddonInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateAddonInput"} + if s.AddonName == nil { + invalidParams.Add(request.NewErrParamRequired("AddonName")) + } + if s.AddonName != nil && len(*s.AddonName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("AddonName", 1)) + } + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.ServiceAccountRoleArn != nil && len(*s.ServiceAccountRoleArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ServiceAccountRoleArn", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddonName sets the AddonName field's value. +func (s *UpdateAddonInput) SetAddonName(v string) *UpdateAddonInput { + s.AddonName = &v + return s +} + +// SetAddonVersion sets the AddonVersion field's value. +func (s *UpdateAddonInput) SetAddonVersion(v string) *UpdateAddonInput { + s.AddonVersion = &v + return s +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *UpdateAddonInput) SetClientRequestToken(v string) *UpdateAddonInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *UpdateAddonInput) SetClusterName(v string) *UpdateAddonInput { + s.ClusterName = &v + return s +} + +// SetResolveConflicts sets the ResolveConflicts field's value. +func (s *UpdateAddonInput) SetResolveConflicts(v string) *UpdateAddonInput { + s.ResolveConflicts = &v + return s +} + +// SetServiceAccountRoleArn sets the ServiceAccountRoleArn field's value. +func (s *UpdateAddonInput) SetServiceAccountRoleArn(v string) *UpdateAddonInput { + s.ServiceAccountRoleArn = &v + return s +} + +type UpdateAddonOutput struct { + _ struct{} `type:"structure"` + + // An object representing an asynchronous update. + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s UpdateAddonOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateAddonOutput) GoString() string { + return s.String() +} + +// SetUpdate sets the Update field's value. +func (s *UpdateAddonOutput) SetUpdate(v *Update) *UpdateAddonOutput { + s.Update = v + return s +} + +type UpdateClusterConfigInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // 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 (https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) + // 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 Amazon CloudWatch + // Pricing (http://aws.amazon.com/cloudwatch/pricing/). + Logging *Logging `locationName:"logging" type:"structure"` + + // The name of the Amazon EKS cluster to update. + // + // Name is a required field + Name *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // An object representing the VPC configuration to use for an Amazon EKS cluster. + ResourcesVpcConfig *VpcConfigRequest `locationName:"resourcesVpcConfig" type:"structure"` +} + +// String returns the string representation +func (s UpdateClusterConfigInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateClusterConfigInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateClusterConfigInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateClusterConfigInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *UpdateClusterConfigInput) SetClientRequestToken(v string) *UpdateClusterConfigInput { + s.ClientRequestToken = &v + return s +} + +// SetLogging sets the Logging field's value. +func (s *UpdateClusterConfigInput) SetLogging(v *Logging) *UpdateClusterConfigInput { + s.Logging = v + return s +} + +// SetName sets the Name field's value. +func (s *UpdateClusterConfigInput) SetName(v string) *UpdateClusterConfigInput { + s.Name = &v + return s +} + +// SetResourcesVpcConfig sets the ResourcesVpcConfig field's value. +func (s *UpdateClusterConfigInput) SetResourcesVpcConfig(v *VpcConfigRequest) *UpdateClusterConfigInput { + s.ResourcesVpcConfig = v + return s +} + +type UpdateClusterConfigOutput struct { + _ struct{} `type:"structure"` + + // An object representing an asynchronous update. + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s UpdateClusterConfigOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateClusterConfigOutput) GoString() string { + return s.String() +} + +// SetUpdate sets the Update field's value. +func (s *UpdateClusterConfigOutput) SetUpdate(v *Update) *UpdateClusterConfigOutput { + s.Update = v + return s +} + +type UpdateClusterVersionInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the Amazon EKS cluster to update. + // + // Name is a required field + Name *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The desired Kubernetes version following a successful update. + // + // Version is a required field + Version *string `locationName:"version" type:"string" required:"true"` +} + +// String returns the string representation +func (s UpdateClusterVersionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateClusterVersionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateClusterVersionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateClusterVersionInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + if s.Version == nil { + invalidParams.Add(request.NewErrParamRequired("Version")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *UpdateClusterVersionInput) SetClientRequestToken(v string) *UpdateClusterVersionInput { + s.ClientRequestToken = &v + return s +} + +// SetName sets the Name field's value. +func (s *UpdateClusterVersionInput) SetName(v string) *UpdateClusterVersionInput { + s.Name = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *UpdateClusterVersionInput) SetVersion(v string) *UpdateClusterVersionInput { + s.Version = &v + return s +} + +type UpdateClusterVersionOutput struct { + _ struct{} `type:"structure"` + + // The full description of the specified update + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s UpdateClusterVersionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateClusterVersionOutput) GoString() string { + return s.String() +} + +// SetUpdate sets the Update field's value. +func (s *UpdateClusterVersionOutput) SetUpdate(v *Update) *UpdateClusterVersionOutput { + s.Update = v + return s +} + +// An object representing a Kubernetes label change for a managed node group. +type UpdateLabelsPayload struct { + _ struct{} `type:"structure"` + + // Kubernetes labels to be added or updated. + AddOrUpdateLabels map[string]*string `locationName:"addOrUpdateLabels" type:"map"` + + // Kubernetes labels to be removed. + RemoveLabels []*string `locationName:"removeLabels" type:"list"` +} + +// String returns the string representation +func (s UpdateLabelsPayload) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateLabelsPayload) GoString() string { + return s.String() +} + +// SetAddOrUpdateLabels sets the AddOrUpdateLabels field's value. +func (s *UpdateLabelsPayload) SetAddOrUpdateLabels(v map[string]*string) *UpdateLabelsPayload { + s.AddOrUpdateLabels = v + return s +} + +// SetRemoveLabels sets the RemoveLabels field's value. +func (s *UpdateLabelsPayload) SetRemoveLabels(v []*string) *UpdateLabelsPayload { + s.RemoveLabels = v + return s +} + +type UpdateNodegroupConfigInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the Amazon EKS cluster that the managed node group resides in. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // The Kubernetes labels to be applied to the nodes in the node group after + // the update. + Labels *UpdateLabelsPayload `locationName:"labels" type:"structure"` + + // The name of the managed node group to update. + // + // NodegroupName is a required field + NodegroupName *string `location:"uri" locationName:"nodegroupName" type:"string" required:"true"` + + // The scaling configuration details for the Auto Scaling group after the update. + ScalingConfig *NodegroupScalingConfig `locationName:"scalingConfig" type:"structure"` + + // The Kubernetes taints to be applied to the nodes in the node group after + // the update. + Taints *UpdateTaintsPayload `locationName:"taints" type:"structure"` +} + +// String returns the string representation +func (s UpdateNodegroupConfigInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateNodegroupConfigInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateNodegroupConfigInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateNodegroupConfigInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.NodegroupName == nil { + invalidParams.Add(request.NewErrParamRequired("NodegroupName")) + } + if s.NodegroupName != nil && len(*s.NodegroupName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NodegroupName", 1)) + } + if s.ScalingConfig != nil { + if err := s.ScalingConfig.Validate(); err != nil { + invalidParams.AddNested("ScalingConfig", err.(request.ErrInvalidParams)) + } + } + if s.Taints != nil { + if err := s.Taints.Validate(); err != nil { + invalidParams.AddNested("Taints", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *UpdateNodegroupConfigInput) SetClientRequestToken(v string) *UpdateNodegroupConfigInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *UpdateNodegroupConfigInput) SetClusterName(v string) *UpdateNodegroupConfigInput { + s.ClusterName = &v + return s +} + +// SetLabels sets the Labels field's value. +func (s *UpdateNodegroupConfigInput) SetLabels(v *UpdateLabelsPayload) *UpdateNodegroupConfigInput { + s.Labels = v + return s +} + +// SetNodegroupName sets the NodegroupName field's value. +func (s *UpdateNodegroupConfigInput) SetNodegroupName(v string) *UpdateNodegroupConfigInput { + s.NodegroupName = &v + return s +} + +// SetScalingConfig sets the ScalingConfig field's value. +func (s *UpdateNodegroupConfigInput) SetScalingConfig(v *NodegroupScalingConfig) *UpdateNodegroupConfigInput { + s.ScalingConfig = v + return s +} + +// SetTaints sets the Taints field's value. +func (s *UpdateNodegroupConfigInput) SetTaints(v *UpdateTaintsPayload) *UpdateNodegroupConfigInput { + s.Taints = v + return s +} + +type UpdateNodegroupConfigOutput struct { + _ struct{} `type:"structure"` + + // An object representing an asynchronous update. + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s UpdateNodegroupConfigOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateNodegroupConfigOutput) GoString() string { + return s.String() +} + +// SetUpdate sets the Update field's value. +func (s *UpdateNodegroupConfigOutput) SetUpdate(v *Update) *UpdateNodegroupConfigOutput { + s.Update = v + return s +} + +type UpdateNodegroupVersionInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` + + // The name of the Amazon EKS cluster that is associated with the managed node + // group to update. + // + // ClusterName is a required field + ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` + + // Force the update if the existing node group's pods are unable to be drained + // due to a pod disruption budget issue. If an update fails because pods could + // not be drained, you can force the update after it fails to terminate the + // old node whether or not any pods are running on the node. + Force *bool `locationName:"force" type:"boolean"` + + // An object representing a node group's launch template specification. You + // can only update a node group using a launch template if the node group was + // originally deployed with a launch template. + LaunchTemplate *LaunchTemplateSpecification `locationName:"launchTemplate" type:"structure"` + + // The name of the managed node group to update. + // + // NodegroupName is a required field + NodegroupName *string `location:"uri" locationName:"nodegroupName" type:"string" required:"true"` + + // The AMI version of the Amazon EKS optimized AMI to use for the update. By + // default, the latest available AMI version for the node group's Kubernetes + // version is used. For more information, see Amazon EKS optimized Amazon Linux + // 2 AMI versions (https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) + // 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 update will fail. For more information about using launch templates + // with Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + ReleaseVersion *string `locationName:"releaseVersion" type:"string"` + + // The Kubernetes version to update to. If no version is specified, then the + // Kubernetes version of the node group does not change. You can specify the + // Kubernetes version of the cluster to update the node group to the latest + // AMI version of the cluster's Kubernetes version. If you specify launchTemplate, + // and your launch template uses a custom AMI, then don't specify version, or + // the node group update will fail. For more information about using launch + // templates with Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) + // in the Amazon EKS User Guide. + Version *string `locationName:"version" type:"string"` +} + +// String returns the string representation +func (s UpdateNodegroupVersionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateNodegroupVersionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateNodegroupVersionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateNodegroupVersionInput"} + if s.ClusterName == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterName")) + } + if s.ClusterName != nil && len(*s.ClusterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) + } + if s.NodegroupName == nil { + invalidParams.Add(request.NewErrParamRequired("NodegroupName")) + } + if s.NodegroupName != nil && len(*s.NodegroupName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NodegroupName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientRequestToken sets the ClientRequestToken field's value. +func (s *UpdateNodegroupVersionInput) SetClientRequestToken(v string) *UpdateNodegroupVersionInput { + s.ClientRequestToken = &v + return s +} + +// SetClusterName sets the ClusterName field's value. +func (s *UpdateNodegroupVersionInput) SetClusterName(v string) *UpdateNodegroupVersionInput { + s.ClusterName = &v + return s +} + +// SetForce sets the Force field's value. +func (s *UpdateNodegroupVersionInput) SetForce(v bool) *UpdateNodegroupVersionInput { + s.Force = &v + return s +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *UpdateNodegroupVersionInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *UpdateNodegroupVersionInput { + s.LaunchTemplate = v + return s +} + +// SetNodegroupName sets the NodegroupName field's value. +func (s *UpdateNodegroupVersionInput) SetNodegroupName(v string) *UpdateNodegroupVersionInput { + s.NodegroupName = &v + return s +} + +// SetReleaseVersion sets the ReleaseVersion field's value. +func (s *UpdateNodegroupVersionInput) SetReleaseVersion(v string) *UpdateNodegroupVersionInput { + s.ReleaseVersion = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *UpdateNodegroupVersionInput) SetVersion(v string) *UpdateNodegroupVersionInput { + s.Version = &v + return s +} + +type UpdateNodegroupVersionOutput struct { + _ struct{} `type:"structure"` + + // An object representing an asynchronous update. + Update *Update `locationName:"update" type:"structure"` +} + +// String returns the string representation +func (s UpdateNodegroupVersionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateNodegroupVersionOutput) GoString() string { + return s.String() +} + +// SetUpdate sets the Update field's value. +func (s *UpdateNodegroupVersionOutput) SetUpdate(v *Update) *UpdateNodegroupVersionOutput { + s.Update = v + return s +} + +// An object representing the details of an update request. +type UpdateParam struct { + _ struct{} `type:"structure"` + + // The keys associated with an update request. + Type *string `locationName:"type" type:"string" enum:"UpdateParamType"` + + // The value of the keys submitted as part of an update request. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s UpdateParam) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateParam) GoString() string { + return s.String() +} + +// SetType sets the Type field's value. +func (s *UpdateParam) SetType(v string) *UpdateParam { + s.Type = &v + return s +} + +// SetValue sets the Value field's value. +func (s *UpdateParam) SetValue(v string) *UpdateParam { + s.Value = &v + return s +} + +// An object representing the details of an update to a taints payload. +type UpdateTaintsPayload struct { + _ struct{} `type:"structure"` + + // Kubernetes taints to be added or updated. + AddOrUpdateTaints []*Taint `locationName:"addOrUpdateTaints" type:"list"` + + // Kubernetes taints to be removed. + RemoveTaints []*Taint `locationName:"removeTaints" type:"list"` +} + +// String returns the string representation +func (s UpdateTaintsPayload) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateTaintsPayload) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateTaintsPayload) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateTaintsPayload"} + if s.AddOrUpdateTaints != nil { + for i, v := range s.AddOrUpdateTaints { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AddOrUpdateTaints", i), err.(request.ErrInvalidParams)) + } + } + } + if s.RemoveTaints != nil { + for i, v := range s.RemoveTaints { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RemoveTaints", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddOrUpdateTaints sets the AddOrUpdateTaints field's value. +func (s *UpdateTaintsPayload) SetAddOrUpdateTaints(v []*Taint) *UpdateTaintsPayload { + s.AddOrUpdateTaints = v + return s +} + +// SetRemoveTaints sets the RemoveTaints field's value. +func (s *UpdateTaintsPayload) SetRemoveTaints(v []*Taint) *UpdateTaintsPayload { + s.RemoveTaints = v + return s +} + +// An object representing the VPC configuration to use for an Amazon EKS cluster. +type VpcConfigRequest struct { + _ struct{} `type:"structure"` + + // Set this value to true to enable private access for your cluster's Kubernetes + // API server endpoint. If you enable private access, Kubernetes API requests + // from within your cluster's VPC use the private VPC endpoint. The default + // value for this parameter is false, which disables private access for your + // Kubernetes API server. If you disable private access and you have nodes or + // AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes + // the necessary CIDR blocks for communication with the nodes or Fargate pods. + // For more information, see Amazon EKS Cluster Endpoint Access Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) + // in the Amazon EKS User Guide . + EndpointPrivateAccess *bool `locationName:"endpointPrivateAccess" type:"boolean"` + + // Set this value to false to disable public access to your cluster's Kubernetes + // API server endpoint. If you disable public access, your cluster's Kubernetes + // API server can only receive requests from within the cluster VPC. The default + // value for this parameter is true, which enables public access for your Kubernetes + // API server. For more information, see Amazon EKS Cluster Endpoint Access + // Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) + // in the Amazon EKS User Guide . + EndpointPublicAccess *bool `locationName:"endpointPublicAccess" type:"boolean"` + + // The CIDR blocks that are allowed access to your cluster's public Kubernetes + // API server endpoint. Communication to the endpoint from addresses outside + // of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. + // If you've disabled private endpoint access and you have nodes or AWS Fargate + // pods in the cluster, then ensure that you specify the necessary CIDR blocks. + // For more information, see Amazon EKS Cluster Endpoint Access Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) + // in the Amazon EKS User Guide . + PublicAccessCidrs []*string `locationName:"publicAccessCidrs" type:"list"` + + // Specify one or more security groups for the cross-account elastic network + // interfaces that Amazon EKS creates to use to allow communication between + // your nodes and the Kubernetes control plane. If you don't specify any security + // groups, then familiarize yourself with the difference between Amazon EKS + // defaults for clusters deployed with Kubernetes: + // + // * 1.14 Amazon EKS platform version eks.2 and earlier + // + // * 1.14 Amazon EKS platform version eks.3 and later + // + // For more information, see Amazon EKS security group considerations (https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) + // in the Amazon EKS User Guide . + SecurityGroupIds []*string `locationName:"securityGroupIds" type:"list"` + + // Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account + // elastic network interfaces in these subnets to allow communication between + // your nodes and the Kubernetes control plane. + SubnetIds []*string `locationName:"subnetIds" type:"list"` +} + +// String returns the string representation +func (s VpcConfigRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcConfigRequest) GoString() string { + return s.String() +} + +// SetEndpointPrivateAccess sets the EndpointPrivateAccess field's value. +func (s *VpcConfigRequest) SetEndpointPrivateAccess(v bool) *VpcConfigRequest { + s.EndpointPrivateAccess = &v + return s +} + +// SetEndpointPublicAccess sets the EndpointPublicAccess field's value. +func (s *VpcConfigRequest) SetEndpointPublicAccess(v bool) *VpcConfigRequest { + s.EndpointPublicAccess = &v + return s +} + +// SetPublicAccessCidrs sets the PublicAccessCidrs field's value. +func (s *VpcConfigRequest) SetPublicAccessCidrs(v []*string) *VpcConfigRequest { + s.PublicAccessCidrs = v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *VpcConfigRequest) SetSecurityGroupIds(v []*string) *VpcConfigRequest { + s.SecurityGroupIds = v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *VpcConfigRequest) SetSubnetIds(v []*string) *VpcConfigRequest { + s.SubnetIds = v + return s +} + +// An object representing an Amazon EKS cluster VPC configuration response. +type VpcConfigResponse struct { + _ struct{} `type:"structure"` + + // The cluster security group that was created by Amazon EKS for the cluster. + // Managed node groups use this security group for control-plane-to-data-plane + // communication. + ClusterSecurityGroupId *string `locationName:"clusterSecurityGroupId" type:"string"` + + // This parameter indicates whether the Amazon EKS private API server endpoint + // is enabled. If the Amazon EKS private API server endpoint is enabled, Kubernetes + // API requests that originate from within your cluster's VPC use the private + // VPC endpoint instead of traversing the internet. If this value is disabled + // and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs + // includes the necessary CIDR blocks for communication with the nodes or Fargate + // pods. For more information, see Amazon EKS Cluster Endpoint Access Control + // (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) + // in the Amazon EKS User Guide . + EndpointPrivateAccess *bool `locationName:"endpointPrivateAccess" type:"boolean"` + + // This parameter indicates whether the Amazon EKS public API server endpoint + // is enabled. If the Amazon EKS public API server endpoint is disabled, your + // cluster's Kubernetes API server can only receive requests that originate + // from within the cluster VPC. + EndpointPublicAccess *bool `locationName:"endpointPublicAccess" type:"boolean"` + + // The CIDR blocks that are allowed access to your cluster's public Kubernetes + // API server endpoint. Communication to the endpoint from addresses outside + // of the listed CIDR blocks is denied. The default value is 0.0.0.0/0. If you've + // disabled private endpoint access and you have nodes or AWS Fargate pods in + // the cluster, then ensure that the necessary CIDR blocks are listed. For more + // information, see Amazon EKS Cluster Endpoint Access Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) + // in the Amazon EKS User Guide . + PublicAccessCidrs []*string `locationName:"publicAccessCidrs" type:"list"` + + // The security groups associated with the cross-account elastic network interfaces + // that are used to allow communication between your nodes and the Kubernetes + // control plane. + SecurityGroupIds []*string `locationName:"securityGroupIds" type:"list"` + + // The subnets associated with your cluster. + SubnetIds []*string `locationName:"subnetIds" type:"list"` + + // The VPC associated with your cluster. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s VpcConfigResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcConfigResponse) GoString() string { + return s.String() +} + +// SetClusterSecurityGroupId sets the ClusterSecurityGroupId field's value. +func (s *VpcConfigResponse) SetClusterSecurityGroupId(v string) *VpcConfigResponse { + s.ClusterSecurityGroupId = &v + return s +} + +// SetEndpointPrivateAccess sets the EndpointPrivateAccess field's value. +func (s *VpcConfigResponse) SetEndpointPrivateAccess(v bool) *VpcConfigResponse { + s.EndpointPrivateAccess = &v + return s +} + +// SetEndpointPublicAccess sets the EndpointPublicAccess field's value. +func (s *VpcConfigResponse) SetEndpointPublicAccess(v bool) *VpcConfigResponse { + s.EndpointPublicAccess = &v + return s +} + +// SetPublicAccessCidrs sets the PublicAccessCidrs field's value. +func (s *VpcConfigResponse) SetPublicAccessCidrs(v []*string) *VpcConfigResponse { + s.PublicAccessCidrs = v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *VpcConfigResponse) SetSecurityGroupIds(v []*string) *VpcConfigResponse { + s.SecurityGroupIds = v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *VpcConfigResponse) SetSubnetIds(v []*string) *VpcConfigResponse { + s.SubnetIds = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *VpcConfigResponse) SetVpcId(v string) *VpcConfigResponse { + s.VpcId = &v + return s +} + +const ( + // AMITypesAl2X8664 is a AMITypes enum value + AMITypesAl2X8664 = "AL2_x86_64" + + // AMITypesAl2X8664Gpu is a AMITypes enum value + AMITypesAl2X8664Gpu = "AL2_x86_64_GPU" + + // AMITypesAl2Arm64 is a AMITypes enum value + AMITypesAl2Arm64 = "AL2_ARM_64" + + // AMITypesCustom is a AMITypes enum value + AMITypesCustom = "CUSTOM" +) + +// AMITypes_Values returns all elements of the AMITypes enum +func AMITypes_Values() []string { + return []string{ + AMITypesAl2X8664, + AMITypesAl2X8664Gpu, + AMITypesAl2Arm64, + AMITypesCustom, + } +} + +const ( + // AddonIssueCodeAccessDenied is a AddonIssueCode enum value + AddonIssueCodeAccessDenied = "AccessDenied" + + // AddonIssueCodeInternalFailure is a AddonIssueCode enum value + AddonIssueCodeInternalFailure = "InternalFailure" + + // AddonIssueCodeClusterUnreachable is a AddonIssueCode enum value + AddonIssueCodeClusterUnreachable = "ClusterUnreachable" + + // AddonIssueCodeInsufficientNumberOfReplicas is a AddonIssueCode enum value + AddonIssueCodeInsufficientNumberOfReplicas = "InsufficientNumberOfReplicas" + + // AddonIssueCodeConfigurationConflict is a AddonIssueCode enum value + AddonIssueCodeConfigurationConflict = "ConfigurationConflict" + + // AddonIssueCodeAdmissionRequestDenied is a AddonIssueCode enum value + AddonIssueCodeAdmissionRequestDenied = "AdmissionRequestDenied" +) + +// AddonIssueCode_Values returns all elements of the AddonIssueCode enum +func AddonIssueCode_Values() []string { + return []string{ + AddonIssueCodeAccessDenied, + AddonIssueCodeInternalFailure, + AddonIssueCodeClusterUnreachable, + AddonIssueCodeInsufficientNumberOfReplicas, + AddonIssueCodeConfigurationConflict, + AddonIssueCodeAdmissionRequestDenied, + } +} + +const ( + // AddonStatusCreating is a AddonStatus enum value + AddonStatusCreating = "CREATING" + + // AddonStatusActive is a AddonStatus enum value + AddonStatusActive = "ACTIVE" + + // AddonStatusCreateFailed is a AddonStatus enum value + AddonStatusCreateFailed = "CREATE_FAILED" + + // AddonStatusUpdating is a AddonStatus enum value + AddonStatusUpdating = "UPDATING" + + // AddonStatusDeleting is a AddonStatus enum value + AddonStatusDeleting = "DELETING" + + // AddonStatusDeleteFailed is a AddonStatus enum value + AddonStatusDeleteFailed = "DELETE_FAILED" + + // AddonStatusDegraded is a AddonStatus enum value + AddonStatusDegraded = "DEGRADED" +) + +// AddonStatus_Values returns all elements of the AddonStatus enum +func AddonStatus_Values() []string { + return []string{ + AddonStatusCreating, + AddonStatusActive, + AddonStatusCreateFailed, + AddonStatusUpdating, + AddonStatusDeleting, + AddonStatusDeleteFailed, + AddonStatusDegraded, + } +} + +const ( + // CapacityTypesOnDemand is a CapacityTypes enum value + CapacityTypesOnDemand = "ON_DEMAND" + + // CapacityTypesSpot is a CapacityTypes enum value + CapacityTypesSpot = "SPOT" +) + +// CapacityTypes_Values returns all elements of the CapacityTypes enum +func CapacityTypes_Values() []string { + return []string{ + CapacityTypesOnDemand, + CapacityTypesSpot, + } +} + +const ( + // ClusterStatusCreating is a ClusterStatus enum value + ClusterStatusCreating = "CREATING" + + // ClusterStatusActive is a ClusterStatus enum value + ClusterStatusActive = "ACTIVE" + + // ClusterStatusDeleting is a ClusterStatus enum value + ClusterStatusDeleting = "DELETING" + + // ClusterStatusFailed is a ClusterStatus enum value + ClusterStatusFailed = "FAILED" + + // ClusterStatusUpdating is a ClusterStatus enum value + ClusterStatusUpdating = "UPDATING" +) + +// ClusterStatus_Values returns all elements of the ClusterStatus enum +func ClusterStatus_Values() []string { + return []string{ + ClusterStatusCreating, + ClusterStatusActive, + ClusterStatusDeleting, + ClusterStatusFailed, + ClusterStatusUpdating, + } +} + +const ( + // ConfigStatusCreating is a ConfigStatus enum value + ConfigStatusCreating = "CREATING" + + // ConfigStatusDeleting is a ConfigStatus enum value + ConfigStatusDeleting = "DELETING" + + // ConfigStatusActive is a ConfigStatus enum value + ConfigStatusActive = "ACTIVE" +) + +// ConfigStatus_Values returns all elements of the ConfigStatus enum +func ConfigStatus_Values() []string { + return []string{ + ConfigStatusCreating, + ConfigStatusDeleting, + ConfigStatusActive, + } +} + +const ( + // ErrorCodeSubnetNotFound is a ErrorCode enum value + ErrorCodeSubnetNotFound = "SubnetNotFound" + + // ErrorCodeSecurityGroupNotFound is a ErrorCode enum value + ErrorCodeSecurityGroupNotFound = "SecurityGroupNotFound" + + // ErrorCodeEniLimitReached is a ErrorCode enum value + ErrorCodeEniLimitReached = "EniLimitReached" + + // ErrorCodeIpNotAvailable is a ErrorCode enum value + ErrorCodeIpNotAvailable = "IpNotAvailable" + + // ErrorCodeAccessDenied is a ErrorCode enum value + ErrorCodeAccessDenied = "AccessDenied" + + // ErrorCodeOperationNotPermitted is a ErrorCode enum value + ErrorCodeOperationNotPermitted = "OperationNotPermitted" + + // ErrorCodeVpcIdNotFound is a ErrorCode enum value + ErrorCodeVpcIdNotFound = "VpcIdNotFound" + + // ErrorCodeUnknown is a ErrorCode enum value + ErrorCodeUnknown = "Unknown" + + // ErrorCodeNodeCreationFailure is a ErrorCode enum value + ErrorCodeNodeCreationFailure = "NodeCreationFailure" + + // ErrorCodePodEvictionFailure is a ErrorCode enum value + ErrorCodePodEvictionFailure = "PodEvictionFailure" + + // ErrorCodeInsufficientFreeAddresses is a ErrorCode enum value + ErrorCodeInsufficientFreeAddresses = "InsufficientFreeAddresses" + + // ErrorCodeClusterUnreachable is a ErrorCode enum value + ErrorCodeClusterUnreachable = "ClusterUnreachable" + + // ErrorCodeInsufficientNumberOfReplicas is a ErrorCode enum value + ErrorCodeInsufficientNumberOfReplicas = "InsufficientNumberOfReplicas" + + // ErrorCodeConfigurationConflict is a ErrorCode enum value + ErrorCodeConfigurationConflict = "ConfigurationConflict" + + // ErrorCodeAdmissionRequestDenied is a ErrorCode enum value + ErrorCodeAdmissionRequestDenied = "AdmissionRequestDenied" +) + +// ErrorCode_Values returns all elements of the ErrorCode enum +func ErrorCode_Values() []string { + return []string{ + ErrorCodeSubnetNotFound, + ErrorCodeSecurityGroupNotFound, + ErrorCodeEniLimitReached, + ErrorCodeIpNotAvailable, + ErrorCodeAccessDenied, + ErrorCodeOperationNotPermitted, + ErrorCodeVpcIdNotFound, + ErrorCodeUnknown, + ErrorCodeNodeCreationFailure, + ErrorCodePodEvictionFailure, + ErrorCodeInsufficientFreeAddresses, + ErrorCodeClusterUnreachable, + ErrorCodeInsufficientNumberOfReplicas, + ErrorCodeConfigurationConflict, + ErrorCodeAdmissionRequestDenied, + } +} + +const ( + // FargateProfileStatusCreating is a FargateProfileStatus enum value + FargateProfileStatusCreating = "CREATING" + + // FargateProfileStatusActive is a FargateProfileStatus enum value + FargateProfileStatusActive = "ACTIVE" + + // FargateProfileStatusDeleting is a FargateProfileStatus enum value + FargateProfileStatusDeleting = "DELETING" + + // FargateProfileStatusCreateFailed is a FargateProfileStatus enum value + FargateProfileStatusCreateFailed = "CREATE_FAILED" + + // FargateProfileStatusDeleteFailed is a FargateProfileStatus enum value + FargateProfileStatusDeleteFailed = "DELETE_FAILED" +) + +// FargateProfileStatus_Values returns all elements of the FargateProfileStatus enum +func FargateProfileStatus_Values() []string { + return []string{ + FargateProfileStatusCreating, + FargateProfileStatusActive, + FargateProfileStatusDeleting, + FargateProfileStatusCreateFailed, + FargateProfileStatusDeleteFailed, + } +} + +const ( + // LogTypeApi is a LogType enum value + LogTypeApi = "api" + + // LogTypeAudit is a LogType enum value + LogTypeAudit = "audit" + + // LogTypeAuthenticator is a LogType enum value + LogTypeAuthenticator = "authenticator" + + // LogTypeControllerManager is a LogType enum value + LogTypeControllerManager = "controllerManager" + + // LogTypeScheduler is a LogType enum value + LogTypeScheduler = "scheduler" +) + +// LogType_Values returns all elements of the LogType enum +func LogType_Values() []string { + return []string{ + LogTypeApi, + LogTypeAudit, + LogTypeAuthenticator, + LogTypeControllerManager, + LogTypeScheduler, + } +} + +const ( + // NodegroupIssueCodeAutoScalingGroupNotFound is a NodegroupIssueCode enum value + NodegroupIssueCodeAutoScalingGroupNotFound = "AutoScalingGroupNotFound" + + // NodegroupIssueCodeAutoScalingGroupInvalidConfiguration is a NodegroupIssueCode enum value + NodegroupIssueCodeAutoScalingGroupInvalidConfiguration = "AutoScalingGroupInvalidConfiguration" + + // NodegroupIssueCodeEc2securityGroupNotFound is a NodegroupIssueCode enum value + NodegroupIssueCodeEc2securityGroupNotFound = "Ec2SecurityGroupNotFound" + + // NodegroupIssueCodeEc2securityGroupDeletionFailure is a NodegroupIssueCode enum value + NodegroupIssueCodeEc2securityGroupDeletionFailure = "Ec2SecurityGroupDeletionFailure" + + // NodegroupIssueCodeEc2launchTemplateNotFound is a NodegroupIssueCode enum value + NodegroupIssueCodeEc2launchTemplateNotFound = "Ec2LaunchTemplateNotFound" + + // NodegroupIssueCodeEc2launchTemplateVersionMismatch is a NodegroupIssueCode enum value + NodegroupIssueCodeEc2launchTemplateVersionMismatch = "Ec2LaunchTemplateVersionMismatch" + + // NodegroupIssueCodeEc2subnetNotFound is a NodegroupIssueCode enum value + NodegroupIssueCodeEc2subnetNotFound = "Ec2SubnetNotFound" + + // NodegroupIssueCodeEc2subnetInvalidConfiguration is a NodegroupIssueCode enum value + NodegroupIssueCodeEc2subnetInvalidConfiguration = "Ec2SubnetInvalidConfiguration" + + // NodegroupIssueCodeIamInstanceProfileNotFound is a NodegroupIssueCode enum value + NodegroupIssueCodeIamInstanceProfileNotFound = "IamInstanceProfileNotFound" + + // NodegroupIssueCodeIamLimitExceeded is a NodegroupIssueCode enum value + NodegroupIssueCodeIamLimitExceeded = "IamLimitExceeded" + + // NodegroupIssueCodeIamNodeRoleNotFound is a NodegroupIssueCode enum value + NodegroupIssueCodeIamNodeRoleNotFound = "IamNodeRoleNotFound" + + // NodegroupIssueCodeNodeCreationFailure is a NodegroupIssueCode enum value + NodegroupIssueCodeNodeCreationFailure = "NodeCreationFailure" + + // NodegroupIssueCodeAsgInstanceLaunchFailures is a NodegroupIssueCode enum value + NodegroupIssueCodeAsgInstanceLaunchFailures = "AsgInstanceLaunchFailures" + + // NodegroupIssueCodeInstanceLimitExceeded is a NodegroupIssueCode enum value + NodegroupIssueCodeInstanceLimitExceeded = "InstanceLimitExceeded" + + // NodegroupIssueCodeInsufficientFreeAddresses is a NodegroupIssueCode enum value + NodegroupIssueCodeInsufficientFreeAddresses = "InsufficientFreeAddresses" + + // NodegroupIssueCodeAccessDenied is a NodegroupIssueCode enum value + NodegroupIssueCodeAccessDenied = "AccessDenied" + + // NodegroupIssueCodeInternalFailure is a NodegroupIssueCode enum value + NodegroupIssueCodeInternalFailure = "InternalFailure" + + // NodegroupIssueCodeClusterUnreachable is a NodegroupIssueCode enum value + NodegroupIssueCodeClusterUnreachable = "ClusterUnreachable" +) + +// NodegroupIssueCode_Values returns all elements of the NodegroupIssueCode enum +func NodegroupIssueCode_Values() []string { + return []string{ + NodegroupIssueCodeAutoScalingGroupNotFound, + NodegroupIssueCodeAutoScalingGroupInvalidConfiguration, + NodegroupIssueCodeEc2securityGroupNotFound, + NodegroupIssueCodeEc2securityGroupDeletionFailure, + NodegroupIssueCodeEc2launchTemplateNotFound, + NodegroupIssueCodeEc2launchTemplateVersionMismatch, + NodegroupIssueCodeEc2subnetNotFound, + NodegroupIssueCodeEc2subnetInvalidConfiguration, + NodegroupIssueCodeIamInstanceProfileNotFound, + NodegroupIssueCodeIamLimitExceeded, + NodegroupIssueCodeIamNodeRoleNotFound, + NodegroupIssueCodeNodeCreationFailure, + NodegroupIssueCodeAsgInstanceLaunchFailures, + NodegroupIssueCodeInstanceLimitExceeded, + NodegroupIssueCodeInsufficientFreeAddresses, + NodegroupIssueCodeAccessDenied, + NodegroupIssueCodeInternalFailure, + NodegroupIssueCodeClusterUnreachable, + } +} + +const ( + // NodegroupStatusCreating is a NodegroupStatus enum value + NodegroupStatusCreating = "CREATING" + + // NodegroupStatusActive is a NodegroupStatus enum value + NodegroupStatusActive = "ACTIVE" + + // NodegroupStatusUpdating is a NodegroupStatus enum value + NodegroupStatusUpdating = "UPDATING" + + // NodegroupStatusDeleting is a NodegroupStatus enum value + NodegroupStatusDeleting = "DELETING" + + // NodegroupStatusCreateFailed is a NodegroupStatus enum value + NodegroupStatusCreateFailed = "CREATE_FAILED" + + // NodegroupStatusDeleteFailed is a NodegroupStatus enum value + NodegroupStatusDeleteFailed = "DELETE_FAILED" + + // NodegroupStatusDegraded is a NodegroupStatus enum value + NodegroupStatusDegraded = "DEGRADED" +) + +// NodegroupStatus_Values returns all elements of the NodegroupStatus enum +func NodegroupStatus_Values() []string { + return []string{ + NodegroupStatusCreating, + NodegroupStatusActive, + NodegroupStatusUpdating, + NodegroupStatusDeleting, + NodegroupStatusCreateFailed, + NodegroupStatusDeleteFailed, + NodegroupStatusDegraded, + } +} + +const ( + // ResolveConflictsOverwrite is a ResolveConflicts enum value + ResolveConflictsOverwrite = "OVERWRITE" + + // ResolveConflictsNone is a ResolveConflicts enum value + ResolveConflictsNone = "NONE" +) + +// ResolveConflicts_Values returns all elements of the ResolveConflicts enum +func ResolveConflicts_Values() []string { + return []string{ + ResolveConflictsOverwrite, + ResolveConflictsNone, + } +} + +const ( + // TaintEffectNoSchedule is a TaintEffect enum value + TaintEffectNoSchedule = "NO_SCHEDULE" + + // TaintEffectNoExecute is a TaintEffect enum value + TaintEffectNoExecute = "NO_EXECUTE" + + // TaintEffectPreferNoSchedule is a TaintEffect enum value + TaintEffectPreferNoSchedule = "PREFER_NO_SCHEDULE" +) + +// TaintEffect_Values returns all elements of the TaintEffect enum +func TaintEffect_Values() []string { + return []string{ + TaintEffectNoSchedule, + TaintEffectNoExecute, + TaintEffectPreferNoSchedule, + } +} + +const ( + // UpdateParamTypeVersion is a UpdateParamType enum value + UpdateParamTypeVersion = "Version" + + // UpdateParamTypePlatformVersion is a UpdateParamType enum value + UpdateParamTypePlatformVersion = "PlatformVersion" + + // UpdateParamTypeEndpointPrivateAccess is a UpdateParamType enum value + UpdateParamTypeEndpointPrivateAccess = "EndpointPrivateAccess" + + // UpdateParamTypeEndpointPublicAccess is a UpdateParamType enum value + UpdateParamTypeEndpointPublicAccess = "EndpointPublicAccess" + + // UpdateParamTypeClusterLogging is a UpdateParamType enum value + UpdateParamTypeClusterLogging = "ClusterLogging" + + // UpdateParamTypeDesiredSize is a UpdateParamType enum value + UpdateParamTypeDesiredSize = "DesiredSize" + + // UpdateParamTypeLabelsToAdd is a UpdateParamType enum value + UpdateParamTypeLabelsToAdd = "LabelsToAdd" + + // UpdateParamTypeLabelsToRemove is a UpdateParamType enum value + UpdateParamTypeLabelsToRemove = "LabelsToRemove" + + // UpdateParamTypeTaintsToAdd is a UpdateParamType enum value + UpdateParamTypeTaintsToAdd = "TaintsToAdd" + + // UpdateParamTypeTaintsToRemove is a UpdateParamType enum value + UpdateParamTypeTaintsToRemove = "TaintsToRemove" + + // UpdateParamTypeMaxSize is a UpdateParamType enum value + UpdateParamTypeMaxSize = "MaxSize" + + // UpdateParamTypeMinSize is a UpdateParamType enum value + UpdateParamTypeMinSize = "MinSize" + + // UpdateParamTypeReleaseVersion is a UpdateParamType enum value + UpdateParamTypeReleaseVersion = "ReleaseVersion" + + // UpdateParamTypePublicAccessCidrs is a UpdateParamType enum value + UpdateParamTypePublicAccessCidrs = "PublicAccessCidrs" + + // UpdateParamTypeLaunchTemplateName is a UpdateParamType enum value + UpdateParamTypeLaunchTemplateName = "LaunchTemplateName" + + // UpdateParamTypeLaunchTemplateVersion is a UpdateParamType enum value + UpdateParamTypeLaunchTemplateVersion = "LaunchTemplateVersion" + + // UpdateParamTypeIdentityProviderConfig is a UpdateParamType enum value + UpdateParamTypeIdentityProviderConfig = "IdentityProviderConfig" + + // UpdateParamTypeEncryptionConfig is a UpdateParamType enum value + UpdateParamTypeEncryptionConfig = "EncryptionConfig" + + // UpdateParamTypeAddonVersion is a UpdateParamType enum value + UpdateParamTypeAddonVersion = "AddonVersion" + + // UpdateParamTypeServiceAccountRoleArn is a UpdateParamType enum value + UpdateParamTypeServiceAccountRoleArn = "ServiceAccountRoleArn" + + // UpdateParamTypeResolveConflicts is a UpdateParamType enum value + UpdateParamTypeResolveConflicts = "ResolveConflicts" +) + +// UpdateParamType_Values returns all elements of the UpdateParamType enum +func UpdateParamType_Values() []string { + return []string{ + UpdateParamTypeVersion, + UpdateParamTypePlatformVersion, + UpdateParamTypeEndpointPrivateAccess, + UpdateParamTypeEndpointPublicAccess, + UpdateParamTypeClusterLogging, + UpdateParamTypeDesiredSize, + UpdateParamTypeLabelsToAdd, + UpdateParamTypeLabelsToRemove, + UpdateParamTypeTaintsToAdd, + UpdateParamTypeTaintsToRemove, + UpdateParamTypeMaxSize, + UpdateParamTypeMinSize, + UpdateParamTypeReleaseVersion, + UpdateParamTypePublicAccessCidrs, + UpdateParamTypeLaunchTemplateName, + UpdateParamTypeLaunchTemplateVersion, + UpdateParamTypeIdentityProviderConfig, + UpdateParamTypeEncryptionConfig, + UpdateParamTypeAddonVersion, + UpdateParamTypeServiceAccountRoleArn, + UpdateParamTypeResolveConflicts, + } +} + +const ( + // UpdateStatusInProgress is a UpdateStatus enum value + UpdateStatusInProgress = "InProgress" + + // UpdateStatusFailed is a UpdateStatus enum value + UpdateStatusFailed = "Failed" + + // UpdateStatusCancelled is a UpdateStatus enum value + UpdateStatusCancelled = "Cancelled" + + // UpdateStatusSuccessful is a UpdateStatus enum value + UpdateStatusSuccessful = "Successful" +) + +// UpdateStatus_Values returns all elements of the UpdateStatus enum +func UpdateStatus_Values() []string { + return []string{ + UpdateStatusInProgress, + UpdateStatusFailed, + UpdateStatusCancelled, + UpdateStatusSuccessful, + } +} + +const ( + // UpdateTypeVersionUpdate is a UpdateType enum value + UpdateTypeVersionUpdate = "VersionUpdate" + + // UpdateTypeEndpointAccessUpdate is a UpdateType enum value + UpdateTypeEndpointAccessUpdate = "EndpointAccessUpdate" + + // UpdateTypeLoggingUpdate is a UpdateType enum value + UpdateTypeLoggingUpdate = "LoggingUpdate" + + // UpdateTypeConfigUpdate is a UpdateType enum value + UpdateTypeConfigUpdate = "ConfigUpdate" + + // UpdateTypeAssociateIdentityProviderConfig is a UpdateType enum value + UpdateTypeAssociateIdentityProviderConfig = "AssociateIdentityProviderConfig" + + // UpdateTypeDisassociateIdentityProviderConfig is a UpdateType enum value + UpdateTypeDisassociateIdentityProviderConfig = "DisassociateIdentityProviderConfig" + + // UpdateTypeAssociateEncryptionConfig is a UpdateType enum value + UpdateTypeAssociateEncryptionConfig = "AssociateEncryptionConfig" + + // UpdateTypeAddonUpdate is a UpdateType enum value + UpdateTypeAddonUpdate = "AddonUpdate" +) + +// UpdateType_Values returns all elements of the UpdateType enum +func UpdateType_Values() []string { + return []string{ + UpdateTypeVersionUpdate, + UpdateTypeEndpointAccessUpdate, + UpdateTypeLoggingUpdate, + UpdateTypeConfigUpdate, + UpdateTypeAssociateIdentityProviderConfig, + UpdateTypeDisassociateIdentityProviderConfig, + UpdateTypeAssociateEncryptionConfig, + UpdateTypeAddonUpdate, + } +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/doc.go new file mode 100644 index 0000000000..d30d7ad088 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/doc.go @@ -0,0 +1,40 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +// Package eks provides the client and types for making API +// requests to Amazon Elastic Kubernetes Service. +// +// Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that +// makes it easy for you to run Kubernetes on AWS without needing to stand up +// or maintain your own Kubernetes control plane. Kubernetes is an open-source +// system for automating the deployment, scaling, and management of containerized +// applications. +// +// Amazon EKS runs up-to-date versions of the open-source Kubernetes software, +// so you can use all the existing plugins and tooling from the Kubernetes community. +// Applications running on Amazon EKS are fully compatible with applications +// running on any standard Kubernetes environment, whether running in on-premises +// data centers or public clouds. This means that you can easily migrate any +// standard Kubernetes application to Amazon EKS without any code modification +// required. +// +// See https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01 for more information on this service. +// +// See eks package documentation for more information. +// https://docs.aws.amazon.com/sdk-for-go/api/service/eks/ +// +// Using the Client +// +// To contact Amazon Elastic Kubernetes Service with the SDK use the New function to create +// a new service client. With that client you can make API requests to the service. +// These clients are safe to use concurrently. +// +// See the SDK's documentation for more information on how to use the SDK. +// https://docs.aws.amazon.com/sdk-for-go/api/ +// +// See aws.Config documentation for more information on configuring SDK clients. +// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config +// +// See the Amazon Elastic Kubernetes Service client EKS for more +// information on creating client for this service. +// https://docs.aws.amazon.com/sdk-for-go/api/service/eks/#New +package eks diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/errors.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/errors.go new file mode 100644 index 0000000000..7c908d3008 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/errors.go @@ -0,0 +1,101 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package eks + +import ( + "github.com/aws/aws-sdk-go/private/protocol" +) + +const ( + + // ErrCodeBadRequestException for service response error code + // "BadRequestException". + // + // This exception is thrown if the request contains a semantic error. The precise + // meaning will depend on the API, and will be documented in the error message. + ErrCodeBadRequestException = "BadRequestException" + + // ErrCodeClientException for service response error code + // "ClientException". + // + // These errors are usually caused by a client action. Actions can include using + // an action or resource on behalf of a user that doesn't have permissions to + // use the action or resource or specifying an identifier that is not valid. + ErrCodeClientException = "ClientException" + + // ErrCodeInvalidParameterException for service response error code + // "InvalidParameterException". + // + // The specified parameter is invalid. Review the available parameters for the + // API request. + ErrCodeInvalidParameterException = "InvalidParameterException" + + // ErrCodeInvalidRequestException for service response error code + // "InvalidRequestException". + // + // The request is invalid given the state of the cluster. Check the state of + // the cluster and the associated operations. + ErrCodeInvalidRequestException = "InvalidRequestException" + + // ErrCodeNotFoundException for service response error code + // "NotFoundException". + // + // A service resource associated with the request could not be found. Clients + // should not retry such requests. + ErrCodeNotFoundException = "NotFoundException" + + // ErrCodeResourceInUseException for service response error code + // "ResourceInUseException". + // + // The specified resource is in use. + ErrCodeResourceInUseException = "ResourceInUseException" + + // ErrCodeResourceLimitExceededException for service response error code + // "ResourceLimitExceededException". + // + // You have encountered a service limit on the specified resource. + ErrCodeResourceLimitExceededException = "ResourceLimitExceededException" + + // ErrCodeResourceNotFoundException for service response error code + // "ResourceNotFoundException". + // + // The specified resource could not be found. You can view your available clusters + // with ListClusters. You can view your available managed node groups with ListNodegroups. + // Amazon EKS clusters and node groups are Region-specific. + ErrCodeResourceNotFoundException = "ResourceNotFoundException" + + // ErrCodeServerException for service response error code + // "ServerException". + // + // These errors are usually caused by a server-side issue. + ErrCodeServerException = "ServerException" + + // ErrCodeServiceUnavailableException for service response error code + // "ServiceUnavailableException". + // + // The service is unavailable. Back off and retry the operation. + ErrCodeServiceUnavailableException = "ServiceUnavailableException" + + // ErrCodeUnsupportedAvailabilityZoneException for service response error code + // "UnsupportedAvailabilityZoneException". + // + // At least one of your specified cluster subnets is in an Availability Zone + // that does not support Amazon EKS. The exception output specifies the supported + // Availability Zones for your account, from which you can choose subnets for + // your cluster. + ErrCodeUnsupportedAvailabilityZoneException = "UnsupportedAvailabilityZoneException" +) + +var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{ + "BadRequestException": newErrorBadRequestException, + "ClientException": newErrorClientException, + "InvalidParameterException": newErrorInvalidParameterException, + "InvalidRequestException": newErrorInvalidRequestException, + "NotFoundException": newErrorNotFoundException, + "ResourceInUseException": newErrorResourceInUseException, + "ResourceLimitExceededException": newErrorResourceLimitExceededException, + "ResourceNotFoundException": newErrorResourceNotFoundException, + "ServerException": newErrorServerException, + "ServiceUnavailableException": newErrorServiceUnavailableException, + "UnsupportedAvailabilityZoneException": newErrorUnsupportedAvailabilityZoneException, +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/service.go new file mode 100644 index 0000000000..3fc2175454 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/service.go @@ -0,0 +1,104 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package eks + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/aws/signer/v4" + "github.com/aws/aws-sdk-go/private/protocol" + "github.com/aws/aws-sdk-go/private/protocol/restjson" +) + +// EKS provides the API operation methods for making requests to +// Amazon Elastic Kubernetes Service. See this package's package overview docs +// for details on the service. +// +// EKS methods are safe to use concurrently. It is not safe to +// modify mutate any of the struct's properties though. +type EKS struct { + *client.Client +} + +// Used for custom client initialization logic +var initClient func(*client.Client) + +// Used for custom request initialization logic +var initRequest func(*request.Request) + +// Service information constants +const ( + ServiceName = "eks" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "EKS" // ServiceID is a unique identifier of a specific service. +) + +// New creates a new instance of the EKS client with a session. +// If additional configuration is needed for the client instance use the optional +// aws.Config parameter to add your extra config. +// +// Example: +// mySession := session.Must(session.NewSession()) +// +// // Create a EKS client from just a session. +// svc := eks.New(mySession) +// +// // Create a EKS client with additional configuration +// svc := eks.New(mySession, aws.NewConfig().WithRegion("us-west-2")) +func New(p client.ConfigProvider, cfgs ...*aws.Config) *EKS { + c := p.ClientConfig(EndpointsID, cfgs...) + if c.SigningNameDerived || len(c.SigningName) == 0 { + c.SigningName = "eks" + } + return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName) +} + +// newClient creates, initializes and returns a new service client instance. +func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName string) *EKS { + svc := &EKS{ + Client: client.New( + cfg, + metadata.ClientInfo{ + ServiceName: ServiceName, + ServiceID: ServiceID, + SigningName: signingName, + SigningRegion: signingRegion, + PartitionID: partitionID, + Endpoint: endpoint, + APIVersion: "2017-11-01", + }, + handlers, + ), + } + + // Handlers + svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler) + svc.Handlers.Build.PushBackNamed(restjson.BuildHandler) + svc.Handlers.Unmarshal.PushBackNamed(restjson.UnmarshalHandler) + svc.Handlers.UnmarshalMeta.PushBackNamed(restjson.UnmarshalMetaHandler) + svc.Handlers.UnmarshalError.PushBackNamed( + protocol.NewUnmarshalErrorHandler(restjson.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(), + ) + + // Run custom client initialization if present + if initClient != nil { + initClient(svc.Client) + } + + return svc +} + +// newRequest creates a new request for a EKS operation and runs any +// custom request initialization. +func (c *EKS) newRequest(op *request.Operation, params, data interface{}) *request.Request { + req := c.NewRequest(op, params, data) + + // Run custom request initialization if present + if initRequest != nil { + initRequest(req) + } + + return req +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/waiters.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/waiters.go new file mode 100644 index 0000000000..9c9def22a1 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/waiters.go @@ -0,0 +1,331 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package eks + +import ( + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" +) + +// WaitUntilAddonActive uses the Amazon EKS API operation +// DescribeAddon to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EKS) WaitUntilAddonActive(input *DescribeAddonInput) error { + return c.WaitUntilAddonActiveWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilAddonActiveWithContext is an extended version of WaitUntilAddonActive. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) WaitUntilAddonActiveWithContext(ctx aws.Context, input *DescribeAddonInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilAddonActive", + MaxAttempts: 60, + Delay: request.ConstantWaiterDelay(10 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "addon.status", + Expected: "CREATE_FAILED", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "addon.status", + Expected: "DEGRADED", + }, + { + State: request.SuccessWaiterState, + Matcher: request.PathWaiterMatch, Argument: "addon.status", + Expected: "ACTIVE", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeAddonInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeAddonRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilAddonDeleted uses the Amazon EKS API operation +// DescribeAddon to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EKS) WaitUntilAddonDeleted(input *DescribeAddonInput) error { + return c.WaitUntilAddonDeletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilAddonDeletedWithContext is an extended version of WaitUntilAddonDeleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) WaitUntilAddonDeletedWithContext(ctx aws.Context, input *DescribeAddonInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilAddonDeleted", + MaxAttempts: 60, + Delay: request.ConstantWaiterDelay(10 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "addon.status", + Expected: "DELETE_FAILED", + }, + { + State: request.SuccessWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "ResourceNotFoundException", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeAddonInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeAddonRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilClusterActive uses the Amazon EKS API operation +// DescribeCluster to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EKS) WaitUntilClusterActive(input *DescribeClusterInput) error { + return c.WaitUntilClusterActiveWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilClusterActiveWithContext is an extended version of WaitUntilClusterActive. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) WaitUntilClusterActiveWithContext(ctx aws.Context, input *DescribeClusterInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilClusterActive", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(30 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "cluster.status", + Expected: "DELETING", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "cluster.status", + Expected: "FAILED", + }, + { + State: request.SuccessWaiterState, + Matcher: request.PathWaiterMatch, Argument: "cluster.status", + Expected: "ACTIVE", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeClusterInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeClusterRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilClusterDeleted uses the Amazon EKS API operation +// DescribeCluster to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EKS) WaitUntilClusterDeleted(input *DescribeClusterInput) error { + return c.WaitUntilClusterDeletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilClusterDeletedWithContext is an extended version of WaitUntilClusterDeleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) WaitUntilClusterDeletedWithContext(ctx aws.Context, input *DescribeClusterInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilClusterDeleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(30 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "cluster.status", + Expected: "ACTIVE", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "cluster.status", + Expected: "CREATING", + }, + { + State: request.SuccessWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "ResourceNotFoundException", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeClusterInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeClusterRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilNodegroupActive uses the Amazon EKS API operation +// DescribeNodegroup to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EKS) WaitUntilNodegroupActive(input *DescribeNodegroupInput) error { + return c.WaitUntilNodegroupActiveWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilNodegroupActiveWithContext is an extended version of WaitUntilNodegroupActive. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) WaitUntilNodegroupActiveWithContext(ctx aws.Context, input *DescribeNodegroupInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilNodegroupActive", + MaxAttempts: 80, + Delay: request.ConstantWaiterDelay(30 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "nodegroup.status", + Expected: "CREATE_FAILED", + }, + { + State: request.SuccessWaiterState, + Matcher: request.PathWaiterMatch, Argument: "nodegroup.status", + Expected: "ACTIVE", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeNodegroupInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNodegroupRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilNodegroupDeleted uses the Amazon EKS API operation +// DescribeNodegroup to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EKS) WaitUntilNodegroupDeleted(input *DescribeNodegroupInput) error { + return c.WaitUntilNodegroupDeletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilNodegroupDeletedWithContext is an extended version of WaitUntilNodegroupDeleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EKS) WaitUntilNodegroupDeletedWithContext(ctx aws.Context, input *DescribeNodegroupInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilNodegroupDeleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(30 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.FailureWaiterState, + Matcher: request.PathWaiterMatch, Argument: "nodegroup.status", + Expected: "DELETE_FAILED", + }, + { + State: request.SuccessWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "ResourceNotFoundException", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeNodegroupInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNodegroupRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} diff --git a/cluster-autoscaler/vendor/modules.txt b/cluster-autoscaler/vendor/modules.txt index 5c0ae87cad..21dfb5dc40 100644 --- a/cluster-autoscaler/vendor/modules.txt +++ b/cluster-autoscaler/vendor/modules.txt @@ -128,6 +128,7 @@ github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil github.com/aws/aws-sdk-go/service/autoscaling github.com/aws/aws-sdk-go/service/ec2 github.com/aws/aws-sdk-go/service/ecr +github.com/aws/aws-sdk-go/service/eks github.com/aws/aws-sdk-go/service/elb github.com/aws/aws-sdk-go/service/elbv2 github.com/aws/aws-sdk-go/service/kms @@ -1849,6 +1850,7 @@ sigs.k8s.io/structured-merge-diff/v4/typed sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 sigs.k8s.io/yaml +# github.com/aws/aws-sdk-go/service/eks => github.com/aws/aws-sdk-go/service/eks v1.38.49 # github.com/digitalocean/godo => github.com/digitalocean/godo v1.27.0 # github.com/rancher/go-rancher => github.com/rancher/go-rancher v0.1.0 # k8s.io/api => k8s.io/api v0.23.0-alpha.1