If you manage VMware Horizon instant-clone pools or RDS farms, you’ve probably been in this situation: you need to move a pool to a different portgroup — maybe a VLAN change, a migration to a new segment, or just fixing a misconfiguration. The options are not great. You can either dig through Horizon Console’s pool edit wizard and hope you find the right field, or go via vCenter and touch the golden image directly. Neither is fast, neither is scriptable, and neither gives you a clear view of what all your pools are currently assigned to.
I built Horizon Network Editor to solve exactly that.
What it does
The tool gives you a single window showing every instant-clone desktop pool and RDS farm in your environment, with their current portgroup assignments visible at a glance. Click a row, pick new portgroup(s) from a dropdown, and apply. That’s it.
Key things it handles that the Console doesn’t make easy:
- Multi-portgroup per NIC — Horizon supports assigning multiple portgroups to a single NIC for load-balancing. The tool exposes this properly.
- “From Golden Image” — you can revert a NIC to inheriting its network from the base VM rather than having an explicit assignment.
- Force redeploy — optionally delete all machines/servers immediately after the change so they come back on the new portgroup, rather than waiting for the next lifecycle event.
- Stale snapshot handling — if the golden image snapshot has been deleted from vCenter, the tool falls back to the v2 NIC API which only needs the base VM, so you’re not blocked.
Under the hood
The tool is built in Python 3.11 with PySide6 and talks directly to the Horizon REST API. Network labels are fetched via GET /rest/external/v1/network-labels scoped to the pool’s host/cluster, NIC definitions via GET /rest/external/v1/network-interface-cards, and changes are applied with PUT /rest/inventory/v8/desktop-pools/{id} (v7 for farms). Credentials are stored in the OS keyring — nothing written to disk in plaintext.
It’s packaged as a self-contained binary via PyInstaller, so there’s no Python installation required on the machine running it.
Getting it
Pre-built binaries for macOS, Windows, and Linux are on the GitHub Releases page. Download, unzip, run.
If you want to build from source yourself:
git clone https://github.com/Magneet/horizon_network_editor.git cd horizon_network_editor bash build_mac.sh # or build_win.bat / build_linux.sh
Requires Python 3.11+ and Horizon 2312 or later.
First run
Go to the Configuration tab, enter your connection server, username, and domain, set your password (stored in keyring), and click Test & Save. The tool will discover all pods and connection servers. After that, hit Connect on either the VDI Pools or RDS Farms tab and your environment loads in.
