fpga: decrease cyclomatic complexity of scanFPGAs

Moved code that goes through sysfs to the separate function
getSysFsInfo to decrease cyclomatic complexity of the scanFPGAs
function.

This is required to get the next commit through our CI check.
This commit is contained in:
Ed Bartosh 2018-07-03 10:57:02 +03:00
parent 87daf21eea
commit 6a571e7d5b

View File

@ -242,45 +242,9 @@ func (c *Cache) scanFPGAs() error {
return err
}
var regions []region
var afus []afu
for _, deviceFile := range deviceFiles {
name := deviceFile.Name()
if c.fmeReg.MatchString(name) {
if len(regions) > 0 {
return fmt.Errorf("Detected more than one FPGA region for device %s. Only one region per FPGA device is supported", fname)
}
interfaceIDFile := path.Join(deviceFolder, name, "pr", "interface_id")
data, err := ioutil.ReadFile(interfaceIDFile)
if err != nil {
return err
}
devNode, err := c.getDevNode(name)
if err != nil {
return err
}
regions = append(regions, region{
id: name,
interfaceID: strings.TrimSpace(string(data)),
devNode: devNode,
})
} else if c.portReg.MatchString(name) {
afuFile := path.Join(deviceFolder, name, "afu_id")
data, err := ioutil.ReadFile(afuFile)
if err != nil {
return err
}
devNode, err := c.getDevNode(name)
if err != nil {
return err
}
afus = append(afus, afu{
id: name,
afuID: strings.TrimSpace(string(data)),
devNode: devNode,
})
}
regions, afus, err := c.getSysFsInfo(deviceFolder, deviceFiles, fname)
if err != nil {
return err
}
if len(regions) == 0 {
@ -301,6 +265,51 @@ func (c *Cache) scanFPGAs() error {
return nil
}
func (c *Cache) getSysFsInfo(deviceFolder string, deviceFiles []os.FileInfo, fname string) ([]region, []afu, error) {
var regions []region
var afus []afu
for _, deviceFile := range deviceFiles {
name := deviceFile.Name()
if c.fmeReg.MatchString(name) {
if len(regions) > 0 {
return nil, nil, fmt.Errorf("Detected more than one FPGA region for device %s. Only one region per FPGA device is supported", fname)
}
interfaceIDFile := path.Join(deviceFolder, name, "pr", "interface_id")
data, err := ioutil.ReadFile(interfaceIDFile)
if err != nil {
return nil, nil, err
}
devNode, err := c.getDevNode(name)
if err != nil {
return nil, nil, err
}
regions = append(regions, region{
id: name,
interfaceID: strings.TrimSpace(string(data)),
devNode: devNode,
})
} else if c.portReg.MatchString(name) {
afuFile := path.Join(deviceFolder, name, "afu_id")
data, err := ioutil.ReadFile(afuFile)
if err != nil {
return nil, nil, err
}
devNode, err := c.getDevNode(name)
if err != nil {
return nil, nil, err
}
afus = append(afus, afu{
id: name,
afuID: strings.TrimSpace(string(data)),
devNode: devNode,
})
}
}
return regions, afus, nil
}
// Run starts scanning of FPGA devices on the host
func (c *Cache) Run() error {
for {