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  }