)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28088,"name":"Benedikt Löffler","email":"benedikt.loeffler@bmw.de","username":"bloeffler"},"change_message_id":"b8506b5ed4d0707d278d009f49d29f78ee9c64c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"32679b0b_410413f7","updated":"2024-06-21 07:25:24.000000000","message":"recheck","commit_id":"3d26b17e1aa96c1bb614f2ec6d93f939c693fac9"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"8f4be9a4f60a2cf7538b83a636fdc9b29c8ff32b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ccb91b86_7bd56fb3","updated":"2024-07-19 10:08:45.000000000","message":"needs tests","commit_id":"7070a3d813e266031491287de90dfc0335f32d34"}],"nodepool/driver/aws/adapter.py":[{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"fe1dd909e55818b3027b9077ec2ef8c6d03c99bd","unresolved":true,"context_lines":[{"line_number":1333,"context_line":"            # We shouldn\u0027t clean it up when the task is not completed"},{"line_number":1334,"context_line":"            # otherwise the import-task can be stuck."},{"line_number":1335,"context_line":"            if \u0027import-snap\u0027 in snap.get(\u0027Description\u0027, \u0027\u0027):"},{"line_number":1336,"context_line":"                match \u003d re.match(r\u0027.*?(import-snap-\\w*)\u0027,"},{"line_number":1337,"context_line":"                                 snap.get(\u0027Description\u0027, \u0027\u0027))"},{"line_number":1338,"context_line":"                task \u003d None"},{"line_number":1339,"context_line":"                if match:"}],"source_content_type":"text/x-python","patch_set":3,"id":"0485bbf1_5d1828df","line":1336,"updated":"2024-07-01 13:53:58.000000000","message":"IIRC the import tasks also have tags with the nodepool build/upload id. Could we use those instead for getting the task instead of using regex parsing here?\n\nWe anyways need an API to list import tasks for the cleanup, so we could also use that to get a task by build/upload id. That would also allow us to use a lazy ttl cache instead of hitting the API every time to get a task.","commit_id":"bdeaf7bcc1c7360ae271a797a3eb5841c943fe22"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"1198d65addc9dc5a8d473f31577e4efdb9937f4f","unresolved":false,"context_lines":[{"line_number":1333,"context_line":"            # We shouldn\u0027t clean it up when the task is not completed"},{"line_number":1334,"context_line":"            # otherwise the import-task can be stuck."},{"line_number":1335,"context_line":"            if \u0027import-snap\u0027 in snap.get(\u0027Description\u0027, \u0027\u0027):"},{"line_number":1336,"context_line":"                match \u003d re.match(r\u0027.*?(import-snap-\\w*)\u0027,"},{"line_number":1337,"context_line":"                                 snap.get(\u0027Description\u0027, \u0027\u0027))"},{"line_number":1338,"context_line":"                task \u003d None"},{"line_number":1339,"context_line":"                if match:"}],"source_content_type":"text/x-python","patch_set":3,"id":"0e0542db_8fe98e41","line":1336,"in_reply_to":"0485bbf1_5d1828df","updated":"2024-07-02 12:29:45.000000000","message":"Done","commit_id":"bdeaf7bcc1c7360ae271a797a3eb5841c943fe22"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"fe1dd909e55818b3027b9077ec2ef8c6d03c99bd","unresolved":true,"context_lines":[{"line_number":1344,"context_line":"                        self.log.debug("},{"line_number":1345,"context_line":"                            f\"Deleting Snapshot {external_id} from completed\""},{"line_number":1346,"context_line":"                            f\" import task {task_id}\")"},{"line_number":1347,"context_line":"                        self.ec2_client.delete_snapshot("},{"line_number":1348,"context_line":"                            SnapshotId\u003dsnap[\u0027SnapshotId\u0027])"},{"line_number":1349,"context_line":"            return None"},{"line_number":1350,"context_line":"        with self.rate_limiter:"}],"source_content_type":"text/x-python","patch_set":3,"id":"cda35e0c_2ff98b67","line":1347,"updated":"2024-07-01 13:53:58.000000000","message":"Why do we have a separate delete call here instead of falling through to line 1352?","commit_id":"bdeaf7bcc1c7360ae271a797a3eb5841c943fe22"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"c84687d7d48a5f60655ac16c11e59ff865008390","unresolved":false,"context_lines":[{"line_number":1344,"context_line":"                        self.log.debug("},{"line_number":1345,"context_line":"                            f\"Deleting Snapshot {external_id} from completed\""},{"line_number":1346,"context_line":"                            f\" import task {task_id}\")"},{"line_number":1347,"context_line":"                        self.ec2_client.delete_snapshot("},{"line_number":1348,"context_line":"                            SnapshotId\u003dsnap[\u0027SnapshotId\u0027])"},{"line_number":1349,"context_line":"            return None"},{"line_number":1350,"context_line":"        with self.rate_limiter:"}],"source_content_type":"text/x-python","patch_set":3,"id":"83ed3d7c_5e71e5de","line":1347,"in_reply_to":"cda35e0c_2ff98b67","updated":"2024-07-02 12:29:01.000000000","message":"Done","commit_id":"bdeaf7bcc1c7360ae271a797a3eb5841c943fe22"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"b8dbf1bc59d7e47dd1347c004bc626322265bed2","unresolved":true,"context_lines":[{"line_number":1336,"context_line":"            upload_id \u003d snap[\u0027Tags\u0027][\u0027nodepool_upload_id\u0027]"},{"line_number":1337,"context_line":""},{"line_number":1338,"context_line":"            for task in self._listImportSnapshotTasks():"},{"line_number":1339,"context_line":"                task_build_id \u003d task[\u0027Tags\u0027][\u0027nodepool_build_id\u0027]"},{"line_number":1340,"context_line":"                task_upload_id \u003d task[\u0027Tags\u0027][\u0027nodepool_upload_id\u0027]"},{"line_number":1341,"context_line":""},{"line_number":1342,"context_line":"                if task_build_id \u003d\u003d build_id and task_upload_id \u003d\u003d upload_id:"},{"line_number":1343,"context_line":"                    if task[\u0027Status\u0027].lower() in (\u0027completed\u0027, \u0027deleted\u0027):"},{"line_number":1344,"context_line":"                        break"},{"line_number":1345,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"43f8710b_fba173f1","line":1342,"range":{"start_line":1339,"start_character":0,"end_line":1342,"end_character":77},"updated":"2024-07-02 11:50:52.000000000","message":"Reading this now, I think we want to check the `external_id` as I\u0027m not sure the combination of build and upload ID is guaranteed to be unique.\n\n                snapshot_id \u003d task[\u0027SnapshotTaskDetail\u0027][\u0027SnapshotId\u0027]\n                if snapshot_id !\u003d external_id:\n                    continue","commit_id":"e9fdfa3bf98494e8d62c35d37242de0a4144c212"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"6b3231d4be1bb05f068d7f4e31dc8ddc66c5e569","unresolved":false,"context_lines":[{"line_number":1336,"context_line":"            upload_id \u003d snap[\u0027Tags\u0027][\u0027nodepool_upload_id\u0027]"},{"line_number":1337,"context_line":""},{"line_number":1338,"context_line":"            for task in self._listImportSnapshotTasks():"},{"line_number":1339,"context_line":"                task_build_id \u003d task[\u0027Tags\u0027][\u0027nodepool_build_id\u0027]"},{"line_number":1340,"context_line":"                task_upload_id \u003d task[\u0027Tags\u0027][\u0027nodepool_upload_id\u0027]"},{"line_number":1341,"context_line":""},{"line_number":1342,"context_line":"                if task_build_id \u003d\u003d build_id and task_upload_id \u003d\u003d upload_id:"},{"line_number":1343,"context_line":"                    if task[\u0027Status\u0027].lower() in (\u0027completed\u0027, \u0027deleted\u0027):"},{"line_number":1344,"context_line":"                        break"},{"line_number":1345,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ef489e40_a9ef25a7","line":1342,"range":{"start_line":1339,"start_character":0,"end_line":1342,"end_character":77},"in_reply_to":"43f8710b_fba173f1","updated":"2024-07-02 12:27:36.000000000","message":"Done","commit_id":"e9fdfa3bf98494e8d62c35d37242de0a4144c212"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"c84687d7d48a5f60655ac16c11e59ff865008390","unresolved":true,"context_lines":[{"line_number":1339,"context_line":"                        break"},{"line_number":1340,"context_line":"                    else:"},{"line_number":1341,"context_line":"                        self.log.debug("},{"line_number":1342,"context_line":"                            f\"Snapshot {external_id} not deleted because \""},{"line_number":1343,"context_line":"                            f\"import-task {task[\u0027ImportTaskId\u0027]} is not \""},{"line_number":1344,"context_line":"                            \"completed\")"},{"line_number":1345,"context_line":"            else:"},{"line_number":1346,"context_line":"                return None"},{"line_number":1347,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"13650cfd_34683577","line":1344,"range":{"start_line":1342,"start_character":28,"end_line":1344,"end_character":40},"updated":"2024-07-02 12:29:01.000000000","message":"nit: f-string formatting shouldn\u0027t be used for logging","commit_id":"1717b3a748aa70def67b258fa82d157ec1eb3da3"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"8f4be9a4f60a2cf7538b83a636fdc9b29c8ff32b","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"                        break"},{"line_number":1340,"context_line":"                    else:"},{"line_number":1341,"context_line":"                        self.log.debug("},{"line_number":1342,"context_line":"                            f\"Snapshot {external_id} not deleted because \""},{"line_number":1343,"context_line":"                            f\"import-task {task[\u0027ImportTaskId\u0027]} is not \""},{"line_number":1344,"context_line":"                            \"completed\")"},{"line_number":1345,"context_line":"            else:"},{"line_number":1346,"context_line":"                return None"},{"line_number":1347,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"60445ec3_c87ccf32","line":1344,"range":{"start_line":1342,"start_character":28,"end_line":1344,"end_character":40},"in_reply_to":"13650cfd_34683577","updated":"2024-07-19 10:08:45.000000000","message":"Done","commit_id":"1717b3a748aa70def67b258fa82d157ec1eb3da3"}]}
