]> 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, 15 Oct 2014 07:44:40 +0000 (13:14 +0530)
commit7ea605df3ac71dc568194bcd5eaf1c115008e1ee
treecaad751f4dbffd8af56e464d58708072f5f72705
parente95c76bd983387727144b36c032d9b161ff4826d
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
neutron/api/rpc/handlers/dhcp_rpc.py
neutron/tests/unit/test_dhcp_rpc.py