1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-22 06:49:40 +02:00
portainer/app/react/docker/containers/CreateView/CommandsTab/toViewModel.tsx
LP B 6a8e6734f3
Some checks are pending
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
ci / build_images (map[arch:arm platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:s390x platform:linux version:]) (push) Waiting to run
ci / build_manifests (push) Blocked by required conditions
/ triage (push) Waiting to run
Lint / Run linters (push) Waiting to run
Test / test-client (push) Waiting to run
Test / test-server (map[arch:amd64 platform:linux]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
Test / test-server (map[arch:arm64 platform:linux]) (push) Waiting to run
feat(app): limit the docker API version supported by the frontend (#11855)
2024-06-10 20:54:31 +02:00

70 lines
1.6 KiB
TypeScript

import { HostConfig } from 'docker-types/generated/1.41';
import { commandArrayToString } from '@/docker/helpers/containers';
import { ContainerDetailsJSON } from '../../queries/useContainer';
import { ConsoleConfig, ConsoleSetting } from './ConsoleSettings';
import { LogConfig } from './LoggerConfig';
import { Values } from './types';
export function getDefaultViewModel(): Values {
return {
cmd: null,
entrypoint: null,
user: '',
workingDir: '',
console: 'none',
logConfig: getLogConfig(),
};
}
export function toViewModel(config: ContainerDetailsJSON): Values {
if (!config.Config) {
return getDefaultViewModel();
}
return {
cmd: config.Config.Cmd ? commandArrayToString(config.Config.Cmd) : null,
entrypoint: config.Config.Entrypoint
? commandArrayToString(config.Config.Entrypoint)
: null,
user: config.Config.User || '',
workingDir: config.Config.WorkingDir || '',
console: config ? getConsoleSetting(config.Config) : 'none',
logConfig: getLogConfig(config.HostConfig?.LogConfig),
};
}
function getLogConfig(value?: HostConfig['LogConfig']): LogConfig {
if (!value || !value.Type) {
return {
type: '',
options: [],
};
}
return {
type: value.Type,
options: Object.entries(value.Config || {}).map(([option, value]) => ({
option,
value,
})),
};
}
function getConsoleSetting(value: ConsoleConfig): ConsoleSetting {
if (value.OpenStdin && value.Tty) {
return 'both';
}
if (!value.OpenStdin && value.Tty) {
return 'tty';
}
if (value.OpenStdin && !value.Tty) {
return 'interactive';
}
return 'none';
}