)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"06332e8fea8b9023a9be12ac1b42c1cd20d33c62","unresolved":false,"context_lines":[{"line_number":16,"context_line":"request groups (and thus suffixes) can consume resources from"},{"line_number":17,"context_line":"the same provider and the original implementation did not"},{"line_number":18,"context_line":"account for this. Change Ifb687698dd1aa434781d06c7f111d8969120bf71"},{"line_number":19,"context_line":"provides a fix for this but it is represents some cognitive and"},{"line_number":20,"context_line":"maintenance issues because it associates a vector value with a"},{"line_number":21,"context_line":"scalar concept. That is: it is illogical for an"},{"line_number":22,"context_line":"AllocationRequestResource (a representation of single consumption of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7faddb67_be61383c","line":19,"range":{"start_line":19,"start_character":31,"end_line":19,"end_character":33},"updated":"2019-07-05 04:45:14.000000000","message":"nix?","commit_id":"06256d86c71929d697290b2fe05d1654c69ed9f0"}],"placement/handlers/allocation_candidate.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a25b9d1e02973bdbc5803c0348d91d67ba3bd3c6","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            res_dict[rr.resource_class] \u003d rr.amount"},{"line_number":74,"context_line":"        result \u003d dict(allocations\u003drp_resources)"},{"line_number":75,"context_line":"        if want_version.matches((1, 34)):"},{"line_number":76,"context_line":"            result[\u0027mappings\u0027] \u003d {suffix: list(providers)"},{"line_number":77,"context_line":"                                  for suffix, providers in ar.mappings.items()}"},{"line_number":78,"context_line":"        results.append(result)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9501ceb2","line":76,"range":{"start_line":76,"start_character":42,"end_line":76,"end_character":47},"updated":"2019-07-03 22:12:46.000000000","message":"Is this listification necessary for the output? What JSON data type shows up if you don\u0027t do this (and instead just say result[\u0027mappings\u0027] \u003d ar.mappings)?","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"bd9a8b31bed5c1efac98dbcb17af83a30c373644","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            res_dict[rr.resource_class] \u003d rr.amount"},{"line_number":74,"context_line":"        result \u003d dict(allocations\u003drp_resources)"},{"line_number":75,"context_line":"        if want_version.matches((1, 34)):"},{"line_number":76,"context_line":"            result[\u0027mappings\u0027] \u003d {suffix: list(providers)"},{"line_number":77,"context_line":"                                  for suffix, providers in ar.mappings.items()}"},{"line_number":78,"context_line":"        results.append(result)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_21f69591","line":76,"range":{"start_line":76,"start_character":42,"end_line":76,"end_character":47},"in_reply_to":"7faddb67_9501ceb2","updated":"2019-07-04 08:43:16.000000000","message":"Weird. I was certain I had tried that at some point and it didn\u0027t work. I suspect that was in one of the earlier iterations with a slightly different data structure. mappings \u003d ar.mappings does appear to work and is definitely much better, so I\u0027ll change this, in this version.","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"}],"placement/objects/allocation_candidate.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a25b9d1e02973bdbc5803c0348d91d67ba3bd3c6","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        #  (ARR(rc1, ss2), ARR(rc2, ss1), ARR(rc3, ss1)),"},{"line_number":327,"context_line":"        #  (ARR(rc1, ss2), ARR(rc2, ss2), ARR(rc3, ss1))]"},{"line_number":328,"context_line":"        for res_requests in itertools.product(*request_groups):"},{"line_number":329,"context_line":"            mappings \u003d collections.defaultdict(set)"},{"line_number":330,"context_line":"            if not _check_traits_for_alloc_request("},{"line_number":331,"context_line":"                    res_requests, summaries,"},{"line_number":332,"context_line":"                    rg_ctx.required_trait_map,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_15dcfe44","line":329,"range":{"start_line":329,"start_character":12,"end_line":329,"end_character":51},"updated":"2019-07-03 22:12:46.000000000","message":"nit: this could go after the trait check","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a25b9d1e02973bdbc5803c0348d91d67ba3bd3c6","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        resource_requests\u003dresource_requests,"},{"line_number":443,"context_line":"        anchor_root_provider_uuid\u003dprovider.root_provider_uuid)"},{"line_number":444,"context_line":"    alloc_req.mappings[suffix].add(provider.uuid)"},{"line_number":445,"context_line":"    return alloc_req"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def _build_provider_summaries(context, usages, prov_traits):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_d5542657","line":445,"updated":"2019-07-03 22:12:46.000000000","message":"I spent a while trying to figure out why this was structured differently from above (L329-341) and below (L589-609).\n\n 1) mappings \u003d collections.defaultdict(set)\n 2) ... build up mappings ...\n 3) AllocationRequest(..., mappings\u003dmappings)\n\nI guess it\u0027s because step 2 would be slightly contrived here?\n\n 2) mappings[suffix].add(provider.uuid)\n\nBut even so, I would prefer consistency.","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"eb9ca46b599f630819508d5fc36852ff3c7695be","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        resource_requests\u003dresource_requests,"},{"line_number":443,"context_line":"        anchor_root_provider_uuid\u003dprovider.root_provider_uuid)"},{"line_number":444,"context_line":"    alloc_req.mappings[suffix].add(provider.uuid)"},{"line_number":445,"context_line":"    return alloc_req"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def _build_provider_summaries(context, usages, prov_traits):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_f2d92df4","line":445,"in_reply_to":"7faddb67_72753d98","updated":"2019-07-04 10:50:08.000000000","message":"++","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a056c6d41b538be6b2fe270a8127ef99be187e01","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        resource_requests\u003dresource_requests,"},{"line_number":443,"context_line":"        anchor_root_provider_uuid\u003dprovider.root_provider_uuid)"},{"line_number":444,"context_line":"    alloc_req.mappings[suffix].add(provider.uuid)"},{"line_number":445,"context_line":"    return alloc_req"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def _build_provider_summaries(context, usages, prov_traits):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_72753d98","line":445,"in_reply_to":"7faddb67_97c0eb52","updated":"2019-07-04 10:17:43.000000000","message":"I reckon the key thing is that we never add to an existing AR that gets carried around between methods; but we do sometimes create a new one that is assembled from others.\n\nSo, it _might_, be useful to not have the defaultdict concept in AR class at all, and just use it externally, thus removing the ambiguity?\n\nWhat you reckon?","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7aa353ea278f37f3cdbd52927a7f479f7b4a6030","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        resource_requests\u003dresource_requests,"},{"line_number":443,"context_line":"        anchor_root_provider_uuid\u003dprovider.root_provider_uuid)"},{"line_number":444,"context_line":"    alloc_req.mappings[suffix].add(provider.uuid)"},{"line_number":445,"context_line":"    return alloc_req"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def _build_provider_summaries(context, usages, prov_traits):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_97c0eb52","line":445,"in_reply_to":"7faddb67_c1e301a4","updated":"2019-07-04 10:06:08.000000000","message":"I think it still needs to be defaultdict in case we need to combine....\n\nUgh, now I can\u0027t think of a code path that would require defaultdict.\n\nConsistency? Just in case?\n\n[Later] okay, what about this: unsuffixed and suffixed request the same resource class, and the suffixed one gets processed first.\n\n....no, that should work too.\n\nIn fact, _consolidate below is the only place we actually *need* the defaultdict. (The one in _multiple_providers is convenient for the way you\u0027re looping, but a comp could replace the loop if getting rid of the defaultdict was a goal.)\n\nAnyway, I\u0027ve convinced myself (again by staring at it for a while) that this is good as is. Ignore my ramblings.","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"bd9a8b31bed5c1efac98dbcb17af83a30c373644","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        resource_requests\u003dresource_requests,"},{"line_number":443,"context_line":"        anchor_root_provider_uuid\u003dprovider.root_provider_uuid)"},{"line_number":444,"context_line":"    alloc_req.mappings[suffix].add(provider.uuid)"},{"line_number":445,"context_line":"    return alloc_req"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def _build_provider_summaries(context, usages, prov_traits):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_c1e301a4","line":445,"in_reply_to":"7faddb67_d5542657","updated":"2019-07-04 08:43:16.000000000","message":"mappings \u003d {suffix: set([provider.uuid])}                                     \n \nought to work so I\u0027ll do that","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a25b9d1e02973bdbc5803c0348d91d67ba3bd3c6","unresolved":false,"context_lines":[{"line_number":601,"context_line":"                arrs_by_rp_rc[key] \u003d copy.copy(arr)"},{"line_number":602,"context_line":"            else:"},{"line_number":603,"context_line":"                arrs_by_rp_rc[key].amount +\u003d arr.amount"},{"line_number":604,"context_line":"        for mapping, providers in areq.mappings.items():"},{"line_number":605,"context_line":"            mappings[mapping].update(providers)"},{"line_number":606,"context_line":"    return AllocationRequest("},{"line_number":607,"context_line":"        resource_requests\u003dlist(arrs_by_rp_rc.values()),"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_75f4525c","line":604,"range":{"start_line":604,"start_character":12,"end_line":604,"end_character":19},"updated":"2019-07-03 22:12:46.000000000","message":"prefer if this was called \u0027suffix\u0027","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"bd9a8b31bed5c1efac98dbcb17af83a30c373644","unresolved":false,"context_lines":[{"line_number":601,"context_line":"                arrs_by_rp_rc[key] \u003d copy.copy(arr)"},{"line_number":602,"context_line":"            else:"},{"line_number":603,"context_line":"                arrs_by_rp_rc[key].amount +\u003d arr.amount"},{"line_number":604,"context_line":"        for mapping, providers in areq.mappings.items():"},{"line_number":605,"context_line":"            mappings[mapping].update(providers)"},{"line_number":606,"context_line":"    return AllocationRequest("},{"line_number":607,"context_line":"        resource_requests\u003dlist(arrs_by_rp_rc.values()),"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_a1f4c55c","line":604,"range":{"start_line":604,"start_character":12,"end_line":604,"end_character":19},"in_reply_to":"7faddb67_75f4525c","updated":"2019-07-04 08:43:16.000000000","message":"Done","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7aa353ea278f37f3cdbd52927a7f479f7b4a6030","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        # use only, not included when the object is serialized for output."},{"line_number":180,"context_line":"        self.use_same_provider \u003d use_same_provider"},{"line_number":181,"context_line":"        self.resource_requests \u003d resource_requests or []"},{"line_number":182,"context_line":"        self.mappings \u003d mappings or collections.defaultdict(set)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def __repr__(self):"},{"line_number":185,"context_line":"        anchor \u003d (self.anchor_root_provider_uuid[-8:]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_b74727bd","line":182,"range":{"start_line":182,"start_character":63,"end_line":182,"end_character":64},"updated":"2019-07-04 10:06:08.000000000","message":"And at this point this defaulting is technically unnecessary, but good for consistency with the surrounding code (where the defaulting might also be unnecessary? but mucking with that would be not related).","commit_id":"04570ce57ec5a078066cadc1023e3dd10fa62ea6"}],"placement/tests/functional/db/test_allocation_candidates.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a25b9d1e02973bdbc5803c0348d91d67ba3bd3c6","unresolved":false,"context_lines":[{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    def _mappings_to_suffix(self, mappings):"},{"line_number":949,"context_line":"        \"\"\"Turn a dict of AllocationRequest mappings keyed on suffix to"},{"line_number":950,"context_line":"        a dict keyed by uuid, listed suffixes."},{"line_number":951,"context_line":"        \"\"\""},{"line_number":952,"context_line":"        suffix_by_uuid \u003d collections.defaultdict(set)"},{"line_number":953,"context_line":"        for suffix, rps in mappings.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_d5c42695","line":950,"range":{"start_line":950,"start_character":8,"end_line":950,"end_character":45},"updated":"2019-07-03 22:12:46.000000000","message":"a dict, keyed by uuid, of lists of suffixes\n\n?","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"bd9a8b31bed5c1efac98dbcb17af83a30c373644","unresolved":false,"context_lines":[{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    def _mappings_to_suffix(self, mappings):"},{"line_number":949,"context_line":"        \"\"\"Turn a dict of AllocationRequest mappings keyed on suffix to"},{"line_number":950,"context_line":"        a dict keyed by uuid, listed suffixes."},{"line_number":951,"context_line":"        \"\"\""},{"line_number":952,"context_line":"        suffix_by_uuid \u003d collections.defaultdict(set)"},{"line_number":953,"context_line":"        for suffix, rps in mappings.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_218535ae","line":950,"range":{"start_line":950,"start_character":8,"end_line":950,"end_character":45},"in_reply_to":"7faddb67_d5c42695","updated":"2019-07-04 08:43:16.000000000","message":"Done","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a25b9d1e02973bdbc5803c0348d91d67ba3bd3c6","unresolved":false,"context_lines":[{"line_number":3081,"context_line":"        self._validate_allocation_requests("},{"line_number":3082,"context_line":"            expected, alloc_cands, expect_suffixes\u003dTrue)"},{"line_number":3083,"context_line":""},{"line_number":3084,"context_line":"    def test_nested_result_suffix_mappings_non_isolated(self):"},{"line_number":3085,"context_line":"        \"\"\"Confirm that paying attention to suffix mappings expands"},{"line_number":3086,"context_line":"        the quantity of results and confirm those results."},{"line_number":3087,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_f5c12282","line":3084,"updated":"2019-07-03 22:12:46.000000000","message":"what a lovely test","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7aa353ea278f37f3cdbd52927a7f479f7b4a6030","unresolved":false,"context_lines":[{"line_number":3081,"context_line":"        self._validate_allocation_requests("},{"line_number":3082,"context_line":"            expected, alloc_cands, expect_suffixes\u003dTrue)"},{"line_number":3083,"context_line":""},{"line_number":3084,"context_line":"    def test_nested_result_suffix_mappings_non_isolated(self):"},{"line_number":3085,"context_line":"        \"\"\"Confirm that paying attention to suffix mappings expands"},{"line_number":3086,"context_line":"        the quantity of results and confirm those results."},{"line_number":3087,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_5788331e","line":3084,"in_reply_to":"7faddb67_c158e157","updated":"2019-07-04 10:06:08.000000000","message":"I followed your line of thought. All good.\n\nBesides, pretty sure this is like 85% copy/paste from one of yours :P","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"bd9a8b31bed5c1efac98dbcb17af83a30c373644","unresolved":false,"context_lines":[{"line_number":3081,"context_line":"        self._validate_allocation_requests("},{"line_number":3082,"context_line":"            expected, alloc_cands, expect_suffixes\u003dTrue)"},{"line_number":3083,"context_line":""},{"line_number":3084,"context_line":"    def test_nested_result_suffix_mappings_non_isolated(self):"},{"line_number":3085,"context_line":"        \"\"\"Confirm that paying attention to suffix mappings expands"},{"line_number":3086,"context_line":"        the quantity of results and confirm those results."},{"line_number":3087,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_c158e157","line":3084,"in_reply_to":"7faddb67_f5c12282","updated":"2019-07-04 08:43:16.000000000","message":"quite.\n\nI was going to give you a co-author credit but then I worried that it would stumble the voting process, and besides your stats are in good shape anyway","commit_id":"ccb8606303b1c30ea9d810a8a75424674f0130b8"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"06332e8fea8b9023a9be12ac1b42c1cd20d33c62","unresolved":false,"context_lines":[{"line_number":954,"context_line":"            for rp_uuid in rps:"},{"line_number":955,"context_line":"                suffix_by_uuid[rp_uuid].add(suffix)"},{"line_number":956,"context_line":"        listed_sorted_suffixes \u003d {}"},{"line_number":957,"context_line":"        for suffix, rps in suffix_by_uuid.items():"},{"line_number":958,"context_line":"            listed_sorted_suffixes[suffix] \u003d sorted(list(rps))"},{"line_number":959,"context_line":"        return listed_sorted_suffixes"},{"line_number":960,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_3e030845","line":957,"range":{"start_line":957,"start_character":12,"end_line":957,"end_character":23},"updated":"2019-07-05 04:45:14.000000000","message":"rp, suffixes","commit_id":"06256d86c71929d697290b2fe05d1654c69ed9f0"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"eeb9f0ca1d997bf25b546b325497254b3a1a3e42","unresolved":false,"context_lines":[{"line_number":954,"context_line":"            for rp_uuid in rps:"},{"line_number":955,"context_line":"                suffix_by_uuid[rp_uuid].add(suffix)"},{"line_number":956,"context_line":"        listed_sorted_suffixes \u003d {}"},{"line_number":957,"context_line":"        for suffix, rps in suffix_by_uuid.items():"},{"line_number":958,"context_line":"            listed_sorted_suffixes[suffix] \u003d sorted(list(rps))"},{"line_number":959,"context_line":"        return listed_sorted_suffixes"},{"line_number":960,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_6a8216cb","line":957,"range":{"start_line":957,"start_character":12,"end_line":957,"end_character":23},"in_reply_to":"7faddb67_3e030845","updated":"2019-07-05 09:05:07.000000000","message":"Oh dear. Thanks for noticing.\n\nit\u0027s funny that it even works...\n\nmaking a fup to fix","commit_id":"06256d86c71929d697290b2fe05d1654c69ed9f0"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"06332e8fea8b9023a9be12ac1b42c1cd20d33c62","unresolved":false,"context_lines":[{"line_number":955,"context_line":"                suffix_by_uuid[rp_uuid].add(suffix)"},{"line_number":956,"context_line":"        listed_sorted_suffixes \u003d {}"},{"line_number":957,"context_line":"        for suffix, rps in suffix_by_uuid.items():"},{"line_number":958,"context_line":"            listed_sorted_suffixes[suffix] \u003d sorted(list(rps))"},{"line_number":959,"context_line":"        return listed_sorted_suffixes"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"    def _validate_allocation_requests(self, expected, candidates,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_5e004435","line":958,"range":{"start_line":958,"start_character":35,"end_line":958,"end_character":41},"updated":"2019-07-05 04:45:14.000000000","message":"rp","commit_id":"06256d86c71929d697290b2fe05d1654c69ed9f0"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"06332e8fea8b9023a9be12ac1b42c1cd20d33c62","unresolved":false,"context_lines":[{"line_number":955,"context_line":"                suffix_by_uuid[rp_uuid].add(suffix)"},{"line_number":956,"context_line":"        listed_sorted_suffixes \u003d {}"},{"line_number":957,"context_line":"        for suffix, rps in suffix_by_uuid.items():"},{"line_number":958,"context_line":"            listed_sorted_suffixes[suffix] \u003d sorted(list(rps))"},{"line_number":959,"context_line":"        return listed_sorted_suffixes"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"    def _validate_allocation_requests(self, expected, candidates,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_1efacc41","line":958,"range":{"start_line":958,"start_character":57,"end_line":958,"end_character":60},"updated":"2019-07-05 04:45:14.000000000","message":"suffixes","commit_id":"06256d86c71929d697290b2fe05d1654c69ed9f0"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"06332e8fea8b9023a9be12ac1b42c1cd20d33c62","unresolved":false,"context_lines":[{"line_number":983,"context_line":"        # Extract/convert allocation requests from candidates"},{"line_number":984,"context_line":"        observed \u003d []"},{"line_number":985,"context_line":"        for ar in candidates.allocation_requests:"},{"line_number":986,"context_line":"            suffix_by_uuid \u003d self._mappings_to_suffix(ar.mappings)"},{"line_number":987,"context_line":"            rrs \u003d []"},{"line_number":988,"context_line":"            for rr in ar.resource_requests:"},{"line_number":989,"context_line":"                req_tuple \u003d (self.rp_uuid_to_name[rr.resource_provider.uuid],"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_71e691eb","line":986,"range":{"start_line":986,"start_character":12,"end_line":986,"end_character":26},"updated":"2019-07-05 04:45:14.000000000","message":"suffixes_by_uuid","commit_id":"06256d86c71929d697290b2fe05d1654c69ed9f0"}]}
