github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/nodeagent/dep/middleware/logging.go (about) 1 package middleware 2 3 import ( 4 "fmt" 5 "github.com/caos/orbos/internal/operator/common" 6 "github.com/caos/orbos/internal/operator/nodeagent" 7 "github.com/caos/orbos/mntr" 8 ) 9 10 type loggedDep struct { 11 monitor mntr.Monitor 12 *wrapped 13 unwrapped nodeagent.Installer 14 } 15 16 func AddLogging(monitor mntr.Monitor, original nodeagent.Installer) Installer { 17 return &loggedDep{ 18 monitor.WithFields(map[string]interface{}{ 19 "dependency": original, 20 }), 21 &wrapped{original}, 22 Unwrap(original), 23 } 24 } 25 26 func (l *loggedDep) InstalledFilter() []string { return l.unwrapped.InstalledFilter() } 27 28 func (l *loggedDep) Current() (common.Package, error) { 29 current, err := l.unwrapped.Current() 30 if err != nil { 31 return current, fmt.Errorf("querying installed package for dependency %s failed: %w", l.String(), err) 32 } 33 l.monitor.WithFields(map[string]interface{}{ 34 "version": current, 35 }).Debug("Queried current dependency version") 36 37 return current, nil 38 } 39 40 func (l *loggedDep) Ensure(remove common.Package, install common.Package, leaveOSRepositories bool) error { 41 42 var leavingOSREpositories string 43 if leaveOSRepositories { 44 leavingOSREpositories = "leaving OS repositories " 45 } 46 47 if err := l.unwrapped.Ensure(remove, install, leaveOSRepositories); err != nil { 48 return fmt.Errorf("uninstalling version %s and installing version %s %sfailed for dependency %s: %w", 49 remove, 50 install, 51 leavingOSREpositories, 52 l.unwrapped.String(), 53 err) 54 } 55 return nil 56 }