Closed ajoaoff closed 5 years ago
Can you attach a traceback or, better yet, create a unit test that reproduces this scenario?
The traceback:
Traceback (most recent call last):
File "/home/antonio/kytos-env/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/home/antonio/kytos-env/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/antonio/kytos-env/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/antonio/kytos-env/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/antonio/kytos-env/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/home/antonio/kytos-env/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/home/antonio/kytos-env/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/antonio/kytos-env/var/lib/kytos/napps/kytos/flow_manager/main.py", line 59, in add
return self._send_flow_mods_from_request(dpid, "add")
File "/home/antonio/kytos-env/var/lib/kytos/napps/kytos/flow_manager/main.py", line 89, in _send_flow_mods_from_request
self._install_flows(command, flows_dict, [switch])
File "/home/antonio/kytos-env/var/lib/kytos/napps/kytos/flow_manager/main.py", line 109, in _install_flows
flow = serializer.from_dict(flow_dict, switch)
File "/home/antonio/kytos-env/lib/python3.6/site-packages/napps/kytos/of_core/flow.py", line 148, in from_dict
action = cls._action_factory.from_dict(action_dict)
File "/home/antonio/kytos-env/lib/python3.6/site-packages/napps/kytos/of_core/flow.py", line 258, in from_dict
return action_class.from_dict(action_dict) if action_class else None
File "/home/antonio/kytos-env/lib/python3.6/site-packages/napps/kytos/of_core/flow.py", line 223, in from_dict
action = cls(None)
TypeError: __init__() takes 1 positional argument but 2 were given
When
flow_manager
tries to create a flow having apop_vlan
action, aTypeError
occurs, because the__init__
method expects onlyself
, but a parameter is passed. That happens because afactory
is used, and the other types of actions receive a parameter, soActionPopVlan
had a*args
argument that was unused. Probably it was removed due to linter errors, but it shouldn't.