github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/client/modelgeneration/register.go (about) 1 // Copyright 2022 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package modelgeneration 5 6 import ( 7 "reflect" 8 9 "github.com/juju/errors" 10 11 "github.com/juju/juju/apiserver/facade" 12 ) 13 14 // Register is called to expose a package of facades onto a given registry. 15 func Register(registry facade.FacadeRegistry) { 16 registry.MustRegister("ModelGeneration", 4, func(ctx facade.Context) (facade.Facade, error) { 17 return newModelGenerationFacadeV4(ctx) 18 }, reflect.TypeOf((*API)(nil))) 19 } 20 21 // newModelGenerationFacadeV4 provides the signature required for facade registration. 22 func newModelGenerationFacadeV4(ctx facade.Context) (*API, error) { 23 authorizer := ctx.Auth() 24 st := &stateShim{State: ctx.State()} 25 m, err := st.Model() 26 if err != nil { 27 return nil, errors.Trace(err) 28 } 29 mc, err := ctx.Controller().Model(st.ModelUUID()) 30 if err != nil { 31 return nil, errors.Trace(err) 32 } 33 return NewModelGenerationAPI(st, authorizer, m, &modelCacheShim{Model: mc}) 34 }