Browse code

Generate LXC config upon start rather than at container creation

Andrea Luzzardi authored on 2013/02/14 11:14:46
Showing 1 changed files
... ...
@@ -90,9 +90,6 @@ func createContainer(id string, root string, command string, args []string, laye
90 90
 	if err := container.save(); err != nil {
91 91
 		return nil, err
92 92
 	}
93
-	if err := container.generateLXCConfig(); err != nil {
94
-		return nil, err
95
-	}
96 93
 	return container, nil
97 94
 }
98 95
 
... ...
@@ -102,10 +99,11 @@ func loadContainer(containerPath string) (*Container, error) {
102 102
 		return nil, err
103 103
 	}
104 104
 	container := &Container{
105
-		stdout:    newWriteBroadcaster(),
106
-		stderr:    newWriteBroadcaster(),
107
-		stdoutLog: new(bytes.Buffer),
108
-		stderrLog: new(bytes.Buffer),
105
+		stdout:        newWriteBroadcaster(),
106
+		stderr:        newWriteBroadcaster(),
107
+		stdoutLog:     new(bytes.Buffer),
108
+		stderrLog:     new(bytes.Buffer),
109
+		lxcConfigPath: path.Join(containerPath, "config.lxc"),
109 110
 	}
110 111
 	if err := json.Unmarshal(data, container); err != nil {
111 112
 		return nil, err
... ...
@@ -178,7 +176,7 @@ func (container *Container) save() (err error) {
178 178
 	if err != nil {
179 179
 		return
180 180
 	}
181
-	return ioutil.WriteFile(path.Join(container.Root, "config.json"), data, 0700)
181
+	return ioutil.WriteFile(path.Join(container.Root, "config.json"), data, 0666)
182 182
 }
183 183
 
184 184
 func (container *Container) generateLXCConfig() error {
... ...
@@ -265,7 +263,9 @@ func (container *Container) Start() error {
265 265
 	if err := container.Filesystem.EnsureMounted(); err != nil {
266 266
 		return err
267 267
 	}
268
-
268
+	if err := container.generateLXCConfig(); err != nil {
269
+		return err
270
+	}
269 271
 	params := []string{
270 272
 		"-n", container.Id,
271 273
 		"-f", container.lxcConfigPath,