exceptions.ValueError during port-list

Bug #1718056 reported by Senthilnathan Murugappan
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Juniper Openstack
Status tracked in Trunk
R4.0
Fix Committed
High
Suresh Vinapamula
Trunk
Fix Committed
High
Suresh Vinapamula

Bug Description

version: 4.0.1.0-62~newton
Testcase: Random
Let me know if you need a cluster to debug the same.

"ValueError: dictionary update sequence element #0 has length 0; 2 is required" is observed during the sanity run.

Believe we observe this after the fix of https://github.com/Juniper/contrail-controller/commit/061e29144039203fbddb526df962c7dcc936baa2

09/18/2017 08:54:49 AM [contrail-api]: <type 'exceptions.ValueError'>
Python 2.7.12: /usr/bin/python
Mon Sep 18 08:54:49 2017

A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.

 /usr/lib/python2.7/dist-packages/vnc_openstack/__init__.py in handler_trap_exception(*args=(), **kwargs={})
 1071 def handler_trap_exception(*args, **kwargs):
 1072 try:
 1073 response = handler(*args, **kwargs)
 1074 return response
 1075 except Exception as e:
response undefined
handler = <bound method NeutronPluginInterface.plugin_http..._plugin_interface.NeutronPluginInterface object>>
args = ()
kwargs = {}

 /usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_interface.py in plugin_http_post_port(self=<vnc_openstack.neutron_plugin_interface.NeutronPluginInterface object>)
  414 return self.plugin_delete_port(context, port)
  415 elif context['operation'] == 'READALL':
  416 return self.plugin_get_ports(context, port)
  417 elif context['operation'] == 'READCOUNT':
  418 return self.plugin_get_ports_count(context, port)
self = <vnc_openstack.neutron_plugin_interface.NeutronPluginInterface object>
self.plugin_get_ports = <bound method NeutronPluginInterface.plugin_get_..._plugin_interface.NeutronPluginInterface object>>
context = {'is_admin': True, 'operation': 'READALL', 'roles': ['admin'], 'tenant': '623908dc17594cf79d28f22152f5272a', 'tenant_id': '623908dc17594cf79d28f22152f5272a', 'type': 'port', 'user_id': 'ee87be86d9e94e7d8b4c482846770856'}
port = {'fields': [], 'filters': {'device_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af']}}

 /usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_interface.py in plugin_get_ports(self=<vnc_openstack.neutron_plugin_interface.NeutronPluginInterface object>, context={'is_admin': True, 'operation': 'READALL', 'roles': ['admin'], 'tenant': '623908dc17594cf79d28f22152f5272a', 'tenant_id': '623908dc17594cf79d28f22152f5272a', 'type': 'port', 'user_id': 'ee87be86d9e94e7d8b4c482846770856'}, port={'fields': [], 'filters': {'device_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af']}})
  383
  384 cfgdb = self._get_user_cfgdb(context)
  385 ports_info = cfgdb.port_list(context, filters)
  386 return json.dumps(ports_info)
  387
ports_info undefined
cfgdb = <vnc_openstack.neutron_plugin_db.DBInterface object>
cfgdb.port_list = <bound method DBInterface.wrapper of <vnc_openstack.neutron_plugin_db.DBInterface object>>
context = {'is_admin': True, 'operation': 'READALL', 'roles': ['admin'], 'tenant': '623908dc17594cf79d28f22152f5272a', 'tenant_id': '623908dc17594cf79d28f22152f5272a', 'type': 'port', 'user_id': 'ee87be86d9e94e7d8b4c482846770856'}
filters = {'device_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af']}

 /usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_db.py in wrapper(self=<vnc_openstack.neutron_plugin_db.DBInterface object>, *args=({'is_admin': True, 'operation': 'READALL', 'roles': ['admin'], 'tenant': '623908dc17594cf79d28f22152f5272a', 'tenant_id': '623908dc17594cf79d28f22152f5272a', 'type': 'port', 'user_id': 'ee87be86d9e94e7d8b4c482846770856'}, {'device_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af']}), **kwargs={})
 2815 def wrapper(self, *args, **kwargs):
 2816 self._connected_to_api_server.wait()
 2817 return func(self, *args, **kwargs)
 2818
 2819 return wrapper
