Skip to content

Commit

Permalink
fix(esxi): Modify the disk size correctly when creating vm
Browse files Browse the repository at this point in the history
  • Loading branch information
rainzm committed May 21, 2020
1 parent 9bb7320 commit d710248
Showing 1 changed file with 16 additions and 12 deletions.
28 changes: 16 additions & 12 deletions pkg/multicloud/esxi/host.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"context"
"fmt"
"regexp"
"sort"
"strings"
"time"

Expand Down Expand Up @@ -765,9 +766,8 @@ func (self *SHost) DoCreateVM(ctx context.Context, ds *SDatastore, params SCreat
)
for _, disk := range disks {
imagePath := disk.ImagePath
var size int64 = 0
var size = disk.Size
if len(imagePath) == 0 {
size = disk.Size
if size == 0 {
size = 30 * 1024
}
Expand Down Expand Up @@ -928,6 +928,7 @@ func (host *SHost) CloneVM(ctx context.Context, from *SVirtualMachine, ds *SData
ctlKey = minDevKey(scsiDevs)
}
// change disk if set
newSizes := make([]int64, 0, len(from.vdisks))
if params.Disks != nil && len(params.Disks) > 0 {
var (
i int
Expand All @@ -941,15 +942,9 @@ func (host *SHost) CloneVM(ctx context.Context, from *SVirtualMachine, ds *SData
}
size := disk.Size
if size == 0 {
continue
size = 30 * 1024
}
dev := from.vdisks[i].getVirtualDisk()
dev.CapacityInKB = size * 1024

deviceChange = append(deviceChange, &types.VirtualDeviceConfigSpec{
Operation: types.VirtualDeviceConfigSpecOperationEdit,
Device: dev,
})
newSizes = append(newSizes, size)
}

// create new disk
Expand Down Expand Up @@ -1020,7 +1015,7 @@ func (host *SHost) CloneVM(ctx context.Context, from *SVirtualMachine, ds *SData
MemoryMB: int64(params.Mem),
}
cloneSpec.Config = &spec
task, err := ovm.Clone(ctx, folders.VmFolder, params.Name, *cloneSpec)
task, err := ovm.Clone(ctx, folders.VmFolder, name, *cloneSpec)
if err != nil {
return nil, errors.Wrap(err, "object.VirtualMachine.Clone")
}
Expand All @@ -1035,7 +1030,16 @@ func (host *SHost) CloneVM(ctx context.Context, from *SVirtualMachine, ds *SData
return nil, errors.Wrap(err, "fail to fetch virtual machine just created")
}

return NewVirtualMachine(host.manager, &moVM, host.datacenter), nil
// resize the disk
vm := NewVirtualMachine(host.manager, &moVM, host.datacenter)
sort.Sort(byDiskType(vm.vdisks))
for i, s := range newSizes {
err := vm.vdisks[i].Resize(ctx, s)
if err != nil {
log.Errorf("no.%d vdisk.Resize failed: %s", i, err.Error())
}
}
return vm, nil
}

func (host *SHost) changeNic(device types.BaseVirtualDevice, update types.BaseVirtualDevice) {
Expand Down

0 comments on commit d710248

Please sign in to comment.