During subnet update neutron validates, if gateway_ip is passed in the PUT request and if it is, validates if old gateway_ip isn't already allocated to some router's port. If it is, Neutron will forbid to update subnet. That's totally valid behavior but in case when "new" gateway_ip is actually the same as old one Neutron should not raise exception and allow to update subnet. It may be useful for example for some automation tools, like Heat and Tripleo which will not need to have additional logic to check if gateway_ip is actually changed or not and if it should be eventually cleaned manually. This came from the bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=2032295
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Moderate: Red Hat OpenStack Platform 16.1 (openstack-neutron) security update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2022:0990