From 55cb82c6c8740235512432d96faf22a5746aab6f Mon Sep 17 00:00:00 2001 From: Evan Lezar <elezar@nvidia.com> Date: Thu, 16 Jun 2022 14:17:53 +0200 Subject: [PATCH] Create single discoverer per mount type for CSV Instead of creating a set of discoverers per file, this change creates a discoverer per type by first concatenating the mount specifications from all files. This will allow all device nodes, for example, to be treated as a single device. Signed-off-by: Evan Lezar <elezar@nvidia.com> --- internal/discover/csv.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/internal/discover/csv.go b/internal/discover/csv.go index 9d9fda64..3e87cd0b 100644 --- a/internal/discover/csv.go +++ b/internal/discover/csv.go @@ -47,23 +47,21 @@ func NewFromCSVFiles(logger *logrus.Logger, files []string, root string) (Discov csv.MountSpecSym: symlinkLocator, } - var discoverers []Discover + var mountSpecs []*csv.MountSpec for _, filename := range files { - d, err := NewFromCSVFile(logger, locators, filename) + targets, err := loadCSVFile(logger, filename) if err != nil { logger.Warnf("Skipping CSV file %v: %v", filename, err) continue } - discoverers = append(discoverers, d) + mountSpecs = append(mountSpecs, targets...) } - return &list{discoverers: discoverers}, nil + return newFromMountSpecs(logger, locators, mountSpecs) } -// NewFromCSVFile creates a discoverer for the specified CSV file. A logger is also supplied. -// The constructed discoverer is comprised of a list, with each element in the list being associated with a particular -// MountSpecType. -func NewFromCSVFile(logger *logrus.Logger, locators map[csv.MountSpecType]lookup.Locator, filename string) (Discover, error) { +// loadCSVFile +func loadCSVFile(logger *logrus.Logger, filename string) ([]*csv.MountSpec, error) { // Create a discoverer for each file-kind combination targets, err := csv.NewCSVFileParser(logger, filename).Parse() if err != nil { @@ -73,7 +71,7 @@ func NewFromCSVFile(logger *logrus.Logger, locators map[csv.MountSpecType]lookup return nil, fmt.Errorf("CSV file is empty") } - return newFromMountSpecs(logger, locators, targets) + return targets, nil } // newFromMountSpecs creates a discoverer for the CSV file. A logger is also supplied.