github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/worker/toolsversionchecker/worker.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package toolsversionchecker 5 6 import ( 7 "time" 8 9 "github.com/juju/errors" 10 "github.com/juju/loggo" 11 12 "github.com/juju/juju/worker" 13 ) 14 15 var logger = loggo.GetLogger("juju.worker.networktoolsversionchecker") 16 17 // VersionCheckerParams holds params for the version checker worker.. 18 type VersionCheckerParams struct { 19 CheckInterval time.Duration 20 } 21 22 type Facade interface { 23 UpdateToolsVersion() error 24 } 25 26 // New returns a worker that periodically wakes up to try to find out and 27 // record the latest version of the tools so the update possibility can be 28 // displayed to the users on status. 29 func New(api Facade, params *VersionCheckerParams) worker.Worker { 30 w := &toolsVersionWorker{ 31 api: api, 32 params: params, 33 } 34 35 f := func(stop <-chan struct{}) error { 36 return w.doCheck() 37 } 38 return worker.NewPeriodicWorker(f, params.CheckInterval, worker.NewTimer) 39 } 40 41 type toolsVersionWorker struct { 42 api Facade 43 params *VersionCheckerParams 44 } 45 46 func (w *toolsVersionWorker) doCheck() error { 47 err := w.api.UpdateToolsVersion() 48 return errors.Annotate(err, "cannot update tools information") 49 }