github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/controller/cleaner/cleaner.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 // The cleaner package implements the API interface 5 // used by the cleaner worker. 6 7 package cleaner 8 9 import ( 10 apiservererrors "github.com/juju/juju/apiserver/errors" 11 "github.com/juju/juju/apiserver/facade" 12 "github.com/juju/juju/rpc/params" 13 "github.com/juju/juju/state/watcher" 14 ) 15 16 // CleanerAPI implements the API used by the cleaner worker. 17 type CleanerAPI struct { 18 st StateInterface 19 resources facade.Resources 20 } 21 22 // Cleanup triggers a state cleanup 23 func (api *CleanerAPI) Cleanup() error { 24 return api.st.Cleanup() 25 } 26 27 // WatchCleanups watches for cleanups to be performed in state. 28 func (api *CleanerAPI) WatchCleanups() (params.NotifyWatchResult, error) { 29 watch := api.st.WatchCleanups() 30 if _, ok := <-watch.Changes(); ok { 31 return params.NotifyWatchResult{ 32 NotifyWatcherId: api.resources.Register(watch), 33 }, nil 34 } 35 return params.NotifyWatchResult{ 36 Error: apiservererrors.ServerError(watcher.EnsureErr(watch)), 37 }, nil 38 }