package secret import ( "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/swarm" "github.com/docker/docker/client" "golang.org/x/net/context" ) func getSecretsByName(ctx context.Context, client client.APIClient, names []string) ([]swarm.Secret, error) { args := filters.NewArgs() for _, n := range names { args.Add("names", n) } return client.SecretList(ctx, types.SecretListOptions{ Filters: args, }) } func getCliRequestedSecretIDs(ctx context.Context, client client.APIClient, names []string) ([]string, error) { ids := names // attempt to lookup secret by name secrets, err := getSecretsByName(ctx, client, ids) if err != nil { return nil, err } lookup := make(map[string]struct{}) for _, id := range ids { lookup[id] = struct{}{} } if len(secrets) > 0 { ids = []string{} for _, s := range secrets { if _, ok := lookup[s.Spec.Annotations.Name]; ok { ids = append(ids, s.ID) } } } return ids, nil }