github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/cmd/juju/commands/authorizedkeys.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package commands 5 6 import ( 7 "github.com/juju/cmd" 8 "launchpad.net/gnuflag" 9 10 "github.com/juju/juju/api/keymanager" 11 "github.com/juju/juju/cmd/envcmd" 12 ) 13 14 var authKeysDoc = ` 15 "juju authorized-keys" is used to manage the ssh keys allowed to log on to 16 nodes in the Juju environment. 17 18 ` 19 20 type AuthorizedKeysCommand struct { 21 *cmd.SuperCommand 22 } 23 24 type AuthorizedKeysBase struct { 25 envcmd.EnvCommandBase 26 } 27 28 // NewKeyManagerClient returns a keymanager client for the root api endpoint 29 // that the environment command returns. 30 func (c *AuthorizedKeysBase) NewKeyManagerClient() (*keymanager.Client, error) { 31 root, err := c.NewAPIRoot() 32 if err != nil { 33 return nil, err 34 } 35 return keymanager.NewClient(root), nil 36 } 37 38 func NewAuthorizedKeysCommand() cmd.Command { 39 sshkeyscmd := &AuthorizedKeysCommand{ 40 SuperCommand: cmd.NewSuperCommand(cmd.SuperCommandParams{ 41 Name: "authorized-keys", 42 Doc: authKeysDoc, 43 UsagePrefix: "juju", 44 Purpose: "manage authorised ssh keys", 45 Aliases: []string{"authorised-keys"}, 46 }), 47 } 48 sshkeyscmd.Register(envcmd.Wrap(&AddKeysCommand{})) 49 sshkeyscmd.Register(envcmd.Wrap(&DeleteKeysCommand{})) 50 sshkeyscmd.Register(envcmd.Wrap(&ImportKeysCommand{})) 51 sshkeyscmd.Register(envcmd.Wrap(&ListKeysCommand{})) 52 return sshkeyscmd 53 } 54 55 func (c *AuthorizedKeysCommand) SetFlags(f *gnuflag.FlagSet) { 56 c.SetCommonFlags(f) 57 }