)]}'
{"placement/lib.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c9b7d51bc2208d02424eef1564d68b03b906ca49","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @staticmethod"},{"line_number":135,"context_line":"    def _check_for_one_resources(by_suffix):"},{"line_number":136,"context_line":"        if not any(grp for grp in by_suffix.values() if grp.resources):"},{"line_number":137,"context_line":"            msg \u003d ("},{"line_number":138,"context_line":"                \u0027There must be at least one resources or resources{*} \u0027"},{"line_number":139,"context_line":"                \u0027parameter.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_3dcd7e5c","line":136,"range":{"start_line":136,"start_character":8,"end_line":136,"end_character":71},"updated":"2019-07-01 13:49:20.000000000","message":"This could be:\n\n if not any(grp.resources for grp in by_suffix.values()):","commit_id":"730b4aa61ce463505090830bba5e84f64d3583ae"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c9b7d51bc2208d02424eef1564d68b03b906ca49","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    def _check_for_one_resources(by_suffix):"},{"line_number":136,"context_line":"        if not any(grp for grp in by_suffix.values() if grp.resources):"},{"line_number":137,"context_line":"            msg \u003d ("},{"line_number":138,"context_line":"                \u0027There must be at least one resources or resources{*} \u0027"},{"line_number":139,"context_line":"                \u0027parameter.\u0027)"},{"line_number":140,"context_line":"            raise webob.exc.HTTPBadRequest(msg)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_7d0e968c","line":138,"range":{"start_line":138,"start_character":44,"end_line":138,"end_character":69},"updated":"2019-07-01 13:49:20.000000000","message":"shall we call this\n\n resources[$S]\n\n?\n\nI looked through the docs and it appears we still need to cut over from resourcesN in a bunch of places, but otherwise we don\u0027t seem to have made a commitment to a particular format.","commit_id":"730b4aa61ce463505090830bba5e84f64d3583ae"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c9b7d51bc2208d02424eef1564d68b03b906ca49","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            msg \u003d ("},{"line_number":138,"context_line":"                \u0027There must be at least one resources or resources{*} \u0027"},{"line_number":139,"context_line":"                \u0027parameter.\u0027)"},{"line_number":140,"context_line":"            raise webob.exc.HTTPBadRequest(msg)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @staticmethod"},{"line_number":143,"context_line":"    def _check_for_orphans(by_suffix):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_5894008b","line":140,"updated":"2019-07-01 13:49:20.000000000","message":"Let\u0027s add an error code for this (and any new) 400.","commit_id":"730b4aa61ce463505090830bba5e84f64d3583ae"}],"placement/microversion.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c9b7d51bc2208d02424eef1564d68b03b906ca49","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    \u00271.34\u0027,  # Include a mappings key in allocation requests that shows which"},{"line_number":87,"context_line":"             # resource providers satisfied which request group suffix."},{"line_number":88,"context_line":"    \u00271.35\u0027,  # Add a `root_required` queryparam on `GET /allocation_candidates`"},{"line_number":89,"context_line":"    \u00271.36\u0027,  # Allow providers that provide no resources (\u0027required\u0027 and other"},{"line_number":90,"context_line":"             # parameters without a \u0027resources\u0027 parameter)"},{"line_number":91,"context_line":"]"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_fd1926d0","line":89,"range":{"start_line":89,"start_character":21,"end_line":89,"end_character":43},"updated":"2019-07-01 13:49:20.000000000","message":"GET /allocation_candidates request groups with\n\n...but we will want to reword this to include the restriction that the resourceless request group must be suffixed, and the suffix must be used with same_subtree.\n\n...but we can\u0027t do resourceless without same_subtree anyway, so we\u0027ll want to do the microversion paperwork all at once. (Unless we wanted to do resourceless second.)","commit_id":"730b4aa61ce463505090830bba5e84f64d3583ae"}],"placement/objects/allocation_candidate.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fc92a66280393e8641e44c55f4d9ca35ca48b3b0","unresolved":false,"context_lines":[{"line_number":832,"context_line":"            # policy, which enforces how these interact with each other."},{"line_number":833,"context_line":"            if not _satisfies_group_policy("},{"line_number":834,"context_line":"                    areq_list, group_policy, num_granular_groups):"},{"line_number":835,"context_line":"                continue"},{"line_number":836,"context_line":"            # Now we go from this (where \u0027arr\u0027 is AllocationRequestResource):"},{"line_number":837,"context_line":"            # [ areq__B(arrX, arrY, arrZ),"},{"line_number":838,"context_line":"            #   areq_1_A(arrM, arrN),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_0d959ae4","line":835,"updated":"2019-06-05 05:21:25.000000000","message":"I think this is the place where _satisfies_same_subtree_policy() goes in and here we need the resource provider info that provides requested resourceless traits. I assume that resource provider is passed within the allocation request in the areq_list here.\n\nHence this patch.","commit_id":"fd85221f36005f6cb48a13059b588d49db4e39e1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c9b7d51bc2208d02424eef1564d68b03b906ca49","unresolved":false,"context_lines":[{"line_number":412,"context_line":"    return alloc_requests, list(summaries.values())"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"def _allocation_request_for_provider(requested_resources, provider, suffix):"},{"line_number":416,"context_line":"    \"\"\"Returns an AllocationRequest object containing AllocationRequestResource"},{"line_number":417,"context_line":"    objects for each resource class in the supplied requested resources dict."},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_98ccb8bb","line":415,"updated":"2019-07-01 13:49:20.000000000","message":"nb, removing the unused ctx param is unrelated - here and in https://review.opendev.org/#/c/668307/ where I did the same thing :P","commit_id":"730b4aa61ce463505090830bba5e84f64d3583ae"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d6c6b4f7e3c9831fa4cf776ac33d0e878f8090cc","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"def _allocation_request_for_provider(requested_resources, provider, suffix):"},{"line_number":416,"context_line":"    \"\"\"Returns an AllocationRequest object containing AllocationRequestResource"},{"line_number":417,"context_line":"    objects for each resource class in the supplied requested resources dict."},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    :param requested_resources: dict, keyed by resource class ID, of amounts"},{"line_number":420,"context_line":"                                being requested for that resource class"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_b3643f23","line":417,"updated":"2019-07-01 15:01:08.000000000","message":"This docstring is no longer true and by extension the name of the AllocationRequest name is no longer as good as it once was: we\u0027re now using AR for more: it\u0027s a placeholder because we need somewhere to put this stuff...stuff which doesn\u0027t match the name: the empty AR is never going to show up in the resulting allocation requests\n\nThat\u0027s okay, but we need to make sure the docstrings eventually catchup with those changes and if the changes get big enough, we might want to change names to avoid cognitive dissonance for later maintainers.","commit_id":"730b4aa61ce463505090830bba5e84f64d3583ae"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c9b7d51bc2208d02424eef1564d68b03b906ca49","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                     resources."},{"line_number":423,"context_line":"    :param suffix: The suffix of the RequestGroup these resources are"},{"line_number":424,"context_line":"                   satisfying."},{"line_number":425,"context_line":"    \"\"\""},{"line_number":426,"context_line":"    resource_requests \u003d ["},{"line_number":427,"context_line":"        AllocationRequestResource("},{"line_number":428,"context_line":"            resource_provider\u003dprovider,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_b8065ccd","line":425,"updated":"2019-07-01 13:49:20.000000000","message":"nts: This only touches the _alloc_candidates_single_provider path - which is fine because resourceless only applies to granular.\n\n(...which is not stated explicitly in the spec, but follows from: same_subtree only applies to suffixed (which *is* in the spec) and we\u0027re requiring resourceless suffixes to appear in a same_subtree.)","commit_id":"730b4aa61ce463505090830bba5e84f64d3583ae"}],"placement/tests/functional/gabbits/granular-resourceless.yaml":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"a5c2a1cf37a15ba2af5b027721f105de30bdebcd","unresolved":false,"context_lines":[{"line_number":24,"context_line":"          # no providers from CN2 since it doesn\u0027t have any rps with HW_CPU_X86_SSE trait in the tree"},{"line_number":25,"context_line":"          # ... gabbits interprets None below as strings? Anyway, what\u0027s the ideal format for"},{"line_number":26,"context_line":"          #     allocation request for resourceless providers??"},{"line_number":27,"context_line":"          # $.allocation_requests..allocations[\u0027$ENVIRON[\"CN1_UUID\"]\u0027].resources: [{\u0027null\u0027: None}, {\u0027null\u0027: None}]"},{"line_number":28,"context_line":"          $.allocation_requests..allocations[\u0027$ENVIRON[\"PF1_1_UUID\"]\u0027].resources.SRIOV_NET_VF: 1"},{"line_number":29,"context_line":"          $.allocation_requests..allocations[\u0027$ENVIRON[\"PF1_2_UUID\"]\u0027].resources.SRIOV_NET_VF: 1"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9fb8cfa7_ad0a4e23","line":27,"range":{"start_line":27,"start_character":12,"end_line":27,"end_character":114},"updated":"2019-06-05 05:26:35.000000000","message":"Do we want to show this to users, or remove it before we return it to users.\nMy preference is former because of performance... or any alternatives?","commit_id":"fd85221f36005f6cb48a13059b588d49db4e39e1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6ea4072216d108a97b0795f3a98af5e756b50dc9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"          # no providers from CN2 since it doesn\u0027t have any rps with HW_CPU_X86_SSE trait in the tree"},{"line_number":25,"context_line":"          # ... gabbits interprets None below as strings? Anyway, what\u0027s the ideal format for"},{"line_number":26,"context_line":"          #     allocation request for resourceless providers??"},{"line_number":27,"context_line":"          # $.allocation_requests..allocations[\u0027$ENVIRON[\"CN1_UUID\"]\u0027].resources: [{\u0027null\u0027: None}, {\u0027null\u0027: None}]"},{"line_number":28,"context_line":"          $.allocation_requests..allocations[\u0027$ENVIRON[\"PF1_1_UUID\"]\u0027].resources.SRIOV_NET_VF: 1"},{"line_number":29,"context_line":"          $.allocation_requests..allocations[\u0027$ENVIRON[\"PF1_2_UUID\"]\u0027].resources.SRIOV_NET_VF: 1"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9fb8cfa7_f4ce81b2","line":27,"range":{"start_line":27,"start_character":12,"end_line":27,"end_character":114},"in_reply_to":"9fb8cfa7_ad0a4e23","updated":"2019-06-10 10:00:55.000000000","message":"I think you\u0027ve already decided, but let\u0027s not do this. We can find the non-resource-contributing resource providers by recomposing the tree from provider summaries. The \u0027mappings\u0027 key that is being added will help make that cleaner.","commit_id":"fd85221f36005f6cb48a13059b588d49db4e39e1"}]}
