improve daemon config reload; log active configuration
Yong Tang authored on 2018/01/23 10:58:25... | ... |
@@ -167,7 +167,7 @@ type CommonConfig struct { |
167 | 167 |
sync.Mutex |
168 | 168 |
// FIXME(vdemeester) This part is not that clear and is mainly dependent on cli flags |
169 | 169 |
// It should probably be handled outside this package. |
170 |
- ValuesSet map[string]interface{} |
|
170 |
+ ValuesSet map[string]interface{} `json:"-"` |
|
171 | 171 |
|
172 | 172 |
Experimental bool `json:"experimental"` // Experimental indicates whether experimental features should be exposed or not |
173 | 173 |
|
... | ... |
@@ -4,7 +4,6 @@ package daemon |
4 | 4 |
|
5 | 5 |
import ( |
6 | 6 |
"bufio" |
7 |
- "bytes" |
|
8 | 7 |
"context" |
9 | 8 |
"fmt" |
10 | 9 |
"io/ioutil" |
... | ... |
@@ -680,51 +679,6 @@ func (daemon *Daemon) initRuntimes(runtimes map[string]types.Runtime) (err error |
680 | 680 |
return nil |
681 | 681 |
} |
682 | 682 |
|
683 |
-// reloadPlatform updates configuration with platform specific options |
|
684 |
-// and updates the passed attributes |
|
685 |
-func (daemon *Daemon) reloadPlatform(conf *config.Config, attributes map[string]string) error { |
|
686 |
- if err := conf.ValidatePlatformConfig(); err != nil { |
|
687 |
- return err |
|
688 |
- } |
|
689 |
- |
|
690 |
- if conf.IsValueSet("runtimes") { |
|
691 |
- // Always set the default one |
|
692 |
- conf.Runtimes[config.StockRuntimeName] = types.Runtime{Path: DefaultRuntimeBinary} |
|
693 |
- if err := daemon.initRuntimes(conf.Runtimes); err != nil { |
|
694 |
- return err |
|
695 |
- } |
|
696 |
- daemon.configStore.Runtimes = conf.Runtimes |
|
697 |
- } |
|
698 |
- |
|
699 |
- if conf.DefaultRuntime != "" { |
|
700 |
- daemon.configStore.DefaultRuntime = conf.DefaultRuntime |
|
701 |
- } |
|
702 |
- |
|
703 |
- if conf.IsValueSet("default-shm-size") { |
|
704 |
- daemon.configStore.ShmSize = conf.ShmSize |
|
705 |
- } |
|
706 |
- |
|
707 |
- if conf.IpcMode != "" { |
|
708 |
- daemon.configStore.IpcMode = conf.IpcMode |
|
709 |
- } |
|
710 |
- |
|
711 |
- // Update attributes |
|
712 |
- var runtimeList bytes.Buffer |
|
713 |
- for name, rt := range daemon.configStore.Runtimes { |
|
714 |
- if runtimeList.Len() > 0 { |
|
715 |
- runtimeList.WriteRune(' ') |
|
716 |
- } |
|
717 |
- runtimeList.WriteString(fmt.Sprintf("%s:%s", name, rt)) |
|
718 |
- } |
|
719 |
- |
|
720 |
- attributes["runtimes"] = runtimeList.String() |
|
721 |
- attributes["default-runtime"] = daemon.configStore.DefaultRuntime |
|
722 |
- attributes["default-shm-size"] = fmt.Sprintf("%d", daemon.configStore.ShmSize) |
|
723 |
- attributes["default-ipc-mode"] = daemon.configStore.IpcMode |
|
724 |
- |
|
725 |
- return nil |
|
726 |
-} |
|
727 |
- |
|
728 | 683 |
// verifyDaemonSettings performs validation of daemon config struct |
729 | 684 |
func verifyDaemonSettings(conf *config.Config) error { |
730 | 685 |
// Check for mutually incompatible config options |
... | ... |
@@ -207,12 +207,6 @@ func verifyPlatformContainerSettings(daemon *Daemon, hostConfig *containertypes. |
207 | 207 |
return warnings, err |
208 | 208 |
} |
209 | 209 |
|
210 |
-// reloadPlatform updates configuration with platform specific options |
|
211 |
-// and updates the passed attributes |
|
212 |
-func (daemon *Daemon) reloadPlatform(config *config.Config, attributes map[string]string) error { |
|
213 |
- return nil |
|
214 |
-} |
|
215 |
- |
|
216 | 210 |
// verifyDaemonSettings performs validation of daemon config struct |
217 | 211 |
func verifyDaemonSettings(config *config.Config) error { |
218 | 212 |
return nil |
... | ... |
@@ -27,11 +27,14 @@ func (daemon *Daemon) Reload(conf *config.Config) (err error) { |
27 | 27 |
attributes := map[string]string{} |
28 | 28 |
|
29 | 29 |
defer func() { |
30 |
+ jsonString, _ := json.Marshal(daemon.configStore) |
|
31 |
+ |
|
30 | 32 |
// we're unlocking here, because |
31 | 33 |
// LogDaemonEventWithAttributes() -> SystemInfo() -> GetAllRuntimes() |
32 | 34 |
// holds that lock too. |
33 | 35 |
daemon.configStore.Unlock() |
34 | 36 |
if err == nil { |
37 |
+ logrus.Infof("Reloaded configuration: %s", jsonString) |
|
35 | 38 |
daemon.LogDaemonEventWithAttributes("reload", attributes) |
36 | 39 |
} |
37 | 40 |
}() |
38 | 41 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,56 @@ |
0 |
+// +build linux freebsd |
|
1 |
+ |
|
2 |
+package daemon |
|
3 |
+ |
|
4 |
+import ( |
|
5 |
+ "bytes" |
|
6 |
+ "fmt" |
|
7 |
+ |
|
8 |
+ "github.com/docker/docker/api/types" |
|
9 |
+ "github.com/docker/docker/daemon/config" |
|
10 |
+) |
|
11 |
+ |
|
12 |
+// reloadPlatform updates configuration with platform specific options |
|
13 |
+// and updates the passed attributes |
|
14 |
+func (daemon *Daemon) reloadPlatform(conf *config.Config, attributes map[string]string) error { |
|
15 |
+ if err := conf.ValidatePlatformConfig(); err != nil { |
|
16 |
+ return err |
|
17 |
+ } |
|
18 |
+ |
|
19 |
+ if conf.IsValueSet("runtimes") { |
|
20 |
+ // Always set the default one |
|
21 |
+ conf.Runtimes[config.StockRuntimeName] = types.Runtime{Path: DefaultRuntimeBinary} |
|
22 |
+ if err := daemon.initRuntimes(conf.Runtimes); err != nil { |
|
23 |
+ return err |
|
24 |
+ } |
|
25 |
+ daemon.configStore.Runtimes = conf.Runtimes |
|
26 |
+ } |
|
27 |
+ |
|
28 |
+ if conf.DefaultRuntime != "" { |
|
29 |
+ daemon.configStore.DefaultRuntime = conf.DefaultRuntime |
|
30 |
+ } |
|
31 |
+ |
|
32 |
+ if conf.IsValueSet("default-shm-size") { |
|
33 |
+ daemon.configStore.ShmSize = conf.ShmSize |
|
34 |
+ } |
|
35 |
+ |
|
36 |
+ if conf.IpcMode != "" { |
|
37 |
+ daemon.configStore.IpcMode = conf.IpcMode |
|
38 |
+ } |
|
39 |
+ |
|
40 |
+ // Update attributes |
|
41 |
+ var runtimeList bytes.Buffer |
|
42 |
+ for name, rt := range daemon.configStore.Runtimes { |
|
43 |
+ if runtimeList.Len() > 0 { |
|
44 |
+ runtimeList.WriteRune(' ') |
|
45 |
+ } |
|
46 |
+ runtimeList.WriteString(fmt.Sprintf("%s:%s", name, rt)) |
|
47 |
+ } |
|
48 |
+ |
|
49 |
+ attributes["runtimes"] = runtimeList.String() |
|
50 |
+ attributes["default-runtime"] = daemon.configStore.DefaultRuntime |
|
51 |
+ attributes["default-shm-size"] = fmt.Sprintf("%d", daemon.configStore.ShmSize) |
|
52 |
+ attributes["default-ipc-mode"] = daemon.configStore.IpcMode |
|
53 |
+ |
|
54 |
+ return nil |
|
55 |
+} |
0 | 56 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,9 @@ |
0 |
+package daemon |
|
1 |
+ |
|
2 |
+import "github.com/docker/docker/daemon/config" |
|
3 |
+ |
|
4 |
+// reloadPlatform updates configuration with platform specific options |
|
5 |
+// and updates the passed attributes |
|
6 |
+func (daemon *Daemon) reloadPlatform(config *config.Config, attributes map[string]string) error { |
|
7 |
+ return nil |
|
8 |
+} |