github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/client/secretbackends/register.go (about)

     1  // Copyright 2022 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package secretbackends
     5  
     6  import (
     7  	"reflect"
     8  
     9  	"github.com/juju/clock"
    10  
    11  	apiservererrors "github.com/juju/juju/apiserver/errors"
    12  	"github.com/juju/juju/apiserver/facade"
    13  	"github.com/juju/juju/state"
    14  )
    15  
    16  // Register is called to expose a package of facades onto a given registry.
    17  func Register(registry facade.FacadeRegistry) {
    18  	registry.MustRegister("SecretBackends", 1, func(ctx facade.Context) (facade.Facade, error) {
    19  		return newSecretBackendsAPI(ctx)
    20  	}, reflect.TypeOf((*SecretBackendsAPI)(nil)))
    21  }
    22  
    23  // newSecretBackendsAPI creates a SecretBackendsAPI.
    24  func newSecretBackendsAPI(context facade.Context) (*SecretBackendsAPI, error) {
    25  	if !context.Auth().AuthClient() {
    26  		return nil, apiservererrors.ErrPerm
    27  	}
    28  
    29  	return &SecretBackendsAPI{
    30  		authorizer:     context.Auth(),
    31  		controllerUUID: context.State().ControllerUUID(),
    32  		clock:          clock.WallClock,
    33  		backendState:   state.NewSecretBackends(context.State()),
    34  		secretState:    state.NewSecrets(context.State()),
    35  		statePool:      &statePoolShim{context.StatePool()},
    36  	}, nil
    37  }