Skip to content

Commit 54c8539

Browse files
committed
[feature][ai] Add basic func def
1 parent be3b0d5 commit 54c8539

File tree

5 files changed

+75
-0
lines changed

5 files changed

+75
-0
lines changed

dingo_command/api/aiinstane.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# ai相关的容器实例的创建接口
2+
from fastapi import APIRouter, HTTPException
3+
4+
from dingo_command.api.model.aiinstance import AiInstanceApiModel
5+
from dingo_command.services.ai_instance import AiInstanceService
6+
from dingo_command.services.custom_exception import Fail
7+
8+
router = APIRouter()
9+
ai_instance_service = AiInstanceService()
10+
11+
@router.post("/ai-instance/create", summary="创建容器实例", description="创建容器实例")
12+
async def create_ai_instance(ai_instance:AiInstanceApiModel):
13+
# 创建容器实例
14+
try:
15+
# 创建成功
16+
return ai_instance_service.create_ai_instance(ai_instance)
17+
except Fail as e:
18+
raise HTTPException(status_code=400, detail=e.error_message)
19+
except Exception as e:
20+
import traceback
21+
traceback.print_exc()
22+
raise HTTPException(status_code=400, detail=f"创建容器实例失败:{ai_instance.ai_instance_name}")
23+
24+
@router.delete("/ai-instance/{id}", summary="删除容器实例", description="根据实例id删除容器实例数据")
25+
async def delete_instance_by_id(id:str):
26+
# 删除容器实例
27+
try:
28+
# 删除成功
29+
return ai_instance_service.delete_ai_pod_by_id(id)
30+
except Fail as e:
31+
raise HTTPException(status_code=400, detail=e.error_message)
32+
except Exception as e:
33+
import traceback
34+
traceback.print_exc()
35+
raise HTTPException(status_code=400, detail=f"删除容器实例失败:{id}")

dingo_command/api/model/aiinstance.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# 定义ai容器相关的model对象
2+
from typing import Optional, List, Any, Dict
3+
4+
from pydantic import BaseModel, Field
5+
6+
7+
# 容器实例信息
8+
class AiInstanceApiModel(BaseModel):
9+
ai_instance_id: Optional[str] = Field(None, description="容器实例的id")
10+
ai_instance_name: Optional[str] = Field(None, description="容器实例的名称")
11+
description: Optional[str] = Field(None, description="描述信息")

dingo_command/services/ai_instance.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# ai实例的service层
2+
from oslo_log import log
3+
4+
LOG = log.getLogger(__name__)
5+
6+
class AiInstanceService:
7+
8+
def delete_ai_pod_by_id(self, id):
9+
return None
10+
11+
def create_ai_instance(self, ai_instance):
12+
pass

dingo_command/utils/k8s_client.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# k8s的client
2+
3+
from kubernetes import client, config
4+
5+
6+
def get_k8s_client(config_file: str, context: str):
7+
"""检测"""
8+
if not config_file or not context:
9+
raise ValueError(f"Invalid param config_file: {config_file}, context: {context}")
10+
"""加载配置"""
11+
config.load_kube_config(
12+
config_file=config_file,
13+
context=context,
14+
)
15+
"""返回api"""
16+
return client.CoreV1Api()

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ jupyter_core==5.7.2
8686
jupyterlab_pygments==0.3.0
8787
keystoneauth1==5.8.0
8888
kombu==5.4.2
89+
kubernetes==33.1.0
8990
libcomps==0.1.20.post1
9091
lockfile==0.12.2
9192
loguru==0.5.3

0 commit comments

Comments
 (0)