← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1843379] [NEW] Tagging is not work for tags of QoS Policy

 

Public bug reported:

hi,
 I found it is not work when put tags for Qos policy, and there were any errors occured.
neutron version:Pike
Folling steps:
step 1: PUT 10.125.30.76:9696/v2.0/qos/policies/b10e702c-dac6-44e9-aadc-7a58182ae722/tags
         Request body:
           {
             "tags": ["sss","vvvvv"]
           }
         Response:
           {
             "NeutronError": {
             "message": "Request Failed: internal server error while processing your request.",
             "type": "HTTPInternalServerError",
              "detail": ""
             }
           }
   logs of neutron:
    2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation [req-223f2107-8dea-442d-8d74-049862635abc 08f74f4a-5693-4ec0-9723-b9293716db36 c7ad318f-6faa-4c83-8675-be6a46e62f72
- default default] PUT failed.: TypeError: argument of type 'NoneType' is not iterable
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation Traceback (most recent call last):
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/pecan/core.py", line 678, in __call__
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     self.invoke_controller(controller, args, kwargs, state)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/pecan/core.py", line 569, in invoke_controller
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     result = controller(*args, **kwargs)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 93, in wrapped
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     setattr(e, '_RETRY_EXCEEDED', True)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     self.force_reraise()
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     six.reraise(self.type_, self.value, self.tb)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 89, in wrapped
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     return f(*args, **kwargs)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 150, in wrapper
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     ectxt.value = e.inner_exc
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     self.force_reraise()
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     six.reraise(self.type_, self.value, self.tb)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 138, in wrapper
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     return f(*args, **kwargs)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 128, in wrapped
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     LOG.debug("Retry wrapper got retriable exception: %s", e)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     self.force_reraise()
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     six.reraise(self.type_, self.value, self.tb)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 124, in wrapped
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     return f(*dup_args, **dup_kwargs)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/pecan_wsgi/controllers/utils.py", line 76, in wrapped
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     return f(*args, **kwargs)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/pecan_wsgi/controllers/utils.py", line 398, in index
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     result = controller_method(*args, **uri_identifiers)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/extensions/tagging.py", line 136, in update_all
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     validate_tags(body)
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/extensions/tagging.py", line 74, in validate_tags
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     if 'tags' not in body:
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation TypeError: argument of type 'NoneType' is not iterable
2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation


step 2: I uses PDB to add breakpoints to the /usr/lib/python2.7/site-packages/neutron/extensions/tagging.py, like this:

 def validate_tags(body):
     import pdb;pdb.set_trace()
     if 'tags' not in body:
         raise exceptions.InvalidInput(error_message=_("Invalid tags body"))
     msg = validators.validate_list_of_unique_strings(body['tags'], MAX_TAG_LEN)
     if msg:
         raise exceptions.InvalidInput(error_message=msg)

   Retry step 1, I found the body was None

step 3: I found there is not path_prefix where the method get_resources
call  extensions.ResourceExtension().So I modified the
/usr/lib/python2.7/site-packages/neutron/extensions/tagging.py, like
this:

    def get_resources(cls):
        """Returns Ext Resources."""
        exts = []
        action_status = {'index': 200, 'show': 204, 'update': 201,
                         'update_all': 200, 'delete': 204, 'delete_all': 204}
        controller = api_resource.Resource(TaggingController(),
                                           base.FAULT_MAP,
                                           action_status=action_status)
        collection_methods = {"delete_all": "DELETE",
                              "update_all": "PUT"}
        exts = []
        path_prefix = ""
        for collection_name, member_name in TAG_SUPPORTED_RESOURCES.items():
            if 'security_group' in collection_name:
                collection_name = collection_name.replace('_', '-')
            parent = {'member_name': member_name,
                      'collection_name': collection_name}
            if 'policies' in collection_name:
                path_prefix = "/qos"
            exts.append(extensions.ResourceExtension(
                TAGS, controller,path_prefix=path_prefix, parent,
                collection_methods=collection_methods))
        return exts

  Retry step 1, it wokrs

I think there is a bug for some plugins those have path_prefix when put tags.
Does anyone else have an idea?

** Affects: neutron
     Importance: Undecided
     Assignee: liuxie (liushy)
         Status: New

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

Title:
  Tagging is not work for tags of QoS Policy

