Public bug reported: How to reproduce: * Create a network. * Add two ports to this network. * Create a QoS policy. * Assign the QoS policy to this network. * Add a max-bw rule to this policy --> Only one port of this network will receive the new added rule.
The method that updates a QoS policy when, for example, a new rule is added, calls ``update_network`` [1] with a set of defined rules in a dictionary. This method will call ``_update_port_qos_rules`` [2] with this dictionary as an argument. The problem is that in [3], this dictionary is modified when it should be used in a loop of calls for other ports. This argument ``qos_rules`` should not be changed; instead a copy should be created. [1]https://github.com/openstack/neutron/blob/8152b83384c45d48a7256dfb40a2eb06852d5295/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py#L519-L520 [2]https://github.com/openstack/neutron/blob/8152b83384c45d48a7256dfb40a2eb06852d5295/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py#L392-L393 [3]https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py#L309-L310 ** Affects: neutron Importance: Medium Assignee: Rodolfo Alonso (rodolfo-alonso-hernandez) Status: Confirmed ** Tags: ovn qos ** Changed in: neutron Importance: Undecided => Medium ** Changed in: neutron Assignee: (unassigned) => Rodolfo Alonso (rodolfo-alonso-hernandez) -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/2099706 Title: [OVN][QoS] QoS rule addition to an exiting net work policy only updates the first port Status in neutron: Confirmed Bug description: How to reproduce: * Create a network. * Add two ports to this network. * Create a QoS policy. * Assign the QoS policy to this network. * Add a max-bw rule to this policy --> Only one port of this network will receive the new added rule. The method that updates a QoS policy when, for example, a new rule is added, calls ``update_network`` [1] with a set of defined rules in a dictionary. This method will call ``_update_port_qos_rules`` [2] with this dictionary as an argument. The problem is that in [3], this dictionary is modified when it should be used in a loop of calls for other ports. This argument ``qos_rules`` should not be changed; instead a copy should be created. [1]https://github.com/openstack/neutron/blob/8152b83384c45d48a7256dfb40a2eb06852d5295/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py#L519-L520 [2]https://github.com/openstack/neutron/blob/8152b83384c45d48a7256dfb40a2eb06852d5295/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py#L392-L393 [3]https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py#L309-L310 To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/2099706/+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

