)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5354e8b55e51289be1352e440677c17f793b2fb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3149f966_8a277409","updated":"2024-04-16 05:49:19.000000000","message":"recheck updated depending dnm patch","commit_id":"522dd98d3d1ef7f24110fa482e7984f1fe186c34"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"d1f6a49499ddcae9bcd965c36debc604d8cde5af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"63b48641_0149ceb7","updated":"2024-04-16 12:09:32.000000000","message":"recheck something is deleting instance\nremoved reviewers, as I might need to run it more times.","commit_id":"aa068adc4824121666202e148d4772a178dd4cfd"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"1562c95889c1fec4ac4a07e7a33b8513c5831f75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1a9855d0_481b2461","updated":"2024-04-16 14:11:14.000000000","message":"recheck updated depends-on patch","commit_id":"aa068adc4824121666202e148d4772a178dd4cfd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"a4f24f831471c61bb0f82d95ad063106228b0ef7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"353055c7_c9618929","updated":"2024-04-17 14:26:01.000000000","message":"Looks good, just think it needs a timer to raise an exception in the event that migration results never make it to the desired state.","commit_id":"7f758da27f7dabb5a1bfd3b257888441fa45f495"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4c56d048_f57fa819","updated":"2024-04-21 17:44:53.000000000","message":"I think you have a couple of tests that can be removed, and I think we need to add a test for microversion 2.95, and assert that the server is stopped on the destination.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"7b7934b7_e899afb5","updated":"2024-05-12 20:17:15.000000000","message":"Not a full review (didn\u0027t look at the vGPU and VDPA files), but enough here already.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"cb5f2998895e28cccc0cac6bdf0d6c1fc74b4856","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"bf4bc7dc_514b75e8","updated":"2024-05-14 08:04:05.000000000","message":"recheck virsh shutdown failed","commit_id":"0bb80c75c3f4e67f5426b5a9472acfcd947b3bbc"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ca7d4df68be0126d1697fbd450f17080512d11ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"0f0f89fd_81bb1cf9","updated":"2024-05-17 13:07:50.000000000","message":"recheck unrelated test failed with No valid host","commit_id":"c0ed7b0c443859838408563d9c5ec48ba223fa8a"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80b9ea36af3f5c9fe0c83312af0ca6ad5ffbe7f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"7a8aa471_c857433b","updated":"2024-05-17 11:24:25.000000000","message":"recheck updated volume attachment schema in tempest depends-on patch","commit_id":"c0ed7b0c443859838408563d9c5ec48ba223fa8a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d977ba0fb4b467ff7fd62e110c4b79485a993a2f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"9ac7c2db_949a3461","updated":"2024-05-24 17:45:50.000000000","message":"Coming along nicely :) The dependant tempest patch is great and is already merged, good work on that. Just a few remaining things inline.","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"573bd9969d1f4e695624bba4d83144d92ce3620e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"0feef0bc_68805444","updated":"2024-05-22 07:11:08.000000000","message":"recheck mostly \u0027no valid host\u0027 fails","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"47059e50_80eebbd9","updated":"2024-05-25 08:41:08.000000000","message":"recheck unrelated test test_live_migrate_and_reboot failed with no valid host found","commit_id":"b2856afa1117bd85bb7c67e02c7890ad3afe1201"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"636ce1eff9955b3eadededbe87a358976cde1423","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"dc28467d_635c859f","updated":"2024-05-28 20:01:08.000000000","message":"Fixed the last nits, lgtm!","commit_id":"31ccbbb4c0ef43e723c1da65130b1e1c07f6b61d"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"aaebbda5341ad714503e20388394490432eb3536","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"ec9e5588_b8183887","updated":"2024-05-29 06:58:53.000000000","message":"recheck test_live_migrate_and_reboot failed  with No valid host found\noverall only 3 cheks are running in zull right now","commit_id":"31ccbbb4c0ef43e723c1da65130b1e1c07f6b61d"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"733535ac6b65a3c6b6f11c36106666fe275f78bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"88b653a5_2765f6c5","updated":"2024-05-29 04:51:53.000000000","message":"recheck unrelated timeouts on other test\nthis is a famous one `failed to reach VERIFY_RESIZE status and task state \"None\"`","commit_id":"31ccbbb4c0ef43e723c1da65130b1e1c07f6b61d"}],"whitebox_tempest_plugin/api/compute/base.py":[{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"a4f24f831471c61bb0f82d95ad063106228b0ef7","unresolved":true,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        # wait for migration to complete"},{"line_number":445,"context_line":"        while True:"},{"line_number":446,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":447,"context_line":"                server_id\u003dserver_id)"},{"line_number":448,"context_line":"            if s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027done\u0027, \u0027completed\u0027]:"},{"line_number":449,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":8,"id":"e56334ef_e4ca8970","line":446,"updated":"2024-04-17 14:26:01.000000000","message":"I think it just needs a timer similar to [1] that raises an exception in the event that the migration stalls or fails to make it to done/completed.\n\n\n[1] https://github.com/openstack/tempest/blob/c0da6e843a74c2392c8e87e8ff36d2fea12949c4/tempest/common/waiters.py#L82C40-L82C50","commit_id":"7f758da27f7dabb5a1bfd3b257888441fa45f495"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"b356818d9791e329c28531ea53ba6dd60cdd2477","unresolved":false,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        # wait for migration to complete"},{"line_number":445,"context_line":"        while True:"},{"line_number":446,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":447,"context_line":"                server_id\u003dserver_id)"},{"line_number":448,"context_line":"            if s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027done\u0027, \u0027completed\u0027]:"},{"line_number":449,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":8,"id":"503ec24e_dd5d8e8b","line":446,"in_reply_to":"42a04145_b43d363c","updated":"2024-04-29 16:14:09.000000000","message":"Done","commit_id":"7f758da27f7dabb5a1bfd3b257888441fa45f495"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":true,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        # wait for migration to complete"},{"line_number":445,"context_line":"        while True:"},{"line_number":446,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":447,"context_line":"                server_id\u003dserver_id)"},{"line_number":448,"context_line":"            if s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027done\u0027, \u0027completed\u0027]:"},{"line_number":449,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":8,"id":"eb12e4ef_37c57a7d","line":446,"in_reply_to":"befba65d_0ac0c179","updated":"2024-04-21 17:44:53.000000000","message":"This needs to raise if the look completes without hitting the break on L459. YOu can use the waiters in tempest/common/waiters.py as examples.","commit_id":"7f758da27f7dabb5a1bfd3b257888441fa45f495"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"75a7bb8ef79a84b62838d74fc39984eb6831c560","unresolved":true,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        # wait for migration to complete"},{"line_number":445,"context_line":"        while True:"},{"line_number":446,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":447,"context_line":"                server_id\u003dserver_id)"},{"line_number":448,"context_line":"            if s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027done\u0027, \u0027completed\u0027]:"},{"line_number":449,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":8,"id":"befba65d_0ac0c179","line":446,"in_reply_to":"daae7851_5e4c360e","updated":"2024-04-19 06:30:41.000000000","message":"updated.","commit_id":"7f758da27f7dabb5a1bfd3b257888441fa45f495"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"72f474d7b5969145480df521a5b369beaa5fb9e3","unresolved":true,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        # wait for migration to complete"},{"line_number":445,"context_line":"        while True:"},{"line_number":446,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":447,"context_line":"                server_id\u003dserver_id)"},{"line_number":448,"context_line":"            if s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027done\u0027, \u0027completed\u0027]:"},{"line_number":449,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":8,"id":"daae7851_5e4c360e","line":446,"in_reply_to":"e56334ef_e4ca8970","updated":"2024-04-17 15:04:36.000000000","message":"yeah, I actually tested that in zuul, it does break after sometime with default timeout, but its better to have defined, will update, thanks.","commit_id":"7f758da27f7dabb5a1bfd3b257888441fa45f495"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5620f10e05ae9db448b48152c1bd470bc302c696","unresolved":true,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        # wait for migration to complete"},{"line_number":445,"context_line":"        while True:"},{"line_number":446,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":447,"context_line":"                server_id\u003dserver_id)"},{"line_number":448,"context_line":"            if s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027done\u0027, \u0027completed\u0027]:"},{"line_number":449,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":8,"id":"42a04145_b43d363c","line":446,"in_reply_to":"eb12e4ef_37c57a7d","updated":"2024-04-22 16:36:41.000000000","message":"Done","commit_id":"7f758da27f7dabb5a1bfd3b257888441fa45f495"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":true,"context_lines":[{"line_number":447,"context_line":""},{"line_number":448,"context_line":"    def evacuate_server(self, server_id, **kwargs):"},{"line_number":449,"context_line":"        # 2 min timeout for migration to complete"},{"line_number":450,"context_line":"        start_time, timeout \u003d int(time.time()), 120"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        self.admin_servers_client.evacuate_server(server_id, **kwargs)"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"cdfaddf5_d63a1489","line":450,"updated":"2024-04-21 17:44:53.000000000","message":"The timeout should be the tempest build_timeout, similar to how you\u0027re using the build_interval on L460. I\u0027m not sure if it\u0027s available in the client, but it\u0027s definitely available via CONF.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ecda5fc47d78ce14e7fbabd41c1ff25f551d2f7a","unresolved":false,"context_lines":[{"line_number":447,"context_line":""},{"line_number":448,"context_line":"    def evacuate_server(self, server_id, **kwargs):"},{"line_number":449,"context_line":"        # 2 min timeout for migration to complete"},{"line_number":450,"context_line":"        start_time, timeout \u003d int(time.time()), 120"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        self.admin_servers_client.evacuate_server(server_id, **kwargs)"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ffc333c_e3e62267","line":450,"in_reply_to":"cdfaddf5_d63a1489","updated":"2024-04-22 06:47:47.000000000","message":"Done","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85dbf29842dda83711bf113d870d9807a7e5f480","unresolved":true,"context_lines":[{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        self.admin_servers_client.evacuate_server(server_id, **kwargs)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        # wait for server migration to complete"},{"line_number":463,"context_line":"        while int(time.time()) - start_time \u003c\u003d timeout:"},{"line_number":464,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":465,"context_line":"                server_id\u003dserver_id)"}],"source_content_type":"text/x-python","patch_set":25,"id":"39e298c6_bbfe527a","line":462,"updated":"2024-05-08 12:28:18.000000000","message":"are we sure that tempest does not have an exitsing waiter for this?","commit_id":"ef2a657f18499d8da39667068bc0c5519f9a6ca5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a5a88cd6420de7e32b52928d61949bc7e69ba831","unresolved":false,"context_lines":[{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        self.admin_servers_client.evacuate_server(server_id, **kwargs)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        # wait for server migration to complete"},{"line_number":463,"context_line":"        while int(time.time()) - start_time \u003c\u003d timeout:"},{"line_number":464,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":465,"context_line":"                server_id\u003dserver_id)"}],"source_content_type":"text/x-python","patch_set":25,"id":"b2121820_4970ef0c","line":462,"in_reply_to":"0c0b9db9_698b672b","updated":"2024-05-09 12:35:19.000000000","message":"Acknowledged","commit_id":"ef2a657f18499d8da39667068bc0c5519f9a6ca5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"89df3fb909f4300d199c22b3e08b41fbc54bb82f","unresolved":true,"context_lines":[{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        self.admin_servers_client.evacuate_server(server_id, **kwargs)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        # wait for server migration to complete"},{"line_number":463,"context_line":"        while int(time.time()) - start_time \u003c\u003d timeout:"},{"line_number":464,"context_line":"            s_migs \u003d self.os_admin.migrations_client.list_migrations("},{"line_number":465,"context_line":"                server_id\u003dserver_id)"}],"source_content_type":"text/x-python","patch_set":25,"id":"0c0b9db9_698b672b","line":462,"in_reply_to":"39e298c6_bbfe527a","updated":"2024-05-09 09:46:42.000000000","message":"its not present in these places or any other place.\nhttps://opendev.org/openstack/whitebox-tempest-plugin/src/branch/master/whitebox_tempest_plugin/common/waiters.py\nhttps://github.com/openstack/tempest/blob/master/tempest/common/waiters.py\n\n\nmoved this to common/waiters.py","commit_id":"ef2a657f18499d8da39667068bc0c5519f9a6ca5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85dbf29842dda83711bf113d870d9807a7e5f480","unresolved":true,"context_lines":[{"line_number":466,"context_line":"            if s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027done\u0027, \u0027completed\u0027]:"},{"line_number":467,"context_line":"                break"},{"line_number":468,"context_line":"            elif s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027error\u0027, \u0027failed\u0027]:"},{"line_number":469,"context_line":"                raise MigrationException(\u0027Migration failed.\u0027)"},{"line_number":470,"context_line":"            time.sleep(self.os_admin.services_client.build_interval + 1)"},{"line_number":471,"context_line":"        else:"},{"line_number":472,"context_line":"            # raise Timeout exception if migration never completed"}],"source_content_type":"text/x-python","patch_set":25,"id":"d77709bc_ea90eabd","line":469,"range":{"start_line":469,"start_character":42,"end_line":469,"end_character":51},"updated":"2024-05-08 12:28:18.000000000","message":"we can be more explit here and say evacuation failed.","commit_id":"ef2a657f18499d8da39667068bc0c5519f9a6ca5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"89df3fb909f4300d199c22b3e08b41fbc54bb82f","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            if s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027done\u0027, \u0027completed\u0027]:"},{"line_number":467,"context_line":"                break"},{"line_number":468,"context_line":"            elif s_migs[\u0027migrations\u0027][-1][\u0027status\u0027] in [\u0027error\u0027, \u0027failed\u0027]:"},{"line_number":469,"context_line":"                raise MigrationException(\u0027Migration failed.\u0027)"},{"line_number":470,"context_line":"            time.sleep(self.os_admin.services_client.build_interval + 1)"},{"line_number":471,"context_line":"        else:"},{"line_number":472,"context_line":"            # raise Timeout exception if migration never completed"}],"source_content_type":"text/x-python","patch_set":25,"id":"7ced1f09_543d6917","line":469,"range":{"start_line":469,"start_character":42,"end_line":469,"end_character":51},"in_reply_to":"d77709bc_ea90eabd","updated":"2024-05-09 09:46:42.000000000","message":"Done","commit_id":"ef2a657f18499d8da39667068bc0c5519f9a6ca5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85dbf29842dda83711bf113d870d9807a7e5f480","unresolved":true,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":"        # wait for server to become active at target host"},{"line_number":478,"context_line":"        waiters.wait_for_server_status("},{"line_number":479,"context_line":"            self.servers_client, server_id, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"c5c65abe_8649bbe5","line":479,"updated":"2024-05-08 12:28:18.000000000","message":"so this is only valid for the old micoveriosn\n\nthe behaviour of the latest microversion is to evacuate to stopped.\n\nwe should be testing both using this common funciton which means you should not be hardcoding this assert.\n\netiher the target state should be passed in a a parameter or you should remove this","commit_id":"ef2a657f18499d8da39667068bc0c5519f9a6ca5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"89df3fb909f4300d199c22b3e08b41fbc54bb82f","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":"        # wait for server to become active at target host"},{"line_number":478,"context_line":"        waiters.wait_for_server_status("},{"line_number":479,"context_line":"            self.servers_client, server_id, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"eacdafb9_6a5b3ceb","line":479,"in_reply_to":"c5c65abe_8649bbe5","updated":"2024-05-09 09:46:42.000000000","message":"Done","commit_id":"ef2a657f18499d8da39667068bc0c5519f9a6ca5"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":127,"context_line":"        with contextlib.ExitStack() as stack:"},{"line_number":128,"context_line":"            yield [stack.enter_context(mgr) for mgr in ctxt_mgrs]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def server_show(self, server_id):"},{"line_number":131,"context_line":"        return self.os_admin.servers_client.show_server(server_id)[\u0027server\u0027]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_server_xml(self, server_id):"}],"source_content_type":"text/x-python","patch_set":28,"id":"e9dd8bbf_83a1260d","line":130,"updated":"2024-05-12 20:17:15.000000000","message":"I\u0027d prefer that we continue to explicitly call os_admin.servers_client.show_server() when we need admin show server, without any \"magic\" wrapper methods like this one.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"cb5f2998895e28cccc0cac6bdf0d6c1fc74b4856","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        with contextlib.ExitStack() as stack:"},{"line_number":128,"context_line":"            yield [stack.enter_context(mgr) for mgr in ctxt_mgrs]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def server_show(self, server_id):"},{"line_number":131,"context_line":"        return self.os_admin.servers_client.show_server(server_id)[\u0027server\u0027]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_server_xml(self, server_id):"}],"source_content_type":"text/x-python","patch_set":28,"id":"3728b98b_277ea474","line":130,"in_reply_to":"e9dd8bbf_83a1260d","updated":"2024-05-14 08:04:05.000000000","message":"Done","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"24a3d809c44a3c064b3fe22e901e2c97fa903a27","unresolved":true,"context_lines":[{"line_number":470,"context_line":"        \"\"\"Evacuate server and wait for server migration to complete."},{"line_number":471,"context_line":"        \"\"\""},{"line_number":472,"context_line":"        self.admin_servers_client.evacuate_server(server_id, **kwargs)"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        wb_waiters.wait_for_server_migration_complete(self.os_admin, server_id)"}],"source_content_type":"text/x-python","patch_set":37,"id":"592e83ca_1ba66497","line":473,"updated":"2024-05-28 19:59:54.000000000","message":"nit: whitespace","commit_id":"b2856afa1117bd85bb7c67e02c7890ad3afe1201"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"636ce1eff9955b3eadededbe87a358976cde1423","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        \"\"\"Evacuate server and wait for server migration to complete."},{"line_number":471,"context_line":"        \"\"\""},{"line_number":472,"context_line":"        self.admin_servers_client.evacuate_server(server_id, **kwargs)"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        wb_waiters.wait_for_server_migration_complete(self.os_admin, server_id)"}],"source_content_type":"text/x-python","patch_set":37,"id":"6d5ac1ca_78974fb7","line":473,"in_reply_to":"592e83ca_1ba66497","updated":"2024-05-28 20:01:08.000000000","message":"Done","commit_id":"b2856afa1117bd85bb7c67e02c7890ad3afe1201"}],"whitebox_tempest_plugin/api/compute/test_server_evacuation.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"63ab93d2c33976ab7a1fd5985a48532605652d88","unresolved":true,"context_lines":[{"line_number":38,"context_line":"        # stop compute service in host-A"},{"line_number":39,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":40,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":41,"context_line":"        host_a_svc.stop()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ea37d8e_56a147df","line":41,"updated":"2024-04-15 09:49:36.000000000","message":"service did not stop.","commit_id":"5cb84299c5b7cda1d9d584d6731d762aad954c04"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"64957df5e5ef117e9b347d3b38cd8b8fe63394d7","unresolved":true,"context_lines":[{"line_number":38,"context_line":"        # stop compute service in host-A"},{"line_number":39,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":40,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":41,"context_line":"        host_a_svc.stop()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":2,"id":"63d6a192_b37a0f08","line":41,"in_reply_to":"3ea37d8e_56a147df","updated":"2024-04-15 11:18:53.000000000","message":"as not sure how to test/debug whitebox locally.\n\nI tried same with tempest locally.\nlogs https://paste.opendev.org/show/bSl9h9134widGORPe3ce/\n\n\nand\n\n\n`/opt/stack/tempest/tempest/lib/services/compute/services_client.py(127)update_forced_down()\n -\u003e post_body \u003d json.dumps(kwargs)\n (Pdb) n\n \u003e \n /opt/stack/tempest/tempest/lib/services/compute/services_client.py(128)update_forced_down()\n -\u003e resp, body \u003d self.put(\u0027os-services/force-down\u0027, post_body)\n (Pdb) post_body\n \u0027{\"host\": \"amit-mn-devstack-1\", \"binary\": \"nova-compute\"}\u0027\n (Pdb) n\n tempest.lib.exceptions.NotFound: Object not found\n Details: {\u0027code\u0027: 404, \u0027message\u0027: \u0027Unknown action\u0027}\n`","commit_id":"5cb84299c5b7cda1d9d584d6731d762aad954c04"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"fdf08fb5a28e317a60eae79ecd2308ab816a1bec","unresolved":true,"context_lines":[{"line_number":38,"context_line":"        # stop compute service in host-A"},{"line_number":39,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":40,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":41,"context_line":"        host_a_svc.stop()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":2,"id":"92297d11_e80b2c90","line":41,"in_reply_to":"63d6a192_b37a0f08","updated":"2024-04-15 11:47:04.000000000","message":"okay, it did get stopped at some point later,\nwhitebox logs of this test, https://paste.opendev.org/show/b7iHJe5qG9j5M2deirTq/\n\nbut cleanup ran early for some reason and deleted the instance, \nthats why evacuate could not find instance .","commit_id":"5cb84299c5b7cda1d9d584d6731d762aad954c04"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"b16bb881d44de2b2316f9b01a950bc99fc6a1b4d","unresolved":true,"context_lines":[{"line_number":38,"context_line":"        # stop compute service in host-A"},{"line_number":39,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":40,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":41,"context_line":"        host_a_svc.stop()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":2,"id":"958665c6_5b80a9ca","line":41,"in_reply_to":"92297d11_e80b2c90","updated":"2024-04-15 11:56:39.000000000","message":"compute logs, instance deleted while rebuilding.\n\nhttps://zuul.opendev.org/t/openstack/build/bd4811210f214c4ca0b01e9c2ddcf70d/log/controller/logs/screen-n-cpu.txt#51561-51567","commit_id":"5cb84299c5b7cda1d9d584d6731d762aad954c04"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"83ddbaba884ba4515db94c5cb93da190e97042b8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # stop compute service in host-A"},{"line_number":39,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":40,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":41,"context_line":"        host_a_svc.stop()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c5af6256_0443165c","line":41,"in_reply_to":"958665c6_5b80a9ca","updated":"2024-04-15 19:48:29.000000000","message":"compute service stopped at src successfully.","commit_id":"5cb84299c5b7cda1d9d584d6731d762aad954c04"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"83ddbaba884ba4515db94c5cb93da190e97042b8","unresolved":true,"context_lines":[{"line_number":39,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":40,"context_line":"        host_a_svc.stop()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":3,"id":"c57d05c5_148032ef","line":42,"updated":"2024-04-15 19:48:29.000000000","message":"https://zuul.opendev.org/t/openstack/build/2d1e6c48cc9b483ba0537a7149879f57/log/controller/logs/screen-n-cpu.txt#52859-52860\n\nInstance is getting deleted while rebuiling(resource_tracker.move_claim) for some reason before calling _update_usage_from_migration\nhttps://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L375","commit_id":"4a77e1b065e7ad7793e437e14f2104806bd8a430"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"137d1acaa7e8cbf02490033237ae96d87acfa369","unresolved":true,"context_lines":[{"line_number":39,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":40,"context_line":"        host_a_svc.stop()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f3f7e5a1_60e1127a","line":42,"in_reply_to":"62de59d3_37a8cef7","updated":"2024-04-16 14:43:53.000000000","message":"I don\u0027t believe there are any waiters associated with evacuate_server so tempest will call then function and then end immediately call cleanup.  I believe it needs to model something like this [1], where you call the command and use a waiter until the server reaches a certain status.  I also recommend using the with approach since this will re-enable the service after the code block is finished.\n\nI\u0027m not sure what the best waiter [2] for this would be though.  Potentially  wait_for_server_status to reach STOPPED?  Another option would be to add a whitebox specific evacuate function similar to [3] that adds a waiter based on server status and confirms the server is on a different host.\n\n[1] https://opendev.org/openstack/whitebox-tempest-plugin/src/branch/master/whitebox_tempest_plugin/api/compute/test_volume_negative.py#L75-L85\n[2] https://github.com/openstack/tempest/blob/c0da6e843a74c2392c8e87e8ff36d2fea12949c4/tempest/common/waiters.py#L33\n[3] https://opendev.org/openstack/whitebox-tempest-plugin/src/branch/master/whitebox_tempest_plugin/api/compute/base.py#L143","commit_id":"4a77e1b065e7ad7793e437e14f2104806bd8a430"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"d1f6a49499ddcae9bcd965c36debc604d8cde5af","unresolved":true,"context_lines":[{"line_number":39,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":40,"context_line":"        host_a_svc.stop()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":3,"id":"eda644fc_b226fba3","line":42,"in_reply_to":"c57d05c5_148032ef","updated":"2024-04-16 12:09:32.000000000","message":"control never reaches to instance.save()","commit_id":"4a77e1b065e7ad7793e437e14f2104806bd8a430"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ecda5fc47d78ce14e7fbabd41c1ff25f551d2f7a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":40,"context_line":"        host_a_svc.stop()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":3,"id":"cf28b651_589083d3","line":42,"in_reply_to":"c5e168f0_f8f7949c","updated":"2024-04-22 06:47:47.000000000","message":"Done","commit_id":"4a77e1b065e7ad7793e437e14f2104806bd8a430"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"75a7bb8ef79a84b62838d74fc39984eb6831c560","unresolved":true,"context_lines":[{"line_number":39,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":40,"context_line":"        host_a_svc.stop()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":3,"id":"c5e168f0_f8f7949c","line":42,"in_reply_to":"ce730136_e38d28d4","updated":"2024-04-19 06:30:41.000000000","message":"added wait for migration bit.","commit_id":"4a77e1b065e7ad7793e437e14f2104806bd8a430"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"46100c47d251590780e39848c13300b5666ad1f3","unresolved":true,"context_lines":[{"line_number":39,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":40,"context_line":"        host_a_svc.stop()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":3,"id":"62de59d3_37a8cef7","line":42,"in_reply_to":"eda644fc_b226fba3","updated":"2024-04-16 14:12:02.000000000","message":"it reaches, but instance get deleted in between","commit_id":"4a77e1b065e7ad7793e437e14f2104806bd8a430"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d703882170cd66b300217a30cfe8533bd1995662","unresolved":true,"context_lines":[{"line_number":39,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":40,"context_line":"        host_a_svc.stop()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.evacuate_server(server, host_b)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ce730136_e38d28d4","line":42,"in_reply_to":"f3f7e5a1_60e1127a","updated":"2024-04-16 19:36:16.000000000","message":"I think the best way would be to look at the migrations - there\u0027s an existing MigrationsClient in Tempest that we can use, with a single list_migrations() method that uses [1], so I would use that to find the migration for our evacuation, and poll on it until it\u0027s done - what polling would have to be in a new waiter.\n\n[1] https://docs.openstack.org/api-ref/compute/#list-migrations","commit_id":"4a77e1b065e7ad7793e437e14f2104806bd8a430"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":true,"context_lines":[{"line_number":31,"context_line":"        self.server \u003d self.create_test_server("},{"line_number":32,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_001_server_evacuation(self):"},{"line_number":35,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":36,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"},{"line_number":37,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"0aff5d34_59feaf81","line":34,"updated":"2024-04-21 17:44:53.000000000","message":"Don\u0027t name these with numbers, name them something more descriptive about what the test is for.\n\nSo, IIUC, this is for passing a destination host.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ecda5fc47d78ce14e7fbabd41c1ff25f551d2f7a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.server \u003d self.create_test_server("},{"line_number":32,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_001_server_evacuation(self):"},{"line_number":35,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":36,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"},{"line_number":37,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a19edb4_458ef7f3","line":34,"in_reply_to":"0aff5d34_59feaf81","updated":"2024-04-22 06:47:47.000000000","message":"Done","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":true,"context_lines":[{"line_number":37,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # set compute service down in host-A"},{"line_number":40,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":41,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        with host_a_svc.state_down():"}],"source_content_type":"text/x-python","patch_set":11,"id":"5b94cdea_507498ab","line":40,"updated":"2024-04-21 17:44:53.000000000","message":"I\u0027m pretty sure you need to actually stop the service (as in, via systemctl - we have a client for that - not via the Nova API), not just force it down.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"2e520f20bacff8eebe759384a1418579dd2c9a2d","unresolved":true,"context_lines":[{"line_number":37,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # set compute service down in host-A"},{"line_number":40,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":41,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        with host_a_svc.state_down():"}],"source_content_type":"text/x-python","patch_set":11,"id":"c1f0640e_ecc71408","line":40,"in_reply_to":"3b792926_34b53188","updated":"2024-05-02 20:22:11.000000000","message":"Testing this downstream, forcing it down is working (results above).  And literally stopping the service via self.stop works as well albeit it takes 10 times as long to do so.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5620f10e05ae9db448b48152c1bd470bc302c696","unresolved":true,"context_lines":[{"line_number":37,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # set compute service down in host-A"},{"line_number":40,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":41,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        with host_a_svc.state_down():"}],"source_content_type":"text/x-python","patch_set":11,"id":"3b792926_34b53188","line":40,"in_reply_to":"5b94cdea_507498ab","updated":"2024-04-22 16:36:41.000000000","message":"added. \nthough evacuation works with only compute service force-down too.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"b5da37fed08a2a4abb17752d7582ec5daf07e41a","unresolved":true,"context_lines":[{"line_number":37,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # set compute service down in host-A"},{"line_number":40,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":41,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        with host_a_svc.state_down():"}],"source_content_type":"text/x-python","patch_set":11,"id":"c80c726c_c1440461","line":40,"in_reply_to":"c1f0640e_ecc71408","updated":"2024-05-03 06:36:40.000000000","message":"yeah, its takes lot of time (and always fails for me locally), that\u0027s why I have commented, self.stop before forcing down here.\nthanks for confirming.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"89df3fb909f4300d199c22b3e08b41fbc54bb82f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # set compute service down in host-A"},{"line_number":40,"context_line":"        host_a_svc \u003d clients.NovaServiceManager("},{"line_number":41,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        with host_a_svc.state_down():"}],"source_content_type":"text/x-python","patch_set":11,"id":"4b6762e1_c7a50d7e","line":40,"in_reply_to":"c80c726c_c1440461","updated":"2024-05-09 09:46:42.000000000","message":"Done","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.assertEqual(self.get_host_for_server(server_id), host_b)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_002_target_host_unknown(self):"},{"line_number":49,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":50,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"43fbde59_96b27e38","line":48,"updated":"2024-04-21 17:44:53.000000000","message":"This is for without passing a destination host.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ecda5fc47d78ce14e7fbabd41c1ff25f551d2f7a","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.assertEqual(self.get_host_for_server(server_id), host_b)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_002_target_host_unknown(self):"},{"line_number":49,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":50,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bb45e8ae_e03ff899","line":48,"in_reply_to":"43fbde59_96b27e38","updated":"2024-04-22 06:47:47.000000000","message":"yes, Done","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":true,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.assertNotEqual(self.get_host_for_server(server_id), host_a)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_003_target_host_unavailable(self):"},{"line_number":62,"context_line":"        # fail evacuation beause no valid target host"},{"line_number":63,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":64,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"34819fa1_790518e7","line":61,"updated":"2024-04-21 17:44:53.000000000","message":"And this is for without passing a host, when no host is up/available.\n\nI\u0027m not sure this adds a whole lot of value, as no evacuation is actually performed. You\u0027re just testing Placement/the scheduler. I think we can drop this test.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5620f10e05ae9db448b48152c1bd470bc302c696","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.assertNotEqual(self.get_host_for_server(server_id), host_a)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_003_target_host_unavailable(self):"},{"line_number":62,"context_line":"        # fail evacuation beause no valid target host"},{"line_number":63,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":64,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"a8e01cf6_58655118","line":61,"in_reply_to":"34819fa1_790518e7","updated":"2024-04-22 16:36:41.000000000","message":"Done","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":true,"context_lines":[{"line_number":99,"context_line":"    #     self.assertEqual(self.get_host_for_server(server_id), host_b)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class ServerEvacuation2(base.BaseWhiteboxComputeTest):"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    # required to compute forced down"},{"line_number":105,"context_line":"    min_microversion \u003d \u00272.11\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f798aaf_41ea6668","line":102,"updated":"2024-04-21 17:44:53.000000000","message":"Why is this a separate test class?","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5620f10e05ae9db448b48152c1bd470bc302c696","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    #     self.assertEqual(self.get_host_for_server(server_id), host_b)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class ServerEvacuation2(base.BaseWhiteboxComputeTest):"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    # required to compute forced down"},{"line_number":105,"context_line":"    min_microversion \u003d \u00272.11\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"e790de9a_53234069","line":102,"in_reply_to":"9f798aaf_41ea6668","updated":"2024-04-22 16:36:41.000000000","message":"other tests were failing because other test made service was down.\nseparating test like this fixed it. \nbut as that particuar test did not needed so removed class.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"340609bfd4f4bf681e78a2dd368e3d1bcb629368","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        self.server \u003d self.create_test_server("},{"line_number":110,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_001_no_shared_storage(self):"},{"line_number":113,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":114,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"},{"line_number":115,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9acc4bf1_ae1985f3","line":112,"updated":"2024-04-21 17:44:53.000000000","message":"So this tests what happens if we don\u0027t pass the onSharedStorage parameter prior to 2.13? Again, I\u0027m not convinced of the value, since this doesn\u0027t actually do an evacuation, and the microversion is really old anyways.","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ecda5fc47d78ce14e7fbabd41c1ff25f551d2f7a","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.server \u003d self.create_test_server("},{"line_number":110,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_001_no_shared_storage(self):"},{"line_number":113,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":114,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"},{"line_number":115,"context_line":"        host_b \u003d self.get_host_other_than(server_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"32f5de4d_9176ce5c","line":112,"in_reply_to":"9acc4bf1_ae1985f3","updated":"2024-04-22 06:47:47.000000000","message":"Acknowledged","commit_id":"602df2b95eecb0a7fd995c4a02810f45bd781d5e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"2e520f20bacff8eebe759384a1418579dd2c9a2d","unresolved":true,"context_lines":[{"line_number":42,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":43,"context_line":"        self.server_id \u003d server[\u0027id\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_simple_server_evacuation(self):"},{"line_number":46,"context_line":"        host_a \u003d self.get_host_for_server(self.server_id)"},{"line_number":47,"context_line":"        host_b \u003d self.get_host_other_than(self.server_id)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"69acdf19_0e1011ea","line":45,"updated":"2024-05-02 20:22:11.000000000","message":"This is working downstream as well with current implementation of forcing the service down versus stopping it.\n\n(overcloud) [stack@undercloud-0 tempest-dir]$ tempest run --serial --regex \u0027whitebox_tempest_plugin.api.compute.test_server_evacuation\u0027\n{0} whitebox_tempest_plugin.api.compute.test_server_evacuation.ServerEvacuation.test_simple_server_evacuation [12.324396s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_server_evacuation.ServerEvacuation.test_target_host_unknown [11.644974s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_server_evacuation.ServerEvacuationWithVolume.test_attached_vol [22.511213s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_server_evacuation.ServerEvacuationWithVolume.test_bfv_server [28.515266s] ... ok\n\n\u003d\u003d\u003d\u003d\u003d\u003d\nTotals\n\u003d\u003d\u003d\u003d\u003d\u003d\nRan: 4 tests in 79.0665 sec.\n - Passed: 4\n - Skipped: 0\n - Expected Fail: 0\n - Unexpected Success: 0\n - Failed: 0\nSum of execute time for each test: 74.9958 sec.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nWorker Balance\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n - Worker 0 (4 tests) \u003d\u003e 0:01:19.066543","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":true,"context_lines":[{"line_number":42,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":43,"context_line":"        self.server_id \u003d server[\u0027id\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_simple_server_evacuation(self):"},{"line_number":46,"context_line":"        host_a \u003d self.get_host_for_server(self.server_id)"},{"line_number":47,"context_line":"        host_b \u003d self.get_host_other_than(self.server_id)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"d31a653f_9c3e71b3","line":45,"in_reply_to":"69acdf19_0e1011ea","updated":"2024-05-25 08:41:08.000000000","message":"code has changed lot, not functionally though, should pass again.","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"6e41fb75571fddd48d4e4674cddd4c0255e4ca81","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    \u0027\u0027\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # required to compute forced down"},{"line_number":30,"context_line":"    # min_microversion \u003d \u00272.11\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":22,"id":"172c7de7_ef33f77c","line":30,"updated":"2024-05-07 05:59:24.000000000","message":"with this commented, api version used in request is 2.1 instead of latest.\n`\u0027openstack-api-version\u0027: \u0027compute 2.1\u0027, \u0027x-openstack-nova-api-version\u0027: \u00272.1\u0027,`\n\n\nFull logs\n`2024-05-06 17:40:34,934 102549 INFO     [tempest.lib.common.rest_client] Request (ServerEvacuation:test_simple_server_evacuation): 400 PUT https://213.32.72.72/compute/v2.1/os-services/force-down 0.018s\n2024-05-06 17:40:34,934 102549 DEBUG    [tempest.lib.common.rest_client] Request - Headers: {\u0027Content-Type\u0027: \u0027application/json\u0027, \u0027Accept\u0027: \u0027application/json\u0027, \u0027X-Auth-Token\u0027: \u0027\u003comitted\u003e\u0027}\n        Body: {\"host\": \"np0037449134\", \"binary\": \"nova-compute\", \"forced_down\": true}`\n`\n    Response - Headers: {\u0027date\u0027: \u0027Mon, 06 May 2024 17:40:34 GMT\u0027, \u0027server\u0027: \u0027Apache/2.4.52 (Ubuntu)\u0027, \u0027openstack-api-version\u0027: \u0027compute 2.1\u0027, \u0027x-openstack-nova-api-version\u0027: \u00272.1\u0027, \u0027vary\u0027: \u0027OpenStack-API-Version,X-OpenStack-Nova-API-Version\u0027, \u0027content-type\u0027: \u0027application/json; charset\u003dUTF-8\u0027, \u0027content-length\u0027: \u0027112\u0027, \u0027x-openstack-request-id\u0027: \u0027req-29c284fe-0774-47cb-ab64-277165ad70c6\u0027, \u0027x-compute-request-id\u0027: \u0027req-29c284fe-0774-47cb-ab64-277165ad70c6\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027400\u0027, \u0027content-location\u0027: \u0027https://213.32.72.72/compute/v2.1/os-services/force-down\u0027}\n        Body: b\u0027{\"badRequest\": {\"code\": 400, \"message\": \"Additional properties are not allowed (\\\u0027forced_down\\\u0027 was unexpected)\"}}\u0027`","commit_id":"112dab5e87ba5d922081e13b1f3d2c243d393b68"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"89df3fb909f4300d199c22b3e08b41fbc54bb82f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \u0027\u0027\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # required to compute forced down"},{"line_number":30,"context_line":"    # min_microversion \u003d \u00272.11\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":22,"id":"b40e2f62_c3a40a88","line":30,"in_reply_to":"172c7de7_ef33f77c","updated":"2024-05-09 09:46:42.000000000","message":"Done","commit_id":"112dab5e87ba5d922081e13b1f3d2c243d393b68"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":41,"context_line":"        # evacuate api does not return any response with"},{"line_number":42,"context_line":"        # microversion 2.14 or greater"},{"line_number":43,"context_line":"        # this is to have schema without respose body"},{"line_number":44,"context_line":"        self.admin_servers_client.enable_instance_password \u003d None"},{"line_number":45,"context_line":"        server \u003d self.create_test_server("},{"line_number":46,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":47,"context_line":"        self.server_id \u003d server[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":28,"id":"2f41afb9_6453b9da","line":44,"updated":"2024-05-12 20:17:15.000000000","message":"I\u0027m not sure what this line and comment above it mean - does Tempest throw a validation error if you don\u0027t do this? If that\u0027s the case, the correct thing to do would be to fix Tempest by updating its evacuation response scheme, not to hack this in.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80b9ea36af3f5c9fe0c83312af0ca6ad5ffbe7f4","unresolved":true,"context_lines":[{"line_number":41,"context_line":"        # evacuate api does not return any response with"},{"line_number":42,"context_line":"        # microversion 2.14 or greater"},{"line_number":43,"context_line":"        # this is to have schema without respose body"},{"line_number":44,"context_line":"        self.admin_servers_client.enable_instance_password \u003d None"},{"line_number":45,"context_line":"        server \u003d self.create_test_server("},{"line_number":46,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":47,"context_line":"        self.server_id \u003d server[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":28,"id":"c8b4c684_773d1a31","line":44,"in_reply_to":"2f41afb9_6453b9da","updated":"2024-05-17 11:24:25.000000000","message":"depends-on patch fixes this.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        # evacuate api does not return any response with"},{"line_number":42,"context_line":"        # microversion 2.14 or greater"},{"line_number":43,"context_line":"        # this is to have schema without respose body"},{"line_number":44,"context_line":"        self.admin_servers_client.enable_instance_password \u003d None"},{"line_number":45,"context_line":"        server \u003d self.create_test_server("},{"line_number":46,"context_line":"            name\u003d\"TestServer\", wait_until\u003d\"ACTIVE\")"},{"line_number":47,"context_line":"        self.server_id \u003d server[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":28,"id":"d86a95c0_57c0e985","line":44,"in_reply_to":"c8b4c684_773d1a31","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":55,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":56,"context_line":"        host_a_shell \u003d clients.HostShell(host_a)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        with host_a_svc.state_down():"},{"line_number":59,"context_line":"            server \u003d self.server_show(self.server_id)"},{"line_number":60,"context_line":"            domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"205b3e53_8ddcef5c","line":58,"updated":"2024-05-12 20:17:15.000000000","message":"Why did you write a new state_down() decorator as opposed to using the existing stopped()?","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80b9ea36af3f5c9fe0c83312af0ca6ad5ffbe7f4","unresolved":true,"context_lines":[{"line_number":55,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":56,"context_line":"        host_a_shell \u003d clients.HostShell(host_a)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        with host_a_svc.state_down():"},{"line_number":59,"context_line":"            server \u003d self.server_show(self.server_id)"},{"line_number":60,"context_line":"            domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"f23d61d2_131294c3","line":58,"in_reply_to":"205b3e53_8ddcef5c","updated":"2024-05-17 11:24:25.000000000","message":"with stopped we are not forcing-down nova-compute separately, which is advised in api-ref doc `The failed host must be reported as down or marked as forced down using Update Forced Down.`\n\nbut with stopped, by just doing systemctl stop, nova-compute set down eventually because conf `service_down_time`, so evacuation works (locally I had time issue, but works fine in CI).\nCI logs to show it waited until service state went down https://zuul.opendev.org/t/openstack/build/89f4207e3d4148058ddd390fc199c353/log/controller/logs/tempest_log.txt#19557-19563\n\ncompare to force_down, this takes lot of time.\nif we do forced-down, that will give us opportunity to test force-down api well with same tests.\n\nfor now, I have removed forced-down","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":56,"context_line":"        host_a_shell \u003d clients.HostShell(host_a)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        with host_a_svc.state_down():"},{"line_number":59,"context_line":"            server \u003d self.server_show(self.server_id)"},{"line_number":60,"context_line":"            domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"4f9ecbb2_995f2123","line":58,"in_reply_to":"f23d61d2_131294c3","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            # as compute service is down at src host,"},{"line_number":63,"context_line":"            # shutdowm server by virsh"},{"line_number":64,"context_line":"            host_a_shell.shutdown(domain)"},{"line_number":65,"context_line":"            # import rpdb;rpdb.set_trace()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"            self.evacuate_server(self.server_id, host\u003dhost_b)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"146cee26_05da9a8d","line":65,"updated":"2024-05-12 20:17:15.000000000","message":"Remove this.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"cb5f2998895e28cccc0cac6bdf0d6c1fc74b4856","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            # as compute service is down at src host,"},{"line_number":63,"context_line":"            # shutdowm server by virsh"},{"line_number":64,"context_line":"            host_a_shell.shutdown(domain)"},{"line_number":65,"context_line":"            # import rpdb;rpdb.set_trace()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"            self.evacuate_server(self.server_id, host\u003dhost_b)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"22a00dd5_608d48fe","line":65,"in_reply_to":"146cee26_05da9a8d","updated":"2024-05-14 08:04:05.000000000","message":"Done","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":69,"context_line":"        # after evacuation server get started by itself at destination"},{"line_number":70,"context_line":"        self.assertEqual(self.get_host_for_server(self.server_id), host_b)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_target_host_unknown(self):"},{"line_number":73,"context_line":"        host_a \u003d self.get_host_for_server(self.server_id)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # set compute service down in host-A"}],"source_content_type":"text/x-python","patch_set":28,"id":"015997b1_040ae20a","line":72,"updated":"2024-05-12 20:17:15.000000000","message":"I\u0027d rename this as just \u0027test_evacuate\u0027, and your test_simple_server_evacuation to \u0027test_evacuate_with_target_host\u0027.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"cb5f2998895e28cccc0cac6bdf0d6c1fc74b4856","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        # after evacuation server get started by itself at destination"},{"line_number":70,"context_line":"        self.assertEqual(self.get_host_for_server(self.server_id), host_b)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_target_host_unknown(self):"},{"line_number":73,"context_line":"        host_a \u003d self.get_host_for_server(self.server_id)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # set compute service down in host-A"}],"source_content_type":"text/x-python","patch_set":28,"id":"ec02796f_d15f476c","line":72,"in_reply_to":"015997b1_040ae20a","updated":"2024-05-14 08:04:05.000000000","message":"Done","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":77,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":78,"context_line":"        host_a_shell \u003d clients.HostShell(host_a)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        with host_a_svc.state_down():"},{"line_number":81,"context_line":"            server \u003d self.server_show(self.server_id)"},{"line_number":82,"context_line":"            domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"c0df632a_b7e7e020","line":80,"updated":"2024-05-12 20:17:15.000000000","message":"Ditto - re: why not just stopped()?","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80b9ea36af3f5c9fe0c83312af0ca6ad5ffbe7f4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            host_a, \u0027nova-compute\u0027, self.os_admin.services_client)"},{"line_number":78,"context_line":"        host_a_shell \u003d clients.HostShell(host_a)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        with host_a_svc.state_down():"},{"line_number":81,"context_line":"            server \u003d self.server_show(self.server_id)"},{"line_number":82,"context_line":"            domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"ff6b54e9_59ae5f4f","line":80,"in_reply_to":"c0df632a_b7e7e020","updated":"2024-05-17 11:24:25.000000000","message":"Acknowledged","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":86,"context_line":"            self.evacuate_server(self.server_id)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.assertNotEqual(self.get_host_for_server(self.server_id), host_a)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ServerEvacuationWithVolume(base.BaseWhiteboxComputeTest):"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"64ad83d9_35a2f37e","line":89,"updated":"2024-05-12 20:17:15.000000000","message":"A test for microversion 2.95 - evacuate to STOPPED, would be good as well, but it would need a different test class because of the microversion.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80b9ea36af3f5c9fe0c83312af0ca6ad5ffbe7f4","unresolved":true,"context_lines":[{"line_number":86,"context_line":"            self.evacuate_server(self.server_id)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.assertNotEqual(self.get_host_for_server(self.server_id), host_a)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ServerEvacuationWithVolume(base.BaseWhiteboxComputeTest):"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"970ef278_aefeabb6","line":89,"in_reply_to":"64ad83d9_35a2f37e","updated":"2024-05-17 11:24:25.000000000","message":"2.95 need changes in tempest, added a depends-on patch.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self.evacuate_server(self.server_id)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.assertNotEqual(self.get_host_for_server(self.server_id), host_a)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ServerEvacuationWithVolume(base.BaseWhiteboxComputeTest):"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"82a75fff_6772f1ac","line":89,"in_reply_to":"970ef278_aefeabb6","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        self.assertNotEqual(self.get_host_for_server(self.server_id), host_a)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ServerEvacuationWithVolume(base.BaseWhiteboxComputeTest):"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    min_microversion \u003d \u00272.51\u0027"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9e098df4_e7990479","line":91,"updated":"2024-05-12 20:17:15.000000000","message":"Why is this a different class?","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80b9ea36af3f5c9fe0c83312af0ca6ad5ffbe7f4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.assertNotEqual(self.get_host_for_server(self.server_id), host_a)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ServerEvacuationWithVolume(base.BaseWhiteboxComputeTest):"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    min_microversion \u003d \u00272.51\u0027"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"e4d9e986_9a18526a","line":91,"in_reply_to":"10cdc1af_448aa847","updated":"2024-05-17 11:24:25.000000000","message":"Done","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"cb5f2998895e28cccc0cac6bdf0d6c1fc74b4856","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        self.assertNotEqual(self.get_host_for_server(self.server_id), host_a)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ServerEvacuationWithVolume(base.BaseWhiteboxComputeTest):"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    min_microversion \u003d \u00272.51\u0027"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"10cdc1af_448aa847","line":91,"in_reply_to":"9e098df4_e7990479","updated":"2024-05-14 08:04:05.000000000","message":"because earlier I was not using serial, so test were failing, creating new class fixed it.\nnow we don\u0027t need it., moved volume test to existing class.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ca7d4df68be0126d1697fbd450f17080512d11ce","unresolved":true,"context_lines":[{"line_number":26,"context_line":"    \u0027\u0027\u0027Test server evacuation."},{"line_number":27,"context_line":"    \u0027\u0027\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # minimum microversion need to update service forced_down"},{"line_number":30,"context_line":"    min_microversion \u003d \u00272.95\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":35,"id":"6bc7dca5_9f7c4f71","line":29,"updated":"2024-05-17 13:07:50.000000000","message":"not true anymore","commit_id":"c0ed7b0c443859838408563d9c5ec48ba223fa8a"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"573bd9969d1f4e695624bba4d83144d92ce3620e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027\u0027\u0027Test server evacuation."},{"line_number":27,"context_line":"    \u0027\u0027\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # minimum microversion need to update service forced_down"},{"line_number":30,"context_line":"    min_microversion \u003d \u00272.95\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":35,"id":"685160a8_cf8f4a99","line":29,"in_reply_to":"6bc7dca5_9f7c4f71","updated":"2024-05-22 07:11:08.000000000","message":"Done","commit_id":"c0ed7b0c443859838408563d9c5ec48ba223fa8a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d977ba0fb4b467ff7fd62e110c4b79485a993a2f","unresolved":true,"context_lines":[{"line_number":26,"context_line":"    \u0027\u0027\u0027Test server evacuation."},{"line_number":27,"context_line":"    \u0027\u0027\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    min_microversion \u003d \u00272.95\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":36,"id":"af30509b_00f3d191","line":29,"updated":"2024-05-24 17:45:50.000000000","message":"Ideally we\u0027d have a separate class, with `microversion \u003d 2.94`, that has the exact same `test_evacuate()` as below on L44, but that asserts that the server is ACTIVE on destionation (evacuate to STOPPED was added in 2.95).","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027\u0027\u0027Test server evacuation."},{"line_number":27,"context_line":"    \u0027\u0027\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    min_microversion \u003d \u00272.95\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":36,"id":"d59ede77_87303ab8","line":29,"in_reply_to":"af30509b_00f3d191","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d977ba0fb4b467ff7fd62e110c4b79485a993a2f","unresolved":true,"context_lines":[{"line_number":35,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate\""},{"line_number":36,"context_line":"            raise cls.skipException(msg)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _shutdown_server(self, host, server_id):"},{"line_number":39,"context_line":"        virsh_shell \u003d clients.HostShell(host)"},{"line_number":40,"context_line":"        server \u003d self.os_admin.servers_client.show_server(server_id)[\u0027server\u0027]"},{"line_number":41,"context_line":"        domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"}],"source_content_type":"text/x-python","patch_set":36,"id":"a1afda0a_2ed5dad1","line":38,"updated":"2024-05-24 17:45:50.000000000","message":"Since this is being used in the vDPA and vGPU tests, could we move this to the base class?","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate\""},{"line_number":36,"context_line":"            raise cls.skipException(msg)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _shutdown_server(self, host, server_id):"},{"line_number":39,"context_line":"        virsh_shell \u003d clients.HostShell(host)"},{"line_number":40,"context_line":"        server \u003d self.os_admin.servers_client.show_server(server_id)[\u0027server\u0027]"},{"line_number":41,"context_line":"        domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"}],"source_content_type":"text/x-python","patch_set":36,"id":"c1fe2f00_a9da0100","line":38,"in_reply_to":"a1afda0a_2ed5dad1","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d977ba0fb4b467ff7fd62e110c4b79485a993a2f","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            self.evacuate_server(server_id)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # after evacuation server starts by itself at destination"},{"line_number":59,"context_line":"        self.assertNotEqual(self.get_host_for_server(server_id), host_a)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_evacuate_with_target_host(self):"},{"line_number":62,"context_line":"        server_id \u003d self.create_test_server(wait_until\u003d\"ACTIVE\")[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":36,"id":"d7c0ed12_a3f23635","line":59,"updated":"2024-05-24 17:45:50.000000000","message":"In microversion 2.95 we expect the instance to be stopped on the destination, we should add an assertion to that effect here.","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            self.evacuate_server(server_id)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # after evacuation server starts by itself at destination"},{"line_number":59,"context_line":"        self.assertNotEqual(self.get_host_for_server(server_id), host_a)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_evacuate_with_target_host(self):"},{"line_number":62,"context_line":"        server_id \u003d self.create_test_server(wait_until\u003d\"ACTIVE\")[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":36,"id":"e5c06037_54c4a5c7","line":59,"in_reply_to":"d7c0ed12_a3f23635","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"24a3d809c44a3c064b3fe22e901e2c97fa903a27","unresolved":true,"context_lines":[{"line_number":139,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate\""},{"line_number":140,"context_line":"            raise cls.skipException(msg)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_evacuate1(self):"},{"line_number":143,"context_line":"        server_id \u003d self.create_test_server(wait_until\u003d\"ACTIVE\")[\u0027id\u0027]"},{"line_number":144,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"7ac78585_5964dc63","line":142,"updated":"2024-05-28 19:59:54.000000000","message":"No, test method names _have_ to be more descriptive than this. `test_evacuate_active()` for example, and the other one can become `test_evacuate_shutoff()`.","commit_id":"b2856afa1117bd85bb7c67e02c7890ad3afe1201"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"636ce1eff9955b3eadededbe87a358976cde1423","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate\""},{"line_number":140,"context_line":"            raise cls.skipException(msg)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_evacuate1(self):"},{"line_number":143,"context_line":"        server_id \u003d self.create_test_server(wait_until\u003d\"ACTIVE\")[\u0027id\u0027]"},{"line_number":144,"context_line":"        host_a \u003d self.get_host_for_server(server_id)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"4d354f89_b0aef3cf","line":142,"in_reply_to":"7ac78585_5964dc63","updated":"2024-05-28 20:01:08.000000000","message":"Done","commit_id":"b2856afa1117bd85bb7c67e02c7890ad3afe1201"}],"whitebox_tempest_plugin/api/compute/test_vdpa.py":[{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"2e520f20bacff8eebe759384a1418579dd2c9a2d","unresolved":true,"context_lines":[{"line_number":222,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":223,"context_line":"            raise cls.skipException(msg)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def test_vdpa_server_evacuation(self):"},{"line_number":226,"context_line":"        # Create an instance with a vDPA port and evacuate the"},{"line_number":227,"context_line":"        port \u003d self._create_port_from_vnic_type("},{"line_number":228,"context_line":"            net\u003dself.network,"}],"source_content_type":"text/x-python","patch_set":21,"id":"b20b0599_9b208041","line":225,"updated":"2024-05-02 20:22:11.000000000","message":"Tested downstream and is working:\n(overcloud) [stack@undercloud-0 tempest-dir]$ tempest run --serial --regex \u0027whitebox_tempest_plugin.api.compute.test_vdpa.VDPAEvacuateInstance.test_vdpa_server_evacuation|whitebox_tempest_plugin.api.compute.test_vgpu.VGPUServerEvacuation\u0027\n{0} whitebox_tempest_plugin.api.compute.test_vdpa.VDPAEvacuateInstance.test_vdpa_server_evacuation [26.761123s] ... ok","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d977ba0fb4b467ff7fd62e110c4b79485a993a2f","unresolved":true,"context_lines":[{"line_number":221,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":222,"context_line":"            raise cls.skipException(msg)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _shutdown_server(self, host, server_id):"},{"line_number":225,"context_line":"        virsh_shell \u003d clients.HostShell(host)"},{"line_number":226,"context_line":"        server \u003d self.os_admin.servers_client.show_server(server_id)[\u0027server\u0027]"},{"line_number":227,"context_line":"        domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"}],"source_content_type":"text/x-python","patch_set":36,"id":"5e497e17_95c9d103","line":224,"updated":"2024-05-24 17:45:50.000000000","message":"Move to base class as stated in my other comment.","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":222,"context_line":"            raise cls.skipException(msg)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _shutdown_server(self, host, server_id):"},{"line_number":225,"context_line":"        virsh_shell \u003d clients.HostShell(host)"},{"line_number":226,"context_line":"        server \u003d self.os_admin.servers_client.show_server(server_id)[\u0027server\u0027]"},{"line_number":227,"context_line":"        domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"}],"source_content_type":"text/x-python","patch_set":36,"id":"c83a863e_d887cedb","line":224,"in_reply_to":"5e497e17_95c9d103","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"}],"whitebox_tempest_plugin/api/compute/test_vgpu.py":[{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"2e520f20bacff8eebe759384a1418579dd2c9a2d","unresolved":true,"context_lines":[{"line_number":623,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":624,"context_line":"            raise cls.skipException(msg)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def test_server_evacuate_having_vgpu(self):"},{"line_number":627,"context_line":"        starting_rp_vgpu_inventory \u003d \\"},{"line_number":628,"context_line":"            self._get_vgpu_inventories_for_deployment()"},{"line_number":629,"context_line":"        validation_resources \u003d self.get_test_validation_resources("}],"source_content_type":"text/x-python","patch_set":21,"id":"2416a3fe_a3d177e0","line":626,"updated":"2024-05-02 20:22:11.000000000","message":"Was support for this added in master?  It\u0027s currently not supported downstream [1].\nhttps://access.redhat.com/documentation/en-us/red_hat_openstack_platform/17.1/html/configuring_the_compute_service_for_instance_creation/assembly_configuring-virtual-gpus-for-instances_vgpu#con_vgpu-supported-configurations-and-limitations_vgpu","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85dbf29842dda83711bf113d870d9807a7e5f480","unresolved":true,"context_lines":[{"line_number":623,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":624,"context_line":"            raise cls.skipException(msg)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def test_server_evacuate_having_vgpu(self):"},{"line_number":627,"context_line":"        starting_rp_vgpu_inventory \u003d \\"},{"line_number":628,"context_line":"            self._get_vgpu_inventories_for_deployment()"},{"line_number":629,"context_line":"        validation_resources \u003d self.get_test_validation_resources("}],"source_content_type":"text/x-python","patch_set":21,"id":"2f8cd859_d90f1bdf","line":626,"in_reply_to":"150ed37f_c1a07a38","updated":"2024-05-08 12:28:18.000000000","message":"the upstream docs are here https://docs.openstack.org/nova/latest/admin/virtual-gpu.html#caveats\n\nupstream i belive rebuild/evacuate was supported form day 1\n\nit was not called out in the upstream doc or orgial release note https://github.com/openstack/nova/blob/95bfa492e99530b5fbed33bef926064d90c6e868/releasenotes/notes/add-support-for-vgpu-libvirt-91d2983e643f5ff1.yaml#L8\n\ni know there was specific bug with evacuate where because it uses a single allocation for both hosts it can fail to evacuate depending on the order of the host\n\nthat will be fixed when https://review.opendev.org/c/openstack/nova/+/846786\nis merged but its not fixed yet\n\nso as a result you have a 50% chance this will fail to day as we currently only check the first host allocation\n\ntldr we shoudl add a skip decorator referncing https://bugs.launchpad.net/nova/+bug/1874664","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"b5da37fed08a2a4abb17752d7582ec5daf07e41a","unresolved":true,"context_lines":[{"line_number":623,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":624,"context_line":"            raise cls.skipException(msg)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def test_server_evacuate_having_vgpu(self):"},{"line_number":627,"context_line":"        starting_rp_vgpu_inventory \u003d \\"},{"line_number":628,"context_line":"            self._get_vgpu_inventories_for_deployment()"},{"line_number":629,"context_line":"        validation_resources \u003d self.get_test_validation_resources("}],"source_content_type":"text/x-python","patch_set":21,"id":"150ed37f_c1a07a38","line":626,"in_reply_to":"2416a3fe_a3d177e0","updated":"2024-05-03 06:36:40.000000000","message":"I did not find any doc too, upstream.","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80e688dade0a502fd70053aecb2948038e4407fe","unresolved":true,"context_lines":[{"line_number":623,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":624,"context_line":"            raise cls.skipException(msg)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def test_server_evacuate_having_vgpu(self):"},{"line_number":627,"context_line":"        starting_rp_vgpu_inventory \u003d \\"},{"line_number":628,"context_line":"            self._get_vgpu_inventories_for_deployment()"},{"line_number":629,"context_line":"        validation_resources \u003d self.get_test_validation_resources("}],"source_content_type":"text/x-python","patch_set":21,"id":"71ec0aee_a5f82043","line":626,"in_reply_to":"2f8cd859_d90f1bdf","updated":"2024-05-10 14:24:56.000000000","message":"first I tried with testtools.skip - this shows msg as skipped while run, but pep8 failed it and asked to use decorators.skip_because, this is also in guideline \nhttps://docs.openstack.org/tempest/latest/HACKING.html#test-skips-because-of-known-bugs\n\nwith decorators.skip_because, tempest regex could not find the class itself and we do not have any skip message, is this alright ?\nalso its not coming here https://ce3fc370f6759f080c25-b7f3c9c6d98503c036f2f80a70cafaa0.ssl.cf2.rackcdn.com/915393/28/check/whitebox-devstack-multinode/4d270a6/testr_results.html","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":623,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":624,"context_line":"            raise cls.skipException(msg)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def test_server_evacuate_having_vgpu(self):"},{"line_number":627,"context_line":"        starting_rp_vgpu_inventory \u003d \\"},{"line_number":628,"context_line":"            self._get_vgpu_inventories_for_deployment()"},{"line_number":629,"context_line":"        validation_resources \u003d self.get_test_validation_resources("}],"source_content_type":"text/x-python","patch_set":21,"id":"688c52f4_282c4223","line":626,"in_reply_to":"71ec0aee_a5f82043","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d977ba0fb4b467ff7fd62e110c4b79485a993a2f","unresolved":true,"context_lines":[{"line_number":624,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":625,"context_line":"            raise cls.skipException(msg)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    def _shutdown_server(self, host, server_id):"},{"line_number":628,"context_line":"        virsh_shell \u003d clients.HostShell(host)"},{"line_number":629,"context_line":"        server \u003d self.os_admin.servers_client.show_server(server_id)[\u0027server\u0027]"},{"line_number":630,"context_line":"        domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"}],"source_content_type":"text/x-python","patch_set":36,"id":"682d55c3_592015da","line":627,"updated":"2024-05-24 17:45:50.000000000","message":"Ditto - re: move to base class.","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":624,"context_line":"            msg \u003d \"Need two or more compute nodes to execute evacuate.\""},{"line_number":625,"context_line":"            raise cls.skipException(msg)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    def _shutdown_server(self, host, server_id):"},{"line_number":628,"context_line":"        virsh_shell \u003d clients.HostShell(host)"},{"line_number":629,"context_line":"        server \u003d self.os_admin.servers_client.show_server(server_id)[\u0027server\u0027]"},{"line_number":630,"context_line":"        domain \u003d server[\u0027OS-EXT-SRV-ATTR:instance_name\u0027]"}],"source_content_type":"text/x-python","patch_set":36,"id":"0d90079c_233e2137","line":627,"in_reply_to":"682d55c3_592015da","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"}],"whitebox_tempest_plugin/common/waiters.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"18ca9169cd97b3e22e627fce0d62518ceffe932b","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def wait_for_server_migration_complete("},{"line_number":39,"context_line":"        migrations_client, server_id, timeout\u003d60, interval\u003d1):"},{"line_number":40,"context_line":"    start_time \u003d int(time.time())"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    while int(time.time()) - start_time \u003c\u003d timeout:"}],"source_content_type":"text/x-python","patch_set":28,"id":"8be54da3_9320b3da","line":39,"updated":"2024-05-12 20:17:15.000000000","message":"nit: we probably don\u0027t need to pass the timeout and interval here, and rely on the values in CONF/the client.","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def wait_for_server_migration_complete("},{"line_number":39,"context_line":"        migrations_client, server_id, timeout\u003d60, interval\u003d1):"},{"line_number":40,"context_line":"    start_time \u003d int(time.time())"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    while int(time.time()) - start_time \u003c\u003d timeout:"}],"source_content_type":"text/x-python","patch_set":28,"id":"ec6a862f_fa9c2911","line":39,"in_reply_to":"55495e2b_db683bfd","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"cb5f2998895e28cccc0cac6bdf0d6c1fc74b4856","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def wait_for_server_migration_complete("},{"line_number":39,"context_line":"        migrations_client, server_id, timeout\u003d60, interval\u003d1):"},{"line_number":40,"context_line":"    start_time \u003d int(time.time())"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    while int(time.time()) - start_time \u003c\u003d timeout:"}],"source_content_type":"text/x-python","patch_set":28,"id":"55495e2b_db683bfd","line":39,"in_reply_to":"8be54da3_9320b3da","updated":"2024-05-14 08:04:05.000000000","message":"Acknowledged, passed client","commit_id":"bd439be2f168c96428130edab57d7c73fbc0fd85"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d977ba0fb4b467ff7fd62e110c4b79485a993a2f","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":"from whitebox_tempest_plugin.exceptions import MigrationException"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"561b8eed_495be5bf","line":17,"updated":"2024-05-24 17:45:50.000000000","message":"nit: why move this?","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":"from whitebox_tempest_plugin.exceptions import MigrationException"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"752a9785_1d95e455","line":17,"in_reply_to":"561b8eed_495be5bf","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d977ba0fb4b467ff7fd62e110c4b79485a993a2f","unresolved":true,"context_lines":[{"line_number":54,"context_line":"            \u0027complete, within the required time: (%s s)\u0027 % timeout)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def wait_for_system_service_status(ssh_shell, cmd, expected, timeout\u003d10):"},{"line_number":58,"context_line":"    msg, wait_counter \u003d \u0027\u0027, 0"},{"line_number":59,"context_line":"    while msg not in expected and wait_counter \u003c 6:"},{"line_number":60,"context_line":"        time.sleep(timeout)"}],"source_content_type":"text/x-python","patch_set":36,"id":"29cc367b_738c9077","line":57,"updated":"2024-05-24 17:45:50.000000000","message":"We can get rid of this now, no?","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            \u0027complete, within the required time: (%s s)\u0027 % timeout)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def wait_for_system_service_status(ssh_shell, cmd, expected, timeout\u003d10):"},{"line_number":58,"context_line":"    msg, wait_counter \u003d \u0027\u0027, 0"},{"line_number":59,"context_line":"    while msg not in expected and wait_counter \u003c 6:"},{"line_number":60,"context_line":"        time.sleep(timeout)"}],"source_content_type":"text/x-python","patch_set":36,"id":"534168c8_9c3adc84","line":57,"in_reply_to":"29cc367b_738c9077","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"5f16233e7718abf2a86f41f382cae68fdb177608"}],"whitebox_tempest_plugin/services/clients.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"b356818d9791e329c28531ea53ba6dd60cdd2477","unresolved":true,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def update_state(self, force_down\u003dTrue):"},{"line_number":267,"context_line":"        if force_down:"},{"line_number":268,"context_line":"            # self.stop()"},{"line_number":269,"context_line":"            self.services_client.update_forced_down("},{"line_number":270,"context_line":"                host\u003dself.host, binary\u003dself.service, forced_down\u003dTrue)"},{"line_number":271,"context_line":"            waiters.wait_for_nova_service_state("}],"source_content_type":"text/x-python","patch_set":21,"id":"08010be6_e4a423aa","line":268,"updated":"2024-04-29 16:14:09.000000000","message":"can I please get revie on this, evacuation works without stoping devstack@n-cpu as well on compute node","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85dbf29842dda83711bf113d870d9807a7e5f480","unresolved":true,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def update_state(self, force_down\u003dTrue):"},{"line_number":267,"context_line":"        if force_down:"},{"line_number":268,"context_line":"            # self.stop()"},{"line_number":269,"context_line":"            self.services_client.update_forced_down("},{"line_number":270,"context_line":"                host\u003dself.host, binary\u003dself.service, forced_down\u003dTrue)"},{"line_number":271,"context_line":"            waiters.wait_for_nova_service_state("}],"source_content_type":"text/x-python","patch_set":21,"id":"2e6bcf0b_19162191","line":268,"in_reply_to":"08010be6_e4a423aa","updated":"2024-05-08 12:28:18.000000000","message":"it does but one of the preconditions is that the vm must be stop on the souce node.\n\nso we dont technially need to stop the agent but its more correct to do so.\n\nwe normally tell peopel to fully power off the souce host before evacuating","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def update_state(self, force_down\u003dTrue):"},{"line_number":267,"context_line":"        if force_down:"},{"line_number":268,"context_line":"            # self.stop()"},{"line_number":269,"context_line":"            self.services_client.update_forced_down("},{"line_number":270,"context_line":"                host\u003dself.host, binary\u003dself.service, forced_down\u003dTrue)"},{"line_number":271,"context_line":"            waiters.wait_for_nova_service_state("}],"source_content_type":"text/x-python","patch_set":21,"id":"c2417c4d_c02b4ea0","line":268,"in_reply_to":"23307563_599d90ef","updated":"2024-05-25 08:41:08.000000000","message":"Acknowledged","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"89df3fb909f4300d199c22b3e08b41fbc54bb82f","unresolved":true,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def update_state(self, force_down\u003dTrue):"},{"line_number":267,"context_line":"        if force_down:"},{"line_number":268,"context_line":"            # self.stop()"},{"line_number":269,"context_line":"            self.services_client.update_forced_down("},{"line_number":270,"context_line":"                host\u003dself.host, binary\u003dself.service, forced_down\u003dTrue)"},{"line_number":271,"context_line":"            waiters.wait_for_nova_service_state("}],"source_content_type":"text/x-python","patch_set":21,"id":"3ccf2dea_fe4096b3","line":268,"in_reply_to":"2e6bcf0b_19162191","updated":"2024-05-09 09:46:42.000000000","message":"on enable stop, its failing in CI, because it takes too much time to stop and start.","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a5a88cd6420de7e32b52928d61949bc7e69ba831","unresolved":true,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def update_state(self, force_down\u003dTrue):"},{"line_number":267,"context_line":"        if force_down:"},{"line_number":268,"context_line":"            # self.stop()"},{"line_number":269,"context_line":"            self.services_client.update_forced_down("},{"line_number":270,"context_line":"                host\u003dself.host, binary\u003dself.service, forced_down\u003dTrue)"},{"line_number":271,"context_line":"            waiters.wait_for_nova_service_state("}],"source_content_type":"text/x-python","patch_set":21,"id":"8376a535_dde6a2eb","line":268,"in_reply_to":"3ccf2dea_fe4096b3","updated":"2024-05-09 12:35:19.000000000","message":"if you just do ForceDown then technially you aren invlaidating the test\nby not meeting the preconditons of evacuate.\n\nevacuate requirs that both the nova-compute agent on the souce host and the vm is not running.","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80b9ea36af3f5c9fe0c83312af0ca6ad5ffbe7f4","unresolved":true,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def update_state(self, force_down\u003dTrue):"},{"line_number":267,"context_line":"        if force_down:"},{"line_number":268,"context_line":"            # self.stop()"},{"line_number":269,"context_line":"            self.services_client.update_forced_down("},{"line_number":270,"context_line":"                host\u003dself.host, binary\u003dself.service, forced_down\u003dTrue)"},{"line_number":271,"context_line":"            waiters.wait_for_nova_service_state("}],"source_content_type":"text/x-python","patch_set":21,"id":"23307563_599d90ef","line":268,"in_reply_to":"813603b3_f284e2a5","updated":"2024-05-17 11:24:25.000000000","message":"just a note here.\nwhen we evacuate server without stopping it, server stays running at src node.\nserver is at both nodes with same name (instance-00xxx).\nboth are accessible from virsh, \nNova knows about only destination server.","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80e688dade0a502fd70053aecb2948038e4407fe","unresolved":true,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def update_state(self, force_down\u003dTrue):"},{"line_number":267,"context_line":"        if force_down:"},{"line_number":268,"context_line":"            # self.stop()"},{"line_number":269,"context_line":"            self.services_client.update_forced_down("},{"line_number":270,"context_line":"                host\u003dself.host, binary\u003dself.service, forced_down\u003dTrue)"},{"line_number":271,"context_line":"            waiters.wait_for_nova_service_state("}],"source_content_type":"text/x-python","patch_set":21,"id":"813603b3_f284e2a5","line":268,"in_reply_to":"8376a535_dde6a2eb","updated":"2024-05-10 14:24:56.000000000","message":"fixed stop and start, now we are stoping devstack@n-cpu before evacuation.","commit_id":"ab9857af6241bf91c88d9e7127eb8e44c05c9eb5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"80b9ea36af3f5c9fe0c83312af0ca6ad5ffbe7f4","unresolved":true,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        return result"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    # def startz(self):"},{"line_number":258,"context_line":"    #     result \u003d self.execute(self.start_command, sudo\u003dTrue)"},{"line_number":259,"context_line":"    #     cmd \u003d self.start_command.replace(\u0027start\u0027, \u0027is-active\u0027)"},{"line_number":260,"context_line":"    #     expected \u003d [\u0027active\u0027]"}],"source_content_type":"text/x-python","patch_set":35,"id":"bd3c5164_8dc5ce06","line":257,"updated":"2024-05-17 11:24:25.000000000","message":"thees are required for local test, I\u0027ll remove these once its ready to merge.\nthis code is commeneted, so its not affecting CI","commit_id":"c0ed7b0c443859838408563d9c5ec48ba223fa8a"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0110576edfbbe808232c4862fd7ffa046d995fa6","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        return result"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    # def startz(self):"},{"line_number":258,"context_line":"    #     result \u003d self.execute(self.start_command, sudo\u003dTrue)"},{"line_number":259,"context_line":"    #     cmd \u003d self.start_command.replace(\u0027start\u0027, \u0027is-active\u0027)"},{"line_number":260,"context_line":"    #     expected \u003d [\u0027active\u0027]"}],"source_content_type":"text/x-python","patch_set":35,"id":"9b08f7a0_3b0a03be","line":257,"in_reply_to":"bd3c5164_8dc5ce06","updated":"2024-05-25 08:41:08.000000000","message":"Done","commit_id":"c0ed7b0c443859838408563d9c5ec48ba223fa8a"}]}
