mirror of
https://github.com/intel/intel-device-plugins-for-kubernetes.git
synced 2025-06-03 03:59:37 +00:00
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:
parent
87daf21eea
commit
6a571e7d5b
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user