func = <function port_list>
self = <vnc_openstack.neutron_plugin_db.DBInterface object>
args = ({'is_admin': True, 'operation': 'READALL', 'roles': ['admin'], 'tenant': '623908dc17594cf79d28f22152f5272a', 'tenant_id': '623908dc17594cf79d28f22152f5272a', 'type': 'port', 'user_id': 'ee87be86d9e94e7d8b4c482846770856'}, {'device_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af']})
kwargs = {}

 /usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_db.py in port_list(self=<vnc_openstack.neutron_plugin_db.DBInterface object>, context={'is_admin': True, 'operation': 'READALL', 'roles': ['admin'], 'tenant': '623908dc17594cf79d28f22152f5272a', 'tenant_id': '623908dc17594cf79d28f22152f5272a', 'type': 'port', 'user_id': 'ee87be86d9e94e7d8b4c482846770856'}, filters={'device_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af']})
 4360 for vmi_obj in self._virtual_machine_interface_list(
 4361 obj_uuids=filters.get('id'),
 4362 back_ref_id=back_ref_ids):
 4363 for device_ref in vmi_obj.get_virtual_machine_refs() or [] +\
 4364 vmi_obj.get_logical_router_back_refs() or []:
back_ref_id undefined
back_ref_ids = ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af']

 /usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_db.py in _virtual_machine_interface_list(self=<vnc_openstack.neutron_plugin_db.DBInterface object>, parent_id=None, back_ref_id=['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af'], obj_uuids=None, fields=None, filters=None)
  526 detail=True,
  527 fields=n_extra_fields,
  528 filters=filters)
  529 return vmi_objs
  530 #end _virtual_machine_interface_list
filters = None

 /usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py in wrapper(self=<vnc_openstack.neutron_plugin_db.LocalVncApi object>, *args=('virtual-machine-interface',), **kwargs={'back_ref_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af'], 'detail': True, 'fields': ['logical_router_back_refs', 'instance_ip_back_refs', 'floating_ip_back_refs'], 'filters': None, 'obj_uuids': None, 'parent_id': None})
   40 retry_on_error=False)
   41 self._parse_homepage(homepage)
   42 return func(self, *args, **kwargs)
   43 return wrapper
   44
func = <function _objects_list>
self = <vnc_openstack.neutron_plugin_db.LocalVncApi object>
args = ('virtual-machine-interface',)
kwargs = {'back_ref_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af'], 'detail': True, 'fields': ['logical_router_back_refs', 'instance_ip_back_refs', 'floating_ip_back_refs'], 'filters': None, 'obj_uuids': None, 'parent_id': None}
 /usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py in _objects_list(self=<vnc_openstack.neutron_plugin_db.LocalVncApi object>, res_type='virtual-machine-interface', parent_id=None, parent_fq_name=None, obj_uuids=None, back_ref_id=['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af'], fields=['logical_router_back_refs', 'instance_ip_back_refs', 'floating_ip_back_refs'], detail=True, count=False, filters=None, shared=False)
  625 res_type, parent_id=parent_id, parent_fq_name=parent_fq_name,
  626 back_ref_id=back_ref_id, obj_uuids=obj_uuids, fields=fields,
  627 detail=detail, count=count, filters=filters, shared=shared)
  628 # end _objects_list
  629
detail = True
count = False
filters = None
shared = False

 /usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py in wrapper(self=<vnc_openstack.neutron_plugin_db.LocalVncApi object>, *args=('virtual-machine-interface',), **kwargs={'back_ref_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af'], 'count': False, 'detail': True, 'fields': ['logical_router_back_refs', 'instance_ip_back_refs', 'floating_ip_back_refs'], 'filters': None, 'obj_uuids': None, 'parent_fq_name': None, 'parent_id': None, 'shared': False})
   40 retry_on_error=False)
   41 self._parse_homepage(homepage)
   42 return func(self, *args, **kwargs)
   43 return wrapper
   44
