diff --git a/internal/vcenter/vcenter.go b/internal/vcenter/vcenter.go index 9fc16f1..d5ef3cf 100644 --- a/internal/vcenter/vcenter.go +++ b/internal/vcenter/vcenter.go @@ -175,7 +175,8 @@ func (v *Vcenter) FindVMByID(vmID string) (*VmProperties, error) { } func (v *Vcenter) FindVMByIDWithDatacenter(vmID string, dcID string) (*VmProperties, error) { - + var dcName string + var err error v.Logger.Debug("searching for vm id", "vm_id", vmID, "datacenter_id", dcID) finder := find.NewFinder(v.client.Client, true) @@ -195,6 +196,12 @@ func (v *Vcenter) FindVMByIDWithDatacenter(vmID string, dcID string) (*VmPropert // Use finder.SetDatacenter to set the datacenter finder.SetDatacenter(datacenter) + dcName, err = datacenter.ObjectName(v.ctx) + if err != nil { + v.Logger.Error("Couldn't find the name of the datacenter", "error", err) + dcName = "" + } + // Create a ManagedObjectReference for the VM vmRef := types.ManagedObjectReference{ Type: "VirtualMachine", @@ -203,12 +210,11 @@ func (v *Vcenter) FindVMByIDWithDatacenter(vmID string, dcID string) (*VmPropert var vm mo.VirtualMachine //err := v.client.RetrieveOne(v.ctx, vmRef, []string{"config", "name"}, &vm) - err := v.client.RetrieveOne(v.ctx, vmRef, nil, &vm) - + err = v.client.RetrieveOne(v.ctx, vmRef, nil, &vm) if err == nil { v.Logger.Debug("Found VM", "vm", vm) return &VmProperties{ - Datacenter: datacenter.Name(), + Datacenter: dcName, Vm: vm, }, nil } else if _, ok := err.(*find.NotFoundError); !ok { diff --git a/server/handler/vmCreate.go b/server/handler/vmCreate.go index 0e91adc..bd515d3 100644 --- a/server/handler/vmCreate.go +++ b/server/handler/vmCreate.go @@ -79,8 +79,13 @@ func (h *Handler) VmCreate(w http.ResponseWriter, r *http.Request) { //prettyPrint(vmObject) // calculate VM properties we want to store - numRam = vmObject.Vm.Config.Hardware.MemoryMB - numVcpus = vmObject.Vm.Config.Hardware.NumCPU * vmObject.Vm.Config.Hardware.NumCoresPerSocket + if vmObject.Vm.Config != nil { + numRam = vmObject.Vm.Config.Hardware.MemoryMB + numVcpus = vmObject.Vm.Config.Hardware.NumCPU * vmObject.Vm.Config.Hardware.NumCoresPerSocket + } else { + h.Logger.Error("Empty VM config") + } + } err = vc.Logout() if err != nil {