github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/controller/environupgrader/register.go (about) 1 // Copyright 2022 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package environupgrader 5 6 import ( 7 "reflect" 8 9 "github.com/juju/names/v5" 10 11 "github.com/juju/juju/apiserver/common" 12 "github.com/juju/juju/apiserver/facade" 13 "github.com/juju/juju/environs" 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("EnvironUpgrader", 1, func(ctx facade.Context) (facade.Facade, error) { 19 return newStateFacade(ctx) 20 }, reflect.TypeOf((*Facade)(nil))) 21 } 22 23 // newStateFacade provides the signature required for facade registration. 24 func newStateFacade(ctx facade.Context) (*Facade, error) { 25 pool := NewPool(ctx.StatePool()) 26 registry := environs.GlobalProviderRegistry() 27 watcher := common.NewAgentEntityWatcher( 28 ctx.State(), 29 ctx.Resources(), 30 common.AuthFuncForTagKind(names.ModelTagKind), 31 ) 32 statusSetter := common.NewStatusSetter( 33 ctx.State(), 34 common.AuthFuncForTagKind(names.ModelTagKind), 35 ) 36 return NewFacade(ctx.State(), pool, registry, watcher, statusSetter, ctx.Auth()) 37 }