)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"a65c979a07fba9433c9e9249f2e52de59e5c69f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"33b05450_bb5d740c","updated":"2022-09-21 16:04:35.000000000","message":"minor nit.","commit_id":"ded0a7a107f80076077dc3182cc705705af1b8f1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"69401d5ed4b65110d59ac8599eac210d63cae30f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"c7e1049e_6ac1307d","updated":"2022-10-19 11:48:51.000000000","message":"-1 is im not sure the current process of setting the target state after is correct as we also need to be able to start the vm if it was originally powered off.\n\nalso -1 since spec is not approved yet","commit_id":"18f004380fe230528b866675303e62a311326014"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a0343f3fd1be28e076d17811e553b290922cd3f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b393e9f3_e82c87b9","in_reply_to":"51597e9f_be8c125f","updated":"2022-10-24 10:07:51.000000000","message":"No my mistake, if the VM zas stopped, default behavior will keep it stopped, BUT using targetState\u003dactive will start it.","commit_id":"18f004380fe230528b866675303e62a311326014"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8ccc7a5a2c14800c30683d584002c83e5ad46059","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"51597e9f_be8c125f","in_reply_to":"c7e1049e_6ac1307d","updated":"2022-10-19 15:33:58.000000000","message":"\u003e -1 is im not sure the current process of setting the target state after is correct as we also need to be able to start the vm if it was originally powered off\n\nI think we are good for that point. If the VM was stopped on source, the default behavior and target_state\u003dactive behavior will result that the VM will be started on destination host as by default the driver start the VM.","commit_id":"18f004380fe230528b866675303e62a311326014"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f094371acaac821decb7d004da18a32db969c74f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"c3725791_8cd2baf2","updated":"2022-11-22 07:08:53.000000000","message":"recheck unrelated","commit_id":"8b685a8efb80d77ddf25168909c49344975c8083"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f8e0600e3c35a81d2d10a2b9e0b0421239a41b65","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"fd4e2233_750eba66","updated":"2022-11-28 11:20:43.000000000","message":"recheck","commit_id":"e106d18ec719286a84439e03bd87ecf030510501"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a73a9b93f7694fccdd2fb57fd1c5286bda4ec4db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"3d7556d8_677d3b65","updated":"2022-11-29 11:04:30.000000000","message":"recheck unrelated","commit_id":"e106d18ec719286a84439e03bd87ecf030510501"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"97a60e1fc5a66e26a2ba0dc7f6cbdd4212110aae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"6ea65bae_4511cffa","updated":"2022-11-29 07:44:48.000000000","message":"recheck unrelated","commit_id":"e106d18ec719286a84439e03bd87ecf030510501"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f3a4760fa472ce17e6ec88089507ca720c81b08e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"7d9ec713_566d0c99","updated":"2022-11-25 09:35:46.000000000","message":"recheck unrelated","commit_id":"e106d18ec719286a84439e03bd87ecf030510501"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6089ccc91513bb30432978720f358cae876c36ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"6d03a737_6c502131","updated":"2022-12-14 11:15:57.000000000","message":"recheck timeout","commit_id":"02c54d99e50a49b741f218a80d909531f23a6097"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"182567f3e68c4efa3dca2a9ef13b6cdcda12e186","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"a1114d08_1a609ce1","updated":"2023-01-02 14:01:23.000000000","message":"recheck timeout","commit_id":"d4fe2fc3748a6395ec332f959047c80fdc82259f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5044aa29b86235d2d9660d463fb08e75ae1cde17","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"0a46a7c2_663ae635","updated":"2023-01-13 17:00:43.000000000","message":"recheck unrelated nova.tests.functional.libvirt.test_pci_sriov_servers.PCIServersWithSRIOVAffinityPoliciesTest","commit_id":"3c3a8f84e21b61a1feec244e11c18b004096d922"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"44975025b3945829a0dd359dcfd65df1fbc91129","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"1c597e18_8b5af06b","updated":"2023-01-18 05:58:22.000000000","message":"ill come back to this when i review the followup but overall this looks ok","commit_id":"ed88d1e3f56b811fcc627c8297f53e1abb524fbf"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1b238926059b2cb584b4c70a7a64be4dfa3f0b4a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"eca15fa2_7bc96087","updated":"2023-01-16 13:51:23.000000000","message":"recheck unrelated","commit_id":"ed88d1e3f56b811fcc627c8297f53e1abb524fbf"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7c28bbf315e2352b6cbc8315f271ece6fb7f5cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"d0ac944d_403f2818","in_reply_to":"1c597e18_8b5af06b","updated":"2023-01-23 11:17:39.000000000","message":"Thank you Sean! I had to fix the microversion from 2.94 to 2.95 for the next one. I will let you know if everytinhg is right","commit_id":"ed88d1e3f56b811fcc627c8297f53e1abb524fbf"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"bb48b4372c92fffa0ce2a8d199762b8629e2660a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"e14f15e1_30283105","updated":"2023-01-23 14:09:14.000000000","message":"recheck unrelated ceph ci","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b40e0f76775f260959cdad4c2481b6c8aa5ab6ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"dbec3bed_05662b1e","updated":"2023-01-23 16:18:16.000000000","message":"recheck unrelated test_volume_backed_live_migration[id-5071cf17-3004-4257-ae61-73a84e28badd,volume]","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"234bce7819afd2bd9db58856967457a6a7c989ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"092065e9_697ed663","updated":"2023-01-25 16:59:43.000000000","message":"sorry, but I have to ask you to respin your patch for adding the two negative RPC tests that miss to check the exception","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1922df4d2d0a143476d8e700f59b0fd5adb9db0c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"d8ddc82e_a8d5fa6e","updated":"2023-01-25 17:24:32.000000000","message":"sylvain has some valid poitn about not testing the negitive path in unit tests so droping +2\n\n","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"88bc8a9f026f6c449543340af322f365f27181b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"fc8b2342_9fab5cad","updated":"2023-01-25 17:20:26.000000000","message":"the -1 remains here for the missing testcase on the exception handling.","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a88ede4bd18f24f094c0b6fb53bad920e88d401f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"ba8f31dd_bcdfda30","updated":"2023-01-24 10:47:36.000000000","message":"upgrading to +2 now based on the follow up patch review.\n\nthere is a lisght isssue with the test in the followup but its a simple fix so once that is adress this should be feature complete and good to proceed","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f2688f8bbc0eac90e7ead25c6e99addf72e00d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"e1b414ae_97ab1c02","updated":"2023-01-26 16:56:34.000000000","message":"-1 just because of the wrong conductor unittest you wrote which makes the job failing.","commit_id":"a2036aec4ce15a5fd82a016cdf7d68c37a598e99"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"cfef9449856e3795f9eccf6abf34566ce558fad8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"2ba25977_ab18aa63","updated":"2023-01-30 15:21:37.000000000","message":"Eventually, I\u0027m all good. Thanks for having hardly worked on it !","commit_id":"7ab1748cc1e3ae3b743e7f5fcbfcffc7d94b860f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"48b0d74c38c0ce194d913bd7633988af66e7aa73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"90e2ce62_e4a0cdb0","updated":"2023-02-01 09:54:25.000000000","message":"LGTM, the only difference was coming from the rebase.","commit_id":"8c2e76598995f0d417653c60a63ea342baf4e880"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0239a01902a2b5d8a33f37476b741dc1d0dd16a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"6eab42d5_09e95d2f","updated":"2023-01-31 13:15:31.000000000","message":"sylvains comments in 28 have been adressed and you have now rebased this to take account of the compute service bump added by the stable compute uuid series.\n\notherwise this is unchanged from my last review so readding +2","commit_id":"8c2e76598995f0d417653c60a63ea342baf4e880"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"95bcd1998570ed97c4efc2349d29da86d0bba559","unresolved":true,"context_lines":[{"line_number":5642,"context_line":"            if target_state not in vm_states.ALLOW_TARGET_STATE:"},{"line_number":5643,"context_line":"                raise exception.InstanceEvacuateNotSupportedTargetState("},{"line_number":5644,"context_line":"                    target_state\u003dtarget_state)"},{"line_number":5645,"context_line":"            instance.vm_state \u003d target_state"},{"line_number":5646,"context_line":""},{"line_number":5647,"context_line":"        instance.task_state \u003d task_states.REBUILDING"},{"line_number":5648,"context_line":"        instance.save(expected_task_state\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2ec3ee10_d90848bf","line":5645,"updated":"2022-10-04 11:46:06.000000000","message":"i dont think we can modify this here as we dont want this to be saved if the evaucate fails.\n\nit also resulsts in teh db havign the wrong info for a time as the target state and current sate is not generally going to be the same\n\nwe need to pass this target state to self.compute_task_api.rebuild_instance\n\nyou are currnt addign a shaddow rpc as dan smith would call it by updatring the state in the db instead of passing the parmater to the rpc call.","commit_id":"a4cb0791dc36e9060e4212cd49051ea88aeff0de"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"27ed5e11eafbbff3d0740028eccb4502422164bf","unresolved":false,"context_lines":[{"line_number":5642,"context_line":"            if target_state not in vm_states.ALLOW_TARGET_STATE:"},{"line_number":5643,"context_line":"                raise exception.InstanceEvacuateNotSupportedTargetState("},{"line_number":5644,"context_line":"                    target_state\u003dtarget_state)"},{"line_number":5645,"context_line":"            instance.vm_state \u003d target_state"},{"line_number":5646,"context_line":""},{"line_number":5647,"context_line":"        instance.task_state \u003d task_states.REBUILDING"},{"line_number":5648,"context_line":"        instance.save(expected_task_state\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"0dca2482_fb12e33a","line":5645,"in_reply_to":"2ec3ee10_d90848bf","updated":"2022-10-04 14:37:19.000000000","message":"Yes that makes sense. I\u0027m currently working on it, I will also update the spec to refer your point. Thank you.","commit_id":"a4cb0791dc36e9060e4212cd49051ea88aeff0de"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"69401d5ed4b65110d59ac8599eac210d63cae30f","unresolved":true,"context_lines":[{"line_number":3988,"context_line":"            evacuate\u003devacuate,"},{"line_number":3989,"context_line":"            accel_uuids\u003daccel_uuids,"},{"line_number":3990,"context_line":"            reimage_boot_volume\u003dreimage_boot_volume)"},{"line_number":3991,"context_line":"        try:"},{"line_number":3992,"context_line":"            with instance.mutated_migration_context():"},{"line_number":3993,"context_line":"                self.driver.rebuild(**kwargs)"},{"line_number":3994,"context_line":"        except NotImplementedError:"},{"line_number":3995,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3996,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3997,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3998,"context_line":"        self._update_instance_after_spawn(instance)"},{"line_number":3999,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"},{"line_number":4000,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"13ff83cc_116f108b","line":3997,"range":{"start_line":3991,"start_character":4,"end_line":3997,"end_character":48},"updated":"2022-10-19 11:48:51.000000000","message":"you shoudl really be passing the target state here.\n\nwhich is the change in the virt driver interface i refered to in the spec.","commit_id":"18f004380fe230528b866675303e62a311326014"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"344e7e1c8d5dd162f7d06fa8e5a3f013b8849fd1","unresolved":false,"context_lines":[{"line_number":3988,"context_line":"            evacuate\u003devacuate,"},{"line_number":3989,"context_line":"            accel_uuids\u003daccel_uuids,"},{"line_number":3990,"context_line":"            reimage_boot_volume\u003dreimage_boot_volume)"},{"line_number":3991,"context_line":"        try:"},{"line_number":3992,"context_line":"            with instance.mutated_migration_context():"},{"line_number":3993,"context_line":"                self.driver.rebuild(**kwargs)"},{"line_number":3994,"context_line":"        except NotImplementedError:"},{"line_number":3995,"context_line":"            # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":3996,"context_line":"            # of rebuild, fall back to the default implementation"},{"line_number":3997,"context_line":"            self._rebuild_default_impl(**kwargs)"},{"line_number":3998,"context_line":"        self._update_instance_after_spawn(instance)"},{"line_number":3999,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"},{"line_number":4000,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"16d9c6ce_de0c38c4","line":3997,"range":{"start_line":3991,"start_character":4,"end_line":3997,"end_character":48},"in_reply_to":"13ff83cc_116f108b","updated":"2022-10-31 14:29:10.000000000","message":"Done","commit_id":"18f004380fe230528b866675303e62a311326014"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"69401d5ed4b65110d59ac8599eac210d63cae30f","unresolved":true,"context_lines":[{"line_number":3998,"context_line":"        self._update_instance_after_spawn(instance)"},{"line_number":3999,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"},{"line_number":4000,"context_line":""},{"line_number":4001,"context_line":"        if orig_vm_state \u003d\u003d vm_states.STOPPED:"},{"line_number":4002,"context_line":"            LOG.info(\"bringing vm to original state: \u0027%s\u0027\","},{"line_number":4003,"context_line":"                     orig_vm_state, instance\u003dinstance)"},{"line_number":4004,"context_line":"            instance.vm_state \u003d vm_states.ACTIVE"},{"line_number":4005,"context_line":"            instance.task_state \u003d task_states.POWERING_OFF"},{"line_number":4006,"context_line":"            instance.progress \u003d 0"},{"line_number":4007,"context_line":"            instance.save()"},{"line_number":4008,"context_line":"            self.stop_instance(context, instance, False)"},{"line_number":4009,"context_line":"        # TODO(melwitt): We should clean up instance console tokens here in the"},{"line_number":4010,"context_line":"        # case of evacuate. The instance is on a new host and will need to"},{"line_number":4011,"context_line":"        # establish a new console connection."}],"source_content_type":"text/x-python","patch_set":14,"id":"77e1ab30_f12e6697","line":4008,"range":{"start_line":4001,"start_character":8,"end_line":4008,"end_character":56},"updated":"2022-10-19 11:48:51.000000000","message":"this logic is incorrect today we should not be powering off the vm\nwe should never have started it in the first place.\n\nif the vm has an encypted volume we will get an excption in spwan as we wont be able ot retrive the key from barbican.","commit_id":"18f004380fe230528b866675303e62a311326014"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"344e7e1c8d5dd162f7d06fa8e5a3f013b8849fd1","unresolved":false,"context_lines":[{"line_number":3998,"context_line":"        self._update_instance_after_spawn(instance)"},{"line_number":3999,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILD_SPAWNING])"},{"line_number":4000,"context_line":""},{"line_number":4001,"context_line":"        if orig_vm_state \u003d\u003d vm_states.STOPPED:"},{"line_number":4002,"context_line":"            LOG.info(\"bringing vm to original state: \u0027%s\u0027\","},{"line_number":4003,"context_line":"                     orig_vm_state, instance\u003dinstance)"},{"line_number":4004,"context_line":"            instance.vm_state \u003d vm_states.ACTIVE"},{"line_number":4005,"context_line":"            instance.task_state \u003d task_states.POWERING_OFF"},{"line_number":4006,"context_line":"            instance.progress \u003d 0"},{"line_number":4007,"context_line":"            instance.save()"},{"line_number":4008,"context_line":"            self.stop_instance(context, instance, False)"},{"line_number":4009,"context_line":"        # TODO(melwitt): We should clean up instance console tokens here in the"},{"line_number":4010,"context_line":"        # case of evacuate. The instance is on a new host and will need to"},{"line_number":4011,"context_line":"        # establish a new console connection."}],"source_content_type":"text/x-python","patch_set":14,"id":"459e4eea_7c97fbdc","line":4008,"range":{"start_line":4001,"start_character":8,"end_line":4008,"end_character":56},"in_reply_to":"77e1ab30_f12e6697","updated":"2022-10-31 14:29:10.000000000","message":"Done","commit_id":"18f004380fe230528b866675303e62a311326014"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f2688f8bbc0eac90e7ead25c6e99addf72e00d6","unresolved":false,"context_lines":[{"line_number":3831,"context_line":"            if target_state and orig_vm_state !\u003d vm_states.ERROR:"},{"line_number":3832,"context_line":"                # This will ensure that at destination the instance will have"},{"line_number":3833,"context_line":"                # the desired state."},{"line_number":3834,"context_line":"                if target_state not in vm_states.ALLOW_TARGET_STATES:"},{"line_number":3835,"context_line":"                    raise exception.InstanceEvacuateNotSupportedTargetState("},{"line_number":3836,"context_line":"                        target_state\u003dtarget_state)"},{"line_number":3837,"context_line":"                orig_vm_state \u003d target_state"}],"source_content_type":"text/x-python","patch_set":26,"id":"28581c0e_7334a3e4","line":3834,"updated":"2023-01-26 16:56:34.000000000","message":"thanks for the modification","commit_id":"a2036aec4ce15a5fd82a016cdf7d68c37a598e99"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"234bce7819afd2bd9db58856967457a6a7c989ea","unresolved":true,"context_lines":[{"line_number":1105,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1106,"context_line":"        if not client.can_send_version(version):"},{"line_number":1107,"context_line":"            if msg_args[\u0027target_state\u0027]:"},{"line_number":1108,"context_line":"                raise exception.NovaException("},{"line_number":1109,"context_line":"                    \u0027Compute RPC version does not support \u0027"},{"line_number":1110,"context_line":"                    \u0027target_state parameter.\u0027)"},{"line_number":1111,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":25,"id":"87b07c2a_e43e62c7","line":1108,"updated":"2023-01-25 16:59:43.000000000","message":"I have a doubt whether we correctlyy wrap this exception on the API side so we don\u0027t blindly send a HTTP500.\n\nIn theory, this shouldn\u0027t be arriving, as we check all the computes versions because we go here, so I won\u0027t hold this but in case of a FUP, I\u0027d like us to make sure we don\u0027t bubble the exception up to the user.\n\nEDIT (later): Yeah, so I check the API code and we don\u0027t catch a regular NovaException : https://github.com/openstack/nova/blob/e90e58e7f918baa3b461353f333f837eafbd8411/nova/api/openstack/compute/evacuate.py#L124-L132\n\nI\u0027m not fully onboard with keeping this as it is, but OK.","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f28a75246638cbe682cb33b87b4c4f7da2d66970","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1106,"context_line":"        if not client.can_send_version(version):"},{"line_number":1107,"context_line":"            if msg_args[\u0027target_state\u0027]:"},{"line_number":1108,"context_line":"                raise exception.NovaException("},{"line_number":1109,"context_line":"                    \u0027Compute RPC version does not support \u0027"},{"line_number":1110,"context_line":"                    \u0027target_state parameter.\u0027)"},{"line_number":1111,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":25,"id":"ea118100_db164b71","line":1108,"in_reply_to":"3289dcb6_12a372c3","updated":"2023-01-26 14:52:16.000000000","message":"Done","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"61379957b36048f499cbd38872af8621c6c487ad","unresolved":true,"context_lines":[{"line_number":1105,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1106,"context_line":"        if not client.can_send_version(version):"},{"line_number":1107,"context_line":"            if msg_args[\u0027target_state\u0027]:"},{"line_number":1108,"context_line":"                raise exception.NovaException("},{"line_number":1109,"context_line":"                    \u0027Compute RPC version does not support \u0027"},{"line_number":1110,"context_line":"                    \u0027target_state parameter.\u0027)"},{"line_number":1111,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":25,"id":"f1b22c8a_23488a7f","line":1108,"in_reply_to":"87b07c2a_e43e62c7","updated":"2023-01-25 17:06:47.000000000","message":"Actually, the more I think the more I guess we should just remove the parameter for a old compute instead of returning an exception.\nJust write :\n\n  if not client.can_send_version(version):\n     msg_args.pop(\u0027target_state\u0027)\n     version \u003d \u00276.1\u0027\n     \nlike the pattern we do for many other RPC calls.","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"88bc8a9f026f6c449543340af322f365f27181b2","unresolved":true,"context_lines":[{"line_number":1105,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1106,"context_line":"        if not client.can_send_version(version):"},{"line_number":1107,"context_line":"            if msg_args[\u0027target_state\u0027]:"},{"line_number":1108,"context_line":"                raise exception.NovaException("},{"line_number":1109,"context_line":"                    \u0027Compute RPC version does not support \u0027"},{"line_number":1110,"context_line":"                    \u0027target_state parameter.\u0027)"},{"line_number":1111,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":25,"id":"e8451edd_5ec6ddc1","line":1108,"in_reply_to":"f1b22c8a_23488a7f","updated":"2023-01-25 17:20:26.000000000","message":"We just got a conversation on IRC and I agree with Sean that we should only be backleveling if the value of that parameter is None.\n\nIf the value of that parameter is not None, then yeah we should return an exception.\nNevermind accordingly my second comment.","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d508ef1470732a3db27a6d01b1eecdc3d61f7709","unresolved":true,"context_lines":[{"line_number":1105,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1106,"context_line":"        if not client.can_send_version(version):"},{"line_number":1107,"context_line":"            if msg_args[\u0027target_state\u0027]:"},{"line_number":1108,"context_line":"                raise exception.NovaException("},{"line_number":1109,"context_line":"                    \u0027Compute RPC version does not support \u0027"},{"line_number":1110,"context_line":"                    \u0027target_state parameter.\u0027)"},{"line_number":1111,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":25,"id":"3289dcb6_12a372c3","line":1108,"in_reply_to":"f1b22c8a_23488a7f","updated":"2023-01-25 17:21:14.000000000","message":"this would be incorrect\n\nwe can only pop if target_state is none\n\nit will be not none only if you used teh new microversion\nit will be none for old","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f2688f8bbc0eac90e7ead25c6e99addf72e00d6","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1106,"context_line":"        if not client.can_send_version(version):"},{"line_number":1107,"context_line":"            if msg_args[\u0027target_state\u0027]:"},{"line_number":1108,"context_line":"                raise exception.UnsupportedRPCVersion("},{"line_number":1109,"context_line":"                    api\u003d\"rebuild_instance\","},{"line_number":1110,"context_line":"                    required\u003d\"6.2\")"},{"line_number":1111,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":26,"id":"242970d3_f3b0fec9","line":1108,"updated":"2023-01-26 16:56:34.000000000","message":"way better exception !","commit_id":"a2036aec4ce15a5fd82a016cdf7d68c37a598e99"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"5a110063c3f78428cf9bc8b82f9b5ab2b611a990","unresolved":true,"context_lines":[{"line_number":425,"context_line":"        \u0027xena\u0027: \u00276.0\u0027,"},{"line_number":426,"context_line":"        \u0027yoga\u0027: \u00276.0\u0027,"},{"line_number":427,"context_line":"        \u0027zed\u0027: \u00276.1\u0027,"},{"line_number":428,"context_line":"        \u0027antilope\u0027: \u00276.2\u0027,"},{"line_number":429,"context_line":"    }"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":30,"id":"d4b7ce0b_26d83153","line":428,"updated":"2023-02-06 21:28:13.000000000","message":"This is spelled incorrectly, proposed patch to fix this https://review.opendev.org/c/openstack/nova/+/872804","commit_id":"8c2e76598995f0d417653c60a63ea342baf4e880"}],"nova/compute/vm_states.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"234bce7819afd2bd9db58856967457a6a7c989ea","unresolved":true,"context_lines":[{"line_number":78,"context_line":"ALLOW_RESOURCE_REMOVAL \u003d [DELETED, SHELVED_OFFLOADED]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# states we allow for evacuate instance"},{"line_number":81,"context_line":"ALLOW_TARGET_STATE \u003d [STOPPED]"}],"source_content_type":"text/x-python","patch_set":25,"id":"cd8a6b07_095903aa","line":81,"range":{"start_line":81,"start_character":0,"end_line":81,"end_character":18},"updated":"2023-01-25 16:59:43.000000000","message":"nit: plural would have been better (ALLOW_TARGET_STATES)","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f28a75246638cbe682cb33b87b4c4f7da2d66970","unresolved":false,"context_lines":[{"line_number":78,"context_line":"ALLOW_RESOURCE_REMOVAL \u003d [DELETED, SHELVED_OFFLOADED]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# states we allow for evacuate instance"},{"line_number":81,"context_line":"ALLOW_TARGET_STATE \u003d [STOPPED]"}],"source_content_type":"text/x-python","patch_set":25,"id":"3b2d96fa_ea73c806","line":81,"range":{"start_line":81,"start_character":0,"end_line":81,"end_character":18},"in_reply_to":"cd8a6b07_095903aa","updated":"2023-01-26 14:52:16.000000000","message":"Done","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"}],"nova/conductor/rpcapi.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"234bce7819afd2bd9db58856967457a6a7c989ea","unresolved":true,"context_lines":[{"line_number":450,"context_line":"            if kw[\u0027target_state\u0027]:"},{"line_number":451,"context_line":"                raise exception.NovaException("},{"line_number":452,"context_line":"                    \u0027Conductor RPC version does not support \u0027"},{"line_number":453,"context_line":"                    \u0027target_state parameter.\u0027)"},{"line_number":454,"context_line":"            else:"},{"line_number":455,"context_line":"                del kw[\u0027target_state\u0027]"},{"line_number":456,"context_line":"            version \u003d \u00271.24\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"523a267c_41836d7e","line":453,"updated":"2023-01-25 16:59:43.000000000","message":"same concern than for compute.rpcapi, we don\u0027t really manage this exception if we bubble it up.","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f2688f8bbc0eac90e7ead25c6e99addf72e00d6","unresolved":false,"context_lines":[{"line_number":447,"context_line":"              \u0027target_state\u0027: target_state,"},{"line_number":448,"context_line":"              }"},{"line_number":449,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":450,"context_line":"            if kw[\u0027target_state\u0027]:"},{"line_number":451,"context_line":"                raise exception.UnsupportedRPCVersion("},{"line_number":452,"context_line":"                    api\u003d\"rebuild_instance\", required\u003d\"1.25\")"},{"line_number":453,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":26,"id":"2be9c1e8_1b9245a3","line":450,"updated":"2023-01-26 16:56:34.000000000","message":"nit: this works because we default to None\n\nif the value of the key \u0027target_state\u0027 is None, the conditional doesn\u0027t pass","commit_id":"a2036aec4ce15a5fd82a016cdf7d68c37a598e99"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f2688f8bbc0eac90e7ead25c6e99addf72e00d6","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                raise exception.UnsupportedRPCVersion("},{"line_number":452,"context_line":"                    api\u003d\"rebuild_instance\", required\u003d\"1.25\")"},{"line_number":453,"context_line":"            else:"},{"line_number":454,"context_line":"                del kw[\u0027target_state\u0027]"},{"line_number":455,"context_line":"            version \u003d \u00271.24\u0027"},{"line_number":456,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":457,"context_line":"            if kw[\u0027reimage_boot_volume\u0027]:"}],"source_content_type":"text/x-python","patch_set":26,"id":"f2869f81_6fb9b1ac","line":454,"updated":"2023-01-26 16:56:34.000000000","message":"see, here you backlevel by removing this parameter.","commit_id":"a2036aec4ce15a5fd82a016cdf7d68c37a598e99"}],"nova/exception.py":[{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"a65c979a07fba9433c9e9249f2e52de59e5c69f0","unresolved":true,"context_lines":[{"line_number":1447,"context_line":""},{"line_number":1448,"context_line":""},{"line_number":1449,"context_line":"class InstanceEvacuateNotSupportedTargetState(Invalid):"},{"line_number":1450,"context_line":"    msg_fmt \u003d _(\"Target state \u0027%(target_state)s\u0027 for instance evacuate\""},{"line_number":1451,"context_line":"                \"is not supported.\")"},{"line_number":1452,"context_line":""},{"line_number":1453,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c9a55830_bf3fec2b","line":1450,"range":{"start_line":1450,"start_character":62,"end_line":1450,"end_character":70},"updated":"2022-09-21 16:04:35.000000000","message":"there should be a space at the end.","commit_id":"ded0a7a107f80076077dc3182cc705705af1b8f1"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8fc092ba0b586ccf9a21de8e3e4af6e2f1bb559f","unresolved":false,"context_lines":[{"line_number":1447,"context_line":""},{"line_number":1448,"context_line":""},{"line_number":1449,"context_line":"class InstanceEvacuateNotSupportedTargetState(Invalid):"},{"line_number":1450,"context_line":"    msg_fmt \u003d _(\"Target state \u0027%(target_state)s\u0027 for instance evacuate\""},{"line_number":1451,"context_line":"                \"is not supported.\")"},{"line_number":1452,"context_line":""},{"line_number":1453,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"01929765_55432197","line":1450,"range":{"start_line":1450,"start_character":62,"end_line":1450,"end_character":70},"in_reply_to":"c9a55830_bf3fec2b","updated":"2022-10-05 06:44:14.000000000","message":"Good catch thanks.","commit_id":"ded0a7a107f80076077dc3182cc705705af1b8f1"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"234bce7819afd2bd9db58856967457a6a7c989ea","unresolved":true,"context_lines":[{"line_number":918,"context_line":"            ctxt, instance\u003dself.fake_instance_obj,"},{"line_number":919,"context_line":"            node\u003dNone, host\u003dNone, **rebuild_args)"},{"line_number":920,"context_line":"        mock_client.can_send_version.assert_has_calls([mock.call(\u00276.2\u0027)])"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"    def test_reserve_block_device_name(self):"},{"line_number":923,"context_line":"        self.flags(long_rpc_timeout\u003d1234)"},{"line_number":924,"context_line":"        self._test_compute_api(\u0027reserve_block_device_name\u0027, \u0027call\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"2268128d_82b3c2f2","line":921,"updated":"2023-01-25 16:59:43.000000000","message":"sorry but a negative test is missing to validate the fact we return an exception with some preconditions.","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f28a75246638cbe682cb33b87b4c4f7da2d66970","unresolved":false,"context_lines":[{"line_number":918,"context_line":"            ctxt, instance\u003dself.fake_instance_obj,"},{"line_number":919,"context_line":"            node\u003dNone, host\u003dNone, **rebuild_args)"},{"line_number":920,"context_line":"        mock_client.can_send_version.assert_has_calls([mock.call(\u00276.2\u0027)])"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"    def test_reserve_block_device_name(self):"},{"line_number":923,"context_line":"        self.flags(long_rpc_timeout\u003d1234)"},{"line_number":924,"context_line":"        self._test_compute_api(\u0027reserve_block_device_name\u0027, \u0027call\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f4f00ca_cbd217b0","line":921,"in_reply_to":"2268128d_82b3c2f2","updated":"2023-01-26 14:52:16.000000000","message":"Done","commit_id":"a9fa5068c43d23db5a1e44622dbdaca565dc8690"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f2688f8bbc0eac90e7ead25c6e99addf72e00d6","unresolved":false,"context_lines":[{"line_number":951,"context_line":"            exception.UnsupportedRPCVersion,"},{"line_number":952,"context_line":"            compute_api.rebuild_instance,"},{"line_number":953,"context_line":"            ctxt, instance\u003dself.fake_instance_obj,"},{"line_number":954,"context_line":"            node\u003dNone, host\u003dNone, **rebuild_args)"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"    def test_reserve_block_device_name(self):"},{"line_number":957,"context_line":"        self.flags(long_rpc_timeout\u003d1234)"}],"source_content_type":"text/x-python","patch_set":26,"id":"ce7e68bc_42c9b898","line":954,"updated":"2023-01-26 16:56:34.000000000","message":"++","commit_id":"a2036aec4ce15a5fd82a016cdf7d68c37a598e99"}],"nova/tests/unit/conductor/test_conductor.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3f2688f8bbc0eac90e7ead25c6e99addf72e00d6","unresolved":true,"context_lines":[{"line_number":4772,"context_line":"                self.conductor.client, \u0027can_send_version\u0027, return_value\u003dFalse):"},{"line_number":4773,"context_line":"            self.assertRaises(exc.UnsupportedRPCVersion,"},{"line_number":4774,"context_line":"                              self.conductor.rebuild_instance,"},{"line_number":4775,"context_line":"                              self.context, inst_obj, **rebuild_args)"},{"line_number":4776,"context_line":""},{"line_number":4777,"context_line":"    def test_rebuild_instance_volume_backed(self):"},{"line_number":4778,"context_line":"        inst_obj \u003d self._create_fake_instance_obj()"}],"source_content_type":"text/x-python","patch_set":26,"id":"bcfe1ee7_4d2f06f3","line":4775,"updated":"2023-01-26 16:56:34.000000000","message":"shouldn\u0027t raise an exception here hence the py38 failure (and this is what we want : when the parameter is defaulted to None, we shouldn\u0027t return an exception and we should rather backlevel (ie. calling the RPC API without the parameter)\n\n(UTs are good for catching such things)","commit_id":"a2036aec4ce15a5fd82a016cdf7d68c37a598e99"}]}
