github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/state/api/usermanager/client.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package usermanager 5 6 import ( 7 "fmt" 8 9 "github.com/juju/names" 10 11 "github.com/juju/juju/state/api" 12 "github.com/juju/juju/state/api/params" 13 ) 14 15 // TODO(mattyw) 2014-03-07 bug #1288750 16 // Need a SetPassword method. 17 type Client struct { 18 st *api.State 19 } 20 21 func (c *Client) call(method string, params, result interface{}) error { 22 return c.st.Call("UserManager", "", method, params, result) 23 } 24 25 func NewClient(st *api.State) *Client { 26 return &Client{st} 27 } 28 29 func (c *Client) Close() error { 30 return c.st.Close() 31 } 32 33 func (c *Client) AddUser(username, displayName, password string) error { 34 if !names.IsUser(username) { 35 return fmt.Errorf("invalid user name %q", username) 36 } 37 userArgs := params.ModifyUsers{ 38 Changes: []params.ModifyUser{{Username: username, DisplayName: displayName, Password: password}}, 39 } 40 results := new(params.ErrorResults) 41 err := c.call("AddUser", userArgs, results) 42 if err != nil { 43 return err 44 } 45 return results.OneError() 46 } 47 48 func (c *Client) RemoveUser(tag string) error { 49 u := params.Entity{Tag: tag} 50 p := params.Entities{Entities: []params.Entity{u}} 51 results := new(params.ErrorResults) 52 err := c.call("RemoveUser", p, results) 53 if err != nil { 54 return err 55 } 56 return results.OneError() 57 }