Skip to content

Commit 68cd81d

Browse files
author
houyuxi
committed
fix(create vdevfile with new format device uuid):
get device index from new format device uuid to create vdev file Signed-off-by: houyuxi <[email protected]>
1 parent 8160fc0 commit 68cd81d

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

internal/pkg/dcu/register.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (r *Plugin) apiDevices() (*[]*api.DeviceInfo, error) {
4343
if val.MemoryTotal > 0 {
4444
res = append(res, &api.DeviceInfo{
4545
Index: val.DvInd,
46-
Id: "DCU-" + fmt.Sprint(deviceSerialInfos[idx].SerialNumber),
46+
Id: util.GetDeviceUUIDFromDevSerialNumber(deviceSerialInfos[idx].SerialNumber),
4747
Count: 4,
4848
Devmem: int32(val.MemoryTotal / 1024 / 1024),
4949
Devcore: 100,

internal/pkg/dcu/server.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,11 +362,25 @@ func (p *Plugin) createvdevFiles(current *corev1.Pod, ctr *corev1.Container, req
362362
if len(req) > 1 {
363363
return "", nil
364364
}
365+
366+
devSerialNumber2IdxMapper, err := util.GetSerialNumberToDvIdMap(p.devices)
365367
for _, val := range req {
366368
if len(val.UUID) == 0 {
367369
continue
368370
}
369-
idx := getIndexFromUUID(val.UUID)
371+
var devSerialNumber = ""
372+
succeedCount, err := util.GetDevSerialNumberFromDeviceUUID(val.UUID, &devSerialNumber)
373+
if err != nil || succeedCount == 0 || devSerialNumber == "" {
374+
klog.Errorf("Invalid request device uuid: %s", val.UUID)
375+
return "", fmt.Errorf("invalid request device uuid %s", val.UUID)
376+
}
377+
378+
idx, ok := devSerialNumber2IdxMapper[devSerialNumber]
379+
if !ok {
380+
klog.Errorf("Device serial number %s not found in mapper", devSerialNumber)
381+
return "", fmt.Errorf("device serial number %s not found in mapper", devSerialNumber)
382+
}
383+
370384
pcibusId = p.devices[idx].PciBusNumber
371385
reqcores = (val.Usedcores * int32(p.devices[idx].ComputeUnit)) / 100
372386
coremsk1, reqtmp, _ = allocCoreUsage(p.coremask[idx][0], int(reqcores))
@@ -501,7 +515,8 @@ func (p *Plugin) Allocate(ctx context.Context, reqs *kubeletdevicepluginv1beta1.
501515
for _, val := range devreq {
502516
var devSerialNumber = ""
503517
klog.Infof("Allocating device Serial Number: %s", val.UUID)
504-
succeedCount, err := fmt.Sscanf(val.UUID, "DCU-%s", &devSerialNumber)
518+
519+
succeedCount, err := util.GetDevSerialNumberFromDeviceUUID(val.UUID, &devSerialNumber)
505520
if err != nil || succeedCount == 0 || devSerialNumber == "" {
506521
klog.Errorf("Invalid request device uuid: %s", val.UUID)
507522
util.PodAllocationFailed(nodename, current, NodeLockDCU)

internal/pkg/util/util.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,3 +498,11 @@ func GetSerialNumberToDvIdMap(deviceInfos []dcgm.DeviceInfo) (map[string]int, er
498498

499499
return serialNumberToDvId, nil
500500
}
501+
502+
func GetDeviceUUIDFromDevSerialNumber(devSerialNumber string) string {
503+
return fmt.Sprintf("DCU-%s", devSerialNumber)
504+
}
505+
506+
func GetDevSerialNumberFromDeviceUUID(uuid string, devSerialNumber *string) (int, error) {
507+
return fmt.Sscanf(uuid, "DCU-%s", devSerialNumber)
508+
}

0 commit comments

Comments
 (0)