portainer/app/react/docker/containers/CreateView/ResourcesTab/toRequest.ts

36 lines
1.1 KiB
TypeScript

import { CreateContainerRequest } from '../types';
import { gpuFieldsetUtils } from './GpuFieldset';
import { toConfigMemory } from './memory-utils';
import { Values } from './ResourcesTab';
import { toRequest as toResourcesRequest } from './ResourcesFieldset';
export function toRequest(
oldConfig: CreateContainerRequest,
values: Values
): CreateContainerRequest {
return {
...oldConfig,
HostConfig: {
...oldConfig.HostConfig,
Privileged: values.runtime.privileged,
Init: values.runtime.init,
Runtime: values.runtime.type,
Devices: values.devices.map((device) => ({
PathOnHost: device.pathOnHost,
PathInContainer: device.pathInContainer,
CgroupPermissions: 'rwm',
})),
Sysctls: Object.fromEntries(
values.sysctls.map((sysctl) => [sysctl.name, sysctl.value])
),
ShmSize: toConfigMemory(values.sharedMemorySize),
DeviceRequests: gpuFieldsetUtils.toRequest(
oldConfig.HostConfig.DeviceRequests || [],
values.gpu
),
...toResourcesRequest(oldConfig.HostConfig, values.resources),
},
};
}