diff --git a/neutron/plugins/ml2/plugin.py b/neutron/plugins/ml2/plugin.py index 294deb668a..34e5add14c 100644 --- a/neutron/plugins/ml2/plugin.py +++ b/neutron/plugins/ml2/plugin.py @@ -939,6 +939,10 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2, return self._bind_port_if_needed(port_context) def update_port_status(self, context, port_id, status, host=None): + """ + Returns port_id (non-truncated uuid) if the port exists. + Otherwise returns None. + """ updated = False session = context.session # REVISIT: Serialize this operation with a semaphore to @@ -951,7 +955,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2, if not port: LOG.warning(_("Port %(port)s updated up by agent not found"), {'port': port_id}) - return False + return None if port.status != status: original_port = self._make_port_dict(port) port.status = status @@ -967,7 +971,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2, if updated: self.mechanism_manager.update_port_postcommit(mech_context) - return True + return port['id'] def port_bound_to_host(self, context, port_id, host): port_host = db.get_port_binding_host(port_id) diff --git a/neutron/plugins/ml2/rpc.py b/neutron/plugins/ml2/rpc.py index 553ba1f1f2..0ee8c00999 100644 --- a/neutron/plugins/ml2/rpc.py +++ b/neutron/plugins/ml2/rpc.py @@ -159,9 +159,9 @@ class RpcCallbacks(n_rpc.RpcCallback, return {'device': device, 'exists': port_exists} - port_exists = plugin.update_port_status(rpc_context, port_id, - q_const.PORT_STATUS_DOWN, - host) + port_exists = bool(plugin.update_port_status(rpc_context, port_id, + q_const.PORT_STATUS_DOWN, + host)) return {'device': device, 'exists': port_exists} @@ -182,9 +182,9 @@ class RpcCallbacks(n_rpc.RpcCallback, {'device': device, 'host': host}) return - plugin.update_port_status(rpc_context, port_id, - q_const.PORT_STATUS_ACTIVE, - host) + port_id = plugin.update_port_status(rpc_context, port_id, + q_const.PORT_STATUS_ACTIVE, + host) l3plugin = manager.NeutronManager.get_service_plugins().get( service_constants.L3_ROUTER_NAT) if l3plugin: