~juju-qa/ubuntu/xenial/juju/xenial-2.0-beta3

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/cmd/juju/cloud/removecredential.go

  • Committer: Martin Packman
  • Date: 2016-03-30 19:31:08 UTC
  • mfrom: (1.1.41)
  • Revision ID: martin.packman@canonical.com-20160330193108-h9iz3ak334uk0z5r
Merge new upstream source 2.0~beta3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2016 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package cloud
 
5
 
 
6
import (
 
7
        "github.com/juju/cmd"
 
8
        "github.com/juju/errors"
 
9
 
 
10
        "github.com/juju/juju/jujuclient"
 
11
)
 
12
 
 
13
type removeCredentialCommand struct {
 
14
        cmd.CommandBase
 
15
 
 
16
        store      jujuclient.CredentialStore
 
17
        cloud      string
 
18
        credential string
 
19
}
 
20
 
 
21
var removeCredentialDoc = `
 
22
The remove-credential command removes a named credential for the specified cloud.
 
23
 
 
24
Example:
 
25
   juju remove-credential aws my-credential
 
26
 
 
27
See Also:
 
28
   juju list-credentials
 
29
   juju add-credential   
 
30
`
 
31
 
 
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(),
 
36
        }
 
37
}
 
38
 
 
39
func (c *removeCredentialCommand) Info() *cmd.Info {
 
40
        return &cmd.Info{
 
41
                Name:    "remove-credential",
 
42
                Purpose: "removes a credential for a cloud",
 
43
                Doc:     removeCredentialDoc,
 
44
                Args:    "<cloud> <credential-name>",
 
45
        }
 
46
}
 
47
 
 
48
func (c *removeCredentialCommand) Init(args []string) (err error) {
 
49
        if len(args) < 2 {
 
50
                return errors.New("Usage: juju remove-credential <cloud-name> <credential-name>")
 
51
        }
 
52
        c.cloud = args[0]
 
53
        c.credential = args[1]
 
54
        return cmd.CheckEmpty(args[2:])
 
55
}
 
56
 
 
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)
 
61
                return nil
 
62
        } else if err != nil {
 
63
                return err
 
64
        }
 
65
        if _, ok := cred.AuthCredentials[c.credential]; !ok {
 
66
                ctxt.Infof("No credential called %q exists for cloud %q", c.credential, c.cloud)
 
67
                return nil
 
68
        }
 
69
        delete(cred.AuthCredentials, c.credential)
 
70
        if err := c.store.UpdateCredential(c.cloud, *cred); err != nil {
 
71
                return err
 
72
        }
 
73
        ctxt.Infof("Credential %q for cloud %q has been deleted.", c.credential, c.cloud)
 
74
        return nil
 
75
}