]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commit
Fix KeyError in dhcp_rpc when plugin.port_update raise exception
authorNuman Siddique <numan.siddique@enovance.com>
Sat, 11 Oct 2014 12:08:05 +0000 (17:38 +0530)
committerNuman Siddique <numan.siddique@enovance.com>
Wed, 12 Nov 2014 12:42:05 +0000 (18:12 +0530)
commitb0d3e7423c2b0eb95a1df00ba479cd9ed896c116
treeee5cbd24a60f8367acf16e81c837a7b6530d89a0
parent44fe2d924327b8c8de17e59ad1b925fd11cc017b
Fix KeyError in dhcp_rpc when plugin.port_update raise exception

KeyError exception is seen because of following reasons

* DhcpRpcCallback._port_action() is called by two functions
   -  DhcpRpcCallback.create_dchp_port()
   -  DhcpRpcCallback.update_dhcp_port()

* When create_dhcp_port() function calls _port_action(), the
  function argument 'port' will have the body as
  {'port': {'network_id': foo_network_id, 'fixed_ips': [..] ...}

* When update_dhcp_port() function calls _port_action(), the
  function argument 'port' will have the body as
  {'id': port_id, 'port': {{'port': {'network_id': foo_network_id,
            'fixed_ips': [..] ...}}

* If an exception occurs when _port_action() calls plugin.create_port(),
  network id is accessed as
  net_id = port['port']['network_id']

* If an exception occurs when _port_action() calls plugin.update_port(),
  network id is accessed as
  net_id = port['port']['network_id']
  which is causing the KeyError. network_id should have been accessed as
  net_id = port['port']['port']['network_id']

This patch fixes the issue by making the _port_action() take the
same port body. update_dhcp_port() insteading of passing the port_id
and port information in a single argument, it now adds port_id
in the port body itself.

Change-Id: I70b92fa20b421b05ca2053a9a57f62db726f7625
Closes-bug: #1378508
(cherry picked from commit 7ea605df3ac71dc568194bcd5eaf1c115008e1ee)
neutron/api/rpc/handlers/dhcp_rpc.py
neutron/tests/unit/test_dhcp_rpc.py