)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement allocation candidate mappings"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In microversion 1.34 add a \u0027mappings\u0027 key to each allocation"},{"line_number":10,"context_line":"request. It\u0027s value is dict keyed by resource group suffixes"},{"line_number":11,"context_line":"with values of a list of resource providers satisfying that"},{"line_number":12,"context_line":"group."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fb8cfa7_bd3f85b2","line":10,"range":{"start_line":10,"start_character":9,"end_line":10,"end_character":13},"updated":"2019-06-10 17:08:06.000000000","message":"Its","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":469,"context_line":"  description: \u003e"},{"line_number":470,"context_line":"    A dictionary associating request group suffixes with a list of uuids"},{"line_number":471,"context_line":"    identifying the resource providers that satisfied each group. The empty"},{"line_number":472,"context_line":"    string and \"[a-zA-Z0-9\\_-]+\" are valid suffixes. This field may be sent"},{"line_number":473,"context_line":"    when writing allocations back to the server but will be ignored; this"},{"line_number":474,"context_line":"    preserves symmetry between read and write representations."},{"line_number":475,"context_line":"  min_version: 1.34"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_5de4493c","line":472,"range":{"start_line":472,"start_character":26,"end_line":472,"end_character":27},"updated":"2019-06-10 17:08:06.000000000","message":"Could ``literal`` this regex.\n\n(Note to self: check how this renders; we don\u0027t want the backslash in the rendered version.)","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"}],"api-ref/source/samples/allocation_candidates/get-allocation_candidates-1.34.json":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  ],"},{"line_number":34,"context_line":"  \"provider_summaries\": {"},{"line_number":35,"context_line":"    \"be99627d-e848-44ef-8341-683e2e557c58\": {"},{"line_number":36,"context_line":"      \"resources\": {},"},{"line_number":37,"context_line":"      \"traits\": ["},{"line_number":38,"context_line":"        \"COMPUTE_VOLUME_MULTI_ATTACH\""},{"line_number":39,"context_line":"      ],"}],"source_content_type":"application/json","patch_set":7,"id":"9fb8cfa7_dd57d9c9","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":22},"updated":"2019-06-10 17:08:06.000000000","message":"Note to self: We don\u0027t yet support resourceless request groups at 1.34 - but that doesn\u0027t mean we don\u0027t allow resourceless providers. Since this provider doesn\u0027t figure into allocations or mappings, it\u0027s okay to be here.","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"79161823cdac10b619680faa9b677ac466854bdc","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  ],"},{"line_number":34,"context_line":"  \"provider_summaries\": {"},{"line_number":35,"context_line":"    \"be99627d-e848-44ef-8341-683e2e557c58\": {"},{"line_number":36,"context_line":"      \"resources\": {},"},{"line_number":37,"context_line":"      \"traits\": ["},{"line_number":38,"context_line":"        \"COMPUTE_VOLUME_MULTI_ATTACH\""},{"line_number":39,"context_line":"      ],"}],"source_content_type":"application/json","patch_set":7,"id":"9fb8cfa7_d81fe758","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":22},"in_reply_to":"9fb8cfa7_dd57d9c9","updated":"2019-06-10 17:28:20.000000000","message":"Correct, this is here simply because we include the whole tree back to root in provider summaries.","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"e9580bd5078ad2229be8c968d689999f1833faed","unresolved":false,"context_lines":[{"line_number":14,"context_line":"        },"},{"line_number":15,"context_line":"        \"9a9c6b0f-e8d1-4d16-b053-a2bfe8a76757\": {"},{"line_number":16,"context_line":"          \"resources\": {"},{"line_number":17,"context_line":"            \"VCPU\": 1"},{"line_number":18,"context_line":"          }"},{"line_number":19,"context_line":"        }"},{"line_number":20,"context_line":"      },"}],"source_content_type":"application/json","patch_set":10,"id":"9fb8cfa7_45840bd3","line":17,"updated":"2019-06-16 07:01:02.000000000","message":"Let\u0027s update to have MEMORY_MB:256 additionally here,","commit_id":"d38844e39070fff4109c197b6bd45d18b83c227a"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"e9580bd5078ad2229be8c968d689999f1833faed","unresolved":false,"context_lines":[{"line_number":26,"context_line":"          \"cefbdf54-05a8-4db4-ad2b-d6729e5a4de8\""},{"line_number":27,"context_line":"        ],"},{"line_number":28,"context_line":"        \"\": ["},{"line_number":29,"context_line":"          \"9a9c6b0f-e8d1-4d16-b053-a2bfe8a76757\""},{"line_number":30,"context_line":"        ]"},{"line_number":31,"context_line":"      }"},{"line_number":32,"context_line":"    }"}],"source_content_type":"application/json","patch_set":10,"id":"9fb8cfa7_056a9318","line":29,"updated":"2019-06-16 07:01:02.000000000","message":"... then do we expect one more \"9a9c6b0f-e8d1-4d16-b053-a2bfe8a76757\" here?\n\nIf yes the master is good as is, but according to the spec [1] it doesn\u0027t repeat, does it?\n\n[1] https://review.opendev.org/#/c/657582/4/doc/source/specs/train/approved/placement-resource-provider-request-group-mapping-in-allocation-candidates.rst@359","commit_id":"d38844e39070fff4109c197b6bd45d18b83c227a"}],"placement/handlers/allocation_candidate.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # solutions to that group."},{"line_number":73,"context_line":"        mappings \u003d collections.defaultdict(list)"},{"line_number":74,"context_line":"        for rr in ar.resource_requests:"},{"line_number":75,"context_line":"            suffix \u003d rr.suffix"},{"line_number":76,"context_line":"            mappings[suffix].append(rr.resource_provider.uuid)"},{"line_number":77,"context_line":"            res_dict \u003d rp_resources[rr.resource_provider.uuid][\u0027resources\u0027]"},{"line_number":78,"context_line":"            res_dict[rr.resource_class] \u003d rr.amount"},{"line_number":79,"context_line":"        result \u003d dict(allocations\u003drp_resources)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_3d35d58f","line":76,"range":{"start_line":75,"start_character":0,"end_line":76,"end_character":62},"updated":"2019-06-10 17:08:06.000000000","message":"I guess this is cheap enough not to wrap it in a conditional also","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"79161823cdac10b619680faa9b677ac466854bdc","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # solutions to that group."},{"line_number":73,"context_line":"        mappings \u003d collections.defaultdict(list)"},{"line_number":74,"context_line":"        for rr in ar.resource_requests:"},{"line_number":75,"context_line":"            suffix \u003d rr.suffix"},{"line_number":76,"context_line":"            mappings[suffix].append(rr.resource_provider.uuid)"},{"line_number":77,"context_line":"            res_dict \u003d rp_resources[rr.resource_provider.uuid][\u0027resources\u0027]"},{"line_number":78,"context_line":"            res_dict[rr.resource_class] \u003d rr.amount"},{"line_number":79,"context_line":"        result \u003d dict(allocations\u003drp_resources)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_1886df67","line":76,"range":{"start_line":75,"start_character":0,"end_line":76,"end_character":62},"in_reply_to":"9fb8cfa7_3d35d58f","updated":"2019-06-10 17:28:20.000000000","message":"pretty much. it seemed ugly to do it twice, and I think we should be writing the code optimized/oriented for the latest version","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"e9580bd5078ad2229be8c968d689999f1833faed","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        rp_resources \u003d collections.defaultdict(lambda: dict(resources\u003d{}))"},{"line_number":71,"context_line":"        # A dict to map request group suffixes to the providers that provided"},{"line_number":72,"context_line":"        # solutions to that group."},{"line_number":73,"context_line":"        mappings \u003d collections.defaultdict(list)"},{"line_number":74,"context_line":"        for rr in ar.resource_requests:"},{"line_number":75,"context_line":"            suffix \u003d rr.suffix"},{"line_number":76,"context_line":"            mappings[suffix].append(rr.resource_provider.uuid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fb8cfa7_2581d7c3","line":73,"range":{"start_line":73,"start_character":43,"end_line":73,"end_character":47},"updated":"2019-06-16 07:01:02.000000000","message":"Not sure this should be a list or a set, see my other comments above.","commit_id":"d38844e39070fff4109c197b6bd45d18b83c227a"}],"placement/rest_api_version_history.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":634,"context_line":"The body of the response to a ``GET /allocation_candidates`` request has been"},{"line_number":635,"context_line":"extended to include a ``mappings`` field with each allocation request. The"},{"line_number":636,"context_line":"value is a dictionary associating request group suffixes with the uuids of"},{"line_number":637,"context_line":"those resource providers that satisfy the identified request group. "}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_bd20e549","line":637,"updated":"2019-06-10 17:08:06.000000000","message":"trailing space\n\n...\"The mapping can be sent back...\" (see reno comment)","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"}],"placement/tests/functional/gabbits/allocation-candidates-mappings-numa.yaml":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"  response_json_paths:"},{"line_number":48,"context_line":"      $.allocation_requests.`len`: 3"},{"line_number":49,"context_line":"      $.provider_summaries.`len`: 23"},{"line_number":50,"context_line":"      # keys is allocations"},{"line_number":51,"context_line":"      $.allocation_requests[0].`len`: 1"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"- name: simple isolated mapping"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_fdb89de5","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":27},"updated":"2019-06-10 17:08:06.000000000","message":"weird but arguably correct grammar :P","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":84,"context_line":"      $.allocation_requests[0].mappings._NET2.`len`: 1"},{"line_number":85,"context_line":"      $.allocation_requests[0].mappings[\u0027\u0027][0]: /$ENVIRON[\u0027NUMA0_UUID\u0027]|$ENVIRON[\u0027NUMA1_UUID\u0027]/"},{"line_number":86,"context_line":"      $.allocation_requests[0].mappings._NET1[0]: $ENVIRON[\u0027ESN1_UUID\u0027]"},{"line_number":87,"context_line":"      $.allocation_requests[0].mappings._NET2[0]: $ENVIRON[\u0027ESN2_UUID\u0027]"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_bd93055b","line":87,"updated":"2019-06-10 17:08:06.000000000","message":"nice","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"}],"placement/tests/functional/gabbits/allocation-candidates-mappings-sharing.yaml":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":73,"context_line":"          VCPU: 1"},{"line_number":74,"context_line":"      $.allocation_requests[0].mappings.`len`: 3"},{"line_number":75,"context_line":"      $.allocation_requests[0].mappings[\"\"][0]: $ENVIRON[\u0027CN_MIDDLE\u0027]"},{"line_number":76,"context_line":"      $.allocation_requests[0].mappings[\u0027_DISK_A\u0027][0]: /(?:$ENVIRON[\u0027SHR_DISK_1\u0027]|$ENVIRON[\u0027SHR_DISK_2\u0027])/"},{"line_number":77,"context_line":"      $.allocation_requests[0].mappings[\u0027_DISK_B\u0027][0]: /(?:$ENVIRON[\u0027SHR_DISK_1\u0027]|$ENVIRON[\u0027SHR_DISK_2\u0027])/"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_1ddfb10d","line":76,"range":{"start_line":76,"start_character":56,"end_line":76,"end_character":59},"updated":"2019-06-10 17:08:06.000000000","message":"Why?","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"79161823cdac10b619680faa9b677ac466854bdc","unresolved":false,"context_lines":[{"line_number":73,"context_line":"          VCPU: 1"},{"line_number":74,"context_line":"      $.allocation_requests[0].mappings.`len`: 3"},{"line_number":75,"context_line":"      $.allocation_requests[0].mappings[\"\"][0]: $ENVIRON[\u0027CN_MIDDLE\u0027]"},{"line_number":76,"context_line":"      $.allocation_requests[0].mappings[\u0027_DISK_A\u0027][0]: /(?:$ENVIRON[\u0027SHR_DISK_1\u0027]|$ENVIRON[\u0027SHR_DISK_2\u0027])/"},{"line_number":77,"context_line":"      $.allocation_requests[0].mappings[\u0027_DISK_B\u0027][0]: /(?:$ENVIRON[\u0027SHR_DISK_1\u0027]|$ENVIRON[\u0027SHR_DISK_2\u0027])/"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_b8e5530b","line":76,"range":{"start_line":76,"start_character":56,"end_line":76,"end_character":59},"in_reply_to":"9fb8cfa7_1ddfb10d","updated":"2019-06-10 17:28:20.000000000","message":"Using the non-capturing syntax is a good hygienic habit to have. We don\u0027t have any intention of using the found group.\n\nOr to put it another way: just a habitual tick that shows up sometimes when doing alternation","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"296ee585e61e5694478dd048fdaf6fb559310e11","unresolved":false,"context_lines":[{"line_number":73,"context_line":"          VCPU: 1"},{"line_number":74,"context_line":"      $.allocation_requests[0].mappings.`len`: 3"},{"line_number":75,"context_line":"      $.allocation_requests[0].mappings[\"\"][0]: $ENVIRON[\u0027CN_MIDDLE\u0027]"},{"line_number":76,"context_line":"      $.allocation_requests[0].mappings[\u0027_DISK_A\u0027][0]: /(?:$ENVIRON[\u0027SHR_DISK_1\u0027]|$ENVIRON[\u0027SHR_DISK_2\u0027])/"},{"line_number":77,"context_line":"      $.allocation_requests[0].mappings[\u0027_DISK_B\u0027][0]: /(?:$ENVIRON[\u0027SHR_DISK_1\u0027]|$ENVIRON[\u0027SHR_DISK_2\u0027])/"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_e3afa07a","line":76,"range":{"start_line":76,"start_character":56,"end_line":76,"end_character":59},"in_reply_to":"9fb8cfa7_b8e5530b","updated":"2019-06-10 18:47:21.000000000","message":"sometimes, but not in the other test cases in this change, swhy it stood out","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"}],"releasenotes/notes/allocation-candidate-mappings-e00cf6deadcee9ab.yaml":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7a23fad9175733d9c178985efbef239243dec8d0","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    ``GET /allocation_candidates`` request_ has been extended to include a"},{"line_number":6,"context_line":"    ``mappings`` field with each allocation request. The value is a dictionary"},{"line_number":7,"context_line":"    associating request group suffixes with the uuids of those resource"},{"line_number":8,"context_line":"    providers that satisfy the identified request group. "},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    .. _1.34: https://docs.openstack.org/placement/latest/placement-api-microversion-history.html#request-group-mappings-in-allocation-candidates"},{"line_number":11,"context_line":"    .. _request: https://developer.openstack.org/api-ref/placement/?expanded\u003dlist-allocation-candidates-detail#list-allocation-candidates"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_fd109daa","line":8,"updated":"2019-06-10 17:08:06.000000000","message":"trailing space\n\n...\"For convenience, this mapping can be included in the request payload for POST /allocations, PUT /allocations/{consumer_uuid}, and POST /reshaper, but it will be ignored.\"","commit_id":"5c812cc0116906a1859d019b95c3f1250bc30aab"}]}
