Public bug reported:

In plugins.ml2.plugin.Ml2Plugin.delete_port we are calling 
L3RouterPlugin.disassociate_floatingips 
(db.l3_db.L3_NAT_dbonly_mixin.disassociate_floatingips) which at the end calls 
neutron_lib.callbacks.registry.publish to send FLOATING_IP AFTER_UPDATE 
notification.
Because call to disassociate_floatingips is performed within context of DB 
transaction in delete_port,
 plugins.ml2.ovo_rpc._ObjectChangeHandler._is_session_semantic_violated check 
in plugins.ml2.ovo_rpc._ObjectChangeHandler.handle_event listening to all 
AFTER_ notifications, will log a following warning and PREVENT notification 
from being sent at all.

WARNING neutron.plugins.ml2.ovo_rpc [req-6588b226-81b6-463d-a376-45488162671f 
req-3783a80a-16f1-468e-ae74-f9a9b8db8eca 
tempest-ServersWithSpecificFlavorTestJSON-1266243365 
tempest-ServersWithSpecificFlavorTestJSON-1266243365] This handler is supposed 
to handle AFTER events, as in 'AFTER it's committed', not BEFORE. Offending 
resource event: floatingip, after_update. Location:
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/greenthread.py", 
line 219, in main
    result = function(*args, **kwargs)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", 
line 789, in process_request
    proto.__init__(conn_state, self)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", 
