1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-24 07:49:41 +02:00
portainer/app/docker/models/imageDetails.ts
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.9 KiB
TypeScript

import { ImageInspect } from 'docker-types/generated/1.41';
type ImageInspectConfig = NonNullable<ImageInspect['Config']>;
export class ImageDetailsViewModel {
Id: ImageInspect['Id'];
Parent: ImageInspect['Parent'];
Created: ImageInspect['Created'];
RepoTags: ImageInspect['RepoTags'];
Size: ImageInspect['Size'];
DockerVersion: ImageInspect['DockerVersion'];
Os: ImageInspect['Os'];
Architecture: ImageInspect['Architecture'];
Author: ImageInspect['Author'];
// Config sub fields
Command: ImageInspectConfig['Cmd'];
Entrypoint: Required<ImageInspectConfig['Entrypoint']>;
ExposedPorts: Required<ImageInspectConfig['ExposedPorts']>;
Volumes: Required<ImageInspectConfig>['Volumes'];
Env: Required<ImageInspectConfig>['Env'];
Labels: ImageInspectConfig['Labels'];
// computed fields
Used: boolean = false;
constructor(data: ImageInspect) {
this.Id = data.Id;
// this.Tag = data.Tag; // doesn't seem to be used?
this.Parent = data.Parent;
this.Created = data.Created;
// this.Repository = data.Repository; // doesn't seem to be used?
this.RepoTags = data.RepoTags;
this.Size = data.Size;
this.DockerVersion = data.DockerVersion;
this.Os = data.Os;
this.Architecture = data.Architecture;
this.Author = data.Author;
this.Command = data.Config?.Cmd;
let config: ImageInspect['Config'] = {};
if (data.Config) {
config = data.Config; // this is part of OCI images-spec
} else if (data.ContainerConfig) {
config = data.ContainerConfig; // not OCI ; has been removed in Docker 26 (API v1.45) along with .Container
}
this.Entrypoint = config.Entrypoint ?? [''];
this.ExposedPorts = config.ExposedPorts
? Object.keys(config.ExposedPorts)
: [];
this.Volumes = config.Volumes ? Object.keys(config.Volumes) : [];
this.Env = config.Env ?? [];
this.Labels = config.Labels;
}
}