github.com/bigcommerce/nomad@v0.9.3-bc/client/fingerprint/host.go (about)

     1  package fingerprint
     2  
     3  import (
     4  	"runtime"
     5  
     6  	log "github.com/hashicorp/go-hclog"
     7  	"github.com/shirou/gopsutil/host"
     8  )
     9  
    10  // HostFingerprint is used to fingerprint the host
    11  type HostFingerprint struct {
    12  	StaticFingerprinter
    13  	logger log.Logger
    14  }
    15  
    16  // NewHostFingerprint is used to create a Host fingerprint
    17  func NewHostFingerprint(logger log.Logger) Fingerprint {
    18  	f := &HostFingerprint{logger: logger.Named("host")}
    19  	return f
    20  }
    21  
    22  func (f *HostFingerprint) Fingerprint(req *FingerprintRequest, resp *FingerprintResponse) error {
    23  	hostInfo, err := host.Info()
    24  	if err != nil {
    25  		f.logger.Warn("error retrieving host information", "error", err)
    26  		return err
    27  	}
    28  
    29  	resp.AddAttribute("os.name", hostInfo.Platform)
    30  	resp.AddAttribute("os.version", hostInfo.PlatformVersion)
    31  
    32  	resp.AddAttribute("kernel.name", runtime.GOOS)
    33  	resp.AddAttribute("kernel.version", hostInfo.KernelVersion)
    34  
    35  	resp.AddAttribute("unique.hostname", hostInfo.Hostname)
    36  	resp.Detected = true
    37  
    38  	return nil
    39  }