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  }