mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			34 lines
		
	
	
		
			998 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			998 B
		
	
	
	
		
			TypeScript
		
	
	
import { DeviceRequest } from 'docker-types/generated/1.41';
 | 
						|
 | 
						|
import { Values } from './types';
 | 
						|
 | 
						|
export function toRequest(
 | 
						|
  deviceRequests: Array<DeviceRequest>,
 | 
						|
  gpu: Values
 | 
						|
): Array<DeviceRequest> {
 | 
						|
  const driver = 'nvidia';
 | 
						|
 | 
						|
  const otherDeviceRequests = deviceRequests.filter(
 | 
						|
    (deviceRequest) => deviceRequest.Driver !== driver
 | 
						|
  );
 | 
						|
 | 
						|
  if (!gpu.enabled) {
 | 
						|
    return otherDeviceRequests;
 | 
						|
  }
 | 
						|
 | 
						|
  const deviceRequest: DeviceRequest = {
 | 
						|
    Driver: driver,
 | 
						|
    Count: -1,
 | 
						|
    DeviceIDs: [], // must be empty if Count != 0 https://github.com/moby/moby/blob/master/daemon/nvidia_linux.go#L50
 | 
						|
    Capabilities: [], // array of ORed arrays of ANDed capabilites = [ [c1 AND c2] OR [c1 AND c3] ] : https://github.com/moby/moby/blob/master/api/types/container/host_config.go#L272
 | 
						|
  };
 | 
						|
 | 
						|
  if (gpu.useSpecific) {
 | 
						|
    deviceRequest.DeviceIDs = gpu.selectedGPUs;
 | 
						|
    deviceRequest.Count = 0;
 | 
						|
  }
 | 
						|
  deviceRequest.Capabilities = [gpu.capabilities];
 | 
						|
 | 
						|
  return [...otherDeviceRequests, deviceRequest];
 | 
						|
}
 |