fix: only delete secrets from specific app
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
See coop-cloud/organising#300.
This commit is contained in:
parent
d8a1b0ccc1
commit
b4b0b464bd
|
@ -10,10 +10,12 @@ import (
|
||||||
"coopcloud.tech/abra/cli/internal"
|
"coopcloud.tech/abra/cli/internal"
|
||||||
"coopcloud.tech/abra/pkg/autocomplete"
|
"coopcloud.tech/abra/pkg/autocomplete"
|
||||||
"coopcloud.tech/abra/pkg/client"
|
"coopcloud.tech/abra/pkg/client"
|
||||||
|
"coopcloud.tech/abra/pkg/config"
|
||||||
"coopcloud.tech/abra/pkg/formatter"
|
"coopcloud.tech/abra/pkg/formatter"
|
||||||
"coopcloud.tech/abra/pkg/secret"
|
"coopcloud.tech/abra/pkg/secret"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"github.com/docker/docker/api/types/filters"
|
"github.com/docker/docker/api/types/filters"
|
||||||
|
dockerClient "github.com/docker/docker/client"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
)
|
)
|
||||||
|
@ -150,6 +152,25 @@ Example:
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// secretRm removes a secret.
|
||||||
|
func secretRm(cl *dockerClient.Client, app config.App, secretName, parsed string) error {
|
||||||
|
if err := cl.SecretRemove(context.Background(), secretName); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
logrus.Infof("deleted %s successfully from server", secretName)
|
||||||
|
|
||||||
|
if internal.Pass {
|
||||||
|
if err := secret.PassRmSecret(parsed, app.StackName(), app.Server); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
logrus.Infof("deleted %s successfully from local pass store", secretName)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var appSecretRmCommand = cli.Command{
|
var appSecretRmCommand = cli.Command{
|
||||||
Name: "remove",
|
Name: "remove",
|
||||||
Aliases: []string{"rm"},
|
Aliases: []string{"rm"},
|
||||||
|
@ -172,6 +193,7 @@ Example:
|
||||||
`,
|
`,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
app := internal.ValidateApp(c)
|
app := internal.ValidateApp(c)
|
||||||
|
secrets := secret.ReadSecretEnvVars(app.Env)
|
||||||
|
|
||||||
if c.Args().Get(1) != "" && allSecrets {
|
if c.Args().Get(1) != "" && allSecrets {
|
||||||
internal.ShowSubcommandHelpAndError(c, errors.New("cannot use '<secret-name>' and '--all' together"))
|
internal.ShowSubcommandHelpAndError(c, errors.New("cannot use '<secret-name>' and '--all' together"))
|
||||||
|
@ -193,37 +215,33 @@ Example:
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
secretToRm := c.Args().Get(1)
|
remoteSecretNames := make(map[string]bool)
|
||||||
for _, cont := range secretList {
|
for _, cont := range secretList {
|
||||||
secretName := cont.Spec.Annotations.Name
|
remoteSecretNames[cont.Spec.Annotations.Name] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
secretToRm := c.Args().Get(1)
|
||||||
|
for sec := range secrets {
|
||||||
|
secretName := secret.ParseSecretEnvVarName(sec)
|
||||||
parsed := secret.ParseGeneratedSecretName(secretName, app)
|
parsed := secret.ParseGeneratedSecretName(secretName, app)
|
||||||
if allSecrets {
|
|
||||||
if err := cl.SecretRemove(context.Background(), secretName); err != nil {
|
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
logrus.Infof("deleted %s successfully from server", secretName)
|
|
||||||
|
|
||||||
if internal.Pass {
|
secVal, err := secret.ParseSecretEnvVarValue(secrets[sec])
|
||||||
if err := secret.PassRmSecret(parsed, app.StackName(), app.Server); err != nil {
|
if err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logrus.Infof("deleted %s successfully from local pass store", secretName)
|
secretRemoteName := fmt.Sprintf("%s_%s_%s", app.StackName(), secretName, secVal.Version)
|
||||||
}
|
if _, ok := remoteSecretNames[secretRemoteName]; ok {
|
||||||
} else {
|
if secretToRm != "" {
|
||||||
if parsed == secretToRm {
|
if parsed == secretToRm {
|
||||||
if err := cl.SecretRemove(context.Background(), secretName); err != nil {
|
if err := secretRm(cl, app, secretRemoteName, parsed); err != nil {
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
logrus.Infof("deleted %s successfully from server", secretName)
|
|
||||||
|
|
||||||
if internal.Pass {
|
|
||||||
if err := secret.PassRmSecret(parsed, app.StackName(), app.Server); err != nil {
|
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
logrus.Infof("deleted %s successfully from local pass store", secretName)
|
}
|
||||||
|
} else {
|
||||||
|
if err := secretRm(cl, app, secretRemoteName, parsed); err != nil {
|
||||||
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue