Bug 1384058

Summary: In Newton python-webob 1.6.1 is required as in upper-constraints.txt
Product: [Community] RDO Reporter: Michal Pryc <mpryc>
Component: python-webobAssignee: RHOS Maint <rhos-maint>
Status: CLOSED ERRATA QA Contact: Shai Revivo <srevivo>
Severity: high Docs Contact:
Priority: unspecified    
Version: trunkCC: apevec, chris.brown, lyarwood, srevivo
Target Milestone: ---   
Target Release: trunk   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1384064 (view as bug list) Environment:
Last Closed: 2017-06-19 20:33:40 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1384064    

Description Michal Pryc 2016-10-12 12:47:13 UTC
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.

Comment 1 Michal Pryc 2016-10-12 12:51:50 UTC
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>

Comment 2 Alan Pevec 2016-10-12 13:49:55 UTC
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.

Comment 3 Lee Yarwood 2016-10-12 14:20:55 UTC
(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.

Comment 4 Christopher Brown 2017-06-19 20:33:40 UTC
Upstream patch was merged so closing.