)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c4e79c41894914eefe304cdc1d1b9547765a9ca5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jay Pipes \u003cjaypipes@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-12-01 09:46:57 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add aggregates check in allocation canditates"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allocation candidates api returned some of wrong"},{"line_number":10,"context_line":"combinations of non-sharing resource provider and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df87a7cf_a75fc170","line":7,"range":{"start_line":7,"start_character":35,"end_line":7,"end_character":45},"updated":"2017-12-05 14:01:22.000000000","message":"candidates","commit_id":"fea6c1ad12d209fde10f42685728a8230b7b075a"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"dabed72aa62943cb06af03117a58439a65c50f53","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jay Pipes \u003cjaypipes@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-12-01 09:46:57 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add aggregates check in allocation canditates"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allocation candidates api returned some of wrong"},{"line_number":10,"context_line":"combinations of non-sharing resource provider and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df87a7cf_98106959","line":7,"range":{"start_line":7,"start_character":35,"end_line":7,"end_character":45},"in_reply_to":"df87a7cf_a75fc170","updated":"2017-12-11 00:34:33.000000000","message":"Done","commit_id":"fea6c1ad12d209fde10f42685728a8230b7b075a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c4e79c41894914eefe304cdc1d1b9547765a9ca5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add aggregates check in allocation canditates"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allocation candidates api returned some of wrong"},{"line_number":10,"context_line":"combinations of non-sharing resource provider and"},{"line_number":11,"context_line":"shared resource provider, ignoring aggregates."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df87a7cf_6751b962","line":9,"range":{"start_line":9,"start_character":35,"end_line":9,"end_character":43},"updated":"2017-12-05 14:01:22.000000000","message":"some wrong combinations","commit_id":"fea6c1ad12d209fde10f42685728a8230b7b075a"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"dabed72aa62943cb06af03117a58439a65c50f53","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add aggregates check in allocation canditates"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allocation candidates api returned some of wrong"},{"line_number":10,"context_line":"combinations of non-sharing resource provider and"},{"line_number":11,"context_line":"shared resource provider, ignoring aggregates."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df87a7cf_b80bed27","line":9,"range":{"start_line":9,"start_character":35,"end_line":9,"end_character":43},"in_reply_to":"df87a7cf_6751b962","updated":"2017-12-11 00:34:33.000000000","message":"Done","commit_id":"fea6c1ad12d209fde10f42685728a8230b7b075a"}],"nova/objects/resource_provider.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"20f3a8fd4c33223cd6f2fed59536525267a2c158","unresolved":false,"context_lines":[{"line_number":2598,"context_line":"        _RP_AGG_TBL.c.resource_provider_id \u003d\u003d rp_id"},{"line_number":2599,"context_line":"    )"},{"line_number":2600,"context_line":"    return [r[0] for r in ctx.session.execute(sel)]"},{"line_number":2601,"context_line":""},{"line_number":2602,"context_line":"def _build_provider_summaries(context, usages, prov_traits):"},{"line_number":2603,"context_line":"    \"\"\"Given a list of dicts of usage information and a map of providers to"},{"line_number":2604,"context_line":"    their associated string traits, returns a dict, keyed by resource provider"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_0a369f53","line":2601,"updated":"2017-11-23 03:47:29.000000000","message":"Add one more blank line","commit_id":"ad859a3cf042b372f969112682fe17cf1e95d0e5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"20f3a8fd4c33223cd6f2fed59536525267a2c158","unresolved":false,"context_lines":[{"line_number":2660,"context_line":"def _check_in_same_aggregates(ctx, ns_rp_id, rp_id):"},{"line_number":2661,"context_line":"    ns_rp_aggs \u003d _get_aggregates_from_id(ctx, ns_rp_id)"},{"line_number":2662,"context_line":"    rp_aggs \u003d _get_aggregates_from_id(ctx, rp_id)"},{"line_number":2663,"context_line":"    return set(ns_rp_aggs)\u0026set(rp_aggs)"},{"line_number":2664,"context_line":""},{"line_number":2665,"context_line":""},{"line_number":2666,"context_line":"def _shared_allocation_request_resources(ctx, ns_rp_id, requested_resources,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_4a2ca701","line":2663,"range":{"start_line":2663,"start_character":25,"end_line":2663,"end_character":30},"updated":"2017-11-23 03:47:29.000000000","message":"should separate with whitespaces.","commit_id":"ad859a3cf042b372f969112682fe17cf1e95d0e5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"20f3a8fd4c33223cd6f2fed59536525267a2c158","unresolved":false,"context_lines":[{"line_number":2891,"context_line":"            if rc_id in ns_resources"},{"line_number":2892,"context_line":"        ]"},{"line_number":2893,"context_line":""},{"line_number":2894,"context_line":"        # Build a dict, keyed by resource class ID, of AllocationRequestResource"},{"line_number":2895,"context_line":"        # objects that represent each resource provider for a shared resource"},{"line_number":2896,"context_line":"        sharing_resource_requests \u003d _shared_allocation_request_resources("},{"line_number":2897,"context_line":"            ctx, ns_rp_id, requested_resources, sharing, summaries)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_ca3f5723","line":2894,"updated":"2017-11-23 03:47:29.000000000","message":"pep8 error here, line too long","commit_id":"ad859a3cf042b372f969112682fe17cf1e95d0e5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c4e79c41894914eefe304cdc1d1b9547765a9ca5","unresolved":false,"context_lines":[{"line_number":2927,"context_line":"    res_requests \u003d collections.defaultdict(list)"},{"line_number":2928,"context_line":"    for rc_id in sharing:"},{"line_number":2929,"context_line":"        for rp_id in sharing[rc_id]:"},{"line_number":2930,"context_line":"            if not _check_in_same_aggregates(ctx, ns_rp_id, rp_id):"},{"line_number":2931,"context_line":"                continue"},{"line_number":2932,"context_line":"            summary \u003d summaries[rp_id]"},{"line_number":2933,"context_line":"            rp_uuid \u003d summary.resource_provider.uuid"},{"line_number":2934,"context_line":"            res_req \u003d AllocationRequestResource("}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_a717c151","line":2931,"range":{"start_line":2930,"start_character":0,"end_line":2931,"end_character":24},"updated":"2017-12-05 14:01:22.000000000","message":"this is going to produce 2N queries, where N \u003d\u003d number of sharing resource providers. It would be better to perform a single query that retrieves aggregate information for all involved providers in the same query and construct a dict of provider ID to set([aggregates]).\n\nThis way, we only do a single query to get aggregate information.\n\nWe do a similar \"get me a dict of provider ID to set of traits\" strategy for handling trait lookups:\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/resource_provider.py#L3090\n\ncalled from here:\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/resource_provider.py#L2945\n\nwhich we use to populate provider summary objects here:\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/resource_provider.py#L2864\n\nAll with a single query to get trait information for all providers involved in the request.\n\nI would recommend creating a _provider_aggregates() function, similar to _provider_traits(), that accepts a list of resource provider IDs and returns a dict of sets of aggregate UUIDs.","commit_id":"fea6c1ad12d209fde10f42685728a8230b7b075a"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"dabed72aa62943cb06af03117a58439a65c50f53","unresolved":false,"context_lines":[{"line_number":2927,"context_line":"    res_requests \u003d collections.defaultdict(list)"},{"line_number":2928,"context_line":"    for rc_id in sharing:"},{"line_number":2929,"context_line":"        for rp_id in sharing[rc_id]:"},{"line_number":2930,"context_line":"            if not _check_in_same_aggregates(ctx, ns_rp_id, rp_id):"},{"line_number":2931,"context_line":"                continue"},{"line_number":2932,"context_line":"            summary \u003d summaries[rp_id]"},{"line_number":2933,"context_line":"            rp_uuid \u003d summary.resource_provider.uuid"},{"line_number":2934,"context_line":"            res_req \u003d AllocationRequestResource("}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_832f9a86","line":2931,"range":{"start_line":2930,"start_character":0,"end_line":2931,"end_character":24},"in_reply_to":"df87a7cf_a717c151","updated":"2017-12-11 00:34:33.000000000","message":"Makes sense. Thank you for the respectful guidance, jay. I have updated it.","commit_id":"fea6c1ad12d209fde10f42685728a8230b7b075a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ac11849575994e111ca280d85df2f1714656f7c5","unresolved":false,"context_lines":[{"line_number":2863,"context_line":""},{"line_number":2864,"context_line":"    rpat \u003d sa.alias(_RP_AGG_TBL, name\u003d\u0027rpat\u0027)"},{"line_number":2865,"context_line":"    sel \u003d sa.select([rpat.c.resource_provider_id,"},{"line_number":2866,"context_line":"                     rpat.c.aggregate_id]).select_from(rpat)"},{"line_number":2867,"context_line":"    sel \u003d sel.where(rpat.c.resource_provider_id.in_(rp_ids))"},{"line_number":2868,"context_line":"    res \u003d collections.defaultdict(list)"},{"line_number":2869,"context_line":"    for r in ctx.session.execute(sel):"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_a3af2b28","line":2866,"range":{"start_line":2866,"start_character":42,"end_line":2866,"end_character":60},"updated":"2017-12-11 15:13:28.000000000","message":"nit: this isn\u0027t necessary. you can leave it off, since you\u0027re only selecting fields from the rpat aliased table in the select([...]) call.","commit_id":"0c5e7870cc8c5455da58bd624dc6d5041f7d6bfd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"81bb96a3563c46bbf50a1d5028e7c892acb4ddec","unresolved":false,"context_lines":[{"line_number":2863,"context_line":""},{"line_number":2864,"context_line":"    rpat \u003d sa.alias(_RP_AGG_TBL, name\u003d\u0027rpat\u0027)"},{"line_number":2865,"context_line":"    sel \u003d sa.select([rpat.c.resource_provider_id,"},{"line_number":2866,"context_line":"                     rpat.c.aggregate_id]).select_from(rpat)"},{"line_number":2867,"context_line":"    sel \u003d sel.where(rpat.c.resource_provider_id.in_(rp_ids))"},{"line_number":2868,"context_line":"    res \u003d collections.defaultdict(list)"},{"line_number":2869,"context_line":"    for r in ctx.session.execute(sel):"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_36011bb0","line":2866,"range":{"start_line":2866,"start_character":42,"end_line":2866,"end_character":60},"in_reply_to":"df87a7cf_a3af2b28","updated":"2017-12-11 15:27:34.000000000","message":"Done","commit_id":"0c5e7870cc8c5455da58bd624dc6d5041f7d6bfd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ac11849575994e111ca280d85df2f1714656f7c5","unresolved":false,"context_lines":[{"line_number":2865,"context_line":"    sel \u003d sa.select([rpat.c.resource_provider_id,"},{"line_number":2866,"context_line":"                     rpat.c.aggregate_id]).select_from(rpat)"},{"line_number":2867,"context_line":"    sel \u003d sel.where(rpat.c.resource_provider_id.in_(rp_ids))"},{"line_number":2868,"context_line":"    res \u003d collections.defaultdict(list)"},{"line_number":2869,"context_line":"    for r in ctx.session.execute(sel):"},{"line_number":2870,"context_line":"        res[r[0]].append(r[1])"},{"line_number":2871,"context_line":"    return res"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_2369dbf7","line":2868,"range":{"start_line":2868,"start_character":34,"end_line":2868,"end_character":38},"updated":"2017-12-11 15:13:28.000000000","message":"you can use set here, and res[r0]].add() below. That way, there\u0027s no need to cast the list to a set() on line 2942.","commit_id":"0c5e7870cc8c5455da58bd624dc6d5041f7d6bfd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"81bb96a3563c46bbf50a1d5028e7c892acb4ddec","unresolved":false,"context_lines":[{"line_number":2865,"context_line":"    sel \u003d sa.select([rpat.c.resource_provider_id,"},{"line_number":2866,"context_line":"                     rpat.c.aggregate_id]).select_from(rpat)"},{"line_number":2867,"context_line":"    sel \u003d sel.where(rpat.c.resource_provider_id.in_(rp_ids))"},{"line_number":2868,"context_line":"    res \u003d collections.defaultdict(list)"},{"line_number":2869,"context_line":"    for r in ctx.session.execute(sel):"},{"line_number":2870,"context_line":"        res[r[0]].append(r[1])"},{"line_number":2871,"context_line":"    return res"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_56fcdfb3","line":2868,"range":{"start_line":2868,"start_character":34,"end_line":2868,"end_character":38},"in_reply_to":"df87a7cf_2369dbf7","updated":"2017-12-11 15:27:34.000000000","message":"Done","commit_id":"0c5e7870cc8c5455da58bd624dc6d5041f7d6bfd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ac11849575994e111ca280d85df2f1714656f7c5","unresolved":false,"context_lines":[{"line_number":2930,"context_line":""},{"line_number":2931,"context_line":""},{"line_number":2932,"context_line":"def _check_in_same_aggregates(ctx, ns_rp_id, rp_id, prov_aggs):"},{"line_number":2933,"context_line":"    \"\"\"quickly check if the two rps are in the same aggregates"},{"line_number":2934,"context_line":""},{"line_number":2935,"context_line":"    :param ns_rp_id: resource provider ID"},{"line_number":2936,"context_line":"    :param rp_id: resource provider ID"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_031db772","line":2933,"range":{"start_line":2933,"start_character":7,"end_line":2933,"end_character":62},"updated":"2017-12-11 15:13:28.000000000","message":"Actually, this function isn\u0027t checking. It\u0027s returning the aggregates that are the same for two resource providers.\n\nI would name this function _aggregates_associated_with_providers() and call the parameters \"a\" and \"b\" instead of \"ns_rp_id\" and \"rp_id\" (see comment below on line 2935)","commit_id":"0c5e7870cc8c5455da58bd624dc6d5041f7d6bfd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"81bb96a3563c46bbf50a1d5028e7c892acb4ddec","unresolved":false,"context_lines":[{"line_number":2930,"context_line":""},{"line_number":2931,"context_line":""},{"line_number":2932,"context_line":"def _check_in_same_aggregates(ctx, ns_rp_id, rp_id, prov_aggs):"},{"line_number":2933,"context_line":"    \"\"\"quickly check if the two rps are in the same aggregates"},{"line_number":2934,"context_line":""},{"line_number":2935,"context_line":"    :param ns_rp_id: resource provider ID"},{"line_number":2936,"context_line":"    :param rp_id: resource provider ID"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_d601cf6b","line":2933,"range":{"start_line":2933,"start_character":7,"end_line":2933,"end_character":62},"in_reply_to":"df87a7cf_031db772","updated":"2017-12-11 15:27:34.000000000","message":"Done","commit_id":"0c5e7870cc8c5455da58bd624dc6d5041f7d6bfd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ac11849575994e111ca280d85df2f1714656f7c5","unresolved":false,"context_lines":[{"line_number":2932,"context_line":"def _check_in_same_aggregates(ctx, ns_rp_id, rp_id, prov_aggs):"},{"line_number":2933,"context_line":"    \"\"\"quickly check if the two rps are in the same aggregates"},{"line_number":2934,"context_line":""},{"line_number":2935,"context_line":"    :param ns_rp_id: resource provider ID"},{"line_number":2936,"context_line":"    :param rp_id: resource provider ID"},{"line_number":2937,"context_line":"    :param prov_aggs: a dict keyed by resource provider IDs, of lists"},{"line_number":2938,"context_line":"                      of aggregate ids associated with that provider"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_83622709","line":2935,"range":{"start_line":2935,"start_character":11,"end_line":2935,"end_character":19},"updated":"2017-12-11 15:13:28.000000000","message":"I would just name this \"a\" and rename \"rp_id\" to \"b\". There\u0027s no sharing or non-sharing aspect of the comparison here. All we\u0027re doing is checking if \"a\" is in the same aggregates as \"b\".","commit_id":"0c5e7870cc8c5455da58bd624dc6d5041f7d6bfd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"81bb96a3563c46bbf50a1d5028e7c892acb4ddec","unresolved":false,"context_lines":[{"line_number":2932,"context_line":"def _check_in_same_aggregates(ctx, ns_rp_id, rp_id, prov_aggs):"},{"line_number":2933,"context_line":"    \"\"\"quickly check if the two rps are in the same aggregates"},{"line_number":2934,"context_line":""},{"line_number":2935,"context_line":"    :param ns_rp_id: resource provider ID"},{"line_number":2936,"context_line":"    :param rp_id: resource provider ID"},{"line_number":2937,"context_line":"    :param prov_aggs: a dict keyed by resource provider IDs, of lists"},{"line_number":2938,"context_line":"                      of aggregate ids associated with that provider"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_76fc836f","line":2935,"range":{"start_line":2935,"start_character":11,"end_line":2935,"end_character":19},"in_reply_to":"df87a7cf_83622709","updated":"2017-12-11 15:27:34.000000000","message":"Done","commit_id":"0c5e7870cc8c5455da58bd624dc6d5041f7d6bfd"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"32191e4347781ffa359d211798bb7acd6c075f3c","unresolved":false,"context_lines":[{"line_number":2847,"context_line":"@db_api.api_context_manager.reader"},{"line_number":2848,"context_line":"def _provider_aggregates(ctx, rp_ids):"},{"line_number":2849,"context_line":"    \"\"\"Given a list of resource provider internal IDs, returns a dict,"},{"line_number":2850,"context_line":"    keyed by those provider IDs, of lists of aggregate ids associated"},{"line_number":2851,"context_line":"    with that provider."},{"line_number":2852,"context_line":""},{"line_number":2853,"context_line":"    :raises: ValueError when rp_ids is empty."}],"source_content_type":"text/x-python","patch_set":8,"id":"bf8cb3f7_5224a7c6","line":2850,"range":{"start_line":2850,"start_character":36,"end_line":2850,"end_character":41},"updated":"2017-12-21 12:25:40.000000000","message":"sets","commit_id":"7d0203e2b8114f88808ce3ad8c6ddc49c4876099"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"30e779fb5732810d134d8b6654e590682c27572f","unresolved":false,"context_lines":[{"line_number":2847,"context_line":"@db_api.api_context_manager.reader"},{"line_number":2848,"context_line":"def _provider_aggregates(ctx, rp_ids):"},{"line_number":2849,"context_line":"    \"\"\"Given a list of resource provider internal IDs, returns a dict,"},{"line_number":2850,"context_line":"    keyed by those provider IDs, of lists of aggregate ids associated"},{"line_number":2851,"context_line":"    with that provider."},{"line_number":2852,"context_line":""},{"line_number":2853,"context_line":"    :raises: ValueError when rp_ids is empty."}],"source_content_type":"text/x-python","patch_set":8,"id":"bf8cb3f7_0d2d9294","line":2850,"range":{"start_line":2850,"start_character":36,"end_line":2850,"end_character":41},"in_reply_to":"bf8cb3f7_5224a7c6","updated":"2017-12-22 03:46:32.000000000","message":"Done","commit_id":"7d0203e2b8114f88808ce3ad8c6ddc49c4876099"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"32191e4347781ffa359d211798bb7acd6c075f3c","unresolved":false,"context_lines":[{"line_number":2937,"context_line":"    \"\"\""},{"line_number":2938,"context_line":"    a_aggs \u003d prov_aggs[a]"},{"line_number":2939,"context_line":"    b_aggs \u003d prov_aggs[b]"},{"line_number":2940,"context_line":"    return a_aggs \u0026 b_aggs"},{"line_number":2941,"context_line":""},{"line_number":2942,"context_line":""},{"line_number":2943,"context_line":"def _shared_allocation_request_resources(ctx, ns_rp_id, requested_resources,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf8cb3f7_ad0d9838","line":2940,"range":{"start_line":2940,"start_character":4,"end_line":2940,"end_character":26},"updated":"2017-12-21 12:25:40.000000000","message":"yeah, set([1,4,5]) \u0026 set([1,2,3]) \u003d\u003d\u003e set([1])","commit_id":"7d0203e2b8114f88808ce3ad8c6ddc49c4876099"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"32191e4347781ffa359d211798bb7acd6c075f3c","unresolved":false,"context_lines":[{"line_number":2940,"context_line":"    return a_aggs \u0026 b_aggs"},{"line_number":2941,"context_line":""},{"line_number":2942,"context_line":""},{"line_number":2943,"context_line":"def _shared_allocation_request_resources(ctx, ns_rp_id, requested_resources,"},{"line_number":2944,"context_line":"                                         sharing, summaries, prov_aggs):"},{"line_number":2945,"context_line":"    \"\"\"Returns a dict, keyed by resource class ID, of lists of"},{"line_number":2946,"context_line":"    AllocationRequestResource objects that represent resources that are"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf8cb3f7_8d21b4a2","line":2943,"range":{"start_line":2943,"start_character":46,"end_line":2943,"end_character":54},"updated":"2017-12-21 12:25:40.000000000","message":"add doc for this","commit_id":"7d0203e2b8114f88808ce3ad8c6ddc49c4876099"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"30e779fb5732810d134d8b6654e590682c27572f","unresolved":false,"context_lines":[{"line_number":2940,"context_line":"    return a_aggs \u0026 b_aggs"},{"line_number":2941,"context_line":""},{"line_number":2942,"context_line":""},{"line_number":2943,"context_line":"def _shared_allocation_request_resources(ctx, ns_rp_id, requested_resources,"},{"line_number":2944,"context_line":"                                         sharing, summaries, prov_aggs):"},{"line_number":2945,"context_line":"    \"\"\"Returns a dict, keyed by resource class ID, of lists of"},{"line_number":2946,"context_line":"    AllocationRequestResource objects that represent resources that are"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf8cb3f7_cd26cab8","line":2943,"range":{"start_line":2943,"start_character":46,"end_line":2943,"end_character":54},"in_reply_to":"bf8cb3f7_8d21b4a2","updated":"2017-12-22 03:46:32.000000000","message":"Done","commit_id":"7d0203e2b8114f88808ce3ad8c6ddc49c4876099"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"32191e4347781ffa359d211798bb7acd6c075f3c","unresolved":false,"context_lines":[{"line_number":3100,"context_line":"    # resource class names and amounts to consume from that resource provider"},{"line_number":3101,"context_line":"    alloc_requests \u003d []"},{"line_number":3102,"context_line":""},{"line_number":3103,"context_line":"    # Get a dict, keyed by resource provider internal ID, of lists of aggregate"},{"line_number":3104,"context_line":"    # ids that provider has associated with it"},{"line_number":3105,"context_line":"    prov_aggregates \u003d _provider_aggregates(ctx, all_rp_ids)"},{"line_number":3106,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bf8cb3f7_6d3d50ba","line":3103,"range":{"start_line":3103,"start_character":61,"end_line":3103,"end_character":66},"updated":"2017-12-21 12:25:40.000000000","message":"sets","commit_id":"7d0203e2b8114f88808ce3ad8c6ddc49c4876099"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"30e779fb5732810d134d8b6654e590682c27572f","unresolved":false,"context_lines":[{"line_number":3100,"context_line":"    # resource class names and amounts to consume from that resource provider"},{"line_number":3101,"context_line":"    alloc_requests \u003d []"},{"line_number":3102,"context_line":""},{"line_number":3103,"context_line":"    # Get a dict, keyed by resource provider internal ID, of lists of aggregate"},{"line_number":3104,"context_line":"    # ids that provider has associated with it"},{"line_number":3105,"context_line":"    prov_aggregates \u003d _provider_aggregates(ctx, all_rp_ids)"},{"line_number":3106,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bf8cb3f7_6d3bfed0","line":3103,"range":{"start_line":3103,"start_character":61,"end_line":3103,"end_character":66},"in_reply_to":"bf8cb3f7_6d3d50ba","updated":"2017-12-22 03:46:32.000000000","message":"Done","commit_id":"7d0203e2b8114f88808ce3ad8c6ddc49c4876099"}]}
