feat: CHV 审核修复(P0+P1,堆叠于 #230)
P0:seed 磁盘 CIDATA ISO 挂进 VmConfig 第二块只读盘; restore provisioned 下复用钉死 known_hosts、缺失 fail-fast 绝不 keyscan;preflight 拦截 CHV_DISK_MODE=reuse(显式 实验二次确认 + 审计放行);SSH 目标选客机 IP 方案(显式 host > net 静态 ip > 显式转发宣称回环,三者皆无 fail-fast)。 P1:网关 extra_env 经 SSH env 前缀注入、worker 守卫收窄到 Local/CHV;取消/清理/看门狗接 CHV 通用路径;WarmPool acquire 内 resume;容量门持久化计数;磁盘配额总量+余量 与已存在磁盘校验重拷;API 按 Content-Length 验完整性; 快照 file:// 验落盘再 shutdown;execute 死端口归类 vm_not_running。 P2 全部排除未做(用户范围收窄令,留待以后一轨)。 测试:原 84 + 新增 29 = 113 项,mock,无真 VM。
This commit is contained in:
1 parent
22b83f118a
commit
9771ed9e8c
13 files changed
+1231
-128
No files matched your search
@@ -93,6 +93,20 @@ def build_chv_config(params, env):
|
||||
if params.get("cpuinfo_path") is not None else "/proc/cpuinfo"
|
||||
ch_remote = params.get("ch_remote") or env.get("CHV_REMOTE") \
|
||||
or "ch-remote"
|
||||
# P0-4 SSH 目标解析(feat-chv-fix):显式 CHV_SSH_HOST 优先;
|
||||
# 其次取 VmConfig net 首个带 ip 的条目(静态 tap 客机 IP,
|
||||
# 即选定的客机 IP 发现方案);两者皆无时只有显式
|
||||
# CHV_SSH_FORWARD=1 才允许回环 127.0.0.1(运维宣称宿主
|
||||
# NAT 已把该端口转发到客机 sshd),否则执行器在 wake/
|
||||
# wait 时报 ssh_target_undeclared,绝不无条件假设回环能通。
|
||||
# vsock 未选:需客内 agent + 宿主代理两套新代码(#216 已
|
||||
# 否决);纯 NAT 方案未选:DNAT 是宿主防火墙外部状态,
|
||||
# 执行器代码既不能创建也不能校验它,写进代码仍是假保证。
|
||||
ssh_host = params.get("ssh_host") or env.get("CHV_SSH_HOST")
|
||||
ssh_forward = env.get("CHV_SSH_FORWARD") == "1"
|
||||
# P0-3:reuse 实验二次确认(名字即带实验含义)。
|
||||
reuse_experiment = env.get(
|
||||
"CHV_REUSE_SINGLE_TENANT_EXPERIMENT") == "1"
|
||||
model = params.get("model")
|
||||
try:
|
||||
max_vms = int(env.get("CHV_MAX_VMS") or 4)
|
||||
@@ -145,6 +159,8 @@ def build_chv_config(params, env):
|
||||
net_json=net_json, kvm_path=kvm_path,
|
||||
cpuinfo_path=cpuinfo_path, ch_remote=ch_remote, model=model,
|
||||
max_vms=max_vms, disk_mode=disk_mode, disk_gb=disk_gb,
|
||||
ssh_host=ssh_host, ssh_forward=ssh_forward,
|
||||
reuse_experiment=reuse_experiment,
|
||||
egress_proxy=egress_proxy,
|
||||
allow_direct_egress=allow_direct_egress,
|
||||
host_key_mode=host_key_mode,
|
||||
|
||||
Reference in new issue
Block a user