)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"54b866184ae8b897bd5411bf2418ec5053d1bdba","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"TODO"},{"line_number":14,"context_line":" - Replace hard-coded trait name by os_traits definition"},{"line_number":15,"context_line":" - Add functional tests"},{"line_number":16,"context_line":" - Add release notes"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint libvirt-stateless-firmware"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"675350af_cc726e80","line":15,"updated":"2024-06-17 12:55:46.000000000","message":"can you ensure you include functional tests for the move operations\ni.e. cold/live migration\nit should be fien we just need to ensure the updated xml is correct and those not lose the stateless firmware configuration.\n\nideally it woudl be nice to also enhance tempest to support testing this speratly too but im not sure if the qemu/libvirt version we are suingn are new enought to supprot this so that not a blocker once we have enouch unit/functional coverage","commit_id":"3adc51e4a035160da65cb2fa5f17614d989bfa4d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7ca1adfbacc508ccdf41d7073adf0d3c1f17f421","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"TODO"},{"line_number":14,"context_line":" - Replace hard-coded trait name by os_traits definition"},{"line_number":15,"context_line":" - Add functional tests"},{"line_number":16,"context_line":" - Add release notes"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint libvirt-stateless-firmware"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"cace7d80_3fa8601d","line":15,"in_reply_to":"675350af_cc726e80","updated":"2024-06-24 04:07:08.000000000","message":"I added the cold migration test case but am stuck about live migration one. The core problem is that the fake driver does not allow live migration and I attempted to use different fake drivers but these breaks init_host... I wonder if I can get some suggestion about the way to implement live migration use case or we can skip implementing it for now...","commit_id":"3adc51e4a035160da65cb2fa5f17614d989bfa4d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"TODO"},{"line_number":14,"context_line":" - Replace hard-coded trait name by os_traits definition"},{"line_number":15,"context_line":" - Add functional tests"},{"line_number":16,"context_line":" - Add release notes"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint libvirt-stateless-firmware"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"32896a45_c806f08f","line":15,"in_reply_to":"cace7d80_3fa8601d","updated":"2024-08-20 15:29:55.000000000","message":"Done","commit_id":"3adc51e4a035160da65cb2fa5f17614d989bfa4d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d31c68600d19c382025bffdc9348a23ba918f068","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"a7dfa2ea_51ff49c6","updated":"2024-06-25 15:18:19.000000000","message":"recheck timeout during tempest run. It seems all steps progressed quite slowly.","commit_id":"4b28a7743e5f1c9198cfc08153b46d9e04b7f6e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c8c61e9b8c4ba2cb6b3d07246715ef1fda01bf29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"6a367e1f_9344b2b7","updated":"2024-08-19 14:18:38.000000000","message":"-1 because the libvirt driver trait reporting needs to be moved to this patch\nalso one typo inline\n\notherwise this looks good to me","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9cacd0ded9f8722b343016f2564ce57564c16bd1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"34405636_011cc4c7","updated":"2024-08-19 14:20:28.000000000","message":"Overall looks sensical. I will say, however, that we\u0027ve been trying to make object changes standalone lately to make backports and things easier. This patch is already quite large, so it would sure be nice to see the object stuff separated from the libvirt stuff, if possible. I know that\u0027s maybe not very fun to do after the fact, so I\u0027ll leave it to others to opine.","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"fb53b6a6351fbd07c8a9fa929d5423e13c2dd42c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"d7b1a787_98809022","in_reply_to":"34405636_011cc4c7","updated":"2024-08-20 00:39:28.000000000","message":"I\u0027ve created the separate change for object update and make this change depends on that. Please lmk if I did something wrong.","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a16d3de3cd0be764718414aedd3093ad4ee2bdbc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"165564dc_16ae8831","updated":"2024-08-20 11:36:14.000000000","message":"-1 is because i think we should have more functional tests given we are not requiring tempest to proceed with this.\n\n\nwe shoudl add temepst after we have 24.04 in the gate in general to meet the min libvirt version requireemnt.","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7ba3969148bbea8d4e32c29f9d40ea6dcaa10b6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"e13c0a0b_644a5a9a","updated":"2024-08-29 14:33:35.000000000","message":"I\u0027m cool with having follow-ups requested by Sean. No need to hold that series. Thanks, very nice effort.","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"180512f6d65721d91024f989925312735ecb0cbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"d64f8d50_4c21711f","updated":"2024-09-01 03:36:38.000000000","message":"recheck","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"46613b2d0829db905b927bd6d80ce82f45096ba4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"5c27b14e_1bd58a1a","updated":"2024-08-21 07:14:25.000000000","message":"recheck Kernel panic in guest","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e4505a66e6a8f79c1ff81a696ea6640beb2fb8a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"645814c0_ce6ef42b","updated":"2024-08-21 04:07:26.000000000","message":"recheck no valid host when scheduling a few instances. The reason looks unrelated.","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"175372df1c0175937dbfe7a9f233fd0ae179d7db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"75156792_09c9107d","updated":"2024-08-31 14:38:32.000000000","message":"recheck post failure","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bce01a1a20230ce0f5ffa0cf16d760204dddce92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"1e727fe6_ae0f75df","updated":"2024-08-30 08:18:38.000000000","message":"recheck post failure indicates infra problem","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0f3ca8fa734abb39ab0c06ebe7faff53e0077e88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"5c7f8a12_e7df0f13","updated":"2024-08-30 02:17:39.000000000","message":"recheck the parent failed in gate","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ff9659e55bbabcfa5aafa5d496e744d7ea652412","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"a8c49b94_965b6146","updated":"2024-08-31 08:44:28.000000000","message":"recheck the parent has been merged","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6989edf73060f9d58d91f95e931e1b3eb6c27ac7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"b2ee2c32_81a9db98","updated":"2024-08-29 11:08:23.000000000","message":"you have added the extra test coverage that was missign and overall this does look good to me.\n\nas follow ups it woudl be nice to add test coverage for this either in tempest or via modifying the flavor in nova next but to do either we need to move to 24.04","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"}],"doc/source/user/support-matrix.ini":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c8c61e9b8c4ba2cb6b3d07246715ef1fda01bf29","unresolved":true,"context_lines":[{"line_number":1423,"context_line":"  the boot chain and disables the potential attack serface from hypervisors."},{"line_number":1424,"context_line":"cli\u003dopenstack server create \u003cusual server create parameters\u003e"},{"line_number":1425,"context_line":"driver.libvirt-kvm-x86\u003dpartial"},{"line_number":1426,"context_line":"driver-nodes.libvirt-kvm-x86\u003dThis feature is supported only with UEFI firmware"},{"line_number":1427,"context_line":"driver.libvirt-kvm-aarch64\u003dmissing"},{"line_number":1428,"context_line":"driver.libvirt-kvm-ppc64\u003dmissing"},{"line_number":1429,"context_line":"driver.libvirt-kvm-s390x\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":13,"id":"5d096e7b_052732fe","line":1426,"range":{"start_line":1426,"start_character":7,"end_line":1426,"end_character":12},"updated":"2024-08-19 14:18:38.000000000","message":"notes","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"54cb0c4d143fbfc15be1088291782115608ab8e2","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"  the boot chain and disables the potential attack serface from hypervisors."},{"line_number":1424,"context_line":"cli\u003dopenstack server create \u003cusual server create parameters\u003e"},{"line_number":1425,"context_line":"driver.libvirt-kvm-x86\u003dpartial"},{"line_number":1426,"context_line":"driver-nodes.libvirt-kvm-x86\u003dThis feature is supported only with UEFI firmware"},{"line_number":1427,"context_line":"driver.libvirt-kvm-aarch64\u003dmissing"},{"line_number":1428,"context_line":"driver.libvirt-kvm-ppc64\u003dmissing"},{"line_number":1429,"context_line":"driver.libvirt-kvm-s390x\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":13,"id":"fdb11fb8_d1861977","line":1426,"range":{"start_line":1426,"start_character":7,"end_line":1426,"end_character":12},"in_reply_to":"5d096e7b_052732fe","updated":"2024-08-20 00:38:24.000000000","message":"Done","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7ba3969148bbea8d4e32c29f9d40ea6dcaa10b6b","unresolved":false,"context_lines":[{"line_number":1433,"context_line":"driver.ironic\u003dmissing"},{"line_number":1434,"context_line":"driver.libvirt-vz-vm\u003dmissing"},{"line_number":1435,"context_line":"driver.libvirt-vz-ct\u003dmissing"},{"line_number":1436,"context_line":"driver.zvm\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":19,"id":"55798f15_03187445","line":1436,"updated":"2024-08-29 14:33:35.000000000","message":"\\o/","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"}],"nova/tests/functional/libvirt/test_stateless_firmware.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a16d3de3cd0be764718414aedd3093ad4ee2bdbc","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        with mock.patch("},{"line_number":123,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":124,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":125,"context_line":"        ):"},{"line_number":126,"context_line":"            # cold migrate the server"},{"line_number":127,"context_line":"            self._migrate_server(server)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"e1736dc9_acde9b5d","line":125,"updated":"2024-08-20 11:36:14.000000000","message":"we should proably stop cargo culting this around\n\nbut it does work.\n\ni think we have a mixin for this somewhere but we copy this in lots of places within test_numa_servers.py so we shoudl proably just clean it up seperatly\n\none more time here wont make that worse.","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        with mock.patch("},{"line_number":123,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":124,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":125,"context_line":"        ):"},{"line_number":126,"context_line":"            # cold migrate the server"},{"line_number":127,"context_line":"            self._migrate_server(server)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ffb3f816_d46c618c","line":125,"in_reply_to":"b821c18a_0fdd4d30","updated":"2024-08-20 15:29:55.000000000","message":"yep its fine we proably should jsut put that into a helper function that returns the context manager in integraged_helpers","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ad625101f5ba756857ae97c3fe7c4d1ce61c7893","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        with mock.patch("},{"line_number":123,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":124,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":125,"context_line":"        ):"},{"line_number":126,"context_line":"            # cold migrate the server"},{"line_number":127,"context_line":"            self._migrate_server(server)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"b821c18a_0fdd4d30","line":125,"in_reply_to":"e1736dc9_acde9b5d","updated":"2024-08-20 14:09:20.000000000","message":"just fyi I copied this from functional tests for VTPM so there are a few more test files using this pattern. I\u0027ll check if I can reduce the duplication in follow-up.","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a16d3de3cd0be764718414aedd3093ad4ee2bdbc","unresolved":true,"context_lines":[{"line_number":124,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":125,"context_line":"        ):"},{"line_number":126,"context_line":"            # cold migrate the server"},{"line_number":127,"context_line":"            self._migrate_server(server)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"897c28fb_6e7f70c9","line":127,"updated":"2024-08-20 11:36:14.000000000","message":"why are you only testing cold migrate?\n\nif you think move operation testing is required then you should test all of them.\ncold migrate is the least likely to fail.\n\nhttps://github.com/openstack/nova/blob/0b091179d575a5e7cff9cd76223a8016cfbbc019/nova/tests/functional/libvirt/base.py#L264-L287 allows live migraation to work.\n\ncan you add live migrate, shelve, rescue and evacuate.\nsuspend might be worth testign too.\n\ni dont think we care about volume/interface attach/detach but we likely shoudl also test rebuilding to/form images with/without stateless firmware.","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":true,"context_lines":[{"line_number":124,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":125,"context_line":"        ):"},{"line_number":126,"context_line":"            # cold migrate the server"},{"line_number":127,"context_line":"            self._migrate_server(server)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"fad50c98_106ee477","line":127,"in_reply_to":"658757c4_98f5aa76","updated":"2024-08-20 15:29:55.000000000","message":"rebuild is now fixed in this version.\n\nthis is ok but techinally this is just testing to the resize verify point\n\nhttps://github.com/openstack/nova/blob/0b091179d575a5e7cff9cd76223a8016cfbbc019/nova/tests/functional/integrated_helpers.py#L570-L592\n\nto test this fully we shoudl have two tests\none that confirms the migration and a second that reverts it.","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ae3922ca7ec065ae4c56ea52acc84bb07fd3c721","unresolved":true,"context_lines":[{"line_number":124,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":125,"context_line":"        ):"},{"line_number":126,"context_line":"            # cold migrate the server"},{"line_number":127,"context_line":"            self._migrate_server(server)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"658757c4_98f5aa76","line":127,"in_reply_to":"897c28fb_6e7f70c9","updated":"2024-08-20 13:28:11.000000000","message":"I added functional tests for move operations but am still facing a few problems.\n\n* Rebuild is consistently failing but I\u0027ve not yet found what is the actual problem... It\u0027d be nice if anyone can suggest what I should update...\n\n* The current fake implementation does not simulate loader options in libvirt so it\u0027s not possible to assert loader options in destination xml passed during live migrate. Because fixing this requires huge work, I\u0027m afraid, I hope I\u0027m allowed to leave it for now.","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6580c1f57c19775fc19e394d6925121cf4a36a97","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":125,"context_line":"        ):"},{"line_number":126,"context_line":"            # cold migrate the server"},{"line_number":127,"context_line":"            self._migrate_server(server)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"c057d418_dcf8f6ac","line":127,"in_reply_to":"fad50c98_106ee477","updated":"2024-08-21 01:52:33.000000000","message":"Done","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        self.guest_configs \u003d {}"},{"line_number":53,"context_line":"        orig_get_config \u003d self.computes[\u0027compute1\u0027].driver._get_guest_config"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        def _get_guest_config(_self, *args, **kwargs):"},{"line_number":56,"context_line":"            guest_config \u003d orig_get_config(*args, **kwargs)"},{"line_number":57,"context_line":"            instance \u003d args[0]"},{"line_number":58,"context_line":"            self.guest_configs[instance.uuid] \u003d guest_config"},{"line_number":59,"context_line":"            return self.guest_configs[instance.uuid]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":62,"context_line":"            \u0027nova.virt.libvirt.LibvirtDriver._get_guest_config\u0027,"},{"line_number":63,"context_line":"            _get_guest_config))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        # disk.rescue image_create ignoring privsep"},{"line_number":66,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":18,"id":"ef89e555_baefb49a","line":63,"range":{"start_line":55,"start_character":8,"end_line":63,"end_character":31},"updated":"2024-08-20 15:29:55.000000000","message":"why are you hooking this instead of \n\n_get_guest_xml is it to use the objects for the asserts?","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7ba3969148bbea8d4e32c29f9d40ea6dcaa10b6b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.guest_configs \u003d {}"},{"line_number":53,"context_line":"        orig_get_config \u003d self.computes[\u0027compute1\u0027].driver._get_guest_config"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        def _get_guest_config(_self, *args, **kwargs):"},{"line_number":56,"context_line":"            guest_config \u003d orig_get_config(*args, **kwargs)"},{"line_number":57,"context_line":"            instance \u003d args[0]"},{"line_number":58,"context_line":"            self.guest_configs[instance.uuid] \u003d guest_config"},{"line_number":59,"context_line":"            return self.guest_configs[instance.uuid]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":62,"context_line":"            \u0027nova.virt.libvirt.LibvirtDriver._get_guest_config\u0027,"},{"line_number":63,"context_line":"            _get_guest_config))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        # disk.rescue image_create ignoring privsep"},{"line_number":66,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":18,"id":"7d841aef_789cf01f","line":63,"range":{"start_line":55,"start_character":8,"end_line":63,"end_character":31},"in_reply_to":"afd768ef_460ab578","updated":"2024-08-29 14:33:35.000000000","message":"I\u0027m fine with the current state, we could change this later.","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6580c1f57c19775fc19e394d6925121cf4a36a97","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        self.guest_configs \u003d {}"},{"line_number":53,"context_line":"        orig_get_config \u003d self.computes[\u0027compute1\u0027].driver._get_guest_config"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        def _get_guest_config(_self, *args, **kwargs):"},{"line_number":56,"context_line":"            guest_config \u003d orig_get_config(*args, **kwargs)"},{"line_number":57,"context_line":"            instance \u003d args[0]"},{"line_number":58,"context_line":"            self.guest_configs[instance.uuid] \u003d guest_config"},{"line_number":59,"context_line":"            return self.guest_configs[instance.uuid]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":62,"context_line":"            \u0027nova.virt.libvirt.LibvirtDriver._get_guest_config\u0027,"},{"line_number":63,"context_line":"            _get_guest_config))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        # disk.rescue image_create ignoring privsep"},{"line_number":66,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":18,"id":"afd768ef_460ab578","line":63,"range":{"start_line":55,"start_character":8,"end_line":63,"end_character":31},"in_reply_to":"ef89e555_baefb49a","updated":"2024-08-21 01:52:33.000000000","message":"I borrowed this from the vtpm test. I can patch _get_guest_xml instead if that is preferred.","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        self.dest_stateless \u003d None"},{"line_number":141,"context_line":"        self._live_migrate(self.server)"},{"line_number":142,"context_line":"        # TODO(tkajinam): We have to extend the fixture to reflect loader"},{"line_number":143,"context_line":"        #                 options into xml for more detailed assertions"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def test_migrate_server(self):"},{"line_number":146,"context_line":"        self._start_compute(\u0027compute2\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"8e5810df_e4b2baec","line":143,"updated":"2024-08-20 15:29:55.000000000","message":"the live migration code updates the orginal xml so if the fixuter is setting the stateless firmware when teh vm is created the live migration xml should still have it.\n\nyou likely just need to wrap\n\nget_updated_guest_xml https://opendev.org/openstack/nova/src/commit/0b091179d575a5e7cff9cd76223a8016cfbbc019/nova/virt/libvirt/migration.py#L56\n\nthe same way as you have wrapped \n\n\u0027nova.virt.libvirt.LibvirtDriver._get_guest_config\u0027\n\nyou can also jsut do it locally here via a with steatement and a local function\nkind of like this.\n\n    \n    def test_live_migrate_server(self):\n        migration_xml\u003dNone\n        orig_get_updated_guest_xml \u003d nova....\n        def migration_xml_wrapper(*args, **kwargs):\n           migration_xml \u003d orig_get_updated_guest_xml(*args, **kwargs)\n           retrun migration_xml\n        with mock.patch(\"...\", side_effect\u003dmigration_xml_wrapper):\n           self._live_migrate(server)\n        \n        self.assertIn(\"stateless\u003dTrue\",migration_xml)","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6580c1f57c19775fc19e394d6925121cf4a36a97","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        self.dest_stateless \u003d None"},{"line_number":141,"context_line":"        self._live_migrate(self.server)"},{"line_number":142,"context_line":"        # TODO(tkajinam): We have to extend the fixture to reflect loader"},{"line_number":143,"context_line":"        #                 options into xml for more detailed assertions"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def test_migrate_server(self):"},{"line_number":146,"context_line":"        self._start_compute(\u0027compute2\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"16469cc8_791de028","line":143,"in_reply_to":"8e5810df_e4b2baec","updated":"2024-08-21 01:52:33.000000000","message":"That makes sense. I\u0027ve adjusted the suggested change. I had to modify the fake driver code to reflect the loader option but I limited the change to minimum (technically we have more options set in xml to use UEFI but that\u0027s out of the scope of this change).","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":true,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # shelve the server"},{"line_number":169,"context_line":"        server \u003d self._shelve_server(server)"},{"line_number":170,"context_line":"        self.assertIsNone(server[\u0027OS-EXT-SRV-ATTR:hypervisor_hostname\u0027])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # uneshelve the server. the server is started at the same compute"},{"line_number":173,"context_line":"        server \u003d self._unshelve_server(server)"}],"source_content_type":"text/x-python","patch_set":18,"id":"4abb735c_7eb51236","line":170,"updated":"2024-08-20 15:29:55.000000000","message":"nit: techinially _shelve_server is already waiting for it to be shelve_oofloaded and ensuring that host is empty\n\nwe can also assert hypervior_hostname but this is not really needed\n\nhttps://github.com/openstack/nova/blob/0b091179d575a5e7cff9cd76223a8016cfbbc019/nova/tests/functional/integrated_helpers.py#L623-L629","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6580c1f57c19775fc19e394d6925121cf4a36a97","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # shelve the server"},{"line_number":169,"context_line":"        server \u003d self._shelve_server(server)"},{"line_number":170,"context_line":"        self.assertIsNone(server[\u0027OS-EXT-SRV-ATTR:hypervisor_hostname\u0027])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # uneshelve the server. the server is started at the same compute"},{"line_number":173,"context_line":"        server \u003d self._unshelve_server(server)"}],"source_content_type":"text/x-python","patch_set":18,"id":"8c4e315d_f48a3ee5","line":170,"in_reply_to":"4abb735c_7eb51236","updated":"2024-08-21 01:52:33.000000000","message":"Done","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":true,"context_lines":[{"line_number":172,"context_line":"        # uneshelve the server. the server is started at the same compute"},{"line_number":173,"context_line":"        server \u003d self._unshelve_server(server)"},{"line_number":174,"context_line":"        self.assertEqual("},{"line_number":175,"context_line":"            \u0027compute1\u0027, server[\u0027OS-EXT-SRV-ATTR:hypervisor_hostname\u0027])"},{"line_number":176,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def test_shelve_and_unshelve_to_different_host(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"fe7f287f_d0c9a0bc","line":175,"updated":"2024-08-20 15:29:55.000000000","message":"here it does make sense to check since you ar trying to verify its the same host","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6580c1f57c19775fc19e394d6925121cf4a36a97","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        # uneshelve the server. the server is started at the same compute"},{"line_number":173,"context_line":"        server \u003d self._unshelve_server(server)"},{"line_number":174,"context_line":"        self.assertEqual("},{"line_number":175,"context_line":"            \u0027compute1\u0027, server[\u0027OS-EXT-SRV-ATTR:hypervisor_hostname\u0027])"},{"line_number":176,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def test_shelve_and_unshelve_to_different_host(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"56c7aa71_469d77e9","line":175,"in_reply_to":"fe7f287f_d0c9a0bc","updated":"2024-08-21 01:52:33.000000000","message":"Done","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":true,"context_lines":[{"line_number":196,"context_line":"        server \u003d self._unshelve_server(server)"},{"line_number":197,"context_line":"        self.assertEqual("},{"line_number":198,"context_line":"            \u0027compute2\u0027, server[\u0027OS-EXT-SRV-ATTR:hypervisor_hostname\u0027])"},{"line_number":199,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def test_evacuate_server(self):"},{"line_number":202,"context_line":"        # create a server with stateless firmware"}],"source_content_type":"text/x-python","patch_set":18,"id":"37abdd2f_a53abd8d","line":199,"updated":"2024-08-20 15:29:55.000000000","message":"ack\n\nthis really wont add much coverage over the other shelve test but its fine to assert this.","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":true,"context_lines":[{"line_number":231,"context_line":"        })"},{"line_number":232,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027RESCUE\u0027)"},{"line_number":233,"context_line":"        # TODO(tkajinam): Rescue does not call  _get_guest_config so we can\u0027t"},{"line_number":234,"context_line":"        #                 assert the xml here"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {"},{"line_number":237,"context_line":"            \"unrescue\": None"}],"source_content_type":"text/x-python","patch_set":18,"id":"1eed48ba_93f933d8","line":234,"updated":"2024-08-20 15:29:55.000000000","message":"im surpsised by that are you sure?\nit takes rescue as a flag\n\n https://opendev.org/openstack/nova/src/commit/0b091179d575a5e7cff9cd76223a8016cfbbc019/nova/virt/libvirt/driver.py#L7331\n\n def _get_guest_config(self, instance, network_info, image_meta,\n                          disk_info, rescue\u003dNone, block_device_info\u003dNone,\n                          context\u003dNone, mdevs\u003dNone, accel_info\u003dNone):\n        \"\"\"Get config data for parameters.\n\n        :param rescue: optional dictionary that should contain the key\n            \u0027ramdisk_id\u0027 if a ramdisk is needed for the rescue image and\n            \u0027kernel_id\u0027 if a kernel is needed for the rescue image.\n\n        :param mdevs: optional list of mediated devices to assign to the guest.\n        :param accel_info: optional list of accelerator requests (ARQs)\n        \"\"\"\n\nso it really should be called\n\nand it looks like its called in _get_guest_xml\n\n\nhttps://opendev.org/openstack/nova/src/branch/master/nova/virt/libvirt/driver.py#L7878-L7904\n\nwhich is called here during rescue\n\nhttps://opendev.org/openstack/nova/src/branch/master/nova/virt/libvirt/driver.py#L4513-L4516\n\nyou should be able ot readd the assert for rescue but not unrescue","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6580c1f57c19775fc19e394d6925121cf4a36a97","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        })"},{"line_number":232,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027RESCUE\u0027)"},{"line_number":233,"context_line":"        # TODO(tkajinam): Rescue does not call  _get_guest_config so we can\u0027t"},{"line_number":234,"context_line":"        #                 assert the xml here"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {"},{"line_number":237,"context_line":"            \"unrescue\": None"}],"source_content_type":"text/x-python","patch_set":18,"id":"76e17bf3_6156ab2d","line":234,"in_reply_to":"1eed48ba_93f933d8","updated":"2024-08-21 01:52:33.000000000","message":"Done","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc86251651ba619781ba987c730eb8ad77f11d9d","unresolved":true,"context_lines":[{"line_number":238,"context_line":"        })"},{"line_number":239,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":240,"context_line":"        # TODO(tkajinam): Unrescue does not call  _get_guest_config but restore"},{"line_number":241,"context_line":"        #                 the old xml file, so we can\u0027t assert the xml here"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_rebuild_server(self):"},{"line_number":244,"context_line":"        # create a server without stateless firmware"}],"source_content_type":"text/x-python","patch_set":18,"id":"7ef74278_01d5031c","line":241,"updated":"2024-08-20 15:29:55.000000000","message":"unrescue does not because we just restore the old domain xml that we stash before rescudign the guest","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6580c1f57c19775fc19e394d6925121cf4a36a97","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        })"},{"line_number":239,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":240,"context_line":"        # TODO(tkajinam): Unrescue does not call  _get_guest_config but restore"},{"line_number":241,"context_line":"        #                 the old xml file, so we can\u0027t assert the xml here"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_rebuild_server(self):"},{"line_number":244,"context_line":"        # create a server without stateless firmware"}],"source_content_type":"text/x-python","patch_set":18,"id":"a6491640_b00c3e82","line":241,"in_reply_to":"7ef74278_01d5031c","updated":"2024-08-21 01:52:33.000000000","message":"Done","commit_id":"8e85d90e940836359c0b6c07eb42286b9272f581"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6989edf73060f9d58d91f95e931e1b3eb6c27ac7","unresolved":true,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        fake_get_updated_guest_xml.assert_called_once()"},{"line_number":156,"context_line":"        server \u003d etree.fromstring(self.migration_xml)"},{"line_number":157,"context_line":"        self.assertEqual(\u0027yes\u0027, server.find(\u0027./os/loader\u0027).get(\u0027stateless\u0027))"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_migrate_server(self):"},{"line_number":160,"context_line":"        self._start_compute(\u0027compute2\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ec56ea1e_42c35836","line":157,"updated":"2024-08-29 11:08:23.000000000","message":"+1","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7ba3969148bbea8d4e32c29f9d40ea6dcaa10b6b","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        fake_get_updated_guest_xml.assert_called_once()"},{"line_number":156,"context_line":"        server \u003d etree.fromstring(self.migration_xml)"},{"line_number":157,"context_line":"        self.assertEqual(\u0027yes\u0027, server.find(\u0027./os/loader\u0027).get(\u0027stateless\u0027))"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_migrate_server(self):"},{"line_number":160,"context_line":"        self._start_compute(\u0027compute2\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7874d152_9c4d2987","line":157,"in_reply_to":"ec56ea1e_42c35836","updated":"2024-08-29 14:33:35.000000000","message":"Acknowledged","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6989edf73060f9d58d91f95e931e1b3eb6c27ac7","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        server \u003d self._create_server_with_stateless_firmware()"},{"line_number":258,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {"},{"line_number":261,"context_line":"            \"rescue\": {"},{"line_number":262,"context_line":"                \"rescue_image_ref\": self.glance.image1[\u0027id\u0027]"},{"line_number":263,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":19,"id":"86e95223_418d76a4","line":260,"updated":"2024-08-29 11:08:23.000000000","message":"i bellive we already have _rescue and _unrescure helper function but given the time to code freeze im find with fixing this in a followup","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7ba3969148bbea8d4e32c29f9d40ea6dcaa10b6b","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        server \u003d self._create_server_with_stateless_firmware()"},{"line_number":258,"context_line":"        self._assert_server_has_stateless_firmware(server[\u0027id\u0027])"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {"},{"line_number":261,"context_line":"            \"rescue\": {"},{"line_number":262,"context_line":"                \"rescue_image_ref\": self.glance.image1[\u0027id\u0027]"},{"line_number":263,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":19,"id":"8ea85313_6166a833","line":260,"in_reply_to":"86e95223_418d76a4","updated":"2024-08-29 14:33:35.000000000","message":"Acknowledged","commit_id":"3169e7cebd1c0da6572ab593f07837e0d8efd582"}],"nova/tests/unit/scheduler/test_utils.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9cacd0ded9f8722b343016f2564ce57564c16bd1","unresolved":true,"context_lines":[{"line_number":1289,"context_line":"        rr \u003d utils.ResourceRequest.from_request_spec(rs)"},{"line_number":1290,"context_line":"        self.assertResourceRequestsEqual(expected, rr)"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"    def test_resource_request_from_request_spec_with_statless_firmware(self):"},{"line_number":1293,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":1294,"context_line":"            vcpus\u003d1, memory_mb\u003d1024, root_gb\u003d10, ephemeral_gb\u003d5, swap\u003d0,"},{"line_number":1295,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":13,"id":"c0538d17_472caf4c","line":1292,"range":{"start_line":1292,"start_character":52,"end_line":1292,"end_character":61},"updated":"2024-08-19 14:20:28.000000000","message":"\"stateless\" is misspelled","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"54cb0c4d143fbfc15be1088291782115608ab8e2","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"        rr \u003d utils.ResourceRequest.from_request_spec(rs)"},{"line_number":1290,"context_line":"        self.assertResourceRequestsEqual(expected, rr)"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"    def test_resource_request_from_request_spec_with_statless_firmware(self):"},{"line_number":1293,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":1294,"context_line":"            vcpus\u003d1, memory_mb\u003d1024, root_gb\u003d10, ephemeral_gb\u003d5, swap\u003d0,"},{"line_number":1295,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":13,"id":"cb76d919_8895c7ce","line":1292,"range":{"start_line":1292,"start_character":52,"end_line":1292,"end_character":61},"in_reply_to":"c0538d17_472caf4c","updated":"2024-08-20 00:38:24.000000000","message":"Done","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c8c61e9b8c4ba2cb6b3d07246715ef1fda01bf29","unresolved":true,"context_lines":[{"line_number":6030,"context_line":"        (False, None, False),"},{"line_number":6031,"context_line":"        # fail: non-uefi with stateless fiemware"},{"line_number":6032,"context_line":"        (True, None, exception.Invalid),"},{"line_number":6033,"context_line":"    )"},{"line_number":6034,"context_line":"    def test_get_stateless_firmware_constraint("},{"line_number":6035,"context_line":"        self, firmware_stateless, firmware_type, expected,"},{"line_number":6036,"context_line":"    ):"}],"source_content_type":"text/x-python","patch_set":13,"id":"9fda6c04_12aefd1d","line":6033,"updated":"2024-08-19 14:18:38.000000000","message":"+1","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9cacd0ded9f8722b343016f2564ce57564c16bd1","unresolved":true,"context_lines":[{"line_number":6967,"context_line":""},{"line_number":6968,"context_line":"                os_secure_boot \u003d hardware.get_secure_boot_constraint("},{"line_number":6969,"context_line":"                    flavor, image_meta)"},{"line_number":6970,"context_line":""},{"line_number":6971,"context_line":"                if os_secure_boot \u003d\u003d \u0027required\u0027:"},{"line_number":6972,"context_line":"                    # hard fail if we don\u0027t support secure boot and it\u0027s"},{"line_number":6973,"context_line":"                    # required"}],"source_content_type":"text/x-python","patch_set":13,"id":"26a08bb1_559bcd74","line":6970,"updated":"2024-08-19 14:20:28.000000000","message":"Random whitespace damage","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"54cb0c4d143fbfc15be1088291782115608ab8e2","unresolved":false,"context_lines":[{"line_number":6967,"context_line":""},{"line_number":6968,"context_line":"                os_secure_boot \u003d hardware.get_secure_boot_constraint("},{"line_number":6969,"context_line":"                    flavor, image_meta)"},{"line_number":6970,"context_line":""},{"line_number":6971,"context_line":"                if os_secure_boot \u003d\u003d \u0027required\u0027:"},{"line_number":6972,"context_line":"                    # hard fail if we don\u0027t support secure boot and it\u0027s"},{"line_number":6973,"context_line":"                    # required"}],"source_content_type":"text/x-python","patch_set":13,"id":"a0778354_24904e24","line":6970,"in_reply_to":"26a08bb1_559bcd74","updated":"2024-08-20 00:38:24.000000000","message":"Done","commit_id":"6000a0b8305ac7b141873bf18de94cb7b34b17d4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a16d3de3cd0be764718414aedd3093ad4ee2bdbc","unresolved":true,"context_lines":[{"line_number":909,"context_line":"        )"},{"line_number":910,"context_line":"        self.capabilities.update({"},{"line_number":911,"context_line":"            \u0027supports_stateless_firmware\u0027: supports_stateless_firmware,"},{"line_number":912,"context_line":"        })"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def _register_all_undefined_instance_details(self) -\u003e None:"},{"line_number":915,"context_line":"        \"\"\"Register the default image properties of instances on this host"}],"source_content_type":"text/x-python","patch_set":14,"id":"4f7fea94_585ecd47","line":912,"updated":"2024-08-20 11:36:14.000000000","message":"im fine with the version check but can we check this via domcaps?\n\nif we can that would be preferable.","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ae3922ca7ec065ae4c56ea52acc84bb07fd3c721","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        )"},{"line_number":910,"context_line":"        self.capabilities.update({"},{"line_number":911,"context_line":"            \u0027supports_stateless_firmware\u0027: supports_stateless_firmware,"},{"line_number":912,"context_line":"        })"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def _register_all_undefined_instance_details(self) -\u003e None:"},{"line_number":915,"context_line":"        \"\"\"Register the default image properties of instances on this host"}],"source_content_type":"text/x-python","patch_set":14,"id":"9415940a_a399bdc4","line":912,"in_reply_to":"4f7fea94_585ecd47","updated":"2024-08-20 13:28:11.000000000","message":"Current libvirt does not present support for stateless firmware in domain capabilities (I guess it is because the feature has been available in QEMU and does not have additional requirements like kernel support).","commit_id":"a129ae0768e635dc90f56c44ea43f69e6fd9792d"}]}
