← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1702048] Re: neutron update network with no-qos-policy, but it not take effort at ovs-agent

 

this bug has be resolved in master branch and backport to ocata stable
branch, https://bugs.launchpad.net/neutron/+bug/1649503

** Changed in: neutron
       Status: New => Invalid

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

Title:
  neutron update network with no-qos-policy, but it not take effort at
  ovs-agent

Status in neutron:
  Invalid

Bug description:
  My test environment is ocata. When I detached a network with qos-
  policy, I found that the qos ratelimit rule still exist at ovs. I have
  analysed the code of update_network in ml2 and found that neutron-
  server would notify ovs-agent when need_network_update_notify is true.
  The value of need_network_update_notify depends on the attribute of
  qos_policy_id in updated_network variable. The attribute value in
  "updated_network"  is based on the qos_policy_binding of network
  model.

  The update_network function would call "process_update_network"
  function to detach relationship between qos-policy and network, then
  call "get_network" to create a new dict of network info. But I found
  the "qos_policy_binding" still exist in network model. That means the
  detach operation didn't execute completely before the creation of
  "updated_network".

  I know the bug is difficult to recur, but it is real.....
  How can I resolve it ?

  Here is the code:

  neutron/plugins/ml2/plugin.py
      def update_network(self, context, id, network):
          net_data = network[attributes.NETWORK]
          provider._raise_if_updates_provider_attributes(net_data)
        session = context.session
        with session.begin(subtransactions=True):
            original_network = super(Ml2Plugin, self).get_network(context, id)
          updated_network = super(Ml2Plugin,self).update_network(context,id,
                                                                                 network)
          # detach relationship between qos-policy and network
          self.extension_manager.process_update_network(context, net_data,
                                                               updated_network)
          self._process_l3_update(context, updated_network, net_data)
          self.type_manager.extend_network_dict_provider(context,
                                 updated_network)
          # get_network will check qos_policy_binding in network model
          updated_network = self.get_network(context, id)
          need_network_update_notify = (
              qos_consts.QOS_POLICY_ID in net_data and
            original_network[qos_consts.QOS_POLICY_ID] !=
            updated_network[qos_consts.QOS_POLICY_ID])

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


References