Fix a NameError exception in _nat_destination_port

Yeah, it was burried deep but still. Added a unit test just to
quickly exercise this code path.

Change-Id: Ibec3f24483214f8af514c8be512b7c3f3840b32e
This commit is contained in:
Jordan Pittier 2016-10-14 17:08:10 +02:00
parent d2123c20b5
commit acac3b986b
2 changed files with 12 additions and 1 deletions

View File

@ -4137,7 +4137,7 @@ class OpenStackCloud(_normalize.Normalizer):
return port, fixed_address
raise OpenStackCloudException(
"unable to find a free fixed IPv4 address for server "
"{0}".format(server_id))
"{0}".format(server['id']))
# unfortunately a port can have more than one fixed IP:
# we can't use the search_ports filtering for fixed_address as
# they are contained in a list. e.g.

View File

@ -20,6 +20,8 @@ Tests floating IP resource methods for Neutron and Nova-network.
"""
from mock import patch
from shade import exc
from shade import meta
from shade import OpenStackCloud
from shade.tests.fakes import FakeServer
@ -223,3 +225,12 @@ class TestFloatingIP(base.TestCase):
mock_add_auto_ip.assert_called_with(
server_dict, wait=False, timeout=60, reuse=True)
@patch.object(OpenStackCloud, 'search_ports', return_value=[{}])
def test_nat_destination_port_when_no_free_fixed_ip(
self, mock_search_ports):
server = {'id': 42}
self.assertRaisesRegexp(
exc.OpenStackCloudException, 'server 42$',
self.cloud._nat_destination_port, server
)