← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1815618] [NEW] cannot update qos rule

 

Public bug reported:

This bug seems to be combination of problems on both client and server
sides. So we may need to add pyhton-neutronclient and/or python-
openstackclient as an affected component. I'll do that as soon as I
manage to locate which one contains the client side bug. But this report
will be good to track the overall problem.

First the reproduction:

openstack network qos policy create policy0

openstack network qos rule create policy0 --type minimum-bandwidth --min-kbps 1000 --egress # 71a84995-cccd-4f09-9c3d-b1caa18ff363
openstack network qos rule set policy0 71a84995-cccd-4f09-9c3d-b1caa18ff363 --min-kbps 1001 --egress
-> works as expected

# make sure we only have one rule of the type
openstack network qos rule delete policy0 71a84995-cccd-4f09-9c3d-b1caa18ff363

openstack network qos rule create policy0 --type minimum-bandwidth --min-kbps 1000 --ingress # 1155c1c8-f9a7-4954-b195-9f58c8e18b4d
openstack network qos rule set policy0 1155c1c8-f9a7-4954-b195-9f58c8e18b4d --min-kbps 1001 --ingress
-> works as expected

openstack network qos rule delete policy0
1155c1c8-f9a7-4954-b195-9f58c8e18b4d

# create the ingress/egress pair at once
openstack network qos rule create policy0 --type minimum-bandwidth --min-kbps 1000 --egress # f392837a-09e2-4b5e-8c29-86670797679e
openstack network qos rule create policy0 --type minimum-bandwidth --min-kbps 1000 --ingress # 77dae223-b787-4943-bb45-c42424fd29ec

# This is the bug. As we'll see later the trigger is a client-side problem, but I don't think neutron-server should return 500 Internal Server Error. The malformed input should be caught earlier and a 4xx response should be given.
openstack network qos rule set policy0 f392837a-09e2-4b5e-8c29-86670797679e --min-kbps 1001 --egress
Failed to set Network QoS rule ID "f392837a-09e2-4b5e-8c29-86670797679e": HttpException: 500: Server Error for url: http://100.109.0.20:9696/v2.0/qos/policies/188a2f59-ab90-41a3-9e6f-58e641a34544/minimum_bandwidth_rules/f392837a-09e2-4b5e-8c29-86670797679e, Request Failed: internal server error while processing your request.

openstack network qos rule set policy0 77dae223-b787-4943-bb45-c42424fd29ec --min-kbps 1001 --ingress
Failed to set Network QoS rule ID "77dae223-b787-4943-bb45-c42424fd29ec": HttpException: 500: Server Error for url: http://100.109.0.20:9696/v2.0/qos/policies/188a2f59-ab90-41a3-9e6f-58e641a34544/minimum_bandwidth_rules/77dae223-b787-4943-bb45-c42424fd29ec, Request Failed: internal server error while processing your request.

# the same rule update can be done by neutronclient, but only for the egress direction
neutron qos-minimum-bandwidth-rule-update f392837a-09e2-4b5e-8c29-86670797679e policy0 --min-kbps 1001 --direction egress
-> works as expected

# this failure is expected because neutronclient was long deprecated already when the ingress direction was introduced
neutron qos-minimum-bandwidth-rule-update 77dae223-b787-4943-bb45-c42424fd29ec policy0 --min-kbps 1001 --direction ingress
neutron qos-minimum-bandwidth-rule-update: error: argument --direction: invalid choice: u'ingress' (choose from 'egress')

Further details:

The working update by neutronclient looks like this:

neutron qos-minimum-bandwidth-rule-update f392837a-09e2-4b5e-8c29-86670797679e policy0 --min-kbps 1001 --direction egress
PUT /v2.0/qos/policies/188a2f59-ab90-41a3-9e6f-58e641a34544/minimum_bandwidth_rules/f392837a-09e2-4b5e-8c29-86670797679e
{"minimum_bandwidth_rule": {"direction": "egress", "min_kbps": "1001"}}

The wrong update by openstackclient looks like this:

openstack network qos rule set policy0 f392837a-09e2-4b5e-8c29-86670797679e --min-kbps 1001 --egress
PUT /v2.0/qos/policies/188a2f59-ab90-41a3-9e6f-58e641a34544/minimum_bandwidth_rules/f392837a-09e2-4b5e-8c29-86670797679e
{"minimum_bandwidth_rule": {"min_kbps": 1001}}

The 500 Internal Server Error's traceback:

febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource [None req-e73566b0-35e0-4572-a3d5-28f77853b4c9 admin admin] update failed: No details.: AttributeError: 'QosMinimumBandwidthRule' object has no attribute '_ob
j_direction'
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource Traceback (most recent call last):
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/resource.py", line 98, in resource
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     result = method(request=request, **args)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 624, in update
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return self._update(request, id, body, **kwargs)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron-lib/neutron_lib/db/api.py", line 142, in wrapped
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     setattr(e, '_RETRY_EXCEEDED', True)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     self.force_reraise()
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron-lib/neutron_lib/db/api.py", line 138, in wrapped
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return f(*args, **kwargs)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 154, in wrapper
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     ectxt.value = e.inner_exc
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     self.force_reraise()
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 142, in wrapper
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return f(*args, **kwargs)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron-lib/neutron_lib/db/api.py", line 198, in wrapped
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     LOG.debug("Retry wrapper got retriable exception: %s", e)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     self.force_reraise()
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron-lib/neutron_lib/db/api.py", line 194, in wrapped
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return f(*dup_args, **dup_kwargs)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 680, in _update
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     obj = obj_updater(request.context, id, **kwargs)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/extensions/qos.py", line 174, in <lambda>
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     method_name, rule_cls, *args, **kwargs)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/extensions/qos.py", line 170, in _make_call
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     context, rule_cls, *args_list, **params
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/db/db_base_plugin_common.py", line 50, in inner
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     result = f(*args, **kwargs)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/services/qos/qos_plugin.py", line 423, in update_policy_rule
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     checker.check_rules_conflict(policy, rule)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/objects/qos/qos_policy_validator.py", line 63, in check_rules_conflict
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     if rule.duplicates(rule_obj):
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/objects/qos/rule.py", line 83, in duplicates
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     if getattr(self, field) != getattr(other_rule, field):
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_versionedobjects/base.py", line 68, in getter
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return getattr(self, attrname)
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource AttributeError: 'QosMinimumBandwidthRule' object has no attribute '_obj_direction'
febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource·

The version used to reproduce the bug:

neutron 2f3cc51784
neutron-lib aceb7c50ed
devstack ee4b6a01
python-openstackclient dcff1012fd
python-neutronclient d74b871f7fe
openstacksdk==0.23.0
osc-lib==1.12.0

I'll work on fixing these problems.

** Affects: neutron
     Importance: Undecided
     Assignee: Bence Romsics (bence-romsics)
         Status: New


** Tags: low-hanging-fruit qos

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

Title:
  cannot update qos rule

Status in neutron:
  New

