)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9dc8c8eebb7134038957f4d9f847a032360053d0","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Add new WorkloadPreemption feature"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Assisted-By: claude-opus-4.6"},{"line_number":10,"context_line":"Implements: Preemptible Instances"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1145c84f77f5eb6efff850b445063b973f987d7f"},{"line_number":13,"context_line":"Signed-off-by: Winicius Allan \u003cwdasilva@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"39798b7a_76e6d17e","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":2},"updated":"2026-07-30 07:25:39.000000000","message":"This should be:\n\n```\nImplements: blueprint-preemptible-instances\n```\n\nto get it automatically linked to the blueprint","commit_id":"2e796a6c147c3e4765c08b3ea9816a413a697c41"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"2d45fabf5b7298f09480e468552f3e7ebf5271d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"22246ce6_9ac83522","updated":"2026-07-30 07:23:15.000000000","message":"I didn\u0027t review in details, but i have some high level suggestions:\n\n- Split this in multiple reviews. First review should just add the actions (actually, i\u0027d recomend one review per action). Then you can add goal and strategy. I have doubts if in the same review, i\u0027d prefer one for goal and one for strategy, although i\u0027m not entirely sure if others have the same preference. You can stack all the patches one on top of the other and send multiple reviews together.\n- Documentation is missing on all the changes. Both actions, goals and strategies require to be added to the documentation in the same patch.","commit_id":"2e796a6c147c3e4765c08b3ea9816a413a697c41"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3141552ced41db79863496e5f8922a682290d441","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cce4c486_e3acbd13","updated":"2026-07-30 13:50:58.000000000","message":"ill do a full review later just capturing what we dicussed in the irc meeting","commit_id":"2e796a6c147c3e4765c08b3ea9816a413a697c41"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3141552ced41db79863496e5f8922a682290d441","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2371bd2c_8d300f32","in_reply_to":"22246ce6_9ac83522","updated":"2026-07-30 13:50:58.000000000","message":"i agree\n\nthere shoudl be at lest 2 commits posisbely 3\n\nthe new actions shoudl be first. doug noted we coudl have a sperate tempst change to test those with the actuator policy.\n\nthe goal/stragy shoudl be in the same commit and have a release note annouchign the feature\n\ndocs shoudl be in both patch for the subset they intorduce\n\nthe planner change can be either in the action patch or the second patch\n\ni am inclined to say put it with the actions\n\nyou need to add some test coverage for that as well and more unit test in genral\n\nin the watcher tempest plugin we should have addtional senarios test for this as well so you may need a third patch to update the ci depening on how that looks but you can proably get away with only 2 patches to watcher and 2 patches to the tempsts plugin","commit_id":"2e796a6c147c3e4765c08b3ea9816a413a697c41"}],"watcher/applier/actions/shelve.py":[{"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":"e89f3c7d64e77d6a6987cb368e48895f65a49b97","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                    {\u0027uuid\u0027: self.instance_uuid, \u0027state\u0027: instance.vm_state},"},{"line_number":119,"context_line":"                )"},{"line_number":120,"context_line":"                return True"},{"line_number":121,"context_line":"            nova.connection.compute.unshelve_server(self.instance_uuid)"},{"line_number":122,"context_line":"            LOG.debug("},{"line_number":123,"context_line":"                \"Successfully reverted shelve action and unshelved \""},{"line_number":124,"context_line":"                \"instance %(uuid)s\","}],"source_content_type":"text/x-python","patch_set":2,"id":"24f170d7_a4492036","line":121,"updated":"2026-07-30 03:39:46.000000000","message":"The _revert_shelve method in shelve.py calls nova.connection.compute.unshelve_server() directly on the raw OpenStackSDK connection, bypassing the @nova_retries and @handle_nova_error decorators that wrap all other Nova API calls in NovaHelper. This means transient connection errors during unshelv...\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Transient failures during unshelve (e.g., network blips) will not be retried, and SDK-specific exceptions will be caught by the broad \u0027except Exception\u0027 at line 134, losing structured error context. This makes the revert path less reliable than the execute path.\n\n**Suggestion**:\nAdd an unshelve_instance method to NovaHelper (decorated with @nova_retries and @handle_nova_error, following the pattern of shelve_instance and delete_instance) and call it from _revert_shelve instead of accessing the SDK connection directly.","commit_id":"2e796a6c147c3e4765c08b3ea9816a413a697c41"}],"watcher/decision_engine/strategy/strategies/workload_preemption.py":[{"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":"e89f3c7d64e77d6a6987cb368e48895f65a49b97","unresolved":false,"context_lines":[{"line_number":504,"context_line":""},{"line_number":505,"context_line":"            action_type \u003d self._get_preemption_action(instance)"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"            self.solution.add_action("},{"line_number":508,"context_line":"                action_type\u003daction_type,"},{"line_number":509,"context_line":"                resource_id\u003dinstance.uuid,"},{"line_number":510,"context_line":"                input_parameters\u003d{\u0027resource_name\u0027: instance.name},"}],"source_content_type":"text/x-python","patch_set":2,"id":"4a9b84a5_b9923f22","line":507,"updated":"2026-07-30 03:39:46.000000000","message":"The WorkloadPreemption strategy calls solution.add_action with input_parameters\u003d{\u0027resource_name\u0027: instance.name}. The add_action method places resource_id into the same input_parameters dict. The Delete and Shelve action schemas declare additionalProperties: False and only allow \u0027resource_id\u0027, so...\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: When the applier loads and validates the delete or shelve actions created by this strategy, validate_parameters() will raise jsonschema.ValidationError due to the unallowed \u0027resource_name\u0027 property. The actions will never execute, making the entire WorkloadPreemption strategy non-functional in pr...\n\n**Priority**: Before merge\n**Why This Matters**: When the applier loads and validates the delete or shelve actions created by this strategy, validate_parameters() will raise jsonschema.ValidationError due to the unallowed \u0027resource_name\u0027 property. The actions will never execute, making the entire WorkloadPreemption strategy non-functional in pr...\n\n**Recommendation**:\nAdd \u0027resource_name\u0027: {\u0027type\u0027: \u0027string\u0027} to the properties of the Delete and Shelve action schemas (matching how the Migrate action includes it), or remove \u0027resource_name\u0027 from the strategy\u0027s add_action call and pass only resource_id.","commit_id":"2e796a6c147c3e4765c08b3ea9816a413a697c41"}]}
