mirror of
https://github.com/PegaProx/project-pegaprox.git
synced 2026-08-12 15:27:47 +08:00
#410 — Extra CPU Flags: a tri-state (+/-/default) toggle panel in the VM-config Hardware tab that splices a `flags=+aes;-pcid;...` segment into the composite `cpu=` string, mirroring the existing reported-model/level editors. Backend passes `cpu=` through untouched (rides the delta-save). i18n ×7. #426 — ProxLB VM tags drive placement (opt-in per cluster, default off): _derive_proxlb_tag_rules() parses plb_affinity_/plb_anti_affinity_/plb_ignore_/ plb_pin_<node> tags into the existing affinity engine + balancing exclusions + target pins. Wired into _check_affinity_violation, _enforce_affinity_rules, find_migration_candidate and get_best_target_node. New per-cluster `proxlb_tags_enabled` column (schema+migration+load+save+PegaProxConfig+PATCH whitelist) and a Balancing-settings toggle. Off = exact prior behaviour. #413 — Site Recovery: * Test Failover can now bring clones up with all NICs disconnected (link_down) so a DR test can't collide with production IPs — new per-plan `test_disconnect_nics` option (schema+migration+create/update+plan-settings toggle). Runs while the clone is still stopped, so it boots disconnected. * Planned/Failback: fast pre-flight (_target_vmid_exists) short-circuits a doomed qmigrate when the target VMID is already replication-seeded, pointing the operator at Emergency Failover instead of churning (fail-fast, no data loss, no semantic change). * Fix a latent wrapper-unwrap bug: get_vm_config returns {'success','config'} with the flat netN/scsiN keys under config['raw']; the cross-cluster storage-remap loop iterated the wrapper, so every failover silently fell back to default storage. Now reads config['raw']. Same unwrap applied to the new NIC-disconnect helper. Verified: 22/22 in-process assertions (tag derivation for all 4 tag types, pin→affinity-violation integration, both DB column migrations + save/load round-trips, NIC-disconnect against the real get_vm_config shape, VMID probe), CPU-flag splice invariants, frontend Babel build clean, adversarial review (OFF-path no-op + SQL positional-INSERT alignment confirmed).