feat: templates, storage
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user