(extracted from here https://bugs.launchpad.net/fuel/+bug/1484181/comments/3)
Also reproduced in the case when number of reserved vips in network_roles.yaml (http://paste.openstack.org/show/414041/)
bigger then number of accessible public addresses in the pool.
{"build_id": "2015-08-12_17-24-26", "build_number": "165", "release_versions": {"2015.1.0-7.0": {"VERSION": {"build_id": "2015-08-12_17-24-26", "build_number": "165", "api": "1.0", "fuel-library_sha": "1176b634eeafb8465a88ff357fdcf40005fba610", "nailgun_sha": "68642a8207d6f12543f244bab0c130e2510536ee", "feature_groups": ["mirantis"], "fuel-nailgun-agent_sha": "e01693992d7a0304d926b922b43f3b747c35964c", "openstack_version": "2015.1.0-7.0", "fuel-agent_sha": "57145b1d8804389304cd04322ba0fb3dc9d30327", "production": "docker", "python-fuelclient_sha": "26fc025e0fc5791b62e5ed8561a6016bf8a406bc", "astute_sha": "e1d3a435e5df5b40cbfb1a3acf80b4176d15a2dc", "fuel-ostf_sha": "58220583f10fa47f12291488ef77854809c68310", "release": "7.0", "fuelmain_sha": "67e5214c0dc5d4ba6da4ae651cef9934800459a9"}}}, "auth_required": true, "api": "1.0", "fuel-library_sha": "1176b634eeafb8465a88ff357fdcf40005fba610", "nailgun_sha": "68642a8207d6f12543f244bab0c130e2510536ee", "feature_groups": ["mirantis"], "fuel-nailgun-agent_sha": "e01693992d7a0304d926b922b43f3b747c35964c", "openstack_version": "2015.1.0-7.0", "fuel-agent_sha": "57145b1d8804389304cd04322ba0fb3dc9d30327", "production": "docker", "python-fuelclient_sha": "26fc025e0fc5791b62e5ed8561a6016bf8a406bc", "astute_sha": "e1d3a435e5df5b40cbfb1a3acf80b4176d15a2dc", "fuel-ostf_sha": "58220583f10fa47f12291488ef77854809c68310", "release": "7.0", "fuelmain_sha": "67e5214c0dc5d4ba6da4ae651cef9934800459a9"}
Ok, the reason is obvious: OutOfIPs exception is thrown, it hasn't been catched.. and here we are - 500 internal error.
Obviously, we MUST return something more meaningful, like 400 Bad Request with proper error message. But that won't help from all the problem, since fuel UI won't be able to update network configuration and won't allow us to preview our cluster.
It looks like we should forbid to enable Plugins if it requires more VIPs than we have in the pool, but which pool we should check? With network templating we can re-assign network role to any network, so checking it agains default network is a wrong approach.
Guys, could someone suggest something another?