)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6fe4cc2587028cb7dbde191ab16493a4cbba2ba","unresolved":false,"context_lines":[{"line_number":16,"context_line":"By this change, bug-1705231 is fixed without considering the"},{"line_number":17,"context_line":"order of INNER JOIN and OUTER JOINs."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug:#1705231"},{"line_number":20,"context_line":"Related-Bug:#1731072"},{"line_number":21,"context_line":"Change-Id: If8c1717c950a29b87cc22ea32d679a6289614067"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9f91af0f_8b29fa8a","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":9},"updated":"2018-01-09 18:07:31.000000000","message":"Should probably be Related-Bug, since this patch isn\u0027t actually *fixing* the bug.","commit_id":"0b50bca09d6ccc13979a196144f9d6b99d0e98b0"}],"nova/objects/resource_provider.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a2556f1e66234be840e0c7149cec4355655319d","unresolved":false,"context_lines":[{"line_number":1321,"context_line":"        ut \u003d usage_tables[rc_id]"},{"line_number":1322,"context_line":"        amount \u003d resources[rc_id]"},{"line_number":1323,"context_line":""},{"line_number":1324,"context_line":"        if join_chain is None:"},{"line_number":1325,"context_line":"            rp_link \u003d rpt"},{"line_number":1326,"context_line":"        else:"},{"line_number":1327,"context_line":"            rp_link \u003d join_chain"},{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"        # We can do a more efficient INNER JOIN when we don\u0027t have shared"},{"line_number":1330,"context_line":"        # resource providers for this resource class"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f91af0f_b398876a","line":1327,"range":{"start_line":1324,"start_character":0,"end_line":1327,"end_character":32},"updated":"2018-01-02 17:48:56.000000000","message":"This could now reduce to:\n\n rp_link \u003d join_chain or rpt","commit_id":"eec0be51cb717603716bdecc52ab49db84f24d92"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1736e4549d04e1c90030fc58375f63161a3abb6","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"    :param resources: Dict keyed by resource class integer ID of requested"},{"line_number":1049,"context_line":"                      amounts of that resource"},{"line_number":1050,"context_line":"    \"\"\""},{"line_number":1051,"context_line":"    # NOTE(jaypipes): The SQL we generate here depends on which resource"},{"line_number":1052,"context_line":"    # classes have providers that share that resource via an aggregate."},{"line_number":1053,"context_line":"    #"},{"line_number":1054,"context_line":"    # We begin building a \"join chain\" by starting with a projection from the"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f96bb07_6cda20ea","line":1051,"updated":"2018-01-11 23:07:28.000000000","message":"Does any of this need to be updated now?","commit_id":"0b50bca09d6ccc13979a196144f9d6b99d0e98b0"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"3c85d541742b6864c54b5b6ea4607034d4841224","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"    :param resources: Dict keyed by resource class integer ID of requested"},{"line_number":1049,"context_line":"                      amounts of that resource"},{"line_number":1050,"context_line":"    \"\"\""},{"line_number":1051,"context_line":"    # NOTE(jaypipes): The SQL we generate here depends on which resource"},{"line_number":1052,"context_line":"    # classes have providers that share that resource via an aggregate."},{"line_number":1053,"context_line":"    #"},{"line_number":1054,"context_line":"    # We begin building a \"join chain\" by starting with a projection from the"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f96bb07_e22ab7e5","line":1051,"in_reply_to":"7f96bb07_6cda20ea","updated":"2018-01-12 00:26:00.000000000","message":"Ah, this should be updated. I\u0027ll do it in a follow-on.","commit_id":"0b50bca09d6ccc13979a196144f9d6b99d0e98b0"}],"nova/tests/functional/db/test_allocation_candidates.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be6eae8e6a41e59d8dca8cada868d6983172e39","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        # Run it!"},{"line_number":344,"context_line":"        res \u003d [r[0] for r in rp_obj._get_all_with_shared(self.ctx, resources)]"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # we should get"},{"line_number":347,"context_line":"        # expected \u003d [cn1, cn3, cn5, cn6, cn8]"},{"line_number":348,"context_line":"        # actual is"},{"line_number":349,"context_line":"        expected \u003d [cn1, cn3, cn5, ss5, cn6, cn8]"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        self.assertEqual(set(rp.id for rp in expected), set(res))"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_f87e4be2","line":349,"range":{"start_line":346,"start_character":0,"end_line":349,"end_character":49},"updated":"2017-11-28 20:03:04.000000000","message":"Why wouldn\u0027t we expect ss5 in the result?  I think this is doing the right thing now.","commit_id":"4272af4fd226bd835fc3667f829a5f839e095139"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"b5e85c86963aa8760900a30d0a0e1b7b419685cf","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        # Run it!"},{"line_number":344,"context_line":"        res \u003d [r[0] for r in rp_obj._get_all_with_shared(self.ctx, resources)]"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # we should get"},{"line_number":347,"context_line":"        # expected \u003d [cn1, cn3, cn5, cn6, cn8]"},{"line_number":348,"context_line":"        # actual is"},{"line_number":349,"context_line":"        expected \u003d [cn1, cn3, cn5, ss5, cn6, cn8]"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        self.assertEqual(set(rp.id for rp in expected), set(res))"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_77d681c6","line":349,"range":{"start_line":346,"start_character":0,"end_line":349,"end_character":49},"in_reply_to":"ff82abbf_f87e4be2","updated":"2017-12-01 01:29:49.000000000","message":"Could you review https://review.openstack.org/#/c/522408/ about this point? This is the patch on which this patch is created.","commit_id":"4272af4fd226bd835fc3667f829a5f839e095139"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be6eae8e6a41e59d8dca8cada868d6983172e39","unresolved":false,"context_lines":[{"line_number":1234,"context_line":"            # are satisfied."},{"line_number":1235,"context_line":"            # TODO(Tetsuro): the cn which satisfies all quantitative aspects"},{"line_number":1236,"context_line":"            # gives up satisfying qualitative aspects without checking out"},{"line_number":1237,"context_line":"            # sharing providers it is connected to."},{"line_number":1238,"context_line":"            # [(\u0027cn4\u0027, fields.ResourceClass.VCPU, 1),"},{"line_number":1239,"context_line":"            # (\u0027cn4\u0027, fields.ResourceClass.MEMORY_MB, 64),"},{"line_number":1240,"context_line":"            # (\u0027ss4\u0027, fields.ResourceClass.DISK_GB, 1500)],"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_786a3b1a","line":1237,"updated":"2017-11-28 20:03:04.000000000","message":"Need to mark this with a bug","commit_id":"4272af4fd226bd835fc3667f829a5f839e095139"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"b5e85c86963aa8760900a30d0a0e1b7b419685cf","unresolved":false,"context_lines":[{"line_number":1234,"context_line":"            # are satisfied."},{"line_number":1235,"context_line":"            # TODO(Tetsuro): the cn which satisfies all quantitative aspects"},{"line_number":1236,"context_line":"            # gives up satisfying qualitative aspects without checking out"},{"line_number":1237,"context_line":"            # sharing providers it is connected to."},{"line_number":1238,"context_line":"            # [(\u0027cn4\u0027, fields.ResourceClass.VCPU, 1),"},{"line_number":1239,"context_line":"            # (\u0027cn4\u0027, fields.ResourceClass.MEMORY_MB, 64),"},{"line_number":1240,"context_line":"            # (\u0027ss4\u0027, fields.ResourceClass.DISK_GB, 1500)],"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_17e375a6","line":1237,"in_reply_to":"ff82abbf_786a3b1a","updated":"2017-12-01 01:29:49.000000000","message":"ack. will do.","commit_id":"4272af4fd226bd835fc3667f829a5f839e095139"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3be6eae8e6a41e59d8dca8cada868d6983172e39","unresolved":false,"context_lines":[{"line_number":1262,"context_line":"             (\u0027cn10\u0027, fields.ResourceClass.DISK_GB, 1500)],"},{"line_number":1263,"context_line":"            # TODO(Tetsuro): the cn which satisfies all quantitative aspects"},{"line_number":1264,"context_line":"            # gives up satisfying qualitative aspects without checking out"},{"line_number":1265,"context_line":"            # sharing providers it is connected to."},{"line_number":1266,"context_line":"            # [(\u0027cn10\u0027, fields.ResourceClass.VCPU, 1),"},{"line_number":1267,"context_line":"            #  (\u0027cn10\u0027, fields.ResourceClass.MEMORY_MB, 64),"},{"line_number":1268,"context_line":"            #  (\u0027ss10\u0027, fields.ResourceClass.DISK_GB, 1500)],"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_d864a74c","line":1265,"updated":"2017-11-28 20:03:04.000000000","message":"ditto","commit_id":"4272af4fd226bd835fc3667f829a5f839e095139"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a2556f1e66234be840e0c7149cec4355655319d","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"            [(\u0027cn2\u0027, fields.ResourceClass.VCPU, 1),"},{"line_number":1255,"context_line":"             (\u0027ss2_1\u0027, fields.ResourceClass.MEMORY_MB, 64),"},{"line_number":1256,"context_line":"             (\u0027ss2_2\u0027, fields.ResourceClass.DISK_GB, 1500)],"},{"line_number":1257,"context_line":"            [(\u0027cn1\u0027, fields.ResourceClass.VCPU, 1),"},{"line_number":1258,"context_line":"             (\u0027cn1\u0027, fields.ResourceClass.MEMORY_MB, 64),"},{"line_number":1259,"context_line":"             (\u0027ss1\u0027, fields.ResourceClass.DISK_GB, 1500)],"},{"line_number":1260,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f91af0f_13e293d6","line":1257,"updated":"2018-01-02 17:48:56.000000000","message":"piconit: these could be put into logical order now.","commit_id":"eec0be51cb717603716bdecc52ab49db84f24d92"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0a2556f1e66234be840e0c7149cec4355655319d","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"            [(\u0027cn2\u0027, fields.ResourceClass.VCPU, 1),"},{"line_number":1295,"context_line":"             (\u0027ss2_1\u0027, fields.ResourceClass.MEMORY_MB, 64),"},{"line_number":1296,"context_line":"             (\u0027ss2_2\u0027, fields.ResourceClass.DISK_GB, 1500)],"},{"line_number":1297,"context_line":"            [(\u0027cn1\u0027, fields.ResourceClass.VCPU, 1),"},{"line_number":1298,"context_line":"             (\u0027cn1\u0027, fields.ResourceClass.MEMORY_MB, 64),"},{"line_number":1299,"context_line":"             (\u0027ss1_1\u0027, fields.ResourceClass.DISK_GB, 1500)],"},{"line_number":1300,"context_line":"            [(\u0027cn1\u0027, fields.ResourceClass.VCPU, 1),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f91af0f_b3e647e8","line":1297,"updated":"2018-01-02 17:48:56.000000000","message":"ditto.","commit_id":"eec0be51cb717603716bdecc52ab49db84f24d92"}]}
