)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"eee97c4011293e8875986155b95ea37620d26aab","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Limit allocation candidates (v1.15, v1.16)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"v1.15:"},{"line_number":10,"context_line":"Microversion 1.15 does not need any support in osc"},{"line_number":11,"context_line":"so we just skip over that in this patch."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"v1.16:"},{"line_number":14,"context_line":"New optional parameter to allocation candidate list:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"5f7c97a3_519a3c60","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":40},"updated":"2018-06-29 19:41:48.000000000","message":"one wonders why we needed a microversion for something the client doesn\u0027t know about or care about. :)","commit_id":"e4410df80b5df82e6b5c3d43b5b8f68ede2df2f0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"42e051a153499e638531b69ad90d2616f6f4b284","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Limit allocation candidates (v1.15, v1.16)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"v1.15:"},{"line_number":10,"context_line":"Microversion 1.15 does not need any support in osc"},{"line_number":11,"context_line":"so we just skip over that in this patch."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"v1.16:"},{"line_number":14,"context_line":"New optional parameter to allocation candidate list:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"5f7c97a3_ec8e0bd0","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":40},"in_reply_to":"5f7c97a3_519a3c60","updated":"2018-06-29 20:51:17.000000000","message":"A CLI might not since it\u0027s not caching, but a long-lived running service that cares about caching state might care.","commit_id":"e4410df80b5df82e6b5c3d43b5b8f68ede2df2f0"}],"osc_placement/resources/allocation_candidate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"be4450d26445f0ec3d7050f0013156f695af20cd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            \u0027--limit\u0027,"},{"line_number":73,"context_line":"            metavar\u003d\u0027\u003climit\u003e\u0027,"},{"line_number":74,"context_line":"            help\u003d\u0027A positive integer to limit \u0027"},{"line_number":75,"context_line":"                 \u0027the maximum number of allocation candidates.\u0027"},{"line_number":76,"context_line":"                 \u0027This option requires at least \u0027"},{"line_number":77,"context_line":"                 \u0027``--os-placement-api-version 1.16``.\u0027"},{"line_number":78,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_70a73f52","line":75,"range":{"start_line":75,"start_character":62,"end_line":75,"end_character":63},"updated":"2018-06-29 12:48:58.000000000","message":"oops missed a space","commit_id":"b11a8d5dc3cdc665749fbb8c436b02538e5c4976"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b1156d1fc9c5e09636859cd3acf41fc108a186fa","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            \u0027--limit\u0027,"},{"line_number":73,"context_line":"            metavar\u003d\u0027\u003climit\u003e\u0027,"},{"line_number":74,"context_line":"            help\u003d\u0027A positive integer to limit \u0027"},{"line_number":75,"context_line":"                 \u0027the maximum number of allocation candidates.\u0027"},{"line_number":76,"context_line":"                 \u0027This option requires at least \u0027"},{"line_number":77,"context_line":"                 \u0027``--os-placement-api-version 1.16``.\u0027"},{"line_number":78,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_337231b2","line":75,"range":{"start_line":75,"start_character":62,"end_line":75,"end_character":63},"in_reply_to":"5f7c97a3_70a73f52","updated":"2018-06-29 12:57:49.000000000","message":"Done","commit_id":"b11a8d5dc3cdc665749fbb8c436b02538e5c4976"}],"osc_placement/tests/functional/test_allocation_candidate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"39226277402ed9a929ad32122acfb9ba40b45240","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        unlimited \u003d self.allocation_candidate_list("},{"line_number":112,"context_line":"            resources\u003d(\u0027MEMORY_MB\u003d1024\u0027, \u0027DISK_GB\u003d80\u0027))"},{"line_number":113,"context_line":"        self.assertTrue(len(set([row[\u0027request no\u0027] for row in unlimited])) \u003e 1)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        limited \u003d self.allocation_candidate_list("},{"line_number":116,"context_line":"            resources\u003d(\u0027MEMORY_MB\u003d1024\u0027, \u0027DISK_GB\u003d80\u0027),"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_30b467d4","line":113,"range":{"start_line":113,"start_character":38,"end_line":113,"end_character":45},"updated":"2018-06-29 12:24:45.000000000","message":"Ah this is # now.","commit_id":"70d45d27fe396b1f6ee1e5e3eabd9426c7db6daa"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"09db0d6ee687dc914ea4fb3fabe23410f4babbec","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        unlimited \u003d self.allocation_candidate_list("},{"line_number":112,"context_line":"            resources\u003d(\u0027MEMORY_MB\u003d1024\u0027, \u0027DISK_GB\u003d80\u0027))"},{"line_number":113,"context_line":"        self.assertTrue(len(set([row[\u0027request no\u0027] for row in unlimited])) \u003e 1)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        limited \u003d self.allocation_candidate_list("},{"line_number":116,"context_line":"            resources\u003d(\u0027MEMORY_MB\u003d1024\u0027, \u0027DISK_GB\u003d80\u0027),"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_54ef771c","line":113,"range":{"start_line":113,"start_character":38,"end_line":113,"end_character":45},"in_reply_to":"5f7c97a3_30b467d4","updated":"2018-07-02 11:47:30.000000000","message":"Done by Matt.","commit_id":"70d45d27fe396b1f6ee1e5e3eabd9426c7db6daa"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"43eae172741b45327fdf36a8521543be3858e91d","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_list_empty(self):"},{"line_number":31,"context_line":"        self.assertEqual([], self.allocation_candidate_list("},{"line_number":32,"context_line":"            resources\u003d[\u0027MEMORY_MB\u003d999999999\u0027]))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_list_one(self):"},{"line_number":35,"context_line":"        rp \u003d self.resource_provider_create()"}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_2d806a9c","line":32,"range":{"start_line":32,"start_character":22,"end_line":32,"end_character":45},"updated":"2018-07-02 13:09:53.000000000","message":"nit: it should be a tuple as in any other cases below","commit_id":"000342456b4f65f4218a7f698c56a883ee90c62b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e63ae05c99e8f84428abbcb7ea25941dd0f928a","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        unlimited \u003d self.allocation_candidate_list("},{"line_number":114,"context_line":"            resources\u003d(\u0027MEMORY_MB\u003d1024\u0027, \u0027DISK_GB\u003d80\u0027))"},{"line_number":115,"context_line":"        self.assertTrue(len(set([row[\u0027#\u0027] for row in unlimited])) \u003e 1)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        limited \u003d self.allocation_candidate_list("},{"line_number":118,"context_line":"            resources\u003d(\u0027MEMORY_MB\u003d1024\u0027, \u0027DISK_GB\u003d80\u0027),"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_39950c33","line":115,"range":{"start_line":115,"start_character":13,"end_line":115,"end_character":23},"updated":"2018-07-02 15:26:31.000000000","message":"This provides a not-very-useful error message if it fails (False is not True) so it would have been nice to dump the actual length if this fails, but that\u0027s a nit.","commit_id":"9f4e7eb9e82de3bd5778802e11fa15911c79b7bb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e63ae05c99e8f84428abbcb7ea25941dd0f928a","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        limited \u003d self.allocation_candidate_list("},{"line_number":118,"context_line":"            resources\u003d(\u0027MEMORY_MB\u003d1024\u0027, \u0027DISK_GB\u003d80\u0027),"},{"line_number":119,"context_line":"            limit\u003d1)"},{"line_number":120,"context_line":"        self.assertEqual(len(set([row[\u0027#\u0027] for row in limited])), 1)"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_b9735c4e","line":120,"range":{"start_line":120,"start_character":25,"end_line":120,"end_character":67},"updated":"2018-07-02 15:26:31.000000000","message":"nit: these should be reversed (assertEqual(expected, actual))","commit_id":"9f4e7eb9e82de3bd5778802e11fa15911c79b7bb"}],"osc_placement/version.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"be4450d26445f0ec3d7050f0013156f695af20cd","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \u00271.12\u0027,"},{"line_number":31,"context_line":"    \u00271.13\u0027,"},{"line_number":32,"context_line":"    \u00271.14\u0027,"},{"line_number":33,"context_line":"    \u00271.15\u0027,"},{"line_number":34,"context_line":"    \u00271.16\u0027"},{"line_number":35,"context_line":"]"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_d06f33f8","line":33,"updated":"2018-06-29 12:48:58.000000000","message":"Might want to leave a comment that this isn\u0027t used in the client.","commit_id":"b11a8d5dc3cdc665749fbb8c436b02538e5c4976"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b1156d1fc9c5e09636859cd3acf41fc108a186fa","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \u00271.12\u0027,"},{"line_number":31,"context_line":"    \u00271.13\u0027,"},{"line_number":32,"context_line":"    \u00271.14\u0027,"},{"line_number":33,"context_line":"    \u00271.15\u0027,"},{"line_number":34,"context_line":"    \u00271.16\u0027"},{"line_number":35,"context_line":"]"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_5377ada0","line":33,"in_reply_to":"5f7c97a3_d06f33f8","updated":"2018-06-29 12:57:49.000000000","message":"Done","commit_id":"b11a8d5dc3cdc665749fbb8c436b02538e5c4976"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"43eae172741b45327fdf36a8521543be3858e91d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \u00271.11\u0027,"},{"line_number":30,"context_line":"    \u00271.12\u0027,"},{"line_number":31,"context_line":"    \u00271.14\u0027,"},{"line_number":32,"context_line":"    \u00271.15\u0027,  # unused"},{"line_number":33,"context_line":"    \u00271.16\u0027"},{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_eda2723f","line":32,"updated":"2018-07-02 13:09:53.000000000","message":"We skipped 1.13 differently but there we really don\u0027t support it. In the other hand 1.15 is supported just it is a no-op. So it is OK as is.","commit_id":"000342456b4f65f4218a7f698c56a883ee90c62b"}]}
