)]}'
{"id":"openstack%2Fwatcher~993352","triplet_id":"openstack%2Fwatcher~master~I4d5bb5db6b4a46b8b83e02c573801863ff1e66fd","project":"openstack/watcher","branch":"master","topic":"blueprint-functional-test-infrastructure-v2","attention_set":{"30002":{"account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"last_update":"2026-07-03 19:30:13.000000000","reason":"\u003cGERRIT_ACCOUNT_16312\u003e replied on the change","reason_account":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"}},"16312":{"account":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"last_update":"2026-07-08 10:15:25.000000000","reason":"\u003cGERRIT_ACCOUNT_34452\u003e replied on the change","reason_account":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}}},"removed_from_attention_set":{"26471":{"account":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"last_update":"2026-07-02 18:52:32.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"I4d5bb5db6b4a46b8b83e02c573801863ff1e66fd","subject":"Add Nova/Placement emulators and host_maintenance functional tests","status":"NEW","created":"2026-06-15 12:57:03.000000000","updated":"2026-07-08 10:15:25.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":33,"unresolved_comment_count":16,"has_review_started":true,"meta_rev_id":"1032c5d5ce76724b706cce895700dce39823e3f1","_number":993352,"virtual_id_number":993352,"owner":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-07-02 19:05:07.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"disliked":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"all":[{"value":-1,"date":"2026-07-03 16:09:35.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":-1,"date":"2026-07-02 18:52:32.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":-1,"default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":2},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Standard Change","+1":"Important Change","+2":"High Priority Change"},"default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}],"REVIEWER":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-15 13:25:05.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-06-15 15:54:32.000000000","updated_by":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"reviewer":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"state":"REVIEWER"},{"updated":"2026-06-25 06:17:54.000000000","updated_by":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"reviewer":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"state":"CC"},{"updated":"2026-07-02 19:12:01.000000000","updated_by":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"reviewer":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"state":"CC"},{"updated":"2026-07-03 16:09:35.000000000","updated_by":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"reviewer":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"state":"REVIEWER"},{"updated":"2026-07-08 10:15:25.000000000","updated_by":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"reviewer":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"state":"CC"}],"messages":[{"id":"3432b1d8321d12e34eda7dcb42efbbdcb5916dfa","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-06-15 12:57:03.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"4c6c0584cc44385652785ef34c88759b3e6a10c2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-15 13:25:05.000000000","message":"Patch Set 1: Verified-1\n\n(3 comments)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/5d594f08abf3436aa0b30ffbbfafdc34\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/1aa3fa2603c4404ab1e76877bfc276ad : SUCCESS in 4m 23s\n- requirements-check https://zuul.opendev.org/t/openstack/build/30235c46f0c641779ae93e5de1c0ab52 : FAILURE in 3m 08s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/f39bcd5502d34e17ab383a062729b4d1 : FAILURE in 8m 48s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bf2ec580d29943f1be111902663a52ef : FAILURE in 4m 42s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/89156eb13c13420c8ae21d336ce554cd : SUCCESS in 5m 50s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/ab93a13e98054d329208c9dd8c9d238a : SUCCESS in 5m 23s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/d4a26cc040c040548611630fe4cd65ab : FAILURE in 8m 49s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/39102763c2e84b0fb440ba1ed0d00ccc : SUCCESS in 10m 50s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/677607e8c4084f94bc956b09ff81d4d0 : SUCCESS in 4m 48s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/eccb2b7045d644d19d236888ed448605 : SUCCESS in 5m 27s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/0e33f6ee68d44cafbc81d43f07f94068 : FAILURE in 5m 23s","accounts_in_message":[],"_revision_number":1},{"id":"da2f72d598c522b33d5124b958912ad90dcba19a","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-15 15:54:32.000000000","message":"Patch Set 1: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/fdc2cc674db94da7975cb286195e2765\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/660c701b11384d1c83efba623f87e37e : SUCCESS in 2h 56m 10s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/d02467551b344ef5984542416176b7b8 : SUCCESS in 2h 08m 31s","accounts_in_message":[],"_revision_number":1},{"id":"b0fe73cfffee1e63a58f75780256f1a2442f26e6","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-06-16 09:51:54.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"a43cf71aa16fd4470ec62c0cb0ccabaaa6df668f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-16 10:08:32.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/02096fbf6fc844c78714ba5924e70e45\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/049e32bacec547bfba66e1d3825f3e43 : SUCCESS in 4m 53s\n- requirements-check https://zuul.opendev.org/t/openstack/build/3dc64415efe9496e8128683026e56dab : SUCCESS in 2m 44s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/700bc3ad51b043cfaf526e7abf92b962 : SUCCESS in 7m 57s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/6af1fe529a664a009a972c9c4092af2a : FAILURE in 3m 33s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/75a9c653197c457b97d2a88c4579f075 : SUCCESS in 5m 18s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/2c6fb3b936e24f6493244ca7203de88e : SUCCESS in 6m 36s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/1e7351434f5345fe98370eec8ac56afc : SUCCESS in 6m 02s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/62eababd03ba4a4481c3a413a4bab5ac : SUCCESS in 6m 49s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/c8370f0b08de43d99ea1f57c16001d5f : SUCCESS in 4m 41s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/4dc95185949d49ce9d53d89b9ec4551b : SUCCESS in 5m 04s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/9183116b1bf44d048cdbaec3e5d8ad18 : SUCCESS in 3m 51s","accounts_in_message":[],"_revision_number":2},{"id":"623f820a2d1bf23b749cd058eb8ca00aca13670d","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-16 14:05:11.000000000","message":"Patch Set 2: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/6cc5ba6b9f624f12a2ea47161dbaebf7\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/ea8b91cea7d745b6946a5c77ef86997f : SUCCESS in 3h 06m 04s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/6702b26678d24440839803abb4231c24 : SUCCESS in 2h 12m 44s","accounts_in_message":[],"_revision_number":2},{"id":"0e4a69369256964f05c78332efc774b56244d4e5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-06-16 16:14:01.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"53c396e0632e20051e4bec7bf590ecbdebed448c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-16 16:31:32.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/32804c5222c6461fac6911e580f2998a\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/882f4d23d6a148bf82629a269d491d47 : SUCCESS in 3m 51s\n- requirements-check https://zuul.opendev.org/t/openstack/build/6f615d3f84de45c59b5267616f13f65c : SUCCESS in 2m 45s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c4226430f1d34765bd5142481545c588 : SUCCESS in 4m 23s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9b563e91dc954da69a6a324d4391d756 : SUCCESS in 4m 24s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/26d10800958546b0b68629753d61ffbe : SUCCESS in 8m 17s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/6e12f91f484b448d8d10f8a8bb9e188b : SUCCESS in 5m 09s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/40171cc269ed4c82a2dfd9d34d9b434f : SUCCESS in 11m 11s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0af377ef4b5249feb0fcefeb967dd287 : SUCCESS in 5m 10s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/045668668fab4f9d91562f5013fc3eb7 : SUCCESS in 4m 55s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/ad2b6ec5e53b41b5b87ce041960b01ef : SUCCESS in 5m 02s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/8542d9e03e004e8ab1f8b382597e4d99 : SUCCESS in 2m 51s","accounts_in_message":[],"_revision_number":3},{"id":"40814f93f30795ddc320f2a670b0289990d18158","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-16 19:10:28.000000000","message":"Patch Set 3: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/4bac4b36c355449f89491fba72173025\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/017aa0b8adb04523a1290687ce1ae325 : SUCCESS in 2h 54m 52s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/da49709aac3c46bc8bf1385991205455 : SUCCESS in 2h 07m 32s","accounts_in_message":[],"_revision_number":3},{"id":"e0925318843c1bb12bf80b6775f677130d8360cb","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-06-25 06:17:21.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"7277cb3d3382a30a163025ef6263c82fa6d486ec","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-06-25 06:17:54.000000000","message":"Patch Set 4:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":4},{"id":"4b79d21b754f5395284b384506e8ab360a580085","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-25 06:38:54.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/682b0bbdff134a16803c2cf5d9917036\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/82cfc85a9b8843168bd86d9247aae38a : SUCCESS in 4m 07s\n- requirements-check https://zuul.opendev.org/t/openstack/build/83745ffeed4b4eef8e7b14a22bec0f9f : SUCCESS in 2m 38s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c42f4c81971b463090686bb5695379ff : SUCCESS in 7m 51s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ae64ae990ddf4f5ba8020455c299fdbc : SUCCESS in 5m 37s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/0c3cac8eba0145e396fe1a6d11b04f5e : SUCCESS in 4m 59s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/76281ecccaab47afb60f009b23261b38 : SUCCESS in 3m 11s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f4e2ecbb536749a7a2e19f96112d85e8 : SUCCESS in 7m 09s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8d78119737a940ff9e517a569fd17402 : SUCCESS in 7m 32s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f98493e2854c4cf3920ad129286a36ea : SUCCESS in 4m 48s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/18335460a1844269990c5355835cf368 : SUCCESS in 6m 38s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/5f61f6febf464123804d143ebc471918 : SUCCESS in 5m 06s","accounts_in_message":[],"_revision_number":4},{"id":"49bf05ca0912d1605f257c7c96460e1528088d62","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-25 09:14:33.000000000","message":"Patch Set 4: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/d90eeb6417da4650b8f587c737140b92\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/a68749d4290f4c62a9ef1af19ba7626f : SUCCESS in 2h 55m 33s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/dadf80c2a096438f9b6b32ebc3c56a36 : SUCCESS in 2h 12m 57s","accounts_in_message":[],"_revision_number":4},{"id":"30dc6bb20d643f21d6bef6731b596f8518d5c2cf","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-06-25 09:19:21.000000000","message":"Patch Set 4:\n\n(4 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/a2d2ab6f8b654b83b158251cefb2e13c\n\n- teim-code-review https://zuul.teim.app/t/main/build/c8ea79bd2eac40879ea18f1d6a3589c9 : SUCCESS in 25m 44s\n\nWarning:\n  test_scope_exclude_instance documents bug #2154805: host_maintenance does not check watcher_exclude, so an excluded instance is still migrated. The test asserts the BUGGY behavior (3 migrations, not 2) with a commented-out TODO. This is well-documented but means the test enforces incorrect behavior. Impact: The test will need updating when bug #2154805 is fixed. If the fix lands without updating this test, the test will fail (expecting 3 migrations but getting 2). This is acceptable as a regression marker but should be tracked. Recommendation: Ensure the bug is tracked and the test TODO is actionable. Consider adding a clearer comment indicating the test must be updated alongside the bug fix to avoid confusion when it fails after the fix.","accounts_in_message":[],"_revision_number":4},{"id":"619818b62a4f4cf0030f74511a56a62e9ded8212","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-07-02 18:42:22.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"4a652ad7e48a1187d32492565e9b8bd6515b3d77","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-02 18:42:54.000000000","message":"Patch Set 5:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":5},{"id":"7f404d1694c2504a11b02f402bf559d96427f924","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-07-02 18:52:32.000000000","message":"Patch Set 5: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/ce6cd5b72ec74a599509df8f4bd54168\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/7c08e8a745eb4293b11be2f788485734 : FAILURE in 8m 32s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/0ea3af23e3f448e8a8869c0f37aed002 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":5},{"id":"ac105d3a7c98e8edc5365ce42f7b96d28ccb640f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-02 19:05:07.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e279e9a9e2094d339d05abe544ec1bb0\n\n- build-openstack-api-ref https://zuul.opendev.org/t/openstack/build/59cbb066d67d4393ae373f7f8abfe906 : SUCCESS in 4m 34s\n- requirements-check https://zuul.opendev.org/t/openstack/build/a1fabf242140464eabb544eaca0d1d73 : SUCCESS in 2m 34s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/01da093ef7ef482b8a614c31efdc2331 : SUCCESS in 7m 57s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ae7c90f7822a465499691b7cf04a7728 : SUCCESS in 2m 35s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/32fc1ba4a77248b9aa4a104b09f6526a : SUCCESS in 6m 05s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/baf7805352dc45c49daea2c24410aa6f : SUCCESS in 5m 32s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/d5195ed679d64e529c70f4546e62fa4c : SUCCESS in 9m 25s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0db10d1fe7cb46ceb67ff753bb4f7215 : SUCCESS in 5m 54s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/1271a7e6b54f47ec9f1ad1b95de38a63 : SUCCESS in 5m 27s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/e9ef1becef094c529674025f61a26662 : SUCCESS in 5m 26s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/8775f01791854e25a2216e6586249eac : SUCCESS in 6m 38s","accounts_in_message":[],"_revision_number":5},{"id":"5ee84f497dc0ca7a979b553ec30ba9a7bbcb9683","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-07-02 19:12:01.000000000","message":"Patch Set 4:\n\n(4 comments)","accounts_in_message":[],"_revision_number":4},{"id":"1b801a94a13e27f14d5d093d917217880adc1859","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-07-02 19:37:54.000000000","message":"Patch Set 5:\n\n(5 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/e80cee8e760f42f58eed6afcfe4224a8\n\n- teim-code-review https://zuul.teim.app/t/main/build/edae382bb66c46bfbaaf6d4026cd3747 : SUCCESS in 13m 51s\n\nWarning:\n  test-requirements.txt adds Flask\u003e\u003d2.0.0 and wsgi-intercept\u003e\u003d1.2.2 as test dependencies. Flask is a relatively heavy dependency to pull into a test stack that otherwise uses oslo/mocking patterns. This is acceptable for the emulator approach, but the lower bounds should be checked against the CI environment. Impact: New transitive dependencies (Flask pulls in Werkzeug, Jinja2, etc.) increase install footprint and potential version-conflict surface for the test environment. Recommendation: Verify the new dependencies install cleanly in the project\u0027s tox/CI constraints and consider pinning via upper-constraints if not already.","accounts_in_message":[],"_revision_number":5},{"id":"17cf3fa93dc22ab02a80b2636b0a19ce5f074f92","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-03 16:09:35.000000000","message":"Patch Set 5: Code-Review-1\n\n(7 comments)","accounts_in_message":[],"_revision_number":5},{"id":"e1984db3b3212adbf55c0a2eed0a04690df5d036","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-07-03 19:30:13.000000000","message":"Patch Set 5:\n\n(3 comments)","accounts_in_message":[],"_revision_number":5},{"id":"1032c5d5ce76724b706cce895700dce39823e3f1","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-07-08 10:15:25.000000000","message":"Patch Set 5:\n\n(7 comments)","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"84372a10e06a1f559a071cc02fd091f826351483","revisions":{"6b5c909ef91652a8045f90697f079e534f132a38":{"kind":"REWORK","_number":1,"created":"2026-06-15 12:57:03.000000000","uploader":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"ref":"refs/changes/52/993352/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/52/993352/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/52/993352/1"}}},"commit":{"parents":[{"commit":"54493704206279e63b9b140d6f75a28a9829c754","subject":"Add functional test framework for Watcher","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/54493704206279e63b9b140d6f75a28a9829c754"}]}],"author":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-15 12:51:53.000000000","tz":120},"committer":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-15 12:56:15.000000000","tz":120},"subject":"Add Nova/Placement emulators and host_maintenance functional tests","message":"Add Nova/Placement emulators and host_maintenance functional tests\n\nAdd emulated Nova and Placement APIs that allow functional tests\nto run against a configurable cluster topology without requiring\nreal OpenStack services. The emulators support compute nodes,\ninstances, aggregates, and placement inventories/allocations,\nenabling end-to-end validation of strategy behavior from audit\ncreation through action plan generation and execution.\n\nThe host_maintenance strategy is used as the first example of\nthis approach, with tests covering:\n- Live and cold migration with and without backup nodes\n- Capacity-constrained failover to nova-scheduler\n- Disabled migration modes\n- Audit scope filtering via host_aggregates, excluded nodes,\n  and excluded instances (documents bug #2154805)\n- Negative cases where maintenance_node falls outside scope\n\nSupporting infrastructure:\n- Nova/Placement API emulators with reload_topology() for\n  per-test cluster configuration\n- Reusable assertion and wait helpers in the base test class\n- Documentation of emulator topology format in testing.rst\n- nova and placement emulators can be used in standalone mode\n  as drop-in services for real nova and placement services.\n\nAssisted-By: Claude\nChange-Id: I4d5bb5db6b4a46b8b83e02c573801863ff1e66fd\nSigned-off-by: Alfredo Moralejo \u003camoralej@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/6b5c909ef91652a8045f90697f079e534f132a38"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/6b5c909ef91652a8045f90697f079e534f132a38"}]},"branch":"refs/heads/master"},"356d8f14c2286f994cd8dad623c6974a7982659b":{"kind":"REWORK","_number":2,"created":"2026-06-16 09:51:54.000000000","uploader":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"ref":"refs/changes/52/993352/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/52/993352/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/52/993352/2"}}},"commit":{"parents":[{"commit":"21b17d286ddbb86697d734cb7d4320831713ff45","subject":"Add functional test framework for Watcher","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/21b17d286ddbb86697d734cb7d4320831713ff45"}]}],"author":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-15 12:51:53.000000000","tz":120},"committer":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-16 09:19:06.000000000","tz":120},"subject":"Add Nova/Placement emulators and host_maintenance functional tests","message":"Add Nova/Placement emulators and host_maintenance functional tests\n\nAdd emulated Nova and Placement APIs that allow functional tests\nto run against a configurable cluster topology without requiring\nreal OpenStack services. The emulators support compute nodes,\ninstances, aggregates, and placement inventories/allocations,\nenabling end-to-end validation of strategy behavior from audit\ncreation through action plan generation and execution.\n\nThe host_maintenance strategy is used as the first example of\nthis approach, with tests covering:\n- Live and cold migration with and without backup nodes\n- Capacity-constrained failover to nova-scheduler\n- Disabled migration modes\n- Audit scope filtering via host_aggregates, excluded nodes,\n  and excluded instances (documents bug #2154805)\n- Negative cases where maintenance_node falls outside scope\n\nSupporting infrastructure:\n- Nova/Placement API emulators with reload_topology() for\n  per-test cluster configuration\n- Reusable assertion and wait helpers in the base test class\n- Documentation of emulator topology format in testing.rst\n- nova and placement emulators can be used in standalone mode\n  as drop-in services for real nova and placement services.\n\nAssisted-By: Claude\nImplements: blueprint functional-test-infrastructure\nChange-Id: I4d5bb5db6b4a46b8b83e02c573801863ff1e66fd\nSigned-off-by: Alfredo Moralejo \u003camoralej@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/356d8f14c2286f994cd8dad623c6974a7982659b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/356d8f14c2286f994cd8dad623c6974a7982659b"}]},"branch":"refs/heads/master"},"7937cd7a9025e8aab76e3f3b4febfa7f5838755c":{"kind":"REWORK","_number":3,"created":"2026-06-16 16:14:01.000000000","uploader":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"ref":"refs/changes/52/993352/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/52/993352/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/52/993352/3"}}},"commit":{"parents":[{"commit":"21b17d286ddbb86697d734cb7d4320831713ff45","subject":"Add functional test framework for Watcher","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/21b17d286ddbb86697d734cb7d4320831713ff45"}]}],"author":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-15 12:51:53.000000000","tz":120},"committer":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-16 15:56:17.000000000","tz":120},"subject":"Add Nova/Placement emulators and host_maintenance functional tests","message":"Add Nova/Placement emulators and host_maintenance functional tests\n\nAdd emulated Nova and Placement APIs that allow functional tests\nto run against a configurable cluster topology without requiring\nreal OpenStack services. The emulators support compute nodes,\ninstances, aggregates, and placement inventories/allocations,\nenabling end-to-end validation of strategy behavior from audit\ncreation through action plan generation and execution.\n\nThe host_maintenance strategy is used as the first example of\nthis approach, with tests covering:\n- Live and cold migration with and without backup nodes\n- Capacity-constrained failover to nova-scheduler\n- Disabled migration modes\n- Audit scope filtering via host_aggregates, excluded nodes,\n  and excluded instances (documents bug #2154805)\n- Negative cases where maintenance_node falls outside scope\n\nSupporting infrastructure:\n- Nova/Placement API emulators with reload_topology() for\n  per-test cluster configuration\n- Reusable assertion and wait helpers in the base test class\n- Documentation of emulator topology format in testing.rst\n- nova and placement emulators can be used in standalone mode\n  as drop-in services for real nova and placement services.\n\nAssisted-By: Claude\nImplements: blueprint functional-test-infrastructure\nChange-Id: I4d5bb5db6b4a46b8b83e02c573801863ff1e66fd\nSigned-off-by: Alfredo Moralejo \u003camoralej@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/7937cd7a9025e8aab76e3f3b4febfa7f5838755c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/7937cd7a9025e8aab76e3f3b4febfa7f5838755c"}]},"branch":"refs/heads/master"},"7e4e533afdd216499e24bee34365b1f3147448fc":{"kind":"REWORK","_number":4,"created":"2026-06-25 06:17:21.000000000","uploader":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"ref":"refs/changes/52/993352/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/52/993352/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/52/993352/4"}}},"commit":{"parents":[{"commit":"9a79329c8babdaf2d71653a23645ff431721a898","subject":"Add functional test framework for Watcher","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/9a79329c8babdaf2d71653a23645ff431721a898"}]}],"author":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-15 12:51:53.000000000","tz":120},"committer":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-25 06:17:11.000000000","tz":120},"subject":"Add Nova/Placement emulators and host_maintenance functional tests","message":"Add Nova/Placement emulators and host_maintenance functional tests\n\nAdd emulated Nova and Placement APIs that allow functional tests\nto run against a configurable cluster topology without requiring\nreal OpenStack services. The emulators support compute nodes,\ninstances, aggregates, and placement inventories/allocations,\nenabling end-to-end validation of strategy behavior from audit\ncreation through action plan generation and execution.\n\nThe host_maintenance strategy is used as the first example of\nthis approach, with tests covering:\n- Live and cold migration with and without backup nodes\n- Capacity-constrained failover to nova-scheduler\n- Disabled migration modes\n- Audit scope filtering via host_aggregates, excluded nodes,\n  and excluded instances (documents bug #2154805)\n- Negative cases where maintenance_node falls outside scope\n\nSupporting infrastructure:\n- Nova/Placement API emulators with reload_topology() for\n  per-test cluster configuration\n- Reusable assertion and wait helpers in the base test class\n- Documentation of emulator topology format in testing.rst\n- nova and placement emulators can be used in standalone mode\n  as drop-in services for real nova and placement services.\n\nAssisted-By: Claude\nImplements: blueprint functional-test-infrastructure\nChange-Id: I4d5bb5db6b4a46b8b83e02c573801863ff1e66fd\nSigned-off-by: Alfredo Moralejo \u003camoralej@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/7e4e533afdd216499e24bee34365b1f3147448fc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/7e4e533afdd216499e24bee34365b1f3147448fc"}]},"branch":"refs/heads/master"},"84372a10e06a1f559a071cc02fd091f826351483":{"kind":"REWORK","_number":5,"created":"2026-07-02 18:42:22.000000000","uploader":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"ref":"refs/changes/52/993352/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/52/993352/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/52/993352/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/52/993352/5"}}},"commit":{"parents":[{"commit":"466757230b9807c1c14366a7b031f737fd74f2a0","subject":"Add functional test framework for Watcher","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/466757230b9807c1c14366a7b031f737fd74f2a0"}]}],"author":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-06-15 12:51:53.000000000","tz":120},"committer":{"name":"Alfredo Moralejo","email":"amoralej@redhat.com","date":"2026-07-02 18:32:09.000000000","tz":120},"subject":"Add Nova/Placement emulators and host_maintenance functional tests","message":"Add Nova/Placement emulators and host_maintenance functional tests\n\nAdd emulated Nova and Placement APIs that allow functional tests\nto run against a configurable cluster topology without requiring\nreal OpenStack services. The emulators support compute nodes,\ninstances, aggregates, and placement inventories/allocations,\nenabling end-to-end validation of strategy behavior from audit\ncreation through action plan generation and execution.\n\nThe host_maintenance strategy is used as the first example of\nthis approach, with tests covering:\n- Live and cold migration with and without backup nodes\n- Capacity-constrained failover to nova-scheduler\n- Disabled migration modes\n- Audit scope filtering via host_aggregates, excluded nodes,\n  and excluded instances (documents bug #2154805)\n- Negative cases where maintenance_node falls outside scope\n\nSupporting infrastructure:\n- Nova/Placement API emulators with reload_topology() for\n  per-test cluster configuration\n- Reusable assertion and wait helpers in the base test class\n- Documentation of emulator topology format in testing.rst\n- nova and placement emulators can be used in standalone mode\n  as drop-in services for real nova and placement services.\n\nAssisted-By: Claude\nImplements: blueprint functional-test-infrastructure\nChange-Id: I4d5bb5db6b4a46b8b83e02c573801863ff1e66fd\nSigned-off-by: Alfredo Moralejo \u003camoralej@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/84372a10e06a1f559a071cc02fd091f826351483"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/84372a10e06a1f559a071cc02fd091f826351483"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}},{"label":"Workflow","status":"MAY"},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review Priority","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
