mirror of https://github.com/portainer/portainer
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
|
import { CreateContainerRequest } from '../types';
|
||
|
|
||
|
import { CONTAINER_MODE, Values } from './types';
|
||
|
|
||
|
export function toRequest(
|
||
|
oldConfig: CreateContainerRequest,
|
||
|
values: Values,
|
||
|
fromContainerId: string
|
||
|
): CreateContainerRequest {
|
||
|
let mode = values.networkMode;
|
||
|
let hostName = values.hostname;
|
||
|
if (mode === CONTAINER_MODE && values.container) {
|
||
|
mode += `:${values.container}`;
|
||
|
hostName = '';
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
...oldConfig,
|
||
|
Hostname: hostName,
|
||
|
MacAddress: values.macAddress,
|
||
|
HostConfig: {
|
||
|
...oldConfig.HostConfig,
|
||
|
NetworkMode: mode,
|
||
|
Dns: [values.primaryDns, values.secondaryDns].filter((d) => d),
|
||
|
ExtraHosts: values.hostsFileEntries,
|
||
|
},
|
||
|
NetworkingConfig: {
|
||
|
...oldConfig.NetworkingConfig,
|
||
|
EndpointsConfig: {
|
||
|
[mode]: {
|
||
|
IPAMConfig: {
|
||
|
IPv4Address: values.ipv4Address,
|
||
|
IPv6Address: values.ipv6Address,
|
||
|
},
|
||
|
Aliases: oldConfig.NetworkingConfig.EndpointsConfig?.[
|
||
|
mode
|
||
|
]?.Aliases?.filter((al) => !fromContainerId.startsWith(al)),
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
}
|