)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f7cb221475d62baef2637b3fdda7421db5fec0d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"750bdfa6_79520951","updated":"2024-10-01 15:40:38.000000000","message":"recheck timeout","commit_id":"da99f8814c430812e97e63235d2ef129f804e9bc"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b276bc17bac393c7fbd9730ba1b6b7ade9e48ec3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2e91a8be_f831791c","updated":"2024-10-02 16:17:23.000000000","message":"Thank you !","commit_id":"8f62555f6490c0e6f69050c6d247f8aa3e67deec"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9206f24bb7c474b01c69934e711610f864d13b01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"94e33b59_5eac08b2","updated":"2024-11-15 16:27:26.000000000","message":"See inline for an improvement.  It\u0027s not such a big deal for this particular instance, it\u0027s more that time zone handling is difficult, so it\u0027s important to be clear about what\u0027s going on when handling datetimes.","commit_id":"6970c0cda7a057b3182128cff2a33bf3ee83b096"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cf4d1b0f6851fe07179b36cd2285d797f3f0628b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"640f2710_8eb1fc0f","updated":"2024-11-15 10:01:44.000000000","message":"makes sense to do\n\nhttps://docs.python.org/3/whatsnew/3.12.html#deprecated","commit_id":"6970c0cda7a057b3182128cff2a33bf3ee83b096"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"98a2bb35864f38a5a6e511e6d7ab09c3130f8daa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e0727a50_29a9905e","updated":"2025-01-25 16:49:54.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"285cc50043c836be22ddbd8bc3b49a5e5353703a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"3d4aed6516ce89aa2f25b0a50439adcd67e8e7a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"53d2d215_cf1a591d","updated":"2025-02-01 01:42:12.000000000","message":"recheck devstack-plugin-nfs-tempest-full","commit_id":"285cc50043c836be22ddbd8bc3b49a5e5353703a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"3a12c302bb3180f2cd7147cf27fd7d9856788b68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7b492a78_eb0f3585","updated":"2025-01-23 12:44:22.000000000","message":"recheck openstack-tox-py312","commit_id":"285cc50043c836be22ddbd8bc3b49a5e5353703a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"49d8116e8e13d4c3bcb0ae47d6cf3c5f9cb7cd19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"6b6aebaa_dac357b6","updated":"2025-05-21 15:51:29.000000000","message":"Sorry this has been sitting so long.  My concerns have been addressed.","commit_id":"5b6244173a361b09ba1e0be2008f346dd48e3240"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6cd37484a5e41dc9c339c470533e658d6be4f9d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"1464b730_d3ff402d","updated":"2025-05-21 15:51:00.000000000","message":"recheck - jobs have been fixed since the last run","commit_id":"5b6244173a361b09ba1e0be2008f346dd48e3240"}],"cinder/api/views/limits.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cf4d1b0f6851fe07179b36cd2285d797f3f0628b","unresolved":true,"context_lines":[{"line_number":82,"context_line":"    def _build_rate_limit(self, rate_limit):"},{"line_number":83,"context_line":"        next_avail \u003d datetime.datetime.fromtimestamp("},{"line_number":84,"context_line":"            rate_limit[\"resetTime\"],"},{"line_number":85,"context_line":"            tz\u003ddatetime.timezone.utc).replace(tzinfo\u003dNone)"},{"line_number":86,"context_line":"        return {"},{"line_number":87,"context_line":"            \"verb\": rate_limit[\"verb\"],"},{"line_number":88,"context_line":"            \"value\": rate_limit[\"value\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a7d403e_fbe24847","line":85,"range":{"start_line":85,"start_character":37,"end_line":85,"end_character":58},"updated":"2024-11-15 10:01:44.000000000","message":"note for reviewers, to keep the format same, we need to remove the tzinfo part\n\n    \u003e\u003e\u003e datetime.datetime.utcfromtimestamp(0)\n    datetime.datetime(1970, 1, 1, 0, 0)\n\n    \u003e\u003e\u003e datetime.datetime.fromtimestamp(0, tz\u003ddatetime.timezone.utc)\n    datetime.datetime(1970, 1, 1, 0, 0, tzinfo\u003ddatetime.timezone.utc)\n\n    \u003e\u003e\u003e datetime.datetime.fromtimestamp(0, tz\u003ddatetime.timezone.utc).replace(tzinfo\u003dNone)\n    datetime.datetime(1970, 1, 1, 0, 0)","commit_id":"6970c0cda7a057b3182128cff2a33bf3ee83b096"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9206f24bb7c474b01c69934e711610f864d13b01","unresolved":true,"context_lines":[{"line_number":82,"context_line":"    def _build_rate_limit(self, rate_limit):"},{"line_number":83,"context_line":"        next_avail \u003d datetime.datetime.fromtimestamp("},{"line_number":84,"context_line":"            rate_limit[\"resetTime\"],"},{"line_number":85,"context_line":"            tz\u003ddatetime.timezone.utc).replace(tzinfo\u003dNone)"},{"line_number":86,"context_line":"        return {"},{"line_number":87,"context_line":"            \"verb\": rate_limit[\"verb\"],"},{"line_number":88,"context_line":"            \"value\": rate_limit[\"value\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"a389d6b6_214cea94","line":85,"range":{"start_line":85,"start_character":37,"end_line":85,"end_character":58},"in_reply_to":"7a7d403e_fbe24847","updated":"2024-11-15 16:27:26.000000000","message":"Let me try to explain what bothers me about this.  There are 2 things:\n\n1. opportunity for incorrect refactoring: someone is going to try to simplify lines 83-85, because why specify tz when you\u0027re going to replace it with None?\n\n2. the point of replacing utcfromtimestamp with fromtimestamp with a tz parameter is to avoid the creation of \"naive\" datetime objects that don\u0027t know what their timezone is, so I don\u0027t think we should create a naive datetime object here.\n\nThe reason we have to wipe out the tzinfo is because of the way the isoformat() method we use at line 91 operates; if the datetime object is tz-aware, it provides the offset that we don\u0027t want.  So I think a better way to do this is to remove the \u0027.replace(tzinfo\u003dNone)\u0027 at line 85, and instead do it when we are creating the string representing the time that we put into the dict at line 91:\n\n```\n   \"next-available\": next_avail.replace(tzinfo\u003dNone).isoformat()\n```","commit_id":"6970c0cda7a057b3182128cff2a33bf3ee83b096"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"9bdf3eba9becd6bfff20c3cf4c1cef86de1c39b5","unresolved":true,"context_lines":[{"line_number":82,"context_line":"    def _build_rate_limit(self, rate_limit):"},{"line_number":83,"context_line":"        next_avail \u003d datetime.datetime.fromtimestamp("},{"line_number":84,"context_line":"            rate_limit[\"resetTime\"],"},{"line_number":85,"context_line":"            tz\u003ddatetime.timezone.utc).replace(tzinfo\u003dNone)"},{"line_number":86,"context_line":"        return {"},{"line_number":87,"context_line":"            \"verb\": rate_limit[\"verb\"],"},{"line_number":88,"context_line":"            \"value\": rate_limit[\"value\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"39368c8e_af3c123a","line":85,"range":{"start_line":85,"start_character":37,"end_line":85,"end_character":58},"in_reply_to":"a389d6b6_214cea94","updated":"2025-01-18 13:25:53.000000000","message":"Done","commit_id":"6970c0cda7a057b3182128cff2a33bf3ee83b096"}],"cinder/tests/unit/api/v2/test_limits.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0200bcac3b67340a5463b0eac77c2583d3661a2d","unresolved":true,"context_lines":[{"line_number":125,"context_line":"                        \"limit\": ["},{"line_number":126,"context_line":"                            {"},{"line_number":127,"context_line":"                                \"verb\": \"GET\","},{"line_number":128,"context_line":"                                \"next-available\": \"1970-01-01T00:00:00+00:00\","},{"line_number":129,"context_line":"                                \"unit\": \"MINUTE\","},{"line_number":130,"context_line":"                                \"value\": 10,"},{"line_number":131,"context_line":"                                \"remaining\": 10,"}],"source_content_type":"text/x-python","patch_set":1,"id":"24184297_7aa950e0","line":128,"range":{"start_line":128,"start_character":70,"end_line":128,"end_character":76},"updated":"2024-10-02 12:56:05.000000000","message":"This indicates that the format in API response is changed. Is that correct ?\n\nIMO we should not change the format (without microversion) here to avoid potential client impact.","commit_id":"da99f8814c430812e97e63235d2ef129f804e9bc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"81d7c56d3f61c6c3015e650f8aad87894a81b1d2","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                        \"limit\": ["},{"line_number":126,"context_line":"                            {"},{"line_number":127,"context_line":"                                \"verb\": \"GET\","},{"line_number":128,"context_line":"                                \"next-available\": \"1970-01-01T00:00:00+00:00\","},{"line_number":129,"context_line":"                                \"unit\": \"MINUTE\","},{"line_number":130,"context_line":"                                \"value\": 10,"},{"line_number":131,"context_line":"                                \"remaining\": 10,"}],"source_content_type":"text/x-python","patch_set":1,"id":"807d5115_4b8442c7","line":128,"range":{"start_line":128,"start_character":70,"end_line":128,"end_character":76},"in_reply_to":"24184297_7aa950e0","updated":"2024-10-02 14:08:11.000000000","message":"Thanks, Kajinami-san.\nDone.","commit_id":"da99f8814c430812e97e63235d2ef129f804e9bc"}]}
