)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"4b0f8b117efd32d19c0d9f37efac1e3c5c62a339","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"87e25671_a0d9d6ff","updated":"2026-02-23 14:05:01.000000000","message":"lgtm","commit_id":"396a6865bf0600ede55272caadaac7fa15d0db98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"807d278520e4fe3f38ef5bf9ef0e5b055358c4d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e04256c7_7c2d16ba","updated":"2026-02-26 13:22:20.000000000","message":"ya this looks ok to me","commit_id":"4a41404e28ac549e7399d35e6bf8701eac76e2bb"}],"doc/source/actions/change_nova_service_state.rst":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"8a4b99624fc6216ca4f41030d166916349333342","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Change nova service state actions will be automatically skipped in the"},{"line_number":38,"context_line":"pre_condition phase in the following cases:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"- nova-compute service does not exist"},{"line_number":41,"context_line":"- nova-compute service is already in the desired state (enabled or disabled)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e063edfb_8415dfb8","line":40,"updated":"2026-02-23 12:00:33.000000000","message":"I think the same discussion we\u0027re having in https://review.opendev.org/c/openstack/watcher/+/976393/comments/95296ea2_3a4a411b applies here and we shoul apply the same resolution that we end up in that patch in this one for consistency","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"bcff643fec18fa1ad8ad07ef3611b15cbc48e6b5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Change nova service state actions will be automatically skipped in the"},{"line_number":38,"context_line":"pre_condition phase in the following cases:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"- nova-compute service does not exist"},{"line_number":41,"context_line":"- nova-compute service is already in the desired state (enabled or disabled)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"641db352_72285b58","line":40,"in_reply_to":"0c8217f9_e30b7fb6","updated":"2026-02-24 15:47:27.000000000","message":"Done","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"09cb1fde07c55ab01b22f9a73b7c89bd988c77ee","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Change nova service state actions will be automatically skipped in the"},{"line_number":38,"context_line":"pre_condition phase in the following cases:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"- nova-compute service does not exist"},{"line_number":41,"context_line":"- nova-compute service is already in the desired state (enabled or disabled)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0c8217f9_e30b7fb6","line":40,"in_reply_to":"880b79d6_0d1bca9f","updated":"2026-02-23 12:58:05.000000000","message":"I see your point, in this case the service is the primary target of the action, so skipping would be consistent in that regard. When I commented I was thinking that a service (like a storage pool or volume type) not existing was less likely that a volume or instance being removed","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"6dadacd6b8df30d2311facbc4426912443c15dc9","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Change nova service state actions will be automatically skipped in the"},{"line_number":38,"context_line":"pre_condition phase in the following cases:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"- nova-compute service does not exist"},{"line_number":41,"context_line":"- nova-compute service is already in the desired state (enabled or disabled)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"880b79d6_0d1bca9f","line":40,"in_reply_to":"e063edfb_8415dfb8","updated":"2026-02-23 12:51:03.000000000","message":"I was comparing nova-compute not found with instance not found in migrate or volume not foune in volume_migrate. In those cases we are SKIPPING it. In the case of change_nova_service_state, my understanding is that there is not something like \"destination\". Said so, this may be open to interpretations","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"}],"watcher/applier/actions/change_nova_service_state.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627ffd8f1aabe51d2f54dbfcebff2bd35b70b396","unresolved":true,"context_lines":[{"line_number":118,"context_line":"            return nova.disable_service_nova_compute(self.host, self.reason)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def pre_condition(self):"},{"line_number":121,"context_line":"        \"\"\"Check stop preconditions"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        Skipping conditions:"},{"line_number":124,"context_line":"        - nova-compute service does not exist"}],"source_content_type":"text/x-python","patch_set":1,"id":"a8c26f38_2d53201d","line":121,"in_reply_to":"9d536cb4_5e46facb","updated":"2026-02-19 18:50:46.000000000","message":"this is valid\nits a simple copy paste issue but lest fix it","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3fca2dbbf352cf5e5e1b6303d2e84b44200683eb","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            return nova.disable_service_nova_compute(self.host, self.reason)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def pre_condition(self):"},{"line_number":121,"context_line":"        \"\"\"Check stop preconditions"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        Skipping conditions:"},{"line_number":124,"context_line":"        - nova-compute service does not exist"}],"source_content_type":"text/x-python","patch_set":1,"id":"984623bd_8eb35a53","line":121,"in_reply_to":"a8c26f38_2d53201d","updated":"2026-02-23 11:03:31.000000000","message":"Done","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627ffd8f1aabe51d2f54dbfcebff2bd35b70b396","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        - nova-compute service does not exist"},{"line_number":125,"context_line":"        - nova-compute service is already in the desired state"},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        nova \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":128,"context_line":"        services \u003d nova.get_service_list()"},{"line_number":129,"context_line":"        service \u003d next((s for s in services if s.host \u003d\u003d self.host), None)"},{"line_number":130,"context_line":"        if not service:"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4dccfc6_6ac01eee","line":127,"in_reply_to":"29d66a5d_a94b4084","updated":"2026-02-19 18:50:46.000000000","message":"i woudl say this is a nice ot have\n\ni think the Action skiped excption shoudl get logged when they are cauge so this is ok as is\n\nwe record the skip reason in the action so that is also ok for debuging","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3fca2dbbf352cf5e5e1b6303d2e84b44200683eb","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        - nova-compute service does not exist"},{"line_number":125,"context_line":"        - nova-compute service is already in the desired state"},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        nova \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":128,"context_line":"        services \u003d nova.get_service_list()"},{"line_number":129,"context_line":"        service \u003d next((s for s in services if s.host \u003d\u003d self.host), None)"},{"line_number":130,"context_line":"        if not service:"}],"source_content_type":"text/x-python","patch_set":1,"id":"490cb4c2_762f70dc","line":127,"in_reply_to":"b4dccfc6_6ac01eee","updated":"2026-02-23 11:03:31.000000000","message":"It is already catched and logged in the workflow_engine https://github.com/openstack/watcher/blob/18cb461373c2a7320f2c9506681fb2b01888e3c6/watcher/applier/workflow_engine/base.py#L173-L175","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627ffd8f1aabe51d2f54dbfcebff2bd35b70b396","unresolved":true,"context_lines":[{"line_number":127,"context_line":"        nova \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":128,"context_line":"        services \u003d nova.get_service_list()"},{"line_number":129,"context_line":"        service \u003d next((s for s in services if s.host \u003d\u003d self.host), None)"},{"line_number":130,"context_line":"        if not service:"},{"line_number":131,"context_line":"            raise exception.ActionSkipped("},{"line_number":132,"context_line":"                _(\"nova-compute service %s not found\") % self.host)"},{"line_number":133,"context_line":"        if service.status \u003d\u003d self.state:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3eb3b133_2dbccec4","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":23},"updated":"2026-02-19 18:50:46.000000000","message":"nit: `if service is None:`","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3fca2dbbf352cf5e5e1b6303d2e84b44200683eb","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        nova \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":128,"context_line":"        services \u003d nova.get_service_list()"},{"line_number":129,"context_line":"        service \u003d next((s for s in services if s.host \u003d\u003d self.host), None)"},{"line_number":130,"context_line":"        if not service:"},{"line_number":131,"context_line":"            raise exception.ActionSkipped("},{"line_number":132,"context_line":"                _(\"nova-compute service %s not found\") % self.host)"},{"line_number":133,"context_line":"        if service.status \u003d\u003d self.state:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ec7810ef_67c3505a","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":23},"in_reply_to":"3eb3b133_2dbccec4","updated":"2026-02-23 11:03:31.000000000","message":"Done","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627ffd8f1aabe51d2f54dbfcebff2bd35b70b396","unresolved":true,"context_lines":[{"line_number":130,"context_line":"        if not service:"},{"line_number":131,"context_line":"            raise exception.ActionSkipped("},{"line_number":132,"context_line":"                _(\"nova-compute service %s not found\") % self.host)"},{"line_number":133,"context_line":"        if service.status \u003d\u003d self.state:"},{"line_number":134,"context_line":"            raise exception.ActionSkipped("},{"line_number":135,"context_line":"                _(\"nova-compute service %s is already in state %s\") %"},{"line_number":136,"context_line":"                (self.host, self.state))"}],"source_content_type":"text/x-python","patch_set":1,"id":"eb162814_2561686f","line":133,"in_reply_to":"bb6382f9_799de5b9","updated":"2026-02-19 18:50:46.000000000","message":"so the compute service up value and and disabled status are 2 different thing in nova.\n\n\nthis action enables or disables the compute service for schdulign\n\nthe up vs down value is set by the heartbeat unless forced down by an api call.\n\nso the current code is correct in that sense.\n\ni would create a is_enabled(state) funciton in the nova service data clase to trasnlate our api values for now.\n\nlong term we need to decied if we are goign to remove up and down or if we are goign to map those seperate to the force down api which is diffent then what this is using today.","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"506af1d8999041b4522259a875802ecd3daaace4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        if not service:"},{"line_number":131,"context_line":"            raise exception.ActionSkipped("},{"line_number":132,"context_line":"                _(\"nova-compute service %s not found\") % self.host)"},{"line_number":133,"context_line":"        if service.status \u003d\u003d self.state:"},{"line_number":134,"context_line":"            raise exception.ActionSkipped("},{"line_number":135,"context_line":"                _(\"nova-compute service %s is already in state %s\") %"},{"line_number":136,"context_line":"                (self.host, self.state))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5d5f22c8_c53dd43e","line":133,"in_reply_to":"d2d04fb2_41dce5e9","updated":"2026-02-26 11:29:29.000000000","message":"@smooney@redhat.com is unclear to me if you want me to do any change for this to approve or current implementation is good enough until we clarify what to do with up/down,","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3fca2dbbf352cf5e5e1b6303d2e84b44200683eb","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        if not service:"},{"line_number":131,"context_line":"            raise exception.ActionSkipped("},{"line_number":132,"context_line":"                _(\"nova-compute service %s not found\") % self.host)"},{"line_number":133,"context_line":"        if service.status \u003d\u003d self.state:"},{"line_number":134,"context_line":"            raise exception.ActionSkipped("},{"line_number":135,"context_line":"                _(\"nova-compute service %s is already in state %s\") %"},{"line_number":136,"context_line":"                (self.host, self.state))"}],"source_content_type":"text/x-python","patch_set":1,"id":"d2d04fb2_41dce5e9","line":133,"in_reply_to":"eb162814_2561686f","updated":"2026-02-23 11:03:31.000000000","message":"I agree. I\u0027d incline by removing up/down as it\u0027s confusing and missleading.","commit_id":"736954c6ea3ae746fbeabb9938614ce2f794b533"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"4b0f8b117efd32d19c0d9f37efac1e3c5c62a339","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            return nova.disable_service_nova_compute(self.host, self.reason)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def pre_condition(self):"},{"line_number":121,"context_line":"        \"\"\"Check change_nova_service_state preconditions"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        Skipping conditions:"}],"source_content_type":"text/x-python","patch_set":3,"id":"6a81896e_bbdfcc10","line":120,"in_reply_to":"a221ccc8_9b266065","updated":"2026-02-23 14:05:01.000000000","message":"There will be a skipped reason in action status_message, it may cover that.","commit_id":"396a6865bf0600ede55272caadaac7fa15d0db98"}]}
