- 修改 template_manager.py、k8s_manager.py 中的端口映射 - 更新 jina_search_agent、azure_blob_agent 系列、a2a_litellm_agent 的代码和 Dockerfile 为 8000 - 添加端口修改脚本和测试脚本 Made-with: Cursor
117 lines
3.4 KiB
Python
Executable File
117 lines
3.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
"""
|
||
更新数据库中模板的端口。
|
||
|
||
将 search_agent / search_agent_a2a / search_agent_mcp 的 port 改为 8080,
|
||
与容器实际监听端口一致,使 Service target_port 正确。
|
||
|
||
用法:
|
||
# 使用项目 database 配置,仅修改 search_agent* 为 8080
|
||
python scripts/update_template_ports.py
|
||
|
||
# 指定要改的模板和端口
|
||
python scripts/update_template_ports.py --names search_agent,search_agent_a2a,search_agent_mcp --port 8080
|
||
|
||
# 仅打印当前端口,不修改(dry-run)
|
||
python scripts/update_template_ports.py --dry-run
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
import argparse
|
||
|
||
# 确保项目根在 path 中
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
|
||
from database import SessionLocal, Template
|
||
|
||
|
||
# 默认:需要改为 8080 的模板(与 search_agent 镜像一致)
|
||
DEFAULT_TEMPLATES_8080 = ["search_agent", "search_agent_a2a", "search_agent_mcp"]
|
||
|
||
|
||
def get_current_ports(db, names):
|
||
"""返回 {name: port}"""
|
||
rows = db.query(Template).filter(Template.name.in_(names)).all()
|
||
return {r.name: r.port for r in rows}
|
||
|
||
|
||
def update_ports(names: list, port: int, dry_run: bool = False):
|
||
db = SessionLocal()
|
||
try:
|
||
current = get_current_ports(db, names)
|
||
missing = [n for n in names if n not in current]
|
||
if missing:
|
||
print(f"未找到模板: {missing}")
|
||
names = [n for n in names if n in current]
|
||
if not names:
|
||
return False
|
||
|
||
print("当前端口:")
|
||
for n in names:
|
||
print(f" {n}: {current.get(n)}")
|
||
|
||
if dry_run:
|
||
print("\n[DRY-RUN] 未执行修改。去掉 --dry-run 将执行更新。")
|
||
return True
|
||
|
||
updated = 0
|
||
for name in names:
|
||
row = db.query(Template).filter(Template.name == name).first()
|
||
if row is not None and row.port != port:
|
||
row.port = port
|
||
updated += 1
|
||
print(f" 更新 {name} -> port={port}")
|
||
|
||
if updated:
|
||
db.commit()
|
||
print(f"\n已提交: {updated} 条记录 port 已改为 {port}")
|
||
else:
|
||
print("\n无需更新(端口已是目标值)")
|
||
|
||
# 再次查询确认
|
||
after = get_current_ports(db, names)
|
||
print("更新后端口:")
|
||
for n in names:
|
||
print(f" {n}: {after.get(n)}")
|
||
return True
|
||
except Exception as e:
|
||
db.rollback()
|
||
print(f"错误: {e}", file=sys.stderr)
|
||
return False
|
||
finally:
|
||
db.close()
|
||
|
||
|
||
def main():
|
||
parser = argparse.ArgumentParser(description="更新模板端口")
|
||
parser.add_argument(
|
||
"--names",
|
||
type=str,
|
||
default=",".join(DEFAULT_TEMPLATES_8080),
|
||
help="模板名称,逗号分隔,默认: search_agent,search_agent_a2a,search_agent_mcp",
|
||
)
|
||
parser.add_argument(
|
||
"--port",
|
||
type=int,
|
||
default=8080,
|
||
help="目标端口,默认 8080",
|
||
)
|
||
parser.add_argument(
|
||
"--dry-run",
|
||
action="store_true",
|
||
help="仅打印当前端口,不修改",
|
||
)
|
||
args = parser.parse_args()
|
||
names = [n.strip() for n in args.names.split(",") if n.strip()]
|
||
if not names:
|
||
print("请至少指定一个模板名 (--names)")
|
||
sys.exit(1)
|
||
|
||
ok = update_ports(names, args.port, dry_run=args.dry_run)
|
||
sys.exit(0 if ok else 1)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|