Skip to content

Commit 0bc2ab8

Browse files
committed
refactor: extract vm update function
1 parent d389721 commit 0bc2ab8

File tree

2 files changed

+41
-34
lines changed

2 files changed

+41
-34
lines changed

model/VirtualMachine.go

+36-9
Original file line numberDiff line numberDiff line change
@@ -32,23 +32,50 @@ func NewVM(n *Netbox, msg Message) *VirtualMachine {
3232
return vm
3333
}
3434

35-
func (vm *VirtualMachine) Create(msg Message) models.WritableVirtualMachineWithConfigContext {
36-
var (
37-
status = "planned"
38-
cluster int64 = 1
39-
)
35+
func (vm *VirtualMachine) Get() models.WritableVirtualMachineWithConfigContext {
36+
// todo: implement netbox func
37+
return models.WritableVirtualMachineWithConfigContext{
38+
Cluster: &vm.Cluster.ID,
39+
Name: &vm.Name,
40+
Status: vm.Status,
4041

42+
CustomFields: map[string]interface{}{
43+
"kc_serial_": vm.Serial,
44+
},
45+
}
46+
}
47+
48+
func (vm *VirtualMachine) Create(msg Message) (*virtualization.VirtualizationVirtualMachinesCreateCreated, error) {
4149
conf := models.WritableVirtualMachineWithConfigContext{
42-
Cluster: &cluster,
43-
Name: &msg.Hostname,
44-
Status: status,
50+
Cluster: &vm.Cluster.ID,
51+
Name: &vm.Name,
52+
Status: vm.Status,
4553

4654
CustomFields: map[string]interface{}{
4755
"kc_serial_": msg.GetSerial(),
4856
},
4957
}
5058

51-
return conf
59+
params := virtualization.NewVirtualizationVirtualMachinesCreateParams().WithData(&conf)
60+
return vm.n.Client.Virtualization.VirtualizationVirtualMachinesCreate(params, nil)
61+
}
62+
63+
// Update vm infos to netbox
64+
func (vm *VirtualMachine) Update() error {
65+
data := vm.Get()
66+
67+
updateParams := &virtualization.VirtualizationVirtualMachinesPartialUpdateParams{
68+
Data: &data,
69+
ID: vm.NetboxId,
70+
}
71+
72+
_, err := vm.n.Client.Virtualization.
73+
VirtualizationVirtualMachinesPartialUpdate(updateParams.WithTimeout(vm.n.GetDefaultTimeout()), nil)
74+
if err != nil {
75+
return fmt.Errorf("error updating virtual machine interface: %w", err)
76+
}
77+
78+
return nil
5279
}
5380

5481
func (vm *VirtualMachine) GetInterfaces(n *Netbox, name string) (*virtualization.VirtualizationInterfacesListOK, error) {

model/netbox.go

+5-25
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,11 @@ func (n *Netbox) UpdateVM(id int64, msg Message) error {
176176
vm := NewVM(n, msg)
177177
vm.NetboxId = id
178178

179-
vmConf := vm.Create(msg)
179+
_, err := vm.Create(msg)
180180

181-
updateParams := &virtualization.VirtualizationVirtualMachinesPartialUpdateParams{
182-
Data: &vmConf,
183-
ID: id,
181+
err = vm.Update()
182+
if err != nil {
183+
return err
184184
}
185185

186186
//Update management IP
@@ -201,32 +201,12 @@ func (n *Netbox) UpdateVM(id int64, msg Message) error {
201201
)
202202
if *ifCount < 1 {
203203
//No virtual interface, create one
204-
var (
205-
mgmtInterfaceName = "mgmt"
206-
)
207-
208-
ifParam := models.WritableVMInterface{
209-
Name: &mgmtInterfaceName,
210-
Enabled: true,
211-
212-
TaggedVlans: []int64{},
213204

214-
VirtualMachine: &id,
215-
}
216-
paramInterface := virtualization.
217-
NewVirtualizationInterfacesCreateParams().
218-
WithData(&ifParam).WithTimeout(n.GetDefaultTimeout())
219-
_, err := n.Client.Virtualization.VirtualizationInterfacesCreate(paramInterface, nil)
205+
_, err := vm.CreateInterface(n, "mgmt")
220206
if err != nil {
221207
return fmt.Errorf("error creating virtual machine interface: %w", err)
222208
}
223209

224-
_, err = n.Client.Virtualization.
225-
VirtualizationVirtualMachinesPartialUpdate(updateParams.WithTimeout(n.GetDefaultTimeout()), nil)
226-
if err != nil {
227-
return fmt.Errorf("error updating virtual machine interface: %w", err)
228-
}
229-
230210
util.Info("Updated VM #" + strconv.FormatInt(id, 10) + " management interface with IP " + msg.IpAddress)
231211
return nil
232212
}

0 commit comments

Comments
 (0)