Open luis5tb opened 2 years ago
That's for the version 0.6.9, but could be a version upgrade an option in your case?
'Cause this issue is fixed in the master / 0.7.2, as I can see
If not, then we can try to find a workaround, but I would start with a version upgrade.
Ok! thanks!
Rules are created despite the error being thrown, and the same for deletion.
Step to reproduce, with pyroute2 0.6.9 version:
Traceback (most recent call last): File "", line 1, in
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/auth_manager.py", line 68, in guard
return f(obj, *argv, *kwarg)
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/main.py", line 546, in getitem
ret = self.template(key, table)
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/main.py", line 388, in template
return iclass(
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/objects/rule.py", line 65, in init
super(Rule, self).init(argv, **kwarg)
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/objects/init.py", line 366, in init
raise KeyError('object does not exists')
KeyError: 'object does not exists'
As expected the rule is not there, but when trying to create it:
Traceback (most recent call last): File "/usr/lib/python3.9/site-packages/pr2modules/ndb/objects/init.py", line 876, in apply (self.sources[self['target']].api(self.api, method, *req)) File "/usr/lib/python3.9/site-packages/pr2modules/ndb/source.py", line 285, in api return getattr(self.nl, name)(argv, **kwarg) File "/usr/lib/python3.9/site-packages/pr2modules/iproute/linux.py", line 2244, in rule ret = tuple(ret) File "/usr/lib/python3.9/site-packages/pr2modules/netlink/nlsocket.py", line 908, in nlm_request for msg in self.get( File "/usr/lib/python3.9/site-packages/pr2modules/netlink/nlsocket.py", line 734, in get raise msg['header']['error'] pr2modules.netlink.exceptions.NetlinkError: (17, 'File exists')
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "", line 1, in
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/auth_manager.py", line 68, in guard
return f(obj, *argv, kwarg)
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/objects/init.py", line 700, in commit
raise e_i
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/objects/init.py", line 689, in commit
return self.apply()
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/auth_manager.py", line 68, in guard
return f(obj, argv, kwarg)
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/objects/init.py", line 905, in apply
self.fallback_for[method][e.code](
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/objects/init.py", line 119, in fallback_add
self.sources[self['target']].api(self.api, 'get', idx_req),
File "/usr/lib/python3.9/site-packages/pr2modules/ndb/source.py", line 285, in api
return getattr(self.nl, name)(argv, kwarg)
File "/usr/lib/python3.9/site-packages/pr2modules/iproute/linux.py", line 2202, in rule
command, flags = commands.get(command, command)
ValueError: too many values to unpack (expected 2)
Though the rule gets actually created: $ ip -6 rule 0: from all lookup local 1000: from all lookup [l3mdev-table] 32000: from all to 2001:db8::f816:3eff:fe14:ce99 lookup br-ex 32766: from all lookup main
And listing it now is present on NDB:
Sometimes it also happens the other direction: