)]}'
{"nova/objects/resource_provider.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5482143691a858d25fb54e25e79d7d7f56b2b316","unresolved":false,"context_lines":[{"line_number":2748,"context_line":"    information. The code paths are eminently easier to execute and follow for"},{"line_number":2749,"context_line":"    non-nested scenarios..."},{"line_number":2750,"context_line":""},{"line_number":2751,"context_line":"    NOTE(jaypipes): The result of this function can be cached extensively."},{"line_number":2752,"context_line":"    \"\"\""},{"line_number":2753,"context_line":"    sel \u003d sa.select([_RP_TBL.c.id])"},{"line_number":2754,"context_line":"    sel \u003d sel.where(_RP_TBL.c.parent_provider_id.isnot(None))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_d9029c3d","line":2751,"updated":"2018-01-08 17:18:38.000000000","message":"Only if that cache is cleared/updated whenever we create or update a provider.","commit_id":"59a567209aafc8479e1047f890875de97379ca78"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"6cd37fbaa0fd4e5acee41301a3f7ff800185b72a","unresolved":false,"context_lines":[{"line_number":2760,"context_line":"    sel \u003d sel.where(_RP_TBL.c.parent_provider_id.isnot(None))"},{"line_number":2761,"context_line":"    sel \u003d sel.limit(1)"},{"line_number":2762,"context_line":"    res \u003d ctx.session.execute(sel).fetchall()"},{"line_number":2763,"context_line":"    return len(res) !\u003d 0"},{"line_number":2764,"context_line":""},{"line_number":2765,"context_line":""},{"line_number":2766,"context_line":"@db_api.api_context_manager.reader"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_831fcbb5","line":2763,"updated":"2018-01-16 15:32:59.000000000","message":"super-nit: express this positively. E.g.:\n\n  return len(res) \u003e 0\n\nAnd yes, I know you could write\n\n  return bool(res)\n\nbut I think that the \u0027\u003e\u0027 is more readable and understandable.","commit_id":"c72a188230e14b693ab406e6bf63187e280f626d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4fc591e7899734e38df14b84d5363ad13f8097c9","unresolved":false,"context_lines":[{"line_number":2760,"context_line":"    sel \u003d sel.where(_RP_TBL.c.parent_provider_id.isnot(None))"},{"line_number":2761,"context_line":"    sel \u003d sel.limit(1)"},{"line_number":2762,"context_line":"    res \u003d ctx.session.execute(sel).fetchall()"},{"line_number":2763,"context_line":"    return len(res) !\u003d 0"},{"line_number":2764,"context_line":""},{"line_number":2765,"context_line":""},{"line_number":2766,"context_line":"@db_api.api_context_manager.reader"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_72e4c73c","line":2763,"in_reply_to":"7f96bb07_831fcbb5","updated":"2018-01-16 17:55:29.000000000","message":"Done","commit_id":"c72a188230e14b693ab406e6bf63187e280f626d"}],"nova/tests/functional/db/test_resource_provider.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"6cd37fbaa0fd4e5acee41301a3f7ff800185b72a","unresolved":false,"context_lines":[{"line_number":523,"context_line":"            context\u003dself.ctx, uuid\u003duuidsentinel.cn, name\u003d\u0027cn\u0027)"},{"line_number":524,"context_line":"        cn.create()"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        # No parents yet. Should stil be False."},{"line_number":527,"context_line":"        self.assertFalse(rp_obj._has_provider_trees(self.ctx))"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        numa0 \u003d rp_obj.ResourceProvider("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_c36e332e","line":526,"range":{"start_line":526,"start_character":33,"end_line":526,"end_character":37},"updated":"2018-01-16 15:32:59.000000000","message":"still","commit_id":"c72a188230e14b693ab406e6bf63187e280f626d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4fc591e7899734e38df14b84d5363ad13f8097c9","unresolved":false,"context_lines":[{"line_number":523,"context_line":"            context\u003dself.ctx, uuid\u003duuidsentinel.cn, name\u003d\u0027cn\u0027)"},{"line_number":524,"context_line":"        cn.create()"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        # No parents yet. Should stil be False."},{"line_number":527,"context_line":"        self.assertFalse(rp_obj._has_provider_trees(self.ctx))"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        numa0 \u003d rp_obj.ResourceProvider("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_32d4ff47","line":526,"range":{"start_line":526,"start_character":33,"end_line":526,"end_character":37},"in_reply_to":"7f96bb07_c36e332e","updated":"2018-01-16 17:55:29.000000000","message":"Done","commit_id":"c72a188230e14b693ab406e6bf63187e280f626d"}]}
