)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3f9c55710ea035b990a4d05afbddafcd87295c8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The AllocationCandidates class and the classes it uses to assemble"},{"line_number":10,"context_line":"a suite of classes are moved to objects/allocation_candidate."},{"line_number":11,"context_line":"Also included are the several methods solely by those classes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Methods which are more directly about resource providers, even"},{"line_number":14,"context_line":"if only used by the allocation_candidate modules, are kept in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5fc1f717_02846a0b","line":11,"updated":"2019-03-08 20:43:28.000000000","message":"used","commit_id":"5f6ce4b6fa2ca239975085013e51895740d025bc"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3f9c55710ea035b990a4d05afbddafcd87295c8","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Tests are updated accordingly."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"As this is already a rather chaotic change, no reordering was"},{"line_number":21,"context_line":"done of the classes and methods in allocation_candidate. That"},{"line_number":22,"context_line":"will follow."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5fc1f717_e2783e2c","line":20,"range":{"start_line":20,"start_character":44,"end_line":20,"end_character":57},"updated":"2019-03-08 20:43:28.000000000","message":"good call.","commit_id":"5f6ce4b6fa2ca239975085013e51895740d025bc"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"75a73dd7241d9814d303c59ccc792798941d4e16","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a suite of classes are moved to objects/allocation_candidate."},{"line_number":11,"context_line":"Also included are the several methods used solely by those classes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Methods which are more directly about resource providers, even"},{"line_number":14,"context_line":"if only used by the allocation_candidate modules, are kept in"},{"line_number":15,"context_line":"resource_provider.py. As a result several methods in"},{"line_number":16,"context_line":"resource_provider.py are made public."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Tests are updated accordingly."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5fc1f717_096bcf84","line":16,"range":{"start_line":13,"start_character":0,"end_line":16,"end_character":37},"updated":"2019-03-14 11:49:46.000000000","message":"Erm, IMO, we can move those methods into the allocation_candidates.py as their private methods. However, I don\u0027t think that should be done at one time in this patch, because the fact confuses us that some of their tests are now in test_resource_providers.py and some are already in test_allocation_candidates unfortunately.\n\nTherefore it should be done carefully step by step, so this looks good to me as a first step, anyway.","commit_id":"0f0d80b6f507cf23e6bf4aa11cec390b5be9f9f6"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b9ccba88a0669de95c290b1d6ac380364d5a1a95","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a suite of classes are moved to objects/allocation_candidate."},{"line_number":11,"context_line":"Also included are the several methods used solely by those classes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Methods which are more directly about resource providers, even"},{"line_number":14,"context_line":"if only used by the allocation_candidate modules, are kept in"},{"line_number":15,"context_line":"resource_provider.py. As a result several methods in"},{"line_number":16,"context_line":"resource_provider.py are made public."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Tests are updated accordingly."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5fc1f717_a95e3b73","line":16,"range":{"start_line":13,"start_character":0,"end_line":16,"end_character":37},"in_reply_to":"5fc1f717_096bcf84","updated":"2019-03-14 11:56:54.000000000","message":"We had some back and forth discussion on what the right thing to do here was. In the end the general consensus the methods should live in the place that is most \"about\" that thing.\n\nHowever, allocation candidates are weird, so there is definitely room for more improvement here, and we should make it, but thankfully, iterating on this stuff works fine and we can move in a stepwise fashion to perfection (at which point we can all congratulate ourselves and go home).","commit_id":"0f0d80b6f507cf23e6bf4aa11cec390b5be9f9f6"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9435f11fbb58c71973c5a3d107a83e3d6d10da8c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a suite of classes are moved to objects/allocation_candidate."},{"line_number":11,"context_line":"Also included are the several methods used solely by those classes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Methods which are more directly about resource providers, even"},{"line_number":14,"context_line":"if only used by the allocation_candidate modules, are kept in"},{"line_number":15,"context_line":"resource_provider.py. As a result several methods in"},{"line_number":16,"context_line":"resource_provider.py are made public."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Tests are updated accordingly."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5fc1f717_ae063ccd","line":16,"range":{"start_line":13,"start_character":0,"end_line":16,"end_character":37},"in_reply_to":"5fc1f717_a95e3b73","updated":"2019-03-14 14:21:17.000000000","message":"A/Cs aren\u0027t really first-level resources, but are derived from resources. So they really don\u0027t exist until they are requested. That makes modeling them a little different, since they are a calculation result of many resources, not just RPs or inventory. There is certainly some merit to keeping them in their own file (discoverability, etc.), but yeah, that can wait.","commit_id":"0f0d80b6f507cf23e6bf4aa11cec390b5be9f9f6"}],"placement/objects/allocation_candidate.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3f9c55710ea035b990a4d05afbddafcd87295c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5fc1f717_82da9a14","updated":"2019-03-08 20:43:28.000000000","message":"✔","commit_id":"5f6ce4b6fa2ca239975085013e51895740d025bc"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"75a73dd7241d9814d303c59ccc792798941d4e16","unresolved":false,"context_lines":[{"line_number":36,"context_line":"_RP_AGG_TBL \u003d models.ResourceProviderAggregate.__table__"},{"line_number":37,"context_line":"_RP_TBL \u003d models.ResourceProvider.__table__"},{"line_number":38,"context_line":"_RP_TRAIT_TBL \u003d models.ResourceProviderTrait.__table__"},{"line_number":39,"context_line":"_TRAIT_TBL \u003d models.Trait.__table__"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_497f9714","line":39,"updated":"2019-03-14 11:49:46.000000000","message":"Some of the tables are not used in this file, but meh, if Dr. pep says this is okay, this is okay.","commit_id":"0f0d80b6f507cf23e6bf4aa11cec390b5be9f9f6"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b9ccba88a0669de95c290b1d6ac380364d5a1a95","unresolved":false,"context_lines":[{"line_number":36,"context_line":"_RP_AGG_TBL \u003d models.ResourceProviderAggregate.__table__"},{"line_number":37,"context_line":"_RP_TBL \u003d models.ResourceProvider.__table__"},{"line_number":38,"context_line":"_RP_TRAIT_TBL \u003d models.ResourceProviderTrait.__table__"},{"line_number":39,"context_line":"_TRAIT_TBL \u003d models.Trait.__table__"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_6954d353","line":39,"in_reply_to":"5fc1f717_497f9714","updated":"2019-03-14 11:56:54.000000000","message":"Yeah, we should clean things like this up as we find them, but it isn\u0027t critical. I think these are still here because of the back and forth over in which module some methods should live.\n\nWe can gather these sort of things in fup.","commit_id":"0f0d80b6f507cf23e6bf4aa11cec390b5be9f9f6"}],"placement/tests/unit/objects/test_allocation_candidate.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3f9c55710ea035b990a4d05afbddafcd87295c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5fc1f717_02354a46","updated":"2019-03-08 20:43:28.000000000","message":"✔","commit_id":"5f6ce4b6fa2ca239975085013e51895740d025bc"}]}
