command: basic rpc works for keys command

This commit is contained in:
Ryan Uber 2014-09-08 18:36:54 -07:00
parent 96376212ff
commit 43a60f1424
5 changed files with 50 additions and 12 deletions

View File

@ -741,17 +741,20 @@ func loadKeyringFile(keyringFile string) *memberlist.Keyring {
}
// ListKeysLAN returns the keys installed on the LAN gossip pool
func (a *Agent) ListKeysLAN() map[string]int {
func (a *Agent) ListKeysLAN() (*serf.KeyResponse, error) {
if a.server != nil {
return a.server.ListKeysLAN()
km := a.server.KeyManagerLAN()
return km.ListKeys()
}
return a.client.ListKeysLAN()
km := a.client.KeyManagerLAN()
return km.ListKeys()
}
// ListKeysWAN returns the keys installed on the WAN gossip pool
func (a *Agent) ListKeysWAN() map[string]int {
func (a *Agent) ListKeysWAN() (*serf.KeyResponse, error) {
if a.server != nil {
return a.server.ListKeysWAN()
km := a.server.KeyManagerWAN()
return km.ListKeys()
}
return nil
return nil, nil
}

View File

@ -629,7 +629,11 @@ func (i *AgentRPC) handleListKeysLAN(client *rpcClient, seq uint64) error {
Seq: seq,
Error: "",
}
resp := i.agent.ListKeysLAN()
resp, err := i.agent.ListKeysLAN()
if err != nil {
return err
}
return client.Send(&header, resp)
}
@ -638,7 +642,12 @@ func (i *AgentRPC) handleListKeysWAN(client *rpcClient, seq uint64) error {
Seq: seq,
Error: "",
}
resp := i.agent.ListKeysWAN()
resp, err := i.agent.ListKeysWAN()
if err != nil {
return err
}
return client.Send(&header, resp)
}

View File

@ -176,6 +176,28 @@ func (c *RPCClient) WANMembers() ([]Member, error) {
return resp.Members, err
}
func (c *RPCClient) ListKeysLAN() (map[string]int, error) {
header := requestHeader{
Command: listKeysLANCommand,
Seq: c.getSeq(),
}
resp := make(map[string]int)
err := c.genericRPC(&header, nil, &resp)
return resp, err
}
func (c *RPCClient) ListKeysWAN() (map[string]int, error) {
header := requestHeader{
Command: listKeysWANCommand,
Seq: c.getSeq(),
}
resp := make(map[string]int)
err := c.genericRPC(&header, nil, &resp)
return resp, err
}
// Leave is used to trigger a graceful leave and shutdown
func (c *RPCClient) Leave() error {
header := requestHeader{

View File

@ -49,8 +49,12 @@ func (c *KeysCommand) Run(args []string) int {
}
if listKeys {
km := client.KeyManager()
fmt.Println(km.ListKeys())
keys, err := client.ListKeysLAN()
if err != nil {
c.Ui.Error(fmt.Sprintf("Error: %s", err))
return 1
}
fmt.Println(keys)
return 0
}

View File

@ -206,8 +206,8 @@ func (c *Client) UserEvent(name string, payload []byte) error {
return c.serf.UserEvent(userEventName(name), payload, false)
}
// KeyManager returns the Serf keyring manager
func (c *Client) KeyManager() *serf.KeyManager {
// KeyManager returns the LAN Serf keyring manager
func (c *Client) KeyManagerLAN() *serf.KeyManager {
return c.serf.KeyManager()
}