aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vm/vmm/vmm.go15
1 files changed, 9 insertions, 6 deletions
diff --git a/vm/vmm/vmm.go b/vm/vmm/vmm.go
index ad5c31d87..11b0b399f 100644
--- a/vm/vmm/vmm.go
+++ b/vm/vmm/vmm.go
@@ -94,18 +94,13 @@ func (pool *Pool) Count() int {
}
func (pool *Pool) Create(workdir string, index int) (vmimpl.Instance, error) {
- image := filepath.Join(workdir, "disk.img")
- if err := osutil.CopyFile(pool.env.Image, image); err != nil {
- return nil, err
- }
-
var tee io.Writer
if pool.env.Debug {
tee = os.Stdout
}
inst := &instance{
cfg: pool.cfg,
- image: image,
+ image: filepath.Join(workdir, "disk.qcow2"),
debug: pool.env.Debug,
os: pool.env.OS,
sshkey: pool.env.SSHKey,
@@ -122,6 +117,14 @@ func (pool *Pool) Create(workdir string, index int) (vmimpl.Instance, error) {
inst.vmctl("stop", inst.vmName, "-f", "-w")
time.Sleep(3 * time.Second)
+ createArgs := []string{
+ "create", inst.image,
+ "-b", pool.env.Image,
+ }
+ if _, err := inst.vmctl(createArgs...); err != nil {
+ return nil, err
+ }
+
closeInst := inst
defer func() {
if closeInst != nil {