github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/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 11 "github.com/juju/juju/api/metricsmanager" 12 "github.com/juju/juju/worker" 13 ) 14 15 var ( 16 cleanupLogger = loggo.GetLogger("juju.worker.metricworker.cleanup") 17 notify chan string 18 ) 19 20 const ( 21 cleanupPeriod = time.Hour 22 ) 23 24 // NewCleanup creates a new periodic worker that calls the CleanupOldMetrics api. 25 func NewCleanup(client metricsmanager.MetricsManagerClient) worker.Worker { 26 f := func(stopCh <-chan struct{}) error { 27 err := client.CleanupOldMetrics() 28 if err != nil { 29 cleanupLogger.Warningf("failed to cleanup %v - will retry later", err) 30 return nil 31 } 32 select { 33 case notify <- "cleanupCalled": 34 default: 35 } 36 return nil 37 } 38 return worker.NewPeriodicWorker(f, cleanupPeriod, worker.NewTimer) 39 }