@@ -32,23 +32,50 @@ func NewVM(n *Netbox, msg Message) *VirtualMachine {
32
32
return vm
33
33
}
34
34
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 ,
40
41
42
+ CustomFields : map [string ]interface {}{
43
+ "kc_serial_" : vm .Serial ,
44
+ },
45
+ }
46
+ }
47
+
48
+ func (vm * VirtualMachine ) Create (msg Message ) (* virtualization.VirtualizationVirtualMachinesCreateCreated , error ) {
41
49
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 ,
45
53
46
54
CustomFields : map [string ]interface {}{
47
55
"kc_serial_" : msg .GetSerial (),
48
56
},
49
57
}
50
58
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
52
79
}
53
80
54
81
func (vm * VirtualMachine ) GetInterfaces (n * Netbox , name string ) (* virtualization.VirtualizationInterfacesListOK , error ) {
0 commit comments