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