)]}'
{"placement/objects/allocation_candidate.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5869a6c98aa7d9d0691a3d6478e92cfd9baba963","unresolved":false,"context_lines":[{"line_number":496,"context_line":"            )"},{"line_number":497,"context_line":"            rw_ctx.summaries_by_id[rp_id] \u003d summary"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        summary.traits \u003d prov_traits[rp_id]"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        rc_id \u003d usage[\u0027resource_class_id\u0027]"},{"line_number":502,"context_line":"        if rc_id is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_2dba51c0","line":499,"range":{"start_line":499,"start_character":8,"end_line":499,"end_character":43},"updated":"2019-08-02 15:49:00.000000000","message":"hm, why is this being done outside of the conditional? (unrelated)","commit_id":"154a46a147a4848557877a51b9deca2241c7c9b4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"10fe61e104a1658cedc7b0669777f58bcb6fcfc9","unresolved":false,"context_lines":[{"line_number":496,"context_line":"            )"},{"line_number":497,"context_line":"            rw_ctx.summaries_by_id[rp_id] \u003d summary"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        summary.traits \u003d prov_traits[rp_id]"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        rc_id \u003d usage[\u0027resource_class_id\u0027]"},{"line_number":502,"context_line":"        if rc_id is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_cd693d25","line":499,"range":{"start_line":499,"start_character":8,"end_line":499,"end_character":43},"in_reply_to":"7faddb67_2dba51c0","updated":"2019-08-02 16:00:38.000000000","message":"looked closer, tried it, works fine.","commit_id":"154a46a147a4848557877a51b9deca2241c7c9b4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"10fe61e104a1658cedc7b0669777f58bcb6fcfc9","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        allocation_ratio \u003d usage[\u0027allocation_ratio\u0027]"},{"line_number":516,"context_line":"        cap \u003d int((usage[\u0027total\u0027] - usage[\u0027reserved\u0027]) * allocation_ratio)"},{"line_number":517,"context_line":"        rc_name \u003d context.rc_cache.string_from_id(rc_id)"},{"line_number":518,"context_line":"        rpsr \u003d ProviderSummaryResource("},{"line_number":519,"context_line":"            resource_class\u003drc_name,"},{"line_number":520,"context_line":"            capacity\u003dcap,"},{"line_number":521,"context_line":"            used\u003dused,"},{"line_number":522,"context_line":"            max_unit\u003dusage[\u0027max_unit\u0027],"},{"line_number":523,"context_line":"        )"},{"line_number":524,"context_line":"        summary.resources.append(rpsr)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"def _check_traits_for_alloc_request(res_requests, summaries, required_traits,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_2df25171","line":524,"range":{"start_line":518,"start_character":0,"end_line":524,"end_character":38},"updated":"2019-08-02 16:00:38.000000000","message":"waitwait\n\nIs this going to duplicate ProviderSummaryResourceZ every time this method is called?","commit_id":"154a46a147a4848557877a51b9deca2241c7c9b4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"041c39c06723b9ed9c02d49ae99be4b618b9ceaa","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        allocation_ratio \u003d usage[\u0027allocation_ratio\u0027]"},{"line_number":516,"context_line":"        cap \u003d int((usage[\u0027total\u0027] - usage[\u0027reserved\u0027]) * allocation_ratio)"},{"line_number":517,"context_line":"        rc_name \u003d context.rc_cache.string_from_id(rc_id)"},{"line_number":518,"context_line":"        rpsr \u003d ProviderSummaryResource("},{"line_number":519,"context_line":"            resource_class\u003drc_name,"},{"line_number":520,"context_line":"            capacity\u003dcap,"},{"line_number":521,"context_line":"            used\u003dused,"},{"line_number":522,"context_line":"            max_unit\u003dusage[\u0027max_unit\u0027],"},{"line_number":523,"context_line":"        )"},{"line_number":524,"context_line":"        summary.resources.append(rpsr)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"def _check_traits_for_alloc_request(res_requests, summaries, required_traits,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_58d8ad51","line":524,"range":{"start_line":518,"start_character":0,"end_line":524,"end_character":38},"in_reply_to":"7faddb67_18423510","updated":"2019-08-02 16:35:24.000000000","message":"\u003e I\u0027m going to play around with that last one...\n\nhttps://review.opendev.org/#/c/674349/","commit_id":"154a46a147a4848557877a51b9deca2241c7c9b4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f96c978008d37945d2f29384dc40b92f2bf9c831","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        allocation_ratio \u003d usage[\u0027allocation_ratio\u0027]"},{"line_number":516,"context_line":"        cap \u003d int((usage[\u0027total\u0027] - usage[\u0027reserved\u0027]) * allocation_ratio)"},{"line_number":517,"context_line":"        rc_name \u003d context.rc_cache.string_from_id(rc_id)"},{"line_number":518,"context_line":"        rpsr \u003d ProviderSummaryResource("},{"line_number":519,"context_line":"            resource_class\u003drc_name,"},{"line_number":520,"context_line":"            capacity\u003dcap,"},{"line_number":521,"context_line":"            used\u003dused,"},{"line_number":522,"context_line":"            max_unit\u003dusage[\u0027max_unit\u0027],"},{"line_number":523,"context_line":"        )"},{"line_number":524,"context_line":"        summary.resources.append(rpsr)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"def _check_traits_for_alloc_request(res_requests, summaries, required_traits,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_18423510","line":524,"range":{"start_line":518,"start_character":0,"end_line":524,"end_character":38},"in_reply_to":"7faddb67_2df25171","updated":"2019-08-02 16:25:22.000000000","message":"...yup. But it works out because _transform_provider_summaries is dict-ifying by RC (and assigning each copy each time).\n\nI see a few options:\n\n1) Leave it, since it works. (-1)\n\n2) Some variant of \"make ProviderSummary.resources a dict, keyed by RC (name or ID)\" [a] so we can \u0027continue\u0027 this loop if that resource is already present.\n\n3) As you said, usage information is static across the operation. So when we enter this method, if a given rp is already in the summaries dict, we know we\u0027ve already calculated it. So we could skip all the logic for those usage entries. We\u0027re already iterating over the usages an extra time (L479) so we could just blow that out into a loop that constructs a pared-down list of usages we need to process.\n\nI\u0027m going to play around with that last one...\n\n[a] The value could be the existing ProviderSummaryResource object, or we could take the resource_class field out of ProviderSummaryResource if we wanted to.","commit_id":"154a46a147a4848557877a51b9deca2241c7c9b4"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"104ba860a6e0fbdfd24c6be0bf954ee26e8540fe","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        allocation_ratio \u003d usage[\u0027allocation_ratio\u0027]"},{"line_number":516,"context_line":"        cap \u003d int((usage[\u0027total\u0027] - usage[\u0027reserved\u0027]) * allocation_ratio)"},{"line_number":517,"context_line":"        rc_name \u003d context.rc_cache.string_from_id(rc_id)"},{"line_number":518,"context_line":"        rpsr \u003d ProviderSummaryResource("},{"line_number":519,"context_line":"            resource_class\u003drc_name,"},{"line_number":520,"context_line":"            capacity\u003dcap,"},{"line_number":521,"context_line":"            used\u003dused,"},{"line_number":522,"context_line":"            max_unit\u003dusage[\u0027max_unit\u0027],"},{"line_number":523,"context_line":"        )"},{"line_number":524,"context_line":"        summary.resources.append(rpsr)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"def _check_traits_for_alloc_request(res_requests, summaries, required_traits,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_d6fd3b6e","line":524,"range":{"start_line":518,"start_character":0,"end_line":524,"end_character":38},"in_reply_to":"7faddb67_58d8ad51","updated":"2019-08-05 12:01:04.000000000","message":"This is exactly the sort of whyreaka moments I was hoping was going to happen by getting the ball rolling. And I had one in response to your patch.","commit_id":"154a46a147a4848557877a51b9deca2241c7c9b4"}]}
