// ShareEnvironment allows the given users access to the environment. func (c *Client) ShareEnvironment(users ...names.UserTag) error { var args params.ModifyEnvironUsers for _, user := range users { if &user != nil { args.Changes = append(args.Changes, params.ModifyEnvironUser{ UserTag: user.String(), Action: params.AddEnvUser, }) } } var result params.ErrorResults err := c.facade.FacadeCall("ShareEnvironment", args, &result) if err != nil { return errors.Trace(err) } for i, r := range result.Results { if r.Error != nil && r.Error.Code == params.CodeAlreadyExists { logger.Warningf("environment is already shared with %s", users[i].Canonical()) result.Results[i].Error = nil } } return result.Combine() }
// UnshareEnvironment removes access to the environment for the given users. func (c *Client) UnshareEnvironment(users ...names.UserTag) error { var args params.ModifyEnvironUsers for _, user := range users { if &user != nil { args.Changes = append(args.Changes, params.ModifyEnvironUser{ UserTag: user.String(), Action: params.RemoveEnvUser, }) } } var result params.ErrorResults err := c.facade.FacadeCall("ShareEnvironment", args, &result) if err != nil { return errors.Trace(err) } for i, r := range result.Results { if r.Error != nil && r.Error.Code == params.CodeNotFound { logger.Warningf("environment was not previously shared with user %s", users[i].Username()) result.Results[i].Error = nil } } return result.Combine() }
// UnshareEnvironment removes access to the environment for the given users. func (c *Client) UnshareEnvironment(users []names.UserTag) (result params.ErrorResults, err error) { var args params.ModifyEnvironUsers for _, user := range users { if &user != nil { args.Changes = append(args.Changes, params.ModifyEnvironUser{ UserTag: user.String(), Action: params.RemoveEnvUser, }) } } err = c.facade.FacadeCall("ShareEnvironment", args, &result) return result, err }