@@ -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 )
0 commit comments