Description of problem: If a user tries to remove the OpenStack trust from his preferences, he will face a 500 server error if the underlying keystone_session is invalid. Version-Release number of selected component (if applicable): 25.0 How reproducible: 100% Steps to Reproduce: 1. Setup Beaker to communicate with OpenStack. Make sure it creates a keystone_session 2. Create a trust for your user. 3. Invalidate the keystone session. In reality it happened because we moved from RHOS7 to RHOS10 4. Try to remove your trust. Traceback: Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: bkr.server ERROR Exception on /users/rjoost/keystone-trust [DELETE] Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: Traceback (most recent call last): Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/flask/app.py", line 1817, in wsgi_app Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: response = self.full_dispatch_request() Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/flask/app.py", line 1477, in full_dispatch_request Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: rv = self.handle_user_exception(e) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/flask/app.py", line 1381, in handle_user_exception Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: reraise(exc_type, exc_value, tb) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/flask/app.py", line 1475, in full_dispatch_request Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: rv = self.dispatch_request() Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/flask/app.py", line 1461, in dispatch_request Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: return self.view_functions[rule.endpoint](**req.view_args) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/bkr/server/flask_util.py", line 219, in wrapper Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: return f(*args, **kwds) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/bkr/server/user.py", line 543, in delete_keystone_trust Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: manager = dynamic_virt.VirtManager(user) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/bkr/server/dynamic_virt.py", line 43, in __init__ Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: keystone_session = self._create_keystone_session() Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/bkr/server/dynamic_virt.py", line 82, in _create_keystone_session Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: auth.get_token(session) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/keystoneclient/auth/identity/base.py", line 91, in get_token Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: return self.get_access(session).auth_token Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/keystoneclient/auth/identity/base.py", line 126, in get_access Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: self.auth_ref = self.get_auth_ref(session) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/keystoneclient/auth/identity/v3.py", line 119, in get_auth_ref Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: authenticated=False, log=False, **rkwargs) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/keystoneclient/session.py", line 438, in post Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: return self.request(url, 'POST', **kwargs) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/keystoneclient/utils.py", line 318, in inner Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: return func(*args, **kwargs) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: File "/usr/lib/python2.6/site-packages/keystoneclient/session.py", line 354, in request Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: raise exceptions.from_response(resp, method, url) Mar 19 00:24:40 beaker-devel.app.eng.bos.redhat.com beaker-server[17278]: Unauthorized: The request you have made requires authentication. (HTTP 401) (Request-ID: req-5206cbf2-f948-4a3c-a459-fa6004435b45) Actual results: 500 Error Expected results: Removed trust Additional info:
Implementation detail: In case there are errors with OpenStack during the deletion of the trust, we simply assume that the trust has been invalidated by other means and allow the string to be removed from the Beaker database.
I've tested this by inserting some junk into the openstack_trust_id column of the tg_user table. The invalid keystone trust showed up in the user interface. Clicking delete on this invalid trust succeeded without any issues. Marking bug as VERIFIED.
Beaker 25.1 has been released: https://beaker-project.org/docs/whats-new/release-25.html#beaker-25-1