Prevent raising exception if IP address is set in _hotplug_server

In "_hotplug_server", when the new interfaces is added to the server,
the function tries to configure the Neutron assigned IP address in
this new interface. Although the IP addresses are listed before to
check that the new port IP is not present, as reported in the bug,
sometimes the address is already set when the "ip a add" command is
executed.

Change-Id: I9594482735b482eb477f342dfd9f265a41eb002d
Closes-Bug: #1869899
This commit is contained in:
Rodolfo Alonso Hernandez 2020-03-31 15:34:30 +00:00
parent 8d1974efa5
commit 15d63094c6
1 changed files with 13 additions and 3 deletions

View File

@ -297,9 +297,19 @@ class TestNetworkBasicOps(manager.NetworkScenarioTest):
ip_mask = CONF.network.project_network_mask_bits
# check if the address is not already in use, if not, set it
if ' ' + ip_address + '/' + str(ip_mask) not in ip_output:
ssh_client.exec_command("sudo ip addr add %s/%s dev %s" % (
ip_address, ip_mask, new_nic))
ssh_client.exec_command("sudo ip link set %s up" % new_nic)
try:
ssh_client.exec_command("sudo ip addr add %s/%s dev %s" % (
ip_address, ip_mask, new_nic))
ssh_client.exec_command("sudo ip link set %s up" % new_nic)
except exceptions.SSHExecCommandFailed as exc:
if 'RTNETLINK answers: File exists' in str(exc):
LOG.debug(
'IP address %(ip_address)s is already set in device '
'%(device)s\nPrevious "ip a" output: %(ip_output)s',
{'ip_address': ip_address, 'device': new_nic,
'ip_output': ip_output})
else:
raise exc
def _get_server_nics(self, ssh_client):
reg = re.compile(r'(?P<num>\d+): (?P<nic_name>\w+)[@]?.*:')