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

     1  // Copyright 2022 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package actionpruner
     5  
     6  import (
     7  	"reflect"
     8  
     9  	"github.com/juju/errors"
    10  
    11  	"github.com/juju/juju/apiserver/common"
    12  	"github.com/juju/juju/apiserver/facade"
    13  )
    14  
    15  // Register is called to expose a package of facades onto a given registry.
    16  func Register(registry facade.FacadeRegistry) {
    17  	registry.MustRegister("ActionPruner", 1, func(ctx facade.Context) (facade.Facade, error) {
    18  		return newAPI(ctx)
    19  	}, reflect.TypeOf((*API)(nil)))
    20  }
    21  
    22  // newAPI returns an action pruner API.
    23  func newAPI(ctx facade.Context) (*API, error) {
    24  	m, err := Model(ctx)
    25  	if err != nil {
    26  		return nil, errors.Trace(err)
    27  	}
    28  	return &API{
    29  		ModelWatcher: common.NewModelWatcher(m, ctx.Resources(), ctx.Auth()),
    30  		st:           ctx.State(),
    31  		authorizer:   ctx.Auth(),
    32  		cancel:       ctx.Cancel(),
    33  	}, nil
    34  }