)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3f51e36b40824a8d10459cb31793d7e490a27da7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"80e200c7_449bb43f","updated":"2023-07-04 15:10:03.000000000","message":"The patch looks good to me, but I think a unit test with encryption is required to ensure the encryption resize part of api.py is checked verifying the tempfile is ok and processutils is called with the proper arguments.","commit_id":"06fc5a309dfd67fbfa7fce9b98df93478abc12a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"712201a5e5c5e3888430fc1432774071540f18ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"46c3f33b_2794a295","updated":"2024-01-31 09:41:13.000000000","message":"actully looking at this closely there are some improvements to the tests that could be done","commit_id":"1b04e7394cf59cce19cd9fd9d865de790e8164dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"52b36f6f0514bc78a0d07e32d2726eab604646c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"206d1ae0_ca6c0618","updated":"2024-01-31 09:29:41.000000000","message":"i prefer to use return_value over side_effect but other then that this looks ok to me","commit_id":"1b04e7394cf59cce19cd9fd9d865de790e8164dd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ce50bed2b009339b3a16d3946d9ea3a6aab845fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"ec6410d4_7c026253","updated":"2024-02-06 22:28:12.000000000","message":"recheck https://review.opendev.org/c/openstack/nova/+/908182 has merged","commit_id":"7a18c4c4b5bb8333f3d2c2bb2f4a0ba45ee48fcc"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bede905097b4d01233d497519634a076e8eaf8fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"49f2d343_004163f1","updated":"2024-02-14 14:21:25.000000000","message":"Minor stuffs. Just a -1 to allow you to see those comments.","commit_id":"b05c42fa54430dedb45492ad56f31d119c78b06f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"79a92db20c8f49b30fe2a94c5f039affef78b3c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"55c8ce7a_d4702152","updated":"2024-02-23 12:25:09.000000000","message":"recheck nova-next","commit_id":"a187fe12048c4fbf5ee36998f963c462df4c41c9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f8e55f85ce2eb425449e309ef3c3a0e8451d7e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"f86b1668_1afc6b68","updated":"2024-02-22 09:40:29.000000000","message":"the post failure is a real issue but its not related ot this patch\n\nhttps://zuul.opendev.org/t/openstack/build/aa7755a818564f7988e8a31d7751d8a3/log/job-output.txt#37547\n\nwe are trying to set something in the binding profile which is an admin only filed that is intend solely for nova to pass info to the neutorn network backend\n\nmeaning we shoul not be doing what the post playbook is doing...","commit_id":"a187fe12048c4fbf5ee36998f963c462df4c41c9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"fd98eb0cf4d344a0c276ddf4969de4fa0579ef99","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"f080be23_381d4807","updated":"2024-06-06 06:23:42.000000000","message":"recheck Segmentation fault\ninfo: initramfs loading root from /dev/vda1\nBusyBox v1.35.0 (2023-05-30 16:50:05 UTC) multi-call binary.\n\nUsage: switch_root [-c CONSOLE_DEV] NEW_ROOT NEW_INIT [ARGS]\n\nFree initramfs and switch to another root fs:\nchroot to NEW_ROOT, delete all in /, move NEW_ROOT to /,\nexecute NEW_INIT. PID must be 1. NEW_ROOT must be a mountpoint.\n\n\t-c DEV\tReopen stdio to DEV after switch\n[   15.735741] Kernel panic - not syncing: Attempted to kill init! exitcode\u003d0x00000100\n[   15.737244] Kernel Offset: 0x2c000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)\n[   15.737924] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode\u003d0x00000100 ]---","commit_id":"9f87b5ce53be855bdebc9e1a3c128662d7db61bd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"cb8286255d23ae6e9f49e2d3b0de5864a5290a61","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"e78d88dd_eb1c8d83","updated":"2024-06-10 16:58:53.000000000","message":"recheck swift put_object failed\n```\nJun 10 04:45:27.576181 np0037692500 devstack@g-api.service[86519]: ERROR glance.common.wsgi Got error from Swift: put_object(\u0027glance\u0027, \u0027b1cfd7cf-ff23-4b05-be12-48ce3e14d593-00001\u0027, ...) failure and no ability to reset contents for reupload..\n```","commit_id":"40b951efffe032b8559d870625f8ed65b3de13b4"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"202413a25b16e2ae92e69c23daacd10333fbd3f2","unresolved":true,"context_lines":[{"line_number":4190,"context_line":"        # vice versa."},{"line_number":4191,"context_line":"        current_flavor_encryption \u003d strutils.bool_from_string("},{"line_number":4192,"context_line":"            current_flavor.extra_specs.get(\u0027hw:ephemeral_encryption\u0027))"},{"line_number":4193,"context_line":"        new_flavor_encryption \u003d strutils.bool_from_string("},{"line_number":4194,"context_line":"            new_flavor.extra_specs.get(\u0027hw:ephemeral_encryption\u0027))"},{"line_number":4195,"context_line":"        if current_flavor_encryption !\u003d new_flavor_encryption:"},{"line_number":4196,"context_line":"            reason \u003d _("},{"line_number":4197,"context_line":"                \u0027Resize from a flavor with ephemeral encryption to a \u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"a319d09b_b10a6a46","line":4194,"range":{"start_line":4193,"start_character":32,"end_line":4194,"end_character":66},"updated":"2024-02-13 07:24:13.000000000","message":"you should call hardware.get_ephemeral_encryption_constraint(new_flavor, instance.image_meta) here instead to ensure image compatiablity","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"16b0b1bdd023b63f4ecdb3f4ea8a33827e4c6b03","unresolved":false,"context_lines":[{"line_number":4190,"context_line":"        # vice versa."},{"line_number":4191,"context_line":"        current_flavor_encryption \u003d strutils.bool_from_string("},{"line_number":4192,"context_line":"            current_flavor.extra_specs.get(\u0027hw:ephemeral_encryption\u0027))"},{"line_number":4193,"context_line":"        new_flavor_encryption \u003d strutils.bool_from_string("},{"line_number":4194,"context_line":"            new_flavor.extra_specs.get(\u0027hw:ephemeral_encryption\u0027))"},{"line_number":4195,"context_line":"        if current_flavor_encryption !\u003d new_flavor_encryption:"},{"line_number":4196,"context_line":"            reason \u003d _("},{"line_number":4197,"context_line":"                \u0027Resize from a flavor with ephemeral encryption to a \u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"7bf91300_d356681d","line":4194,"range":{"start_line":4193,"start_character":32,"end_line":4194,"end_character":66},"in_reply_to":"617073b9_1c62e584","updated":"2024-02-14 10:07:31.000000000","message":"Done","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"42f0e9a895c21dd28f21adf83833491f71427201","unresolved":true,"context_lines":[{"line_number":4190,"context_line":"        # vice versa."},{"line_number":4191,"context_line":"        current_flavor_encryption \u003d strutils.bool_from_string("},{"line_number":4192,"context_line":"            current_flavor.extra_specs.get(\u0027hw:ephemeral_encryption\u0027))"},{"line_number":4193,"context_line":"        new_flavor_encryption \u003d strutils.bool_from_string("},{"line_number":4194,"context_line":"            new_flavor.extra_specs.get(\u0027hw:ephemeral_encryption\u0027))"},{"line_number":4195,"context_line":"        if current_flavor_encryption !\u003d new_flavor_encryption:"},{"line_number":4196,"context_line":"            reason \u003d _("},{"line_number":4197,"context_line":"                \u0027Resize from a flavor with ephemeral encryption to a \u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"617073b9_1c62e584","line":4194,"range":{"start_line":4193,"start_character":32,"end_line":4194,"end_character":66},"in_reply_to":"a319d09b_b10a6a46","updated":"2024-02-14 08:06:02.000000000","message":"OK, you\u0027re right.. I had thought it would get caught already but it gets caught later during the scheduling step (not ideal).","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"380924b925f7cdd788b536d2d0e43202ae9c0ae1","unresolved":true,"context_lines":[{"line_number":4198,"context_line":"                \u0027flavor without ephemeral encryption and vice versa is not \u0027"},{"line_number":4199,"context_line":"                \u0027allowed.\u0027)"},{"line_number":4200,"context_line":"            raise exception.EphemeralEncryptionConflict("},{"line_number":4201,"context_line":"                action\u003d\u0027resize\u0027, reason\u003dreason)"},{"line_number":4202,"context_line":"        # If both flavors specify encryption, check if the formats match."},{"line_number":4203,"context_line":"        if current_flavor_encryption and new_flavor_encryption:"},{"line_number":4204,"context_line":"            current_format \u003d current_flavor.extra_specs.get("}],"source_content_type":"text/x-python","patch_set":28,"id":"bb7823c8_4ecadcc2","line":4201,"updated":"2024-02-13 07:55:05.000000000","message":"so the edge case i am thinking of is going from a flavor that does not specify an extra spec to one that explictly forbids it where the image requests encyption.\n\ni think this will not be caught here","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"42f0e9a895c21dd28f21adf83833491f71427201","unresolved":false,"context_lines":[{"line_number":4198,"context_line":"                \u0027flavor without ephemeral encryption and vice versa is not \u0027"},{"line_number":4199,"context_line":"                \u0027allowed.\u0027)"},{"line_number":4200,"context_line":"            raise exception.EphemeralEncryptionConflict("},{"line_number":4201,"context_line":"                action\u003d\u0027resize\u0027, reason\u003dreason)"},{"line_number":4202,"context_line":"        # If both flavors specify encryption, check if the formats match."},{"line_number":4203,"context_line":"        if current_flavor_encryption and new_flavor_encryption:"},{"line_number":4204,"context_line":"            current_format \u003d current_flavor.extra_specs.get("}],"source_content_type":"text/x-python","patch_set":28,"id":"d23681c2_f3900391","line":4201,"in_reply_to":"bb7823c8_4ecadcc2","updated":"2024-02-14 08:06:02.000000000","message":"Done","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"380924b925f7cdd788b536d2d0e43202ae9c0ae1","unresolved":true,"context_lines":[{"line_number":4205,"context_line":"                \u0027hw:ephemeral_encryption_format\u0027)"},{"line_number":4206,"context_line":"            new_format \u003d new_flavor.extra_specs.get("},{"line_number":4207,"context_line":"                \u0027hw:ephemeral_encryption_format\u0027)"},{"line_number":4208,"context_line":"            if new_format is not None and current_format !\u003d new_format:"},{"line_number":4209,"context_line":"                # Check BDM first before failing. If the BDM encryption format"},{"line_number":4210,"context_line":"                # matches the new flavor format, we don\u0027t need to reject it."},{"line_number":4211,"context_line":"                bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":28,"id":"ca791020_4f2b28c9","line":4208,"updated":"2024-02-13 07:55:05.000000000","message":"but maybe it will be caught here?\n\ni would like to see a funcitonal test case to prove this out either way","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"42f0e9a895c21dd28f21adf83833491f71427201","unresolved":false,"context_lines":[{"line_number":4205,"context_line":"                \u0027hw:ephemeral_encryption_format\u0027)"},{"line_number":4206,"context_line":"            new_format \u003d new_flavor.extra_specs.get("},{"line_number":4207,"context_line":"                \u0027hw:ephemeral_encryption_format\u0027)"},{"line_number":4208,"context_line":"            if new_format is not None and current_format !\u003d new_format:"},{"line_number":4209,"context_line":"                # Check BDM first before failing. If the BDM encryption format"},{"line_number":4210,"context_line":"                # matches the new flavor format, we don\u0027t need to reject it."},{"line_number":4211,"context_line":"                bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":28,"id":"025d3e63_dca9d234","line":4208,"in_reply_to":"ca791020_4f2b28c9","updated":"2024-02-14 08:06:02.000000000","message":"Done","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":true,"context_lines":[{"line_number":4347,"context_line":"        # don\u0027t recalculate the NUMA topology unless the flavor has changed"},{"line_number":4348,"context_line":"        if not same_flavor:"},{"line_number":4349,"context_line":"            request_spec.numa_topology \u003d hardware.numa_get_constraints("},{"line_number":4350,"context_line":"                new_flavor, instance.image_meta)"},{"line_number":4351,"context_line":"            # if the flavor is changed then we need to recalculate the"},{"line_number":4352,"context_line":"            # pci_requests as well because the new flavor might request"},{"line_number":4353,"context_line":"            # different pci_aliases"}],"source_content_type":"text/x-python","patch_set":28,"id":"111826a3_410bdcc1","line":4350,"updated":"2024-02-13 07:04:20.000000000","message":"so like we test for image/flaovr conflicts here\nyou should also call hardware.get_ephemeral_encryption_constraint(new_flavor, image_meta) here or in _validate_resize_for_ephemeral_encryption to ensure the new flavor does not conflcit with the current image\nhttps://github.com/openstack/nova/blob/35af4b345d997b63f999a090e236d91b78ea4304/nova/virt/hardware.py#L2745-L2788","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"42f0e9a895c21dd28f21adf83833491f71427201","unresolved":false,"context_lines":[{"line_number":4347,"context_line":"        # don\u0027t recalculate the NUMA topology unless the flavor has changed"},{"line_number":4348,"context_line":"        if not same_flavor:"},{"line_number":4349,"context_line":"            request_spec.numa_topology \u003d hardware.numa_get_constraints("},{"line_number":4350,"context_line":"                new_flavor, instance.image_meta)"},{"line_number":4351,"context_line":"            # if the flavor is changed then we need to recalculate the"},{"line_number":4352,"context_line":"            # pci_requests as well because the new flavor might request"},{"line_number":4353,"context_line":"            # different pci_aliases"}],"source_content_type":"text/x-python","patch_set":28,"id":"682c20b8_dcf03137","line":4350,"in_reply_to":"111826a3_410bdcc1","updated":"2024-02-14 08:06:02.000000000","message":"Done","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bede905097b4d01233d497519634a076e8eaf8fb","unresolved":true,"context_lines":[{"line_number":521,"context_line":"        self.notifier.wait_for_versioned_notifications(\u0027instance.reboot.end\u0027)"},{"line_number":522,"context_line":"        return self._wait_for_state_change(server, expected_state)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def _show_server(self, server, api\u003dNone):"},{"line_number":525,"context_line":"        \"\"\"This method is to retrieve fresh copy of target server object"},{"line_number":526,"context_line":"        \"\"\""},{"line_number":527,"context_line":"        if api is None:"}],"source_content_type":"text/x-python","patch_set":29,"id":"9a0242b0_6f660e9f","line":524,"range":{"start_line":524,"start_character":35,"end_line":524,"end_character":43},"updated":"2024-02-14 14:21:25.000000000","message":"At a first glance, it was not clear to me that the goal was to use the admin_api here.\nI think it deserve a docstring to document what is expected.","commit_id":"b05c42fa54430dedb45492ad56f31d119c78b06f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c8f51f31cc52706fd9aa83bb0ddc8a8fb04f894","unresolved":true,"context_lines":[{"line_number":521,"context_line":"        self.notifier.wait_for_versioned_notifications(\u0027instance.reboot.end\u0027)"},{"line_number":522,"context_line":"        return self._wait_for_state_change(server, expected_state)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def _show_server(self, server, api\u003dNone):"},{"line_number":525,"context_line":"        \"\"\"This method is to retrieve fresh copy of target server object"},{"line_number":526,"context_line":"        \"\"\""},{"line_number":527,"context_line":"        if api is None:"}],"source_content_type":"text/x-python","patch_set":29,"id":"aa2f5e3f_c0797aab","line":524,"range":{"start_line":524,"start_character":35,"end_line":524,"end_character":43},"in_reply_to":"9a0242b0_6f660e9f","updated":"2024-02-14 17:35:07.000000000","message":"I think I took it for granted 🙂 the pattern is used other places in this file and I didn\u0027t even think about it. I can add some text about it to the docstring.","commit_id":"b05c42fa54430dedb45492ad56f31d119c78b06f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc7599b6358072ece76d76e48075d43cef5ef90b","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        self.notifier.wait_for_versioned_notifications(\u0027instance.reboot.end\u0027)"},{"line_number":522,"context_line":"        return self._wait_for_state_change(server, expected_state)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def _show_server(self, server, api\u003dNone):"},{"line_number":525,"context_line":"        \"\"\"This method is to retrieve fresh copy of target server object"},{"line_number":526,"context_line":"        \"\"\""},{"line_number":527,"context_line":"        if api is None:"}],"source_content_type":"text/x-python","patch_set":29,"id":"796bd48d_eca6852c","line":524,"range":{"start_line":524,"start_character":35,"end_line":524,"end_character":43},"in_reply_to":"aa2f5e3f_c0797aab","updated":"2024-02-22 09:43:43.000000000","message":"Done","commit_id":"b05c42fa54430dedb45492ad56f31d119c78b06f"}],"nova/tests/functional/libvirt/test_ephemeral_encryption.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(0, len(self.key_mgr.list(ctx)))"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class EphemeralEncryptionTestResize(EphemeralEncryptionTestBase):"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_resize_server(self):"},{"line_number":105,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":28,"id":"80b03634_d6564fc1","line":102,"updated":"2024-02-13 07:04:20.000000000","message":"if you want to have one class per instance action that is fine but its not really needed\n\nthey could just be in the same class as seperate funciotns.\n\nthe extra grouping is fine assume you will have more then one function in each class eventurally when we add support for different disk formats or somehting like that. Otherwise its just more verbose for little benifit.\nits not wrong just more typing so treat this as a nit.","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"42f0e9a895c21dd28f21adf83833491f71427201","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(0, len(self.key_mgr.list(ctx)))"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class EphemeralEncryptionTestResize(EphemeralEncryptionTestBase):"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_resize_server(self):"},{"line_number":105,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":28,"id":"bcf54607_45cf3a68","line":102,"in_reply_to":"80b03634_d6564fc1","updated":"2024-02-14 08:06:02.000000000","message":"It kinda first came up with the live migrate tests, there\u0027s multiple tests and some have to override a parent method. Given that I was going to break that up, I thought it might be more clear if I just treated every server action the same.","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"16b0b1bdd023b63f4ecdb3f4ea8a33827e4c6b03","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(0, len(self.key_mgr.list(ctx)))"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class EphemeralEncryptionTestResize(EphemeralEncryptionTestBase):"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_resize_server(self):"},{"line_number":105,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":28,"id":"29610071_cecf2a87","line":102,"in_reply_to":"bcf54607_45cf3a68","updated":"2024-02-14 10:07:31.000000000","message":"Acknowledged","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # Verify that key manager secrets were deleted for each disk."},{"line_number":195,"context_line":"        self.assertEqual(0, len(self.key_mgr.list(ctx)))"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"class EphemeralEncryptionTestColdMigrate(EphemeralEncryptionTestBase):"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"856ecad7_596ecf0d","line":196,"updated":"2024-02-13 07:04:20.000000000","message":"combined with the cold migrate test below for multi node resize coverage\nim happy with the happy path coverage.\n\nwe could and should add functional test to test the resize behavior between encypted and non encypted flavors that could be a follow up.\n--- later ---\nah never mind you tested that in the non libvirt specific functional tests\nya that makes sense","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":true,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"class EphemeralEncryptionTestColdMigrate(EphemeralEncryptionTestBase):"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    ADMIN_API \u003d True"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def test_cold_migrate_server(self):"},{"line_number":203,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":28,"id":"66abd3c9_7071497b","line":200,"updated":"2024-02-13 07:04:20.000000000","message":"is this the primary reason for usign a diffent class?\nif so thats also fine.\n\nwe can stub out the admin client in the test functions but im ok with doing this via the class variable","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"42f0e9a895c21dd28f21adf83833491f71427201","unresolved":true,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"class EphemeralEncryptionTestColdMigrate(EphemeralEncryptionTestBase):"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    ADMIN_API \u003d True"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def test_cold_migrate_server(self):"},{"line_number":203,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":28,"id":"ab63786f_9d152aa5","line":200,"in_reply_to":"66abd3c9_7071497b","updated":"2024-02-14 08:06:02.000000000","message":"Primary reason is to keep things looking more organized. Some tests require admin API, some spin up two computes instead of one. And there\u0027s a large number of tests in general.","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"16b0b1bdd023b63f4ecdb3f4ea8a33827e4c6b03","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"class EphemeralEncryptionTestColdMigrate(EphemeralEncryptionTestBase):"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    ADMIN_API \u003d True"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def test_cold_migrate_server(self):"},{"line_number":203,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":28,"id":"7a0d9dc7_b37a9378","line":200,"in_reply_to":"ab63786f_9d152aa5","updated":"2024-02-14 10:07:31.000000000","message":"Acknowledged","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":true,"context_lines":[{"line_number":211,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver.delete_instance_files\u0027))"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        self.start_compute(hostname\u003d\u0027compute1\u0027)"},{"line_number":214,"context_line":"        self.start_compute(hostname\u003d\u0027compute2\u0027)"},{"line_number":215,"context_line":"        self._run_periodics()"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        ctx \u003d nova_context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":28,"id":"0f8587cb_264b53db","line":214,"updated":"2024-02-13 07:04:20.000000000","message":"ack so you test same host resize explictly and then tansitively test diffent host resize via the cold migration code path. that should be fine but we can always add a multinode reisze test in teh future if we have a bug.","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"16b0b1bdd023b63f4ecdb3f4ea8a33827e4c6b03","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver.delete_instance_files\u0027))"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        self.start_compute(hostname\u003d\u0027compute1\u0027)"},{"line_number":214,"context_line":"        self.start_compute(hostname\u003d\u0027compute2\u0027)"},{"line_number":215,"context_line":"        self._run_periodics()"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        ctx \u003d nova_context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":28,"id":"6fdb2de1_543c14e0","line":214,"in_reply_to":"0f8587cb_264b53db","updated":"2024-02-14 10:07:31.000000000","message":"Acknowledged","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":true,"context_lines":[{"line_number":256,"context_line":"        dest_driver \u003d self.computes[dest_host].driver"},{"line_number":257,"context_line":"        self.assertSecretsMatch("},{"line_number":258,"context_line":"            dest_driver, bdms, keymgr_secrets_after_migrate)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        # Revert the migration."},{"line_number":261,"context_line":"        self._revert_resize(server)"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"cf4fb949_c8109269","line":259,"updated":"2024-02-13 07:04:20.000000000","message":"you could also assert that they are still on the source here.\nyou do that after revert but they should be on both in verify resize correct?\n\ni didn\u0027t check that explictly in my local testing but since the disks are still on the souce i would expect the secrets to be there too.","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"16b0b1bdd023b63f4ecdb3f4ea8a33827e4c6b03","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        dest_driver \u003d self.computes[dest_host].driver"},{"line_number":257,"context_line":"        self.assertSecretsMatch("},{"line_number":258,"context_line":"            dest_driver, bdms, keymgr_secrets_after_migrate)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        # Revert the migration."},{"line_number":261,"context_line":"        self._revert_resize(server)"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"0b53f482_2a5dddc8","line":259,"in_reply_to":"1e36e72d_ff2f49a6","updated":"2024-02-14 10:07:31.000000000","message":"Done","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"42f0e9a895c21dd28f21adf83833491f71427201","unresolved":true,"context_lines":[{"line_number":256,"context_line":"        dest_driver \u003d self.computes[dest_host].driver"},{"line_number":257,"context_line":"        self.assertSecretsMatch("},{"line_number":258,"context_line":"            dest_driver, bdms, keymgr_secrets_after_migrate)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        # Revert the migration."},{"line_number":261,"context_line":"        self._revert_resize(server)"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1e36e72d_ff2f49a6","line":259,"in_reply_to":"cf4fb949_c8109269","updated":"2024-02-14 08:06:02.000000000","message":"Hm, yeah, I had them deleting from the source prior to the confirm/revert but I think what you\u0027re saying makes sense ... until we have deleted the disks on the source, it makes sense to have the secrets on the source.","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5465567072d60c6ad04bf66515ec58bf08156076","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver.delete_instance_files\u0027))"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def test_resize_server_same_host(self):"},{"line_number":281,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        # Verify there are no secrets in the key manager."},{"line_number":284,"context_line":"        self.assertEqual(0, len(self.key_mgr.list(self.context)))"}],"source_content_type":"text/x-python","patch_set":44,"id":"a4990931_c02c6b6b","line":281,"updated":"2024-08-26 16:16:47.000000000","message":"+1","commit_id":"759ff2cc893d91584209b3d6880241ecc7458f56"}],"nova/tests/functional/test_ephemeral_encryption.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":true,"context_lines":[{"line_number":436,"context_line":"            api_client.OpenStackApiException, self._resize_server, server,"},{"line_number":437,"context_line":"            uuidsentinel.eph_encryption_disabled_flavor)"},{"line_number":438,"context_line":"        self.assertEqual(400, ex.response.status_code)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    def test_flavor_encryption_not_specified_to_disabled(self):"},{"line_number":441,"context_line":"        # Start another compute to be the resize destination."},{"line_number":442,"context_line":"        self._start_compute(host\u003d\u0027compute2\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"1027ca64_53c58b82","line":439,"updated":"2024-02-13 07:04:20.000000000","message":"+1","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"16b0b1bdd023b63f4ecdb3f4ea8a33827e4c6b03","unresolved":false,"context_lines":[{"line_number":436,"context_line":"            api_client.OpenStackApiException, self._resize_server, server,"},{"line_number":437,"context_line":"            uuidsentinel.eph_encryption_disabled_flavor)"},{"line_number":438,"context_line":"        self.assertEqual(400, ex.response.status_code)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    def test_flavor_encryption_not_specified_to_disabled(self):"},{"line_number":441,"context_line":"        # Start another compute to be the resize destination."},{"line_number":442,"context_line":"        self._start_compute(host\u003d\u0027compute2\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"4a93dc41_c39697b1","line":439,"in_reply_to":"1027ca64_53c58b82","updated":"2024-02-14 10:07:31.000000000","message":"Acknowledged","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":28,"id":"f5b85112_bc16e005","line":503,"updated":"2024-02-13 07:04:20.000000000","message":"im over all happy with this testing but one area that is missing coverage is\ntesting the behaivor when the image request encyption or a format the conflcits wiht the flavor.\n\nin this case we should have a 400","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"42f0e9a895c21dd28f21adf83833491f71427201","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"38db58bc_6f250dd4","line":503,"in_reply_to":"f5b85112_bc16e005","updated":"2024-02-14 08:06:02.000000000","message":"Done","commit_id":"9c71dfec7726d8eb67ad45f4311cb59c77c2fbae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"16b0b1bdd023b63f4ecdb3f4ea8a33827e4c6b03","unresolved":false,"context_lines":[{"line_number":514,"context_line":"            api_client.OpenStackApiException, self._resize_server, server,"},{"line_number":515,"context_line":"            uuidsentinel.eph_encryption_disabled_flavor)"},{"line_number":516,"context_line":"        self.assertEqual(400, ex.response.status_code)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def test_flavor_encryption_format_image_mismatch(self):"},{"line_number":519,"context_line":"        # Test a scenario where the current image of the instance has"},{"line_number":520,"context_line":"        # encryption enabled with a specified format but the flavor requested"}],"source_content_type":"text/x-python","patch_set":29,"id":"496c31a2_719f28e1","line":517,"updated":"2024-02-14 10:07:31.000000000","message":"+1 this is the main error i was worried about","commit_id":"b05c42fa54430dedb45492ad56f31d119c78b06f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"16b0b1bdd023b63f4ecdb3f4ea8a33827e4c6b03","unresolved":false,"context_lines":[{"line_number":529,"context_line":"            networks\u003d[])"},{"line_number":530,"context_line":"        ex \u003d self.assertRaises("},{"line_number":531,"context_line":"            api_client.OpenStackApiException, self._resize_server, server,"},{"line_number":532,"context_line":"            uuidsentinel.eph_encryption_plain_flavor)"},{"line_number":533,"context_line":"        self.assertEqual(400, ex.response.status_code)"}],"source_content_type":"text/x-python","patch_set":29,"id":"e5ae89db_58566184","line":532,"updated":"2024-02-14 10:07:31.000000000","message":"+1 but yes this was also an edge case i had not considered","commit_id":"b05c42fa54430dedb45492ad56f31d119c78b06f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"2c3d73cfcd2c72a112f990d8f8c0565ed6ed07de","unresolved":true,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class TestEphemeralEncryptionResize(_TestEphemeralEncryptionBase):"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    compute_driver \u003d \u0027fake.EphEncryptionDriver\u0027"},{"line_number":209,"context_line":"    flavors \u003d {"},{"line_number":210,"context_line":"        \u0027no_eph_encryption\u0027: {"},{"line_number":211,"context_line":"            \u0027id\u0027: uuidsentinel.no_eph_encryption"}],"source_content_type":"text/x-python","patch_set":44,"id":"ef7b6697_3d60d532","line":208,"updated":"2024-08-26 11:41:04.000000000","message":"defined already here https://review.opendev.org/c/openstack/nova/+/870933/44/nova/virt/fake.py#L1113","commit_id":"759ff2cc893d91584209b3d6880241ecc7458f56"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"690fff6c4c86a7411f3fc22d28aeb4db0665568c","unresolved":true,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class TestEphemeralEncryptionResize(_TestEphemeralEncryptionBase):"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    compute_driver \u003d \u0027fake.EphEncryptionDriver\u0027"},{"line_number":209,"context_line":"    flavors \u003d {"},{"line_number":210,"context_line":"        \u0027no_eph_encryption\u0027: {"},{"line_number":211,"context_line":"            \u0027id\u0027: uuidsentinel.no_eph_encryption"}],"source_content_type":"text/x-python","patch_set":44,"id":"a25a41fd_0fbd6d0c","line":208,"in_reply_to":"ef7b6697_3d60d532","updated":"2024-08-26 13:40:25.000000000","message":"right so that where that dirver is defiend an this is enableing it to be used in theses tests.\n\nboth are needed.\n\n_TestEphemeralEncryptionBase does not configure the dirver to use so we need to specify it as done on line 82\n\nhttps://review.opendev.org/c/openstack/nova/+/870933/44/nova/tests/functional/test_ephemeral_encryption.py#82","commit_id":"759ff2cc893d91584209b3d6880241ecc7458f56"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"2c3d73cfcd2c72a112f990d8f8c0565ed6ed07de","unresolved":true,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_flavor_encryption_not_specified_to_disabled(self):"},{"line_number":248,"context_line":"        # Start another compute to be the resize destination."},{"line_number":249,"context_line":"        self._start_compute(host\u003d\u0027compute2\u0027)"},{"line_number":250,"context_line":"        # Test a scenario where the current flavor doesn\u0027t specify ephemeral"},{"line_number":251,"context_line":"        # encryption and the new flavor has it disabled. This should be"},{"line_number":252,"context_line":"        # allowed."}],"source_content_type":"text/x-python","patch_set":44,"id":"12bcea7a_5288b06e","line":249,"updated":"2024-08-26 11:41:04.000000000","message":"I have noticed in other places too (earlier on some test I was working), we must need start another host for resize, can you please tell why we can\u0027t resize on same host in functionaly test by-default is there anything we need to disable to do that.\nI tried using different compute_driver (medium, small) too, which I thought may be related but did not help.","commit_id":"759ff2cc893d91584209b3d6880241ecc7458f56"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"690fff6c4c86a7411f3fc22d28aeb4db0665568c","unresolved":true,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_flavor_encryption_not_specified_to_disabled(self):"},{"line_number":248,"context_line":"        # Start another compute to be the resize destination."},{"line_number":249,"context_line":"        self._start_compute(host\u003d\u0027compute2\u0027)"},{"line_number":250,"context_line":"        # Test a scenario where the current flavor doesn\u0027t specify ephemeral"},{"line_number":251,"context_line":"        # encryption and the new flavor has it disabled. This should be"},{"line_number":252,"context_line":"        # allowed."}],"source_content_type":"text/x-python","patch_set":44,"id":"18b57798_da73a8fd","line":249,"in_reply_to":"12bcea7a_5288b06e","updated":"2024-08-26 13:40:25.000000000","message":"same host resize is disabled by default\n\nthere is a config option to enable it but we somethign want to test both same host resize and diffent host reisze because they actully have diffent behavior.\n\nin general its better to test differnet host resize because that is more common and more complex in general but its good to have coreage of both.\n\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#DEFAULT.allow_resize_to_same_host","commit_id":"759ff2cc893d91584209b3d6880241ecc7458f56"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5465567072d60c6ad04bf66515ec58bf08156076","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_flavor_encryption_not_specified_to_disabled(self):"},{"line_number":248,"context_line":"        # Start another compute to be the resize destination."},{"line_number":249,"context_line":"        self._start_compute(host\u003d\u0027compute2\u0027)"},{"line_number":250,"context_line":"        # Test a scenario where the current flavor doesn\u0027t specify ephemeral"},{"line_number":251,"context_line":"        # encryption and the new flavor has it disabled. This should be"},{"line_number":252,"context_line":"        # allowed."}],"source_content_type":"text/x-python","patch_set":44,"id":"d075d1bd_c4890192","line":249,"in_reply_to":"18b57798_da73a8fd","updated":"2024-08-26 16:16:47.000000000","message":"ack, thanks","commit_id":"759ff2cc893d91584209b3d6880241ecc7458f56"}],"nova/tests/unit/compute/test_api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc7599b6358072ece76d76e48075d43cef5ef90b","unresolved":true,"context_lines":[{"line_number":8391,"context_line":"            instance.image_meta \u003d image_meta_obj.ImageMeta.from_dict("},{"line_number":8392,"context_line":"                {\u0027properties\u0027: {\u0027hw_ephemeral_encryption\u0027: \u0027true\u0027}})"},{"line_number":8393,"context_line":"        self.assertFalse("},{"line_number":8394,"context_line":"            self.compute_api._allow_cross_cell_resize(self.context, instance))"},{"line_number":8395,"context_line":""},{"line_number":8396,"context_line":"    def _test_block_accelerators(self, instance, args_info,"},{"line_number":8397,"context_line":"                                 until_service\u003dNone):"}],"source_content_type":"text/x-python","patch_set":32,"id":"8b21d54e_aa736e8a","line":8394,"updated":"2024-02-22 09:43:43.000000000","message":"+1","commit_id":"a187fe12048c4fbf5ee36998f963c462df4c41c9"}],"nova/tests/unit/virt/disk/test_api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"712201a5e5c5e3888430fc1432774071540f18ff","unresolved":true,"context_lines":[{"line_number":165,"context_line":"        imgfile \u003d tempfile.NamedTemporaryFile()"},{"line_number":166,"context_line":"        self.addCleanup(imgfile.close)"},{"line_number":167,"context_line":"        imgsize \u003d 10"},{"line_number":168,"context_line":"        image \u003d imgmodel.LocalFileImage(imgfile, imgmodel.FORMAT_QCOW2)"},{"line_number":169,"context_line":"        encryption \u003d {\u0027secret\u0027: mock.sentinel.secret}"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        with mock.patch(\u0027tempfile.NamedTemporaryFile\u0027) as mock_tmp_file:"}],"source_content_type":"text/x-python","patch_set":24,"id":"ad5e9a8d_78244422","line":168,"updated":"2024-01-31 09:41:13.000000000","message":"this feels like overkill since we dont expect to ever write to this file\nor invoke a command on it.\n\nits what the rest of the tess are doing but unit tests should not be actully creating files in general so thise feels like the patteren in the file is wrong.\n\nhttps://github.com/openstack/nova/blob/a66a0dd113d0b57acf9f69d76785be39479eebc0/nova/virt/image/model.py#L32-L95\n\nthis does no file io.\nits just asigning the path and format to a var in memory.\n\nso you can remove the tempfile usage adn just pass fake string for the path","commit_id":"1b04e7394cf59cce19cd9fd9d865de790e8164dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        imgfile \u003d tempfile.NamedTemporaryFile()"},{"line_number":166,"context_line":"        self.addCleanup(imgfile.close)"},{"line_number":167,"context_line":"        imgsize \u003d 10"},{"line_number":168,"context_line":"        image \u003d imgmodel.LocalFileImage(imgfile, imgmodel.FORMAT_QCOW2)"},{"line_number":169,"context_line":"        encryption \u003d {\u0027secret\u0027: mock.sentinel.secret}"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        with mock.patch(\u0027tempfile.NamedTemporaryFile\u0027) as mock_tmp_file:"}],"source_content_type":"text/x-python","patch_set":24,"id":"632b42c2_5e78af1c","line":168,"in_reply_to":"747eaf32_8e8c434f","updated":"2024-02-13 07:04:20.000000000","message":"Done","commit_id":"1b04e7394cf59cce19cd9fd9d865de790e8164dd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f2b04a69a459a22a13e19f51c08af3b5d38f21c6","unresolved":true,"context_lines":[{"line_number":165,"context_line":"        imgfile \u003d tempfile.NamedTemporaryFile()"},{"line_number":166,"context_line":"        self.addCleanup(imgfile.close)"},{"line_number":167,"context_line":"        imgsize \u003d 10"},{"line_number":168,"context_line":"        image \u003d imgmodel.LocalFileImage(imgfile, imgmodel.FORMAT_QCOW2)"},{"line_number":169,"context_line":"        encryption \u003d {\u0027secret\u0027: mock.sentinel.secret}"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        with mock.patch(\u0027tempfile.NamedTemporaryFile\u0027) as mock_tmp_file:"}],"source_content_type":"text/x-python","patch_set":24,"id":"747eaf32_8e8c434f","line":168,"in_reply_to":"ad5e9a8d_78244422","updated":"2024-02-01 02:16:58.000000000","message":"OK, will do.","commit_id":"1b04e7394cf59cce19cd9fd9d865de790e8164dd"}],"nova/tests/unit/virt/libvirt/test_imagebackend.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"52b36f6f0514bc78a0d07e32d2726eab604646c1","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        image.get_disk_size \u003d mock.Mock(return_value\u003d1024)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":284,"context_line":"        with mock.patch.object(os.path, \u0027exists\u0027) as mock_exists:"},{"line_number":285,"context_line":"            # base dir exists, image exists, template exists, template exists"},{"line_number":286,"context_line":"            mock_exists.side_effect \u003d [True, True, True, True]"},{"line_number":287,"context_line":"            with mock.patch.object(image, \u0027resize_image\u0027) as mock_resize_image:"}],"source_content_type":"text/x-python","patch_set":24,"id":"f178eb40_b315a791","line":284,"updated":"2024-01-31 09:29:41.000000000","message":"since your alwasy returning true this can be\n(…, return_value\u003dTrue)\n\nand you can remove the mock_exists.side_effect","commit_id":"1b04e7394cf59cce19cd9fd9d865de790e8164dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"638e2a252e93b5348e09f73b613c696fe255131e","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        image.get_disk_size \u003d mock.Mock(return_value\u003d1024)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":284,"context_line":"        with mock.patch.object(os.path, \u0027exists\u0027) as mock_exists:"},{"line_number":285,"context_line":"            # base dir exists, image exists, template exists, template exists"},{"line_number":286,"context_line":"            mock_exists.side_effect \u003d [True, True, True, True]"},{"line_number":287,"context_line":"            with mock.patch.object(image, \u0027resize_image\u0027) as mock_resize_image:"}],"source_content_type":"text/x-python","patch_set":24,"id":"f8c763ae_77c26a64","line":284,"in_reply_to":"bf773a4c_74afc020","updated":"2024-02-13 07:04:20.000000000","message":"Done","commit_id":"1b04e7394cf59cce19cd9fd9d865de790e8164dd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f2b04a69a459a22a13e19f51c08af3b5d38f21c6","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        image.get_disk_size \u003d mock.Mock(return_value\u003d1024)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":284,"context_line":"        with mock.patch.object(os.path, \u0027exists\u0027) as mock_exists:"},{"line_number":285,"context_line":"            # base dir exists, image exists, template exists, template exists"},{"line_number":286,"context_line":"            mock_exists.side_effect \u003d [True, True, True, True]"},{"line_number":287,"context_line":"            with mock.patch.object(image, \u0027resize_image\u0027) as mock_resize_image:"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf773a4c_74afc020","line":284,"in_reply_to":"f178eb40_b315a791","updated":"2024-02-01 02:16:58.000000000","message":"OK, will do.","commit_id":"1b04e7394cf59cce19cd9fd9d865de790e8164dd"}],"nova/virt/disk/api.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"0612f7da7ba47f9f9ef61680e5a9c3eda6f4e05c","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    cmd \u003d (\u0027qemu-img\u0027, \u0027resize\u0027)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    if encryption:"},{"line_number":131,"context_line":"        with tempfile.NamedTemporaryFile(mode\u003d\u0027tr+\u0027, encoding\u003d\u0027utf-8\u0027) as f:"},{"line_number":132,"context_line":"            # Write out the passphrase secret to a temp file"},{"line_number":133,"context_line":"            f.write(encryption.get(\u0027secret\u0027))"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dd6d4d73_9e1b07a6","line":131,"range":{"start_line":131,"start_character":22,"end_line":131,"end_character":40},"updated":"2023-07-04 15:16:13.000000000","message":"If delete is true (the default), the file is deleted as soon as it is closed.\n Good to know the file will be deleted at the end.","commit_id":"06fc5a309dfd67fbfa7fce9b98df93478abc12a7"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bede905097b4d01233d497519634a076e8eaf8fb","unresolved":true,"context_lines":[{"line_number":11341,"context_line":"            # encryption has been specified."},{"line_number":11342,"context_line":"            disk_info_mapping \u003d None"},{"line_number":11343,"context_line":"            if (block_device_info is not None and"},{"line_number":11344,"context_line":"                    # The basename of the path for lvm does not follow the"},{"line_number":11345,"context_line":"                    # disk_info_mapping format (\u0027\u003cuuid\u003e_disk\u0027 vs \u0027disk\u0027)."},{"line_number":11346,"context_line":"                    CONF.libvirt.images_type !\u003d \u0027lvm\u0027):"},{"line_number":11347,"context_line":"                disk_info_mapping \u003d blockinfo.get_disk_info("},{"line_number":11348,"context_line":"                    CONF.libvirt.virt_type, instance, instance.image_meta,"}],"source_content_type":"text/x-python","patch_set":29,"id":"26e5ca00_7603ee9f","line":11345,"range":{"start_line":11344,"start_character":20,"end_line":11345,"end_character":73},"updated":"2024-02-14 14:21:25.000000000","message":"I think this comment is misplaced and should be one line below.","commit_id":"b05c42fa54430dedb45492ad56f31d119c78b06f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c8f51f31cc52706fd9aa83bb0ddc8a8fb04f894","unresolved":true,"context_lines":[{"line_number":11341,"context_line":"            # encryption has been specified."},{"line_number":11342,"context_line":"            disk_info_mapping \u003d None"},{"line_number":11343,"context_line":"            if (block_device_info is not None and"},{"line_number":11344,"context_line":"                    # The basename of the path for lvm does not follow the"},{"line_number":11345,"context_line":"                    # disk_info_mapping format (\u0027\u003cuuid\u003e_disk\u0027 vs \u0027disk\u0027)."},{"line_number":11346,"context_line":"                    CONF.libvirt.images_type !\u003d \u0027lvm\u0027):"},{"line_number":11347,"context_line":"                disk_info_mapping \u003d blockinfo.get_disk_info("},{"line_number":11348,"context_line":"                    CONF.libvirt.virt_type, instance, instance.image_meta,"}],"source_content_type":"text/x-python","patch_set":29,"id":"fed326a7_8b1edf21","line":11345,"range":{"start_line":11344,"start_character":20,"end_line":11345,"end_character":73},"in_reply_to":"26e5ca00_7603ee9f","updated":"2024-02-14 17:35:07.000000000","message":"I put it here because the comment is specifically about why images_type \u0027lvm\u0027 is being excluded (and nothing to do with what\u0027s inside the conditional) but probably the meaning would be understood either way. I\u0027ll move it in the next respin.","commit_id":"b05c42fa54430dedb45492ad56f31d119c78b06f"}]}
