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  }