From 38bc1b1a310dbf5650192ea556fb909a9033dc9b Mon Sep 17 00:00:00 2001 From: Nick Ethier Date: Thu, 8 Apr 2021 01:03:58 -0400 Subject: [PATCH] client/fingerprint: move existing cgroup concerns to cgutil --- client/fingerprint/cgroup.go | 4 +++- client/fingerprint/cgroup_default.go | 6 ------ client/fingerprint/cgroup_linux.go | 16 ---------------- client/fingerprint/cpu_linux.go | 6 +++++- drivers/exec/driver.go | 5 +++-- drivers/java/driver.go | 5 +++-- 6 files changed, 14 insertions(+), 28 deletions(-) diff --git a/client/fingerprint/cgroup.go b/client/fingerprint/cgroup.go index b6f171782..791a6e67f 100644 --- a/client/fingerprint/cgroup.go +++ b/client/fingerprint/cgroup.go @@ -3,6 +3,8 @@ package fingerprint import ( "time" + "github.com/hashicorp/nomad/client/lib/cgutil" + log "github.com/hashicorp/go-hclog" ) @@ -30,7 +32,7 @@ type DefaultMountPointDetector struct { // Call out to the default cgroup library func (b *DefaultMountPointDetector) MountPoint() (string, error) { - return FindCgroupMountpointDir() + return cgutil.FindCgroupMountpointDir() } // NewCGroupFingerprint returns a new cgroup fingerprinter diff --git a/client/fingerprint/cgroup_default.go b/client/fingerprint/cgroup_default.go index 8ee17d1a1..70d68cf3c 100644 --- a/client/fingerprint/cgroup_default.go +++ b/client/fingerprint/cgroup_default.go @@ -2,12 +2,6 @@ package fingerprint -// FindCgroupMountpointDir is used to find the cgroup mount point on a Linux -// system. Here it is a no-op implemtation -func FindCgroupMountpointDir() (string, error) { - return "", nil -} - func (f *CGroupFingerprint) Fingerprint(*FingerprintRequest, *FingerprintResponse) error { return nil } diff --git a/client/fingerprint/cgroup_linux.go b/client/fingerprint/cgroup_linux.go index 176810ed0..2bf58faac 100644 --- a/client/fingerprint/cgroup_linux.go +++ b/client/fingerprint/cgroup_linux.go @@ -4,28 +4,12 @@ package fingerprint import ( "fmt" - - "github.com/opencontainers/runc/libcontainer/cgroups" ) const ( cgroupAvailable = "available" ) -// FindCgroupMountpointDir is used to find the cgroup mount point on a Linux -// system. -func FindCgroupMountpointDir() (string, error) { - mount, err := cgroups.GetCgroupMounts(false) - if err != nil { - return "", err - } - // It's okay if the mount point is not discovered - if len(mount) == 0 { - return "", nil - } - return mount[0].Mountpoint, nil -} - // Fingerprint tries to find a valid cgroup mount point func (f *CGroupFingerprint) Fingerprint(req *FingerprintRequest, resp *FingerprintResponse) error { mount, err := f.mountPointDetector.MountPoint() diff --git a/client/fingerprint/cpu_linux.go b/client/fingerprint/cpu_linux.go index e6b78747e..a31b8e60b 100644 --- a/client/fingerprint/cpu_linux.go +++ b/client/fingerprint/cpu_linux.go @@ -5,5 +5,9 @@ import ( ) func (f *CPUFingerprint) deriveReservableCores(req *FingerprintRequest) ([]uint16, error) { - return cgutil.GetCPUsFromCgroup(req.Config.CgroupParent) + parent := req.Config.CgroupParent + if parent == "" { + parent = cgutil.DefaultCgroupParent + } + return cgutil.GetCPUsFromCgroup(parent) } diff --git a/drivers/exec/driver.go b/drivers/exec/driver.go index 1eb5d78a2..b7cfb0058 100644 --- a/drivers/exec/driver.go +++ b/drivers/exec/driver.go @@ -9,9 +9,10 @@ import ( "sync" "time" + "github.com/hashicorp/nomad/client/lib/cgutil" + "github.com/hashicorp/consul-template/signals" hclog "github.com/hashicorp/go-hclog" - "github.com/hashicorp/nomad/client/fingerprint" "github.com/hashicorp/nomad/drivers/shared/eventer" "github.com/hashicorp/nomad/drivers/shared/executor" "github.com/hashicorp/nomad/drivers/shared/resolvconf" @@ -313,7 +314,7 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { return fp } - mount, err := fingerprint.FindCgroupMountpointDir() + mount, err := cgutil.FindCgroupMountpointDir() if err != nil { fp.Health = drivers.HealthStateUnhealthy fp.HealthDescription = drivers.NoCgroupMountMessage diff --git a/drivers/java/driver.go b/drivers/java/driver.go index 51f7c8f54..c34888f6e 100644 --- a/drivers/java/driver.go +++ b/drivers/java/driver.go @@ -9,9 +9,10 @@ import ( "runtime" "time" + "github.com/hashicorp/nomad/client/lib/cgutil" + "github.com/hashicorp/consul-template/signals" hclog "github.com/hashicorp/go-hclog" - "github.com/hashicorp/nomad/client/fingerprint" "github.com/hashicorp/nomad/drivers/shared/eventer" "github.com/hashicorp/nomad/drivers/shared/executor" "github.com/hashicorp/nomad/drivers/shared/resolvconf" @@ -281,7 +282,7 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { return fp } - mount, err := fingerprint.FindCgroupMountpointDir() + mount, err := cgutil.FindCgroupMountpointDir() if err != nil { fp.Health = drivers.HealthStateUnhealthy fp.HealthDescription = drivers.NoCgroupMountMessage