1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
8
"github.com/juju/errors"
10
"github.com/juju/juju/jujuclient"
13
type removeCredentialCommand struct {
16
store jujuclient.CredentialStore
21
var removeCredentialDoc = `
22
The remove-credential command removes a named credential for the specified cloud.
25
juju remove-credential aws my-credential
32
// NewremoveCredentialCommand returns a command to remove a named credential for a cloud.
33
func NewRemoveCredentialCommand() cmd.Command {
34
return &removeCredentialCommand{
35
store: jujuclient.NewFileCredentialStore(),
39
func (c *removeCredentialCommand) Info() *cmd.Info {
41
Name: "remove-credential",
42
Purpose: "removes a credential for a cloud",
43
Doc: removeCredentialDoc,
44
Args: "<cloud> <credential-name>",
48
func (c *removeCredentialCommand) Init(args []string) (err error) {
50
return errors.New("Usage: juju remove-credential <cloud-name> <credential-name>")
53
c.credential = args[1]
54
return cmd.CheckEmpty(args[2:])
57
func (c *removeCredentialCommand) Run(ctxt *cmd.Context) error {
58
cred, err := c.store.CredentialForCloud(c.cloud)
59
if errors.IsNotFound(err) {
60
ctxt.Infof("No credentials exist for cloud %q", c.cloud)
62
} else if err != nil {
65
if _, ok := cred.AuthCredentials[c.credential]; !ok {
66
ctxt.Infof("No credential called %q exists for cloud %q", c.credential, c.cloud)
69
delete(cred.AuthCredentials, c.credential)
70
if err := c.store.UpdateCredential(c.cloud, *cred); err != nil {
73
ctxt.Infof("Credential %q for cloud %q has been deleted.", c.credential, c.cloud)