)]}'
{"placement/objects/allocation.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from placement.objects import resource_provider as rp_obj"},{"line_number":27,"context_line":"from placement.objects import user as user_obj"},{"line_number":28,"context_line":"from placement import resource_class_cache as rc_cache"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"_ALLOC_TBL \u003d models.Allocation.__table__"},{"line_number":31,"context_line":"_CONSUMER_TBL \u003d models.Consumer.__table__"},{"line_number":32,"context_line":"_INV_TBL \u003d models.Inventory.__table__"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_2458f587","line":29,"updated":"2019-03-01 16:23:35.000000000","message":"a guideline that I\u0027m too lazy to find suggests two blank lines after imports","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from placement.objects import resource_provider as rp_obj"},{"line_number":27,"context_line":"from placement.objects import user as user_obj"},{"line_number":28,"context_line":"from placement import resource_class_cache as rc_cache"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"_ALLOC_TBL \u003d models.Allocation.__table__"},{"line_number":31,"context_line":"_CONSUMER_TBL \u003d models.Consumer.__table__"},{"line_number":32,"context_line":"_INV_TBL \u003d models.Inventory.__table__"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_d81d4111","line":29,"in_reply_to":"9fdfeff1_2458f587","updated":"2019-03-01 22:20:28.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                       _ALLOC_TBL.c.resource_class_id,"},{"line_number":125,"context_line":"                       sql.func.sum(_ALLOC_TBL.c.used).label(\u0027used\u0027)])"},{"line_number":126,"context_line":"    usage \u003d usage.where("},{"line_number":127,"context_line":"            sa.and_(_ALLOC_TBL.c.resource_class_id.in_(rc_ids),"},{"line_number":128,"context_line":"                    _ALLOC_TBL.c.resource_provider_id.in_(provider_ids)))"},{"line_number":129,"context_line":"    usage \u003d usage.group_by(_ALLOC_TBL.c.resource_provider_id,"},{"line_number":130,"context_line":"                           _ALLOC_TBL.c.resource_class_id)"},{"line_number":131,"context_line":"    usage \u003d sa.alias(usage, name\u003d\u0027usage\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a455c51f","line":128,"range":{"start_line":127,"start_character":4,"end_line":128,"end_character":20},"updated":"2019-03-01 16:23:35.000000000","message":"[unrelated] fix indent","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                       _ALLOC_TBL.c.resource_class_id,"},{"line_number":125,"context_line":"                       sql.func.sum(_ALLOC_TBL.c.used).label(\u0027used\u0027)])"},{"line_number":126,"context_line":"    usage \u003d usage.where("},{"line_number":127,"context_line":"            sa.and_(_ALLOC_TBL.c.resource_class_id.in_(rc_ids),"},{"line_number":128,"context_line":"                    _ALLOC_TBL.c.resource_provider_id.in_(provider_ids)))"},{"line_number":129,"context_line":"    usage \u003d usage.group_by(_ALLOC_TBL.c.resource_provider_id,"},{"line_number":130,"context_line":"                           _ALLOC_TBL.c.resource_class_id)"},{"line_number":131,"context_line":"    usage \u003d sa.alias(usage, name\u003d\u0027usage\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_9817b9ef","line":128,"range":{"start_line":127,"start_character":4,"end_line":128,"end_character":20},"in_reply_to":"9fdfeff1_4782dbc8","updated":"2019-03-01 22:20:28.000000000","message":"Yes, hence [unrelated] - I\u0027ll throw a patch on top for these.","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"23056aee22098981ee49a19f3c01a5dcc20f1b47","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                       _ALLOC_TBL.c.resource_class_id,"},{"line_number":125,"context_line":"                       sql.func.sum(_ALLOC_TBL.c.used).label(\u0027used\u0027)])"},{"line_number":126,"context_line":"    usage \u003d usage.where("},{"line_number":127,"context_line":"            sa.and_(_ALLOC_TBL.c.resource_class_id.in_(rc_ids),"},{"line_number":128,"context_line":"                    _ALLOC_TBL.c.resource_provider_id.in_(provider_ids)))"},{"line_number":129,"context_line":"    usage \u003d usage.group_by(_ALLOC_TBL.c.resource_provider_id,"},{"line_number":130,"context_line":"                           _ALLOC_TBL.c.resource_class_id)"},{"line_number":131,"context_line":"    usage \u003d sa.alias(usage, name\u003d\u0027usage\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a37cd2b6","line":128,"range":{"start_line":127,"start_character":4,"end_line":128,"end_character":20},"in_reply_to":"9fdfeff1_9817b9ef","updated":"2019-03-01 23:42:21.000000000","message":"These are all fixed (and then some) in https://review.openstack.org/#/c/640554/","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"accaafbe84d620541c7e478febaa0a736861215f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                       _ALLOC_TBL.c.resource_class_id,"},{"line_number":125,"context_line":"                       sql.func.sum(_ALLOC_TBL.c.used).label(\u0027used\u0027)])"},{"line_number":126,"context_line":"    usage \u003d usage.where("},{"line_number":127,"context_line":"            sa.and_(_ALLOC_TBL.c.resource_class_id.in_(rc_ids),"},{"line_number":128,"context_line":"                    _ALLOC_TBL.c.resource_provider_id.in_(provider_ids)))"},{"line_number":129,"context_line":"    usage \u003d usage.group_by(_ALLOC_TBL.c.resource_provider_id,"},{"line_number":130,"context_line":"                           _ALLOC_TBL.c.resource_class_id)"},{"line_number":131,"context_line":"    usage \u003d sa.alias(usage, name\u003d\u0027usage\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_4782dbc8","line":128,"range":{"start_line":127,"start_character":4,"end_line":128,"end_character":20},"in_reply_to":"9fdfeff1_a455c51f","updated":"2019-03-01 16:31:20.000000000","message":"this weirdness predates me doesn\u0027t it?  and I kinda think that we should fix these afterwards","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    usage \u003d sa.alias(usage, name\u003d\u0027usage\u0027)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    inv_join \u003d sql.join(_RP_TBL, _INV_TBL,"},{"line_number":134,"context_line":"            sql.and_(_RP_TBL.c.id \u003d\u003d _INV_TBL.c.resource_provider_id,"},{"line_number":135,"context_line":"                     _INV_TBL.c.resource_class_id.in_(rc_ids)))"},{"line_number":136,"context_line":"    primary_join \u003d sql.outerjoin(inv_join, usage,"},{"line_number":137,"context_line":"        sql.and_("},{"line_number":138,"context_line":"            _INV_TBL.c.resource_provider_id \u003d\u003d usage.c.resource_provider_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_24379500","line":135,"range":{"start_line":134,"start_character":4,"end_line":135,"end_character":63},"updated":"2019-03-01 16:23:35.000000000","message":"ditto","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                               for rc_id in rc_ids])"},{"line_number":174,"context_line":"        provider_str \u003d \u0027, \u0027.join(missing_provs)"},{"line_number":175,"context_line":"        raise exception.InvalidInventory(resource_class\u003dclass_str,"},{"line_number":176,"context_line":"                resource_provider\u003dprovider_str)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    res_providers \u003d {}"},{"line_number":179,"context_line":"    rp_resource_class_sum \u003d collections.defaultdict("}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_44b73986","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":16},"updated":"2019-03-01 16:23:35.000000000","message":"ditto","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        used \u003d usage[\u0027used\u0027] or 0"},{"line_number":224,"context_line":"        capacity \u003d (usage[\u0027total\u0027] - usage[\u0027reserved\u0027]) * allocation_ratio"},{"line_number":225,"context_line":"        if (capacity \u003c (used + amount_needed) or"},{"line_number":226,"context_line":"            capacity \u003c (used + rp_resource_class_sum[rp_uuid][rc_id])):"},{"line_number":227,"context_line":"            LOG.warning("},{"line_number":228,"context_line":"                \"Over capacity for %(rc)s on resource provider %(rp)s. \""},{"line_number":229,"context_line":"                \"Needed: %(needed)s, Used: %(used)s, Capacity: %(cap)s\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a403850f","line":226,"range":{"start_line":226,"start_character":12,"end_line":226,"end_character":71},"updated":"2019-03-01 16:23:35.000000000","message":"ditto","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        # to try again. It will also rollback the transaction so that these"},{"line_number":474,"context_line":"        # changes always happen atomically."},{"line_number":475,"context_line":"        for rp in visited_rps.values():"},{"line_number":476,"context_line":"            # FIXME(cdent): This should perhaps live in common?"},{"line_number":477,"context_line":"            rp.generation \u003d rp_obj._increment_provider_generation(context, rp)"},{"line_number":478,"context_line":"        for consumer in visited_consumers.values():"},{"line_number":479,"context_line":"            consumer.increment_generation()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_c4f48957","line":476,"range":{"start_line":476,"start_character":12,"end_line":476,"end_character":63},"updated":"2019-03-01 16:23:35.000000000","message":"yes\n\nDefinitely shouldn\u0027t be accessing private methods from other modules.\n\nEasy enough to fix that I think it warrants a respin.\n\n(I think probably do that refactor in a separate patch under this one.)","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"accaafbe84d620541c7e478febaa0a736861215f","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        # to try again. It will also rollback the transaction so that these"},{"line_number":474,"context_line":"        # changes always happen atomically."},{"line_number":475,"context_line":"        for rp in visited_rps.values():"},{"line_number":476,"context_line":"            # FIXME(cdent): This should perhaps live in common?"},{"line_number":477,"context_line":"            rp.generation \u003d rp_obj._increment_provider_generation(context, rp)"},{"line_number":478,"context_line":"        for consumer in visited_consumers.values():"},{"line_number":479,"context_line":"            consumer.increment_generation()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_e7550f51","line":476,"range":{"start_line":476,"start_character":12,"end_line":476,"end_character":63},"in_reply_to":"9fdfeff1_c4f48957","updated":"2019-03-01 16:31:20.000000000","message":"I agree that it should probably come before this if/when we get to it. Right now I\u0027m trying to WIP may to the end game on dead AllocationList and then we can have a clearer picture on what\u0027s needed","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        # to try again. It will also rollback the transaction so that these"},{"line_number":474,"context_line":"        # changes always happen atomically."},{"line_number":475,"context_line":"        for rp in visited_rps.values():"},{"line_number":476,"context_line":"            # FIXME(cdent): This should perhaps live in common?"},{"line_number":477,"context_line":"            rp.generation \u003d rp_obj._increment_provider_generation(context, rp)"},{"line_number":478,"context_line":"        for consumer in visited_consumers.values():"},{"line_number":479,"context_line":"            consumer.increment_generation()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_78d45520","line":476,"range":{"start_line":476,"start_character":12,"end_line":476,"end_character":63},"in_reply_to":"9fdfeff1_e7550f51","updated":"2019-03-01 22:20:28.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                    generation\u003drec[\u0027resource_provider_generation\u0027]),"},{"line_number":560,"context_line":"                resource_class\u003drc_cache.RC_CACHE.string_from_id("},{"line_number":561,"context_line":"                    rec[\u0027resource_class_id\u0027]),"},{"line_number":562,"context_line":"                consumer\u003dconsumer,"},{"line_number":563,"context_line":"                used\u003drec[\u0027used\u0027],"},{"line_number":564,"context_line":"                created_at\u003drec[\u0027created_at\u0027],"},{"line_number":565,"context_line":"                updated_at\u003drec[\u0027updated_at\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_47217b9d","line":562,"range":{"start_line":562,"start_character":25,"end_line":562,"end_character":33},"updated":"2019-03-01 16:23:35.000000000","message":"[unrelated] if db_allocs was empty, this would be uninitialized. But the list comp would evaluate it zero times. Perhaps clearer to switch L528 to\n\n if not db_allocs:\n     return cls(objects\u003d[])\n\n?","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"888f0db74004bbfb05eb183064a62cae6b5eab3e","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                    generation\u003drec[\u0027resource_provider_generation\u0027]),"},{"line_number":560,"context_line":"                resource_class\u003drc_cache.RC_CACHE.string_from_id("},{"line_number":561,"context_line":"                    rec[\u0027resource_class_id\u0027]),"},{"line_number":562,"context_line":"                consumer\u003dconsumer,"},{"line_number":563,"context_line":"                used\u003drec[\u0027used\u0027],"},{"line_number":564,"context_line":"                created_at\u003drec[\u0027created_at\u0027],"},{"line_number":565,"context_line":"                updated_at\u003drec[\u0027updated_at\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a32a928e","line":562,"range":{"start_line":562,"start_character":25,"end_line":562,"end_character":33},"in_reply_to":"9fdfeff1_47217b9d","updated":"2019-03-01 23:48:22.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"}],"placement/tests/functional/db/test_allocation.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        tb.add_inventory(rp1, rp2_class, 255, reserved\u003d2, max_unit\u003dmax_unit)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # create the allocations for a first consumer"},{"line_number":64,"context_line":"        allocation_1 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":65,"context_line":"                                         consumer\u003dconsumer,"},{"line_number":66,"context_line":"                                         resource_class\u003drp1_class,"},{"line_number":67,"context_line":"                                         used\u003drp1_used)"},{"line_number":68,"context_line":"        allocation_2 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":69,"context_line":"                                         consumer\u003dconsumer,"},{"line_number":70,"context_line":"                                         resource_class\u003drp2_class,"},{"line_number":71,"context_line":"                                         used\u003drp2_used)"},{"line_number":72,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":73,"context_line":"            objects\u003d[allocation_1, allocation_2])"},{"line_number":74,"context_line":"        allocation_list.replace_all(self.ctx)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_27ef971d","line":71,"range":{"start_line":64,"start_character":1,"end_line":71,"end_character":55},"updated":"2019-03-01 16:23:35.000000000","message":"fix indents","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        tb.add_inventory(rp1, rp2_class, 255, reserved\u003d2, max_unit\u003dmax_unit)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # create the allocations for a first consumer"},{"line_number":64,"context_line":"        allocation_1 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":65,"context_line":"                                         consumer\u003dconsumer,"},{"line_number":66,"context_line":"                                         resource_class\u003drp1_class,"},{"line_number":67,"context_line":"                                         used\u003drp1_used)"},{"line_number":68,"context_line":"        allocation_2 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":69,"context_line":"                                         consumer\u003dconsumer,"},{"line_number":70,"context_line":"                                         resource_class\u003drp2_class,"},{"line_number":71,"context_line":"                                         used\u003drp2_used)"},{"line_number":72,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":73,"context_line":"            objects\u003d[allocation_1, allocation_2])"},{"line_number":74,"context_line":"        allocation_list.replace_all(self.ctx)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_d890e152","line":71,"range":{"start_line":64,"start_character":1,"end_line":71,"end_character":55},"in_reply_to":"9fdfeff1_27ef971d","updated":"2019-03-01 22:20:28.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        # allocations for more than one consumer in the db, then we"},{"line_number":78,"context_line":"        # won\u0027t actually be doing real allocation math, which triggers"},{"line_number":79,"context_line":"        # the sql monster."},{"line_number":80,"context_line":"        allocation_1 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":81,"context_line":"                                         consumer\u003dconsumer2,"},{"line_number":82,"context_line":"                                         resource_class\u003drp1_class,"},{"line_number":83,"context_line":"                                         used\u003drp1_used)"},{"line_number":84,"context_line":"        allocation_2 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":85,"context_line":"                                         consumer\u003dconsumer2,"},{"line_number":86,"context_line":"                                         resource_class\u003drp2_class,"},{"line_number":87,"context_line":"                                         used\u003drp2_used)"},{"line_number":88,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":89,"context_line":"            objects\u003d[allocation_1, allocation_2])"},{"line_number":90,"context_line":"        # If we are joining wrong, this will be a KeyError"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_e7dc2f75","line":87,"range":{"start_line":80,"start_character":0,"end_line":87,"end_character":55},"updated":"2019-03-01 16:23:35.000000000","message":"ditto","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        # allocations for more than one consumer in the db, then we"},{"line_number":78,"context_line":"        # won\u0027t actually be doing real allocation math, which triggers"},{"line_number":79,"context_line":"        # the sql monster."},{"line_number":80,"context_line":"        allocation_1 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":81,"context_line":"                                         consumer\u003dconsumer2,"},{"line_number":82,"context_line":"                                         resource_class\u003drp1_class,"},{"line_number":83,"context_line":"                                         used\u003drp1_used)"},{"line_number":84,"context_line":"        allocation_2 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":85,"context_line":"                                         consumer\u003dconsumer2,"},{"line_number":86,"context_line":"                                         resource_class\u003drp2_class,"},{"line_number":87,"context_line":"                                         used\u003drp2_used)"},{"line_number":88,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":89,"context_line":"            objects\u003d[allocation_1, allocation_2])"},{"line_number":90,"context_line":"        # If we are joining wrong, this will be a KeyError"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_f88da535","line":87,"range":{"start_line":80,"start_character":0,"end_line":87,"end_character":55},"in_reply_to":"9fdfeff1_e7dc2f75","updated":"2019-03-01 22:20:28.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        rp2 \u003d self._create_provider(rp2_name, uuid\u003drp2_uuid)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # Two allocations, one for each resource provider."},{"line_number":118,"context_line":"        allocation_1 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":119,"context_line":"                                         consumer\u003dinst_consumer,"},{"line_number":120,"context_line":"                                         resource_class\u003drp1_class,"},{"line_number":121,"context_line":"                                         used\u003drp1_used)"},{"line_number":122,"context_line":"        allocation_2 \u003d alloc_obj.Allocation(resource_provider\u003drp2,"},{"line_number":123,"context_line":"                                         consumer\u003dinst_consumer,"},{"line_number":124,"context_line":"                                         resource_class\u003drp2_class,"},{"line_number":125,"context_line":"                                         used\u003drp2_used)"},{"line_number":126,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":127,"context_line":"            objects\u003d[allocation_1, allocation_2])"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_07d8537c","line":125,"range":{"start_line":118,"start_character":0,"end_line":125,"end_character":55},"updated":"2019-03-01 16:23:35.000000000","message":"ditto","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        rp2 \u003d self._create_provider(rp2_name, uuid\u003drp2_uuid)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # Two allocations, one for each resource provider."},{"line_number":118,"context_line":"        allocation_1 \u003d alloc_obj.Allocation(resource_provider\u003drp1,"},{"line_number":119,"context_line":"                                         consumer\u003dinst_consumer,"},{"line_number":120,"context_line":"                                         resource_class\u003drp1_class,"},{"line_number":121,"context_line":"                                         used\u003drp1_used)"},{"line_number":122,"context_line":"        allocation_2 \u003d alloc_obj.Allocation(resource_provider\u003drp2,"},{"line_number":123,"context_line":"                                         consumer\u003dinst_consumer,"},{"line_number":124,"context_line":"                                         resource_class\u003drp2_class,"},{"line_number":125,"context_line":"                                         used\u003drp2_used)"},{"line_number":126,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":127,"context_line":"            objects\u003d[allocation_1, allocation_2])"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_989a596d","line":125,"range":{"start_line":118,"start_character":0,"end_line":125,"end_character":55},"in_reply_to":"9fdfeff1_07d8537c","updated":"2019-03-01 22:20:28.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # redo one allocation"},{"line_number":173,"context_line":"        # TODO(cdent): This does not currently behave as expected"},{"line_number":174,"context_line":"        # because a new allocataion is created, adding to the total"},{"line_number":175,"context_line":"        # used, not replacing."},{"line_number":176,"context_line":"        rp1_used +\u003d 1"},{"line_number":177,"context_line":"        self.allocate_from_provider(rp1, rp1_class, rp1_used,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_07c13380","line":174,"range":{"start_line":174,"start_character":24,"end_line":174,"end_character":35},"updated":"2019-03-01 16:23:35.000000000","message":"[unrelated] allocation","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"888f0db74004bbfb05eb183064a62cae6b5eab3e","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # redo one allocation"},{"line_number":173,"context_line":"        # TODO(cdent): This does not currently behave as expected"},{"line_number":174,"context_line":"        # because a new allocataion is created, adding to the total"},{"line_number":175,"context_line":"        # used, not replacing."},{"line_number":176,"context_line":"        rp1_used +\u003d 1"},{"line_number":177,"context_line":"        self.allocate_from_provider(rp1, rp1_class, rp1_used,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_8332ee0e","line":174,"range":{"start_line":174,"start_character":24,"end_line":174,"end_character":35},"in_reply_to":"9fdfeff1_07c13380","updated":"2019-03-01 23:48:22.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # Create two allocations with values and confirm the resulting"},{"line_number":268,"context_line":"        # usage is as expected."},{"line_number":269,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":270,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":271,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":272,"context_line":"                                        used\u003d100)"},{"line_number":273,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":274,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":275,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":276,"context_line":"                                        used\u003d200)"},{"line_number":277,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":278,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":279,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_e74aef24","line":276,"range":{"start_line":269,"start_character":0,"end_line":276,"end_character":49},"updated":"2019-03-01 16:23:35.000000000","message":"fix indent\n\n...should we consider un-ignoring some of the pep whitespace rules?","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"23056aee22098981ee49a19f3c01a5dcc20f1b47","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # Create two allocations with values and confirm the resulting"},{"line_number":268,"context_line":"        # usage is as expected."},{"line_number":269,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":270,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":271,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":272,"context_line":"                                        used\u003d100)"},{"line_number":273,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":274,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":275,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":276,"context_line":"                                        used\u003d200)"},{"line_number":277,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":278,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":279,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_03591e5a","line":276,"range":{"start_line":269,"start_character":0,"end_line":276,"end_character":49},"in_reply_to":"9fdfeff1_788bf51d","updated":"2019-03-01 23:42:21.000000000","message":"\u003e \u003e ...should we consider un-ignoring some of the pep whitespace\n \u003e rules?\n \u003e \n \u003e Later\n\nhttps://review.openstack.org/#/c/640554/","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # Create two allocations with values and confirm the resulting"},{"line_number":268,"context_line":"        # usage is as expected."},{"line_number":269,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":270,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":271,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":272,"context_line":"                                        used\u003d100)"},{"line_number":273,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":274,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":275,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":276,"context_line":"                                        used\u003d200)"},{"line_number":277,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":278,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":279,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_788bf51d","line":276,"range":{"start_line":269,"start_character":0,"end_line":276,"end_character":49},"in_reply_to":"9fdfeff1_e74aef24","updated":"2019-03-01 22:20:28.000000000","message":"\u003e fix indent\n\nDone\n\n \u003e ...should we consider un-ignoring some of the pep whitespace rules?\n\nLater","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        # Create two allocations, one with 0 used, to confirm the"},{"line_number":289,"context_line":"        # resulting usage is only of one."},{"line_number":290,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":291,"context_line":"                                         consumer\u003dinst_consumer,"},{"line_number":292,"context_line":"                                         resource_class\u003drp_class,"},{"line_number":293,"context_line":"                                         used\u003d0)"},{"line_number":294,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":295,"context_line":"                                         consumer\u003dinst_consumer,"},{"line_number":296,"context_line":"                                         resource_class\u003drp_class,"},{"line_number":297,"context_line":"                                         used\u003d200)"},{"line_number":298,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":299,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":300,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_270b17d5","line":297,"range":{"start_line":290,"start_character":0,"end_line":297,"end_character":50},"updated":"2019-03-01 16:23:35.000000000","message":"fix indent","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        # Create two allocations, one with 0 used, to confirm the"},{"line_number":289,"context_line":"        # resulting usage is only of one."},{"line_number":290,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":291,"context_line":"                                         consumer\u003dinst_consumer,"},{"line_number":292,"context_line":"                                         resource_class\u003drp_class,"},{"line_number":293,"context_line":"                                         used\u003d0)"},{"line_number":294,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":295,"context_line":"                                         consumer\u003dinst_consumer,"},{"line_number":296,"context_line":"                                         resource_class\u003drp_class,"},{"line_number":297,"context_line":"                                         used\u003d200)"},{"line_number":298,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":299,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":300,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_1880a9f7","line":297,"range":{"start_line":290,"start_character":0,"end_line":297,"end_character":50},"in_reply_to":"9fdfeff1_270b17d5","updated":"2019-03-01 22:20:28.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        # Create two allocations, one as the consumer, one as the"},{"line_number":323,"context_line":"        # migration."},{"line_number":324,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":325,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":326,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":327,"context_line":"                                        used\u003d200)"},{"line_number":328,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dsource_rp,"},{"line_number":329,"context_line":"                                        consumer\u003dmig_consumer,"},{"line_number":330,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":331,"context_line":"                                        used\u003d200)"},{"line_number":332,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":333,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":334,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_470e5be4","line":331,"range":{"start_line":324,"start_character":0,"end_line":331,"end_character":49},"updated":"2019-03-01 16:23:35.000000000","message":"ditto","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        # Create two allocations, one as the consumer, one as the"},{"line_number":323,"context_line":"        # migration."},{"line_number":324,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":325,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":326,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":327,"context_line":"                                        used\u003d200)"},{"line_number":328,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dsource_rp,"},{"line_number":329,"context_line":"                                        consumer\u003dmig_consumer,"},{"line_number":330,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":331,"context_line":"                                        used\u003d200)"},{"line_number":332,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":333,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":334,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_d879c130","line":331,"range":{"start_line":324,"start_character":0,"end_line":331,"end_character":49},"in_reply_to":"9fdfeff1_470e5be4","updated":"2019-03-01 22:20:28.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        self.assertEqual(200, usage)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        # Clear the migration and confirm the target."},{"line_number":352,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":353,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":354,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":355,"context_line":"                                        used\u003d200)"},{"line_number":356,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dsource_rp,"},{"line_number":357,"context_line":"                                        consumer\u003dmig_consumer,"},{"line_number":358,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":359,"context_line":"                                        used\u003d0)"},{"line_number":360,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":361,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":362,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_e7f8afc4","line":359,"range":{"start_line":352,"start_character":0,"end_line":359,"end_character":47},"updated":"2019-03-01 16:23:35.000000000","message":"ditto","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"857257eb500af2adbce1f874b2742aa047939758","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        self.assertEqual(200, usage)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        # Clear the migration and confirm the target."},{"line_number":352,"context_line":"        allocation1 \u003d alloc_obj.Allocation(resource_provider\u003dtarget_rp,"},{"line_number":353,"context_line":"                                        consumer\u003dinst_consumer,"},{"line_number":354,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":355,"context_line":"                                        used\u003d200)"},{"line_number":356,"context_line":"        allocation2 \u003d alloc_obj.Allocation(resource_provider\u003dsource_rp,"},{"line_number":357,"context_line":"                                        consumer\u003dmig_consumer,"},{"line_number":358,"context_line":"                                        resource_class\u003drp_class,"},{"line_number":359,"context_line":"                                        used\u003d0)"},{"line_number":360,"context_line":"        allocation_list \u003d alloc_obj.AllocationList("},{"line_number":361,"context_line":"            objects\u003d[allocation1, allocation2],"},{"line_number":362,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_f8760540","line":359,"range":{"start_line":352,"start_character":0,"end_line":359,"end_character":47},"in_reply_to":"9fdfeff1_e7f8afc4","updated":"2019-03-01 22:20:28.000000000","message":"Done","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"56441b4481098600a67405a3cf4ebf4c39a950b4","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        with mock.patch.object(alloc_obj.AllocationList,"},{"line_number":513,"context_line":"                               \u0027RP_CONFLICT_RETRY_COUNT\u0027, 3):"},{"line_number":514,"context_line":"            unmocked_set \u003d functools.partial("},{"line_number":515,"context_line":"                alloc_obj.AllocationList._set_allocations, alloc_list)"},{"line_number":516,"context_line":"            with mock.patch(\u0027placement.objects.allocation.\u0027"},{"line_number":517,"context_line":"                            \u0027AllocationList._set_allocations\u0027) as mock_set:"},{"line_number":518,"context_line":"                exceptions \u003d iter(["}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_8731a3a4","line":515,"range":{"start_line":515,"start_character":41,"end_line":515,"end_character":57},"updated":"2019-03-01 16:23:35.000000000","message":"Access to private. But presumably this goes away in the next patch.","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"888f0db74004bbfb05eb183064a62cae6b5eab3e","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        with mock.patch.object(alloc_obj.AllocationList,"},{"line_number":513,"context_line":"                               \u0027RP_CONFLICT_RETRY_COUNT\u0027, 3):"},{"line_number":514,"context_line":"            unmocked_set \u003d functools.partial("},{"line_number":515,"context_line":"                alloc_obj.AllocationList._set_allocations, alloc_list)"},{"line_number":516,"context_line":"            with mock.patch(\u0027placement.objects.allocation.\u0027"},{"line_number":517,"context_line":"                            \u0027AllocationList._set_allocations\u0027) as mock_set:"},{"line_number":518,"context_line":"                exceptions \u003d iter(["}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_5efb7914","line":515,"range":{"start_line":515,"start_character":41,"end_line":515,"end_character":57},"in_reply_to":"9fdfeff1_8731a3a4","updated":"2019-03-01 23:48:22.000000000","message":"No. We generally forgive these coming from test; though more so from unit than functional. Left this alone for now.","commit_id":"917dbbba0f213f0c1aa5cdbca5d6c1a63ad3730f"}],"placement/tests/functional/db/test_resource_provider.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"56bae4d5a5ad4b16439e4b0c84c53d0a985ef950","unresolved":false,"context_lines":[{"line_number":1136,"context_line":"                [s1.id, s2.id, s3.id, s4.id, s5.id], get_id\u003dTrue))"},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"class TestAllocation(tb.PlacementDbBaseTestCase):"},{"line_number":1140,"context_line":""},{"line_number":1141,"context_line":"    def test_create_list_and_delete_allocation(self):"},{"line_number":1142,"context_line":"        rp, _ \u003d self._make_allocation(tb.DISK_INVENTORY, tb.DISK_ALLOCATION)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_341b1a1c","line":1139,"updated":"2019-03-06 20:08:50.000000000","message":"I neglected to move this to test.functional.db.test_allocation.\n\nWe should do that. If someone else is reading and is eager, go for it.","commit_id":"322c6f5b61fa8500ee0bf38d802f8fc7703db4df"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a5c0f32a5094dae681473498dcd2da74bdaad0a5","unresolved":false,"context_lines":[{"line_number":1136,"context_line":"                [s1.id, s2.id, s3.id, s4.id, s5.id], get_id\u003dTrue))"},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"class TestAllocation(tb.PlacementDbBaseTestCase):"},{"line_number":1140,"context_line":""},{"line_number":1141,"context_line":"    def test_create_list_and_delete_allocation(self):"},{"line_number":1142,"context_line":"        rp, _ \u003d self._make_allocation(tb.DISK_INVENTORY, tb.DISK_ALLOCATION)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_2b65f1b5","line":1139,"in_reply_to":"5fc1f717_341b1a1c","updated":"2019-03-07 00:17:49.000000000","message":"https://review.openstack.org/641524","commit_id":"322c6f5b61fa8500ee0bf38d802f8fc7703db4df"}],"placement/tests/unit/objects/test_resource_provider.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9eb91cd253deb4354253ccd7e15b8e105e6e57a6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    \u0027created_at\u0027: timeutils.utcnow(with_timezone\u003dTrue),"},{"line_number":71,"context_line":"}"},{"line_number":72,"context_line":"_ALLOCATION_ID \u003d 2"},{"line_number":73,"context_line":"_ALLOCATION_DB \u003d {"},{"line_number":74,"context_line":"    \u0027id\u0027: _ALLOCATION_ID,"},{"line_number":75,"context_line":"    \u0027resource_provider_id\u0027: _RESOURCE_PROVIDER_ID,"},{"line_number":76,"context_line":"    \u0027resource_class_id\u0027: _RESOURCE_CLASS_ID,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_33e0e2fa","line":73,"updated":"2019-03-08 17:04:07.000000000","message":"Another thing missed (my bad), this was copied to test_allocation but not removed from here.","commit_id":"322c6f5b61fa8500ee0bf38d802f8fc7703db4df"}]}
