Skip to content

Commit

Permalink
Fix issues with fingerprinting.
Browse files Browse the repository at this point in the history
Too many languages and case statements.
  • Loading branch information
neomantra committed Jan 25, 2024
1 parent 6054a29 commit 31590bb
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 17 deletions.
14 changes: 8 additions & 6 deletions internal/onload_device/fingerprint.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ func (d *OnloadDevicePlugin) getFingerprintData() (*FingerprintData, error) {
for _, dev := range deviceInfos {
for _, deviceType := range deviceTypes {
// create pseudo-devices for non-exclusive access
d.logger.Info("Fingerprinted NIC device", "deviceType", deviceType, "iface", dev.Interface)
devices = append(devices, makePsuedoDeviceFingerprints(d.config.NumPsuedoNIC, deviceType, dev)...)
}
}
Expand All @@ -107,6 +108,7 @@ func (d *OnloadDevicePlugin) getFingerprintData() (*FingerprintData, error) {
if d.config.ProbePPS {
if devs, err := ProbePPS(); err == nil {
for _, dev := range devs {
d.logger.Info("Fingerprinted PPS device", "deviceType", deviceType_PPS, "iface", dev.Interface)
devices = append(devices, makePsuedoDeviceFingerprints(d.config.NumPsuedoPPS, deviceType_PPS, dev)...)
}
} else {
Expand All @@ -116,6 +118,7 @@ func (d *OnloadDevicePlugin) getFingerprintData() (*FingerprintData, error) {
if d.config.ProbePTP {
if devs, err := ProbePTP(); err == nil {
for _, dev := range devs {
d.logger.Info("Fingerprinted PTP device", "deviceType", deviceType_PTP, "iface", dev.Interface)
devices = append(devices, makePsuedoDeviceFingerprints(d.config.NumPsuedoPTP, deviceType_PTP, dev)...)
}
} else {
Expand All @@ -138,7 +141,7 @@ func makePsuedoDeviceFingerprints(numPsuedoDevices int, deviceType string, devIn
deviceID := fmt.Sprintf("%s-%d", devInfo.Interface, i)
fingprintDevices = append(fingprintDevices, &FingerprintDeviceData{
Interface: deviceID,
Model: devInfo.Interface, // hard to know actual Model, so allow Interface as specifier
Model: devInfo.Interface, // hard to know actual Model, so use Interface as specifier
DeviceType: deviceType,
Vendor: devInfo.Vendor,
PCIBusID: devInfo.PCIBusID,
Expand Down Expand Up @@ -277,11 +280,10 @@ func (d *OnloadDevicePlugin) deviceGroupFromFingerprintData(groupName string, de

dev := deviceList[0] // safe, we checked above
deviceGroup := &device.DeviceGroup{
Vendor: dev.Vendor,
Type: dev.DeviceType,
Name: groupName,
Devices: devices,
// TODO: what are common attributes?
Vendor: dev.Vendor,
Type: dev.DeviceType,
Name: groupName,
Devices: devices,
Attributes: map[string]*structs.Attribute{},
}

Expand Down
6 changes: 4 additions & 2 deletions internal/onload_device/probes.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,9 @@ func ProbePPS() ([]DeviceInfo, error) {
}
var devs []DeviceInfo
for _, ppsDevice := range ppsDevices {
iface := strings.TrimPrefix(ppsDevice, "/dev/")
devs = append(devs, DeviceInfo{
Interface: ppsDevice,
Interface: iface,
Vendor: vendor_None, // TODO: this is discoverable?
PCIBusID: "", // TODO: this is discoverable?
})
Expand All @@ -159,8 +160,9 @@ func ProbePTP() ([]DeviceInfo, error) {
}
var devs []DeviceInfo
for _, ptpDevice := range ptpDevices {
iface := strings.TrimPrefix(ptpDevice, "/dev/")
devs = append(devs, DeviceInfo{
Interface: ptpDevice,
Interface: iface,
Vendor: vendor_None, // TODO: this is discoverable?
PCIBusID: "", // TODO: this is discoverable?
})
Expand Down
15 changes: 6 additions & 9 deletions internal/onload_device/reserve.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,27 +104,24 @@ func (d *OnloadDevicePlugin) Reserve(deviceIDs []string) (*device.ContainerReser
Mounts: []*device.Mount{},
Devices: []*device.DeviceSpec{},
}

// Add devices
for _, deviceID := range deviceIDs {
device, ok := d.devices[deviceID]
if !ok {
d.logger.Warn("Device not known", "deviceID", deviceID)
d.logger.Warn("Reserving a device not known", "deviceID", deviceID)
continue
}

switch device.DeviceType {
case deviceType_Onload:
case deviceType_ZF:
case deviceType_OnloadZF:
case deviceType_Onload, deviceType_ZF, deviceType_OnloadZF:
// updates resp
d.logger.Info("Reserving onload device", "deviceID", deviceID, "deviceType", device.DeviceType)
d.reserveOnloadDevice(resp, device.DeviceType, deviceID)
case deviceType_PTP:
case deviceType_PPS:
case deviceType_PTP, deviceType_PPS:
d.logger.Info("Reserving timekeeping device", "deviceID", deviceID, "deviceType", device.DeviceType)
d.reserveTimekeepingDevice(resp, device.DeviceType, device.Interface)
d.reserveTimekeepingDevice(resp, device.DeviceType, device.Model)
default:
d.logger.Warn("DeviceType not known", "deviceType", device.DeviceType, "deviceID", deviceID)
d.logger.Warn("Reserving a DeviceType not known", "deviceType", device.DeviceType, "deviceID", deviceID)
continue
}

Expand Down

0 comments on commit 31590bb

Please sign in to comment.