)]}'
{"nova/objects/aggregate.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7c499d8efdbf07d39de7b68e3053e6b9ca51a6b5","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    def _fill_deprecated(db_aggregate):"},{"line_number":231,"context_line":"        db_aggregate[\u0027deleted_at\u0027] \u003d None"},{"line_number":232,"context_line":"        db_aggregate[\u0027deleted\u0027] \u003d False"},{"line_number":233,"context_line":"        return db_aggregate"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    @staticmethod"},{"line_number":236,"context_line":"    @db_api.api_context_manager.reader"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_e66a67ec","line":233,"updated":"2016-03-23 17:42:54.000000000","message":"This will be handled by the _from_db loader in the base object, so it shouldn\u0027t be needed right?","commit_id":"286e876e55474d60783f8590e3885f896166eae8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7c499d8efdbf07d39de7b68e3053e6b9ca51a6b5","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    @base.remotable_classmethod"},{"line_number":283,"context_line":"    def get_all(cls, context):"},{"line_number":284,"context_line":"        api_db_aggregates \u003d [cls._fill_deprecated(agg) for agg in \\"},{"line_number":285,"context_line":"                                cls._get_all_from_db(context)]"},{"line_number":286,"context_line":"        db_aggregates \u003d db.aggregate_get_all(context)"},{"line_number":287,"context_line":"        return base.obj_make_list(context, cls(context), objects.Aggregate,"},{"line_number":288,"context_line":"                                  db_aggregates + api_db_aggregates)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_a1885972","line":285,"updated":"2016-03-23 17:42:54.000000000","message":"All of these have wrong indentation,AFAICT, but will be fixed if you nuke this per above.","commit_id":"286e876e55474d60783f8590e3885f896166eae8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7c499d8efdbf07d39de7b68e3053e6b9ca51a6b5","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    def get_by_host(cls, context, host, key\u003dNone):"},{"line_number":292,"context_line":"        api_db_aggregates \u003d [cls._fill_deprecated(agg) for agg in \\"},{"line_number":293,"context_line":"                            cls._get_by_host_from_db(context, host, key\u003dkey)]"},{"line_number":294,"context_line":"        db_aggregates \u003d db.aggregate_get_by_host(context, host, key\u003dkey)"},{"line_number":295,"context_line":"        return base.obj_make_list(context, cls(context), objects.Aggregate,"},{"line_number":296,"context_line":"                                  db_aggregates + api_db_aggregates)"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_21128957","line":294,"updated":"2016-03-23 17:42:54.000000000","message":"Looks like these always return a list, so we should be good. And no pagination. You lucky bastard.","commit_id":"286e876e55474d60783f8590e3885f896166eae8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8dc93bae8bc749a06a3fda2dc8c596ca289f23ff","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    @db_api.api_context_manager.reader"},{"line_number":238,"context_line":"    def _get_all_from_db(context):"},{"line_number":239,"context_line":"        query \u003d context.session.query(api_models.Aggregate).\\"},{"line_number":240,"context_line":"                options(joinedload(\u0027_hosts\u0027)).\\"},{"line_number":241,"context_line":"                options(joinedload(\u0027_metadata\u0027))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        return query.all()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a1b2928_227ddc1c","line":240,"range":{"start_line":240,"start_character":36,"end_line":240,"end_character":42},"updated":"2016-04-11 20:04:32.000000000","message":"I don\u0027t like this. See comments on the base patch.","commit_id":"1149b3036a7575f73008b3d415d3b6cef073f511"},{"author":{"_account_id":18777,"name":"Jinxing Fang","email":"fang.jinxing@99cloud.net","username":"jinxingfang"},"change_message_id":"6967d54fb84603a356ca54f3a27f0f48d4053012","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    @db_api.api_context_manager.reader"},{"line_number":238,"context_line":"    def _get_all_from_db(context):"},{"line_number":239,"context_line":"        query \u003d context.session.query(api_models.Aggregate).\\"},{"line_number":240,"context_line":"                options(joinedload(\u0027_hosts\u0027)).\\"},{"line_number":241,"context_line":"                options(joinedload(\u0027_metadata\u0027))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        return query.all()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_27ccd534","line":240,"range":{"start_line":240,"start_character":36,"end_line":240,"end_character":42},"in_reply_to":"7a1b2928_227ddc1c","updated":"2016-04-12 17:01:53.000000000","message":"Agree with you.","commit_id":"1149b3036a7575f73008b3d415d3b6cef073f511"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"386b6d46e6f38027a5e9e91f273dd105cce12481","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"@db_api.api_context_manager.reader"},{"line_number":217,"context_line":"def _get_all_from_db(context):"},{"line_number":218,"context_line":"    query \u003d context.session.query(api_models.Aggregate).\\"},{"line_number":219,"context_line":"            options(joinedload(\u0027_hosts\u0027)).\\"},{"line_number":220,"context_line":"            options(joinedload(\u0027_metadata\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_a49ff301","line":217,"updated":"2016-05-13 22:27:16.000000000","message":"Recommend add \"from_api_db\" to all these method names for clarity at the call location.","commit_id":"f268b12d3396029076409e28c500288b9dd1366a"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"d7086dc6c007b657a4b2994fce4e6adc3c7233e8","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"@db_api.api_context_manager.reader"},{"line_number":217,"context_line":"def _get_all_from_db(context):"},{"line_number":218,"context_line":"    query \u003d context.session.query(api_models.Aggregate).\\"},{"line_number":219,"context_line":"            options(joinedload(\u0027_hosts\u0027)).\\"},{"line_number":220,"context_line":"            options(joinedload(\u0027_metadata\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_b2be8cd1","line":217,"in_reply_to":"dab17558_a49ff301","updated":"2016-05-17 20:03:29.000000000","message":"I\u0027m following a pattern established by the flavor series by dansmith. \n\nhttps://review.openstack.org/#/c/294252/8/nova/objects/flavor.py\n\nI guess the idea was that anything accessing the db in this file is going to be to the API db. I can see how this might be confusing though, especially if we add a placement db.","commit_id":"f268b12d3396029076409e28c500288b9dd1366a"}],"nova/tests/unit/objects/test_aggregate.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"386b6d46e6f38027a5e9e91f273dd105cce12481","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.assertRaises(exception.AggregateNotFound,"},{"line_number":104,"context_line":"                          aggregate._aggregate_get_from_db,"},{"line_number":105,"context_line":"                          self.context, aggregate_id)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def test_aggregate_get_all_from_db(self):"},{"line_number":108,"context_line":"        for c in range(3):"},{"line_number":109,"context_line":"            _create_aggregate(self.context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_4498c71b","line":106,"updated":"2016-05-13 22:27:16.000000000","message":"Same complaint as last patch about involving the real database in these unit tests....","commit_id":"f268b12d3396029076409e28c500288b9dd1366a"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"d7086dc6c007b657a4b2994fce4e6adc3c7233e8","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.assertRaises(exception.AggregateNotFound,"},{"line_number":104,"context_line":"                          aggregate._aggregate_get_from_db,"},{"line_number":105,"context_line":"                          self.context, aggregate_id)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def test_aggregate_get_all_from_db(self):"},{"line_number":108,"context_line":"        for c in range(3):"},{"line_number":109,"context_line":"            _create_aggregate(self.context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_92742836","line":106,"in_reply_to":"dab17558_4498c71b","updated":"2016-05-17 20:03:29.000000000","message":"Yeah, it is true, these tests are different from the others. Will mock out the database access, I have separate functional tests added later that access the database.","commit_id":"f268b12d3396029076409e28c500288b9dd1366a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f147b949f606d1c68259f7b19af77c294325859b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                          hosts\u003dfake_db_aggregate_hosts):"},{"line_number":84,"context_line":"    aggregate \u003d _create_aggregate(context, values, metadata)"},{"line_number":85,"context_line":"    for host in hosts:"},{"line_number":86,"context_line":"        host_model \u003d api_models.AggregateHost()"},{"line_number":87,"context_line":"        host_model.update({\u0027host\u0027: host,"},{"line_number":88,"context_line":"                           \u0027aggregate_id\u0027: aggregate.id})"},{"line_number":89,"context_line":"        host_model.save(context.session)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_d37ddfb2","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":18},"updated":"2016-05-24 13:03:31.000000000","message":"nit: that change was not really needed, right?","commit_id":"92768d2c52e21d3208702881c8d78200dc1376fb"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"e585f5b9f52173a82098e17287b18a9fd7382308","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                          hosts\u003dfake_db_aggregate_hosts):"},{"line_number":84,"context_line":"    aggregate \u003d _create_aggregate(context, values, metadata)"},{"line_number":85,"context_line":"    for host in hosts:"},{"line_number":86,"context_line":"        host_model \u003d api_models.AggregateHost()"},{"line_number":87,"context_line":"        host_model.update({\u0027host\u0027: host,"},{"line_number":88,"context_line":"                           \u0027aggregate_id\u0027: aggregate.id})"},{"line_number":89,"context_line":"        host_model.save(context.session)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_909f7e02","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":18},"in_reply_to":"bab6814e_d37ddfb2","updated":"2016-05-25 16:10:03.000000000","message":"Looks like it isn\u0027t needed. At one point I must have had tests that added and checked multiple different host names.","commit_id":"92768d2c52e21d3208702881c8d78200dc1376fb"}]}
