From 2de8cf593c5ed342a478298cce5389d029e94fe5 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Fri, 13 Sep 2024 09:50:51 +1000 Subject: [PATCH] retry error handling --- .drone.sh | 3 ++- internal/vcenter/vcenter.go | 24 ++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.drone.sh b/.drone.sh index b295929..e64e903 100755 --- a/.drone.sh +++ b/.drone.sh @@ -9,7 +9,8 @@ buildtime=$(TZ=Australia/Sydney date +%Y-%m-%dT%T%z) git_version=$(git describe --tags --always --long --dirty) package_name=vctp -platforms=("linux/amd64" "darwin/amd64") +#platforms=("linux/amd64" "darwin/amd64") +platforms=("linux/amd64") echo Building $package_name with git version: $git_version for platform in "${platforms[@]}" diff --git a/internal/vcenter/vcenter.go b/internal/vcenter/vcenter.go index 74bed99..49cdd72 100644 --- a/internal/vcenter/vcenter.go +++ b/internal/vcenter/vcenter.go @@ -75,7 +75,7 @@ func (v *Vcenter) Login(vUrl string) error { v.client = c - v.Logger.Debug("successfully connected to vCenter") + v.Logger.Debug("successfully connected to vCenter", "url", vUrl, "username", username) return nil } @@ -115,6 +115,9 @@ func (v *Vcenter) FindVMByName(vmName string) ([]mo.VirtualMachine, error) { } func (v *Vcenter) FindVMByID(vmID string) (*VmProperties, error) { + + v.Logger.Debug("searching for vm id", "vm_id", vmID) + finder := find.NewFinder(v.client.Client, true) // List all datacenters @@ -138,18 +141,19 @@ func (v *Vcenter) FindVMByID(vmID string) (*VmProperties, error) { var vm mo.VirtualMachine err := v.client.RetrieveOne(v.ctx, vmRef, []string{"config", "name"}, &vm) - if err != nil { + + if err == nil { + return &VmProperties{ + Datacenter: dc.Name(), + Vm: vm, + }, nil + } else if _, ok := err.(*find.NotFoundError); !ok { // If the error is not a NotFoundError, return it - if err == err.(*find.NotFoundError) { - return nil, fmt.Errorf("failed to retrieve VM with ID %s in datacenter %s: %w", vmID, dc.Name(), err) - } + //return nil, fmt.Errorf("failed to retrieve VM with ID %s in datacenter %s: %w", vmID, dc.Name(), err) + v.Logger.Debug("Couldn't find vm in datacenter", "vm_id", vmID, "datacenter_name", dc.Name()) + } else if err != nil { return nil, fmt.Errorf("failed to retrieve VM: %w", err) } - - return &VmProperties{ - Datacenter: dc.Name(), - Vm: vm, - }, nil } return nil, fmt.Errorf("VM with ID %s not found in any datacenter", vmID)