// newVm creates a new virtual machine. func (vm *VirtualMachine) newVm(f *object.Folder, p *object.ResourcePool, ds *object.Datastore, h *object.HostSystem) error { if vm.Hardware == nil { return errors.New("Missing hardware configuration") } Logf("%s creating virtual machine\n", vm.ID()) spec := types.VirtualMachineConfigSpec{ Name: vm.Name, Version: vm.Hardware.Version, GuestId: vm.GuestID, Annotation: vm.Annotation, NumCPUs: vm.Hardware.Cpu, NumCoresPerSocket: vm.Hardware.Cores, MemoryMB: vm.Hardware.Memory, MaxMksConnections: vm.MaxMksConnections, Files: &types.VirtualMachineFileInfo{ VmPathName: ds.Path(vm.Name), }, } task, err := f.CreateVM(vm.ctx, spec, p, h) if err != nil { return err } return task.Wait(vm.ctx) }