From 4b23b68a651d385ab7e99165299e5fcc323b80d3 Mon Sep 17 00:00:00 2001 From: Pavel Bondar Date: Tue, 20 Oct 2015 18:59:16 +0300 Subject: [PATCH] Deepcopy port dict in dhcp rpc handler Added deepcopy of port dict in dhcp rpc handler to prevent operating on changed dict in case of raising retry request. Change-Id: Ie1816fe819ba77061e71bd61de2fd9ebe4574cef Related-Bug: #1494351 (cherry picked from commit a7b976e6529b744dd01f26f9fa7769518fe7b20b) --- neutron/api/rpc/handlers/dhcp_rpc.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/neutron/api/rpc/handlers/dhcp_rpc.py b/neutron/api/rpc/handlers/dhcp_rpc.py index 9eb23f8eb79..a27db40b6de 100644 --- a/neutron/api/rpc/handlers/dhcp_rpc.py +++ b/neutron/api/rpc/handlers/dhcp_rpc.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import copy import itertools import operator @@ -217,7 +218,9 @@ class DhcpRpcCallback(object): """ host = kwargs.get('host') - port = kwargs.get('port') + # Note(pbondar): Create deep copy of port to prevent operating + # on changed dict if RetryRequest is raised + port = copy.deepcopy(kwargs.get('port')) LOG.debug('Create dhcp port %(port)s ' 'from %(host)s.', {'port': port,