line 343, in __init__
    self.handle()
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", 
line 376, in handle
    self.handle_one_request()
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", 
line 450, in handle_one_request
    self.handle_one_response()
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", 
line 547, in handle_one_response
    result = self.application(self.environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/paste/urlmap.py", 
line 216, in __call__
    return app(environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
129, in __call__
    resp = self.call_func(req, *args, **kw)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
193, in call_func
    return self.func(req, *args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_middleware/base.py", 
line 131, in __call__
    response = req.get_response(self.application)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1314, in send
    application, catch_exc_info=False)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1278, in call_application
    app_iter = application(self.environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
129, in __call__
    resp = self.call_func(req, *args, **kw)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
193, in call_func
    return self.func(req, *args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_middleware/base.py", 
line 131, in __call__
    response = req.get_response(self.application)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1314, in send
    application, catch_exc_info=False)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1278, in call_application
    app_iter = application(self.environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
129, in __call__
    resp = self.call_func(req, *args, **kw)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
193, in call_func
    return self.func(req, *args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_middleware/request_id.py",
 line 58, in __call__
    response = req.get_response(self.application)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1314, in send
    application, catch_exc_info=False)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1278, in call_application
    app_iter = application(self.environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
129, in __call__
    resp = self.call_func(req, *args, **kw)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
193, in call_func
    return self.func(req, *args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_middleware/catch_errors.py",
 line 40, in __call__
    response = req.get_response(self.application)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1314, in send
    application, catch_exc_info=False)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1278, in call_application
    app_iter = application(self.environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
129, in __call__
    resp = self.call_func(req, *args, **kw)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
193, in call_func
    return self.func(req, *args, **kwargs)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/osprofiler/web.py", 
line 112, in __call__
    return request.get_response(self.application)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1314, in send
    application, catch_exc_info=False)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1278, in call_application
    app_iter = application(self.environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
129, in __call__
    resp = self.call_func(req, *args, **kw)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
193, in call_func
    return self.func(req, *args, **kwargs)
  File 
"/opt/stack/keystonemiddleware/keystonemiddleware/auth_token/__init__.py", line 
335, in __call__
    response = req.get_response(self._app)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1314, in send
    application, catch_exc_info=False)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", 
line 1278, in call_application
    app_iter = application(self.environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
143, in __call__
    return resp(environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
143, in __call__
    return resp(environ, start_response)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/routes/middleware.py", 
line 141, in __call__
    response = self.app(environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", line 
143, in __call__
    return resp(environ, start_response)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/pecan/middleware/recursive.py",
 line 56, in __call__
    return self.application(environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/pecan/core.py", 
line 840, in __call__
    return super(Pecan, self).__call__(environ, start_response)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/pecan/core.py", 
line 683, in __call__
    self.invoke_controller(controller, args, kwargs, state)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/pecan/core.py", 
line 574, in invoke_controller
    result = controller(*args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 135, in wrapped
    return f(*args, **kwargs)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_db/api.py", 
line 142, in wrapper
    return f(*args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 179, in wrapped
    return f(*dup_args, **dup_kwargs)
  File "/opt/stack/neutron/neutron/pecan_wsgi/controllers/utils.py", line 76, 
in wrapped
    return f(*args, **kwargs)
  File "/opt/stack/neutron/neutron/pecan_wsgi/controllers/utils.py", line 115, 
in wrapped
    f(*args, **kwargs)
  File "/opt/stack/neutron/neutron/pecan_wsgi/controllers/resource.py", line 
81, in delete
    return self.plugin_deleter(*deleter_args)
  File "/opt/stack/neutron/neutron/common/utils.py", line 668, in inner
    return f(self, context, *args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 233, in wrapped
    return method(*args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 135, in wrapped
    return f(*args, **kwargs)
  File "/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_db/api.py", 
line 142, in wrapper
    return f(*args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 179, in wrapped
    return f(*dup_args, **dup_kwargs)
  File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py", line 1809, in 
delete_port
    context, id, do_notify=False)
  File "/opt/stack/neutron/neutron/db/l3_db.py", line 2115, in 
disassociate_floatingips
    context, port_id, do_notify)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 233, in wrapped
    return method(*args, **kwargs)
  File "/opt/stack/neutron/neutron/db/l3_db.py", line 1702, in 
disassociate_floatingips
    metadata={'association_event': False}))
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/callbacks/registry.py",
 line 60, in publish
    _get_callback_manager().publish(resource, event, trigger, payload=payload)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/callbacks/manager.py",
 line 149, in publish
    return self.notify(resource, event, trigger, payload=payload)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/utils.py", 
line 102, in _wrapped
    return function(*args, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/callbacks/manager.py",
 line 167, in notify
    errors = self._notify_loop(resource, event, trigger, **kwargs)
  File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/callbacks/manager.py",
 line 197, in _notify_loop
    callback(resource, event, trigger, **kwargs)
  File "/opt/stack/neutron/neutron/plugins/ml2/ovo_rpc.py", line 95, in 
handle_payload_event
    payload.context, resource, event):
  File "/opt/stack/neutron/neutron/plugins/ml2/ovo_rpc.py", line 83, in 
_is_session_semantic_violated
    stack = traceback.extract_stack()

** Affects: neutron
     Importance: Undecided
     Assignee: Szymon Wróblewski (bluex)
         Status: New

** Changed in: neutron
     Assignee: (unassigned) => Szymon Wróblewski (bluex)

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1954785

Title:
  Session semantic violated when sending FloatingIP disassociation
  update during port deletion

Status in neutron:
  New

Bug description:
  In plugins.ml2.plugin.Ml2Plugin.delete_port we are calling 
L3RouterPlugin.disassociate_floatingips 
(db.l3_db.L3_NAT_dbonly_mixin.disassociate_floatingips) which at the end calls 
neutron_lib.callbacks.registry.publish to send FLOATING_IP AFTER_UPDATE 
notification.
  Because call to disassociate_floatingips is performed within context of DB 
transaction in delete_port,
   plugins.ml2.ovo_rpc._ObjectChangeHandler._is_session_semantic_violated check 
in plugins.ml2.ovo_rpc._ObjectChangeHandler.handle_event listening to all 
AFTER_ notifications, will log a following warning and PREVENT notification 
from being sent at all.

  WARNING neutron.plugins.ml2.ovo_rpc [req-6588b226-81b6-463d-a376-45488162671f 
req-3783a80a-16f1-468e-ae74-f9a9b8db8eca 
tempest-ServersWithSpecificFlavorTestJSON-1266243365 
tempest-ServersWithSpecificFlavorTestJSON-1266243365] This handler is supposed 
to handle AFTER events, as in 'AFTER it's committed', not BEFORE. Offending 
resource event: floatingip, after_update. Location:
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/greenthread.py", 
line 219, in main
      result = function(*args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", line 
789, in process_request
      proto.__init__(conn_state, self)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", line 
343, in __init__
      self.handle()
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", line 
376, in handle
      self.handle_one_request()
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", line 
450, in handle_one_request
      self.handle_one_response()
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/eventlet/wsgi.py", line 
547, in handle_one_response
      result = self.application(self.environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/paste/urlmap.py", 
line 216, in __call__
      return app(environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 193, in call_func
      return self.func(req, *args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_middleware/base.py", 
line 131, in __call__
      response = req.get_response(self.application)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1314, in send
      application, catch_exc_info=False)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 193, in call_func
      return self.func(req, *args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_middleware/base.py", 
line 131, in __call__
      response = req.get_response(self.application)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1314, in send
      application, catch_exc_info=False)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 193, in call_func
      return self.func(req, *args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_middleware/request_id.py",
 line 58, in __call__
      response = req.get_response(self.application)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1314, in send
      application, catch_exc_info=False)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 193, in call_func
      return self.func(req, *args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_middleware/catch_errors.py",
 line 40, in __call__
      response = req.get_response(self.application)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1314, in send
      application, catch_exc_info=False)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 193, in call_func
      return self.func(req, *args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/osprofiler/web.py", line 
112, in __call__
      return request.get_response(self.application)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1314, in send
      application, catch_exc_info=False)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 193, in call_func
      return self.func(req, *args, **kwargs)
    File 
"/opt/stack/keystonemiddleware/keystonemiddleware/auth_token/__init__.py", line 
335, in __call__
      response = req.get_response(self._app)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1314, in send
      application, catch_exc_info=False)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/request.py", line 
1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 143, in __call__
      return resp(environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 143, in __call__
      return resp(environ, start_response)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/routes/middleware.py", 
line 141, in __call__
      response = self.app(environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/webob/dec.py", 
line 143, in __call__
      return resp(environ, start_response)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/pecan/middleware/recursive.py",
 line 56, in __call__
      return self.application(environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/pecan/core.py", 
line 840, in __call__
      return super(Pecan, self).__call__(environ, start_response)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/pecan/core.py", 
line 683, in __call__
      self.invoke_controller(controller, args, kwargs, state)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/pecan/core.py", 
line 574, in invoke_controller
      result = controller(*args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 135, in wrapped
      return f(*args, **kwargs)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_db/api.py", 
line 142, in wrapper
      return f(*args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 179, in wrapped
      return f(*dup_args, **dup_kwargs)
    File "/opt/stack/neutron/neutron/pecan_wsgi/controllers/utils.py", line 76, 
in wrapped
      return f(*args, **kwargs)
    File "/opt/stack/neutron/neutron/pecan_wsgi/controllers/utils.py", line 
115, in wrapped
      f(*args, **kwargs)
    File "/opt/stack/neutron/neutron/pecan_wsgi/controllers/resource.py", line 
81, in delete
      return self.plugin_deleter(*deleter_args)
    File "/opt/stack/neutron/neutron/common/utils.py", line 668, in inner
      return f(self, context, *args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 233, in wrapped
      return method(*args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 135, in wrapped
      return f(*args, **kwargs)
    File "/opt/stack/neutron.venv/lib/python3.6/site-packages/oslo_db/api.py", 
line 142, in wrapper
      return f(*args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 179, in wrapped
      return f(*dup_args, **dup_kwargs)
    File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py", line 1809, in 
delete_port
      context, id, do_notify=False)
    File "/opt/stack/neutron/neutron/db/l3_db.py", line 2115, in 
disassociate_floatingips
      context, port_id, do_notify)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/api.py", 
line 233, in wrapped
      return method(*args, **kwargs)
    File "/opt/stack/neutron/neutron/db/l3_db.py", line 1702, in 
disassociate_floatingips
      metadata={'association_event': False}))
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/callbacks/registry.py",
 line 60, in publish
      _get_callback_manager().publish(resource, event, trigger, payload=payload)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/callbacks/manager.py",
 line 149, in publish
      return self.notify(resource, event, trigger, payload=payload)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/db/utils.py", 
line 102, in _wrapped
      return function(*args, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/callbacks/manager.py",
 line 167, in notify
      errors = self._notify_loop(resource, event, trigger, **kwargs)
    File 
"/opt/stack/neutron.venv/lib/python3.6/site-packages/neutron_lib/callbacks/manager.py",
 line 197, in _notify_loop
      callback(resource, event, trigger, **kwargs)
    File "/opt/stack/neutron/neutron/plugins/ml2/ovo_rpc.py", line 95, in 
handle_payload_event
      payload.context, resource, event):
    File "/opt/stack/neutron/neutron/plugins/ml2/ovo_rpc.py", line 83, in 
_is_session_semantic_violated
      stack = traceback.extract_stack()

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1954785/+subscriptions


-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to