Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DOM_SHUTDOWN should return state.Running #2109

Merged
merged 1 commit into from
Oct 24, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions pkg/drivers/kvm/kvm.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,14 +129,28 @@ func (d *Driver) GetState() (state.State, error) {
return state.None, errors.Wrap(err, "getting domain state")
}

// Possible States:
//
// VIR_DOMAIN_NOSTATE no state
// VIR_DOMAIN_RUNNING the domain is running
// VIR_DOMAIN_BLOCKED the domain is blocked on resource
// VIR_DOMAIN_PAUSED the domain is paused by user
// VIR_DOMAIN_SHUTDOWN the domain is being shut down
// VIR_DOMAIN_SHUTOFF the domain is shut off
// VIR_DOMAIN_CRASHED the domain is crashed
// VIR_DOMAIN_PMSUSPENDED the domain is suspended by guest power management
// VIR_DOMAIN_LAST this enum value will increase over time as new events are added to the libvirt API. It reflects the last state supported by this version of the libvirt API.

switch libvirtState {
case libvirt.DOMAIN_RUNNING:
// DOMAIN_SHUTDOWN technically means the VM is still running, but in the
// process of being shutdown, so we return state.Running
case libvirt.DOMAIN_RUNNING, libvirt.DOMAIN_SHUTDOWN:
return state.Running, nil
case libvirt.DOMAIN_BLOCKED, libvirt.DOMAIN_CRASHED:
return state.Error, nil
case libvirt.DOMAIN_PAUSED:
return state.Paused, nil
case libvirt.DOMAIN_SHUTDOWN, libvirt.DOMAIN_SHUTOFF:
case libvirt.DOMAIN_SHUTOFF:
return state.Stopped, nil
case libvirt.DOMAIN_PMSUSPENDED:
return state.Saved, nil
Expand Down Expand Up @@ -299,7 +313,7 @@ func (d *Driver) Stop() error {
if s == state.Stopped {
return nil
}
log.Info("Waiting for machine to stop %d/%d", i, 60)
log.Infof("Waiting for machine to stop %d/%d", i, 60)
time.Sleep(1 * time.Second)
}

Expand Down