浏览代码

Copytight header

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 5 年之前
父节点
当前提交
55a21122d0
共有 24 个文件被更改,包括 377 次插入55 次删除
  1. 3 4
      compose/api.go
  2. 16 0
      compose/tags.go
  3. 2 0
      ecs/backend.go
  4. 22 4
      ecs/cloudformation.go
  5. 19 2
      ecs/cloudformation_test.go
  6. 16 0
      ecs/colors.go
  7. 16 0
      ecs/compatibility.go
  8. 19 21
      ecs/convert.go
  9. 16 0
      ecs/down.go
  10. 16 0
      ecs/iam.go
  11. 18 1
      ecs/list.go
  12. 17 1
      ecs/logs.go
  13. 16 0
      ecs/marshall.go
  14. 21 4
      ecs/sdk.go
  15. 17 1
      ecs/secrets.go
  16. 14 0
      ecs/secrets/Dockerfile
  17. 16 0
      ecs/secrets/init.go
  18. 28 9
      ecs/secrets/init_test.go
  19. 18 1
      ecs/secrets/main/main.go
  20. 17 1
      ecs/up.go
  21. 18 1
      ecs/wait.go
  22. 16 0
      ecs/x.go
  23. 0 5
      go.sum
  24. 16 0
      secrets/api.go

+ 3 - 4
compose/api.go

@@ -37,8 +37,7 @@ type Service interface {
 	Convert(ctx context.Context, opts *cli.ProjectOptions) ([]byte, error)
 }
 
