Merge remote-tracking branch 'origin/master'
# Conflicts: # app.py # k8s/agent-manager-configmap.yaml
This commit is contained in:
@@ -9,7 +9,7 @@ from sqlalchemy.orm import Session
|
||||
from datetime import datetime
|
||||
import logging
|
||||
|
||||
from k8s_manager import K8sManager
|
||||
from k8s_manager import K8sManager, sanitize_k8s_name
|
||||
from database import (
|
||||
get_db, Template, Agent, Quota, AgentMetric,
|
||||
AgentType, AgentStatus, parse_resource_string
|
||||
@@ -328,6 +328,12 @@ async def create_agent(request: CreateAgentRequest, db: Session = Depends(get_db
|
||||
detail=f"无效的框架类型。支持的框架: {', '.join(valid_frameworks)}"
|
||||
)
|
||||
|
||||
# DNS-1035 名称合规化:确保名称可以用作 K8s 资源名称
|
||||
original_name = request.name
|
||||
request.name = sanitize_k8s_name(request.name)
|
||||
if original_name != request.name:
|
||||
logger.info(f"🔄 Agent 名称已合规化: '{original_name}' -> '{request.name}' (DNS-1035)")
|
||||
|
||||
# 合并环境变量到config
|
||||
config_data = request.config.copy()
|
||||
config_data["agent_framework"] = framework # 添加框架类型到配置
|
||||
@@ -394,7 +400,8 @@ async def create_agent(request: CreateAgentRequest, db: Session = Depends(get_db
|
||||
if request.template == "openclaw":
|
||||
service_port = 18789
|
||||
else:
|
||||
service_port = k8s_manager.TEMPLATE_PORTS.get(request.template)
|
||||
# 其他模板从数据库动态获取
|
||||
service_port = template_manager.get_port(request.template)
|
||||
|
||||
# 步骤4: 创建 Service(OpenClaw 已在 create_openclaw_deployment 中自动创建 Service 和 Ingress)
|
||||
service_info = None
|
||||
@@ -608,8 +615,11 @@ async def delete_agent(agent_name: str, db: Session = Depends(get_db)):
|
||||
try:
|
||||
logger.info(f"收到删除Agent请求: {agent_name}")
|
||||
|
||||
# DNS-1035 名称合规化
|
||||
agent_name = sanitize_k8s_name(agent_name)
|
||||
|
||||
# 保护机制:防止删除 agent-manager 命名空间
|
||||
computed_namespace = f"agent-{agent_name}".lower().strip('-')[:63]
|
||||
computed_namespace = f"agent-{agent_name}"[:63].rstrip('-')
|
||||
if computed_namespace == "agent-manager":
|
||||
logger.error(f"❌ 禁止删除 agent-manager 命名空间!agent_name={agent_name}, computed_namespace={computed_namespace}")
|
||||
raise HTTPException(
|
||||
|
||||
Reference in New Issue
Block a user