github.com/anuvu/nomad@v0.8.7-atom1/client/driver/exec_linux.go (about)

     1  package driver
     2  
     3  import (
     4  	cstructs "github.com/hashicorp/nomad/client/structs"
     5  	"github.com/hashicorp/nomad/helper"
     6  	"golang.org/x/sys/unix"
     7  )
     8  
     9  const (
    10  	// The key populated in Node Attributes to indicate the presence of the Exec
    11  	// driver
    12  	execDriverAttr = "driver.exec"
    13  )
    14  
    15  func (d *ExecDriver) Fingerprint(req *cstructs.FingerprintRequest, resp *cstructs.FingerprintResponse) error {
    16  	// The exec driver will be detected in every case
    17  	resp.Detected = true
    18  
    19  	// Only enable if cgroups are available and we are root
    20  	if !cgroupsMounted(req.Node) {
    21  		if d.fingerprintSuccess == nil || *d.fingerprintSuccess {
    22  			d.logger.Printf("[INFO] driver.exec: cgroups unavailable, disabling")
    23  		}
    24  		d.fingerprintSuccess = helper.BoolToPtr(false)
    25  		resp.RemoveAttribute(execDriverAttr)
    26  		return nil
    27  	} else if unix.Geteuid() != 0 {
    28  		if d.fingerprintSuccess == nil || *d.fingerprintSuccess {
    29  			d.logger.Printf("[DEBUG] driver.exec: must run as root user, disabling")
    30  		}
    31  		d.fingerprintSuccess = helper.BoolToPtr(false)
    32  		resp.RemoveAttribute(execDriverAttr)
    33  		return nil
    34  	}
    35  
    36  	if d.fingerprintSuccess == nil || !*d.fingerprintSuccess {
    37  		d.logger.Printf("[DEBUG] driver.exec: exec driver is enabled")
    38  	}
    39  	resp.AddAttribute(execDriverAttr, "1")
    40  	d.fingerprintSuccess = helper.BoolToPtr(true)
    41  	return nil
    42  }