return self._bind_port_if_needed(port_context)
- def update_port_status(self, context, port_id, status, host=None):
+ def update_port_status(self, context, port_id, status, host=None,
+ network=None):
"""
Returns port_id (non-truncated uuid) if the port exists.
Otherwise returns None.
+ network can be passed in to avoid another get_network call if
+ one was already performed by the caller.
"""
updated = False
session = context.session
original_port = self._make_port_dict(port)
port.status = status
updated_port = self._make_port_dict(port)
- network = self.get_network(context,
- original_port['network_id'])
+ network = network or self.get_network(
+ context, original_port['network_id'])
levels = db.get_binding_levels(session, port.id,
port.port_binding.host)
mech_context = driver_context.PortContext(
port_id)
return
original_port = self._make_port_dict(port)
- network = self.get_network(context,
- original_port['network_id'])
+ network = network or self.get_network(
+ context, original_port['network_id'])
port.status = db.generate_dvr_port_status(session, port['id'])
updated_port = self._make_port_dict(port)
levels = db.get_binding_levels(session, port_id, host)
plugin.update_port(ctx, port['port']['id'], port)
self.assertTrue(sg_member_update.called)
+ def test_update_port_status_with_network(self):
+ ctx = context.get_admin_context()
+ plugin = manager.NeutronManager.get_plugin()
+ with self.port() as port:
+ net = plugin.get_network(ctx, port['port']['network_id'])
+ with mock.patch.object(plugin, 'get_network') as get_net:
+ plugin.update_port_status(ctx, port['port']['id'], 'UP',
+ network=net)
+ self.assertFalse(get_net.called)
+
def test_update_port_mac(self):
self.check_update_port_mac(
host_arg={portbindings.HOST_ID: HOST},