github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/metricworker/cleanup.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package metricworker 5 6 import ( 7 "time" 8 9 "github.com/juju/loggo" 10 "gopkg.in/juju/worker.v1" 11 12 "github.com/juju/juju/api/metricsmanager" 13 jworker "github.com/juju/juju/worker" 14 ) 15 16 var cleanupLogger = loggo.GetLogger("juju.worker.metricworker.cleanup") 17 18 const cleanupPeriod = time.Hour 19 20 // NewCleanup creates a new periodic worker that calls the CleanupOldMetrics api. 21 func newCleanup(client metricsmanager.MetricsManagerClient, notify chan string) worker.Worker { 22 f := func(stopCh <-chan struct{}) error { 23 err := client.CleanupOldMetrics() 24 if err != nil { 25 cleanupLogger.Warningf("failed to cleanup %v - will retry later", err) 26 return nil 27 } 28 select { 29 case notify <- "cleanupCalled": 30 default: 31 } 32 return nil 33 } 34 return jworker.NewPeriodicWorker(f, cleanupPeriod, jworker.NewTimer) 35 }