)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8076b0152173b7a3731b53560d92564811843933","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When using mc driver(set servicegroup_driver\u003dmc), the service reports"},{"line_number":10,"context_line":"state by memcache. but we use \u0027nova service-list\u0027 get the status of"},{"line_number":11,"context_line":"services reginster in nova, the \u0027update_at\u0027 time is not the last updated"},{"line_number":12,"context_line":"time not as db driver. so we should get the time in mecache to update the"},{"line_number":13,"context_line":"time in respone."},{"line_number":14,"context_line":"Closes-Bug: #1647269"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a430d35_b412afb2","line":12,"updated":"2017-02-06 12:11:09.000000000","message":"memcache","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8076b0152173b7a3731b53560d92564811843933","unresolved":false,"context_lines":[{"line_number":10,"context_line":"state by memcache. but we use \u0027nova service-list\u0027 get the status of"},{"line_number":11,"context_line":"services reginster in nova, the \u0027update_at\u0027 time is not the last updated"},{"line_number":12,"context_line":"time not as db driver. so we should get the time in mecache to update the"},{"line_number":13,"context_line":"time in respone."},{"line_number":14,"context_line":"Closes-Bug: #1647269"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1d4763436ad6de2483c39f5fe97fa6e8d283d8a3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a430d35_543b4b38","line":13,"updated":"2017-02-06 12:11:09.000000000","message":"response\n\nalso a line break before the closes-bug would be good","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"272b334b7b13536d4a41f3f48b2f7c86862a5f2a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When using mc driver(set servicegroup_driver\u003dmc), the service reports"},{"line_number":10,"context_line":"state by memcache. but we use \u0027nova service-list\u0027 get the status of"},{"line_number":11,"context_line":"services reginster in nova, the \u0027update_at\u0027 time is not the last updated"},{"line_number":12,"context_line":"time not as db driver. so we should get the time in mecache to update the"},{"line_number":13,"context_line":"time in respone."},{"line_number":14,"context_line":"Closes-Bug: #1647269"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ff0f0b1f_b6262cb7","line":11,"range":{"start_line":11,"start_character":33,"end_line":11,"end_character":42},"updated":"2017-05-18 06:47:25.000000000","message":"updated_at","commit_id":"f2d52ef2cd6551ecbcb8195972da1c7c0d472fc7"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"272b334b7b13536d4a41f3f48b2f7c86862a5f2a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"state by memcache. but we use \u0027nova service-list\u0027 get the status of"},{"line_number":11,"context_line":"services reginster in nova, the \u0027update_at\u0027 time is not the last updated"},{"line_number":12,"context_line":"time not as db driver. so we should get the time in mecache to update the"},{"line_number":13,"context_line":"time in respone."},{"line_number":14,"context_line":"Closes-Bug: #1647269"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1d4763436ad6de2483c39f5fe97fa6e8d283d8a3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ff0f0b1f_763894d2","line":13,"range":{"start_line":13,"start_character":8,"end_line":13,"end_character":15},"updated":"2017-05-18 06:47:25.000000000","message":"response","commit_id":"f2d52ef2cd6551ecbcb8195972da1c7c0d472fc7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3895fcc1fde05d60e14c44c661bb7573c25fc2ed","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When using mc driver(set servicegroup_driver\u003dmc), the service reports"},{"line_number":10,"context_line":"state by memcache. but we use \u0027nova service-list\u0027 get the status of"},{"line_number":11,"context_line":"services reginster in nova, the \u0027update_at\u0027 time is not the last updated"},{"line_number":12,"context_line":"time not as db driver. so we should get the time in mecache to update the"},{"line_number":13,"context_line":"time in respone."},{"line_number":14,"context_line":"Closes-Bug: #1647269"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ff0f0b1f_85006c69","line":11,"updated":"2017-05-19 02:21:15.000000000","message":"s/reginster/registered/","commit_id":"ba7aa34ee17a31ec444d2f1620208dd3f64b432b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3895fcc1fde05d60e14c44c661bb7573c25fc2ed","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When using mc driver(set servicegroup_driver\u003dmc), the service reports"},{"line_number":10,"context_line":"state by memcache. but we use \u0027nova service-list\u0027 get the status of"},{"line_number":11,"context_line":"services reginster in nova, the \u0027update_at\u0027 time is not the last updated"},{"line_number":12,"context_line":"time not as db driver. so we should get the time in mecache to update the"},{"line_number":13,"context_line":"time in respone."},{"line_number":14,"context_line":"Closes-Bug: #1647269"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ff0f0b1f_051d7c65","line":12,"updated":"2017-05-19 02:21:15.000000000","message":"s/mecache/memcache/","commit_id":"ba7aa34ee17a31ec444d2f1620208dd3f64b432b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3895fcc1fde05d60e14c44c661bb7573c25fc2ed","unresolved":false,"context_lines":[{"line_number":10,"context_line":"state by memcache. but we use \u0027nova service-list\u0027 get the status of"},{"line_number":11,"context_line":"services reginster in nova, the \u0027update_at\u0027 time is not the last updated"},{"line_number":12,"context_line":"time not as db driver. so we should get the time in mecache to update the"},{"line_number":13,"context_line":"time in respone."},{"line_number":14,"context_line":"Closes-Bug: #1647269"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1d4763436ad6de2483c39f5fe97fa6e8d283d8a3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ff0f0b1f_8522aca3","line":13,"updated":"2017-05-19 02:21:15.000000000","message":"s/respone/response/","commit_id":"ba7aa34ee17a31ec444d2f1620208dd3f64b432b"}],"nova/servicegroup/drivers/base.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"05f7d420559b9bb985af8943308bb593bc641726","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        raise NotImplementedError()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def updated_time(self, service_ref):"},{"line_number":32,"context_line":"        \"\"\"Get the updated time if updated time is not stored in db\"\"\""},{"line_number":33,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_8c661f4f","line":32,"range":{"start_line":32,"start_character":55,"end_line":32,"end_character":61},"updated":"2017-01-06 08:39:25.000000000","message":"can we return server_ref[\u0027update_at\u0027] here and mc can overwrite this function? so we don\u0027t need the None check?","commit_id":"55e0ad96b504ca5ae9944d83586da8ce793e3f40"},{"author":{"_account_id":9610,"name":"Tao Li","email":"litao3721@126.com","username":"Litao"},"change_message_id":"497e940feffdb2923ea4e90b85f7596710c03039","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        raise NotImplementedError()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def updated_time(self, service_ref):"},{"line_number":32,"context_line":"        \"\"\"Get the updated time if updated time is not stored in db\"\"\""},{"line_number":33,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_ad9d6cbd","line":32,"range":{"start_line":32,"start_character":55,"end_line":32,"end_character":61},"in_reply_to":"ba5201f7_8c661f4f","updated":"2017-01-09 01:39:54.000000000","message":"thank you, i will commit a patch again","commit_id":"55e0ad96b504ca5ae9944d83586da8ce793e3f40"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"32b3ef4bf3b4fe1da239fa859cb71d2ca5af4e47","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        raise NotImplementedError()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def updated_time(self, service_ref):"},{"line_number":32,"context_line":"        \"\"\"Get the updated time if updated time is not stored in db\"\"\""},{"line_number":33,"context_line":"        return service_ref[\u0027updated_at\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff0f0b1f_705aed83","line":32,"updated":"2017-05-25 22:53:28.000000000","message":"This docstring doesn\u0027t make sense, considering this would be called by the db driver which has the updated time stored in the db.","commit_id":"5543fe0d13ed5f513cba31421adf5a1e54d8f977"},{"author":{"_account_id":9610,"name":"Tao Li","email":"litao3721@126.com","username":"Litao"},"change_message_id":"61b72cece23548104960f01938b99e78e9da7071","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        raise NotImplementedError()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def updated_time(self, service_ref):"},{"line_number":32,"context_line":"        \"\"\"Get the updated time if updated time is not stored in db\"\"\""},{"line_number":33,"context_line":"        return service_ref[\u0027updated_at\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff0f0b1f_08693a8a","line":32,"in_reply_to":"ff0f0b1f_705aed83","updated":"2017-05-26 09:01:47.000000000","message":"yes, this is not suitable","commit_id":"5543fe0d13ed5f513cba31421adf5a1e54d8f977"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"32b3ef4bf3b4fe1da239fa859cb71d2ca5af4e47","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def updated_time(self, service_ref):"},{"line_number":32,"context_line":"        \"\"\"Get the updated time if updated time is not stored in db\"\"\""},{"line_number":33,"context_line":"        return service_ref[\u0027updated_at\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff0f0b1f_b0776509","line":33,"updated":"2017-05-25 22:53:28.000000000","message":"Shouldn\u0027t this be in nova/servicegroup/drivers/db.py instead?\n\nAnd here should be \"raise NotImplementedError()\"","commit_id":"5543fe0d13ed5f513cba31421adf5a1e54d8f977"},{"author":{"_account_id":9610,"name":"Tao Li","email":"litao3721@126.com","username":"Litao"},"change_message_id":"61b72cece23548104960f01938b99e78e9da7071","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def updated_time(self, service_ref):"},{"line_number":32,"context_line":"        \"\"\"Get the updated time if updated time is not stored in db\"\"\""},{"line_number":33,"context_line":"        return service_ref[\u0027updated_at\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff0f0b1f_6849d630","line":33,"in_reply_to":"ff0f0b1f_b0776509","updated":"2017-05-26 09:01:47.000000000","message":"Thanks, melwitt, I will update it","commit_id":"5543fe0d13ed5f513cba31421adf5a1e54d8f977"}],"nova/servicegroup/drivers/mc.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"175b8004531ad885c0c4086017269c221192169d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def updated_time(self, service_ref):"},{"line_number":71,"context_line":"        \"\"\"Get the updated time from memcache\"\"\""},{"line_number":72,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"},{"line_number":73,"context_line":"        return self.mc.get(str(key))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _report_state(self, service):"},{"line_number":76,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_a578cdf3","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":36},"updated":"2017-02-06 06:12:57.000000000","message":"Are you expect the \u0027updated_at\u0027 is the timestamp of heartbeat? If yes, that sounds not right, currently the updated_at is only about the service db record update time. \n\nThe heartbeat timestamp didn\u0027t expose to the API for now. For the db driver, the heartbeat timestamp updated to the \u0027last_seen_up\u0027 column https://github.com/openstack/nova/blob/master/nova/servicegroup/drivers/db.py#L60","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"e93f7ff6d1b51b908c4fe0c3efb3eebc4be1ed50","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def updated_time(self, service_ref):"},{"line_number":71,"context_line":"        \"\"\"Get the updated time from memcache\"\"\""},{"line_number":72,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"},{"line_number":73,"context_line":"        return self.mc.get(str(key))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _report_state(self, service):"},{"line_number":76,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_3d70c90a","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":36},"in_reply_to":"1a430d35_16a287ae","updated":"2017-02-09 09:59:06.000000000","message":"guess so, as updated_at might be long time ago when service is not working, guess that\u0027s expected?","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":9610,"name":"Tao Li","email":"litao3721@126.com","username":"Litao"},"change_message_id":"7562c0fbfddda5025256eadd5d4aace5da2c7ca9","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def updated_time(self, service_ref):"},{"line_number":71,"context_line":"        \"\"\"Get the updated time from memcache\"\"\""},{"line_number":72,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"},{"line_number":73,"context_line":"        return self.mc.get(str(key))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _report_state(self, service):"},{"line_number":76,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_e08f23ca","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":36},"in_reply_to":"1a430d35_a578cdf3","updated":"2017-02-06 06:55:29.000000000","message":"The output of \u0027nova service-list\u0027 contains ‘Updated_at’column. The \u0027updated_time\u0027 display the latest update time. If it doesn\u0027t display the latest update time, the output will give us a doubt that is the service really up? In fact, the db driver will update the value.","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":9610,"name":"Tao Li","email":"litao3721@126.com","username":"Litao"},"change_message_id":"d316955fcf50bb050e37f1a51aba76af2671212d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def updated_time(self, service_ref):"},{"line_number":71,"context_line":"        \"\"\"Get the updated time from memcache\"\"\""},{"line_number":72,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"},{"line_number":73,"context_line":"        return self.mc.get(str(key))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _report_state(self, service):"},{"line_number":76,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_16a287ae","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":36},"in_reply_to":"1a430d35_bedd2e16","updated":"2017-02-07 01:48:58.000000000","message":"Another issue is that \u0027self.mc.get(str(key))\u0027 maybe returns None when a service is not working. This is the mechanism of memcache. In this case, should we return service[\u0027updated_at\u0027]?","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"70a380b4dafa5e4477ce0d9d6f3c1d56dbb53783","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def updated_time(self, service_ref):"},{"line_number":71,"context_line":"        \"\"\"Get the updated time from memcache\"\"\""},{"line_number":72,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"},{"line_number":73,"context_line":"        return self.mc.get(str(key))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _report_state(self, service):"},{"line_number":76,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_bedd2e16","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":36},"in_reply_to":"1a430d35_d5e8227f","updated":"2017-02-06 11:15:52.000000000","message":"Due to the meaning of this interface is returning the heartbeat timestamp. So we still need to return self.mc.get(str(key)) only at here.\n\nThen we return the lastest value between service[\u0027updated_at\u0027] and this value in the API layer.\n\nAnd we need to change the db driver return last_seen_up for this method also.\n\nThen it should sounds make sense.","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a843c4402908f2dfef3c9ac403ee3602149b54fe","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def updated_time(self, service_ref):"},{"line_number":71,"context_line":"        \"\"\"Get the updated time from memcache\"\"\""},{"line_number":72,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"},{"line_number":73,"context_line":"        return self.mc.get(str(key))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _report_state(self, service):"},{"line_number":76,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_fb60b237","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":36},"in_reply_to":"1a430d35_e08f23ca","updated":"2017-02-06 07:23:30.000000000","message":"Sorry, I missed one point, updated_at for db driver always update for heartbeat.\n\nSo for db driver, \u0027updated_at\u0027 mixes the update of db record and heartbeat.\n\nSo at here, it should be the lastest timestamp between \u0027self.mc.get(str(key))\u0027 and service_ref[\u0027updated_at\u0027]","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":9610,"name":"Tao Li","email":"litao3721@126.com","username":"Litao"},"change_message_id":"7927b44c127c71732e0e66b7477022fc4fb4b891","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def updated_time(self, service_ref):"},{"line_number":71,"context_line":"        \"\"\"Get the updated time from memcache\"\"\""},{"line_number":72,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"},{"line_number":73,"context_line":"        return self.mc.get(str(key))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _report_state(self, service):"},{"line_number":76,"context_line":"        \"\"\"Update the state of this service in the datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_d5e8227f","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":36},"in_reply_to":"1a430d35_fb60b237","updated":"2017-02-06 09:07:33.000000000","message":"Yes, it should be the latest of them, I will update the codes.","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0fc9650fbd8a951b1efb3d208fee5cf027f532b0","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            # Change mc time to offset-aware time"},{"line_number":79,"context_line":"            updated_time_in_mc \u003d \\"},{"line_number":80,"context_line":"                updated_time_in_mc.replace(tzinfo\u003diso8601.iso8601.Utc())"},{"line_number":81,"context_line":"            if updated_time_in_db \u003c\u003d updated_time_in_mc:"},{"line_number":82,"context_line":"                return updated_time_in_mc"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        return updated_time_in_db"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_bccc728a","line":81,"range":{"start_line":81,"start_character":15,"end_line":81,"end_character":33},"updated":"2018-07-17 16:52:28.000000000","message":"This can be None, see bug 1781880.","commit_id":"0df91a7f799060cd2e9b8a0adac1efacb974bcb3"}],"nova/tests/unit/servicegroup/test_api.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8076b0152173b7a3731b53560d92564811843933","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        driver.is_up.assert_not_called()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_get_updated_time(self):"},{"line_number":65,"context_line":"        \"\"\"\"\"\""},{"line_number":66,"context_line":"        member \u003d {\"host\": \"fake-host\","},{"line_number":67,"context_line":"                  \"topic\": \"compute\","},{"line_number":68,"context_line":"                  \"forced_down\": False}"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_f4d197ce","line":65,"updated":"2017-02-06 12:11:09.000000000","message":"?","commit_id":"57dc129f3c337a401265c949cff5f419fb283d85"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3895fcc1fde05d60e14c44c661bb7573c25fc2ed","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        driver.is_up.assert_not_called()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_get_updated_time(self):"},{"line_number":65,"context_line":"        \"\"\"\"\"\""},{"line_number":66,"context_line":"        member \u003d {\"host\": \"fake-host\","},{"line_number":67,"context_line":"                  \"topic\": \"compute\","},{"line_number":68,"context_line":"                  \"forced_down\": False}"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_c562e43e","line":65,"updated":"2017-05-19 02:21:15.000000000","message":"Please remove above line","commit_id":"ba7aa34ee17a31ec444d2f1620208dd3f64b432b"}],"nova/tests/unit/servicegroup/test_db_servicegroup.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3895fcc1fde05d60e14c44c661bb7573c25fc2ed","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def test_report_state_unexpected_error(self):"},{"line_number":108,"context_line":"        self._test_report_state_error(RuntimeError)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_updated_time(self):"},{"line_number":111,"context_line":"        retval \u003d \"2016-11-02T22:40:31.000000\""},{"line_number":112,"context_line":"        service_ref \u003d {"},{"line_number":113,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_4556d45e","line":110,"updated":"2017-05-19 02:21:15.000000000","message":"should be test_get_updated_time() to be consistent with previous test names.","commit_id":"ba7aa34ee17a31ec444d2f1620208dd3f64b432b"}],"nova/tests/unit/servicegroup/test_mc_servicegroup.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3895fcc1fde05d60e14c44c661bb7573c25fc2ed","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.mc_client.set.assert_called_once_with(\u0027compute:fake-host\u0027,"},{"line_number":67,"context_line":"                                                   mock.ANY)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_updated_time(self):"},{"line_number":70,"context_line":"        service_ref \u003d {"},{"line_number":71,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":72,"context_line":"            \u0027topic\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_e54a88aa","line":69,"updated":"2017-05-19 02:21:15.000000000","message":"should be test_get_updated_time()","commit_id":"ba7aa34ee17a31ec444d2f1620208dd3f64b432b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3895fcc1fde05d60e14c44c661bb7573c25fc2ed","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                .replace(tzinfo\u003diso8601.iso8601.Utc())"},{"line_number":75,"context_line":"        }"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        retval \u003d timeutils.utcnow()"},{"line_number":78,"context_line":"        self.mc_client.get.return_value \u003d None"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        self.assertEqual(service_ref[\u0027updated_at\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_65ed588a","line":77,"updated":"2017-05-19 02:21:15.000000000","message":"please move the above line to below line 83 to make the test a little more readable.","commit_id":"ba7aa34ee17a31ec444d2f1620208dd3f64b432b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"873835f3f65171d01f6c51f41bd2e43105241322","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.mc_client.get.return_value \u003d retval"},{"line_number":84,"context_line":"        self.assertEqual(retval.replace(tzinfo\u003diso8601.iso8601.Utc()),"},{"line_number":85,"context_line":"                         self.servicegroup_api.get_updated_time(service_ref))"},{"line_number":86,"context_line":"        self.mc_client.get.assert_called_once_with(\u0027compute:fake-host\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff0f0b1f_ebdff9d3","line":86,"updated":"2017-05-19 03:42:01.000000000","message":"you also need to test the case when the db updated time \u003e mc updated time?","commit_id":"f85392217496edaaf69b30cf820c47fdabb43c25"},{"author":{"_account_id":9610,"name":"Tao Li","email":"litao3721@126.com","username":"Litao"},"change_message_id":"fddf87b438faa577ba623c4a4ead96c9125ed97c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.mc_client.get.return_value \u003d retval"},{"line_number":84,"context_line":"        self.assertEqual(retval.replace(tzinfo\u003diso8601.iso8601.Utc()),"},{"line_number":85,"context_line":"                         self.servicegroup_api.get_updated_time(service_ref))"},{"line_number":86,"context_line":"        self.mc_client.get.assert_called_once_with(\u0027compute:fake-host\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff0f0b1f_164b7459","line":86,"in_reply_to":"ff0f0b1f_ebdff9d3","updated":"2017-05-19 03:56:03.000000000","message":"yes, I will append it.","commit_id":"f85392217496edaaf69b30cf820c47fdabb43c25"}]}
