Skip to content
This repository was archived by the owner on Feb 8, 2021. It is now read-only.

Commit 7a4c8e9

Browse files
authored
Merge pull request #422 from gao-feng/launch
use APIVersion to wait for vm starting
2 parents cbdb45e + 485e626 commit 7a4c8e9

File tree

1 file changed

+7
-17
lines changed

1 file changed

+7
-17
lines changed

hypervisor/vm.go

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (vm *Vm) ReleaseResponseChan(ch chan *types.VmResponse) {
5858
}
5959
}
6060

61-
func (vm *Vm) Launch(b *BootConfig) (err error) {
61+
func (vm *Vm) launch(b *BootConfig) (err error) {
6262
var (
6363
vmEvent = make(chan VmEvent, 128)
6464
Status = make(chan *types.VmResponse, 128)
@@ -732,29 +732,19 @@ func GetVm(vmId string, b *BootConfig, waitStarted bool) (*Vm, error) {
732732
}
733733

734734
vm := newVm(id, b.CPU, b.Memory)
735-
if err := vm.Launch(b); err != nil {
735+
if err := vm.launch(b); err != nil {
736736
return nil, err
737737
}
738738

739739
if waitStarted {
740740
vm.Log(TRACE, "waiting for vm to start")
741-
if err := <-vm.WaitResponse(func(response *types.VmResponse) (error, bool) {
742-
if response.Code == types.E_FAILED {
743-
vm.Log(ERROR, "VM start failed")
744-
return fmt.Errorf("VM start failed"), true
745-
}
746-
if response.Code == types.E_VM_RUNNING {
747-
vm.Log(TRACE, "VM started successfully")
748-
return nil, true
749-
}
750-
vm.Log(ERROR, "VM never started")
751-
return nil, false
752-
}, -1); err != nil {
753-
vm.Kill()
754-
return nil, err
741+
if _, err := vm.ctx.hyperstart.APIVersion(); err != nil {
742+
vm.Log(ERROR, "VM start failed: %v", err)
743+
return nil, fmt.Errorf("VM start failed: %v", err)
755744
}
745+
vm.Log(TRACE, "VM started successfully")
756746
}
757747

758-
vm.Log(TRACE, "GetVm succeeded (not waiting for startup)")
748+
vm.Log(TRACE, "GetVm succeeded")
759749
return vm, nil
760750
}

0 commit comments

Comments
 (0)