Skip to content

Commit

Permalink
Fix missing Init Binary in docker info output
Browse files Browse the repository at this point in the history
- Moved DefaultInitBinary from daemon/daemon.go to
daemon/config/config.go since it's a daemon config and is referred in
config package files.
- Added condition in GetInitPath to check for any explicitly configured
DefaultInitBinary. If not, the default value of DefaultInitBinary is
returned.
- Changed all references of DefaultInitBinary to refer to the variable
from new location.
- Added TestCommonUnixGetInitPath to test for the various values of
GetInitPath.

Fixes #32314

Signed-off-by: Sunny Gogoi <indiasuny000@gmail.com>
  • Loading branch information
darkowlzz committed Apr 10, 2017
1 parent b0831ac commit 17b1288
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 8 deletions.
2 changes: 2 additions & 0 deletions daemon/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ const (
DefaultNetworkMtu = 1500
// DisableNetworkBridge is the default value of the option to disable network bridge
DisableNetworkBridge = "none"
// DefaultInitBinary is the name of the default init binary
DefaultInitBinary = "docker-init"
)

// flatOptions contains configuration keys
Expand Down
5 changes: 4 additions & 1 deletion daemon/config/config_common_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,5 +66,8 @@ func (conf *Config) GetInitPath() string {
if conf.InitPath != "" {
return conf.InitPath
}
return conf.DefaultInitBinary
if conf.DefaultInitBinary != "" {
return conf.DefaultInitBinary
}
return DefaultInitBinary
}
41 changes: 41 additions & 0 deletions daemon/config/config_common_unix_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,44 @@ func TestCommonUnixValidateConfigurationErrors(t *testing.T) {
}
}
}

func TestCommonUnixGetInitPath(t *testing.T) {
testCases := []struct {
config *Config
expectedInitPath string
}{
{
config: &Config{
InitPath: "some-init-path",
},
expectedInitPath: "some-init-path",
},
{
config: &Config{
CommonUnixConfig: CommonUnixConfig{
DefaultInitBinary: "foo-init-bin",
},
},
expectedInitPath: "foo-init-bin",
},
{
config: &Config{
InitPath: "init-path-A",
CommonUnixConfig: CommonUnixConfig{
DefaultInitBinary: "init-path-B",
},
},
expectedInitPath: "init-path-A",
},
{
config: &Config{},
expectedInitPath: "docker-init",
},
}
for _, tc := range testCases {
initPath := tc.config.GetInitPath()
if initPath != tc.expectedInitPath {
t.Fatalf("expected initPath to be %v, got %v", tc.expectedInitPath, initPath)
}
}
}
3 changes: 0 additions & 3 deletions daemon/daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,6 @@ var (
// containerd if none is specified
DefaultRuntimeBinary = "docker-runc"

// DefaultInitBinary is the name of the default init binary
DefaultInitBinary = "docker-init"

errSystemNotSupported = errors.New("The Docker daemon is not supported on this platform.")
)

Expand Down
7 changes: 4 additions & 3 deletions daemon/info_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/Sirupsen/logrus"
"github.com/docker/docker/api/types"
daemonconfig "github.com/docker/docker/daemon/config"
"github.com/docker/docker/dockerversion"
"github.com/docker/docker/pkg/sysinfo"
"github.com/pkg/errors"
Expand Down Expand Up @@ -55,15 +56,15 @@ func (daemon *Daemon) FillPlatformInfo(v *types.Info, sysInfo *sysinfo.SysInfo)
v.RuncCommit.ID = "N/A"
}

if rv, err := exec.Command(DefaultInitBinary, "--version").Output(); err == nil {
if rv, err := exec.Command(daemonconfig.DefaultInitBinary, "--version").Output(); err == nil {
ver, err := parseInitVersion(string(rv))

if err != nil {
logrus.Warnf("failed to retrieve %s version: %s", DefaultInitBinary, err)
logrus.Warnf("failed to retrieve %s version: %s", daemonconfig.DefaultInitBinary, err)
}
v.InitCommit = ver
} else {
logrus.Warnf("failed to retrieve %s version: %s", DefaultInitBinary, err)
logrus.Warnf("failed to retrieve %s version: %s", daemonconfig.DefaultInitBinary, err)
v.InitCommit.ID = "N/A"
}
}
Expand Down
3 changes: 2 additions & 1 deletion daemon/oci_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
containertypes "github.com/docker/docker/api/types/container"
"github.com/docker/docker/container"
"github.com/docker/docker/daemon/caps"
daemonconfig "github.com/docker/docker/daemon/config"
"github.com/docker/docker/oci"
"github.com/docker/docker/pkg/idtools"
"github.com/docker/docker/pkg/mount"
Expand Down Expand Up @@ -624,7 +625,7 @@ func (daemon *Daemon) populateCommonSpec(s *specs.Spec, c *container.Container)
s.Process.Args = append([]string{"/dev/init", "--", c.Path}, c.Args...)
var path string
if daemon.configStore.InitPath == "" && c.HostConfig.InitPath == "" {
path, err = exec.LookPath(DefaultInitBinary)
path, err = exec.LookPath(daemonconfig.DefaultInitBinary)
if err != nil {
return err
}
Expand Down

0 comments on commit 17b1288

Please sign in to comment.