)]}'
{"nova/cells/utils.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a7ee186c140ac46a8336746f390604f7064878f2","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                elif name \u003d\u003d \u0027host\u0027:"},{"line_number":95,"context_line":"                    yield name, self.host"},{"line_number":96,"context_line":"                else:"},{"line_number":97,"context_line":"                    yield name, getattr(self._obj, name)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def __getattr__(self, key):"},{"line_number":100,"context_line":"        return getattr(self._obj, key)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_1caf6d82","line":97,"updated":"2015-04-08 13:21:08.000000000","message":"suggestion: I\u0027m wondering if it won\u0027t be neater if instead of using those inner-most ifs, you\u0027d use:\n\n    yield name, self.__getitem__(name)\n\nor something similar, since that already does the same thing.","commit_id":"471699d140da84af28624cfee078ad8dd80b0f52"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"7e5ccf7c86287dfbc90249e58f5da8cec628e7b1","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                elif name \u003d\u003d \u0027host\u0027:"},{"line_number":95,"context_line":"                    yield name, self.host"},{"line_number":96,"context_line":"                else:"},{"line_number":97,"context_line":"                    yield name, getattr(self._obj, name)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def __getattr__(self, key):"},{"line_number":100,"context_line":"        return getattr(self._obj, key)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_2250cc5c","line":97,"in_reply_to":"9aa53dc9_1caf6d82","updated":"2015-04-08 13:47:13.000000000","message":"That would be a nice cleanup.  Worth doing on a respin.","commit_id":"471699d140da84af28624cfee078ad8dd80b0f52"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6a0949980208557270fe64f2450ace414c5c846c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                elif name \u003d\u003d \u0027host\u0027:"},{"line_number":95,"context_line":"                    yield name, self.host"},{"line_number":96,"context_line":"                else:"},{"line_number":97,"context_line":"                    yield name, getattr(self._obj, name)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def __getattr__(self, key):"},{"line_number":100,"context_line":"        return getattr(self._obj, key)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_ed2c1504","line":97,"in_reply_to":"9aa53dc9_2250cc5c","updated":"2015-04-08 13:56:13.000000000","message":"Agreed, we should do this later but here we want to hit RC1","commit_id":"471699d140da84af28624cfee078ad8dd80b0f52"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8219cea6de8956f90f32054a64cc08b37a49af73","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    # NOTE(sbauza): As service is a Service object, we need to wrap it"},{"line_number":181,"context_line":"    # for adding the cell_path information"},{"line_number":182,"context_line":"    service_proxy \u003d ServiceProxy(service, cell_name)"},{"line_number":183,"context_line":"    return service_proxy"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def add_cell_to_task_log(task_log, cell_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_f492909e","line":183,"updated":"2015-04-08 18:39:06.000000000","message":"Remove this intermediate variable?","commit_id":"471699d140da84af28624cfee078ad8dd80b0f52"}],"nova/tests/unit/cells/test_cells_messaging.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a7ee186c140ac46a8336746f390604f7064878f2","unresolved":false,"context_lines":[{"line_number":915,"context_line":"                \u0027fake_host\u0027, binary, params_to_update)"},{"line_number":916,"context_line":"        result \u003d response.value_or_raise()"},{"line_number":917,"context_line":"        self.assertIsInstance(result, objects.Service)"},{"line_number":918,"context_line":"        # NOTE(sbauza): As NovaObjects can\u0027t be comparated directly, we need to"},{"line_number":919,"context_line":"        # check the fields by primitiving them first"},{"line_number":920,"context_line":"        self.assertEqual(jsonutils.to_primitive(fake_service),"},{"line_number":921,"context_line":"                         jsonutils.to_primitive(result))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_fce1699b","line":918,"updated":"2015-04-08 13:21:08.000000000","message":"compared*","commit_id":"471699d140da84af28624cfee078ad8dd80b0f52"}],"nova/tests/unit/cells/test_cells_utils.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a7ee186c140ac46a8336746f390604f7064878f2","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        self.assertEqual(cells_utils.cell_with_item(cell_path, \u0027fake\u0027),"},{"line_number":165,"context_line":"                         proxy.host)"},{"line_number":166,"context_line":"        self.assertRaises(AttributeError,"},{"line_number":167,"context_line":"                          getattr, proxy, \u0027compute_node\u0027)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_proxy_object_serializer_to_primitive(self):"},{"line_number":170,"context_line":"        obj \u003d objects.ComputeNode(id\u003d1, host\u003d\u0027fake\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_27e9fe14","line":167,"updated":"2015-04-08 13:21:08.000000000","message":"suggestion: those 2 tests look almost identical. how about:\n\n    @mock.patch.object(objects.Service, \u0027obj_load_attr\u0027)\n    def test_add_cell_to_service_no_compute_node(self, mock_get_by_id):\n        fake_service \u003d objects.Service(id\u003d1, host\u003d\u0027fake\u0027)\n\tmock_get_by_id.side_effect \u003d exception.ServiceNotFound(service_id\u003d1)\n        self._check_add_cell_to_service(fake_service)\n\n    def test_add_cell_to_service_with_compute_node(self, mock_get_by_id):\n        fake_service \u003d objects.Service(id\u003d1, host\u003d\u0027fake\u0027)\n        fake_service.compute_node \u003d objects.ComputeNode(id\u003d1, host\u003d\u0027fake\u0027)\n        self._check_add_cell_to_service(fake_service)\n\n    def _check_add_cell_to_service(self, fake_service):\n        cell_path \u003d \u0027fake_path\u0027\n        ...","commit_id":"471699d140da84af28624cfee078ad8dd80b0f52"}],"nova/tests/unit/compute/test_host_api.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a7ee186c140ac46a8336746f390604f7064878f2","unresolved":false,"context_lines":[{"line_number":353,"context_line":"    def test_service_get_all_no_zones(self):"},{"line_number":354,"context_line":"        services \u003d ["},{"line_number":355,"context_line":"            cells_utils.ServiceProxy("},{"line_number":356,"context_line":"                objects.Service(id\u003d1, topic\u003d\u0027compute\u0027, host\u003d\u0027host1\u0027),"},{"line_number":357,"context_line":"                \u0027cell1\u0027),"},{"line_number":358,"context_line":"            cells_utils.ServiceProxy("},{"line_number":359,"context_line":"                objects.Service(id\u003d2, topic\u003d\u0027compute\u0027, host\u003d\u0027host2\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_471d220e","line":356,"updated":"2015-04-08 13:21:08.000000000","message":"so, test_service.fake_service is no longer necessary?\n\nif so, why is it still needed at L375.","commit_id":"471699d140da84af28624cfee078ad8dd80b0f52"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a7ee186c140ac46a8336746f390604f7064878f2","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        services \u003d ["},{"line_number":374,"context_line":"            cells_utils.ServiceProxy("},{"line_number":375,"context_line":"                objects.Service(**dict(test_service.fake_service, id\u003d1,"},{"line_number":376,"context_line":"                                topic\u003d\u0027compute\u0027, host\u003d\u0027host1\u0027)),"},{"line_number":377,"context_line":"                \u0027cell1\u0027),"},{"line_number":378,"context_line":"            cells_utils.ServiceProxy("},{"line_number":379,"context_line":"                objects.Service(**dict(test_service.fake_service, id\u003d2,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_27057ebb","line":376,"updated":"2015-04-08 13:21:08.000000000","message":"Is test_service.fake_service needed?\n\nIf not, then the arguments can be passed as kwargs, no need to have **dict","commit_id":"471699d140da84af28624cfee078ad8dd80b0f52"}]}
