From fabc629e4004abb4ff7319901eeb3d50bf773304 Mon Sep 17 00:00:00 2001 From: Jason Kulatunga Date: Thu, 5 May 2022 23:03:06 -0700 Subject: [PATCH] handle case where WWN not detected for a device (print error messages, but skip device collection & uploading). --- collector/pkg/collector/metrics.go | 4 ++++ collector/pkg/detect/detect.go | 6 ++++++ webapp/backend/pkg/web/handler/upload_device_metrics.go | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/collector/pkg/collector/metrics.go b/collector/pkg/collector/metrics.go index a83dd35..ff8158b 100644 --- a/collector/pkg/collector/metrics.go +++ b/collector/pkg/collector/metrics.go @@ -107,6 +107,10 @@ func (mc *MetricsCollector) Validate() error { //func (mc *MetricsCollector) Collect(wg *sync.WaitGroup, deviceWWN string, deviceName string, deviceType string) { func (mc *MetricsCollector) Collect(deviceWWN string, deviceName string, deviceType string) { //defer wg.Done() + if len(deviceWWN) == 0 { + mc.logger.Errorf("no device WWN detected for %s. Skipping collection for this device (no data association possible).\n", deviceName) + return + } mc.logger.Infof("Collecting smartctl results for %s\n", deviceName) args := []string{"-x", "-j"} diff --git a/collector/pkg/detect/detect.go b/collector/pkg/detect/detect.go index 984bee3..d0d80d0 100644 --- a/collector/pkg/detect/detect.go +++ b/collector/pkg/detect/detect.go @@ -100,6 +100,12 @@ func (d *Detect) SmartCtlInfo(device *models.Device) error { d.Logger.Info("Using WWN Fallback") d.wwnFallback(device) } + if len(device.WWN) == 0 { + // no WWN populated after WWN lookup and fallback. we need to throw an error + errMsg := fmt.Sprintf("no WWN (or fallback) populated for device: %s. Device will be registered, but no data will be published for this device. ", device.DeviceName) + d.Logger.Errorf(errMsg) + return fmt.Errorf(errMsg) + } return nil } diff --git a/webapp/backend/pkg/web/handler/upload_device_metrics.go b/webapp/backend/pkg/web/handler/upload_device_metrics.go index 9fab5b5..7a971bd 100644 --- a/webapp/backend/pkg/web/handler/upload_device_metrics.go +++ b/webapp/backend/pkg/web/handler/upload_device_metrics.go @@ -31,7 +31,7 @@ func UploadDeviceMetrics(c *gin.Context) { //update the device information if necessary updatedDevice, err := deviceRepo.UpdateDevice(c, c.Param("wwn"), collectorSmartData) if err != nil { - logger.Errorln("An error occurred while updating device data from smartctl metrics", err) + logger.Errorln("An error occurred while updating device data from smartctl metrics:", err) c.JSON(http.StatusInternalServerError, gin.H{"success": false}) return }