Bug description:
  This bug seems to be combination of problems on both client and server
  sides. So we may need to add pyhton-neutronclient and/or python-
  openstackclient as an affected component. I'll do that as soon as I
  manage to locate which one contains the client side bug. But this
  report will be good to track the overall problem.

  First the reproduction:

  openstack network qos policy create policy0

  openstack network qos rule create policy0 --type minimum-bandwidth --min-kbps 1000 --egress # 71a84995-cccd-4f09-9c3d-b1caa18ff363
  openstack network qos rule set policy0 71a84995-cccd-4f09-9c3d-b1caa18ff363 --min-kbps 1001 --egress
  -> works as expected

  # make sure we only have one rule of the type
  openstack network qos rule delete policy0 71a84995-cccd-4f09-9c3d-b1caa18ff363

  openstack network qos rule create policy0 --type minimum-bandwidth --min-kbps 1000 --ingress # 1155c1c8-f9a7-4954-b195-9f58c8e18b4d
  openstack network qos rule set policy0 1155c1c8-f9a7-4954-b195-9f58c8e18b4d --min-kbps 1001 --ingress
  -> works as expected

  openstack network qos rule delete policy0
  1155c1c8-f9a7-4954-b195-9f58c8e18b4d

  # create the ingress/egress pair at once
  openstack network qos rule create policy0 --type minimum-bandwidth --min-kbps 1000 --egress # f392837a-09e2-4b5e-8c29-86670797679e
  openstack network qos rule create policy0 --type minimum-bandwidth --min-kbps 1000 --ingress # 77dae223-b787-4943-bb45-c42424fd29ec

  # This is the bug. As we'll see later the trigger is a client-side problem, but I don't think neutron-server should return 500 Internal Server Error. The malformed input should be caught earlier and a 4xx response should be given.
  openstack network qos rule set policy0 f392837a-09e2-4b5e-8c29-86670797679e --min-kbps 1001 --egress
  Failed to set Network QoS rule ID "f392837a-09e2-4b5e-8c29-86670797679e": HttpException: 500: Server Error for url: http://100.109.0.20:9696/v2.0/qos/policies/188a2f59-ab90-41a3-9e6f-58e641a34544/minimum_bandwidth_rules/f392837a-09e2-4b5e-8c29-86670797679e, Request Failed: internal server error while processing your request.

  openstack network qos rule set policy0 77dae223-b787-4943-bb45-c42424fd29ec --min-kbps 1001 --ingress
  Failed to set Network QoS rule ID "77dae223-b787-4943-bb45-c42424fd29ec": HttpException: 500: Server Error for url: http://100.109.0.20:9696/v2.0/qos/policies/188a2f59-ab90-41a3-9e6f-58e641a34544/minimum_bandwidth_rules/77dae223-b787-4943-bb45-c42424fd29ec, Request Failed: internal server error while processing your request.

  # the same rule update can be done by neutronclient, but only for the egress direction
  neutron qos-minimum-bandwidth-rule-update f392837a-09e2-4b5e-8c29-86670797679e policy0 --min-kbps 1001 --direction egress
  -> works as expected

  # this failure is expected because neutronclient was long deprecated already when the ingress direction was introduced
  neutron qos-minimum-bandwidth-rule-update 77dae223-b787-4943-bb45-c42424fd29ec policy0 --min-kbps 1001 --direction ingress
  neutron qos-minimum-bandwidth-rule-update: error: argument --direction: invalid choice: u'ingress' (choose from 'egress')

  Further details:

  The working update by neutronclient looks like this:

  neutron qos-minimum-bandwidth-rule-update f392837a-09e2-4b5e-8c29-86670797679e policy0 --min-kbps 1001 --direction egress
  PUT /v2.0/qos/policies/188a2f59-ab90-41a3-9e6f-58e641a34544/minimum_bandwidth_rules/f392837a-09e2-4b5e-8c29-86670797679e
  {"minimum_bandwidth_rule": {"direction": "egress", "min_kbps": "1001"}}

  The wrong update by openstackclient looks like this:

  openstack network qos rule set policy0 f392837a-09e2-4b5e-8c29-86670797679e --min-kbps 1001 --egress
  PUT /v2.0/qos/policies/188a2f59-ab90-41a3-9e6f-58e641a34544/minimum_bandwidth_rules/f392837a-09e2-4b5e-8c29-86670797679e
  {"minimum_bandwidth_rule": {"min_kbps": 1001}}

  The 500 Internal Server Error's traceback:

  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource [None req-e73566b0-35e0-4572-a3d5-28f77853b4c9 admin admin] update failed: No details.: AttributeError: 'QosMinimumBandwidthRule' object has no attribute '_ob
  j_direction'
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource Traceback (most recent call last):
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/resource.py", line 98, in resource
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     result = method(request=request, **args)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 624, in update
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return self._update(request, id, body, **kwargs)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron-lib/neutron_lib/db/api.py", line 142, in wrapped
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     setattr(e, '_RETRY_EXCEEDED', True)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     self.force_reraise()
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron-lib/neutron_lib/db/api.py", line 138, in wrapped
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return f(*args, **kwargs)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 154, in wrapper
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     ectxt.value = e.inner_exc
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     self.force_reraise()
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 142, in wrapper
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return f(*args, **kwargs)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron-lib/neutron_lib/db/api.py", line 198, in wrapped
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     LOG.debug("Retry wrapper got retriable exception: %s", e)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     self.force_reraise()
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron-lib/neutron_lib/db/api.py", line 194, in wrapped
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return f(*dup_args, **dup_kwargs)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 680, in _update
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     obj = obj_updater(request.context, id, **kwargs)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/extensions/qos.py", line 174, in <lambda>
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     method_name, rule_cls, *args, **kwargs)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/extensions/qos.py", line 170, in _make_call
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     context, rule_cls, *args_list, **params
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/db/db_base_plugin_common.py", line 50, in inner
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     result = f(*args, **kwargs)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/services/qos/qos_plugin.py", line 423, in update_policy_rule
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     checker.check_rules_conflict(policy, rule)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/objects/qos/qos_policy_validator.py", line 63, in check_rules_conflict
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     if rule.duplicates(rule_obj):
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/opt/stack/neutron/neutron/objects/qos/rule.py", line 83, in duplicates
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     if getattr(self, field) != getattr(other_rule, field):
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_versionedobjects/base.py", line 68, in getter
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource     return getattr(self, attrname)
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource AttributeError: 'QosMinimumBandwidthRule' object has no attribute '_obj_direction'
  febr 12 12:20:19 devstack0 neutron-server[31565]: ERROR neutron.api.v2.resource·

  The version used to reproduce the bug:

  neutron 2f3cc51784
  neutron-lib aceb7c50ed
  devstack ee4b6a01
  python-openstackclient dcff1012fd
  python-neutronclient d74b871f7fe
  openstacksdk==0.23.0
  osc-lib==1.12.0

  I'll work on fixing these problems.

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


Follow ups