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

     1  // Copyright 2022 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package externalcontrollerupdater
     5  
     6  import (
     7  	"reflect"
     8  
     9  	"github.com/juju/juju/apiserver/facade"
    10  	"github.com/juju/juju/state"
    11  )
    12  
    13  // Register is called to expose a package of facades onto a given registry.
    14  func Register(registry facade.FacadeRegistry) {
    15  	registry.MustRegister("ExternalControllerUpdater", 1, func(ctx facade.Context) (facade.Facade, error) {
    16  		return newStateAPI(ctx)
    17  	}, reflect.TypeOf((*ExternalControllerUpdaterAPI)(nil)))
    18  }
    19  
    20  // newStateAPI creates a new server-side CrossModelRelationsAPI API facade
    21  // backed by global state.
    22  func newStateAPI(ctx facade.Context) (*ExternalControllerUpdaterAPI, error) {
    23  	return NewAPI(
    24  		ctx.Auth(),
    25  		ctx.Resources(),
    26  		state.NewExternalControllers(ctx.State()),
    27  	)
    28  }