)]}'
{"cinder/objects/service.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"1507417e57873ea7e3c7c2979c4b4e9e1d6cf933","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        return cls._get_minimum_version(\u0027object_current_version\u0027, context,"},{"line_number":195,"context_line":"                                        binary)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def is_up(self):"},{"line_number":198,"context_line":"        \"\"\"Check whether a service is up based on last heartbeat.\"\"\""},{"line_number":199,"context_line":"        last_heartbeat \u003d self[\u0027updated_at\u0027] or self[\u0027created_at\u0027]"},{"line_number":200,"context_line":"        # Timestamps in DB are UTC."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_e84d469a","line":197,"updated":"2016-10-31 10:25:20.000000000","message":"nit: it could be marked as @property","commit_id":"c400e05593f463ac2bd02fb5c0b743d6b1a94eb1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"75db381256bcf33f16f0a210db9301f15b1d5c8e","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        return cls._get_minimum_version(\u0027object_current_version\u0027, context,"},{"line_number":195,"context_line":"                                        binary)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def is_up(self):"},{"line_number":198,"context_line":"        \"\"\"Check whether a service is up based on last heartbeat.\"\"\""},{"line_number":199,"context_line":"        last_heartbeat \u003d self[\u0027updated_at\u0027] or self[\u0027created_at\u0027]"},{"line_number":200,"context_line":"        # Timestamps in DB are UTC."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_8f3a56cc","line":197,"in_reply_to":"ba5da102_e84d469a","updated":"2016-11-23 11:58:22.000000000","message":"I think it\u0027s better to keep it this way for consistency with the cluster method (or we can also change the cluster is_up method).","commit_id":"c400e05593f463ac2bd02fb5c0b743d6b1a94eb1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"75db381256bcf33f16f0a210db9301f15b1d5c8e","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    def is_up(self):"},{"line_number":198,"context_line":"        \"\"\"Check whether a service is up based on last heartbeat.\"\"\""},{"line_number":199,"context_line":"        last_heartbeat \u003d self[\u0027updated_at\u0027] or self[\u0027created_at\u0027]"},{"line_number":200,"context_line":"        # Timestamps in DB are UTC."},{"line_number":201,"context_line":"        elapsed \u003d (timeutils.utcnow(with_timezone\u003dTrue) -"},{"line_number":202,"context_line":"                   last_heartbeat).total_seconds()"},{"line_number":203,"context_line":"        return abs(elapsed) \u003c\u003d CONF.service_down_time"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"@base.CinderObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_4f0f5ee1","line":203,"range":{"start_line":200,"start_character":0,"end_line":203,"end_character":53},"updated":"2016-11-23 11:58:22.000000000","message":"-1: I think this should be using the `utils.service_expired_time` method instead.","commit_id":"c400e05593f463ac2bd02fb5c0b743d6b1a94eb1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e3e8f661222836d8470c48fe3e81f009d8fe4c38","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    @property"},{"line_number":198,"context_line":"    def is_up(self):"},{"line_number":199,"context_line":"        \"\"\"Check whether a service is up based on last heartbeat.\"\"\""},{"line_number":200,"context_line":"        last_heartbeat \u003d self[\u0027updated_at\u0027] or self[\u0027created_at\u0027]"},{"line_number":201,"context_line":"        return (last_heartbeat and"},{"line_number":202,"context_line":"                last_heartbeat \u003e\u003d utils.service_expired_time(True))"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_f047f948","line":200,"range":{"start_line":200,"start_character":25,"end_line":200,"end_character":65},"updated":"2016-11-24 10:10:22.000000000","message":"-1: I forgot this in previous patch, but we should be using attribute notation instead: self.updated_at or self.created_at.","commit_id":"a5e16b80b7bd583f2b5ab07d733d9d9decc6cb2b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"01911c77a9eb39fdfe9453fe28cb6837983610a0","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    @property"},{"line_number":198,"context_line":"    def is_up(self):"},{"line_number":199,"context_line":"        \"\"\"Check whether a service is up based on last heartbeat.\"\"\""},{"line_number":200,"context_line":"        last_heartbeat \u003d self[\u0027updated_at\u0027] or self[\u0027created_at\u0027]"},{"line_number":201,"context_line":"        return (last_heartbeat and"},{"line_number":202,"context_line":"                last_heartbeat \u003e\u003d utils.service_expired_time(True))"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_cb824c94","line":200,"range":{"start_line":200,"start_character":25,"end_line":200,"end_character":65},"in_reply_to":"5a74a57a_f047f948","updated":"2016-11-24 10:50:08.000000000","message":"+1 to Gorka\u0027s comment.","commit_id":"a5e16b80b7bd583f2b5ab07d733d9d9decc6cb2b"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2bea9ff19817ffc5e3b53a440ee205094eef7ad6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from cinder.objects import fields as c_fields"},{"line_number":25,"context_line":"from cinder import utils"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"@base.CinderObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_3bb768d9","line":27,"updated":"2016-11-25 11:21:18.000000000","message":"Config is not used. Please remove it and import","commit_id":"01985fb23123ec87fc97628e6daffe21caf09226"}],"cinder/tests/unit/objects/test_service.py":[{"author":{"_account_id":23276,"name":"Nicholas Jones","email":"nj762h@att.com","username":"nj762h"},"change_message_id":"ce007ebbf0fe94aaedf492fba01a32cd56513059","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        service.updated_at \u003d timeutils.utcnow()"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        self.assertTrue(service.is_up())"},{"line_number":199,"context_line":"        # # Down"},{"line_number":200,"context_line":"        # service \u003d {\u0027updated_at\u0027: fts_func(fake_now - down_time - 1),"},{"line_number":201,"context_line":"        #            \u0027created_at\u0027: fts_func(fake_now - down_time - 1)}"},{"line_number":202,"context_line":"        # result \u003d service.is_up()"},{"line_number":203,"context_line":"        # self.assertFalse(result)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class TestServiceList(test_objects.BaseObjectsTestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_4d7e70e5","line":203,"range":{"start_line":199,"start_character":8,"end_line":203,"end_character":34},"updated":"2016-10-21 20:13:04.000000000","message":"It looks like this probably wasn\u0027t meant to be left in?","commit_id":"972e9ba467181a5c2bcc3dd2963627fed8e3009f"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"7090dcb927c63602c419feae86daa9ef77e7dbfc","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        service.updated_at \u003d timeutils.utcnow()"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        self.assertTrue(service.is_up())"},{"line_number":199,"context_line":"        # # Down"},{"line_number":200,"context_line":"        # service \u003d {\u0027updated_at\u0027: fts_func(fake_now - down_time - 1),"},{"line_number":201,"context_line":"        #            \u0027created_at\u0027: fts_func(fake_now - down_time - 1)}"},{"line_number":202,"context_line":"        # result \u003d service.is_up()"},{"line_number":203,"context_line":"        # self.assertFalse(result)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class TestServiceList(test_objects.BaseObjectsTestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_05cc4388","line":203,"range":{"start_line":199,"start_character":8,"end_line":203,"end_character":34},"in_reply_to":"da6895a0_4d7e70e5","updated":"2016-10-22 22:33:03.000000000","message":"Hi,thank you for review. You\u0027re right. My bad.","commit_id":"972e9ba467181a5c2bcc3dd2963627fed8e3009f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"75db381256bcf33f16f0a210db9301f15b1d5c8e","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        cluster_get.assert_called_once_with(self.context, None,"},{"line_number":180,"context_line":"                                            name\u003d\u0027mycluster\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_service_is_up(self):"},{"line_number":183,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":184,"context_line":"        service \u003d objects.Service(ctxt)"},{"line_number":185,"context_line":"        service.create()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_6fb97ae9","line":182,"updated":"2016-11-23 11:58:22.000000000","message":"-1: Use one method for each case.","commit_id":"c400e05593f463ac2bd02fb5c0b743d6b1a94eb1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"75db381256bcf33f16f0a210db9301f15b1d5c8e","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                                            name\u003d\u0027mycluster\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_service_is_up(self):"},{"line_number":183,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":184,"context_line":"        service \u003d objects.Service(ctxt)"},{"line_number":185,"context_line":"        service.create()"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_8fd176fe","line":183,"updated":"2016-11-23 11:58:22.000000000","message":"-1: It doesn\u0027t need to be an admin context, so you can use self.context","commit_id":"c400e05593f463ac2bd02fb5c0b743d6b1a94eb1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"75db381256bcf33f16f0a210db9301f15b1d5c8e","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    def test_service_is_up(self):"},{"line_number":183,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":184,"context_line":"        service \u003d objects.Service(ctxt)"},{"line_number":185,"context_line":"        service.create()"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        self.assertTrue(service.is_up())"},{"line_number":188,"context_line":"        # change updated_at time for -1 day to make visibility that service"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_4f359e44","line":185,"updated":"2016-11-23 11:58:22.000000000","message":"nit: We don\u0027t need to create it in the DB if we set the created_at and updated_at values on L184","commit_id":"c400e05593f463ac2bd02fb5c0b743d6b1a94eb1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"75db381256bcf33f16f0a210db9301f15b1d5c8e","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # change updated_at time for -1 day to make visibility that service"},{"line_number":189,"context_line":"        # is down now"},{"line_number":190,"context_line":"        service.created_at +\u003d datetime.timedelta(days\u003d-1)"},{"line_number":191,"context_line":"        service.updated_at +\u003d datetime.timedelta(days\u003d-1)"},{"line_number":192,"context_line":"        self.assertFalse(service.is_up())"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # # Up"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_afce3258","line":191,"updated":"2016-11-23 11:58:22.000000000","message":"We should be using a closer to the configured time value.","commit_id":"c400e05593f463ac2bd02fb5c0b743d6b1a94eb1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e3e8f661222836d8470c48fe3e81f009d8fe4c38","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        cluster_get.assert_called_once_with(self.context, None,"},{"line_number":179,"context_line":"                                            name\u003d\u0027mycluster\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_service_is_up(self):"},{"line_number":182,"context_line":"        updates \u003d {\"updated_at\": timeutils.utcnow()}"},{"line_number":183,"context_line":"        service \u003d fake_service.fake_service_obj(self.context, **updates)"},{"line_number":184,"context_line":"        self.assertTrue(service.is_up)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_904c0544","line":181,"updated":"2016-11-24 10:10:22.000000000","message":"nit: I\u0027m missing 2 tests, one where we have create_at but no updated_at and another where we have an old create_at and a new update_at (you could do those tests using ddt), but I think it\u0027s not a big deal.","commit_id":"a5e16b80b7bd583f2b5ab07d733d9d9decc6cb2b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e3e8f661222836d8470c48fe3e81f009d8fe4c38","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                                            name\u003d\u0027mycluster\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_service_is_up(self):"},{"line_number":182,"context_line":"        updates \u003d {\"updated_at\": timeutils.utcnow()}"},{"line_number":183,"context_line":"        service \u003d fake_service.fake_service_obj(self.context, **updates)"},{"line_number":184,"context_line":"        self.assertTrue(service.is_up)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def test_service_is_down(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_d5ae6f84","line":183,"range":{"start_line":182,"start_character":0,"end_line":183,"end_character":72},"updated":"2016-11-24 10:10:22.000000000","message":"nit: This looks more straightforward like:\n\n service \u003d fake_service.fake_service_obj(\n     self.context, updated_at\u003dtimeutils.utcnow())","commit_id":"a5e16b80b7bd583f2b5ab07d733d9d9decc6cb2b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e3e8f661222836d8470c48fe3e81f009d8fe4c38","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def test_service_is_down(self):"},{"line_number":187,"context_line":"        # set time difference that is bigger that config\u0027s periodic_interval"},{"line_number":188,"context_line":"        past_time \u003d timeutils.utcnow() + datetime.timedelta(seconds\u003d-64)"},{"line_number":189,"context_line":"        updates \u003d {\"updated_at\": past_time,"},{"line_number":190,"context_line":"                   \"created_at\": past_time}"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_5536df52","line":188,"range":{"start_line":188,"start_character":39,"end_line":188,"end_character":72},"updated":"2016-11-24 10:10:22.000000000","message":"nit: I think it\u0027s easier to read if you subtract a positive delta than if you add a negative delta.","commit_id":"a5e16b80b7bd583f2b5ab07d733d9d9decc6cb2b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"01911c77a9eb39fdfe9453fe28cb6837983610a0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        cluster_get.assert_called_once_with(self.context, None,"},{"line_number":179,"context_line":"                                            name\u003d\u0027mycluster\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_service_is_up(self):"},{"line_number":182,"context_line":"        updates \u003d {\"updated_at\": timeutils.utcnow()}"},{"line_number":183,"context_line":"        service \u003d fake_service.fake_service_obj(self.context, **updates)"},{"line_number":184,"context_line":"        self.assertTrue(service.is_up)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def test_service_is_down(self):"},{"line_number":187,"context_line":"        # set time difference that is bigger that config\u0027s periodic_interval"},{"line_number":188,"context_line":"        past_time \u003d timeutils.utcnow() + datetime.timedelta(seconds\u003d-64)"},{"line_number":189,"context_line":"        updates \u003d {\"updated_at\": past_time,"},{"line_number":190,"context_line":"                   \"created_at\": past_time}"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        service \u003d fake_service.fake_service_obj(self.context, **updates)"},{"line_number":193,"context_line":"        self.assertFalse(service.is_up)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"class TestServiceList(test_objects.BaseObjectsTestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_eb546822","line":193,"range":{"start_line":181,"start_character":0,"end_line":193,"end_character":39},"updated":"2016-11-24 10:50:08.000000000","message":"We could probably just copy tests from test_cluster?","commit_id":"a5e16b80b7bd583f2b5ab07d733d9d9decc6cb2b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b6eefbd5bd2ae566a57e0a783dfa0d20184f3e26","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    @ddt.data((timeutils.utcnow(), True),"},{"line_number":184,"context_line":"              (timeutils.utcnow() - datetime.timedelta(seconds\u003d64), False))"},{"line_number":185,"context_line":"    @ddt.unpack"},{"line_number":186,"context_line":"    def test_service_is_up(self, update_time, result):"},{"line_number":187,"context_line":"        down_time \u003d 5"},{"line_number":188,"context_line":"        self.flags(service_down_time\u003ddown_time)"},{"line_number":189,"context_line":"        service \u003d fake_service.fake_service_obj("}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_d3e0d42b","line":186,"updated":"2016-11-28 14:50:50.000000000","message":"nit: I\u0027m still missing 2 tests, one where we have create_at but no updated_at and another where we have an old create_at and a new update_at, but I think it\u0027s not a big deal.","commit_id":"2a9ebe9224b87081facc453f122c9b2d53d799f7"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b32667bb925bfb39d323a4dbc2caa6af7e9097b3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder.tests.unit import objects as test_objects"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@ddt.ddt"},{"line_number":30,"context_line":"class TestService(test_objects.BaseObjectsTestCase):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api.service_get\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_53573b57","line":29,"updated":"2016-11-29 09:57:26.000000000","message":"Looks like we don\u0027t need it now","commit_id":"1b88043911b237d8d6a7de5dbd62b5800f995cfc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b32667bb925bfb39d323a4dbc2caa6af7e9097b3","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                                            name\u003d\u0027mycluster\u0027)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_service_is_up(self):"},{"line_number":184,"context_line":"        down_time \u003d 5"},{"line_number":185,"context_line":"        self.flags(service_down_time\u003ddown_time)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # test if service is up"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_53de5bdd","line":184,"updated":"2016-11-29 09:57:26.000000000","message":"Please, add a note here why we don\u0027t use ddt here","commit_id":"1b88043911b237d8d6a7de5dbd62b5800f995cfc"}],"cinder/tests/unit/scheduler/test_host_filters.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2bea9ff19817ffc5e3b53a440ee205094eef7ad6","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"@ddt.ddt"},{"line_number":51,"context_line":"@mock.patch(\u0027cinder.objects.service.Service.is_up\u0027,"},{"line_number":52,"context_line":"            new_callable\u003dmock.PropertyMock)"},{"line_number":53,"context_line":"class CapacityFilterTestCase(HostFiltersTestCase):"},{"line_number":54,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_fb4a50c4","line":51,"updated":"2016-11-25 11:21:18.000000000","message":"Good catch! Thanks for cleanup","commit_id":"01985fb23123ec87fc97628e6daffe21caf09226"}],"cinder/tests/unit/scheduler/test_host_manager.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"75db381256bcf33f16f0a210db9301f15b1d5c8e","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                                                 disabled\u003dFalse,"},{"line_number":265,"context_line":"                                                 topic\u003dtopic)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # NOTE (mdovgal): verify that Service.is_up was called for each srv"},{"line_number":268,"context_line":"        expected \u003d [mock.call() for s in service_objs]"},{"line_number":269,"context_line":"        self.assertEqual(expected, _mock_service_is_up.call_args_list)"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_2fcce234","line":267,"updated":"2016-11-23 11:58:22.000000000","message":"-1: Unnecessary NOTE, it\u0027s clear what it\u0027s doing, at most a normal comment","commit_id":"c400e05593f463ac2bd02fb5c0b743d6b1a94eb1"}]}
