Browse Source

pkg/sysinfo.New(), daemon.RawSysInfo(): remove "quiet" argument

The "quiet" argument was only used in a single place (at daemon startup), and
every other use had to pass "false" to prevent this function from logging
warnings.

Now that SysInfo contains the warnings that occurred when collecting the
system information, we can make leave it up to the caller to use those
warnings (and log them if wanted).

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sebastiaan van Stijn 4 years ago
parent
commit
9b795c3e50

+ 2 - 2
cmd/dockerd/daemon.go

@@ -478,14 +478,14 @@ func warnOnDeprecatedConfigOptions(config *config.Config) {
 func initRouter(opts routerOptions) {
 func initRouter(opts routerOptions) {
 	decoder := runconfig.ContainerDecoder{
 	decoder := runconfig.ContainerDecoder{
 		GetSysInfo: func() *sysinfo.SysInfo {
 		GetSysInfo: func() *sysinfo.SysInfo {
-			return opts.daemon.RawSysInfo(true)
+			return opts.daemon.RawSysInfo()
 		},
 		},
 	}
 	}
 
 
 	routers := []router.Router{
 	routers := []router.Router{
 		// we need to add the checkpoint router before the container router or the DELETE gets masked
 		// we need to add the checkpoint router before the container router or the DELETE gets masked
 		checkpointrouter.NewRouter(opts.daemon, decoder),
 		checkpointrouter.NewRouter(opts.daemon, decoder),
-		container.NewRouter(opts.daemon, decoder, opts.daemon.RawSysInfo(true).CgroupUnified),
+		container.NewRouter(opts.daemon, decoder, opts.daemon.RawSysInfo().CgroupUnified),
 		image.NewRouter(opts.daemon.ImageService()),
 		image.NewRouter(opts.daemon.ImageService()),
 		systemrouter.NewRouter(opts.daemon, opts.cluster, opts.buildkit, opts.features),
 		systemrouter.NewRouter(opts.daemon, opts.cluster, opts.buildkit, opts.features),
 		volume.NewRouter(opts.daemon.VolumesService()),
 		volume.NewRouter(opts.daemon.VolumesService()),

+ 4 - 1
daemon/daemon.go

@@ -1050,7 +1050,10 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	sysInfo := d.RawSysInfo(false)
+	sysInfo := d.RawSysInfo()
+	for _, w := range sysInfo.Warnings {
+		logrus.Warn(w)
+	}
 	// Check if Devices cgroup is mounted, it is hard requirement for container security,
 	// Check if Devices cgroup is mounted, it is hard requirement for container security,
 	// on Linux.
 	// on Linux.
 	if runtime.GOOS == "linux" && !sysInfo.CgroupDevicesEnabled && !userns.RunningInUserNS() {
 	if runtime.GOOS == "linux" && !sysInfo.CgroupDevicesEnabled && !userns.RunningInUserNS() {

+ 3 - 3
daemon/daemon_unix.go

@@ -666,7 +666,7 @@ func verifyPlatformContainerSettings(daemon *Daemon, hostConfig *containertypes.
 	if hostConfig == nil {
 	if hostConfig == nil {
 		return nil, nil
 		return nil, nil
 	}
 	}
-	sysInfo := daemon.RawSysInfo(true)
+	sysInfo := daemon.RawSysInfo()
 
 
 	w, err := verifyPlatformContainerResources(&hostConfig.Resources, sysInfo, update)
 	w, err := verifyPlatformContainerResources(&hostConfig.Resources, sysInfo, update)
 
 
@@ -1718,14 +1718,14 @@ func (daemon *Daemon) setupSeccompProfile() error {
 }
 }
 
 
 // RawSysInfo returns *sysinfo.SysInfo .
 // RawSysInfo returns *sysinfo.SysInfo .
-func (daemon *Daemon) RawSysInfo(quiet bool) *sysinfo.SysInfo {
+func (daemon *Daemon) RawSysInfo() *sysinfo.SysInfo {
 	var siOpts []sysinfo.Opt
 	var siOpts []sysinfo.Opt
 	if daemon.getCgroupDriver() == cgroupSystemdDriver {
 	if daemon.getCgroupDriver() == cgroupSystemdDriver {
 		if euid := os.Getenv("ROOTLESSKIT_PARENT_EUID"); euid != "" {
 		if euid := os.Getenv("ROOTLESSKIT_PARENT_EUID"); euid != "" {
 			siOpts = append(siOpts, sysinfo.WithCgroup2GroupPath("/user.slice/user-"+euid+".slice"))
 			siOpts = append(siOpts, sysinfo.WithCgroup2GroupPath("/user.slice/user-"+euid+".slice"))
 		}
 		}
 	}
 	}
-	return sysinfo.New(quiet, siOpts...)
+	return sysinfo.New(siOpts...)
 }
 }
 
 
 func recursiveUnmount(target string) error {
 func recursiveUnmount(target string) error {

+ 2 - 2
daemon/daemon_unsupported.go

@@ -13,6 +13,6 @@ func setupResolvConf(config *config.Config) {
 }
 }
 
 
 // RawSysInfo returns *sysinfo.SysInfo .
 // RawSysInfo returns *sysinfo.SysInfo .
-func (daemon *Daemon) RawSysInfo(quiet bool) *sysinfo.SysInfo {
-	return sysinfo.New(quiet)
+func (daemon *Daemon) RawSysInfo() *sysinfo.SysInfo {
+	return sysinfo.New()
 }
 }

+ 2 - 2
daemon/daemon_windows.go

@@ -652,6 +652,6 @@ func setupResolvConf(config *config.Config) {
 }
 }
 
 
 // RawSysInfo returns *sysinfo.SysInfo .
 // RawSysInfo returns *sysinfo.SysInfo .
-func (daemon *Daemon) RawSysInfo(quiet bool) *sysinfo.SysInfo {
-	return sysinfo.New(quiet)
+func (daemon *Daemon) RawSysInfo() *sysinfo.SysInfo {
+	return sysinfo.New()
 }
 }

+ 1 - 1
daemon/info.go

@@ -30,7 +30,7 @@ import (
 func (daemon *Daemon) SystemInfo() *types.Info {
 func (daemon *Daemon) SystemInfo() *types.Info {
 	defer metrics.StartTimer(hostInfoFunctions.WithValues("system_info"))()
 	defer metrics.StartTimer(hostInfoFunctions.WithValues("system_info"))()
 
 
-	sysInfo := daemon.RawSysInfo(true)
+	sysInfo := daemon.RawSysInfo()
 	cRunning, cPaused, cStopped := stateCtr.get()
 	cRunning, cPaused, cStopped := stateCtr.get()
 
 
 	v := &types.Info{
 	v := &types.Info{

+ 1 - 1
daemon/oci_linux.go

@@ -824,7 +824,7 @@ func WithCgroups(daemon *Daemon, c *container.Container) coci.SpecOpts {
 		}
 		}
 
 
 		// FIXME this is very expensive way to check if cpu rt is supported
 		// FIXME this is very expensive way to check if cpu rt is supported
-		sysInfo := daemon.RawSysInfo(true)
+		sysInfo := daemon.RawSysInfo()
 		if !sysInfo.CPURealtime {
 		if !sysInfo.CPURealtime {
 			return errors.New("daemon-scoped cpu-rt-period and cpu-rt-runtime are not supported by the kernel")
 			return errors.New("daemon-scoped cpu-rt-period and cpu-rt-runtime are not supported by the kernel")
 		}
 		}

+ 2 - 2
integration-cli/docker_cli_run_unix_test.go

@@ -699,7 +699,7 @@ func (s *DockerSuite) TestRunSwapLessThanMemoryLimit(c *testing.T) {
 func (s *DockerSuite) TestRunInvalidCpusetCpusFlagValue(c *testing.T) {
 func (s *DockerSuite) TestRunInvalidCpusetCpusFlagValue(c *testing.T) {
 	testRequires(c, cgroupCpuset, testEnv.IsLocalDaemon)
 	testRequires(c, cgroupCpuset, testEnv.IsLocalDaemon)
 
 
-	sysInfo := sysinfo.New(true)
+	sysInfo := sysinfo.New()
 	cpus, err := parsers.ParseUintList(sysInfo.Cpus)
 	cpus, err := parsers.ParseUintList(sysInfo.Cpus)
 	assert.NilError(c, err)
 	assert.NilError(c, err)
 	var invalid int
 	var invalid int
@@ -718,7 +718,7 @@ func (s *DockerSuite) TestRunInvalidCpusetCpusFlagValue(c *testing.T) {
 func (s *DockerSuite) TestRunInvalidCpusetMemsFlagValue(c *testing.T) {
 func (s *DockerSuite) TestRunInvalidCpusetMemsFlagValue(c *testing.T) {
 	testRequires(c, cgroupCpuset)
 	testRequires(c, cgroupCpuset)
 
 
-	sysInfo := sysinfo.New(true)
+	sysInfo := sysinfo.New()
 	mems, err := parsers.ParseUintList(sysInfo.Mems)
 	mems, err := parsers.ParseUintList(sysInfo.Mems)
 	assert.NilError(c, err)
 	assert.NilError(c, err)
 	var invalid int
 	var invalid int

+ 1 - 1
integration-cli/requirements_unix_test.go

@@ -84,6 +84,6 @@ func overlayFSSupported() bool {
 
 
 func init() {
 func init() {
 	if testEnv.IsLocalDaemon() {
 	if testEnv.IsLocalDaemon() {
-		SysInfo = sysinfo.New(true)
+		SysInfo = sysinfo.New()
 	}
 	}
 }
 }

+ 1 - 6
pkg/sysinfo/cgroup2_linux.go

@@ -12,7 +12,7 @@ import (
 	"github.com/sirupsen/logrus"
 	"github.com/sirupsen/logrus"
 )
 )
 
 
-func newV2(quiet bool, options ...Opt) *SysInfo {
+func newV2(options ...Opt) *SysInfo {
 	sysInfo := &SysInfo{
 	sysInfo := &SysInfo{
 		CgroupUnified: true,
 		CgroupUnified: true,
 		cg2GroupPath:  "/",
 		cg2GroupPath:  "/",
@@ -53,11 +53,6 @@ func newV2(quiet bool, options ...Opt) *SysInfo {
 	for _, o := range ops {
 	for _, o := range ops {
 		o(sysInfo)
 		o(sysInfo)
 	}
 	}
-	if !quiet {
-		for _, w := range sysInfo.Warnings {
-			logrus.Warn(w)
-		}
-	}
 	return sysInfo
 	return sysInfo
 }
 }
 
 

+ 5 - 11
pkg/sysinfo/sysinfo_linux.go

@@ -45,16 +45,15 @@ func WithCgroup2GroupPath(g string) Opt {
 }
 }
 
 
 // New returns a new SysInfo, using the filesystem to detect which features
 // New returns a new SysInfo, using the filesystem to detect which features
-// the kernel supports. If `quiet` is `false` info.Warnings are printed in logs
-// whenever an error occurs or misconfigurations are present.
-func New(quiet bool, options ...Opt) *SysInfo {
+// the kernel supports.
+func New(options ...Opt) *SysInfo {
 	if cdcgroups.Mode() == cdcgroups.Unified {
 	if cdcgroups.Mode() == cdcgroups.Unified {
-		return newV2(quiet, options...)
+		return newV2(options...)
 	}
 	}
-	return newV1(quiet)
+	return newV1()
 }
 }
 
 
-func newV1(quiet bool) *SysInfo {
+func newV1() *SysInfo {
 	var (
 	var (
 		err     error
 		err     error
 		sysInfo = &SysInfo{}
 		sysInfo = &SysInfo{}
@@ -84,11 +83,6 @@ func newV1(quiet bool) *SysInfo {
 	for _, o := range ops {
 	for _, o := range ops {
 		o(sysInfo)
 		o(sysInfo)
 	}
 	}
-	if !quiet {
-		for _, w := range sysInfo.Warnings {
-			logrus.Warn(w)
-		}
-	}
 	return sysInfo
 	return sysInfo
 }
 }
 
 

+ 5 - 9
pkg/sysinfo/sysinfo_linux_test.go

@@ -55,11 +55,7 @@ func TestCgroupEnabled(t *testing.T) {
 }
 }
 
 
 func TestNew(t *testing.T) {
 func TestNew(t *testing.T) {
-	sysInfo := New(false)
-	assert.Assert(t, sysInfo != nil)
-	checkSysInfo(t, sysInfo)
-
-	sysInfo = New(true)
+	sysInfo := New()
 	assert.Assert(t, sysInfo != nil)
 	assert.Assert(t, sysInfo != nil)
 	checkSysInfo(t, sysInfo)
 	checkSysInfo(t, sysInfo)
 }
 }
@@ -82,7 +78,7 @@ func TestNewAppArmorEnabled(t *testing.T) {
 		t.Skip("App Armor Must be Enabled")
 		t.Skip("App Armor Must be Enabled")
 	}
 	}
 
 
-	sysInfo := New(true)
+	sysInfo := New()
 	assert.Assert(t, sysInfo.AppArmor)
 	assert.Assert(t, sysInfo.AppArmor)
 }
 }
 
 
@@ -92,7 +88,7 @@ func TestNewAppArmorDisabled(t *testing.T) {
 		t.Skip("App Armor Must be Disabled")
 		t.Skip("App Armor Must be Disabled")
 	}
 	}
 
 
-	sysInfo := New(true)
+	sysInfo := New()
 	assert.Assert(t, !sysInfo.AppArmor)
 	assert.Assert(t, !sysInfo.AppArmor)
 }
 }
 
 
@@ -102,7 +98,7 @@ func TestNewCgroupNamespacesEnabled(t *testing.T) {
 		t.Skip("cgroup namespaces must be enabled")
 		t.Skip("cgroup namespaces must be enabled")
 	}
 	}
 
 
-	sysInfo := New(true)
+	sysInfo := New()
 	assert.Assert(t, sysInfo.CgroupNamespaces)
 	assert.Assert(t, sysInfo.CgroupNamespaces)
 }
 }
 
 
@@ -112,7 +108,7 @@ func TestNewCgroupNamespacesDisabled(t *testing.T) {
 		t.Skip("cgroup namespaces must be disabled")
 		t.Skip("cgroup namespaces must be disabled")
 	}
 	}
 
 
-	sysInfo := New(true)
+	sysInfo := New()
 	assert.Assert(t, !sysInfo.CgroupNamespaces)
 	assert.Assert(t, !sysInfo.CgroupNamespaces)
 }
 }
 
 

+ 1 - 1
pkg/sysinfo/sysinfo_other.go

@@ -3,6 +3,6 @@
 package sysinfo // import "github.com/docker/docker/pkg/sysinfo"
 package sysinfo // import "github.com/docker/docker/pkg/sysinfo"
 
 
 // New returns an empty SysInfo for non linux for now.
 // New returns an empty SysInfo for non linux for now.
-func New(quiet bool, options ...Opt) *SysInfo {
+func New(options ...Opt) *SysInfo {
 	return &SysInfo{}
 	return &SysInfo{}
 }
 }

+ 1 - 1
runconfig/config.go

@@ -21,7 +21,7 @@ func (r ContainerDecoder) DecodeConfig(src io.Reader) (*container.Config, *conta
 	if r.GetSysInfo != nil {
 	if r.GetSysInfo != nil {
 		si = r.GetSysInfo()
 		si = r.GetSysInfo()
 	} else {
 	} else {
-		si = sysinfo.New(true)
+		si = sysinfo.New()
 	}
 	}
 
 
 	return decodeContainerConfig(src, si)
 	return decodeContainerConfig(src, si)

+ 2 - 2
runconfig/config_test.go

@@ -47,7 +47,7 @@ func TestDecodeContainerConfig(t *testing.T) {
 			t.Fatal(err)
 			t.Fatal(err)
 		}
 		}
 
 
-		c, h, _, err := decodeContainerConfig(bytes.NewReader(b), sysinfo.New(true))
+		c, h, _, err := decodeContainerConfig(bytes.NewReader(b), sysinfo.New())
 		if err != nil {
 		if err != nil {
 			t.Fatal(fmt.Errorf("Error parsing %s: %v", f, err))
 			t.Fatal(fmt.Errorf("Error parsing %s: %v", f, err))
 		}
 		}
@@ -131,5 +131,5 @@ func callDecodeContainerConfigIsolation(isolation string) (*container.Config, *c
 	if b, err = json.Marshal(w); err != nil {
 	if b, err = json.Marshal(w); err != nil {
 		return nil, nil, nil, fmt.Errorf("Error on marshal %s", err.Error())
 		return nil, nil, nil, fmt.Errorf("Error on marshal %s", err.Error())
 	}
 	}
-	return decodeContainerConfig(bytes.NewReader(b), sysinfo.New(true))
+	return decodeContainerConfig(bytes.NewReader(b), sysinfo.New())
 }
 }