)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b253ebe180bc238014bbd974094424f3002a0029","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patchset introduces changes needed to utilize new state"},{"line_number":10,"context_line":"synchronization technique which supports various backends."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I08ab2d1e3c9fa729290eb237caa97ed1be81a1fc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F9odI%3D","line":11,"updated":"2013-12-09 14:22:04.000000000","message":"blueprint missing \n\nBP: no-db-scheduler","commit_id":"8214141bd4551e8bdf8f78968467244129720ebf"}],"nova/conductor/manager.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"3a43f2492a84713346f3ec025ee271c998da7eb0","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.compute_task_mgr \u003d ComputeTaskManager()"},{"line_number":90,"context_line":"        self.quotas \u003d quota.QUOTAS"},{"line_number":91,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi.CellsAPI()"},{"line_number":92,"context_line":"        self.Synchronizer \u003d state_vault.Synchronizer()"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def create_rpc_dispatcher(self, *args, **kwargs):"},{"line_number":95,"context_line":"        kwargs[\u0027additional_apis\u0027] \u003d [self.compute_task_mgr]"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FEvE%3D","line":92,"updated":"2014-01-17 17:34:59.000000000","message":"I think this should be \u0027self.synchronizer\u0027 - note lower case. Upper case is usually reserved for class names and your use of upper case for the attribute name is causing the syntax highlighter to incorrectly mark it is as a class","commit_id":"fe857ed3a9c42f468604231ed646db404cd69e31"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"f3748e347256766903a3e3ed31ce407f2d722bd0","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.compute_task_mgr \u003d ComputeTaskManager()"},{"line_number":90,"context_line":"        self.quotas \u003d quota.QUOTAS"},{"line_number":91,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi.CellsAPI()"},{"line_number":92,"context_line":"        self.Synchronizer \u003d state_vault.Synchronizer()"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def create_rpc_dispatcher(self, *args, **kwargs):"},{"line_number":95,"context_line":"        kwargs[\u0027additional_apis\u0027] \u003d [self.compute_task_mgr]"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Bx1U%3D","line":92,"in_reply_to":"AAAAUH%2F%2FEvE%3D","updated":"2014-01-22 08:41:22.000000000","message":"Agreed.","commit_id":"fe857ed3a9c42f468604231ed646db404cd69e31"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"56de3cd0af1c538ac09d72243d51c9abfc43ca6e","unresolved":false,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    def compute_node_create(self, context, values):"},{"line_number":458,"context_line":"        result \u003d self.db.compute_node_create(context, values)"},{"line_number":459,"context_line":"        key \u003d state_vault.CONF.primary_key"},{"line_number":460,"context_line":"        synchronizer_update \u003d {\u0027values\u0027: values}"},{"line_number":461,"context_line":"        if type(values) is dict:"},{"line_number":462,"context_line":"            hostname \u003d values.get(\u0027hypervisor_hostname\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BuaE%3D","line":459,"updated":"2014-01-22 19:17:09.000000000","message":"I saw an ERROR in the jenkins run showing that it doesn\u0027t know what CONF.primary_key is here","commit_id":"3d9d89bafe64883bbc8de242734d3d4dd435f448"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"eb0d755a921f8c15ba819a0cf2851cb3fd6717d5","unresolved":false,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    def compute_node_create(self, context, values):"},{"line_number":458,"context_line":"        result \u003d self.db.compute_node_create(context, values)"},{"line_number":459,"context_line":"        key \u003d state_vault.CONF.primary_key"},{"line_number":460,"context_line":"        synchronizer_update \u003d {\u0027values\u0027: values}"},{"line_number":461,"context_line":"        if type(values) is dict:"},{"line_number":462,"context_line":"            hostname \u003d values.get(\u0027hypervisor_hostname\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Br4I%3D","line":459,"in_reply_to":"AAAAUH%2F%2BuaE%3D","updated":"2014-01-23 07:42:00.000000000","message":"Thank you for pointing this out!","commit_id":"3d9d89bafe64883bbc8de242734d3d4dd435f448"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"eb681012546e2024cd391c952238f6778354a143","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        self.weight_handler \u003d weights.HostWeightHandler()"},{"line_number":330,"context_line":"        self.weight_classes \u003d self.weight_handler.get_matching_classes("},{"line_number":331,"context_line":"                CONF.scheduler_weight_classes)"},{"line_number":332,"context_line":"        self.Synchronizer \u003d state_vault.Synchronizer()"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def _choose_host_filters(self, filter_cls_names):"},{"line_number":335,"context_line":"        \"\"\"Since the caller may specify which filters to use we need"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FX8U%3D","line":332,"updated":"2014-01-14 14:10:13.000000000","message":"You\u0027re adding this but nothing is using it afaict. Seems like this should have been added in a later patch where something actually needs it.","commit_id":"f9be08ec611af548dda923fc59df5ca7ac9cfe36"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"9c543eb7e7b26cae4166e69a8508041cf13b3411","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        self.weight_handler \u003d weights.HostWeightHandler()"},{"line_number":330,"context_line":"        self.weight_classes \u003d self.weight_handler.get_matching_classes("},{"line_number":331,"context_line":"                CONF.scheduler_weight_classes)"},{"line_number":332,"context_line":"        self.Synchronizer \u003d state_vault.Synchronizer()"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def _choose_host_filters(self, filter_cls_names):"},{"line_number":335,"context_line":"        \"\"\"Since the caller may specify which filters to use we need"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FXsw%3D","line":332,"in_reply_to":"AAAAUH%2F%2FX8U%3D","updated":"2014-01-14 14:49:19.000000000","message":"Good point, it belongs to a future change indeed.","commit_id":"f9be08ec611af548dda923fc59df5ca7ac9cfe36"}],"nova/tests/scheduler/test_host_manager.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"eb681012546e2024cd391c952238f6778354a143","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class HostManagerTestCase(test.TestCase):"},{"line_number":43,"context_line":"    \"\"\"Test case for HostManager class.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FX74%3D","line":42,"updated":"2014-01-14 14:10:13.000000000","message":"What\u0027s going on with all these test cases you\u0027ve just started changing inheritance of in patchset 17 onwards ? This isn\u0027t mentioned in the commit message at all and don\u0027t inmmediately seem related to the subject.  If these inheritance changes are genuine bugfixes then they should likely be done in a separate patch from this scheduler refactoring.","commit_id":"f9be08ec611af548dda923fc59df5ca7ac9cfe36"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"9c543eb7e7b26cae4166e69a8508041cf13b3411","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class HostManagerTestCase(test.TestCase):"},{"line_number":43,"context_line":"    \"\"\"Test case for HostManager class.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FXt0%3D","line":42,"in_reply_to":"AAAAUH%2F%2FX74%3D","updated":"2014-01-14 14:49:19.000000000","message":"Well, apparently test.NoDBTestCase ignores migration needed for mysql backend operation. This leads to multiple test failures which I\u0027ve fixed with switching to test.TestCase. I haven\u0027t come up with a better plan for fixing this issue so far, so I would appreciate any hints on how it should be done.","commit_id":"f9be08ec611af548dda923fc59df5ca7ac9cfe36"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"3a43f2492a84713346f3ec025ee271c998da7eb0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class HostManagerTestCase(test.TestCase):"},{"line_number":43,"context_line":"    \"\"\"Test case for HostManager class.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2FEuM%3D","line":42,"updated":"2014-01-17 17:34:59.000000000","message":"Based on your previous comments on this I\u0027m still not convinced this should be done as it does not appear related to the main functional change in this patch. If this is flawed with mysql then we should fix it as a standalone fix.","commit_id":"fe857ed3a9c42f468604231ed646db404cd69e31"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"f1e4fcb5728866520a67f6d33ca5122ec0a3bc4a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class HostManagerTestCase(test.TestCase):"},{"line_number":43,"context_line":"    \"\"\"Test case for HostManager class.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2BwQ8%3D","line":42,"in_reply_to":"AAAAUH%2F%2Bxzc%3D","updated":"2014-01-22 14:46:19.000000000","message":"Okay, I was hinted how to deal with this in elegant way. Never mind the previous comment.","commit_id":"fe857ed3a9c42f468604231ed646db404cd69e31"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"f3748e347256766903a3e3ed31ce407f2d722bd0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class HostManagerTestCase(test.TestCase):"},{"line_number":43,"context_line":"    \"\"\"Test case for HostManager class.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F%2Bxzc%3D","line":42,"in_reply_to":"AAAAUH%2F%2FEuM%3D","updated":"2014-01-22 08:41:22.000000000","message":"Yes, this particular part is not related to the main functional change, but without it tests will fail. I understand that unrelated changes should be submitted as different patch sets, but here we have a catch: these unrelated changes to tests make sense only in context of this patch set chain.","commit_id":"fe857ed3a9c42f468604231ed646db404cd69e31"}]}