-
-type LoadBalancer struct {
+type PortPublisher struct {
 	URL           string
 	TargetPort    int
 	PublishedPort int
@@ -51,5 +50,5 @@ type ServiceStatus struct {
 	Replicas      int
 	Desired       int
 	Ports         []string
-	LoadBalancers []LoadBalancer
-}
+	LoadBalancers []PortPublisher
+}

+ 16 - 0
compose/tags.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package compose
 
 const (

+ 2 - 0
ecs/backend.go

@@ -18,8 +18,10 @@ package ecs
 
 import (
 	"context"
+
 	"github.com/aws/aws-sdk-go/aws"
 	"github.com/aws/aws-sdk-go/aws/session"
+
 	"github.com/docker/api/secrets"
 
 	"github.com/docker/api/backend"

+ 22 - 4
ecs/cloudformation.go

@@ -1,14 +1,32 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
 	"context"
 	"fmt"
-	"github.com/compose-spec/compose-go/cli"
-	"github.com/docker/api/compose"
 	"io/ioutil"
 	"regexp"
 	"strings"
 
+	"github.com/compose-spec/compose-go/cli"
+
+	"github.com/docker/api/compose"
+
 	ecsapi "github.com/aws/aws-sdk-go/service/ecs"
 	"github.com/aws/aws-sdk-go/service/elbv2"
 	cloudmapapi "github.com/aws/aws-sdk-go/service/servicediscovery"
@@ -329,13 +347,13 @@ func createLoadBalancer(project *types.Project, template *cloudformation.Templat
 	}
 	if ports == 0 {
 		// Project do not expose any port (batch jobs?)
-		// So no need to create a LoadBalancer
+		// So no need to create a PortPublisher
 		return ""
 	}
 
 	// load balancer names are limited to 32 characters total
 	loadBalancerName := fmt.Sprintf("%.32s", fmt.Sprintf("%sLoadBalancer", strings.Title(project.Name)))
-	// Create LoadBalancer if `ParameterLoadBalancerName` is not set
+	// Create PortPublisher if `ParameterLoadBalancerName` is not set
 	template.Conditions["CreateLoadBalancer"] = cloudformation.Equals("", cloudformation.Ref(ParameterLoadBalancerARN))
 
 	loadBalancerType := getLoadBalancerType(project)

+ 19 - 2
ecs/cloudformation_test.go

@@ -1,11 +1,28 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
 	"fmt"
-	"github.com/docker/api/compose"
 	"reflect"
 	"testing"
 
+	"github.com/docker/api/compose"
+
 	"github.com/aws/aws-sdk-go/service/elbv2"
 	"github.com/awslabs/goformation/v4/cloudformation"
 	"github.com/awslabs/goformation/v4/cloudformation/ec2"
@@ -187,7 +204,7 @@ services:
 	for _, r := range template.Resources {
 		assert.Check(t, r.AWSCloudFormationType() != "AWS::ElasticLoadBalancingV2::TargetGroup")
 		assert.Check(t, r.AWSCloudFormationType() != "AWS::ElasticLoadBalancingV2::Listener")
-		assert.Check(t, r.AWSCloudFormationType() != "AWS::ElasticLoadBalancingV2::LoadBalancer")
+		assert.Check(t, r.AWSCloudFormationType() != "AWS::ElasticLoadBalancingV2::PortPublisher")
 	}
 }
 

+ 16 - 0
ecs/colors.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (

+ 16 - 0
ecs/compatibility.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (

+ 19 - 21
ecs/convert.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
@@ -14,11 +30,11 @@ import (
 	ecsapi "github.com/aws/aws-sdk-go/service/ecs"
 	"github.com/awslabs/goformation/v4/cloudformation"
 	"github.com/awslabs/goformation/v4/cloudformation/ecs"
-	"github.com/awslabs/goformation/v4/cloudformation/tags"
 	"github.com/compose-spec/compose-go/types"
-	"github.com/docker/api/ecs/secrets"
 	"github.com/docker/cli/opts"
 	"github.com/joho/godotenv"
+
+	"github.com/docker/api/ecs/secrets"
 )
 
 const secretsInitContainerImage = "docker/ecs-secrets-sidecar"
@@ -185,7 +201,7 @@ func createEnvironment(project *types.Project, service types.ServiceConfig) ([]e
 		if err != nil {
 			return nil, err
 		}
-		defer file.Close()
+		defer file.Close() // nolint:errcheck
 
 		env, err := godotenv.Parse(file)
 		if err != nil {
@@ -234,17 +250,6 @@ func getLogConfiguration(service types.ServiceConfig, project *types.Project) *e
 	return logConfiguration
 }
 
-func toTags(labels types.Labels) []tags.Tag {
-	t := []tags.Tag{}
-	for n, v := range labels {
-		t = append(t, tags.Tag{
-			Key:   n,
-			Value: v,
-		})
-	}
-	return t
-}
-
 func toSystemControls(sysctls types.Mapping) []ecs.TaskDefinition_SystemControl {
 	sys := []ecs.TaskDefinition_SystemControl{}
 	for k, v := range sysctls {
@@ -324,13 +329,6 @@ func toContainerReservation(service types.ServiceConfig) (string, int, error) {
 	return reservations.NanoCPUs, int(reservations.MemoryBytes / MiB), nil
 }
 
-func toRequiresCompatibilities(isolation string) []*string {
-	if isolation == "" {
-		return nil
-	}
-	return []*string{&isolation}
-}
-
 func toPlacementConstraints(deploy *types.DeployConfig) []ecs.TaskDefinition_TaskDefinitionPlacementConstraint {
 	if deploy == nil || deploy.Placement.Constraints == nil || len(deploy.Placement.Constraints) == 0 {
 		return nil

+ 16 - 0
ecs/down.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (

+ 16 - 0
ecs/iam.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 const (

+ 18 - 1
ecs/list.go

@@ -1,11 +1,28 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
 	"context"
 	"fmt"
-	"github.com/docker/api/compose"
 	"strings"
 
+	"github.com/docker/api/compose"
+
 	"github.com/compose-spec/compose-go/cli"
 )
 

+ 17 - 1
ecs/logs.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
@@ -50,7 +66,7 @@ func (l *logConsumer) Log(service, container, message string) {
 
 	for _, line := range strings.Split(message, "\n") {
 		buf := bytes.NewBufferString(fmt.Sprintf("%s %s\n", cf(prefix), line))
-		l.writer.Write(buf.Bytes())
+		l.writer.Write(buf.Bytes()) // nolint:errcheck
 	}
 }
 

+ 16 - 0
ecs/marshall.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (

+ 21 - 4
ecs/sdk.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
@@ -312,6 +328,7 @@ type StackResource struct {
 	ARN       string
 	Status    string
 }
+
 func (s sdk) ListStackResources(ctx context.Context, name string) ([]StackResource, error) {
 	// FIXME handle pagination
 	res, err := s.CF.ListStackResourcesWithContext(ctx, &cloudformation.ListStackResourcesInput{
@@ -488,7 +505,7 @@ func (s sdk) DescribeServices(ctx context.Context, cluster string, arns []string
 	return status, nil
 }
 
-func (s sdk) getURLWithPortMapping(ctx context.Context, targetGroupArns []string) ([]compose.LoadBalancer, error) {
+func (s sdk) getURLWithPortMapping(ctx context.Context, targetGroupArns []string) ([]compose.PortPublisher, error) {
 	if len(targetGroupArns) == 0 {
 		return nil, nil
 	}
@@ -522,14 +539,14 @@ func (s sdk) getURLWithPortMapping(ctx context.Context, targetGroupArns []string
 		}
 		return nil
 	}
-	loadBalancers := []compose.LoadBalancer{}
+	loadBalancers := []compose.PortPublisher{}
 	for _, tg := range groups.TargetGroups {
 		for _, lbarn := range tg.LoadBalancerArns {
 			lb := filterLB(lbarn, lbs.LoadBalancers)
 			if lb == nil {
 				continue
 			}
-			loadBalancers = append(loadBalancers, compose.LoadBalancer{
+			loadBalancers = append(loadBalancers, compose.PortPublisher{
 				URL:           aws.StringValue(lb.DNSName),
 				TargetPort:    int(aws.Int64Value(tg.Port)),
 				PublishedPort: int(aws.Int64Value(tg.Port)),
@@ -573,7 +590,7 @@ func (s sdk) GetPublicIPs(ctx context.Context, interfaces ...string) (map[string
 }
 
 func (s sdk) LoadBalancerExists(ctx context.Context, arn string) (bool, error) {
-	logrus.Debug("CheckRequirements if LoadBalancer exists: ", arn)
+	logrus.Debug("CheckRequirements if PortPublisher exists: ", arn)
 	lbs, err := s.ELB.DescribeLoadBalancersWithContext(ctx, &elbv2.DescribeLoadBalancersInput{
 		LoadBalancerArns: []*string{aws.String(arn)},
 	})

+ 17 - 1
ecs/secrets.go

@@ -1,11 +1,27 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
 	"context"
+
 	"github.com/docker/api/secrets"
 )
 
-
 func (b *ecsAPIService) CreateSecret(ctx context.Context, secret secrets.Secret) (string, error) {
 	return b.SDK.CreateSecret(ctx, secret)
 }

+ 14 - 0
ecs/secrets/Dockerfile

@@ -1,3 +1,17 @@
+#   Copyright 2020 Docker, Inc.
+
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+
+#       http://www.apache.org/licenses/LICENSE-2.0
+
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
 FROM golang:1.14.4-alpine AS builder
 WORKDIR $GOPATH/src/github.com/docker/api/ecs/secrets
 COPY . .

+ 16 - 0
ecs/secrets/init.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package secrets
 
 import (

+ 28 - 9
ecs/secrets/init_test.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package secrets
 
 import (
@@ -12,10 +28,11 @@ import (
 
 func TestRawSecret(t *testing.T) {
 	dir := fs.NewDir(t, "secrets").Path()
-	os.Setenv("raw", "something_secret")
-	defer os.Unsetenv("raw")
+	err := os.Setenv("raw", "something_secret")
+	assert.NilError(t, err)
+	defer os.Unsetenv("raw") // nolint:errcheck
 
-	err := CreateSecretFiles(Secret{
+	err = CreateSecretFiles(Secret{
 		Name: "raw",
 		Keys: nil,
 	}, dir)
@@ -28,14 +45,15 @@ func TestRawSecret(t *testing.T) {
 
 func TestSelectedKeysSecret(t *testing.T) {
 	dir := fs.NewDir(t, "secrets").Path()
-	os.Setenv("json", `
+	err := os.Setenv("json", `
 {
    "foo": "bar",
    "zot": "qix"
 }`)
-	defer os.Unsetenv("json")
+	assert.NilError(t, err)
+	defer os.Unsetenv("json") // nolint:errcheck
 
-	err := CreateSecretFiles(Secret{
+	err = CreateSecretFiles(Secret{
 		Name: "json",
 		Keys: []string{"foo"},
 	}, dir)
@@ -51,14 +69,15 @@ func TestSelectedKeysSecret(t *testing.T) {
 
 func TestAllKeysSecret(t *testing.T) {
 	dir := fs.NewDir(t, "secrets").Path()
-	os.Setenv("json", `
+	err := os.Setenv("json", `
 {
    "foo": "bar",
    "zot": "qix"
 }`)
-	defer os.Unsetenv("json")
+	assert.NilError(t, err)
+	defer os.Unsetenv("json") // nolint:errcheck
 
-	err := CreateSecretFiles(Secret{
+	err = CreateSecretFiles(Secret{
 		Name: "json",
 		Keys: []string{"*"},
 	}, dir)

+ 18 - 1
ecs/secrets/main/main.go

@@ -1,10 +1,27 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package main
 
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/docker/api/ecs/secrets"
 	"os"
+
+	"github.com/docker/api/ecs/secrets"
 )
 
 const secretsFolder = "/run/secrets"

+ 17 - 1
ecs/up.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
@@ -85,7 +101,7 @@ func (b *ecsAPIService) Up(ctx context.Context, options *cli.ProjectOptions) err
 	go func() {
 		<-signalChan
 		fmt.Println("user interrupted deployment. Deleting stack...")
-		b.Down(ctx, options)
+		b.Down(ctx, options) // nolint:errcheck
 	}()
 
 	err = b.WaitStackCompletion(ctx, project.Name, operation)

+ 18 - 1
ecs/wait.go

@@ -1,13 +1,30 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 import (
 	"context"
 	"fmt"
-	"github.com/docker/api/progress"
 	"sort"
 	"strings"
 	"time"
 
+	"github.com/docker/api/progress"
+
 	"github.com/aws/aws-sdk-go/aws"
 )
 

+ 16 - 0
ecs/x.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package ecs
 
 const (

+ 0 - 5
go.sum

@@ -64,8 +64,6 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy
 github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
 github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
 github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0=
-github.com/aws/aws-sdk-go v1.34.2 h1:9vCknCdTAmmV4ht7lPuda7aJXzllXwEQyCMZKJHjBrM=
-github.com/aws/aws-sdk-go v1.34.2/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
 github.com/aws/aws-sdk-go v1.34.6 h1:2aPXQGkR6xeheN5dns13mSoDWeUlj4wDmfZ+8ZDHauw=
 github.com/aws/aws-sdk-go v1.34.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
 github.com/awslabs/goformation/v4 v4.14.0 h1:E2Pet9eIqA4qzt3dzzzE4YN83V4Kyfbcio0VokBC9TA=
@@ -132,7 +130,6 @@ github.com/docker/cli v0.0.0-20200528204125-dd360c7c0de8 h1:JRquW4uqIU+eSilDhuo9
 github.com/docker/cli v0.0.0-20200528204125-dd360c7c0de8/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
 github.com/docker/distribution v0.0.0-20200708230824-53e18a9d9bfe h1:pni13lAFm1g4cjHU6c3n4qGvvJGZQK4VvKRKMseQ42E=
 github.com/docker/distribution v0.0.0-20200708230824-53e18a9d9bfe/go.mod h1:Oqz4IonmMNc2N7GqfTL2xkhCQx0yS6nR+HrOZJnmKIk=
-github.com/docker/docker v1.13.1 h1:IkZjBSIc8hBjLpqeAbeE5mca5mNgeatLHBy3GO78BWo=
 github.com/docker/docker v17.12.0-ce-rc1.0.20200309214505-aa6a9891b09c+incompatible h1:G2hY8RD7jB9QaSmcb8mYEIg8QbEvVAB7se8+lXHZHfg=
 github.com/docker/docker v17.12.0-ce-rc1.0.20200309214505-aa6a9891b09c+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
 github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ=
@@ -534,8 +531,6 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogR
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/ini.v1 v1.58.0 h1:VdDvTzv/005R8vEFyQ56bpEnOKTNPbpJhL0VCohxlQw=
-gopkg.in/ini.v1 v1.58.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/ini.v1 v1.60.0 h1:P5ZzC7RJO04094NJYlEnBdFK2wwmnCAy/+7sAzvWs60=
 gopkg.in/ini.v1 v1.60.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=

+ 16 - 0
secrets/api.go

@@ -1,3 +1,19 @@
+/*
+   Copyright 2020 Docker, Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 package secrets
 
 import (