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  }