)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"699df22b8109021578680f76391c3c80c48929f8","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Fix test_snapshot_running"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since the commit to remove AMI snapshot format special case"},{"line_number":10,"context_line":"has been merged, that test doesn\u0027t anymore raise a NotImplementedError."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"We need to stub these functions:"},{"line_number":13,"context_line":"- nova.virt.libvirt.utils.create_image"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"a750b76e_f23ab84c","line":10,"updated":"2024-07-31 14:07:22.000000000","message":"I think this is confusing the old behavior and the desired behavior. The fact that it was raising NotImplementedError was a *bug* because we weren\u0027t testing libvirt\u0027s implementation of snapshot, which *should* have been tested. Since we were tripping over something raising the same exception we were checking for to exclude drivers that have no snapshot implementation, we were silently skipping that. The wording here sounds (to my ear at least) to imply that the mentioned commit was at fault.\n\nCan you just change this a bit to explain this more clearly so in a few years we\u0027ll know what\u0027s going on when we have lost the context here? Perhaps:\n\n\"Since the commit the remove AMI snapshot format special casing has merged, we\u0027re now running the libvirt snapshot tests as expected. However, those are missing mocks that are needed when running in an environment without qemu-img available. Because these tests have been silently and incorrectly skipped for so long, they didn\u0027t receive the same maintenance as other tests as the failures went unnoticed.\"","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"d9d7ce379eaba335fa199dd9465fa357b43dd17a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix test_snapshot_running"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since the commit to remove AMI snapshot format special case"},{"line_number":10,"context_line":"has been merged, that test doesn\u0027t anymore raise a NotImplementedError."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"We need to stub these functions:"},{"line_number":13,"context_line":"- nova.virt.libvirt.utils.create_image"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"63d0db70_599aa715","line":10,"in_reply_to":"a750b76e_f23ab84c","updated":"2024-07-31 14:31:02.000000000","message":"Done","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"42e7f8a6f88ca7e7d63422da6f4a709378b8414e","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Julien Le Jeune \u003cjulien.le-jeune@ovhcloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-07-31 16:28:20 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix test_snapshot_running"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since the commit the remove AMI snapshot format special casing has merged, we\u0027re now running the libvirt snapshot tests as expected."},{"line_number":10,"context_line":"However, those are missing mocks that are needed when running in an environment without qemu-img available."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"b318f682_3502b3f3","line":7,"updated":"2024-09-03 14:55:42.000000000","message":"Could you also give this a better title when you respin? These are all we see when looking for a commit in gerrit and this is pretty vague.\n\nSomething like \"Skip snapshot test when missing qemu-img\" perhaps?","commit_id":"2b0d7823054a1492c3f151be79a594b1fabe58af"},{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"414a6558c90bc80d314d49909ef05c08e8e7ab81","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Julien Le Jeune \u003cjulien.le-jeune@ovhcloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-07-31 16:28:20 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix test_snapshot_running"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since the commit the remove AMI snapshot format special casing has merged, we\u0027re now running the libvirt snapshot tests as expected."},{"line_number":10,"context_line":"However, those are missing mocks that are needed when running in an environment without qemu-img available."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bc7680bb_2d212e0e","line":7,"in_reply_to":"b318f682_3502b3f3","updated":"2024-09-03 15:13:49.000000000","message":"Done","commit_id":"2b0d7823054a1492c3f151be79a594b1fabe58af"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"dbc5426650eea627316e416415c83708dc823aad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d146dc8f_2302ebb3","updated":"2024-07-30 14:49:50.000000000","message":"I have mocked the missing","commit_id":"474a3d61078224124c5f708941ec5a33868f829e"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"3e280f9f6e139a2a6a31a9333c88a9302cdbd92f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d4c7bdae_cf9fa9f4","updated":"2024-07-31 12:50:19.000000000","message":"LGTM.","commit_id":"474a3d61078224124c5f708941ec5a33868f829e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"699df22b8109021578680f76391c3c80c48929f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9a67bfe6_a7354e52","updated":"2024-07-31 14:07:22.000000000","message":"Interested to hear others\u0027 opinions, but these mocks seem to shield a bunch of relevant code from being tested, to me.","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3a2cc2256f06fd41e25eecd28cf537a027fe0e8b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4e048b02_a338b272","updated":"2024-07-31 14:05:44.000000000","message":"lets see how this goes in ci.","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"32a390d412b0a15c222646f04a7e31e082a29776","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"aa5c6774_fb29f747","in_reply_to":"9a67bfe6_a7354e52","updated":"2024-07-31 17:53:50.000000000","message":"so i do share that concern btu i am torn as this unit test is really testing far to much\n\ni kind of feel like the inheritance is not working and the detailed behaviour should be tested in virt driver-specific tests that are mocked differently.\n\ni think the original intent behind these tests was to test teh virt driver interface for snapshot which should be driver-independent.\n\nthe driver specific tests shoudl be done seperatly.","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"42e7f8a6f88ca7e7d63422da6f4a709378b8414e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ae9769a2_da423214","updated":"2024-09-03 14:55:42.000000000","message":"On IRC we discussed going back to PS1 of this (with extra validation of the reason, being qemu-img specific). I think there was some confusion about how we got to start failing this test recently when qemu-img was missing an the PS1 approach keeps the most amount of coverage while also solving the immediate problem.","commit_id":"2b0d7823054a1492c3f151be79a594b1fabe58af"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6e0a407158c10a96b9937a31c454fd52a37cda13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f0c0fa7c_c78307c4","updated":"2024-07-31 14:37:04.000000000","message":"Thanks for the commit message tweak. Adding my -1 here for visibility of my concern, but I\u0027ll drop it if the consensus is to stick with this.","commit_id":"2b0d7823054a1492c3f151be79a594b1fabe58af"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e1d6297598fd6dc2c12ea48ba0e0d5fee14b616","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c70f488c_6e03b1e9","updated":"2024-09-03 15:30:14.000000000","message":"+1 pending ci.\n\ni normally don\u0027t care about commit message line length but if you respin you could reflow it a little nicer.\n\ndon\u0027t respin just for that.","commit_id":"eb9c0bf03460224509376197a3ec9d79ab22d135"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d0529d074fde9a4146e6ea1ca4a7bc5858fd6ba9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e7908436_0569f0f8","updated":"2024-09-03 16:05:29.000000000","message":"Thanks!","commit_id":"0809f75d7921fe01a6832211081e756a11b3ad4e"}],"nova/tests/unit/virt/test_virt_drivers.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eb0db3b19e0f2ce12fb53a3dc565880bb16caf77","unresolved":true,"context_lines":[{"line_number":248,"context_line":"                                     lambda *args, **kwargs: None)"},{"line_number":249,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":250,"context_line":"            self.skipTest(\"qemu-img not installed\")"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @catch_notimplementederror"},{"line_number":253,"context_line":"    def test_reboot(self):"},{"line_number":254,"context_line":"        reboot_type \u003d \"SOFT\""}],"source_content_type":"text/x-python","patch_set":2,"id":"a36e41b0_9856d434","line":251,"updated":"2024-07-30 14:24:26.000000000","message":"actually this test has nothing to do with validation the inspector code\n\nso this test is just missing a mock","commit_id":"ddbfd1a750afc096f300fc8cdc07973e8ee60224"},{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"dbc5426650eea627316e416415c83708dc823aad","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                                     lambda *args, **kwargs: None)"},{"line_number":249,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":250,"context_line":"            self.skipTest(\"qemu-img not installed\")"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @catch_notimplementederror"},{"line_number":253,"context_line":"    def test_reboot(self):"},{"line_number":254,"context_line":"        reboot_type \u003d \"SOFT\""}],"source_content_type":"text/x-python","patch_set":2,"id":"0791cc7a_0b0cb307","line":251,"in_reply_to":"a36e41b0_9856d434","updated":"2024-07-30 14:49:50.000000000","message":"Done","commit_id":"ddbfd1a750afc096f300fc8cdc07973e8ee60224"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3a2cc2256f06fd41e25eecd28cf537a027fe0e8b","unresolved":true,"context_lines":[{"line_number":240,"context_line":"    def test_snapshot_running(self):"},{"line_number":241,"context_line":"        img_ref \u003d self.image_service.create(self.ctxt, {\u0027name\u0027: \u0027snap-1\u0027})"},{"line_number":242,"context_line":"        instance_ref, network_info \u003d self._get_running_instance()"},{"line_number":243,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.utils.file_open\u0027,"},{"line_number":244,"context_line":"                        side_effect\u003d[io.BytesIO(b\u0027\u0027), io.BytesIO(b\u0027\u0027)]):"},{"line_number":245,"context_line":"            self.connection.snapshot(self.ctxt, instance_ref, img_ref[\u0027id\u0027],"},{"line_number":246,"context_line":"                                     lambda *args, **kwargs: None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"25b9760b_45bc5cee","line":243,"updated":"2024-07-31 14:05:44.000000000","message":"so this is kind of sad as this code really should not be libvirt-specific\nsince this is the geneirc part\nbut its inline with \n\nhttps://review.opendev.org/c/openstack/nova/+/925208/4/nova/tests/unit/virt/test_virt_drivers.py#194\n\nso i guess that is ok.","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"414a6558c90bc80d314d49909ef05c08e8e7ab81","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    def test_snapshot_running(self):"},{"line_number":241,"context_line":"        img_ref \u003d self.image_service.create(self.ctxt, {\u0027name\u0027: \u0027snap-1\u0027})"},{"line_number":242,"context_line":"        instance_ref, network_info \u003d self._get_running_instance()"},{"line_number":243,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.utils.file_open\u0027,"},{"line_number":244,"context_line":"                        side_effect\u003d[io.BytesIO(b\u0027\u0027), io.BytesIO(b\u0027\u0027)]):"},{"line_number":245,"context_line":"            self.connection.snapshot(self.ctxt, instance_ref, img_ref[\u0027id\u0027],"},{"line_number":246,"context_line":"                                     lambda *args, **kwargs: None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"082ec532_bb9ee19a","line":243,"in_reply_to":"25b9760b_45bc5cee","updated":"2024-09-03 15:13:49.000000000","message":"Done","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"699df22b8109021578680f76391c3c80c48929f8","unresolved":true,"context_lines":[{"line_number":842,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.create_image\u0027,"},{"line_number":843,"context_line":"                      lambda path, disk_format, disk_size, backing_file: None)"},{"line_number":844,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.extract_snapshot\u0027,"},{"line_number":845,"context_line":"                      lambda disk_path, source_fmt, out_path, dest_fmt: None)"},{"line_number":846,"context_line":"        self.stub_out(\u0027nova.privsep.path.chown\u0027, lambda *a, **k: None)"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"    def test_init_host_image_type_rbd_force_raw_images_true(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"2b6ac8e7_286f92b1","line":845,"updated":"2024-07-31 14:07:22.000000000","message":"This feels like a convenient, but very high-level mock that will cause us to not run a bunch of code. The mocks above it are much more tactical ones that just mock getting specific attributes about a disk. I\u0027m not sure what others think, but this seems to reduce coverage on systems that do have qemu-img and are currently running over more of that code.","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"414a6558c90bc80d314d49909ef05c08e8e7ab81","unresolved":false,"context_lines":[{"line_number":842,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.create_image\u0027,"},{"line_number":843,"context_line":"                      lambda path, disk_format, disk_size, backing_file: None)"},{"line_number":844,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.extract_snapshot\u0027,"},{"line_number":845,"context_line":"                      lambda disk_path, source_fmt, out_path, dest_fmt: None)"},{"line_number":846,"context_line":"        self.stub_out(\u0027nova.privsep.path.chown\u0027, lambda *a, **k: None)"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"    def test_init_host_image_type_rbd_force_raw_images_true(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ed33d8ae_5b5371dc","line":845,"in_reply_to":"0e2b56c1_76d4375d","updated":"2024-09-03 15:13:49.000000000","message":"Done","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"03d6bf699304a9c078bedc3ae20b858b058765e2","unresolved":true,"context_lines":[{"line_number":842,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.create_image\u0027,"},{"line_number":843,"context_line":"                      lambda path, disk_format, disk_size, backing_file: None)"},{"line_number":844,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.extract_snapshot\u0027,"},{"line_number":845,"context_line":"                      lambda disk_path, source_fmt, out_path, dest_fmt: None)"},{"line_number":846,"context_line":"        self.stub_out(\u0027nova.privsep.path.chown\u0027, lambda *a, **k: None)"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"    def test_init_host_image_type_rbd_force_raw_images_true(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"77bca4e3_2e4d9dd9","line":845,"in_reply_to":"2b6ac8e7_286f92b1","updated":"2024-07-31 14:38:22.000000000","message":"that\u0027s why I have proposed at first to mock them at test level instead of stubbing them at class level","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"44655b455503ee5ccab152a323e992cd32e9336b","unresolved":true,"context_lines":[{"line_number":842,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.create_image\u0027,"},{"line_number":843,"context_line":"                      lambda path, disk_format, disk_size, backing_file: None)"},{"line_number":844,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.extract_snapshot\u0027,"},{"line_number":845,"context_line":"                      lambda disk_path, source_fmt, out_path, dest_fmt: None)"},{"line_number":846,"context_line":"        self.stub_out(\u0027nova.privsep.path.chown\u0027, lambda *a, **k: None)"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"    def test_init_host_image_type_rbd_force_raw_images_true(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"0e2b56c1_76d4375d","line":845,"in_reply_to":"390c6340_e1150c3d","updated":"2024-07-31 18:12:28.000000000","message":"so if we want to stub it at test level instead of the class level you need to redefine the test_snapshot_running function in this class then create the mock and call super().test_snapshot_running while the mock is in place","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"32a390d412b0a15c222646f04a7e31e082a29776","unresolved":true,"context_lines":[{"line_number":842,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.create_image\u0027,"},{"line_number":843,"context_line":"                      lambda path, disk_format, disk_size, backing_file: None)"},{"line_number":844,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.utils.extract_snapshot\u0027,"},{"line_number":845,"context_line":"                      lambda disk_path, source_fmt, out_path, dest_fmt: None)"},{"line_number":846,"context_line":"        self.stub_out(\u0027nova.privsep.path.chown\u0027, lambda *a, **k: None)"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"    def test_init_host_image_type_rbd_force_raw_images_true(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"390c6340_e1150c3d","line":845,"in_reply_to":"77bca4e3_2e4d9dd9","updated":"2024-07-31 17:53:50.000000000","message":"i feel like the code that it is running is only correct to run in a functional test, not in this specific unit test.\n\nthis si sstictly speakign not a unit test really because we are not testing single function by mocking out there depencies due to how we are inheriting tests form the parent class.","commit_id":"07cc5c0caee3ce2abe4e9e746f8e9171c7b9db0c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"41512d4c617d541b23077f335417fae9ea308946","unresolved":true,"context_lines":[{"line_number":247,"context_line":"            self.connection.snapshot(self.ctxt, instance_ref, img_ref[\u0027id\u0027],"},{"line_number":248,"context_line":"                                     lambda *args, **kwargs: None)"},{"line_number":249,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":250,"context_line":"            if \u0027qemu-img\u0027 in e.stderr and \\"},{"line_number":251,"context_line":"                    e.stderr.strip().endswith(\u0027No such file or directory\u0027):"},{"line_number":252,"context_line":"                self.skipTest(\"qemu-img not installed\")"},{"line_number":253,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":7,"id":"a835c811_693fc0f0","line":250,"updated":"2024-09-03 15:31:17.000000000","message":"Sorry to belabor this, but the convention in nova (and most of openstack) is to break lines with parens. So:\n```\nif (\u0027qemu-img\u0027 in e.stderr and\n        e.stderr.strip().endswith(\n            \u0027No such file or directory\u0027)):\n```\nI think you could also shorten this to make your life easier with just:\n```\nif \u0027qemu-img in e.stderr and \u0027No such file\u0027 in e.stderr:\n```","commit_id":"eb9c0bf03460224509376197a3ec9d79ab22d135"},{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"a44d98a9589c6b6b2bc83fe58c607734f09697f1","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            self.connection.snapshot(self.ctxt, instance_ref, img_ref[\u0027id\u0027],"},{"line_number":248,"context_line":"                                     lambda *args, **kwargs: None)"},{"line_number":249,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":250,"context_line":"            if \u0027qemu-img\u0027 in e.stderr and \\"},{"line_number":251,"context_line":"                    e.stderr.strip().endswith(\u0027No such file or directory\u0027):"},{"line_number":252,"context_line":"                self.skipTest(\"qemu-img not installed\")"},{"line_number":253,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":7,"id":"106cb340_117591b3","line":250,"in_reply_to":"2fb5ea90_22e1cc62","updated":"2024-09-03 16:02:37.000000000","message":"Done","commit_id":"eb9c0bf03460224509376197a3ec9d79ab22d135"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c655fdc676ea90402fe6431e84df6468a6bcb01d","unresolved":true,"context_lines":[{"line_number":247,"context_line":"            self.connection.snapshot(self.ctxt, instance_ref, img_ref[\u0027id\u0027],"},{"line_number":248,"context_line":"                                     lambda *args, **kwargs: None)"},{"line_number":249,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":250,"context_line":"            if \u0027qemu-img\u0027 in e.stderr and \\"},{"line_number":251,"context_line":"                    e.stderr.strip().endswith(\u0027No such file or directory\u0027):"},{"line_number":252,"context_line":"                self.skipTest(\"qemu-img not installed\")"},{"line_number":253,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":7,"id":"2fb5ea90_22e1cc62","line":250,"in_reply_to":"a835c811_693fc0f0","updated":"2024-09-03 15:35:19.000000000","message":"ya something like\n\nif \u0027qemu-img\u0027 in e.stderr and \u0027No such file\u0027 in e.stderr:\nis what i was thinking too.","commit_id":"eb9c0bf03460224509376197a3ec9d79ab22d135"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e1d6297598fd6dc2c12ea48ba0e0d5fee14b616","unresolved":true,"context_lines":[{"line_number":248,"context_line":"                                     lambda *args, **kwargs: None)"},{"line_number":249,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":250,"context_line":"            if \u0027qemu-img\u0027 in e.stderr and \\"},{"line_number":251,"context_line":"                    e.stderr.strip().endswith(\u0027No such file or directory\u0027):"},{"line_number":252,"context_line":"                self.skipTest(\"qemu-img not installed\")"},{"line_number":253,"context_line":"            raise e"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"c2bdf0cc_82dd865a","line":251,"range":{"start_line":251,"start_character":37,"end_line":251,"end_character":45},"updated":"2024-09-03 15:30:14.000000000","message":"i may have used in in stead of ends with but i guess this is fine too.","commit_id":"eb9c0bf03460224509376197a3ec9d79ab22d135"},{"author":{"_account_id":34378,"name":"Julien LE JEUNE","email":"julien.le-jeune@mailops.fr","username":"jlejeune"},"change_message_id":"a44d98a9589c6b6b2bc83fe58c607734f09697f1","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                                     lambda *args, **kwargs: None)"},{"line_number":249,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":250,"context_line":"            if \u0027qemu-img\u0027 in e.stderr and \\"},{"line_number":251,"context_line":"                    e.stderr.strip().endswith(\u0027No such file or directory\u0027):"},{"line_number":252,"context_line":"                self.skipTest(\"qemu-img not installed\")"},{"line_number":253,"context_line":"            raise e"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0dad8aac_743bc413","line":251,"range":{"start_line":251,"start_character":37,"end_line":251,"end_character":45},"in_reply_to":"c2bdf0cc_82dd865a","updated":"2024-09-03 16:02:37.000000000","message":"Done","commit_id":"eb9c0bf03460224509376197a3ec9d79ab22d135"}]}
