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 }