Description of problem: python-webob 1.4.1 is available, however upper-constraints.txt specifies 1.6.1 as minimum for Newton: https://github.com/openstack/requirements/blob/stable/newton/upper-constraints.txt#L30 Without 1.6.1 unit some unit tests are failing.
Failed tests: nova.tests.unit.api.openstack.placement.test_util.TestRequireContent.test_fail_no_content_type ---------------------------------------------------------------------------------------------- Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/api/openstack/placement/test_util.py", line 163, in test_fail_no_content_type self.handler, req) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 422, in assertRaises self.assertThat(our_callable, matcher) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 433, in assertThat mismatch_error = self._matchHelper(matchee, matcher, message, verbose) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 483, in _matchHelper mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 108, in match mismatch = self.exception_matcher.match(exc_info) File "/usr/lib/python2.7/site-packages/testtools/matchers/_higherorder.py", line 62, in match mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 414, in match reraise(*matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 101, in match result = matchee() File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 969, in __call__ return self._callable_object(*self._args, **self._kwargs) File "nova/api/openstack/placement/util.py", line 115, in decorated_function json_formatter=json_error_formatter) File "/usr/lib/python2.7/site-packages/webob/exc.py", line 255, in __init__ **kw) File "/usr/lib/python2.7/site-packages/webob/response.py", line 155, in __init__ "Unexpected keyword: %s=%r" % (name, value)) TypeError: Unexpected keyword: json_formatter=<function json_error_formatter at 0x781bf50> nova.tests.unit.api.openstack.placement.test_handler.DispatchTest.test_no_match_with_map ---------------------------------------------------------------------------------------- Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/api/openstack/placement/test_handler.py", line 58, in test_no_match_with_map self.mapper) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 422, in assertRaises self.assertThat(our_callable, matcher) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 433, in assertThat mismatch_error = self._matchHelper(matchee, matcher, message, verbose) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 483, in _matchHelper mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 108, in match mismatch = self.exception_matcher.match(exc_info) File "/usr/lib/python2.7/site-packages/testtools/matchers/_higherorder.py", line 62, in match mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 414, in match reraise(*matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 101, in match result = matchee() File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 969, in __call__ return self._callable_object(*self._args, **self._kwargs) File "nova/api/openstack/placement/handler.py", line 94, in dispatch json_formatter=util.json_error_formatter) File "/usr/lib/python2.7/site-packages/webob/exc.py", line 255, in __init__ **kw) File "/usr/lib/python2.7/site-packages/webob/response.py", line 155, in __init__ "Unexpected keyword: %s=%r" % (name, value)) TypeError: Unexpected keyword: json_formatter=<function json_error_formatter at 0x8b9b050> nova.tests.unit.api.openstack.placement.test_util.TestCheckAccept.test_fail_complex_no_match -------------------------------------------------------------------------------------------- Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/api/openstack/placement/test_util.py", line 50, in test_fail_complex_no_match self.handler, req) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 422, in assertRaises self.assertThat(our_callable, matcher) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 433, in assertThat mismatch_error = self._matchHelper(matchee, matcher, message, verbose) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 483, in _matchHelper mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 108, in match mismatch = self.exception_matcher.match(exc_info) File "/usr/lib/python2.7/site-packages/testtools/matchers/_higherorder.py", line 62, in match mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 414, in match reraise(*matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 101, in match result = matchee() File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 969, in __call__ return self._callable_object(*self._args, **self._kwargs) File "nova/api/openstack/placement/util.py", line 56, in decorated_function json_formatter=json_error_formatter) File "/usr/lib/python2.7/site-packages/webob/exc.py", line 255, in __init__ **kw) File "/usr/lib/python2.7/site-packages/webob/response.py", line 155, in __init__ "Unexpected keyword: %s=%r" % (name, value)) TypeError: Unexpected keyword: json_formatter=<function json_error_formatter at 0x8b9b050> nova.tests.unit.api.openstack.placement.test_util.TestRequireContent.test_fail_wrong_content_type ------------------------------------------------------------------------------------------------- Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/api/openstack/placement/test_util.py", line 173, in test_fail_wrong_content_type self.handler, req) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 422, in assertRaises self.assertThat(our_callable, matcher) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 433, in assertThat mismatch_error = self._matchHelper(matchee, matcher, message, verbose) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 483, in _matchHelper mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 108, in match mismatch = self.exception_matcher.match(exc_info) File "/usr/lib/python2.7/site-packages/testtools/matchers/_higherorder.py", line 62, in match mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 414, in match reraise(*matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 101, in match result = matchee() File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 969, in __call__ return self._callable_object(*self._args, **self._kwargs) File "nova/api/openstack/placement/util.py", line 115, in decorated_function json_formatter=json_error_formatter) File "/usr/lib/python2.7/site-packages/webob/exc.py", line 255, in __init__ **kw) File "/usr/lib/python2.7/site-packages/webob/response.py", line 155, in __init__ "Unexpected keyword: %s=%r" % (name, value)) TypeError: Unexpected keyword: json_formatter=<function json_error_formatter at 0x8b9b050> nova.tests.unit.api.openstack.placement.test_handler.DispatchTest.test_no_match_null_map ---------------------------------------------------------------------------------------- Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/api/openstack/placement/test_handler.py", line 51, in test_no_match_null_map self.mapper) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 422, in assertRaises self.assertThat(our_callable, matcher) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 433, in assertThat mismatch_error = self._matchHelper(matchee, matcher, message, verbose) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 483, in _matchHelper mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 108, in match mismatch = self.exception_matcher.match(exc_info) File "/usr/lib/python2.7/site-packages/testtools/matchers/_higherorder.py", line 62, in match mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 414, in match reraise(*matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 101, in match result = matchee() File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 969, in __call__ return self._callable_object(*self._args, **self._kwargs) File "nova/api/openstack/placement/handler.py", line 94, in dispatch json_formatter=util.json_error_formatter) File "/usr/lib/python2.7/site-packages/webob/exc.py", line 255, in __init__ **kw) File "/usr/lib/python2.7/site-packages/webob/response.py", line 155, in __init__ "Unexpected keyword: %s=%r" % (name, value)) TypeError: Unexpected keyword: json_formatter=<function json_error_formatter at 0x8ae9050> nova.tests.unit.api.openstack.placement.test_util.TestCheckAccept.test_fail_no_match ------------------------------------------------------------------------------------ Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/api/openstack/placement/test_util.py", line 40, in test_fail_no_match self.handler, req) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 422, in assertRaises self.assertThat(our_callable, matcher) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 433, in assertThat mismatch_error = self._matchHelper(matchee, matcher, message, verbose) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 483, in _matchHelper mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 108, in match mismatch = self.exception_matcher.match(exc_info) File "/usr/lib/python2.7/site-packages/testtools/matchers/_higherorder.py", line 62, in match mismatch = matcher.match(matchee) File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 414, in match reraise(*matchee) File "/usr/lib/python2.7/site-packages/testtools/matchers/_exception.py", line 101, in match result = matchee() File "/usr/lib/python2.7/site-packages/testtools/testcase.py", line 969, in __call__ return self._callable_object(*self._args, **self._kwargs) File "nova/api/openstack/placement/util.py", line 56, in decorated_function json_formatter=json_error_formatter) File "/usr/lib/python2.7/site-packages/webob/exc.py", line 255, in __init__ **kw) File "/usr/lib/python2.7/site-packages/webob/response.py", line 155, in __init__ "Unexpected keyword: %s=%r" % (name, value)) TypeError: Unexpected keyword: json_formatter=<function json_error_formatter at 0x8ae9050>
global-requirements.txt is still WebOb>=1.2.3 even on master, if new version is required at runtime, it should have been bumped there. Note that this will unlikely get accepted for stable/newton, so I think release note in Nova Newton would be good to explain for which feature update is required.
(In reply to Alan Pevec from comment #2) > global-requirements.txt is still WebOb>=1.2.3 even on master, if new version > is required at runtime, it should have been bumped there. > Note that this will unlikely get accepted for stable/newton, so I think > release note in Nova Newton would be good to explain for which feature > update is required. Speaking upstream the plan is to support both with a hack in stable/newton and a release note. The global-requirements.txt bump is also proposed for master.
Upstream patch was merged so closing.