summaryrefslogtreecommitdiff
path: root/pkg/machine/qemu/machine.go
diff options
context:
space:
mode:
authorShane Smith <shane.smith@shopify.com>2022-06-07 12:57:54 -0400
committerShane Smith <shane.smith@shopify.com>2022-06-09 12:42:43 -0400
commit81153ffa21c5d29abb8ebadffaa19b4e02e4bc60 (patch)
treec9ad36725ddf46385872943320cd962546a3e528 /pkg/machine/qemu/machine.go
parent87b05b6a6fbb5c407db8fddc6e89ae2bc28dda19 (diff)
downloadpodman-81153ffa21c5d29abb8ebadffaa19b4e02e4bc60.tar.gz
podman-81153ffa21c5d29abb8ebadffaa19b4e02e4bc60.tar.bz2
podman-81153ffa21c5d29abb8ebadffaa19b4e02e4bc60.zip
Introduce 'Starting' status for machines
- The State() function now returns machine.Starting status instead of an empty string if the VM is in the process of starting. - The `CheckExclusiveActiveVM()` function returns `true` to prevent starting a VM while another is in the process of starting. - `podman machine ls` displays "Currently starting" under "Last Up" for the starting VM - `podman machine ls` supports `{{.Starting}}` boolean field in the format - `podman machine inspect` displays "starting" in the "State" field for the starting VM Signed-off-by: Shane Smith <shane.smith@shopify.com>
Diffstat (limited to 'pkg/machine/qemu/machine.go')
-rw-r--r--pkg/machine/qemu/machine.go13
1 files changed, 6 insertions, 7 deletions
diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go
index 071da94a6..4ae04b77f 100644
--- a/pkg/machine/qemu/machine.go
+++ b/pkg/machine/qemu/machine.go
@@ -480,10 +480,6 @@ func (v *MachineVM) Start(name string, _ machine.StartOptions) error {
wait = time.Millisecond * 500
)
- if v.Starting {
- return fmt.Errorf("machine %q is already in the process of being started", v.Name)
- }
-
v.Starting = true
if err := v.writeConfig(); err != nil {
return fmt.Errorf("writing JSON file: %w", err)
@@ -908,7 +904,7 @@ func (v *MachineVM) State(bypass bool) (machine.Status, error) {
}
// Check if we can dial it
if v.Starting && !bypass {
- return "", nil
+ return machine.Starting, nil
}
monitor, err := qmp.NewSocketMonitor(v.QMPMonitor.Network, v.QMPMonitor.Address.GetPath(), v.QMPMonitor.Timeout)
if err != nil {
@@ -1079,8 +1075,11 @@ func getVMInfos() ([]*machine.ListResponse, error) {
return err
}
}
- if state == machine.Running {
+ switch state {
+ case machine.Running:
listEntry.Running = true
+ case machine.Starting:
+ listEntry.Starting = true
}
listed = append(listed, listEntry)
@@ -1113,7 +1112,7 @@ func (p *Provider) CheckExclusiveActiveVM() (bool, string, error) {
return false, "", errors.Wrap(err, "error checking VM active")
}
for _, vm := range vms {
- if vm.Running {
+ if vm.Running || vm.Starting {
return true, vm.Name, nil
}
}