From 68e1150357c4dc56a5f9df3227af9c1b3f457252 Mon Sep 17 00:00:00 2001 From: HuanHuan Ye Date: Wed, 11 Sep 2019 19:40:11 +0800 Subject: [PATCH] DaemonCli: Move check into startMetricsServer Fix TODO: move into startMetricsServer() Fix errors.Wrap return nil when passed err is nil Co-Authored-By: Sebastiaan van Stijn Signed-off-by: HuanHuan Ye (cherry picked from commit 88c554f950d4667595cc2174bfab67d2cc072e62) Signed-off-by: Sebastiaan van Stijn --- cmd/dockerd/daemon.go | 14 ++++---------- cmd/dockerd/metrics.go | 11 ++++++++++- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/cmd/dockerd/daemon.go b/cmd/dockerd/daemon.go index 607604392f..b26e07186c 100644 --- a/cmd/dockerd/daemon.go +++ b/cmd/dockerd/daemon.go @@ -208,14 +208,10 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { return errors.Wrap(err, "failed to validate authorization plugin") } - // TODO: move into startMetricsServer() - if cli.Config.MetricsAddress != "" { - if !d.HasExperimental() { - return errors.Wrap(err, "metrics-addr is only supported when experimental is enabled") - } - if err := startMetricsServer(cli.Config.MetricsAddress); err != nil { - return err - } + cli.d = d + + if err := cli.startMetricsServer(cli.Config.MetricsAddress); err != nil { + return err } c, err := createAndStartCluster(cli, d) @@ -230,8 +226,6 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { logrus.Info("Daemon has completed initialization") - cli.d = d - routerOptions, err := newRouterOptions(cli.Config, d) if err != nil { return err diff --git a/cmd/dockerd/metrics.go b/cmd/dockerd/metrics.go index 20ceaf8466..1bfa37ea82 100644 --- a/cmd/dockerd/metrics.go +++ b/cmd/dockerd/metrics.go @@ -5,10 +5,19 @@ import ( "net/http" "github.com/docker/go-metrics" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) -func startMetricsServer(addr string) error { +func (cli *DaemonCli) startMetricsServer(addr string) error { + if addr == "" { + return nil + } + + if !cli.d.HasExperimental() { + return errors.New("metrics-addr is only supported when experimental is enabled") + } + if err := allocateDaemonPort(addr); err != nil { return err }