func = <function resource_list>
self = <vnc_openstack.neutron_plugin_db.LocalVncApi object>
args = ('virtual-machine-interface',)
kwargs = {'back_ref_id': ['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af'], 'count': False, 'detail': True, 'fields': ['logical_router_back_refs', 'instance_ip_back_refs', 'floating_ip_back_refs'], 'filters': None, 'obj_uuids': None, 'parent_fq_name': None, 'parent_id': None, 'shared': False}

 /usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py in resource_list(self=<vnc_openstack.neutron_plugin_db.LocalVncApi object>, obj_type='virtual-machine-interface', parent_id=None, parent_fq_name=None, back_ref_id=['e8ae1803-f0b4-43d6-be85-78c87fbd0c2b', 'e3123df7-3fcc-4237-a188-6c0b700d4b47', '8b92337d-09e9-4567-8e18-a3ceafb77e38', '443a5f0d-6d0e-4e76-b6ca-aa49e5d93fbd', 'a062337f-962a-4599-9cdb-2aa437d0b28e', '82b0f6f8-e02d-4e54-810e-5e16ca19e339', 'bf42363a-3e7e-4ac6-b5c2-d9386c9776ea', 'ea46eaff-d027-4bb4-b3ff-e4b522c73ab3', '24fcd613-6805-414d-bf30-880d2ebe8c10', 'a3bffdaa-b6f3-4662-9012-df498eb68436', '5c51fddb-5589-441c-b6d4-d1f5327d58b4', '08d6de92-02ee-4604-a3d9-854d5ae4d3af'], obj_uuids=None, fields=['logical_router_back_refs', 'instance_ip_back_refs', 'floating_ip_back_refs'], detail=True, count=False, filters=None, shared=False)
 1308 try:
 1309 response = self._request_server(
 1310 rest.OP_GET, obj_class.create_uri, data=query_params)
 1311 except NoIdError:
 1312 # dont allow NoIdError propagate to user
global rest = <module 'cfgm_common.rest' from '/usr/lib/python2.7/dist-packages/cfgm_common/rest.pyc'>
rest.OP_GET = 2
obj_class = <class 'vnc_api.gen.resource_client.VirtualMachineInterface'>
obj_class.create_uri = '/virtual-machine-interfaces'
data undefined
query_params = {'back_ref_id': 'e8ae1803-f0b4-43d6-be85-78c87fbd0c2b,e3123df7-3f...d1f5327d58b4,08d6de92-02ee-4604-a3d9-854d5ae4d3af', 'count': False, 'detail': True, 'exclude_hrefs': True, 'fields': 'logical_router_back_refs,instance_ip_back_refs,floating_ip_back_refs', 'shared': False}

 /usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py in _request_server(self=<vnc_openstack.neutron_plugin_db.LocalVncApi object>, op=2, url='/virtual-machine-interfaces', data={'back_ref_id': 'e8ae1803-f0b4-43d6-be85-78c87fbd0c2b,e3123df7-3f...d1f5327d58b4,08d6de92-02ee-4604-a3d9-854d5ae4d3af', 'count': False, 'detail': True, 'exclude_hrefs': True, 'fields': 'logical_router_back_refs,instance_ip_back_refs,floating_ip_back_refs', 'shared': False}, retry_on_error=True, retry_after_authn=False, retry_count=30)
  853 return self._request(
  854 op, url, data=data, retry_on_error=retry_on_error,
  855 retry_after_authn=retry_after_authn, retry_count=retry_count)
  856 # end _request_server
  857
retry_after_authn = False
retry_count = 30

 /usr/lib/python2.7/dist-packages/vnc_openstack/context.py in wrapper(*args=(<vnc_openstack.neutron_plugin_db.LocalVncApi object>, 2, '/virtual-machine-interfaces'), **kwargs={'data': {'back_ref_id': 'e8ae1803-f0b4-43d6-be85-78c87fbd0c2b,e3123df7-3f...d1f5327d58b4,08d6de92-02ee-4604-a3d9-854d5ae4d3af', 'count': False, 'detail': True, 'exclude_hrefs': True, 'fields': 'logical_router_back_refs,instance_ip_back_refs,floating_ip_back_refs', 'shared': False}, 'retry_after_authn': False, 'retry_count': 30, 'retry_on_error': True})
   35
   36 try:
   37 return fn(*args, **kwargs)
   38 finally:
   39 if context_created:
