feat: templates, storage

This commit is contained in:
jialin
2026-05-11 19:49:21 +08:00
committed by jialin
parent 3ae49dc826
commit 7ea7f6666d
52 changed files with 3604 additions and 188 deletions
@@ -1,17 +1,24 @@
import { StatusMaps } from '@/config';
import { StatusType } from '@/config/types';
import { icons } from '@gpustack/core-ui';
import { InstanceItem } from './types';
export const InstanceStatusValueMap = {
Running: 'running',
Ready: 'ready',
Pending: 'pending',
Stopped: 'stopped',
Failed: 'failed'
Error: 'error'
};
export const InstanceStatusLabelMap: Record<string, string> = {
[InstanceStatusValueMap.Running]: '运行中',
[InstanceStatusValueMap.Pending]: '等待中',
[InstanceStatusValueMap.Stopped]: '已停止',
[InstanceStatusValueMap.Failed]: '失败'
[InstanceStatusValueMap.Ready]: 'Ready',
[InstanceStatusValueMap.Pending]: 'Pending',
[InstanceStatusValueMap.Error]: 'Error'
};
export const status: Record<string, StatusType> = {
[InstanceStatusValueMap.Ready]: StatusMaps.success,
[InstanceStatusValueMap.Pending]: StatusMaps.transitioning,
[InstanceStatusValueMap.Error]: StatusMaps.error
};
export const rowActionList = [
@@ -29,3 +36,43 @@ export const rowActionList = [
}
}
];
export const InstanceTypeStatusValueMap = {
Available: 'available',
Unavailable: 'unavailable'
};
export const instanceTypeOptions: InstanceItem[] = [
{
id: 1,
name: 'NVIDIA L4 Small',
vram: 24,
ram: 64,
vCPU: 16,
gpu_count: 1,
status: InstanceTypeStatusValueMap.Available
},
{
id: 2,
name: 'NVIDIA A100 Training',
vram: 80,
ram: 256,
vCPU: 64,
gpu_count: 8,
status: InstanceTypeStatusValueMap.Available
},
{
id: 3,
name: 'NVIDIA H100 Inference',
vram: 80,
ram: 512,
vCPU: 96,
gpu_count: 0,
status: InstanceTypeStatusValueMap.Unavailable
}
];
export const StorageModeValueMap = {
Existing: 'existing',
Temporary: 'temporary'
};
@@ -0,0 +1,59 @@
import { InstanceStatusValueMap } from '.';
import { ListItem } from './types';
export const mockInstanceData: ListItem[] = [
{
id: 1,
name: 'cuda-dev-01',
instance_type: 'NVIDIA L4 Small',
instance_type_id: 1,
template_id: 1,
image: 'nvidia/cuda:12.4.1-devel-ubuntu22.04',
gpu_count: 1,
replicas: 1,
storage_mode: 'existing',
storage_id: 1,
cluster_id: 1,
status: InstanceStatusValueMap.Ready,
endpoint: 'https://cuda-dev-01.example.com',
description: 'CUDA development workspace',
created_at: '2026-04-01T10:00:00Z',
updated_at: '2026-04-10T10:00:00Z'
},
{
id: 2,
name: 'training-job-a100',
instance_type: 'NVIDIA A100 Training',
instance_type_id: 2,
template_id: 2,
image: 'pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel',
gpu_count: 4,
replicas: 1,
storage_mode: 'existing',
storage_id: 2,
cluster_id: 1,
status: InstanceStatusValueMap.Pending,
endpoint: 'https://training-job-a100.example.com',
description: 'PyTorch training environment',
created_at: '2026-04-02T10:00:00Z',
updated_at: '2026-04-11T10:00:00Z'
},
{
id: 3,
name: 'inference-vllm',
instance_type: 'NVIDIA H100 Inference',
instance_type_id: 3,
template_id: 6,
image: 'vllm/vllm-openai:latest',
gpu_count: 2,
replicas: 2,
storage_mode: 'temporary',
local_storage_size_gb: 100,
cluster_id: 1,
status: InstanceStatusValueMap.Error,
endpoint: 'http://inference-vllm.example.com',
description: 'OpenAI-compatible inference service',
created_at: '2026-04-03T10:00:00Z',
updated_at: '2026-04-12T10:00:00Z'
}
];
@@ -2,8 +2,16 @@ export interface FormData {
name: string;
description?: string;
image?: string;
instance_type?: string;
instance_type_id?: number;
template_id?: number;
gpu_count?: number;
replicas?: number;
storage_mode?: string;
storage_id?: number;
local_storage_size_gb?: number;
cluster_id?: number;
mount_path?: string;
}
export interface ListItem extends FormData {
@@ -13,3 +21,13 @@ export interface ListItem extends FormData {
created_at?: string;
updated_at?: string;
}
export interface InstanceItem {
id: number;
name: string;
vram: number; // GiB
ram: number; // GiB
vCPU: number; // cores
gpu_count: number;
status: string; // available, unavailable
}