)]}'
{"keystone/server/flask/common.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8859d2f6b391e0ccb70e3675183ae07c5462e7e9","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                \u0027[%(urls)r %(kwargs)r]\u0027,"},{"line_number":121,"context_line":"                {\u0027name\u0027: self._name, \u0027urls\u0027: r.urls, \u0027kwargs\u0027: r.kwargs})"},{"line_number":122,"context_line":"            self._blueprint.add_resource(r.resource, *r.urls, **r.kwargs)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _register_before_request_functions(self, functions\u003dNone):"},{"line_number":125,"context_line":"        \"\"\"Register functions to be executed in the `before request` phase."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_ae75c299","line":123,"updated":"2018-06-26 20:27:23.000000000","message":"Do we have a way to stand up a dummy API to test these types of changes? Is that something that we\u0027re doing in a later patch? I assume this will be tested when it starts being consumed as we convert keystone APIs to flask.","commit_id":"13ee274e70fe05e8014c16b4a5f642fbfa388f95"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2f646677c6255adcc9322aa52ba00ded0c887d59","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                \u0027[%(urls)r %(kwargs)r]\u0027,"},{"line_number":121,"context_line":"                {\u0027name\u0027: self._name, \u0027urls\u0027: r.urls, \u0027kwargs\u0027: r.kwargs})"},{"line_number":122,"context_line":"            self._blueprint.add_resource(r.resource, *r.urls, **r.kwargs)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _register_before_request_functions(self, functions\u003dNone):"},{"line_number":125,"context_line":"        \"\"\"Register functions to be executed in the `before request` phase."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_a9305c08","line":123,"in_reply_to":"5f7c97a3_ae75c299","updated":"2018-06-26 21:31:48.000000000","message":"Yes we will be doing that in a later patch. All of this will be exercises when apis move to patch but more importantly once the scaffolding update lands (post RBACEnforcer) a complete dummy api can be stood up.","commit_id":"13ee274e70fe05e8014c16b4a5f642fbfa388f95"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7fe03a1a6dbe52848b774009d672cf89bd489b8f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        accept a \"functions\" list and append the passed in values to it\u0027s"},{"line_number":130,"context_line":"        list prior to calling super."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        Each function will be called with no arguments and expects a NoneType"},{"line_number":133,"context_line":"        return. If the function returns a value, that value will be returned"},{"line_number":134,"context_line":"        as the response to the entire request, no further processing will"},{"line_number":135,"context_line":"        happen."}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_a2d9c556","line":132,"range":{"start_line":132,"start_character":7,"end_line":132,"end_character":54},"updated":"2018-07-03 18:39:03.000000000","message":"So these methods must use class or instance attributes if they need anything?","commit_id":"3330c228ad030e6d3d987f1f360ba5ce0c460333"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2bb4802058538c7cd95d48a76e723e8aa7c8c540","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        accept a \"functions\" list and append the passed in values to it\u0027s"},{"line_number":130,"context_line":"        list prior to calling super."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        Each function will be called with no arguments and expects a NoneType"},{"line_number":133,"context_line":"        return. If the function returns a value, that value will be returned"},{"line_number":134,"context_line":"        as the response to the entire request, no further processing will"},{"line_number":135,"context_line":"        happen."}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_85f93283","line":132,"range":{"start_line":132,"start_character":7,"end_line":132,"end_character":54},"in_reply_to":"5f7c97a3_a2d9c556","updated":"2018-07-03 20:20:22.000000000","message":"Right, if you can divine the instance being called via something like:\n\n    func()\n\nNow, you do have full access to flask.g and flask.request at this point.","commit_id":"3330c228ad030e6d3d987f1f360ba5ce0c460333"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7fe03a1a6dbe52848b774009d672cf89bd489b8f","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        # Assert is intended to ensure code works as expected in development,"},{"line_number":173,"context_line":"        # it is fine to optimize out with python -O"},{"line_number":174,"context_line":"        msg \u003d \u0027after_request functions already registered\u0027"},{"line_number":175,"context_line":"        assert not self.__after_request_functions_added, msg  # nosec"},{"line_number":176,"context_line":"        # register global after request functions"},{"line_number":177,"context_line":"        # e.g. self.__blueprint.after_request(function)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_028f5922","line":175,"updated":"2018-07-03 18:39:03.000000000","message":"If this causes keystone to fail, should it be a Programming Error? Do we ever expect operators to see this?","commit_id":"3330c228ad030e6d3d987f1f360ba5ce0c460333"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2bb4802058538c7cd95d48a76e723e8aa7c8c540","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        # Assert is intended to ensure code works as expected in development,"},{"line_number":173,"context_line":"        # it is fine to optimize out with python -O"},{"line_number":174,"context_line":"        msg \u003d \u0027after_request functions already registered\u0027"},{"line_number":175,"context_line":"        assert not self.__after_request_functions_added, msg  # nosec"},{"line_number":176,"context_line":"        # register global after request functions"},{"line_number":177,"context_line":"        # e.g. self.__blueprint.after_request(function)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_253ffe22","line":175,"in_reply_to":"5f7c97a3_028f5922","updated":"2018-07-03 20:20:22.000000000","message":"It should be impossible for this to pass gate/check if this is ever hit -- OR it\u0027s someone making changes directly to the code base [for local deployment].\n\nIt really is meant to be a development tool, we can change it to \"PROGRAMMING ERROR:\" in a future path easily.","commit_id":"3330c228ad030e6d3d987f1f360ba5ce0c460333"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3cc9825bd69dec21b2eff3a7cdb3269821ba805a","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        # Assert is intended to ensure code works as expected in development,"},{"line_number":173,"context_line":"        # it is fine to optimize out with python -O"},{"line_number":174,"context_line":"        msg \u003d \u0027after_request functions already registered\u0027"},{"line_number":175,"context_line":"        assert not self.__after_request_functions_added, msg  # nosec"},{"line_number":176,"context_line":"        # register global after request functions"},{"line_number":177,"context_line":"        # e.g. self.__blueprint.after_request(function)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_a8976339","line":175,"in_reply_to":"5f7c97a3_253ffe22","updated":"2018-07-03 21:19:16.000000000","message":"Sounds good","commit_id":"3330c228ad030e6d3d987f1f360ba5ce0c460333"}]}