fn = <function _request>
args = (<vnc_openstack.neutron_plugin_db.LocalVncApi object>, 2, '/virtual-machine-interfaces')
kwargs = {'data': {'back_ref_id': 'e8ae1803-f0b4-43d6-be85-78c87fbd0c2b,e3123df7-3f...d1f5327d58b4,08d6de92-02ee-4604-a3d9-854d5ae4d3af', 'count': False, 'detail': True, 'exclude_hrefs': True, 'fields': 'logical_router_back_refs,instance_ip_back_refs,floating_ip_back_refs', 'shared': False}, 'retry_after_authn': False, 'retry_count': 30, 'retry_on_error': True}

 /usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_db.py in _request(self=<vnc_openstack.neutron_plugin_db.LocalVncApi object>, op=2, url='/virtual-machine-interfaces', data={'back_ref_id': 'e8ae1803-f0b4-43d6-be85-78c87fbd0c2b,e3123df7-3f...d1f5327d58b4,08d6de92-02ee-4604-a3d9-854d5ae4d3af', 'count': False, 'detail': True, 'exclude_hrefs': True, 'fields': 'logical_router_back_refs,instance_ip_back_refs,floating_ip_back_refs', 'shared': False}, *args=(), **kwargs={'retry_after_authn': False, 'retry_count': 30, 'retry_on_error': True})
  111 'bottle.app': self.api_server_obj.api_bottle
  112 }
  113 environ.update(auth_hdrs)
  114 vnc_cfg_api_server.context.set_context(
  115 vnc_cfg_api_server.context.ApiContext(
environ = {'PATH_INFO': '/virtual-machine-interfaces', 'QUERY_STRING': 'count=False&back_ref_id=e8ae1803-f0b4-43d6-be85-..._refs&detail=True&shared=False&exclude_hrefs=True', 'bottle.app': <bottle.Bottle object>}
environ.update = <built-in method update of dict object>
auth_hdrs = ['']
<type 'exceptions.ValueError'>: dictionary update sequence element #0 has length 0; 2 is required
    __class__ = <type 'exceptions.ValueError'>
    __delattr__ = <method-wrapper '__delattr__' of exceptions.ValueError object>
    __dict__ = {}
    __doc__ = 'Inappropriate argument value (of correct type).'
    __format__ = <built-in method __format__ of exceptions.ValueError object>
    __getattribute__ = <method-wrapper '__getattribute__' of exceptions.ValueError object>
    __getitem__ = <method-wrapper '__getitem__' of exceptions.ValueError object>
    __getslice__ = <method-wrapper '__getslice__' of exceptions.ValueError object>
    __hash__ = <method-wrapper '__hash__' of exceptions.ValueError object>
    __init__ = <method-wrapper '__init__' of exceptions.ValueError object>
    __new__ = <built-in method __new__ of type object>
    __reduce__ = <built-in method __reduce__ of exceptions.ValueError object>
    __reduce_ex__ = <built-in method __reduce_ex__ of exceptions.ValueError object>
    __repr__ = <method-wrapper '__repr__' of exceptions.ValueError object>
    __setattr__ = <method-wrapper '__setattr__' of exceptions.ValueError object>
    __setstate__ = <built-in method __setstate__ of exceptions.ValueError object>
    __sizeof__ = <built-in method __sizeof__ of exceptions.ValueError object>
    __str__ = <method-wrapper '__str__' of exceptions.ValueError object>
    __subclasshook__ = <built-in method __subclasshook__ of type object>
    __unicode__ = <built-in method __unicode__ of exceptions.ValueError object>
    args = ('dictionary update sequence element #0 has length 0; 2 is required',)
    message = 'dictionary update sequence element #0 has length 0; 2 is required'
The above is a description of an error in a Python program. Here is
the original traceback:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/vnc_openstack/__init__.py", line 1073, in handler_trap_exception
    response = handler(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_interface.py", line 416, in plugin_http_post_port
    return self.plugin_get_ports(context, port)
  File "/usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_interface.py", line 385, in plugin_get_ports
    ports_info = cfgdb.port_list(context, filters)
  File "/usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_db.py", line 2817, in wrapper
    return func(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_db.py", line 4362, in port_list
    back_ref_id=back_ref_ids):
  File "/usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_db.py", line 528, in _virtual_machine_interface_list
    filters=filters)
  File "/usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py", line 42, in wrapper
    return func(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py", line 627, in _objects_list
    detail=detail, count=count, filters=filters, shared=shared)
  File "/usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py", line 42, in wrapper
    return func(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py", line 1310, in resource_list
    rest.OP_GET, obj_class.create_uri, data=query_params)
  File "/usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py", line 855, in _request_server
    retry_after_authn=retry_after_authn, retry_count=retry_count)
  File "/usr/lib/python2.7/dist-packages/vnc_openstack/context.py", line 37, in wrapper
    return fn(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/vnc_openstack/neutron_plugin_db.py", line 113, in _request
    environ.update(auth_hdrs)
ValueError: dictionary update sequence element #0 has length 0; 2 is required

Revision history for this message
Jeba Paulaiyan (jebap) wrote :

Testcase: TestECMPSanityIPv6.test_ecmp_svc_in_network_with_3_instance
TestDetailedPolicy1Ipv4v6.test_multi_vn_repeated_policy_update_with_ping

Revision history for this message
Suresh Vinapamula (sureshk) wrote :

Can you provide the setup in reproduced state, and also provide instructions to run your script.

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R4.0

Review in progress for https://review.opencontrail.org/35735
Submitter: Suresh Vinapamula (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] master

Review in progress for https://review.opencontrail.org/35750
Submitter: Suresh Vinapamula (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R4.0

Review in progress for https://review.opencontrail.org/35735
Submitter: Suresh Vinapamula (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] master

Review in progress for https://review.opencontrail.org/35750
Submitter: Suresh Vinapamula (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/35735
Committed: http://github.com/Juniper/contrail-controller/commit/e33a8ee4460d372d1064d3305ace3002a5e2f81d
Submitter: Zuul (<email address hidden>)
Branch: R4.0

commit e33a8ee4460d372d1064d3305ace3002a5e2f81d
Author: Suresh Venkata <email address hidden>
Date: Tue Sep 19 11:35:00 2017 -0700

Invalid return value while capturing auth hdrs

Description: Even on token expiry, registered function
is called to extract headers, and we return None. The middleware
expects empty dict.
But, in neutron plugin for failed authentication we need to raise
401 exception.
To keep UT happy, rbac would return 401 exception when roles are
missing instead of 403, and move out the logic from neutron plugin.

Change-Id: Ie05a6046e52d7ab3bd04cb7dc5fb8c0c3cbf2b34
Closes-Bug: #1718056

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote :

Reviewed: https://review.opencontrail.org/35750
Committed: http://github.com/Juniper/contrail-controller/commit/95c498e1e5f913f10e9434e50641543ed2abbd0a
Submitter: Zuul (<email address hidden>)
Branch: master

commit 95c498e1e5f913f10e9434e50641543ed2abbd0a
Author: Suresh Venkata <email address hidden>
Date: Tue Sep 19 11:35:00 2017 -0700

Invalid return value while capturing auth hdrs

Description: Even on token expiry, registered function
is called to extract headers, and we return None. The middleware
expects empty dict.
But, in neutron plugin for failed authentication we need to raise
401 exception.
To keep UT happy, rbac would return 401 exception when roles are
missing instead of 403, and move out the logic from neutron plugin.

Change-Id: Ie05a6046e52d7ab3bd04cb7dc5fb8c0c3cbf2b34
Closes-Bug: #1718056

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.