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

     1  // Copyright 2022 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package application
     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("Application", 15, func(ctx facade.Context) (facade.Facade, error) {
    17  		return newFacadeV15(ctx)
    18  	}, reflect.TypeOf((*APIv15)(nil)))
    19  	registry.MustRegister("Application", 16, func(ctx facade.Context) (facade.Facade, error) {
    20  		return newFacadeV16(ctx) // DestroyApplication & DestroyUnit gains dry-run
    21  	}, reflect.TypeOf((*APIv16)(nil)))
    22  	registry.MustRegister("Application", 17, func(ctx facade.Context) (facade.Facade, error) {
    23  		return newFacadeV17(ctx) // Drop deprecated DestroyUnits & Destroy facades
    24  	}, reflect.TypeOf((*APIv17)(nil)))
    25  	registry.MustRegister("Application", 18, func(ctx facade.Context) (facade.Facade, error) {
    26  		return newFacadeV18(ctx) // Added new DeployFromRepository
    27  	}, reflect.TypeOf((*APIv18)(nil)))
    28  	registry.MustRegister("Application", 19, func(ctx facade.Context) (facade.Facade, error) {
    29  		return newFacadeV19(ctx) // Added new DeployFromRepository
    30  	}, reflect.TypeOf((*APIv19)(nil)))
    31  	registry.MustRegister("Application", 20, func(ctx facade.Context) (facade.Facade, error) {
    32  		return newFacadeV20(ctx) // Remove remote space
    33  	}, reflect.TypeOf((*APIv20)(nil)))
    34  }
    35  
    36  func newFacadeV20(ctx facade.Context) (*APIv20, error) {
    37  	api, err := newFacadeBase(ctx)
    38  	if err != nil {
    39  		return nil, errors.Trace(err)
    40  	}
    41  	return &APIv20{api}, nil
    42  }
    43  
    44  func newFacadeV19(ctx facade.Context) (*APIv19, error) {
    45  	api, err := newFacadeV20(ctx)
    46  	if err != nil {
    47  		return nil, errors.Trace(err)
    48  	}
    49  	return &APIv19{api}, nil
    50  }
    51  
    52  func newFacadeV18(ctx facade.Context) (*APIv18, error) {
    53  	api, err := newFacadeV19(ctx)
    54  	if err != nil {
    55  		return nil, errors.Trace(err)
    56  	}
    57  	return &APIv18{api}, nil
    58  }
    59  
    60  func newFacadeV17(ctx facade.Context) (*APIv17, error) {
    61  	api, err := newFacadeV18(ctx)
    62  	if err != nil {
    63  		return nil, errors.Trace(err)
    64  	}
    65  	return &APIv17{api}, nil
    66  }
    67  
    68  func newFacadeV16(ctx facade.Context) (*APIv16, error) {
    69  	api, err := newFacadeV17(ctx)
    70  	if err != nil {
    71  		return nil, errors.Trace(err)
    72  	}
    73  	return &APIv16{api}, nil
    74  }
    75  
    76  func newFacadeV15(ctx facade.Context) (*APIv15, error) {
    77  	api, err := newFacadeV16(ctx)
    78  	if err != nil {
    79  		return nil, errors.Trace(err)
    80  	}
    81  	return &APIv15{api}, nil
    82  }