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 }