- 拆模块:CHV 从 cloud/sandbox.py 巨类拆到 cloud/chv/(executor/ pool/config/api_client/ssh_transport/disk/errors),sandbox 只留 兼容 re-export,旧导入路径与新路径是同一对象 - 去重复:goal 解析、host 顶层参数、runner 超时抽成共享 helper, Local 与 CHV 在矩阵输入下结论全等(Docker goal-resume 变体 有意保留内联版,见 PR 描述) - 安全:SSH host key 按 VM 钉死(state_dir/<vm>/known_hosts, ssh-keyscan 首次捕获 TOFU),废除 no + /dev/null;CHV_SSH_USER 空串与 CHV_SSH_PORT 越界直接拒绝,不静默 fallback - execute 语义:只读已运行 VM,未运行报 vm_not_running,不为 status 起 VM - 预热池:registry 落盘、重启载入只当孤儿、reconcile 清理、 损坏 quarantine;条目仍一次性,绝不复用脏 VM - 长任务:VM 中途死亡判 interrupted(断点可续跑);中途心跳 经评估不做(无客内进度信号可采) - #215 未合并:只列复用清单,不复制模块 测试:原 42 项 + 新 24 项全过;相关旧套件与 cloud 全量 1496 项 全过(skipped=4)。验证仍是 mock + 干跑 + 单元测试,未做真机、 压测、安全审计;堆叠于 #216 之上,base 为 feat-cloud-hypervisor。
13 lines
562 B
Python
13 lines
562 B
Python
"""Cloud Hypervisor 执行器的分类失败(叶子模块,不依赖
|
|
cloud.sandbox,避免循环导入)。"""
|
|
|
|
class ChvFailure(RuntimeError):
|
|
"""Cloud Hypervisor 分类失败:RuntimeError 的子类(worker
|
|
现有 except Exception 路径照常捕获),另带 kind 字段供
|
|
审计与失败分类用,绝不笼统只写 failed。kind 取值见
|
|
CloudHypervisorExecutor.preflight / wake_vm 的注释。"""
|
|
|
|
def __init__(self, kind, message):
|
|
super().__init__("chv_failure:%s: %s" % (kind, message))
|
|
self.kind = kind
|