1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-18 21:09:40 +02:00
portainer/app/docker/models/node.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

116 lines
2.6 KiB
TypeScript

import {
Node,
EngineDescription,
ManagerStatus,
NodeDescription,
NodeSpec,
NodeStatus,
ObjectVersion,
Platform,
ResourceObject,
} from 'docker-types/generated/1.41';
export class NodeViewModel {
Model: Node;
Id: Node['ID'];
Version: ObjectVersion['Index'];
Name: NodeSpec['Name'];
Role: NodeSpec['Role'];
CreatedAt: Node['CreatedAt'];
UpdatedAt: Node['UpdatedAt'];
Availability: NodeSpec['Availability'];
Labels: Array<{
key: string;
value: string;
originalKey: string;
originalValue: string;
added: boolean;
}>;
EngineLabels: Array<{ key: string; value: string }>;
Hostname: NodeDescription['Hostname'];
PlatformArchitecture: Platform['Architecture'];
PlatformOS: Platform['OS'];
CPUs: ResourceObject['NanoCPUs'];
Memory: ResourceObject['MemoryBytes'];
EngineVersion: EngineDescription['EngineVersion'];
Plugins: EngineDescription['Plugins'];
Status: NodeStatus['State'];
Addr: Required<NodeStatus>['Addr'] = '';
Leader: ManagerStatus['Leader'];
Reachability: ManagerStatus['Reachability'];
ManagerAddr: ManagerStatus['Addr'];
constructor(data: Node) {
this.Model = data;
this.Id = data.ID;
this.Version = data.Version?.Index;
this.Name = data.Spec?.Name;
this.Role = data.Spec?.Role;
this.CreatedAt = data.CreatedAt;
this.UpdatedAt = data.UpdatedAt;
this.Availability = data.Spec?.Availability;
const labels = data.Spec?.Labels;
if (labels) {
this.Labels = Object.keys(labels).map((key) => ({
key,
value: labels[key],
originalKey: key,
originalValue: labels[key],
added: true,
}));
} else {
this.Labels = [];
}
const engineLabels = data.Description?.Engine?.Labels;
if (engineLabels) {
this.EngineLabels = Object.keys(engineLabels).map((key) => ({
key,
value: engineLabels[key],
}));
} else {
this.EngineLabels = [];
}
this.Hostname = data.Description?.Hostname;
this.PlatformArchitecture = data.Description?.Platform?.Architecture;
this.PlatformOS = data.Description?.Platform?.OS;
this.CPUs = data.Description?.Resources?.NanoCPUs;
this.Memory = data.Description?.Resources?.MemoryBytes;
this.EngineVersion = data.Description?.Engine?.EngineVersion;
this.Plugins = data.Description?.Engine?.Plugins;
this.Status = data.Status?.State;
if (data.Status?.Addr) {
this.Addr = data.Status?.Addr;
}
if (data.ManagerStatus) {
this.Leader = data.ManagerStatus.Leader;
this.Reachability = data.ManagerStatus.Reachability;
this.ManagerAddr = data.ManagerStatus.Addr;
}
}
}