)]}'
{"watcher_tempest_plugin/config.py":[{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"ee59653f_915add06","line":165,"updated":"2026-04-29 13:04:58.000000000","message":"The config option help text for run_bfv_tests could mention that it requires Cinder to be available and the Depends-On watcher patch to be merged for meaningful test results.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Operators enabling this option would immediately know the prerequisites rather than discovering them through test failures.\n\n**Recommendation**:\nExpand the help text to mention that Cinder availability and the Watcher BFV disk accounting fix are prerequisites for these tests.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"565d3497_5a62256c","line":158,"updated":"2026-05-04 11:27:36.000000000","message":"The config option help text for run_zone_migration_storage_tests is missing a space: \u0027testsmigration\u0027 instead of \u0027tests migration\u0027 (pre-existing issue visible in the diff context).\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Pre-existing issue in an option added in a prior patch. The help string shown to operators will have a formatting error.\n\n**Suggestion**:\nChange \u0027testsmigration\u0027 to \u0027tests migration\u0027 by adding a space after \u0027tests\u0027 on line 158 in a follow-up cleanup patch.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"}],"watcher_tempest_plugin/infra_optim_clients.py":[{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"ff089574_f147d003","line":86,"updated":"2026-04-29 10:38:43.000000000","message":"The list_provider_inventory docstring has a trailing space before the closing triple-quote, which is a minor style issue but inconsistent with the existing list_provider_traits docstring format.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Minor inconsistency in code style. Not functionally harmful but reduces polish.\n\n**Suggestion**:\nChange \u0027 \"\"\"List resource provider inventories. \"\"\" \u0027 to \u0027 \"\"\"List resource provider inventories.\"\"\" \u0027 on a single line without trailing space, matching the pattern used for list_provider_traits above.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"53711e79_84cb61b1","line":86,"updated":"2026-04-29 13:04:58.000000000","message":"The new list_provider_inventory method docstring has an extra space before the closing triple-quote: trailing space inside the docstring on the summary line.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: Consistent docstring formatting across the codebase, matching the style of list_provider_traits above it.\n\n**Recommendation**:\nRemove the trailing space in the docstring and consider expanding it with :param and :return fields like the existing list_provider_traits method.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"5e547a2e_a23de0d8","line":85,"updated":"2026-04-30 08:33:21.000000000","message":"The list_provider_inventory method in ExtendPlacementClient has a brief docstring. The existing list_provider_traits method in the same class includes an API reference link, providing more context.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Adding the API reference link improves discoverability and helps future maintainers understand the underlying Placement API endpoint.\n\n**Recommendation**:\nExpand the docstring to include the API reference URL matching the style of list_provider_traits above it.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"f0abae11f1b044e98c4147ee9aa11245","url":"https://zuul.teim.app/t/main/buildset/f0abae11f1b044e98c4147ee9aa11245","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"cd9d9439bed708a535b516c8cfd3713ef985595c","patch_set":7,"id":"c34e2f1b_e319fd10","line":86,"updated":"2026-04-30 10:58:25.000000000","message":"The list_provider_inventory method in ExtendPlacementClient has a brief docstring but could benefit from documenting the return type and the API endpoint it wraps.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Consistent documentation style with the existing list_provider_traits method above it, and helps future contributors understand the return structure without reading the placement API docs.\n\n**Recommendation**:\nExpand the docstring to match the style of list_provider_traits above: mention the API reference URL, document the rp_uuid parameter, and note that it returns a ResponseBody with an \u0027inventories\u0027 key.","commit_id":"16d19bb3bdf3567d792b8edb6caae2fa1a0654c7"},{"robot_id":"zuul","robot_run_id":"6a882ad60af14376a31098326a1b2b8d","url":"https://zuul.teim.app/t/main/buildset/6a882ad60af14376a31098326a1b2b8d","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5c80fb496c8a7e5c12fac01d46b025091fbfbb89","patch_set":8,"id":"d159b49f_f61f384b","line":85,"updated":"2026-04-30 15:35:35.000000000","message":"The list_provider_inventory method in ExtendPlacementClient is structurally identical to the existing list_provider_traits method. Consider extracting a common pattern to reduce duplication.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Reduces code duplication and makes it easier to add more placement endpoints in the future. Both methods follow the exact same pattern: build URL, GET, check 200, parse JSON, return ResponseBody.\n\n**Recommendation**:\nConsider adding a private helper method like _get_placement_resource(self, url) that handles the common get/parse/return pattern, then both list_provider_traits and list_provider_inventory can delegate to it.","commit_id":"c8851b27dab4b56ba9e84a4771ab4df694708c9f"},{"robot_id":"zuul","robot_run_id":"d3ba8743433e4a368c5eea17579453d7","url":"https://zuul.teim.app/t/main/buildset/d3ba8743433e4a368c5eea17579453d7","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c82fb19017b0fa064ce6acb226cc463e8c22ce09","patch_set":9,"id":"3d5cb103_9f83f572","line":85,"updated":"2026-05-01 10:02:50.000000000","message":"The list_provider_inventory docstring could be more descriptive about the return value structure and the rp_uuid parameter meaning.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Improved API documentation for the new Placement client method, making it easier for future contributors to understand what the method returns and how to use it.\n\n**Recommendation**:\nExpand the docstring to document :param rp_uuid: and :returns: fields, matching the style of list_provider_traits above it. For example: \u0027:param rp_uuid: UUID of the resource provider. :returns: ResponseBody with inventory data for the resource provider.\u0027","commit_id":"d940640e5d5751589a2fe5ba7b57c321ec7aef9c"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"bd84c412_27c3d47a","line":89,"updated":"2026-05-04 11:27:36.000000000","message":"The list_provider_inventory docstring references a broken URL that splits across lines. This is the same pattern used by the existing list_provider_traits method.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Fixing the URL makes the docstring reference functional for developers who want to look up the API documentation.\n\n**Recommendation**:\nFollows the pre-existing convention from list_provider_traits above. If fixing, update both methods to use the correct full URL in a follow-up patch.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"}],"watcher_tempest_plugin/tests/scenario/base.py":[{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"fbde057f_159321b0","line":310,"updated":"2026-04-29 10:38:43.000000000","message":"The _create_custom_flavor docstring says \u0027Create a flavor with custom RAM size\u0027 but the method now also accepts a custom disk parameter. The docstring is outdated and does not document the disk parameter.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Developers reading the docstring will not know the disk parameter exists, leading to confusion or missed usage opportunities.\n\n**Suggestion**:\nUpdate the docstring to document all parameters: \u0027:param ram: RAM in MB\u0027, \u0027:param vcpus: Number of vCPUs\u0027, \u0027:param disk: Disk size in GB (default 1)\u0027. Also update the one-line summary to \u0027Create a flavor with custom parameters\u0027.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"35693f5a_bab2a792","line":377,"updated":"2026-04-29 10:38:43.000000000","message":"The volume_type parameter is accepted by _create_instance but is never used by any test in this patch. The parameter is declared and passed through to create_volume_from_image but no test exercises it.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Removing unused parameters keeps the API surface clean. Alternatively, if volume_type testing is planned for a follow-up patch, a NOTE comment would clarify intent.\n\n**Recommendation**:\nEither add a brief comment explaining that volume_type is included for future test use cases (e.g., testing with specific Cinder volume types), or remove it if no follow-up is planned. If keeping it, consider adding a follow-up test that exercises volume_type.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"97481ab6_57835c9a","line":1027,"updated":"2026-04-29 10:38:43.000000000","message":"The get_resource_provider_inventory docstring says \u0027Get resource provider details for a node\u0027 but the method actually returns all inventories for a resource provider, not general details. The docstring is slightly misleading.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Misleading docstring may cause confusion about what the method returns. Developers may expect a broader resource provider details object.\n\n**Suggestion**:\nUpdate the docstring to: \u0027Get resource provider inventories for a compute node.\u0027 Also update the :return: to \u0027Resource provider inventories dict keyed by resource class name\u0027.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"7b2f29b1_b8d9adeb","line":311,"updated":"2026-04-29 13:04:58.000000000","message":"The _create_custom_flavor docstring summary line does not end with a period, inconsistent with OpenStack docstring conventions (H404). The original docstring also had no period, but the patch extends the docstring.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Minor style inconsistency with OpenStack docstring standards. Not a functional issue.\n\n**Suggestion**:\nChange the docstring first line to end with a period: \u0027Create a flavor with custom RAM size.\u0027","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"3a2b67e1_df182c3e","line":378,"updated":"2026-04-29 13:04:58.000000000","message":"The volume_type parameter in _create_instance is accepted but never used in the two new BfV test classes. The volume_type kwarg is passed to create_volume_from_image only when truthy, yet no test exercises this path.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Dead parameter increases API surface without test coverage. Future callers may assume volume_type works but it is untested, potentially hiding bugs in volume-type-scoped BfV scenarios.\n\n**Suggestion**:\nEither add a test that exercises volume_type, or remove the parameter entirely and add it in a follow-up patch that includes corresponding test coverage. If kept, ensure the Cinder volume-type exists in the test environment.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"5e88ab35_c74f7646","line":1029,"updated":"2026-04-29 13:04:58.000000000","message":"Consider extracting the common BfV test setup pattern (skip checks, disk calculation, instance creation) into a shared helper or base BfV mixin class to reduce duplication between the two BfV test modules.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Would centralize BfV-specific helpers in the base class, making it easier to add more BfV tests in the future.\n\n**Recommendation**:\nNot blocking. The current duplication is manageable with two test classes, but if more BfV tests are added, consider a BfVMixinBase class in base.py.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"3d39b855_5dc9e8b7","line":1029,"updated":"2026-04-29 13:04:58.000000000","message":"The get_resource_provider_inventory docstring says \u0027Get resource provider details for a node\u0027 but the method actually returns only the inventories dict, not full provider details.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Misleading docstring could confuse future developers expecting a full resource provider response object.\n\n**Suggestion**:\nUpdate the docstring to: \u0027Get resource provider inventories for a compute node.\u0027 Also update the :return: to specify it returns a dict of inventory records keyed by resource class.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"77eb5639_2e3e1734","line":402,"updated":"2026-04-30 08:33:21.000000000","message":"The _create_instance method\u0027s boot_from_volume branch does not clean up the created volume on failure. If boot_instance_from_resource fails, the volume is leaked.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Adding volume cleanup would prevent resource leaks in CI environments during test failures, reducing flaky test rates.\n\n**Recommendation**:\nConsider adding self.addCleanup(test_utils.call_and_ignore_notfound_exc, self.delete_volume, volume[\u0027id\u0027]) after the volume is created in the BFV branch.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"ff903f9d_849cbe65","line":625,"updated":"2026-04-30 08:33:21.000000000","message":"In make_instance_statistic_gnocchi, the image_ref is set to an empty string for BFV instances. If Gnocchi validates image_ref format (expecting a UUID), this could cause resource creation failures.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: Passing an empty string where a UUID is expected may cause Gnocchi resource creation to fail silently or store invalid data, potentially making injected metrics ineffective.\n\n**Suggestion**:\nVerify that Gnocchi accepts an empty string for image_ref in the instance resource type. Add a brief inline comment explaining why an empty string is acceptable here, or use None if Gnocchi supports it.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"37a3a3c9_ab360fc1","line":1038,"updated":"2026-04-30 08:33:21.000000000","message":"The docstring for get_resource_provider_inventory uses \u0027:return:\u0027 but the OpenStack docstring convention (as followed elsewhere in this file) uses \u0027:returns:\u0027.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Inconsistent docstring format within the same file. Low risk but reduces documentation consistency.\n\n**Suggestion**:\nChange \u0027:return: Resource provider inventory\u0027 to \u0027:returns: Resource provider inventory\u0027 to match the rest of the codebase.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"f0abae11f1b044e98c4147ee9aa11245","url":"https://zuul.teim.app/t/main/buildset/f0abae11f1b044e98c4147ee9aa11245","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"cd9d9439bed708a535b516c8cfd3713ef985595c","patch_set":7,"id":"ae39bcce_d6f5c9ee","line":625,"updated":"2026-04-30 10:58:25.000000000","message":"The image_ref handling in make_instance_statistic_gnocchi uses a defensive fallback for BFV instances where instance[\u0027image\u0027] is an empty string rather than a dict, but does not log a debug message when this fallback is triggered.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: Without logging, if a non-BFV instance unexpectedly returns an empty string for the image field, the issue will be silently masked and harder to diagnose. The image_id will be set to \u0027\u0027 without any indication of why.\n\n**Suggestion**:\nAdd a LOG.debug() call when the image is not a dict, e.g.: LOG.debug(\u0027Instance %s has no image dict (boot-from-volume or imageless)\u0027, instance[\u0027id\u0027]). This aids debugging without changing behavior.","commit_id":"16d19bb3bdf3567d792b8edb6caae2fa1a0654c7"},{"robot_id":"zuul","robot_run_id":"f0abae11f1b044e98c4147ee9aa11245","url":"https://zuul.teim.app/t/main/buildset/f0abae11f1b044e98c4147ee9aa11245","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"cd9d9439bed708a535b516c8cfd3713ef985595c","patch_set":7,"id":"a213b6d9_a949b20e","line":1033,"updated":"2026-04-30 10:58:25.000000000","message":"The get_resource_provider_inventory helper in base.py returns the full inventories dict but all callers immediately index into [\u0027DISK_GB\u0027]. Consider adding a specific helper for disk inventory lookup.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: A dedicated get_available_disk_gb() helper would reduce code duplication across the three BFV test classes and make the intent clearer.\n\n**Recommendation**:\nConsider adding a helper like get_available_disk(resource_provider_id, resource_class\u003d\u0027DISK_GB\u0027) that returns the available capacity (total * allocation_ratio), consolidating the 4-line calculation currently repeated in each BFV test.","commit_id":"16d19bb3bdf3567d792b8edb6caae2fa1a0654c7"},{"robot_id":"zuul","robot_run_id":"6a882ad60af14376a31098326a1b2b8d","url":"https://zuul.teim.app/t/main/buildset/6a882ad60af14376a31098326a1b2b8d","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5c80fb496c8a7e5c12fac01d46b025091fbfbb89","patch_set":8,"id":"408f1e64_36a10eb6","line":1033,"updated":"2026-04-30 15:35:35.000000000","message":"The get_resource_provider_inventory method returns the full inventories dict but callers always index into it with [\u0027DISK_GB\u0027]. The method could accept an optional resource_class parameter to make the intent clearer.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Would improve readability and make it easier to use for other resource classes in the future. Callers currently need to know the internal structure of the Placement response.\n\n**Recommendation**:\nConsider adding an optional resource_class parameter: def get_resource_provider_inventory(self, res_id, resource_class\u003dNone). If resource_class is provided, return only that inventory entry. Keep the current behavior when resource_class is None.","commit_id":"c8851b27dab4b56ba9e84a4771ab4df694708c9f"},{"robot_id":"zuul","robot_run_id":"d3ba8743433e4a368c5eea17579453d7","url":"https://zuul.teim.app/t/main/buildset/d3ba8743433e4a368c5eea17579453d7","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c82fb19017b0fa064ce6acb226cc463e8c22ce09","patch_set":9,"id":"7c463ab3_2d7f6ec3","line":1,"updated":"2026-05-01 10:02:50.000000000","message":"The commit message uses \u0027Assisted-By: Claude\u0027 which correctly follows the OpenInfra AI policy for predictive AI assistance. The commit also has proper DCO sign-off and Change-Id.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: The commit metadata follows all OpenInfra Foundation AI policy requirements and DCO compliance rules, setting a good example for other contributors.\n\n**Recommendation**:\nNo action needed. The commit message format is exemplary with proper subject line, detailed body explaining why and what, Assisted-By tag, Signed-off-by, and Change-Id.","commit_id":"d940640e5d5751589a2fe5ba7b57c321ec7aef9c"},{"robot_id":"zuul","robot_run_id":"d3ba8743433e4a368c5eea17579453d7","url":"https://zuul.teim.app/t/main/buildset/d3ba8743433e4a368c5eea17579453d7","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c82fb19017b0fa064ce6acb226cc463e8c22ce09","patch_set":9,"id":"af5ca547_626529d7","line":624,"updated":"2026-05-01 10:02:50.000000000","message":"The image_ref handling in make_instance_statistic_gnocchi uses a defensive pattern for BFV instances (image may be empty string or empty dict). This is correct but could benefit from a brief inline comment explaining why.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: A comment would help future maintainers understand that BFV instances may have an empty image field in the Nova API response, which is the reason for the defensive get() call.\n\n**Recommendation**:\nAdd a comment like \u0027# BFV instances may return empty string or empty dict for image\u0027 before line 624 to clarify the defensive handling.","commit_id":"d940640e5d5751589a2fe5ba7b57c321ec7aef9c"},{"robot_id":"zuul","robot_run_id":"d3ba8743433e4a368c5eea17579453d7","url":"https://zuul.teim.app/t/main/buildset/d3ba8743433e4a368c5eea17579453d7","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c82fb19017b0fa064ce6acb226cc463e8c22ce09","patch_set":9,"id":"ca967354_0672f044","line":1033,"updated":"2026-05-01 10:02:50.000000000","message":"The get_resource_provider_inventory method in base.py only returns the \u0027inventories\u0027 sub-dict, losing access to the full response. Consider whether callers might need additional fields from the response.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Returning the full response body would provide more flexibility if future tests need resource_provider or other top-level fields from the inventories API response.\n\n**Recommendation**:\nConsider returning the full ResponseBody object and letting callers extract [\u0027inventories\u0027] themselves, or document that only the inventories sub-dict is returned. This is a minor point since current callers only need the inventories dict.","commit_id":"d940640e5d5751589a2fe5ba7b57c321ec7aef9c"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"a0188ee4_3a8040e1","line":378,"updated":"2026-05-04 11:27:36.000000000","message":"The _create_instance method\u0027s volume_type parameter is only used when boot_from_volume\u003dTrue. This coupling is not documented in the docstring.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Future test authors will understand the parameter relationship without reading the implementation.\n\n**Recommendation**:\nAdd a note to the method docstring: \u0027:param volume_type: Cinder volume type (only used when boot_from_volume\u003dTrue)\u0027 to clarify the parameter coupling.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"}],"watcher_tempest_plugin/tests/scenario/test_execute_workload_balance.py":[{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"c3354f51_57342ee5","line":1,"updated":"2026-04-29 10:38:43.000000000","message":"The commit message contains a typo: \u0027stabilizatyion\u0027 should be \u0027stabilization\u0027.\n\n**Severity**: SUGGESTION | **Confidence**: 1.0\n\n**Benefit**: Correct spelling in commit history improves professionalism and searchability.\n\n**Recommendation**:\nWhen amending or in a follow-up, fix the typo in the commit message body: \u0027stabilizatyion\u0027 -\u003e \u0027stabilization\u0027.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"d5a2ed08_4bf9c144","line":51,"updated":"2026-04-29 10:38:43.000000000","message":"TestExecuteWorkloadBalanceStrategy duplicates the min_microversion, compute_min_microversion, GOAL, and STRATEGY class attributes and the skip_checks method from the base class TestExecuteWorkloadBalanceStrategyBase. This is redundant since the child class inherits from the base.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Code duplication means future changes need to be made in two places. If someone updates the base class but forgets the child, they will diverge.\n\n**Suggestion**:\nRemove the duplicated class attributes (min_microversion, compute_min_microversion, GOAL, STRATEGY) and skip_checks from TestExecuteWorkloadBalanceStrategy since they are identical to the base class. The child class will inherit them correctly.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"805fb8c5_052a8321","line":222,"updated":"2026-04-29 10:38:43.000000000","message":"The BfV workload balance test does not call self.execute_action_plan_and_validate_states() after verifying the action plan state, unlike its non-BfV counterpart test_execute_workload_balance_strategy_cpu which does execute the action plan.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: The BfV test only verifies that the action plan is RECOMMENDED but does not validate that executing the migration actually works for BfV instances. Adding execution validation would provide stronger test coverage.\n\n**Recommendation**:\nConsider adding self.execute_action_plan_and_validate_states(action_plan[\u0027uuid\u0027]) after the assertEqual(\u0027RECOMMENDED\u0027, ...) line, matching the pattern used in the non-BfV tests. If there is a reason to only validate the recommendation (e.g., migration of BfV instances is known to have issues), document that rationale in a comment.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"059e9064_96cc2ffd","line":145,"updated":"2026-04-29 13:04:58.000000000","message":"The BfV workload_balance test creates instances with flavor_disk larger than available local disk, but does not execute the action plan (no call to execute_action_plan_and_validate_states). The non-BfV counterpart does execute it.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: The test only validates that Watcher recommends migration (RECOMMENDED state) but does not verify the migration actually succeeds. The BfV test for workload_stabilization also does not execute the action plan. This is consistent within the new BfV tests but inconsistent with the existing non-BfV tests in both modules.\n\n**Suggestion**:\nIf the intent is to validate end-to-end BfV migration, add execute_action_plan_and_validate_states calls. If the action plan execution is expected to fail or is out of scope for this patch, add a comment explaining why execution is omitted. At minimum, the BfV tests should be consistent with each other.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"34c09bbe_bb1d6fd5","line":145,"updated":"2026-04-29 13:04:58.000000000","message":"The BfV workload_balance test uses CPU metrics while the BfV workload_stabilization test uses RAM metrics. Consider adding complementary metric tests for full coverage parity with non-BfV variants.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Full metric coverage across both BfV strategy tests would ensure Watcher handles BfV correctly for all metric types.\n\n**Recommendation**:\nThis is a future enhancement suggestion, not a blocker. The current coverage is reasonable for an initial BfV test patch. Consider adding the complementary tests in a follow-up.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"7dc61a77_61f96c1b","line":168,"updated":"2026-04-29 13:04:58.000000000","message":"Duplicate test logic: the disk inventory calculation (get_resource_provider_inventory, available_disk computation, flavor_disk \u003d int(available_disk) + 2) is copy-pasted verbatim between the two BfV test classes.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If the disk calculation logic needs to change, it must be updated in multiple places. This increases maintenance burden and risk of divergence.\n\n**Suggestion**:\nExtract a helper method like _create_oversized_disk_flavor(self, host) into the base test class that returns the flavor_id, so both BfV test classes can reuse it.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"a960c0fd_32ad582b","line":145,"updated":"2026-04-30 08:33:21.000000000","message":"The TestExecuteWorkloadBalanceStrategyBfV class only tests CPU-based workload balancing. There is no BFV counterpart to the RAM-based workload_balance test that exists in the non-BFV class.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Adding a RAM-based BFV test would provide more complete coverage, especially since BFV instances may behave differently with respect to RAM metrics.\n\n**Recommendation**:\nConsider adding test_execute_workload_balance_strategy_ram_bfv that mirrors the existing test_execute_workload_balance_strategy_ram pattern with boot_from_volume\u003dTrue.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"38984b62_5d7d0c87","line":167,"updated":"2026-04-30 08:33:21.000000000","message":"The workload_balance and workload_stabilization BFV tests duplicate the disk inventory query and flavor creation logic verbatim. This pattern is repeated in three places across two files.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If the disk calculation logic needs to change (e.g., to account for reserved capacity), it must be updated in three separate locations, increasing maintenance burden and risk of inconsistency.\n\n**Suggestion**:\nExtract a helper method like _create_oversized_disk_flavor(self, host) into the base class that handles the inventory lookup, available_disk calculation, and flavor creation. Each BFV test would then call this single method.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"b395b072_a649e239","line":170,"updated":"2026-04-30 08:33:21.000000000","message":"The available_disk calculation multiplies total by allocation_ratio then truncates with int(). Placement allocation_ratio is typically a float (e.g. 1.5), so int() may truncate, making flavor_disk slightly smaller than intended. Using math.ceil() would be safer.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: The flavor disk could end up slightly smaller than intended if allocation_ratio produces a fractional result, potentially weakening the test\u0027s guarantee that disk exceeds capacity.\n\n**Suggestion**:\nConsider using math.ceil(available_disk) + 2 instead of int(available_disk) + 2 to ensure the flavor disk strictly exceeds available capacity. This pattern appears in all three BFV test methods.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"c72eccc7_56d1a586","line":210,"updated":"2026-04-30 08:33:21.000000000","message":"The workload_balance BFV test validates action plan state is RECOMMENDED but does not call execute_action_plan_and_validate_states, unlike the existing non-BFV test. The workload_stabilization BFV test also omits execution. Only the zone_migration BFV test actually executes the action plan. This means two of three BFV tests never verify that the migration actually succeeds.\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: Tests pass even if the migration action would fail at execution time, providing incomplete regression coverage for the BFV disk-accounting fix.\n\n**Priority**: Before merge\n**Why This Matters**: The purpose of these BFV tests is to validate that Watcher can successfully migrate boot-from-volume instances. Without executing the action plan, the tests only confirm that the strategy produces a migration recommendation, not that the migration actually works end-to-end.\n\n**Recommendation**:\nAdd self.execute_action_plan_and_validate_states(action_plan[\u0027uuid\u0027]) after the RECOMMENDED assertion in test_execute_workload_balance_strategy_cpu_bfv and test_execute_workload_stabilization_strategy_ram_bfv, matching the pattern used by the existing non-BFV tests and the zone_migration BFV test.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"f0abae11f1b044e98c4147ee9aa11245","url":"https://zuul.teim.app/t/main/buildset/f0abae11f1b044e98c4147ee9aa11245","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"cd9d9439bed708a535b516c8cfd3713ef985595c","patch_set":7,"id":"d6f5d2c5_167d2cb9","line":161,"updated":"2026-04-30 10:58:25.000000000","message":"The BFV workload_balance and workload_stabilization tests duplicate significant boilerplate (disk inventory lookup, flavor creation, instance creation loop, metrics injection, threshold calculation) from the existing non-BFV tests.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If the instance creation or metrics injection logic changes, both the BFV and non-BFV variants need separate updates. This increases maintenance burden and the risk of the two drifting out of sync.\n\n**Suggestion**:\nConsider extracting the common test setup (disk inventory lookup, BFV-flavor instance creation, metrics injection) into a helper method on the base class, so the BFV and non-BFV test methods differ only in the boot_from_volume parameter and the flavor disk size calculation.","commit_id":"16d19bb3bdf3567d792b8edb6caae2fa1a0654c7"},{"robot_id":"zuul","robot_run_id":"f0abae11f1b044e98c4147ee9aa11245","url":"https://zuul.teim.app/t/main/buildset/f0abae11f1b044e98c4147ee9aa11245","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"cd9d9439bed708a535b516c8cfd3713ef985595c","patch_set":7,"id":"8824b7cc_2a9a98c5","line":172,"updated":"2026-04-30 10:58:25.000000000","message":"The BFV tests in workload_balance and workload_stabilization compute flavor_disk as int(available_disk) + 2. The magic number 2 should be documented with a comment explaining why 2 GB over the available disk is sufficient.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Future maintainers will understand the rationale for the +2 offset -- it ensures the flavor disk exceeds available local storage to validate that BFV instances are not blocked by disk constraints.\n\n**Recommendation**:\nAdd a comment like: # Flavor disk exceeds available local disk to validate BFV instances bypass local disk constraints, or similar.","commit_id":"16d19bb3bdf3567d792b8edb6caae2fa1a0654c7"},{"robot_id":"zuul","robot_run_id":"f0abae11f1b044e98c4147ee9aa11245","url":"https://zuul.teim.app/t/main/buildset/f0abae11f1b044e98c4147ee9aa11245","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"cd9d9439bed708a535b516c8cfd3713ef985595c","patch_set":7,"id":"4946a42c_fe872ad5","line":210,"updated":"2026-04-30 10:58:25.000000000","message":"The workload_balance and workload_stabilization BFV tests only assert that the action plan state is RECOMMENDED, but do not call execute_action_plan_and_validate_states() to verify the migrations actually succeed, unlike their non-BFV counterparts.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: The tests verify that Watcher generates the correct action plan but do not validate that the migration actions execute successfully for BFV instances. This leaves a gap in coverage -- the key value of BFV testing is confirming that live migration and volume operations work end-to-end.\n\n**Suggestion**:\nAdd self.execute_action_plan_and_validate_states(action_plan[\u0027uuid\u0027]) after the RECOMMENDED assertion in both test_execute_workload_balance_strategy_cpu_bfv and test_execute_workload_stabilization_strategy_ram_bfv, matching the pattern used by the existing non-BFV tests and the zone_migration BFV test.","commit_id":"16d19bb3bdf3567d792b8edb6caae2fa1a0654c7"},{"robot_id":"zuul","robot_run_id":"6a882ad60af14376a31098326a1b2b8d","url":"https://zuul.teim.app/t/main/buildset/6a882ad60af14376a31098326a1b2b8d","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5c80fb496c8a7e5c12fac01d46b025091fbfbb89","patch_set":8,"id":"6d72dbf7_ae85efc8","line":166,"updated":"2026-04-30 15:35:35.000000000","message":"The workload_balance and workload_stabilization BFV test classes both contain near-identical disk calculation boilerplate (get hypervisor, get DISK_GB inventory, calculate available_disk, create oversized flavor). This pattern could be extracted into the base class.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Would reduce code duplication across the two BFV test classes and make it easier to add more BFV tests in the future.\n\n**Recommendation**:\nConsider adding a helper method to the base class, e.g., _create_bfv_oversized_flavor(self, host) that encapsulates the disk inventory lookup and flavor creation. Both BFV test classes could then call this single method.","commit_id":"c8851b27dab4b56ba9e84a4771ab4df694708c9f"},{"robot_id":"zuul","robot_run_id":"6a882ad60af14376a31098326a1b2b8d","url":"https://zuul.teim.app/t/main/buildset/6a882ad60af14376a31098326a1b2b8d","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5c80fb496c8a7e5c12fac01d46b025091fbfbb89","patch_set":8,"id":"3d1f39f1_657b3bce","line":171,"updated":"2026-04-30 15:35:35.000000000","message":"The disk_inventory[\u0027allocation_ratio\u0027] value from Placement may be a float, and multiplying total * allocation_ratio may produce a non-integer. Using int() truncates rather than rounds, which could make flavor_disk slightly smaller than intended if the result is e.g. 100.7.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: Minor: the intent is to create a flavor with disk larger than available. Using int() (floor) is actually safe since available_disk would be slightly lower, making flavor_disk even more over-provisioned. However, using math.ceil() would be more explicit about the intent.\n\n**Suggestion**:\nConsider using math.ceil(available_disk) + 2 instead of int(available_disk) + 2 to make the intent clearer. Alternatively, add a comment explaining that int() truncation is intentional and safe for this use case.","commit_id":"c8851b27dab4b56ba9e84a4771ab4df694708c9f"},{"robot_id":"zuul","robot_run_id":"6a882ad60af14376a31098326a1b2b8d","url":"https://zuul.teim.app/t/main/buildset/6a882ad60af14376a31098326a1b2b8d","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5c80fb496c8a7e5c12fac01d46b025091fbfbb89","patch_set":8,"id":"80d84e57_7bde5b34","line":210,"updated":"2026-04-30 15:35:35.000000000","message":"The workload_balance BFV test (test_execute_workload_balance_strategy_cpu_bfv) does not call execute_action_plan_and_validate_states. It only asserts that the action plan state is RECOMMENDED, unlike the non-BFV counterpart which also executes it.\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: The test does not validate that the migration actually executes successfully for BFV instances. It only verifies that Watcher recommends a migration, not that the migration completes. This leaves a gap in test coverage.\n\n**Priority**: Before merge\n**Why This Matters**: The primary value of a BFV scenario test is to verify that migrations actually complete. Without executing the action plan, the test does not validate end-to-end behavior of BFV instance migration. The non-BFV version of this test does execute the action plan.\n\n**Recommendation**:\nAdd self.execute_action_plan_and_validate_states(action_plan[\u0027uuid\u0027]) after the state assertion at line 210, consistent with the non-BFV test_execute_workload_balance_strategy_cpu at line 97.","commit_id":"c8851b27dab4b56ba9e84a4771ab4df694708c9f"},{"robot_id":"zuul","robot_run_id":"d3ba8743433e4a368c5eea17579453d7","url":"https://zuul.teim.app/t/main/buildset/d3ba8743433e4a368c5eea17579453d7","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c82fb19017b0fa064ce6acb226cc463e8c22ce09","patch_set":9,"id":"2596f569_57aa1cdf","line":161,"updated":"2026-05-01 10:02:50.000000000","message":"The BFV test classes in workload_balance and workload_stabilization follow the same pattern of creating oversized-disk flavors and booting from volume. Consider extracting a shared helper method in the base class to reduce duplication.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Reducing code duplication across the BFV test classes would make future changes easier and reduce the chance of inconsistencies between tests.\n\n**Recommendation**:\nConsider adding a helper method like _create_oversized_disk_bfv_instances(count) to the base class that encapsulates the flavor creation with disk \u003e available and BFV instance creation pattern shared by workload_balance and workload_stabilization BFV tests.","commit_id":"d940640e5d5751589a2fe5ba7b57c321ec7aef9c"},{"robot_id":"zuul","robot_run_id":"d3ba8743433e4a368c5eea17579453d7","url":"https://zuul.teim.app/t/main/buildset/d3ba8743433e4a368c5eea17579453d7","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c82fb19017b0fa064ce6acb226cc463e8c22ce09","patch_set":9,"id":"7b3056e6_8ddebad2","line":210,"updated":"2026-05-01 10:02:50.000000000","message":"The BFV tests for workload_balance and workload_stabilization do not execute the action plan, they only assert that the action plan state is RECOMMENDED. The corresponding non-BFV tests call execute_action_plan_and_validate_states to verify the full migration succeeds.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: The BFV tests only validate that Watcher generates the correct action plan but do not verify the plan executes successfully. This is intentional partial coverage (ensuring disk constraints are respected in planning) but is inconsistent with the non-BFV tests which validate full end-to-end execution.\n\n**Suggestion**:\nConsider adding execute_action_plan_and_validate_states calls to the BFV tests to achieve parity with non-BFV tests and validate that BFV instance migrations actually complete successfully. If this is intentionally left for a follow-up, document it with a TODO comment.","commit_id":"d940640e5d5751589a2fe5ba7b57c321ec7aef9c"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"4758c0ae_f5be4b06","line":49,"updated":"2026-05-04 11:27:36.000000000","message":"The TestExecuteWorkloadBalanceStrategy and TestExecuteWorkloadStabilizationStrategy classes define empty docstrings identical to their parent bases. Consider providing more descriptive docstrings distinguishing the non-BFV variant.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: Low impact. The class docstrings do not distinguish the non-BFV test class from the base class, which could make test discovery and reporting less clear.\n\n**Suggestion**:\nUpdate docstrings to something like \u0027Tests for workload_balance with standard boot-from-image instances\u0027 to differentiate from the BFV variant class.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"01e4918f_afd4843b","line":161,"updated":"2026-05-04 11:27:36.000000000","message":"The test_execute_workload_balance_strategy_cpu_bfv test name uses \u0027cpu\u0027 suffix but the primary validation target is disk accounting for BFV instances. The CPU metric injection is what triggers the migration decision.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: More descriptive test naming helps with test result reporting and debugging failures in CI.\n\n**Recommendation**:\nThe test name follows the convention of the existing cpu test and the CPU metric is what triggers migration. Keeping the current name is acceptable, but could consider adding \u0027disk_accounting\u0027 to the name in a follow-up.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"c434535b_00966d37","line":162,"updated":"2026-05-04 11:27:36.000000000","message":"Typo in comment: \u0027worklkoad\u0027 should be \u0027workload\u0027 in the workload_balance BFV test method comment.\n\n**Severity**: WARNING | **Confidence**: 1.0\n\n**Impact**: Minor but visible typo in test documentation that could confuse readers. Comments in test code serve as documentation for future maintainers.\n\n**Suggestion**:\nChange \u0027Watcher worklkoad balance strategy\u0027 to \u0027Watcher workload balance strategy\u0027 on line 162.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"6138551e_9559b7ce","line":175,"updated":"2026-05-04 11:27:36.000000000","message":"Duplicated disk inventory calculation logic appears in three separate test methods (workload_balance_bfv, workload_stabilization_bfv, zone_migration_bfv). The pattern of querying DISK_GB inventory, computing available_disk, and creating an oversized flavor is repeated verbatim.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If the disk calculation logic needs to change (e.g., accounting for reserved capacity), all three copies must be updated in lockstep. Risk of divergence over time.\n\n**Suggestion**:\nConsider extracting a helper method in the base class such as `_create_oversized_disk_flavor(host)` that encapsulates the inventory query, available_disk calculation, and flavor creation. This would reduce duplication and centralize the logic.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"6cb9dd5d_ab938fae","line":215,"updated":"2026-05-04 11:27:36.000000000","message":"The workload_balance BFV test only asserts that the action plan is RECOMMENDED but does not execute it (no call to execute_action_plan_and_validate_states). This leaves the actual migration untested for BFV instances under workload_balance.\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: The BFV test validates that Watcher produces a migration plan but never verifies the plan can be executed successfully. If the migration itself fails for BFV instances, the test would still pass.\n\n**Priority**: Before merge\n**Why This Matters**: The non-BFV workload_balance test calls execute_action_plan_and_validate_states after asserting RECOMMENDED. The BFV variant omits this step, making the test incomplete compared to its counterpart.\n\n**Recommendation**:\nAdd `self.execute_action_plan_and_validate_states(action_plan[\u0027uuid\u0027])` after the RECOMMENDED assertion on line 219, matching the pattern in test_execute_workload_balance_strategy_cpu. Also consider asserting the instance migrated to a different host.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"}],"watcher_tempest_plugin/tests/scenario/test_execute_workload_stabilization.py":[{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"98365be2_2344e757","line":32,"updated":"2026-04-29 10:38:43.000000000","message":"TestExecuteWorkloadStabilizationStrategyBase has GOAL set to \u0027workload_balancing\u0027 instead of \u0027workload_stabilization\u0027. This is likely a copy-paste error from the workload_balance test file and will cause the wrong goal to be used in audit template creation for stabilization tests.\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: The stabilization BfV test class will create audit templates with the wrong goal (\u0027workload_balancing\u0027), causing the audit to use an incorrect strategy-goal pairing. This could lead to test failures or, worse, false passes if Watcher silently accepts the mismatch.\n\n**Priority**: Before merge\n**Why This Matters**: The GOAL constant drives audit template creation via create_audit_template_for_strategy(). A wrong goal means the test is not actually testing the workload_stabilization strategy as intended.\n\n**Recommendation**:\nChange line 32 from GOAL \u003d \u0027workload_balancing\u0027 to GOAL \u003d \u0027workload_stabilization\u0027. This was correct before the refactor (the original class had GOAL \u003d \u0027workload_balancing\u0027 at line 32, but the class was for stabilization). Verify the original pre-refactor code to confirm this is indeed a bug introduced by the refactor.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"93cf9aae1fe94052afac4c23d36e002a","url":"https://zuul.teim.app/t/main/buildset/93cf9aae1fe94052afac4c23d36e002a","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d0e551182cd4fb5e12dcf3ee03c3492d89b438d8","patch_set":3,"id":"ba58e96f_eca74bc8","line":181,"updated":"2026-04-29 10:38:43.000000000","message":"The BfV workload stabilization test similarly does not call execute_action_plan_and_validate_states(), unlike its non-BfV counterpart test_execute_workload_stabilization_strategy_ram which does execute the action plan.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Consistent test depth across BfV and non-BfV test variants. Stronger validation that migrations actually succeed for BfV instances.\n\n**Recommendation**:\nConsider adding self.execute_action_plan_and_validate_states(action_plan[\u0027uuid\u0027]) to match the non-BfV test pattern, or add a comment explaining why execution is intentionally omitted.","commit_id":"cbbf8247b9ad3e16eace390453796787f4b84866"},{"robot_id":"zuul","robot_run_id":"c3a52f1d612b40239a00dd1023ab2015","url":"https://zuul.teim.app/t/main/buildset/c3a52f1d612b40239a00dd1023ab2015","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8bee6075d7d9ff54a24865828f0332057d3bbc51","patch_set":5,"id":"1a0fbd5d_7d8e064e","line":133,"updated":"2026-04-29 13:04:58.000000000","message":"The two BfV test classes both check CONF.service_available.cinder and CONF.optimize.run_bfv_tests in skip_checks. This is correct and consistent. No change needed.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: Confirming that both BfV test classes properly gate on Cinder availability and the config flag.\n\n**Recommendation**:\nAlready correctly implemented. No action required.","commit_id":"82f025e4b9d0dbda4b6184f55b5a3cc5ae0dc203"},{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"64083c52_d181ff53","line":129,"updated":"2026-04-30 08:33:21.000000000","message":"The TestExecuteWorkloadStabilizationStrategyBfV class only tests RAM-based stabilization. There is no BFV counterpart to the CPU-based stabilization test.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Adding a CPU-based BFV stabilization test would complement the existing CPU and RAM non-BFV tests and the RAM BFV test for full coverage.\n\n**Recommendation**:\nConsider adding test_execute_workload_stabilization_strategy_cpu_bfv mirroring the existing CPU test with boot_from_volume\u003dTrue and oversized disk.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"f0abae11f1b044e98c4147ee9aa11245","url":"https://zuul.teim.app/t/main/buildset/f0abae11f1b044e98c4147ee9aa11245","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"cd9d9439bed708a535b516c8cfd3713ef985595c","patch_set":7,"id":"f582f166_6c59e27f","line":145,"updated":"2026-04-30 10:58:25.000000000","message":"The workload_stabilization BFV test only tests RAM-based migration, but the existing non-BFV tests cover both CPU and RAM. Adding a CPU-based BFV test would provide more complete coverage.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Consistent test coverage across strategies. The workload_balance BFV test covers CPU, so having a CPU variant for workload_stabilization would ensure both strategies are validated with BFV instances for all metric types.\n\n**Recommendation**:\nConsider adding test_execute_workload_stabilization_strategy_cpu_bfv in a follow-up patch if not already planned, to mirror the coverage pattern of the non-BFV tests.","commit_id":"16d19bb3bdf3567d792b8edb6caae2fa1a0654c7"},{"robot_id":"zuul","robot_run_id":"6a882ad60af14376a31098326a1b2b8d","url":"https://zuul.teim.app/t/main/buildset/6a882ad60af14376a31098326a1b2b8d","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5c80fb496c8a7e5c12fac01d46b025091fbfbb89","patch_set":8,"id":"dbeac142_65c38b45","line":186,"updated":"2026-04-30 15:35:35.000000000","message":"The workload_stabilization BFV test (test_execute_workload_stabilization_strategy_ram_bfv) also does not call execute_action_plan_and_validate_states, unlike its non-BFV counterpart.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Same as the workload_balance issue: the test verifies recommendation only, not execution. The stabilization BFV test is incomplete compared to the non-BFV version which executes the action plan at line 126.\n\n**Suggestion**:\nAdd self.execute_action_plan_and_validate_states(action_plan[\u0027uuid\u0027]) after the RECOMMENDED state assertion, matching the non-BFV test pattern at line 126.","commit_id":"c8851b27dab4b56ba9e84a4771ab4df694708c9f"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"52fa2606_4e679ac5","line":129,"updated":"2026-05-04 11:27:36.000000000","message":"The TestExecuteWorkloadStabilizationStrategyBfV tests only the RAM metric variant, while the non-BFV class tests both CPU and RAM. Consider adding a CPU variant for completeness.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Adding a CPU variant would provide symmetric coverage between BFV and non-BFV test classes, ensuring both metrics work correctly with boot-from-volume instances.\n\n**Recommendation**:\nConsider adding test_execute_workload_stabilization_strategy_cpu_bfv in a follow-up patch. The current RAM test provides sufficient validation of the BFV disk accounting fix for this strategy.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"c6a5b746_fb9f6bb8","line":193,"updated":"2026-05-04 11:27:36.000000000","message":"The workload_stabilization BFV test similarly only asserts RECOMMENDED without executing the action plan, unlike its non-BFV counterpart which calls execute_action_plan_and_validate_states.\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: Same as workload_balance BFV test -- the actual migration execution is untested for BFV instances under workload_stabilization strategy.\n\n**Priority**: Before merge\n**Why This Matters**: The non-BFV workload_stabilization test calls execute_action_plan_and_validate_states. The BFV variant should follow the same pattern for complete validation.\n\n**Recommendation**:\nAdd `self.execute_action_plan_and_validate_states(action_plan[\u0027uuid\u0027])` after the RECOMMENDED assertion on line 195, matching the existing test pattern.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"}],"watcher_tempest_plugin/tests/scenario/test_execute_zone_migration.py":[{"robot_id":"zuul","robot_run_id":"552fd9e43a834e87a9fa1cb18fa0a241","url":"https://zuul.teim.app/t/main/buildset/552fd9e43a834e87a9fa1cb18fa0a241","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"eec3bd6fc201cca408c3b03cb9bc9cb2dc896ee5","patch_set":6,"id":"e1b36b3f_b2188a4a","line":467,"updated":"2026-04-30 08:33:21.000000000","message":"The TestExecuteZoneMigrationStrategyVolumeBfV class only tests combined compute+volume migration. There are no BFV counterparts for the volume_retype or volume_migrate-only tests.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: BFV-specific volume retype and migration-only tests would ensure these operations work correctly for boot volumes, which may have different constraints than data volumes.\n\n**Recommendation**:\nConsider adding BFV variants of test_execute_zone_migration_volume_retype and test_execute_zone_migration_volume_migrate in a follow-up patch.","commit_id":"3046a56e3e2a0915682b610f900fa93b74da804e"},{"robot_id":"zuul","robot_run_id":"f0abae11f1b044e98c4147ee9aa11245","url":"https://zuul.teim.app/t/main/buildset/f0abae11f1b044e98c4147ee9aa11245","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"cd9d9439bed708a535b516c8cfd3713ef985595c","patch_set":7,"id":"3fc87a1d_b5ec1ae8","line":467,"updated":"2026-04-30 10:58:25.000000000","message":"The BFV zone_migration test inherits from TestExecuteZoneMigrationStrategyVolume but only adds one test. The parent class has three test methods; two (volume_retype, volume_migrate) are inherited and will run for the BfV class but use create_server() directly, not BFV instances.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Clarifies the test coverage scope. The inherited test_execute_zone_migration_volume_retype and test_execute_zone_migration_volume_migrate will also run for the BfV class, but those tests create regular (non-BFV) instances and thus do not specifically test BFV behavior.\n\n**Recommendation**:\nConsider whether the inherited volume_retype and volume_migrate tests should be skipped in the BfV subclass (they do not use BFV instances), or document that they provide complementary non-BFV volume migration coverage alongside the dedicated BFV test.","commit_id":"16d19bb3bdf3567d792b8edb6caae2fa1a0654c7"},{"robot_id":"zuul","robot_run_id":"6a882ad60af14376a31098326a1b2b8d","url":"https://zuul.teim.app/t/main/buildset/6a882ad60af14376a31098326a1b2b8d","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5c80fb496c8a7e5c12fac01d46b025091fbfbb89","patch_set":8,"id":"230e7e6e_737257b9","line":467,"updated":"2026-04-30 15:35:35.000000000","message":"TestExecuteZoneMigrationStrategyVolumeBfV inherits from TestZoneMigrationStrategyBase but uses methods (get_host_for_volume, check_multiple_pools, calculate_dst_pools) that are defined only in TestExecuteZoneMigrationStrategyVolume. This will cause AttributeError at runtime.\n\n**Severity**: CRITICAL | **Confidence**: 1.0\n\n**Risk**: Test will fail at runtime with AttributeError when calling self.check_multiple_pools(), self.get_host_for_volume(), or self.calculate_dst_pools(). CI job will fail.\n\n**Priority**: Before merge\n**Why This Matters**: The BFV zone migration test is completely broken. It will never pass. The class must either inherit from TestExecuteZoneMigrationStrategyVolume (which already has its own skip_checks for storage tests) or the shared methods must be moved up to TestZoneMigrationStrategyBase.\n\n**Recommendation**:\nChange the parent class of TestExecuteZoneMigrationStrategyVolumeBfV from TestZoneMigrationStrategyBase to TestExecuteZoneMigrationStrategyVolume. The volume skip_checks already check cinder and run_zone_migration_storage_tests, so the BFV class only needs the run_bfv_tests check. Alternatively, refactor the shared methods up to TestZoneMigrationStrategyBase.","commit_id":"c8851b27dab4b56ba9e84a4771ab4df694708c9f"},{"robot_id":"zuul","robot_run_id":"d3ba8743433e4a368c5eea17579453d7","url":"https://zuul.teim.app/t/main/buildset/d3ba8743433e4a368c5eea17579453d7","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c82fb19017b0fa064ce6acb226cc463e8c22ce09","patch_set":9,"id":"a458a017_10724a31","line":481,"updated":"2026-05-01 10:02:50.000000000","message":"Duplicate Cinder availability skip check in TestExecuteZoneMigrationStrategyVolumeBfV.skip_checks. The parent class TestExecuteZoneMigrationStrategyVolumeBase already checks CONF.service_available.cinder, making the same check in the BFV subclass redundant.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Minor code duplication. Not functionally harmful since super().skip_checks() calls the parent chain, but the explicit cinder check is already performed by the parent, leading to a confusing double-check.\n\n**Suggestion**:\nRemove the redundant `if not CONF.service_available.cinder` check from TestExecuteZoneMigrationStrategyVolumeBfV.skip_checks since it is already handled by the parent TestExecuteZoneMigrationStrategyVolumeBase.skip_checks.","commit_id":"d940640e5d5751589a2fe5ba7b57c321ec7aef9c"},{"robot_id":"zuul","robot_run_id":"d3ba8743433e4a368c5eea17579453d7","url":"https://zuul.teim.app/t/main/buildset/d3ba8743433e4a368c5eea17579453d7","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c82fb19017b0fa064ce6acb226cc463e8c22ce09","patch_set":9,"id":"67b9dd8d_7d302e16","line":557,"updated":"2026-05-01 10:02:50.000000000","message":"The zone_migration BFV test does not verify that the instance was actually migrated to the destination compute node after action plan execution. It checks the boot volume migrated but does not assert instance host change like the non-BFV counterpart test_execute_zone_migration_with_volume_and_compute_migration does.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: The test could pass even if the compute migration portion of the action plan fails, since it only validates the RECOMMENDED state and volume migration. The instance migration assertion is present but the test does not call execute_action_plan_and_validate_states with action state validation that ensures the migrate action itself succeeded.\n\n**Suggestion**:\nVerify that the existing assertion at line 564-566 (assertEqual on get_host_for_server vs dst_node) is sufficient, or add an explicit action-by-action state check to confirm both volume_migrate and migrate actions completed with SUCCEEDED state.","commit_id":"d940640e5d5751589a2fe5ba7b57c321ec7aef9c"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"31c6fd9d_cbc86bed","line":478,"updated":"2026-05-04 11:27:36.000000000","message":"The BFV test classes for workload_balance and workload_stabilization check CONF.service_available.cinder, but TestExecuteZoneMigrationStrategyVolumeBfV does not. While the parent class already checks cinder, adding the check would be more consistent.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Consistent skip_checks patterns across all BFV test classes would make the code easier to understand and maintain.\n\n**Recommendation**:\nThis is a minor consistency point. The parent TestExecuteZoneMigrationStrategyVolumeBase already checks cinder availability on line 123-124, so no functional issue exists. No change required.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"},{"robot_id":"zuul","robot_run_id":"54856f699cb2466ab9a7a65c02d746b1","url":"https://zuul.teim.app/t/main/buildset/54856f699cb2466ab9a7a65c02d746b1","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"60d5610a6e92881141bd62188cea96787806d4dd","patch_set":10,"id":"b6cf8652_7a57c495","line":505,"updated":"2026-05-04 11:27:36.000000000","message":"Typo in comment: \u0027disc\u0027 should be \u0027disk\u0027 in the zone_migration BFV test comment about disk constraint accounting.\n\n**Severity**: WARNING | **Confidence**: 1.0\n\n**Impact**: Minor typo in comment that could cause confusion about the intended validation purpose.\n\n**Suggestion**:\nChange \u0027proper disc constraint accounting\u0027 to \u0027proper disk constraint accounting\u0027 on line 505.","commit_id":"7483bae815a649390766d2da1aa31e929b8a3b9e"}]}
