)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"0b949dcc2b7dd85cdafeb0bbbcd10afa652166c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cdae3299_902f070e","updated":"2025-06-02 13:39:54.000000000","message":"recheck","commit_id":"ac616f30ec81a32f6f3e3bb335d2f477dff47d73"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"0f388aad723a1e2d4754f9e8c096a20d6985120b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8ac14807_c75fdb73","updated":"2025-06-03 12:32:34.000000000","message":"the implementation looks correct to me, I left a couple of suggestions for small improvements in the tests","commit_id":"ac616f30ec81a32f6f3e3bb335d2f477dff47d73"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"69c1d25bded703276e8e3b3a7fa13669019538f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8b43b00b_424a8a27","updated":"2025-06-04 12:51:35.000000000","message":"recheck","commit_id":"cbea1fbe280f0cc54ad729edaa9acb3981ba60f5"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"bff4e9acc6f4e3d91fd610540be1370a6906d1bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"38f8035e_bf323672","updated":"2025-06-12 10:31:03.000000000","message":"thanks for the changes, lgtm","commit_id":"cbea1fbe280f0cc54ad729edaa9acb3981ba60f5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"09ed9d44d95d333913d4b59052b1daf3c5679c42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"52cac3ba_7352d7dc","updated":"2025-08-22 14:21:04.000000000","message":"i think i have reached my limit of allowing continued use of setattr, hasattr and getattr in the code base so no im not ok with continueing to propogate this anti pattern.","commit_id":"03b9830280d71580a373b298d1186c35e8c845b3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"1cb631dcf9cf5801eb3e7e6f4a2e825620c86eeb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f4b4dfa3_b8b6b1ce","updated":"2025-06-25 14:00:34.000000000","message":"readding vote after rebase","commit_id":"03b9830280d71580a373b298d1186c35e8c845b3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"763c50c2349d82fb41ae217a170ae58d691089aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a735f3bc_913447f6","in_reply_to":"52cac3ba_7352d7dc","updated":"2025-08-25 08:23:47.000000000","message":"I removed all usage of `setattr` and `getattr` in this patch","commit_id":"03b9830280d71580a373b298d1186c35e8c845b3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"1244b0517e7801569b116580c0780dc9d4823a36","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0b4acd69_f67d0f71","updated":"2025-08-25 10:00:30.000000000","message":"recheck","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e1282fc710552504f56f483cebab0c34bc94ac2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f1aa2e16_029aff0e","updated":"2025-08-25 11:51:10.000000000","message":"so much nicer thanks","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"bdeccc8a82e1c0616aac1f9950b042258ca75673","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b39f4c59_65b703a4","updated":"2025-09-01 17:29:02.000000000","message":"recheck","commit_id":"90009aac84934232f81be1ba46607c1c4eb7f6eb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"267391b27d25b75a4f36b616ab64b97f87285dda","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"48ac6fc4_2f995f52","updated":"2025-09-01 19:08:09.000000000","message":"the code looks good, do we have a test for retype running in CI?","commit_id":"90009aac84934232f81be1ba46607c1c4eb7f6eb"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"2b6a89c163b50c578782e367d0cb3e29cb945054","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8feec15a_ba30a35f","in_reply_to":"48ac6fc4_2f995f52","updated":"2025-09-02 07:45:57.000000000","message":"I have a patch with tempest tests https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/954625 I just rechecked it to run with tha last patchset","commit_id":"90009aac84934232f81be1ba46607c1c4eb7f6eb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f2c43b7bacf844d7c0d6d08a8346850489690a33","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"259c033e_52339f6a","in_reply_to":"8feec15a_ba30a35f","updated":"2025-09-02 11:16:19.000000000","message":"thanks Joan!","commit_id":"90009aac84934232f81be1ba46607c1c4eb7f6eb"}],"watcher/common/cinder_helper.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d02a505aff9fc27b577a343577a28ed482a48b","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"858a76f9_2768d279","line":224,"range":{"start_line":224,"start_character":0,"end_line":224,"end_character":48},"updated":"2025-08-29 19:11:46.000000000","message":"just wondering if this status is cleared at some point, since not all retype operations have a migration, do we know if this status is from this retype, or from a previous one?","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b5c3d8b2495737810574a8765b3224d8c5c8094","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"b74ef12e_579543a2","line":224,"range":{"start_line":224,"start_character":0,"end_line":224,"end_character":48},"in_reply_to":"1bd3395c_7db31e85","updated":"2025-09-02 12:10:32.000000000","message":"Done","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1cce92d6513795761ea91eb57b10c87012daea65","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ca8555d3_142a2384","line":224,"range":{"start_line":224,"start_character":0,"end_line":224,"end_character":48},"in_reply_to":"4373da01_abaa872e","updated":"2025-09-01 14:25:33.000000000","message":"actully reading this again we shoudl not be doing this.\n\nthis is not in scope of watcher to do and its not a secuirty messure.\n\nthis is i htink left over form the old swap implementation\nwhere it may have been valid to check this but watcher should not be asserting the internal implemation details of cidner like this.","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"6f79c73cbba8ef05d44af38bf69fa084d9741a3f","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1bd3395c_7db31e85","line":224,"range":{"start_line":224,"start_character":0,"end_line":224,"end_character":48},"in_reply_to":"46062ca4_a35db9c3","updated":"2025-09-01 15:01:10.000000000","message":"ack, I\u0027m removing this check, and relying on cinder completely to report the status of the operation","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"ab75d4de45cea2b6a65f75a8dc22ed224f1884ca","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"4373da01_abaa872e","line":224,"range":{"start_line":224,"start_character":0,"end_line":224,"end_character":48},"in_reply_to":"75c8bc5f_8f206969","updated":"2025-09-01 14:19:22.000000000","message":"yeah, my point is if the lastest status is actually from this retype operation and not from a previous migration. But maybe doesn\u0027t matter based on the operation that you are doing for deleted volumes.","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"44a15eb4c27a3c9bf45a12c4b006e1a0939db1c7","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"75c8bc5f_8f206969","line":224,"range":{"start_line":224,"start_character":0,"end_line":224,"end_character":48},"in_reply_to":"858a76f9_2768d279","updated":"2025-09-01 13:45:06.000000000","message":"AFAICT this field is only changed from cinder when it\u0027s migrating a volume https://docs.openstack.org/api-ref/block-storage/v3/index.html#migrate-a-volume. When the migration is finished it will be set to either `success` or `error`. It is not reset to a null value. I don\u0027t see any value when doing `openstack volume show \u003cvol-id\u003e` that could allow us to determine when was the migration finished, just its status","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ad52f3c1744b56c8936d4b555014c8c9e8163584","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"46062ca4_a35db9c3","line":224,"range":{"start_line":224,"start_character":0,"end_line":224,"end_character":48},"in_reply_to":"ca8555d3_142a2384","updated":"2025-09-01 14:27:03.000000000","message":"looking at the migration_status may be reasonable.\n\nlooking at the volume and if its deleteing or deleted is questionable.","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"193f8f44ec4610f1bd24ddd1eaa2646606b32812","unresolved":true,"context_lines":[{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"},{"line_number":228,"context_line":"                delete_id \u003d deleting_volume.id"},{"line_number":229,"context_line":"                if not self.check_volume_deleted(delete_id):"},{"line_number":230,"context_line":"                    LOG.error((\"Migraged volume %(volume)s is not deleted.\"),"},{"line_number":231,"context_line":"                              {\u0027volume\u0027: delete_id})"},{"line_number":232,"context_line":"                    return False"},{"line_number":233,"context_line":"        return True"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def migrate(self, volume, dest_node):"}],"source_content_type":"text/x-python","patch_set":4,"id":"85cacf24_7229ec4c","line":232,"range":{"start_line":225,"start_character":10,"end_line":232,"end_character":32},"updated":"2025-09-01 14:30:46.000000000","message":"when you retype the volume uuid will not chage.\n\ncidner create a temperoy voluem with a diffent id for the destiantion\nthen it atopimic renames it to the old id and removes the old volume.\n\nso if its compelted succsessfuly the volume shoudl still have the old uuid.\n\nwatcher shoudl not be encoding that internall implemation detail into our logic.","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b5c3d8b2495737810574a8765b3224d8c5c8094","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"},{"line_number":228,"context_line":"                delete_id \u003d deleting_volume.id"},{"line_number":229,"context_line":"                if not self.check_volume_deleted(delete_id):"},{"line_number":230,"context_line":"                    LOG.error((\"Migraged volume %(volume)s is not deleted.\"),"},{"line_number":231,"context_line":"                              {\u0027volume\u0027: delete_id})"},{"line_number":232,"context_line":"                    return False"},{"line_number":233,"context_line":"        return True"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def migrate(self, volume, dest_node):"}],"source_content_type":"text/x-python","patch_set":4,"id":"52f4fb87_2ba4003a","line":232,"range":{"start_line":225,"start_character":10,"end_line":232,"end_character":32},"in_reply_to":"3616c2cc_aa4294d8","updated":"2025-09-02 12:10:32.000000000","message":"Acknowledged","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"6f79c73cbba8ef05d44af38bf69fa084d9741a3f","unresolved":true,"context_lines":[{"line_number":222,"context_line":"        # This is a security measure. In case the retyped had a migration we"},{"line_number":223,"context_line":"        # check that the original volume is removed."},{"line_number":224,"context_line":"        if volume.migration_status \u003d\u003d \u0027success\u0027:"},{"line_number":225,"context_line":"            # check original volume deleted"},{"line_number":226,"context_line":"            deleting_volume \u003d self.get_deleting_volume(volume)"},{"line_number":227,"context_line":"            if deleting_volume:"},{"line_number":228,"context_line":"                delete_id \u003d deleting_volume.id"},{"line_number":229,"context_line":"                if not self.check_volume_deleted(delete_id):"},{"line_number":230,"context_line":"                    LOG.error((\"Migraged volume %(volume)s is not deleted.\"),"},{"line_number":231,"context_line":"                              {\u0027volume\u0027: delete_id})"},{"line_number":232,"context_line":"                    return False"},{"line_number":233,"context_line":"        return True"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def migrate(self, volume, dest_node):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3616c2cc_aa4294d8","line":232,"range":{"start_line":225,"start_character":10,"end_line":232,"end_character":32},"in_reply_to":"85cacf24_7229ec4c","updated":"2025-09-01 15:01:10.000000000","message":"I tested this in my devstack env and is correct, for both retype and migration operations the volume uuids are kept. Also looking at the `get_deleting_volume` method, I suspect that is wrong. I assumes that the `os-vol-mig-status-attr:name_id` points to a volume id, but that does not seem to be the case in my env","commit_id":"93cb6506c81d172e2c023fd18cd154c65b3600a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b5c3d8b2495737810574a8765b3224d8c5c8094","unresolved":true,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def check_retyped(self, volume, dst_type, retry_interval\u003d10):"},{"line_number":188,"context_line":"        volume \u003d self.get_volume(volume)"},{"line_number":189,"context_line":"        valid_status \u003d (\u0027available\u0027, \u0027in-use\u0027)"},{"line_number":190,"context_line":"        # A volume retype is correct when the type is the dst_type"},{"line_number":191,"context_line":"        # and the status is available or in-use. Otherwise, it is"},{"line_number":192,"context_line":"        # in retyping status or the action failed"}],"source_content_type":"text/x-python","patch_set":5,"id":"c9a556c2_f20fcc7d","line":189,"updated":"2025-09-02 12:10:32.000000000","message":"nit we may need ot adjust this in the future to supprot shelved instances where the voluem type would be reserved.\n\nim not sure if that is supproted by cinder today which is partly why i think its oke to not include this in this patch.\n\nwe shoudl build out testing for this in the future if we are going to support volume migrations/retrye of volumes attached to a shelved instance.","commit_id":"90009aac84934232f81be1ba46607c1c4eb7f6eb"}],"watcher/tests/common/test_cinder_helper.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"0f388aad723a1e2d4754f9e8c096a20d6985120b","unresolved":true,"context_lines":[{"line_number":24,"context_line":"from oslo_log.log import KeywordArgumentAdapter"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from watcher.common import cinder_helper"},{"line_number":27,"context_line":"from watcher.common.cinder_helper import CinderHelper"},{"line_number":28,"context_line":"from watcher.common import clients"},{"line_number":29,"context_line":"from watcher.common import exception"},{"line_number":30,"context_line":"from watcher.common import utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"60e3763e_8995b477","line":27,"updated":"2025-06-03 12:32:34.000000000","message":"is this new import needed to mock the `CinderHelper` class? If so we could remove the one from the line before, as I only see `cinder_helper` being use to create `CinderHelper` objects","commit_id":"ac616f30ec81a32f6f3e3bb335d2f477dff47d73"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"0ee195592debdddac2a686e3edaca505c3811764","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from oslo_log.log import KeywordArgumentAdapter"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from watcher.common import cinder_helper"},{"line_number":27,"context_line":"from watcher.common.cinder_helper import CinderHelper"},{"line_number":28,"context_line":"from watcher.common import clients"},{"line_number":29,"context_line":"from watcher.common import exception"},{"line_number":30,"context_line":"from watcher.common import utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"0d128a8f_75e5b78b","line":27,"in_reply_to":"60e3763e_8995b477","updated":"2025-06-04 09:26:30.000000000","message":"I\u0027ve changed the mocks for CinderHelper to use cinder_helper.CinderHelper.","commit_id":"ac616f30ec81a32f6f3e3bb335d2f477dff47d73"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"0f388aad723a1e2d4754f9e8c096a20d6985120b","unresolved":true,"context_lines":[{"line_number":238,"context_line":"        self.assertFalse(result)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        # type is correct but status is error"},{"line_number":241,"context_line":"        volume \u003d self.fake_volume()"},{"line_number":242,"context_line":"        setattr(volume, \u0027status\u0027, \u0027error\u0027)"},{"line_number":243,"context_line":"        cinder_util.cinder.volumes.get.return_value \u003d volume"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b1189248_f4135298","line":241,"updated":"2025-06-03 12:32:34.000000000","message":"we can pass `status\u003d\u0027error\u0027` to the `fake_volume` method and it should set it already","commit_id":"ac616f30ec81a32f6f3e3bb335d2f477dff47d73"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"0ee195592debdddac2a686e3edaca505c3811764","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        self.assertFalse(result)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        # type is correct but status is error"},{"line_number":241,"context_line":"        volume \u003d self.fake_volume()"},{"line_number":242,"context_line":"        setattr(volume, \u0027status\u0027, \u0027error\u0027)"},{"line_number":243,"context_line":"        cinder_util.cinder.volumes.get.return_value \u003d volume"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"44f9d558_b74d24a0","line":241,"in_reply_to":"b1189248_f4135298","updated":"2025-06-04 09:26:30.000000000","message":"Nice! Moving to it in all the new tests.","commit_id":"ac616f30ec81a32f6f3e3bb335d2f477dff47d73"}]}
