tree 593921fffabb2bfa83579a297e7c6fe1c0d3c2d3
parent fd683e81cc776d295548f03a2603aa5fc39758d6
author Matthew Treinish <mtreinish@kortar.org> 1429204249 -0400
committer Matthew Treinish <mtreinish@kortar.org> 1430164279 -0400
gpgsig -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCgAGBQJVPpM6AAoJEP0SoPIUyeF3nwoP/R5MYz1EIvJolq4Qv4Fic1tP
 9tHHj25zH2hKp8stB2AqTRyF58xx4AguAK78onU4oVml+elS2RdK4OlWZzNYok8d
 QmrB4aF9dGwmHzXSxBRKCGeioGfFrMXfMFRto9Y5S8c2Ba1sEKT9CnvGaRMkGB9W
 V6YJ4LstUHpzU8FP3aPNxCHEjpaKP2z7ddVjP17cvwo5EDYRx3Bv/q26LWpV8MW8
 ykZv98z8e//sl01TDtlB9jtHvnQ4/nEJlH9hsbQW1W7GUTkK3JtPQGOHG7kuDb0k
 UMl5pV0ogpIzXyJLTaAoUMATFnNHcVJy9YVdgFSOzJ9qfdPk0WwSUPDF+lYTy3Lm
 LRsLXFOt+IIhg7eMDehEgR/emmwVpRwJwfvESy4/PM9wILi0CVY76vw/oKFg0G51
 YWv6ftEuzEXUWQy+lCOzujje+x0IvoNb2LsUSPbhiKqZe4LuGwxkS5Cq1Gr2vIyy
 KDw6CEz6aMRQCwHjeh/uGW+y3rVwWwuRya/2u9fLiokRwShXQFxWDk/qGK524Kxd
 cTs45kJTc9mAg/XeCoaQgPbhRztT7EDAfJc1eOn0n3qIPgg73fy9PVYUHQ3LgcqH
 VmS5sY0mg902gmbkis44jsqW5Qy7klp84ysumTO6XUYwk0OpPjeu20BLLqrS44rR
 Ztu3Vp46DzUTVFzSRO8l
 =i//W
 -----END PGP SIGNATURE-----

Rework get_network_from_name() function

This commit reworks the logic in the get_network_from_name() function
to make what it's doing a bit easier to follow. Instead of returning
either the expected response or an incomplete response given a failure
this instead will raise an InvalidException instead. The callers of the
function are then updated to handle that exception appropriately.

As part of this it cleans up some uses of the NotFound exception from
tempest-lib. This exception is RestClientException and is only expected
to be used with a 404 response. It was previously just used as a local
exception to trigger the same failure path as if a 404 was received.
For clarity this changes that exception to raise an InvalidConfiguration
instead, because the raises are caused by an invalid network name being
provided in configuration (either through the fixed_network_name option
or the accounts.yaml file) At the same time as this logging calls are
made more consistent.

Change-Id: I709dce36210efa9038ce2d98328fc1740d9bf493
