in pkg/cloud/instance.go [45:72]
func (c *client) ResolveVMInstanceDetails(csMachine *infrav1.CloudStackMachine) error {
// Attempt to fetch by ID.
if csMachine.Spec.InstanceID != nil {
vmResp, count, err := c.cs.VirtualMachine.GetVirtualMachinesMetricByID(*csMachine.Spec.InstanceID)
if err != nil && !strings.Contains(strings.ToLower(err.Error()), "no match found") {
return err
} else if count > 1 {
return fmt.Errorf("Found more than one VM Instance with ID %s.", *csMachine.Spec.InstanceID)
} else if err == nil {
setMachineDataFromVMMetrics(vmResp, csMachine)
return nil
}
}
// Attempt fetch by name.
if csMachine.Name != "" {
vmResp, count, err := c.cs.VirtualMachine.GetVirtualMachinesMetricByName(csMachine.Name) // add opts usage
if err != nil && !strings.Contains(strings.ToLower(err.Error()), "no match") {
return err
} else if count > 1 {
return fmt.Errorf("Found more than one VM Instance with name %s.", csMachine.Name)
} else if err == nil {
setMachineDataFromVMMetrics(vmResp, csMachine)
return nil
}
}
return errors.New("no match found")
}