Skip to content

Commit 808d372

Browse files
authored
Merge pull request #150 from k8s-proxmox/fix/147
stop creating qemu if there is already same name qemu
2 parents 2fcb0de + 98badc9 commit 808d372

File tree

1 file changed

+26
-13
lines changed
  • cloud/services/compute/instance

1 file changed

+26
-13
lines changed

cloud/services/compute/instance/qemu.go

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,35 @@ func (s *Service) reconcileQEMU(ctx context.Context) (*proxmox.VirtualMachine, e
2121
log.Info("Reconciling QEMU")
2222

2323
qemu, err := s.getQEMU(ctx)
24-
if err == nil { // if qemu is found, return it
25-
return qemu, nil
24+
if err != nil {
25+
if !rest.IsNotFound(err) {
26+
log.Error(err, "failed to get qemu")
27+
return nil, err
28+
}
29+
30+
// no qemu found, try to create new one
31+
log.V(3).Info("qemu wasn't found. new qemu will be created")
32+
if exist, err := s.client.VirtualMachineExistsWithName(ctx, s.scope.Name()); exist || err != nil {
33+
if exist {
34+
// there should no qemu with same name. occuring an error
35+
err = fmt.Errorf("qemu %s already exists", s.scope.Name())
36+
}
37+
log.Error(err, "stop creating new qemu to avoid replicating same qemu")
38+
return nil, err
39+
}
40+
qemu, err = s.createQEMU(ctx)
41+
if err != nil {
42+
log.Error(err, "failed to create qemu")
43+
return nil, err
44+
}
2645
}
27-
if !rest.IsNotFound(err) {
28-
log.Error(err, "failed to get qemu")
46+
47+
s.scope.SetVMID(qemu.VM.VMID)
48+
s.scope.SetNodeName(qemu.Node)
49+
if err := s.scope.PatchObject(); err != nil {
2950
return nil, err
3051
}
31-
32-
// no qemu found, create new one
33-
return s.createQEMU(ctx)
52+
return qemu, nil
3453
}
3554

3655
// get QEMU gets proxmox vm from vmid
@@ -62,12 +81,6 @@ func (s *Service) createQEMU(ctx context.Context) (*proxmox.VirtualMachine, erro
6281
log.Error(err, "failed to create qemu instance")
6382
return nil, err
6483
}
65-
66-
s.scope.SetNodeName(result.Node())
67-
s.scope.SetVMID(result.VMID())
68-
if err := s.scope.PatchObject(); err != nil {
69-
return nil, err
70-
}
7184
return result.Instance(), nil
7285
}
7386

0 commit comments

Comments
 (0)