)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"174ce322d933cd8529e63221ecf068ad39d26953","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     haixin \u003chaixin@inspur.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-12-23 17:53:11 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Don\u0027t send hearbeats if driver not initializing correctly"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds is_working method to base Manager class that can be"},{"line_number":10,"context_line":"used to indicate that service has some problems and isn\u0027t running"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_74256609","line":7,"updated":"2020-01-08 15:59:37.000000000","message":"s/hearbeats/heartbeats/\n\nWe should fix spelling typos in the commit header since people search on it.","commit_id":"45f8877ffab69423cd9779241720ec46ff1a59cb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"fb71330e9fe509d9605aa844dbb32ac92fbe2d4a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     haixin \u003chaixin@inspur.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-12-23 17:53:11 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Don\u0027t send hearbeats if driver not initializing correctly"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds is_working method to base Manager class that can be"},{"line_number":10,"context_line":"used to indicate that service has some problems and isn\u0027t running"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_9ebecdad","line":7,"in_reply_to":"3fa7e38b_74256609","updated":"2020-01-13 07:50:07.000000000","message":"Done","commit_id":"45f8877ffab69423cd9779241720ec46ff1a59cb"}],"manila/manager.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"2b1331b1149108f4084c060bd4d2abeada6e0914","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def is_working(self):"},{"line_number":119,"context_line":"        \"\"\"Method indicating if service is working correctly."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        This method is supposed to be overriden by subclasses and return if"},{"line_number":122,"context_line":"        manager is working correctly."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_855b7253","line":121,"range":{"start_line":121,"start_character":73,"end_line":121,"end_character":75},"updated":"2019-12-23 12:52:16.000000000","message":"nit: \"return if manager is working correctly\" may sound like \"does not return if manager is not working correctly\". \"return whether manager is working correctly or not\" sound unambiguous.","commit_id":"45f8877ffab69423cd9779241720ec46ff1a59cb"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"174ce322d933cd8529e63221ecf068ad39d26953","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def is_working(self):"},{"line_number":119,"context_line":"        \"\"\"Method indicating if service is working correctly."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        This method is supposed to be overriden by subclasses and return if"},{"line_number":122,"context_line":"        manager is working correctly."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_d47f7adb","line":121,"range":{"start_line":121,"start_character":73,"end_line":121,"end_character":75},"in_reply_to":"3fa7e38b_855b7253","updated":"2020-01-08 15:59:37.000000000","message":"How about: This method should be overridden by subclasses which will return False when the back end is not working correctly.","commit_id":"45f8877ffab69423cd9779241720ec46ff1a59cb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"fb71330e9fe509d9605aa844dbb32ac92fbe2d4a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def is_working(self):"},{"line_number":119,"context_line":"        \"\"\"Method indicating if service is working correctly."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        This method is supposed to be overriden by subclasses and return if"},{"line_number":122,"context_line":"        manager is working correctly."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_5eb135e3","line":121,"range":{"start_line":121,"start_character":73,"end_line":121,"end_character":75},"in_reply_to":"3fa7e38b_855b7253","updated":"2020-01-13 07:50:07.000000000","message":"yes, it sounds better.","commit_id":"45f8877ffab69423cd9779241720ec46ff1a59cb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"fb71330e9fe509d9605aa844dbb32ac92fbe2d4a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def is_working(self):"},{"line_number":119,"context_line":"        \"\"\"Method indicating if service is working correctly."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        This method is supposed to be overriden by subclasses and return if"},{"line_number":122,"context_line":"        manager is working correctly."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_3eb0f9dc","line":121,"range":{"start_line":121,"start_character":73,"end_line":121,"end_character":75},"in_reply_to":"3fa7e38b_d47f7adb","updated":"2020-01-13 07:50:07.000000000","message":"yes, this will be more unambiguous.","commit_id":"45f8877ffab69423cd9779241720ec46ff1a59cb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"cf7a2eab60353f76761fe953c219eaee29490f53","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            config[key] \u003d CONF.get(key, None)"},{"line_number":116,"context_line":"        return config"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def is_working(self):"},{"line_number":119,"context_line":"        \"\"\"Method indicating if service is working correctly."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        This method should be overridden by subclasses which will return False"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_bc04e77e","line":118,"range":{"start_line":118,"start_character":7,"end_line":118,"end_character":18},"updated":"2020-01-13 22:00:54.000000000","message":"what about one of the options: \ndef ready(self):\ndef is_service_ready(self):\n\nNot sure if a manager will be able to tell/guarantee that its working properly, but might be \u0027ready\u0027 to receive requests.","commit_id":"378a602bfeab9a028c3403d50d7239f1d2e5dde2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"3e4a508e447e80f48adbb59936ba791186196722","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            config[key] \u003d CONF.get(key, None)"},{"line_number":116,"context_line":"        return config"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def is_working(self):"},{"line_number":119,"context_line":"        \"\"\"Method indicating if service is working correctly."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        This method should be overridden by subclasses which will return False"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_eb3e1325","line":118,"range":{"start_line":118,"start_character":7,"end_line":118,"end_character":18},"in_reply_to":"3fa7e38b_bc04e77e","updated":"2020-01-14 08:26:58.000000000","message":"yes, this only can tell us whether the driver has initialized successfuly. if the driver appear down because some reason after initialized. the value of is_working is aslo true, Because it was initialized to work, this only return false when a driver Initialization or failed.","commit_id":"378a602bfeab9a028c3403d50d7239f1d2e5dde2"}],"manila/service.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0e3a612945c9b50101dba8cbe86e41ba0e219f53","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if not self.manager.is_working():"},{"line_number":249,"context_line":"            # NOTE(haixin): If manager reports a problem we\u0027re not sending"},{"line_number":250,"context_line":"            # heartbeats - to indicate that service is actually down."},{"line_number":251,"context_line":"            LOG.error(\u0027Manager for service %s is reporting problems, skip\u0027"},{"line_number":252,"context_line":"                      \u0027sending heartbeat. Service will appear \"down\".\u0027,"},{"line_number":253,"context_line":"                      self.binary)"},{"line_number":254,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_163a68e5","line":251,"range":{"start_line":251,"start_character":73,"end_line":251,"end_character":74},"updated":"2019-12-20 16:27:51.000000000","message":"please add a space here, otherwise it will log \"... skipsending heartbeat...\"","commit_id":"a4e0a97c2ab0e5fae937a9e4bd009df65685df04"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"8898e3cb97b0a9a75bdfc2d76e9d0adb88a8ae05","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if not self.manager.is_working():"},{"line_number":249,"context_line":"            # NOTE(haixin): If manager reports a problem we\u0027re not sending"},{"line_number":250,"context_line":"            # heartbeats - to indicate that service is actually down."},{"line_number":251,"context_line":"            LOG.error(\u0027Manager for service %s is reporting problems, skip\u0027"},{"line_number":252,"context_line":"                      \u0027sending heartbeat. Service will appear \"down\".\u0027,"},{"line_number":253,"context_line":"                      self.binary)"},{"line_number":254,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_62af4ce0","line":251,"range":{"start_line":251,"start_character":73,"end_line":251,"end_character":74},"in_reply_to":"3fa7e38b_163a68e5","updated":"2019-12-23 09:57:50.000000000","message":"Done","commit_id":"a4e0a97c2ab0e5fae937a9e4bd009df65685df04"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"cf7a2eab60353f76761fe953c219eaee29490f53","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if not self.manager.is_working():"},{"line_number":249,"context_line":"            # NOTE(haixin): If manager reports a problem we\u0027re not sending"},{"line_number":250,"context_line":"            # heartbeats - to indicate that service is actually down."},{"line_number":251,"context_line":"            LOG.error(\u0027Manager for service %s is reporting problems, skip \u0027"},{"line_number":252,"context_line":"                      \u0027sending heartbeat. Service will appear \"down\".\u0027,"},{"line_number":253,"context_line":"                      self.binary)"},{"line_number":254,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_3c7f97bd","line":251,"range":{"start_line":251,"start_character":46,"end_line":251,"end_character":67},"updated":"2020-01-13 22:00:54.000000000","message":"the service might just being initialized so we can rephrase this: Service %s is not ready yet. Skipping state update routine.\n\nSomething like that, what do you think.","commit_id":"378a602bfeab9a028c3403d50d7239f1d2e5dde2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"3e4a508e447e80f48adbb59936ba791186196722","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if not self.manager.is_working():"},{"line_number":249,"context_line":"            # NOTE(haixin): If manager reports a problem we\u0027re not sending"},{"line_number":250,"context_line":"            # heartbeats - to indicate that service is actually down."},{"line_number":251,"context_line":"            LOG.error(\u0027Manager for service %s is reporting problems, skip \u0027"},{"line_number":252,"context_line":"                      \u0027sending heartbeat. Service will appear \"down\".\u0027,"},{"line_number":253,"context_line":"                      self.binary)"},{"line_number":254,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_abc57b0b","line":251,"range":{"start_line":251,"start_character":46,"end_line":251,"end_character":67},"in_reply_to":"3fa7e38b_3c7f97bd","updated":"2020-01-14 08:26:58.000000000","message":"yes, it only skip service is not ready yet or fail to ready, if other reason lead to driver apper down after initialized, it will stuck in periodic_tasks, then will not report_state.","commit_id":"378a602bfeab9a028c3403d50d7239f1d2e5dde2"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"c46dd359632ba0e7e760307c803d0b0558de5121","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    def report_state(self):"},{"line_number":247,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""},{"line_number":248,"context_line":"        if not self.manager.is_service_ready():"},{"line_number":249,"context_line":"            # NOTE(haixin): If the service is Initialization or failed."},{"line_number":250,"context_line":"            LOG.error(\u0027Manager for service %s is not ready yet, skipping state\u0027"},{"line_number":251,"context_line":"                      \u0027update routine. Service will appear \"down\".\u0027,"},{"line_number":252,"context_line":"                      self.binary)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_8c6e92c6","line":249,"range":{"start_line":249,"start_character":12,"end_line":249,"end_character":71},"updated":"2020-01-14 12:42:22.000000000","message":"I think the code is pretty clear without the NOTE but if you want it I suggest: If the service is still initializing or failed to intialize.","commit_id":"be3d3f1ef54c4bbf31a31b3163f337cfa01780da"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9b1483df49df57e38c0b44e9d9a32af566559974","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    def report_state(self):"},{"line_number":247,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""},{"line_number":248,"context_line":"        if not self.manager.is_service_ready():"},{"line_number":249,"context_line":"            # NOTE(haixin): If the service is Initialization or failed."},{"line_number":250,"context_line":"            LOG.error(\u0027Manager for service %s is not ready yet, skipping state\u0027"},{"line_number":251,"context_line":"                      \u0027update routine. Service will appear \"down\".\u0027,"},{"line_number":252,"context_line":"                      self.binary)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_f41259b3","line":249,"range":{"start_line":249,"start_character":12,"end_line":249,"end_character":71},"in_reply_to":"3fa7e38b_8c6e92c6","updated":"2020-01-15 03:38:21.000000000","message":"Done","commit_id":"be3d3f1ef54c4bbf31a31b3163f337cfa01780da"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"c46dd359632ba0e7e760307c803d0b0558de5121","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""},{"line_number":248,"context_line":"        if not self.manager.is_service_ready():"},{"line_number":249,"context_line":"            # NOTE(haixin): If the service is Initialization or failed."},{"line_number":250,"context_line":"            LOG.error(\u0027Manager for service %s is not ready yet, skipping state\u0027"},{"line_number":251,"context_line":"                      \u0027update routine. Service will appear \"down\".\u0027,"},{"line_number":252,"context_line":"                      self.binary)"},{"line_number":253,"context_line":"            return"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_cc748a9e","line":251,"range":{"start_line":250,"start_character":73,"end_line":251,"end_character":30},"updated":"2020-01-14 12:42:22.000000000","message":"missing space between \u0027state\u0027 and \u0027update\u0027","commit_id":"be3d3f1ef54c4bbf31a31b3163f337cfa01780da"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9b1483df49df57e38c0b44e9d9a32af566559974","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""},{"line_number":248,"context_line":"        if not self.manager.is_service_ready():"},{"line_number":249,"context_line":"            # NOTE(haixin): If the service is Initialization or failed."},{"line_number":250,"context_line":"            LOG.error(\u0027Manager for service %s is not ready yet, skipping state\u0027"},{"line_number":251,"context_line":"                      \u0027update routine. Service will appear \"down\".\u0027,"},{"line_number":252,"context_line":"                      self.binary)"},{"line_number":253,"context_line":"            return"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_94076571","line":251,"range":{"start_line":250,"start_character":73,"end_line":251,"end_character":30},"in_reply_to":"3fa7e38b_cc748a9e","updated":"2020-01-15 03:38:21.000000000","message":"Done","commit_id":"be3d3f1ef54c4bbf31a31b3163f337cfa01780da"}],"manila/tests/test_service.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e24e8bbb02a47160884a5a20f82a1f793d77e62b","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        service.db.service_update.assert_called_once_with("},{"line_number":200,"context_line":"            mock.ANY, service_ref[\u0027id\u0027], mock.ANY)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @mock.patch.object(service.db, \u0027service_get\u0027,"},{"line_number":203,"context_line":"                       mock.Mock(return_value\u003dservice_ref))"},{"line_number":204,"context_line":"    def test_report_state_manager_not_working(self):"},{"line_number":205,"context_line":"        with mock.patch.object(service, \u0027db\u0027) as mock_db:"},{"line_number":206,"context_line":"            serv \u003d service.Service(host, binary, topic, CONF.fake_manager)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_a6ad5b33","line":203,"range":{"start_line":202,"start_character":0,"end_line":203,"end_character":59},"updated":"2019-12-23 01:42:32.000000000","message":"This is redundant, because in the function you are using the \"with..as\" to mock the db service.\nSo I think you can remove this.","commit_id":"a4e0a97c2ab0e5fae937a9e4bd009df65685df04"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"8898e3cb97b0a9a75bdfc2d76e9d0adb88a8ae05","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        service.db.service_update.assert_called_once_with("},{"line_number":200,"context_line":"            mock.ANY, service_ref[\u0027id\u0027], mock.ANY)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @mock.patch.object(service.db, \u0027service_get\u0027,"},{"line_number":203,"context_line":"                       mock.Mock(return_value\u003dservice_ref))"},{"line_number":204,"context_line":"    def test_report_state_manager_not_working(self):"},{"line_number":205,"context_line":"        with mock.patch.object(service, \u0027db\u0027) as mock_db:"},{"line_number":206,"context_line":"            serv \u003d service.Service(host, binary, topic, CONF.fake_manager)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_829368a4","line":203,"range":{"start_line":202,"start_character":0,"end_line":203,"end_character":59},"in_reply_to":"3fa7e38b_a6ad5b33","updated":"2019-12-23 09:57:50.000000000","message":"if remove this, i need to add\nmock_db.service_get.return_value \u003d service_ref\nDone.","commit_id":"a4e0a97c2ab0e5fae937a9e4bd009df65685df04"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0e3a612945c9b50101dba8cbe86e41ba0e219f53","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            serv.start()"},{"line_number":209,"context_line":"            serv.report_state()"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"            serv.manager.is_working.assert_called_once_with()"},{"line_number":212,"context_line":"            self.assertFalse(mock_db.service_update.called)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_5927b3b6","line":211,"range":{"start_line":211,"start_character":36,"end_line":211,"end_character":59},"updated":"2019-12-20 16:27:51.000000000","message":"if no params are needed, you can use assert_called_once() instead.","commit_id":"a4e0a97c2ab0e5fae937a9e4bd009df65685df04"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"8898e3cb97b0a9a75bdfc2d76e9d0adb88a8ae05","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            serv.start()"},{"line_number":209,"context_line":"            serv.report_state()"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"            serv.manager.is_working.assert_called_once_with()"},{"line_number":212,"context_line":"            self.assertFalse(mock_db.service_update.called)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_428d707a","line":211,"range":{"start_line":211,"start_character":36,"end_line":211,"end_character":59},"in_reply_to":"3fa7e38b_5927b3b6","updated":"2019-12-23 09:57:50.000000000","message":"Done","commit_id":"a4e0a97c2ab0e5fae937a9e4bd009df65685df04"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0e3a612945c9b50101dba8cbe86e41ba0e219f53","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            serv.report_state()"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"            serv.manager.is_working.assert_called_once_with()"},{"line_number":212,"context_line":"            self.assertFalse(mock_db.service_update.called)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"class TestWSGIService(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b93ca7c0","line":212,"range":{"start_line":212,"start_character":12,"end_line":212,"end_character":59},"updated":"2019-12-20 16:27:51.000000000","message":"you may use assert_not_called() instead","commit_id":"a4e0a97c2ab0e5fae937a9e4bd009df65685df04"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"8898e3cb97b0a9a75bdfc2d76e9d0adb88a8ae05","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            serv.report_state()"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"            serv.manager.is_working.assert_called_once_with()"},{"line_number":212,"context_line":"            self.assertFalse(mock_db.service_update.called)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"class TestWSGIService(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_6288ac6a","line":212,"range":{"start_line":212,"start_character":12,"end_line":212,"end_character":59},"in_reply_to":"3fa7e38b_b93ca7c0","updated":"2019-12-23 09:57:50.000000000","message":"Done","commit_id":"a4e0a97c2ab0e5fae937a9e4bd009df65685df04"}],"releasenotes/notes/bug-1853940-not-send-heartbeat-if-driver-not-initial-9c3cee39e8c725d1.yaml":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"cf7a2eab60353f76761fe953c219eaee29490f53","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds is_working method to base Manager class that can be used to indicate"},{"line_number":5,"context_line":"    that service has some problems and isn\u0027t running correctly. This is used to"},{"line_number":6,"context_line":"    block refreshing Service heartbeats if Manager will return False from"},{"line_number":7,"context_line":"    is_working."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_bc12a7b2","line":7,"range":{"start_line":4,"start_character":4,"end_line":7,"end_character":15},"updated":"2020-01-13 22:00:54.000000000","message":"Not sure if we should provide implementation details here, since users don\u0027t wanna know these things. We might just say that this fix avoids requests fails while drivers are still initializing and that the service will appear as down during the driver initialization.","commit_id":"378a602bfeab9a028c3403d50d7239f1d2e5dde2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"3e4a508e447e80f48adbb59936ba791186196722","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds is_working method to base Manager class that can be used to indicate"},{"line_number":5,"context_line":"    that service has some problems and isn\u0027t running correctly. This is used to"},{"line_number":6,"context_line":"    block refreshing Service heartbeats if Manager will return False from"},{"line_number":7,"context_line":"    is_working."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_4bcac719","line":7,"range":{"start_line":4,"start_character":4,"end_line":7,"end_character":15},"in_reply_to":"3fa7e38b_bc12a7b2","updated":"2020-01-14 08:26:58.000000000","message":"ok, i will change this.","commit_id":"378a602bfeab9a028c3403d50d7239f1d2e5dde2"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"c46dd359632ba0e7e760307c803d0b0558de5121","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This bug fix will avoids requests fails while drivers are still"},{"line_number":5,"context_line":"    initializing or failed to initialize and that the service will appear as"},{"line_number":6,"context_line":"    down during the driver initialization."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3fa7e38b_2c0c3e39","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":42},"updated":"2020-01-14 12:42:22.000000000","message":"Suggest: This bug fix avoids request failures while drivers are still initializing or when they fail to initialize by reporting the share service as down until the driver has been initialized.","commit_id":"be3d3f1ef54c4bbf31a31b3163f337cfa01780da"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9b1483df49df57e38c0b44e9d9a32af566559974","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This bug fix will avoids requests fails while drivers are still"},{"line_number":5,"context_line":"    initializing or failed to initialize and that the service will appear as"},{"line_number":6,"context_line":"    down during the driver initialization."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3fa7e38b_b40ce193","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":42},"in_reply_to":"3fa7e38b_2c0c3e39","updated":"2020-01-15 03:38:21.000000000","message":"Done","commit_id":"be3d3f1ef54c4bbf31a31b3163f337cfa01780da"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"073bef627cbd06c1fa4e8edc4a623978d9cf110e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This bug fix avoids request failures while drivers are still initializing"},{"line_number":5,"context_line":"    or when they fail to initialize by reporting the share service as down"},{"line_number":6,"context_line":"    until the driver has been initialized."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3fa7e38b_7f056c78","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":17},"updated":"2020-02-11 01:51:48.000000000","message":"Which bug fix :)\n\nRelease notes are compiled together and published as a manifest. Once this patch merges, this note gets added to a bunch of other notes. So, if you intend to provide a reference to the bug, please do so. \n\n[1] https://docs.openstack.org/releasenotes/manila/train.html - Sample release notes from the last release\n[2] https://docs.openstack.org/manila/latest/contributor/adding_release_notes.html","commit_id":"37a9e5388d504b0e4e4c58c9f22d0703391378a0"}]}
