)]}'
{"nova/objects/resource_provider.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aa668d3c8936822b75e78c5c1d795cadaafcba4a","unresolved":false,"context_lines":[{"line_number":2888,"context_line":"    #"},{"line_number":2889,"context_line":"    # SELECT rp.root_provider_id"},{"line_number":2890,"context_line":"    # FROM resource_providers AS rp"},{"line_number":2891,"context_line":"    # JOIN inventories AS inv"},{"line_number":2892,"context_line":"    #  ON rp.id \u003d inv.resource_provider_id"},{"line_number":2893,"context_line":"    # LEFT JOIN ("},{"line_number":2894,"context_line":"    #     SELECT resource_provider_id, resource_class_id, SUM(used) AS used"},{"line_number":2895,"context_line":"    #     FROM allocations"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_8d9b6471","line":2892,"range":{"start_line":2891,"start_character":5,"end_line":2892,"end_character":42},"updated":"2018-01-09 05:30:58.000000000","message":"We should limit the resource_class_id, then we can reduce the rows we joined.","commit_id":"ad9b1a4b0f8473eca9707b5c739e95cd1dd37263"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1a64afe5c6fed0f13da37ba2370cec03fbbfd82c","unresolved":false,"context_lines":[{"line_number":2888,"context_line":"    #"},{"line_number":2889,"context_line":"    # SELECT rp.root_provider_id"},{"line_number":2890,"context_line":"    # FROM resource_providers AS rp"},{"line_number":2891,"context_line":"    # JOIN inventories AS inv"},{"line_number":2892,"context_line":"    #  ON rp.id \u003d inv.resource_provider_id"},{"line_number":2893,"context_line":"    # LEFT JOIN ("},{"line_number":2894,"context_line":"    #     SELECT resource_provider_id, resource_class_id, SUM(used) AS used"},{"line_number":2895,"context_line":"    #     FROM allocations"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_c883d9cb","line":2892,"range":{"start_line":2891,"start_character":5,"end_line":2892,"end_character":42},"in_reply_to":"9f91af0f_8d9b6471","updated":"2018-01-15 16:27:33.000000000","message":"Done","commit_id":"ad9b1a4b0f8473eca9707b5c739e95cd1dd37263"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aa668d3c8936822b75e78c5c1d795cadaafcba4a","unresolved":false,"context_lines":[{"line_number":2893,"context_line":"    # LEFT JOIN ("},{"line_number":2894,"context_line":"    #     SELECT resource_provider_id, resource_class_id, SUM(used) AS used"},{"line_number":2895,"context_line":"    #     FROM allocations"},{"line_number":2896,"context_line":"    #     GROUP BY resource_provider_id, resource_class_id"},{"line_number":2897,"context_line":"    # ) AS usages"},{"line_number":2898,"context_line":"    #  ON inv.resource_provider_id \u003d usages.resource_provider_id"},{"line_number":2899,"context_line":"    #  AND inv.resource_class_id \u003d usages.resource_class_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_4d8b1c1e","line":2896,"updated":"2018-01-09 05:30:58.000000000","message":"ditto, we should limit the resource_class_id, we can reduce the rows we joined, that is good for performance.","commit_id":"ad9b1a4b0f8473eca9707b5c739e95cd1dd37263"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"239566557023b2ae193d71383385f0a5218f88b3","unresolved":false,"context_lines":[{"line_number":2893,"context_line":"    # LEFT JOIN ("},{"line_number":2894,"context_line":"    #     SELECT resource_provider_id, resource_class_id, SUM(used) AS used"},{"line_number":2895,"context_line":"    #     FROM allocations"},{"line_number":2896,"context_line":"    #     GROUP BY resource_provider_id, resource_class_id"},{"line_number":2897,"context_line":"    # ) AS usages"},{"line_number":2898,"context_line":"    #  ON inv.resource_provider_id \u003d usages.resource_provider_id"},{"line_number":2899,"context_line":"    #  AND inv.resource_class_id \u003d usages.resource_class_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_ed53106a","line":2896,"in_reply_to":"9f91af0f_4d8b1c1e","updated":"2018-01-09 05:32:19.000000000","message":"at line 2938, you done this, just forget put it in this comment.","commit_id":"ad9b1a4b0f8473eca9707b5c739e95cd1dd37263"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1a64afe5c6fed0f13da37ba2370cec03fbbfd82c","unresolved":false,"context_lines":[{"line_number":2893,"context_line":"    # LEFT JOIN ("},{"line_number":2894,"context_line":"    #     SELECT resource_provider_id, resource_class_id, SUM(used) AS used"},{"line_number":2895,"context_line":"    #     FROM allocations"},{"line_number":2896,"context_line":"    #     GROUP BY resource_provider_id, resource_class_id"},{"line_number":2897,"context_line":"    # ) AS usages"},{"line_number":2898,"context_line":"    #  ON inv.resource_provider_id \u003d usages.resource_provider_id"},{"line_number":2899,"context_line":"    #  AND inv.resource_class_id \u003d usages.resource_class_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_e886d5db","line":2896,"in_reply_to":"9f91af0f_ed53106a","updated":"2018-01-15 16:27:33.000000000","message":"Done","commit_id":"ad9b1a4b0f8473eca9707b5c739e95cd1dd37263"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aa668d3c8936822b75e78c5c1d795cadaafcba4a","unresolved":false,"context_lines":[{"line_number":2920,"context_line":"    #     AND inv.step_size % $DISK_REQUESTED \u003d 0"},{"line_number":2921,"context_line":"    #  )"},{"line_number":2922,"context_line":"    #  GROUP BY rp.root_provider_id"},{"line_number":2923,"context_line":"    #  HAVING COUNT(DISTINCT inv.resource_class_id) \u003d 3;"},{"line_number":2924,"context_line":""},{"line_number":2925,"context_line":"    rpt \u003d sa.alias(_RP_TBL, name\u003d\"rp\")"},{"line_number":2926,"context_line":"    inv \u003d sa.alias(_INV_TBL, name\u003d\"inv\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_aded08b8","line":2923,"range":{"start_line":2923,"start_character":20,"end_line":2923,"end_character":50},"updated":"2018-01-09 05:30:58.000000000","message":"we may have multiple same resource class in the same tree but in different rp?","commit_id":"ad9b1a4b0f8473eca9707b5c739e95cd1dd37263"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8d0125918ac619a253b997e3020806fd33cdcfe6","unresolved":false,"context_lines":[{"line_number":2920,"context_line":"    #     AND inv.step_size % $DISK_REQUESTED \u003d 0"},{"line_number":2921,"context_line":"    #  )"},{"line_number":2922,"context_line":"    #  GROUP BY rp.root_provider_id"},{"line_number":2923,"context_line":"    #  HAVING COUNT(DISTINCT inv.resource_class_id) \u003d 3;"},{"line_number":2924,"context_line":""},{"line_number":2925,"context_line":"    rpt \u003d sa.alias(_RP_TBL, name\u003d\"rp\")"},{"line_number":2926,"context_line":"    inv \u003d sa.alias(_INV_TBL, name\u003d\"inv\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_7713805d","line":2923,"range":{"start_line":2923,"start_character":20,"end_line":2923,"end_character":50},"in_reply_to":"9f91af0f_aded08b8","updated":"2018-01-15 18:54:46.000000000","message":"I\u0027m not entirely sure how to handle that in this particular SQL :) So, I\u0027ll add a func test to see what happens in that situation.","commit_id":"ad9b1a4b0f8473eca9707b5c739e95cd1dd37263"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ceffa160372982c16902b3f91a7f5d09ebe5b4d4","unresolved":false,"context_lines":[{"line_number":2917,"context_line":"    #          (COALESCE(usage.used, 0) + $DISK_REQUESTED))"},{"line_number":2918,"context_line":"    #     AND inv.min_unit \u003e\u003d $DISK_REQUESTED"},{"line_number":2919,"context_line":"    #     AND inv.max_unit \u003c\u003d $DISK_REQUESTED"},{"line_number":2920,"context_line":"    #     AND inv.step_size % $DISK_REQUESTED \u003d 0"},{"line_number":2921,"context_line":"    #  )"},{"line_number":2922,"context_line":"    #  GROUP BY rp.root_provider_id"},{"line_number":2923,"context_line":"    #  HAVING COUNT(DISTINCT inv.resource_class_id) \u003d 3;"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_2c057146","line":2920,"updated":"2018-01-09 13:18:56.000000000","message":"The example is a bit misleading as the sql below supports any kind of resources including CUSTOM_ resources as well.","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1a64afe5c6fed0f13da37ba2370cec03fbbfd82c","unresolved":false,"context_lines":[{"line_number":2917,"context_line":"    #          (COALESCE(usage.used, 0) + $DISK_REQUESTED))"},{"line_number":2918,"context_line":"    #     AND inv.min_unit \u003e\u003d $DISK_REQUESTED"},{"line_number":2919,"context_line":"    #     AND inv.max_unit \u003c\u003d $DISK_REQUESTED"},{"line_number":2920,"context_line":"    #     AND inv.step_size % $DISK_REQUESTED \u003d 0"},{"line_number":2921,"context_line":"    #  )"},{"line_number":2922,"context_line":"    #  GROUP BY rp.root_provider_id"},{"line_number":2923,"context_line":"    #  HAVING COUNT(DISTINCT inv.resource_class_id) \u003d 3;"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f96bb07_08b9c1ca","line":2920,"in_reply_to":"9f91af0f_2c057146","updated":"2018-01-15 16:27:33.000000000","message":"I\u0027ll change the example to use SRIOV_NET_VF instead of DISK_GB and add a note saying it\u0027s illustrating an example with requested resources of VCPU, MEMORY_MB and SRIOV_NET_VF","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d46f88c99378f07294505e3f15a3436de64cd27f","unresolved":false,"context_lines":[{"line_number":2925,"context_line":"    rpt \u003d sa.alias(_RP_TBL, name\u003d\"rp\")"},{"line_number":2926,"context_line":"    inv \u003d sa.alias(_INV_TBL, name\u003d\"inv\")"},{"line_number":2927,"context_line":""},{"line_number":2928,"context_line":"    rc_ids \u003d set(resources)"},{"line_number":2929,"context_line":""},{"line_number":2930,"context_line":"    # Derived table containing usage numbers for all resource providers for"},{"line_number":2931,"context_line":"    # each resource class involved in the request"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_3f54c3fd","line":2928,"range":{"start_line":2928,"start_character":4,"end_line":2928,"end_character":10},"updated":"2018-01-08 22:20:41.000000000","message":"This isn\u0027t necessary.  You can just use `resources` in those two places.","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1a64afe5c6fed0f13da37ba2370cec03fbbfd82c","unresolved":false,"context_lines":[{"line_number":2925,"context_line":"    rpt \u003d sa.alias(_RP_TBL, name\u003d\"rp\")"},{"line_number":2926,"context_line":"    inv \u003d sa.alias(_INV_TBL, name\u003d\"inv\")"},{"line_number":2927,"context_line":""},{"line_number":2928,"context_line":"    rc_ids \u003d set(resources)"},{"line_number":2929,"context_line":""},{"line_number":2930,"context_line":"    # Derived table containing usage numbers for all resource providers for"},{"line_number":2931,"context_line":"    # each resource class involved in the request"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f96bb07_c8b2f9e6","line":2928,"range":{"start_line":2928,"start_character":4,"end_line":2928,"end_character":10},"in_reply_to":"9f91af0f_3f54c3fd","updated":"2018-01-15 16:27:33.000000000","message":"Done","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d46f88c99378f07294505e3f15a3436de64cd27f","unresolved":false,"context_lines":[{"line_number":2927,"context_line":""},{"line_number":2928,"context_line":"    rc_ids \u003d set(resources)"},{"line_number":2929,"context_line":""},{"line_number":2930,"context_line":"    # Derived table containing usage numbers for all resource providers for"},{"line_number":2931,"context_line":"    # each resource class involved in the request"},{"line_number":2932,"context_line":"    usages \u003d sa.alias("},{"line_number":2933,"context_line":"        sa.select(["}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_bf60d3d0","line":2930,"updated":"2018-01-08 22:20:41.000000000","message":"I think I\u0027ve mentioned this before, but big pieces of this method are duplicated from elsewhere in this file.  I\u0027m thinking the \u0027usages\u0027 derived table and the whole where_conds thing.  We should factor those out into a single common method that can be maintained (and debugged) in one place instead of many.","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1a64afe5c6fed0f13da37ba2370cec03fbbfd82c","unresolved":false,"context_lines":[{"line_number":2927,"context_line":""},{"line_number":2928,"context_line":"    rc_ids \u003d set(resources)"},{"line_number":2929,"context_line":""},{"line_number":2930,"context_line":"    # Derived table containing usage numbers for all resource providers for"},{"line_number":2931,"context_line":"    # each resource class involved in the request"},{"line_number":2932,"context_line":"    usages \u003d sa.alias("},{"line_number":2933,"context_line":"        sa.select(["}],"source_content_type":"text/x-python","patch_set":2,"id":"7f96bb07_883f1124","line":2930,"in_reply_to":"9f91af0f_bf60d3d0","updated":"2018-01-15 16:27:33.000000000","message":"will do in a followup","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3604e73a6ecf02538049f94457955b44c485c32f","unresolved":false,"context_lines":[{"line_number":2868,"context_line":""},{"line_number":2869,"context_line":"    return [r[0] for r in ctx.session.execute(sel)]"},{"line_number":2870,"context_line":""},{"line_number":2871,"context_line":""},{"line_number":2872,"context_line":"@db_api.api_context_manager.reader"},{"line_number":2873,"context_line":"def _provider_aggregates(ctx, rp_ids):"},{"line_number":2874,"context_line":"    \"\"\"Given a list of resource provider internal IDs, returns a dict,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_b22273a3","side":"PARENT","line":2871,"range":{"start_line":2871,"start_character":0,"end_line":2871,"end_character":0},"updated":"2018-01-15 21:52:18.000000000","message":"why?","commit_id":"63765ad6d1ce4ffa9b35127055a5d7b6a591d3b7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b58bccdd44d5353d2afed9afcb8fb1ac89d43281","unresolved":false,"context_lines":[{"line_number":2868,"context_line":""},{"line_number":2869,"context_line":"    return [r[0] for r in ctx.session.execute(sel)]"},{"line_number":2870,"context_line":""},{"line_number":2871,"context_line":""},{"line_number":2872,"context_line":"@db_api.api_context_manager.reader"},{"line_number":2873,"context_line":"def _provider_aggregates(ctx, rp_ids):"},{"line_number":2874,"context_line":"    \"\"\"Given a list of resource provider internal IDs, returns a dict,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_1209e7db","side":"PARENT","line":2871,"range":{"start_line":2871,"start_character":0,"end_line":2871,"end_character":0},"in_reply_to":"7f96bb07_b22273a3","updated":"2018-01-15 21:55:10.000000000","message":"rebase fail. :( will fix.","commit_id":"63765ad6d1ce4ffa9b35127055a5d7b6a591d3b7"}],"nova/tests/functional/db/test_allocation_candidates.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d46f88c99378f07294505e3f15a3436de64cd27f","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"        ensure that only the root provider IDs of matching provider trees are"},{"line_number":1300,"context_line":"        returned."},{"line_number":1301,"context_line":"        \"\"\""},{"line_number":1302,"context_line":"        # We are setting up 3 trees of providers that looks like this:"},{"line_number":1303,"context_line":"        #"},{"line_number":1304,"context_line":"        #                  compute node (cn)"},{"line_number":1305,"context_line":"        #                 /                 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_ff989bc0","line":1302,"range":{"start_line":1302,"start_character":54,"end_line":1302,"end_character":59},"updated":"2018-01-08 22:20:41.000000000","message":"look","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1a64afe5c6fed0f13da37ba2370cec03fbbfd82c","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"        ensure that only the root provider IDs of matching provider trees are"},{"line_number":1300,"context_line":"        returned."},{"line_number":1301,"context_line":"        \"\"\""},{"line_number":1302,"context_line":"        # We are setting up 3 trees of providers that looks like this:"},{"line_number":1303,"context_line":"        #"},{"line_number":1304,"context_line":"        #                  compute node (cn)"},{"line_number":1305,"context_line":"        #                 /                 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f96bb07_a83a0d31","line":1302,"range":{"start_line":1302,"start_character":54,"end_line":1302,"end_character":59},"in_reply_to":"9f91af0f_ff989bc0","updated":"2018-01-15 16:27:33.000000000","message":"Done","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ceffa160372982c16902b3f91a7f5d09ebe5b4d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9f91af0f_2c61f105","line":1419,"updated":"2018-01-09 13:18:56.000000000","message":"I would add a test case where in one tree both pf0 and pf1 has 1 VF available and we ask for 2 VFs. I assume that the tree should be returned from _get_trees_matching_all()","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"22889e69cd17c5e053ef354d8857a1fa824528c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9f91af0f_f04e7336","line":1419,"in_reply_to":"9f91af0f_2c61f105","updated":"2018-01-09 17:38:57.000000000","message":"++","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6be566c9df19621bb6223324333ac97bbaa82a21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7f96bb07_92797730","line":1419,"in_reply_to":"9f91af0f_f04e7336","updated":"2018-01-15 21:59:41.000000000","message":"will do in followup shortly, thanks.","commit_id":"027d4af094fb5d4edc461b8e0687f5798096096e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3604e73a6ecf02538049f94457955b44c485c32f","unresolved":false,"context_lines":[{"line_number":1480,"context_line":"            name \u003d \u0027cn\u0027 + x"},{"line_number":1481,"context_line":"            cn_name \u003d name"},{"line_number":1482,"context_line":"            cn_names.append(cn_name)"},{"line_number":1483,"context_line":"            cn \u003d rp_obj.ResourceProvider("},{"line_number":1484,"context_line":"                context\u003dself.ctx,"},{"line_number":1485,"context_line":"                uuid\u003dgetattr(uuids, name),"},{"line_number":1486,"context_line":"                name\u003dname,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_3292e39f","line":1483,"updated":"2018-01-15 21:52:18.000000000","message":"Cut over to _create_provider (throughout)","commit_id":"25a14603a54e3823ecb8c85556b83ad7fe1ace04"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b58bccdd44d5353d2afed9afcb8fb1ac89d43281","unresolved":false,"context_lines":[{"line_number":1480,"context_line":"            name \u003d \u0027cn\u0027 + x"},{"line_number":1481,"context_line":"            cn_name \u003d name"},{"line_number":1482,"context_line":"            cn_names.append(cn_name)"},{"line_number":1483,"context_line":"            cn \u003d rp_obj.ResourceProvider("},{"line_number":1484,"context_line":"                context\u003dself.ctx,"},{"line_number":1485,"context_line":"                uuid\u003dgetattr(uuids, name),"},{"line_number":1486,"context_line":"                name\u003dname,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_72f94bc6","line":1483,"in_reply_to":"7f96bb07_3292e39f","updated":"2018-01-15 21:55:10.000000000","message":"will do.","commit_id":"25a14603a54e3823ecb8c85556b83ad7fe1ace04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1bb932b6a1b572beec8a5aa9ff53cb67923011c","unresolved":false,"context_lines":[{"line_number":1497,"context_line":"            pf1 \u003d self._create_provider(name, parent\u003dnuma_cell1.uuid)"},{"line_number":1498,"context_line":"            _add_inventory(pf1, fields.ResourceClass.SRIOV_NET_VF, 8)"},{"line_number":1499,"context_line":""},{"line_number":1500,"context_line":"        # NOTE(jaypipes): _get_trees_matching_all() expects a dict of resource"},{"line_number":1501,"context_line":"        # class internal identifiers, not string names"},{"line_number":1502,"context_line":"        resources \u003d {"},{"line_number":1503,"context_line":"            fields.ResourceClass.STANDARD.index("}],"source_content_type":"text/x-python","patch_set":7,"id":"7f96bb07_6f434043","line":1500,"range":{"start_line":1500,"start_character":26,"end_line":1500,"end_character":49},"updated":"2018-01-18 08:52:32.000000000","message":"nit: _get_trees_matching_all_resources()","commit_id":"c2b44afd1564760088dc343e28fe896f577f93f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1bb932b6a1b572beec8a5aa9ff53cb67923011c","unresolved":false,"context_lines":[{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"        # The returned results are the internal root_provider_id values of the"},{"line_number":1514,"context_line":"        # three compute node providers. Grab those values using a manual query"},{"line_number":1515,"context_line":"        # to double-check the results of _get_trees_matching_all()"},{"line_number":1516,"context_line":"        cn_root_ids \u003d self._get_root_ids_matching_names(cn_names)"},{"line_number":1517,"context_line":"        self.assertEqual(cn_root_ids, set(trees))"},{"line_number":1518,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7f96bb07_8f3eccb5","line":1515,"range":{"start_line":1515,"start_character":41,"end_line":1515,"end_character":64},"updated":"2018-01-18 08:52:32.000000000","message":"ditto","commit_id":"c2b44afd1564760088dc343e28fe896f577f93f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1bb932b6a1b572beec8a5aa9ff53cb67923011c","unresolved":false,"context_lines":[{"line_number":1518,"context_line":""},{"line_number":1519,"context_line":"        # OK, now consume all the VFs in the second compute node and verify"},{"line_number":1520,"context_line":"        # only the first and third computes are returned as root providers from"},{"line_number":1521,"context_line":"        # _get_trees_matching_all()"},{"line_number":1522,"context_line":"        cn2_pf0 \u003d rp_obj.ResourceProvider.get_by_uuid(self.ctx,"},{"line_number":1523,"context_line":"                                                      uuids.cn2_numa0_pf0)"},{"line_number":1524,"context_line":"        _allocate_from_provider(cn2_pf0, fields.ResourceClass.SRIOV_NET_VF, 8)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f96bb07_4f5d2413","line":1521,"range":{"start_line":1521,"start_character":10,"end_line":1521,"end_character":33},"updated":"2018-01-18 08:52:32.000000000","message":"ditto","commit_id":"c2b44afd1564760088dc343e28fe896f577f93f1"}]}