Status in neutron:
  New

Bug description:
  hi,
   I found it is not work when put tags for Qos policy, and there were any errors occured.
  neutron version:Pike
  Folling steps:
  step 1: PUT 10.125.30.76:9696/v2.0/qos/policies/b10e702c-dac6-44e9-aadc-7a58182ae722/tags
           Request body:
             {
               "tags": ["sss","vvvvv"]
             }
           Response:
             {
               "NeutronError": {
               "message": "Request Failed: internal server error while processing your request.",
               "type": "HTTPInternalServerError",
                "detail": ""
               }
             }
     logs of neutron:
      2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation [req-223f2107-8dea-442d-8d74-049862635abc 08f74f4a-5693-4ec0-9723-b9293716db36 c7ad318f-6faa-4c83-8675-be6a46e62f72
  - default default] PUT failed.: TypeError: argument of type 'NoneType' is not iterable
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation Traceback (most recent call last):
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/pecan/core.py", line 678, in __call__
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     self.invoke_controller(controller, args, kwargs, state)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/pecan/core.py", line 569, in invoke_controller
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     result = controller(*args, **kwargs)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 93, in wrapped
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     setattr(e, '_RETRY_EXCEEDED', True)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     self.force_reraise()
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     six.reraise(self.type_, self.value, self.tb)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 89, in wrapped
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     return f(*args, **kwargs)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 150, in wrapper
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     ectxt.value = e.inner_exc
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     self.force_reraise()
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     six.reraise(self.type_, self.value, self.tb)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 138, in wrapper
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     return f(*args, **kwargs)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 128, in wrapped
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     LOG.debug("Retry wrapper got retriable exception: %s", e)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     self.force_reraise()
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     six.reraise(self.type_, self.value, self.tb)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 124, in wrapped
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     return f(*dup_args, **dup_kwargs)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/pecan_wsgi/controllers/utils.py", line 76, in wrapped
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     return f(*args, **kwargs)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/pecan_wsgi/controllers/utils.py", line 398, in index
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     result = controller_method(*args, **uri_identifiers)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/extensions/tagging.py", line 136, in update_all
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     validate_tags(body)
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation   File "/usr/lib/python2.7/site-packages/neutron/extensions/tagging.py", line 74, in validate_tags
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation     if 'tags' not in body:
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation TypeError: argument of type 'NoneType' is not iterable
  2019-09-10 14:32:13.740 87718 ERROR neutron.pecan_wsgi.hooks.translation

  
  step 2: I uses PDB to add breakpoints to the /usr/lib/python2.7/site-packages/neutron/extensions/tagging.py, like this:

   def validate_tags(body):
       import pdb;pdb.set_trace()
       if 'tags' not in body:
           raise exceptions.InvalidInput(error_message=_("Invalid tags body"))
       msg = validators.validate_list_of_unique_strings(body['tags'], MAX_TAG_LEN)
       if msg:
           raise exceptions.InvalidInput(error_message=msg)

     Retry step 1, I found the body was None

  step 3: I found there is not path_prefix where the method
  get_resources call  extensions.ResourceExtension().So I modified the
  /usr/lib/python2.7/site-packages/neutron/extensions/tagging.py, like
  this:

      def get_resources(cls):
          """Returns Ext Resources."""
          exts = []
          action_status = {'index': 200, 'show': 204, 'update': 201,
                           'update_all': 200, 'delete': 204, 'delete_all': 204}
          controller = api_resource.Resource(TaggingController(),
                                             base.FAULT_MAP,
                                             action_status=action_status)
          collection_methods = {"delete_all": "DELETE",
                                "update_all": "PUT"}
          exts = []
          path_prefix = ""
          for collection_name, member_name in TAG_SUPPORTED_RESOURCES.items():
              if 'security_group' in collection_name:
                  collection_name = collection_name.replace('_', '-')
              parent = {'member_name': member_name,
                        'collection_name': collection_name}
              if 'policies' in collection_name:
                  path_prefix = "/qos"
              exts.append(extensions.ResourceExtension(
                  TAGS, controller,path_prefix=path_prefix, parent,
                  collection_methods=collection_methods))
          return exts

    Retry step 1, it wokrs

  I think there is a bug for some plugins those have path_prefix when put tags.
  Does anyone else have an idea?

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


Follow ups