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 }