)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":20146,"name":"yuyafei","email":"yu.yafei@foxmail.com","username":"yuyafei"},"change_message_id":"ffb57920674153d967d4c1265fa4baae9dd1864e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dao Cong Tien \u003ctiendc@vn.fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-26 17:53:03 +0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove mox from api/openstack/compute/test_extended_hypervisors.py"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Replaced stubs.Set() with mock.patch() in"},{"line_number":10,"context_line":"nova/tests/unit/api/openstack/compute/test_extended_hypervisors.py"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_45db6c7c","line":7,"range":{"start_line":7,"start_character":1,"end_line":7,"end_character":66},"updated":"2016-05-26 12:14:38.000000000","message":"The first line should be limited to 50 characters.","commit_id":"a8290f4097d1d10006be0efb4ecf8fb3b9ec9d3c"}],"nova/tests/unit/api/openstack/compute/test_extended_hypervisors.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c4634ef273094caa618eaec178274dbfa4c3f7aa","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    return test_hypervisors.TEST_HYPERS_OBJ"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"@classmethod"},{"line_number":40,"context_line":"def fake_service_get_by_compute_host(cls, context, host):"},{"line_number":41,"context_line":"    for service in test_hypervisors.TEST_SERVICES:"},{"line_number":42,"context_line":"        if service.host \u003d\u003d host:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_903b48eb","side":"PARENT","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":12},"updated":"2016-10-11 14:20:14.000000000","message":"Well that\u0027s odd","commit_id":"cfd64c976b8aaacaf09fd2a6303877674fcfada0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c4634ef273094caa618eaec178274dbfa4c3f7aa","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        with test.nested("},{"line_number":85,"context_line":"            mock.patch.object(self.controller.host_api, \u0027compute_node_get_all\u0027,"},{"line_number":86,"context_line":"                              side_effect\u003dfake_compute_node_get_all),"},{"line_number":87,"context_line":"            mock.patch.object(objects.Service, \u0027get_by_compute_host\u0027,"},{"line_number":88,"context_line":"                              side_effect\u003dfake_service_get_by_compute_host),"},{"line_number":89,"context_line":"            mock.patch.object(self.controller.servicegroup_api,"},{"line_number":90,"context_line":"                              \u0027service_is_up\u0027, return_value\u003dTrue),"},{"line_number":91,"context_line":"        ) as (mock_node_get_all, mock_get_by_host, mock_service_is_up):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_4bff4101","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":76},"updated":"2016-10-11 14:20:14.000000000","message":"This could/should be a decorator instead","commit_id":"1d8e404b3432840c6eeb8cd1ba4c9577bd55a218"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"fe37b6b8dfaddbb2bf05fdb61518de97f70f8920","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        with test.nested("},{"line_number":85,"context_line":"            mock.patch.object(self.controller.host_api, \u0027compute_node_get_all\u0027,"},{"line_number":86,"context_line":"                              side_effect\u003dfake_compute_node_get_all),"},{"line_number":87,"context_line":"            mock.patch.object(objects.Service, \u0027get_by_compute_host\u0027,"},{"line_number":88,"context_line":"                              side_effect\u003dfake_service_get_by_compute_host),"},{"line_number":89,"context_line":"            mock.patch.object(self.controller.servicegroup_api,"},{"line_number":90,"context_line":"                              \u0027service_is_up\u0027, return_value\u003dTrue),"},{"line_number":91,"context_line":"        ) as (mock_node_get_all, mock_get_by_host, mock_service_is_up):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_de24a9b0","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":76},"in_reply_to":"fa6399be_4bff4101","updated":"2017-01-04 06:52:22.000000000","message":"Done","commit_id":"1d8e404b3432840c6eeb8cd1ba4c9577bd55a218"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c4634ef273094caa618eaec178274dbfa4c3f7aa","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        with test.nested("},{"line_number":103,"context_line":"            mock.patch.object(self.controller.host_api, \u0027compute_node_get\u0027,"},{"line_number":104,"context_line":"                              side_effect\u003dfake_compute_node_get),"},{"line_number":105,"context_line":"            mock.patch.object(objects.Service, \u0027get_by_compute_host\u0027,"},{"line_number":106,"context_line":"                              side_effect\u003dfake_service_get_by_compute_host),"},{"line_number":107,"context_line":"            mock.patch.object(self.controller.servicegroup_api,"},{"line_number":108,"context_line":"                              \u0027service_is_up\u0027, return_value\u003dTrue),"},{"line_number":109,"context_line":"        ) as (mock_node_get, mock_get_by_host, mock_service_is_up):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_ab0e1d32","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":76},"updated":"2016-10-11 14:20:14.000000000","message":"ditto","commit_id":"1d8e404b3432840c6eeb8cd1ba4c9577bd55a218"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"fe37b6b8dfaddbb2bf05fdb61518de97f70f8920","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        with test.nested("},{"line_number":103,"context_line":"            mock.patch.object(self.controller.host_api, \u0027compute_node_get\u0027,"},{"line_number":104,"context_line":"                              side_effect\u003dfake_compute_node_get),"},{"line_number":105,"context_line":"            mock.patch.object(objects.Service, \u0027get_by_compute_host\u0027,"},{"line_number":106,"context_line":"                              side_effect\u003dfake_service_get_by_compute_host),"},{"line_number":107,"context_line":"            mock.patch.object(self.controller.servicegroup_api,"},{"line_number":108,"context_line":"                              \u0027service_is_up\u0027, return_value\u003dTrue),"},{"line_number":109,"context_line":"        ) as (mock_node_get, mock_get_by_host, mock_service_is_up):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_fe3b2dcf","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":76},"in_reply_to":"fa6399be_ab0e1d32","updated":"2017-01-04 06:52:22.000000000","message":"Done","commit_id":"1d8e404b3432840c6eeb8cd1ba4c9577bd55a218"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"599d5f56b05d307e8e7b78d322cf04347a5cbb6a","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def setUp(self):"},{"line_number":68,"context_line":"        super(ExtendedHypervisorsTestV21, self).setUp()"},{"line_number":69,"context_line":"        self._set_up_controller()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_view_hypervisor_detail_noservers(self):"},{"line_number":72,"context_line":"        with mock.patch.object(self.controller.servicegroup_api,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_24bae9c0","line":69,"updated":"2017-01-16 18:36:33.000000000","message":"nit: I don\u0027t think we need to keep  _set_up_controller() which contains just a single line..","commit_id":"ac22bdac9e7134ec1ce2fddbe50e2fba07e4414b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6ada5cad3255478dc6c825331789e9d9dd3a1788","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self._set_up_controller()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_view_hypervisor_detail_noservers(self):"},{"line_number":72,"context_line":"        with mock.patch.object(self.controller.servicegroup_api,"},{"line_number":73,"context_line":"                               \u0027service_is_up\u0027,"},{"line_number":74,"context_line":"                               return_value\u003dTrue) as mock_service_is_up:"},{"line_number":75,"context_line":"            req \u003d self._get_request()"},{"line_number":76,"context_line":"            result \u003d self.controller._view_hypervisor("},{"line_number":77,"context_line":"                test_hypervisors.TEST_HYPERS_OBJ[0],"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_d0d22e34","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":72},"updated":"2017-01-13 08:59:03.000000000","message":"this could have go in setUp as all tests need it","commit_id":"ac22bdac9e7134ec1ce2fddbe50e2fba07e4414b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"d59ab21763fc8b9c2e48aa3f981fe2d165351553","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self._set_up_controller()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_view_hypervisor_detail_noservers(self):"},{"line_number":72,"context_line":"        with mock.patch.object(self.controller.servicegroup_api,"},{"line_number":73,"context_line":"                               \u0027service_is_up\u0027,"},{"line_number":74,"context_line":"                               return_value\u003dTrue) as mock_service_is_up:"},{"line_number":75,"context_line":"            req \u003d self._get_request()"},{"line_number":76,"context_line":"            result \u003d self.controller._view_hypervisor("},{"line_number":77,"context_line":"                test_hypervisors.TEST_HYPERS_OBJ[0],"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_40c6214a","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":72},"in_reply_to":"7a3c09a3_d0d22e34","updated":"2017-01-16 09:17:20.000000000","message":"+1","commit_id":"ac22bdac9e7134ec1ce2fddbe50e2fba07e4414b"}]}
