)]}'
{"releasenotes/notes/admin_web_api-1331c81070a3e67f.yaml":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"4695ec17367adec037d5eec72b7b649d8f4e8269","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"admin-rules\" attribute for tenants. Admin rules let administrator define"},{"line_number":37,"context_line":"    access rules to tenant-scoped protected actions such as `autohold` and"},{"line_number":38,"context_line":"    `dequeue` in the REST API, provided the user presents a valid token matching"},{"line_number":39,"context_line":"    these rules."},{"line_number":40,"context_line":"upgrade:"},{"line_number":41,"context_line":"  - |"},{"line_number":42,"context_line":"    The \"autohold\", \"dequeue\" and \"enqueue\" endpoints are deactivated by default."}],"source_content_type":"text/x-yaml","patch_set":32,"id":"9fb8cfa7_324ed2c1","line":39,"updated":"2019-06-18 17:03:10.000000000","message":"Ditto about the release notes.","commit_id":"2418d79f3dd2329f2381fc1672933f7152343028"}],"zuul/web/__init__.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"c1354d7985b610266ca15e1add9d1fbd3314b070","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            return \u0027\u003ch1\u003e%s\u003c/h1\u003e\u0027 % e.error_description"},{"line_number":245,"context_line":"        # TODO plug an actual authorization mechanism, for now rely on token"},{"line_number":246,"context_line":"        # content"},{"line_number":247,"context_line":"        if not self.is_authorized(claims, tenant):"},{"line_number":248,"context_line":"            raise cherrypy.HTTPError(403)"},{"line_number":249,"context_line":"        msg \u003d \u0027User \"%s\" requesting \"%s\" on %s/%s\u0027"},{"line_number":250,"context_line":"        self.log.info("},{"line_number":251,"context_line":"            msg % (claims[\u0027__zuul_uid_claim\u0027], \u0027dequeue\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"9fb8cfa7_14d583b7","line":248,"range":{"start_line":247,"start_character":0,"end_line":248,"end_character":41},"updated":"2019-06-21 07:40:04.000000000","message":"nit: This could probably a little bit simplified by letting self.is_authorized directly throw the exception. That way we\u0027d reduce the redundancy in the code a bit.","commit_id":"71e468894541e3f1c52bf30054d14165a966c56d"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"7d5fdff8ac046803cd3e4bc28b3b5112db2bddb3","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            return \u0027\u003ch1\u003e%s\u003c/h1\u003e\u0027 % e.error_description"},{"line_number":245,"context_line":"        # TODO plug an actual authorization mechanism, for now rely on token"},{"line_number":246,"context_line":"        # content"},{"line_number":247,"context_line":"        if not self.is_authorized(claims, tenant):"},{"line_number":248,"context_line":"            raise cherrypy.HTTPError(403)"},{"line_number":249,"context_line":"        msg \u003d \u0027User \"%s\" requesting \"%s\" on %s/%s\u0027"},{"line_number":250,"context_line":"        self.log.info("},{"line_number":251,"context_line":"            msg % (claims[\u0027__zuul_uid_claim\u0027], \u0027dequeue\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"7faddb67_f3bf775e","line":248,"range":{"start_line":247,"start_character":0,"end_line":248,"end_character":41},"in_reply_to":"9fb8cfa7_14d583b7","updated":"2019-07-12 12:42:15.000000000","message":"I\u0027ll fix that in the next rebase","commit_id":"71e468894541e3f1c52bf30054d14165a966c56d"}]}
