Don't raise error when removing not existing IP address

When privileged delete_ip_address function is called to delete
IP address which is already not configured on device, it should
not fail with any error.

Conflicts:
    neutron/tests/functional/agent/linux/test_ip_lib.py

Change-Id: I9247ac899a76e5d9a2962d2cb81279f2d6f16c0b
Closes-Bug: #1757259
(cherry picked from commit bbe1bac3f7)
This commit is contained in:
Sławek Kapłoński 2018-03-20 21:42:26 +01:00 committed by Slawek Kaplonski
parent 3f7ff45e73
commit 68d6a58dd1
1 changed files with 15 additions and 6 deletions

View File

@ -139,12 +139,21 @@ def add_ip_address(ip_version, ip, prefixlen, device, namespace, scope,
@privileged.default.entrypoint
def delete_ip_address(ip_version, ip, prefixlen, device, namespace):
family = _IP_VERSION_FAMILY_MAP[ip_version]
_run_iproute_addr("delete",
device,
namespace,
address=ip,
mask=prefixlen,
family=family)
try:
_run_iproute_addr("delete",
device,
namespace,
address=ip,
mask=prefixlen,
family=family)
except NetlinkError as e:
# when trying to delete a non-existent IP address, pyroute2 raises
# NetlinkError with code EADDRNOTAVAIL (99, 'Cannot assign requested
# address')
# this shouldn't raise an error
if e.code == errno.EADDRNOTAVAIL:
return
raise
@privileged.default.entrypoint