github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/api/controller/secretsbackendmanager/client.go (about) 1 // Copyright 2023 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package secretsbackendmanager 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/api/base" 10 apiwatcher "github.com/juju/juju/api/watcher" 11 apiservererrors "github.com/juju/juju/apiserver/errors" 12 "github.com/juju/juju/core/watcher" 13 "github.com/juju/juju/rpc/params" 14 ) 15 16 // Client is the api client for the SecretBackendsManager facade. 17 type Client struct { 18 facade base.FacadeCaller 19 } 20 21 // NewClient creates a secret backends manager api client. 22 func NewClient(caller base.APICaller) *Client { 23 return &Client{ 24 facade: base.NewFacadeCaller(caller, "SecretBackendsManager"), 25 } 26 } 27 28 // WatchTokenRotationChanges returns a watcher that triggers on secret 29 // backend rotation changes. 30 func (c *Client) WatchTokenRotationChanges() (watcher.SecretBackendRotateWatcher, error) { 31 var result params.SecretBackendRotateWatchResult 32 err := c.facade.FacadeCall("WatchSecretBackendsRotateChanges", nil, &result) 33 if err != nil { 34 return nil, err 35 } 36 if result.Error != nil { 37 return nil, apiservererrors.RestoreError(result.Error) 38 } 39 w := apiwatcher.NewSecretBackendRotateWatcher(c.facade.RawAPICaller(), result) 40 return w, nil 41 } 42 43 // RotateBackendTokens rotates the tokens for the specified secret backends. 44 func (c *Client) RotateBackendTokens(backendIDs ...string) error { 45 var results params.ErrorResults 46 err := c.facade.FacadeCall("RotateBackendTokens", params.RotateSecretBackendArgs{ 47 BackendIDs: backendIDs, 48 }, &results) 49 if err != nil { 50 return errors.Trace(err) 51 } 52 return results.Combine() 53 }