)]}'
{"nova/objects/resource_provider.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"97e9d3e1d2bd912c9f245ff54ad10653cf603200","unresolved":false,"context_lines":[{"line_number":2525,"context_line":""},{"line_number":2526,"context_line":"def _provider_summaries_from_usages(context, usages):"},{"line_number":2527,"context_line":"    \"\"\"Given a list of dicts of usage information, returns a dict, keyed by"},{"line_number":2528,"context_line":"    resource provider ID, or ProviderSummary objects."},{"line_number":2529,"context_line":""},{"line_number":2530,"context_line":"    :param context: nova.context.Context object"},{"line_number":2531,"context_line":"    :param usages: A list of dicts with the following format:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_18804346","line":2528,"range":{"start_line":2528,"start_character":27,"end_line":2528,"end_character":28},"updated":"2017-10-31 20:13:48.000000000","message":"of","commit_id":"5256c287b412629bae0f5d0be7a55517cf8f23bd"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"23cd34cbb414b93d6c2050c11747fa99856255ea","unresolved":false,"context_lines":[{"line_number":2515,"context_line":"    return [r[0] for r in ctx.session.execute(sel)]"},{"line_number":2516,"context_line":""},{"line_number":2517,"context_line":""},{"line_number":2518,"context_line":"def _provider_summaries_from_usages(context, usages):"},{"line_number":2519,"context_line":"    \"\"\"Given a list of dicts of usage information, returns a dict, keyed by"},{"line_number":2520,"context_line":"    resource provider ID, or ProviderSummary objects."},{"line_number":2521,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_42c5853b","line":2518,"range":{"start_line":2518,"start_character":4,"end_line":2518,"end_character":35},"updated":"2017-11-01 22:28:17.000000000","message":"I see this gets renamed later; why not do it here?","commit_id":"bbd0852c3a882745dcd4fc3507dda6f22a36d1ee"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c108c622fc6e1c1c8bad62f21b2c52c0908c58a9","unresolved":false,"context_lines":[{"line_number":2515,"context_line":"    return [r[0] for r in ctx.session.execute(sel)]"},{"line_number":2516,"context_line":""},{"line_number":2517,"context_line":""},{"line_number":2518,"context_line":"def _provider_summaries_from_usages(context, usages):"},{"line_number":2519,"context_line":"    \"\"\"Given a list of dicts of usage information, returns a dict, keyed by"},{"line_number":2520,"context_line":"    resource provider ID, or ProviderSummary objects."},{"line_number":2521,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_b30b34d3","line":2518,"range":{"start_line":2518,"start_character":4,"end_line":2518,"end_character":35},"in_reply_to":"3f4b6375_42c5853b","updated":"2017-11-03 15:28:00.000000000","message":"Done","commit_id":"bbd0852c3a882745dcd4fc3507dda6f22a36d1ee"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"23cd34cbb414b93d6c2050c11747fa99856255ea","unresolved":false,"context_lines":[{"line_number":2517,"context_line":""},{"line_number":2518,"context_line":"def _provider_summaries_from_usages(context, usages):"},{"line_number":2519,"context_line":"    \"\"\"Given a list of dicts of usage information, returns a dict, keyed by"},{"line_number":2520,"context_line":"    resource provider ID, or ProviderSummary objects."},{"line_number":2521,"context_line":""},{"line_number":2522,"context_line":"    :param context: nova.context.Context object"},{"line_number":2523,"context_line":"    :param usages: A list of dicts with the following format:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_82dc9d74","line":2520,"range":{"start_line":2520,"start_character":26,"end_line":2520,"end_character":28},"updated":"2017-11-01 22:28:17.000000000","message":"of","commit_id":"bbd0852c3a882745dcd4fc3507dda6f22a36d1ee"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c108c622fc6e1c1c8bad62f21b2c52c0908c58a9","unresolved":false,"context_lines":[{"line_number":2517,"context_line":""},{"line_number":2518,"context_line":"def _provider_summaries_from_usages(context, usages):"},{"line_number":2519,"context_line":"    \"\"\"Given a list of dicts of usage information, returns a dict, keyed by"},{"line_number":2520,"context_line":"    resource provider ID, or ProviderSummary objects."},{"line_number":2521,"context_line":""},{"line_number":2522,"context_line":"    :param context: nova.context.Context object"},{"line_number":2523,"context_line":"    :param usages: A list of dicts with the following format:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_93103802","line":2520,"range":{"start_line":2520,"start_character":26,"end_line":2520,"end_character":28},"in_reply_to":"3f4b6375_82dc9d74","updated":"2017-11-03 15:28:00.000000000","message":"Done","commit_id":"bbd0852c3a882745dcd4fc3507dda6f22a36d1ee"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"23cd34cbb414b93d6c2050c11747fa99856255ea","unresolved":false,"context_lines":[{"line_number":2694,"context_line":"        # AllocationRequestResource objects that represent each resource"},{"line_number":2695,"context_line":"        # provider for a shared resource"},{"line_number":2696,"context_line":"        sharing_resource_requests \u003d collections.defaultdict(list)"},{"line_number":2697,"context_line":"        for shared_rc_id in sharing_providers.keys():"},{"line_number":2698,"context_line":"            sharing \u003d sharing_providers[shared_rc_id]"},{"line_number":2699,"context_line":"            for sharing_rp_id in sharing:"},{"line_number":2700,"context_line":"                sharing_summary \u003d summaries[sharing_rp_id]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_22996978","line":2697,"range":{"start_line":2697,"start_character":45,"end_line":2697,"end_character":52},"updated":"2017-11-01 22:28:17.000000000","message":"strike","commit_id":"bbd0852c3a882745dcd4fc3507dda6f22a36d1ee"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c108c622fc6e1c1c8bad62f21b2c52c0908c58a9","unresolved":false,"context_lines":[{"line_number":2694,"context_line":"        # AllocationRequestResource objects that represent each resource"},{"line_number":2695,"context_line":"        # provider for a shared resource"},{"line_number":2696,"context_line":"        sharing_resource_requests \u003d collections.defaultdict(list)"},{"line_number":2697,"context_line":"        for shared_rc_id in sharing_providers.keys():"},{"line_number":2698,"context_line":"            sharing \u003d sharing_providers[shared_rc_id]"},{"line_number":2699,"context_line":"            for sharing_rp_id in sharing:"},{"line_number":2700,"context_line":"                sharing_summary \u003d summaries[sharing_rp_id]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_f32e4c41","line":2697,"range":{"start_line":2697,"start_character":45,"end_line":2697,"end_character":52},"in_reply_to":"3f4b6375_22996978","updated":"2017-11-03 15:28:00.000000000","message":"Done","commit_id":"bbd0852c3a882745dcd4fc3507dda6f22a36d1ee"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"23cd34cbb414b93d6c2050c11747fa99856255ea","unresolved":false,"context_lines":[{"line_number":2727,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2728,"context_line":"                ]"},{"line_number":2729,"context_line":"            )"},{"line_number":2730,"context_line":"            shared_resources \u003d set("},{"line_number":2731,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2732,"context_line":"                if _RC_CACHE.string_from_id(rc_id) not in ["},{"line_number":2733,"context_line":"                    res.resource_class for res in rp_summary.resources"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_02a1cda9","line":2730,"updated":"2017-11-01 22:28:17.000000000","message":"Or:\n\n shared_resources \u003d set(resources) - local_resources","commit_id":"bbd0852c3a882745dcd4fc3507dda6f22a36d1ee"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"44480975b442e7204c16950837d43da5b21c7741","unresolved":false,"context_lines":[{"line_number":2737,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2738,"context_line":"            local_resources \u003d set("},{"line_number":2739,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2740,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2741,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2742,"context_line":"                ]"},{"line_number":2743,"context_line":"            )"},{"line_number":2744,"context_line":"            shared_resources \u003d set("},{"line_number":2745,"context_line":"                rc_id for rc_id in resources.keys()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_ed2af98e","line":2742,"range":{"start_line":2740,"start_character":16,"end_line":2742,"end_character":17},"updated":"2017-11-03 06:38:41.000000000","message":"How about we add some cache like this https://review.openstack.org/#/c/514198/8/nova/objects/resource_provider.py@2568?\n\nThe list fields in the versioned object is inefficiency sometime","commit_id":"d71d7f015d7c1ffc7e9885760410cfe7aef2880a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c86c2bfda4879afd498b620d62d428e535b76603","unresolved":false,"context_lines":[{"line_number":2737,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2738,"context_line":"            local_resources \u003d set("},{"line_number":2739,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2740,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2741,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2742,"context_line":"                ]"},{"line_number":2743,"context_line":"            )"},{"line_number":2744,"context_line":"            shared_resources \u003d set("},{"line_number":2745,"context_line":"                rc_id for rc_id in resources.keys()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_8d47fb77","line":2742,"range":{"start_line":2740,"start_character":16,"end_line":2742,"end_character":17},"in_reply_to":"3f4b6375_64361b06","updated":"2017-11-03 14:34:52.000000000","message":"And what I\u0027m saying is I don\u0027t think the performance benefits of having a non-versioned field on the object that stores a reverse map of string to ID is worth the extra complexity and state/cache coherence problems.","commit_id":"d71d7f015d7c1ffc7e9885760410cfe7aef2880a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ea7ad36a2f6905787e456f0be253777f2850bf42","unresolved":false,"context_lines":[{"line_number":2737,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2738,"context_line":"            local_resources \u003d set("},{"line_number":2739,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2740,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2741,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2742,"context_line":"                ]"},{"line_number":2743,"context_line":"            )"},{"line_number":2744,"context_line":"            shared_resources \u003d set("},{"line_number":2745,"context_line":"                rc_id for rc_id in resources.keys()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_f3288c86","line":2742,"range":{"start_line":2740,"start_character":16,"end_line":2742,"end_character":17},"in_reply_to":"3f4b6375_8d47fb77","updated":"2017-11-03 15:13:56.000000000","message":"ok, that may avoid to running 1000 times for a small loop on 1000nodes, yea, maybe you are right, they are tiny improvement on the performance. We needn\u0027t the state/cache coherence I think, we don\u0027t update them. Anyway I just throw a thought at here.","commit_id":"d71d7f015d7c1ffc7e9885760410cfe7aef2880a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3ed762b808a42ff1953c21da5fab0e90594a976a","unresolved":false,"context_lines":[{"line_number":2737,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2738,"context_line":"            local_resources \u003d set("},{"line_number":2739,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2740,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2741,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2742,"context_line":"                ]"},{"line_number":2743,"context_line":"            )"},{"line_number":2744,"context_line":"            shared_resources \u003d set("},{"line_number":2745,"context_line":"                rc_id for rc_id in resources.keys()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_64361b06","line":2742,"range":{"start_line":2740,"start_character":16,"end_line":2742,"end_character":17},"in_reply_to":"3f4b6375_a4df7364","updated":"2017-11-03 13:32:03.000000000","message":"yea, Eric got my point.  not to add a field to versioned object, just a normal attribute of plain python object","commit_id":"d71d7f015d7c1ffc7e9885760410cfe7aef2880a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d26bedfd428c8406d7d9d585f5f87d2415e48e00","unresolved":false,"context_lines":[{"line_number":2737,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2738,"context_line":"            local_resources \u003d set("},{"line_number":2739,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2740,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2741,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2742,"context_line":"                ]"},{"line_number":2743,"context_line":"            )"},{"line_number":2744,"context_line":"            shared_resources \u003d set("},{"line_number":2745,"context_line":"                rc_id for rc_id in resources.keys()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_a4df7364","line":2742,"range":{"start_line":2740,"start_character":16,"end_line":2742,"end_character":17},"in_reply_to":"3f4b6375_a9dd0ede","updated":"2017-11-03 12:58:40.000000000","message":"If I\u0027m reading this right, Alex is after performance, not LOC.  His gripe is that versioned object attribute accesses (in this case ProviderSummary.resources and ProviderSummaryResource.resource_class) are slow.  And the @property doesn\u0027t change that bit.","commit_id":"d71d7f015d7c1ffc7e9885760410cfe7aef2880a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e99f958ef07c72a6aff999e4e431c02e95538aba","unresolved":false,"context_lines":[{"line_number":2737,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2738,"context_line":"            local_resources \u003d set("},{"line_number":2739,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2740,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2741,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2742,"context_line":"                ]"},{"line_number":2743,"context_line":"            )"},{"line_number":2744,"context_line":"            shared_resources \u003d set("},{"line_number":2745,"context_line":"                rc_id for rc_id in resources.keys()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_a9dd0ede","line":2742,"range":{"start_line":2740,"start_character":16,"end_line":2742,"end_character":17},"in_reply_to":"3f4b6375_ed2af98e","updated":"2017-11-03 12:40:57.000000000","message":"Not sure I want to add more state fields to the object definition of ProviderSummary. I think that would be a micro-optimization that isn\u0027t particularly worth adding. I could add a @property on ProviderSummary, though that would simply return the resource class string names for all resources in the provider summary. Something like this?\n\n class ProviderSummary(...):\n     @property\n     def resource_class_names(self):\n         return set(\n             _RC_CACHE.string_from_id(res.resource_class)\n             for res in self.resources\n         )\n\nThat way, there\u0027s no need to store any more state in the ProviderSummary object but we can simplify the above to:\n\n local_resources \u003d set(\n     rc for rc in resources\n     if rc in rp_summary.resource_class_names\n )\n\nThoughts? Would that be a compromise you\u0027d be OK with?","commit_id":"d71d7f015d7c1ffc7e9885760410cfe7aef2880a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ae57ed3e761c71d930b74ebfd494b4b0e86acc96","unresolved":false,"context_lines":[{"line_number":2520,"context_line":""},{"line_number":2521,"context_line":"def _build_provider_summaries(context, usages):"},{"line_number":2522,"context_line":"    \"\"\"Given a list of dicts of usage information, returns a dict, keyed by"},{"line_number":2523,"context_line":"    resource provider ID, or ProviderSummary objects."},{"line_number":2524,"context_line":""},{"line_number":2525,"context_line":"    :param context: nova.context.Context object"},{"line_number":2526,"context_line":"    :param usages: A list of dicts with the following format:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_e08b09bd","line":2523,"range":{"start_line":2523,"start_character":26,"end_line":2523,"end_character":28},"updated":"2017-11-04 00:40:50.000000000","message":"not done","commit_id":"b6a0c585db37f74710b96533607f22edda63b9ae"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"54215b5c7881c1fd0c227e61c8f9ca9ac358f91f","unresolved":false,"context_lines":[{"line_number":2520,"context_line":""},{"line_number":2521,"context_line":"def _build_provider_summaries(context, usages):"},{"line_number":2522,"context_line":"    \"\"\"Given a list of dicts of usage information, returns a dict, keyed by"},{"line_number":2523,"context_line":"    resource provider ID, or ProviderSummary objects."},{"line_number":2524,"context_line":""},{"line_number":2525,"context_line":"    :param context: nova.context.Context object"},{"line_number":2526,"context_line":"    :param usages: A list of dicts with the following format:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_db1172ae","line":2523,"range":{"start_line":2523,"start_character":26,"end_line":2523,"end_character":28},"in_reply_to":"3f4b6375_e08b09bd","updated":"2017-11-14 21:02:02.000000000","message":"Done","commit_id":"b6a0c585db37f74710b96533607f22edda63b9ae"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ae57ed3e761c71d930b74ebfd494b4b0e86acc96","unresolved":false,"context_lines":[{"line_number":2708,"context_line":"        # AllocationRequestResource objects that represent each resource"},{"line_number":2709,"context_line":"        # provider for a shared resource"},{"line_number":2710,"context_line":"        sharing_resource_requests \u003d collections.defaultdict(list)"},{"line_number":2711,"context_line":"        for shared_rc_id in sharing_providers.keys():"},{"line_number":2712,"context_line":"            sharing \u003d sharing_providers[shared_rc_id]"},{"line_number":2713,"context_line":"            for sharing_rp_id in sharing:"},{"line_number":2714,"context_line":"                sharing_summary \u003d summaries[sharing_rp_id]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_c0becd63","line":2711,"range":{"start_line":2711,"start_character":45,"end_line":2711,"end_character":52},"updated":"2017-11-04 00:40:50.000000000","message":"not done","commit_id":"b6a0c585db37f74710b96533607f22edda63b9ae"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"54215b5c7881c1fd0c227e61c8f9ca9ac358f91f","unresolved":false,"context_lines":[{"line_number":2708,"context_line":"        # AllocationRequestResource objects that represent each resource"},{"line_number":2709,"context_line":"        # provider for a shared resource"},{"line_number":2710,"context_line":"        sharing_resource_requests \u003d collections.defaultdict(list)"},{"line_number":2711,"context_line":"        for shared_rc_id in sharing_providers.keys():"},{"line_number":2712,"context_line":"            sharing \u003d sharing_providers[shared_rc_id]"},{"line_number":2713,"context_line":"            for sharing_rp_id in sharing:"},{"line_number":2714,"context_line":"                sharing_summary \u003d summaries[sharing_rp_id]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_7b227e02","line":2711,"range":{"start_line":2711,"start_character":45,"end_line":2711,"end_character":52},"in_reply_to":"3f4b6375_c0becd63","updated":"2017-11-14 21:02:02.000000000","message":"Done","commit_id":"b6a0c585db37f74710b96533607f22edda63b9ae"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64f00bff16d005a4b529d81d3e16837427fffb35","unresolved":false,"context_lines":[{"line_number":2653,"context_line":"                    \u0027uuid\u0027: u_rp_uuid,"},{"line_number":2654,"context_line":"                    \u0027resources\u0027: {},"},{"line_number":2655,"context_line":"                    # TODO(jaypipes): Fill in the provider\u0027s traits..."},{"line_number":2656,"context_line":"                    \u0027traits\u0027: [],"},{"line_number":2657,"context_line":"                }"},{"line_number":2658,"context_line":"                summaries[u_rp_id] \u003d summary"},{"line_number":2659,"context_line":"            summary[\u0027resources\u0027][u_rc_id] \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_d6c492f7","side":"PARENT","line":2656,"updated":"2017-11-15 13:32:39.000000000","message":"I guess it is dropped during the refactor as it is not yet filled / used anywhere.","commit_id":"dc2d66f4e3bd26f2656a47b154d638dd9d8e024b"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"b9e9655ac98bddff971c8d9555c93ebfd044acb1","unresolved":false,"context_lines":[{"line_number":2729,"context_line":"            rp_summary \u003d summaries[rp_id]"},{"line_number":2730,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2731,"context_line":"            local_resources \u003d set("},{"line_number":2732,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2733,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2734,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2735,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_16d4741f","line":2732,"range":{"start_line":2732,"start_character":44,"end_line":2732,"end_character":51},"updated":"2017-11-15 13:46:46.000000000","message":"can be deleted just as well as L2704.","commit_id":"aa716ed7bc0875a0d23b4102bdb67703d3f72ae5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"33498df6081bcf88f4fa42a0d1774b7a50d70271","unresolved":false,"context_lines":[{"line_number":2729,"context_line":"            rp_summary \u003d summaries[rp_id]"},{"line_number":2730,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2731,"context_line":"            local_resources \u003d set("},{"line_number":2732,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2733,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2734,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2735,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_c87bcb78","line":2732,"range":{"start_line":2732,"start_character":44,"end_line":2732,"end_character":51},"in_reply_to":"1f485f77_16d4741f","updated":"2017-11-15 16:35:45.000000000","message":"Agree.  There\u0027s actually a bunch of places in this file where that could be done.  For the sake of expediency, I\u0027ll leave it alone for now.","commit_id":"aa716ed7bc0875a0d23b4102bdb67703d3f72ae5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0864e80552d1e4f4467a695f99b1032f79f12381","unresolved":false,"context_lines":[{"line_number":2729,"context_line":"            rp_summary \u003d summaries[rp_id]"},{"line_number":2730,"context_line":"            rp_uuid \u003d rp_summary.resource_provider.uuid"},{"line_number":2731,"context_line":"            local_resources \u003d set("},{"line_number":2732,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2733,"context_line":"                if _RC_CACHE.string_from_id(rc_id) in ["},{"line_number":2734,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2735,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_308b9c68","line":2732,"range":{"start_line":2732,"start_character":44,"end_line":2732,"end_character":51},"in_reply_to":"1f485f77_c87bcb78","updated":"2017-11-17 21:04:20.000000000","message":"https://review.openstack.org/#/c/521189/","commit_id":"aa716ed7bc0875a0d23b4102bdb67703d3f72ae5"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"b9e9655ac98bddff971c8d9555c93ebfd044acb1","unresolved":false,"context_lines":[{"line_number":2735,"context_line":"                ]"},{"line_number":2736,"context_line":"            )"},{"line_number":2737,"context_line":"            shared_resources \u003d set("},{"line_number":2738,"context_line":"                rc_id for rc_id in resources.keys()"},{"line_number":2739,"context_line":"                if _RC_CACHE.string_from_id(rc_id) not in ["},{"line_number":2740,"context_line":"                    res.resource_class for res in rp_summary.resources"},{"line_number":2741,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_f6d67827","line":2738,"range":{"start_line":2738,"start_character":44,"end_line":2738,"end_character":51},"updated":"2017-11-15 13:46:46.000000000","message":"ditto. (or we can follow @efried\u0027s comment on PS3.)","commit_id":"aa716ed7bc0875a0d23b4102bdb67703d3f72ae5"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"b9e9655ac98bddff971c8d9555c93ebfd044acb1","unresolved":false,"context_lines":[{"line_number":2781,"context_line":"            # add an AllocationRequest that includes local resources from the"},{"line_number":2782,"context_line":"            # root provider and shared resources from each sharing provider of"},{"line_number":2783,"context_line":"            # that resource class"},{"line_number":2784,"context_line":"            non_shared_resources \u003d local_resources - shared_resources"},{"line_number":2785,"context_line":"            non_shared_requests \u003d ["},{"line_number":2786,"context_line":"                AllocationRequestResource("},{"line_number":2787,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_f6154e9d","line":2784,"range":{"start_line":2784,"start_character":35,"end_line":2784,"end_character":69},"updated":"2017-11-15 13:46:46.000000000","message":"I don\u0027t know we are doing this intentionally, but regarding L2737, let me just note that these are disjoint sets. (I don\u0027t think it needs fixing in this patch anyway.)","commit_id":"aa716ed7bc0875a0d23b4102bdb67703d3f72ae5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"33498df6081bcf88f4fa42a0d1774b7a50d70271","unresolved":false,"context_lines":[{"line_number":2781,"context_line":"            # add an AllocationRequest that includes local resources from the"},{"line_number":2782,"context_line":"            # root provider and shared resources from each sharing provider of"},{"line_number":2783,"context_line":"            # that resource class"},{"line_number":2784,"context_line":"            non_shared_resources \u003d local_resources - shared_resources"},{"line_number":2785,"context_line":"            non_shared_requests \u003d ["},{"line_number":2786,"context_line":"                AllocationRequestResource("},{"line_number":2787,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_48611bd3","line":2784,"range":{"start_line":2784,"start_character":35,"end_line":2784,"end_character":69},"in_reply_to":"1f485f77_f6154e9d","updated":"2017-11-15 16:35:45.000000000","message":"It\u0027s fixed later in the series.","commit_id":"aa716ed7bc0875a0d23b4102bdb67703d3f72ae5"}]}
