Alternative to this could be a round-robin distribution of GWs to ports. This sounds deceivingly simple, but we need to keep in mind that it's not only about evenly distributing GWs to ports, it's also about balanced distribution of priorities these GWs receive. We need to ensure that high priority is not accumulated on single GW.
As pointed out by @dceara https://github.com/ovn-org/ovn-heater/pull/179#discussion_r1373771371, ovn-heater run should be consistent and reproducible, that's why random assignment of GW chassis to router ports in Openstack CMS is not the best approach.
Alternative to this could be a round-robin distribution of GWs to ports. This sounds deceivingly simple, but we need to keep in mind that it's not only about evenly distributing GWs to ports, it's also about balanced distribution of priorities these GWs receive. We need to ensure that high priority is not accumulated on single GW.
Example of bad distribution:
In above example, 3 GWs are evenly distributed between 3 ports, but all the ports prioritize
gw1