mirror of https://github.com/docker/compose.git
Introduce Secrets API
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
91427d0492
commit
6e6a11aa73
|
@ -19,6 +19,7 @@ package aci
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/docker/api/secrets"
|
||||
"io"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
@ -127,6 +128,11 @@ func (a *aciAPIService) ComposeService() compose.Service {
|
|||
return a.aciComposeService
|
||||
}
|
||||
|
||||
func (a *aciAPIService) SecretsService() secrets.Service {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
type aciContainerService struct {
|
||||
ctx store.AciContext
|
||||
}
|
||||
|
@ -451,7 +457,7 @@ func (cs *aciComposeService) Logs(ctx context.Context, opts *cli.ProjectOptions,
|
|||
return errdefs.ErrNotImplemented
|
||||
}
|
||||
|
||||
func Convert(ctx context.Context, opts *cli.ProjectOptions) ([]byte, error) {
|
||||
func (cs *aciComposeService) Convert(ctx context.Context, opts *cli.ProjectOptions) ([]byte, error) {
|
||||
return nil, errdefs.ErrNotImplemented
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/docker/api/secrets"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/docker/api/compose"
|
||||
|
@ -51,6 +51,7 @@ var backends = struct {
|
|||
// Service aggregates the service interfaces
|
||||
type Service interface {
|
||||
ContainerService() containers.Service
|
||||
SecretsService() secrets.Service
|
||||
ComposeService() compose.Service
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ package client
|
|||
|
||||
import (
|
||||
"context"
|
||||
"github.com/docker/api/secrets"
|
||||
|
||||
"github.com/docker/api/context/cloud"
|
||||
|
||||
|
@ -69,3 +70,8 @@ func (c *Client) ContainerService() containers.Service {
|
|||
func (c *Client) ComposeService() compose.Service {
|
||||
return c.bs.ComposeService()
|
||||
}
|
||||
|
||||
// ComposeService returns the backend service for the current context
|
||||
func (c *Client) SecretsService() secrets.Service {
|
||||
return c.bs.SecretsService()
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ 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"
|
||||
"github.com/docker/api/compose"
|
||||
|
@ -88,6 +89,10 @@ func (a *ecsAPIService) ComposeService() compose.Service {
|
|||
return a
|
||||
}
|
||||
|
||||
func (a *ecsAPIService) SecretsService() secrets.Service {
|
||||
return a
|
||||
}
|
||||
|
||||
func getCloudService() (cloud.Service, error) {
|
||||
return ecsCloudService{}, nil
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package ecs
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/docker/api/compose"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
|
@ -249,7 +250,8 @@ services:
|
|||
cpus: '0.5'
|
||||
memory: 2043248M
|
||||
`)
|
||||
_, err := Backend{}.Convert(model)
|
||||
backend := &ecsAPIService{}
|
||||
_, err := backend.convert(model)
|
||||
assert.ErrorContains(t, err, "the resources requested are not supported by ECS/Fargate")
|
||||
}
|
||||
|
||||
|
@ -331,11 +333,10 @@ services:
|
|||
}
|
||||
|
||||
func convertResultAsString(t *testing.T, project *types.Project) string {
|
||||
backend, err := NewBackend("", "")
|
||||
backend := &ecsAPIService{}
|
||||
template, err := backend.convert(project)
|
||||
assert.NilError(t, err)
|
||||
result, err := backend.Convert(project)
|
||||
assert.NilError(t, err)
|
||||
resultAsJSON, err := result.JSON()
|
||||
resultAsJSON, err := Marshall(template)
|
||||
assert.NilError(t, err)
|
||||
return fmt.Sprintf("%s\n", string(resultAsJSON))
|
||||
}
|
||||
|
@ -351,8 +352,9 @@ func load(t *testing.T, paths ...string) *types.Project {
|
|||
}
|
||||
|
||||
func convertYaml(t *testing.T, name string, yaml string) *cloudformation.Template {
|
||||
model := loadConfig(t, name, yaml)
|
||||
template, err := Backend{}.Convert(model)
|
||||
project := loadConfig(t, name, yaml)
|
||||
backend := &ecsAPIService{}
|
||||
template, err := backend.convert(project)
|
||||
assert.NilError(t, err)
|
||||
return template
|
||||
}
|
||||
|
|
|
@ -23,11 +23,12 @@ func (b *ecsAPIService) Logs(ctx context.Context, options *cli.ProjectOptions, w
|
|||
name = project.Name
|
||||
}
|
||||
|
||||
err := b.SDK.GetLogs(ctx, name, &logConsumer{
|
||||
consumer := logConsumer{
|
||||
colors: map[string]ColorFunc{},
|
||||
width: 0,
|
||||
writer: writer,
|
||||
})
|
||||
}
|
||||
err := b.SDK.GetLogs(ctx, name, consumer.Log)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
38
ecs/sdk.go
38
ecs/sdk.go
|
@ -3,10 +3,12 @@ package ecs
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/docker/api/compose"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/docker/api/compose"
|
||||
"github.com/docker/api/secrets"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/cloudformation"
|
||||
|
@ -239,6 +241,12 @@ func (s sdk) UpdateStack(ctx context.Context, changeset string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
const (
|
||||
StackCreate = iota
|
||||
StackUpdate
|
||||
StackDelete
|
||||
)
|
||||
|
||||
func (s sdk) WaitStackComplete(ctx context.Context, name string, operation int) error {
|
||||
input := &cloudformation.DescribeStacksInput{
|
||||
StackName: aws.String(name),
|
||||
|
@ -298,6 +306,12 @@ func (s sdk) ListStackParameters(ctx context.Context, name string) (map[string]s
|
|||
return parameters, nil
|
||||
}
|
||||
|
||||
type StackResource struct {
|
||||
LogicalID string
|
||||
Type string
|
||||
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{
|
||||
|
@ -327,7 +341,7 @@ func (s sdk) DeleteStack(ctx context.Context, name string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (s sdk) CreateSecret(ctx context.Context, secret Secret) (string, error) {
|
||||
func (s sdk) CreateSecret(ctx context.Context, secret secrets.Secret) (string, error) {
|
||||
logrus.Debug("Create secret " + secret.Name)
|
||||
secretStr, err := secret.GetCredString()
|
||||
if err != nil {
|
||||
|
@ -345,17 +359,17 @@ func (s sdk) CreateSecret(ctx context.Context, secret Secret) (string, error) {
|
|||
return aws.StringValue(response.ARN), nil
|
||||
}
|
||||
|
||||
func (s sdk) InspectSecret(ctx context.Context, id string) (Secret, error) {
|
||||
func (s sdk) InspectSecret(ctx context.Context, id string) (secrets.Secret, error) {
|
||||
logrus.Debug("Inspect secret " + id)
|
||||
response, err := s.SM.DescribeSecret(&secretsmanager.DescribeSecretInput{SecretId: &id})
|
||||
if err != nil {
|
||||
return Secret{}, err
|
||||
return secrets.Secret{}, err
|
||||
}
|
||||
labels := map[string]string{}
|
||||
for _, tag := range response.Tags {
|
||||
labels[aws.StringValue(tag.Key)] = aws.StringValue(tag.Value)
|
||||
}
|
||||
secret := Secret{
|
||||
secret := secrets.Secret{
|
||||
ID: aws.StringValue(response.ARN),
|
||||
Name: aws.StringValue(response.Name),
|
||||
Labels: labels,
|
||||
|
@ -366,14 +380,14 @@ func (s sdk) InspectSecret(ctx context.Context, id string) (Secret, error) {
|
|||
return secret, nil
|
||||
}
|
||||
|
||||
func (s sdk) ListSecrets(ctx context.Context) ([]Secret, error) {
|
||||
func (s sdk) ListSecrets(ctx context.Context) ([]secrets.Secret, error) {
|
||||
logrus.Debug("List secrets ...")
|
||||
response, err := s.SM.ListSecrets(&secretsmanager.ListSecretsInput{})
|
||||
if err != nil {
|
||||
return []Secret{}, err
|
||||
return nil, err
|
||||
}
|
||||
var secrets []Secret
|
||||
|
||||
var ls []secrets.Secret
|
||||
for _, sec := range response.SecretList {
|
||||
|
||||
labels := map[string]string{}
|
||||
|
@ -384,14 +398,14 @@ func (s sdk) ListSecrets(ctx context.Context) ([]Secret, error) {
|
|||
if sec.Description != nil {
|
||||
description = *sec.Description
|
||||
}
|
||||
secrets = append(secrets, Secret{
|
||||
ls = append(ls, secrets.Secret{
|
||||
ID: *sec.ARN,
|
||||
Name: *sec.Name,
|
||||
Labels: labels,
|
||||
Description: description,
|
||||
})
|
||||
}
|
||||
return secrets, nil
|
||||
return ls, nil
|
||||
}
|
||||
|
||||
func (s sdk) DeleteSecret(ctx context.Context, id string, recover bool) error {
|
||||
|
@ -401,7 +415,7 @@ func (s sdk) DeleteSecret(ctx context.Context, id string, recover bool) error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (s sdk) GetLogs(ctx context.Context, name string, consumer LogConsumer) error {
|
||||
func (s sdk) GetLogs(ctx context.Context, name string, consumer func(service, container, message string)) error {
|
||||
logGroup := fmt.Sprintf("/docker-compose/%s", name)
|
||||
var startTime int64
|
||||
for {
|
||||
|
@ -424,7 +438,7 @@ func (s sdk) GetLogs(ctx context.Context, name string, consumer LogConsumer) err
|
|||
|
||||
for _, event := range events.Events {
|
||||
p := strings.Split(aws.StringValue(event.LogStreamName), "/")
|
||||
consumer.Log(p[1], p[2], aws.StringValue(event.Message))
|
||||
consumer(p[1], p[2], aws.StringValue(event.Message))
|
||||
startTime = *event.IngestionTime
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,20 +2,22 @@ package ecs
|
|||
|
||||
import (
|
||||
"context"
|
||||
"github.com/docker/api/secrets"
|
||||
)
|
||||
|
||||
func (b ecsAPIService) CreateSecret(ctx context.Context, secret Secret) (string, error) {
|
||||
|
||||
func (b *ecsAPIService) CreateSecret(ctx context.Context, secret secrets.Secret) (string, error) {
|
||||
return b.SDK.CreateSecret(ctx, secret)
|
||||
}
|
||||
|
||||
func (b ecsAPIService) InspectSecret(ctx context.Context, id string) (Secret, error) {
|
||||
func (b *ecsAPIService) InspectSecret(ctx context.Context, id string) (secrets.Secret, error) {
|
||||
return b.SDK.InspectSecret(ctx, id)
|
||||
}
|
||||
|
||||
func (b ecsAPIService) ListSecrets(ctx context.Context) ([]Secret, error) {
|
||||
func (b *ecsAPIService) ListSecrets(ctx context.Context) ([]secrets.Secret, error) {
|
||||
return b.SDK.ListSecrets(ctx)
|
||||
}
|
||||
|
||||
func (b ecsAPIService) DeleteSecret(ctx context.Context, id string, recover bool) error {
|
||||
func (b *ecsAPIService) DeleteSecret(ctx context.Context, id string, recover bool) error {
|
||||
return b.SDK.DeleteSecret(ctx, id, recover)
|
||||
}
|
||||
|
|
|
@ -46,6 +46,11 @@ func (a *apiService) ComposeService() compose.Service {
|
|||
return &a.composeService
|
||||
}
|
||||
|
||||
func (a *apiService) SecretsService() secrets.Service {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
func init() {
|
||||
backend.Register("example", "example", service, cloud.NotImplementedCloudService)
|
||||
}
|
||||
|
@ -143,6 +148,6 @@ func (cs *composeService) Logs(ctx context.Context, opts *cli.ProjectOptions, w
|
|||
return errdefs.ErrNotImplemented
|
||||
}
|
||||
|
||||
func Convert(ctx context.Context, opts *cli.ProjectOptions) ([]byte, error) {
|
||||
func (cs *composeService) Convert(ctx context.Context, opts *cli.ProjectOptions) ([]byte, error) {
|
||||
return nil, errdefs.ErrNotImplemented
|
||||
}
|
||||
|
|
6
go.mod
6
go.mod
|
@ -22,7 +22,7 @@ require (
|
|||
github.com/aws/aws-sdk-go v1.34.2
|
||||
github.com/awslabs/goformation/v4 v4.14.0
|
||||
github.com/buger/goterm v0.0.0-20200322175922-2f3e71b85129
|
||||
github.com/compose-spec/compose-go v0.0.0-20200710075715-6fcc35384ee1
|
||||
github.com/compose-spec/compose-go v0.0.0-20200818070525-eb1188aae4a2
|
||||
github.com/containerd/console v1.0.0
|
||||
github.com/containerd/containerd v1.3.5 // indirect
|
||||
github.com/docker/cli v0.0.0-20200528204125-dd360c7c0de8
|
||||
|
@ -51,9 +51,9 @@ require (
|
|||
github.com/spf13/cobra v1.0.0
|
||||
github.com/spf13/pflag v1.0.5
|
||||
github.com/stretchr/testify v1.6.1
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7
|
||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58
|
||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
|
||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 // indirect
|
||||
google.golang.org/grpc v1.31.0
|
||||
google.golang.org/protobuf v1.25.0
|
||||
|
|
26
go.sum
26
go.sum
|
@ -87,8 +87,8 @@ github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
|
|||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/compose-spec/compose-go v0.0.0-20200710075715-6fcc35384ee1 h1:F+YIkKDMHdgZBacawhFY1P9RAIgO+6uv2te6hjsjzF0=
|
||||
github.com/compose-spec/compose-go v0.0.0-20200710075715-6fcc35384ee1/go.mod h1:ArodJ6gsEB7iWKrbV3fSHZ08LlBvSVB0Oqg04fX86t4=
|
||||
github.com/compose-spec/compose-go v0.0.0-20200818070525-eb1188aae4a2 h1:b3JmHJVJt8zXy112yGtRq74G32sPQ8XLJxfHKaP/DOg=
|
||||
github.com/compose-spec/compose-go v0.0.0-20200818070525-eb1188aae4a2/go.mod h1:P7PZ0svgjrZ8nv/XvxObbl8o0DCIE9ZbL8pllg6uL4w=
|
||||
github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f h1:tSNMc+rJDfmYntojat8lljbt1mgKNpTxUZJsSzJ9Y1s=
|
||||
github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko=
|
||||
github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw=
|
||||
|
@ -130,6 +130,7 @@ 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=
|
||||
|
@ -222,8 +223,8 @@ github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW
|
|||
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||
github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ=
|
||||
github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||
github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA=
|
||||
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
|
@ -273,9 +274,10 @@ github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyex
|
|||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.3.2 h1:mRS76wmkOn3KkKAyXDu42V+6ebnXWIztFSYGN7GeoRg=
|
||||
github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8=
|
||||
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A=
|
||||
github.com/mjibson/esc v0.2.0/go.mod h1:9Hw9gxxfHulMF5OJKCyhYD7PzlSdhzXyaGEBRPH1OPs=
|
||||
github.com/moby/term v0.0.0-20200611042045-63b9a826fb74 h1:kvRIeqJNICemq2UFLx8q/Pj+1IRNZS0XPTaMFkuNsvg=
|
||||
github.com/moby/term v0.0.0-20200611042045-63b9a826fb74/go.mod h1:pJ0Ot5YGdTcMdxnPMyGCfAr6fKXe0g9cDlz16MuFEBE=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
|
@ -394,6 +396,7 @@ github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17
|
|||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
|
||||
github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
|
||||
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
|
||||
|
@ -407,6 +410,7 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
|||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
|
@ -414,6 +418,7 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL
|
|||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -427,12 +432,15 @@ golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn
|
|||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7 h1:AeiKBIuRw3UomYXSbLy0Mc2dDLfdtbT/IVn4keq83P0=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4=
|
||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
||||
|
@ -443,6 +451,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
|
|||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=
|
||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
@ -477,6 +487,10 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3
|
|||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200717024301-6ddee64345a6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||
|
|
|
@ -41,6 +41,7 @@ import (
|
|||
"github.com/docker/api/containers"
|
||||
"github.com/docker/api/context/cloud"
|
||||
"github.com/docker/api/errdefs"
|
||||
"github.com/docker/api/secrets"
|
||||
)
|
||||
|
||||
type local struct {
|
||||
|
@ -70,6 +71,10 @@ func (ms *local) ComposeService() compose.Service {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (ms *local) SecretsService() secrets.Service {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ms *local) Inspect(ctx context.Context, id string) (containers.Container, error) {
|
||||
c, err := ms.apiClient.ContainerInspect(ctx, id)
|
||||
if err != nil {
|
||||
|
|
|
@ -1,22 +1,16 @@
|
|||
package ecs
|
||||
package secrets
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type StackResource struct {
|
||||
LogicalID string
|
||||
Type string
|
||||
ARN string
|
||||
Status string
|
||||
}
|
||||
|
||||
const (
|
||||
StackCreate = iota
|
||||
StackUpdate
|
||||
StackDelete
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
type LogConsumer interface {
|
||||
Log(service, container, message string)
|
||||
// Service interacts with the underlying secrets backend
|
||||
type Service interface {
|
||||
CreateSecret(ctx context.Context, secret Secret) (string, error)
|
||||
InspectSecret(ctx context.Context, id string) (Secret, error)
|
||||
ListSecrets(ctx context.Context) ([]Secret, error)
|
||||
DeleteSecret(ctx context.Context, id string, recover bool) error
|
||||
}
|
||||
|
||||
type Secret struct {
|
Loading…
Reference in New Issue