)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"555badf9fdedc26bfa08fcef1c279edc1c9aa7f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c9c38d80_fad28a71","updated":"2025-12-17 14:10:21.000000000","message":"lgtm, just have a couple of nits","commit_id":"86b9c8eaedfa97d391fddf2f77929d09d37aaca2"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"e808b9fbfcf79a4d908d2707ac912150abf7b5ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e6544552_64ec50d5","updated":"2025-12-14 12:30:13.000000000","message":"recheck","commit_id":"86b9c8eaedfa97d391fddf2f77929d09d37aaca2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f69f49c5870dce4b641689d58003cfc85273c0e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c36ce48c_50251560","updated":"2026-01-15 13:28:27.000000000","message":"-1 is mainly for the abc issue.","commit_id":"690352cf9724c13a6baa4ccb29e9d46f4568916e"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"4e68d116544848d9cfce4de98708c84331dcf817","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c07398fc_60a6dd5b","updated":"2026-01-13 11:19:05.000000000","message":"lgtm","commit_id":"690352cf9724c13a6baa4ccb29e9d46f4568916e"}],"watcher/common/service.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f69f49c5870dce4b641689d58003cfc85273c0e8","unresolved":true,"context_lines":[{"line_number":268,"context_line":"        return api_manager_version"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"class ServiceMonitoringBase(scheduling.BackgroundSchedulerService):"},{"line_number":272,"context_line":"    \"\"\"Base Service to monitor the status of Watcher services."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    This class is intended to be used as a base class to monitore the"}],"source_content_type":"text/x-python","patch_set":1,"id":"4616cb82_dc9a88fc","line":271,"in_reply_to":"03c91cc2_affa90e5","updated":"2026-01-15 13:28:27.000000000","message":"so when you do that you need to also mark the class as bastrqact by subclassing form abc.ABC  or set its metacalss for the  @abc.abstractmethod decorator to work.\n\nhttps://docs.python.org/3/library/abc.html#abc.ABC\nhttps://docs.python.org/3/library/abc.html#abc.ABCMeta\n\nif you want to fix this in a followup we could but without that \n\n@abc.abstractmethod does nothing","commit_id":"a20e3f80a58a61ba92bd52359d144d0a3a1fb142"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9d93e34963a2745e609bc430874d2907f62a6212","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        return api_manager_version"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"class ServiceMonitoringBase(scheduling.BackgroundSchedulerService):"},{"line_number":272,"context_line":"    \"\"\"Base Service to monitor the status of Watcher services."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    This class is intended to be used as a base class to monitore the"}],"source_content_type":"text/x-python","patch_set":1,"id":"4e40c25e_54e3754d","line":271,"in_reply_to":"1840f72b_d8b98f89","updated":"2025-12-11 16:00:38.000000000","message":"Not now","commit_id":"a20e3f80a58a61ba92bd52359d144d0a3a1fb142"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7dd9cb1452e641022b44748bf5fecc66966e264e","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        return api_manager_version"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"class ServiceMonitoringBase(scheduling.BackgroundSchedulerService):"},{"line_number":272,"context_line":"    \"\"\"Base Service to monitor the status of Watcher services."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    This class is intended to be used as a base class to monitore the"}],"source_content_type":"text/x-python","patch_set":1,"id":"4943ac0d_d084378b","line":271,"in_reply_to":"4616cb82_dc9a88fc","updated":"2026-01-15 14:47:43.000000000","message":"Fixed in latest PS","commit_id":"a20e3f80a58a61ba92bd52359d144d0a3a1fb142"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9d93e34963a2745e609bc430874d2907f62a6212","unresolved":true,"context_lines":[{"line_number":268,"context_line":"        return api_manager_version"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"class ServiceMonitoringBase(scheduling.BackgroundSchedulerService):"},{"line_number":272,"context_line":"    \"\"\"Base Service to monitor the status of Watcher services."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    This class is intended to be used as a base class to monitore the"}],"source_content_type":"text/x-python","patch_set":1,"id":"03c91cc2_affa90e5","line":271,"in_reply_to":"d141430e_7af07016","updated":"2025-12-11 16:00:38.000000000","message":"Good suggestion, I will do it.","commit_id":"a20e3f80a58a61ba92bd52359d144d0a3a1fb142"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9d93e34963a2745e609bc430874d2907f62a6212","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        leader \u003d active_hosts[0]"},{"line_number":306,"context_line":"        if leader !\u003d self.last_leader:"},{"line_number":307,"context_line":"            LOG.info("},{"line_number":308,"context_line":"                f\"Leader election completed: {self.last_leader} -\u003e {leader}. \""},{"line_number":309,"context_line":"                f\"Selected as leader: {CONF.host \u003d\u003d leader}\")"},{"line_number":310,"context_line":"            self.last_leader \u003d leader"},{"line_number":311,"context_line":"        return (CONF.host \u003d\u003d leader)"}],"source_content_type":"text/x-python","patch_set":1,"id":"871d61e5_aee3edc7","line":308,"in_reply_to":"4a8e6228_637230ba","updated":"2025-12-11 16:00:38.000000000","message":"actually, it has 79 characters.","commit_id":"a20e3f80a58a61ba92bd52359d144d0a3a1fb142"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9d93e34963a2745e609bc430874d2907f62a6212","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        leader \u003d active_hosts[0]"},{"line_number":306,"context_line":"        if leader !\u003d self.last_leader:"},{"line_number":307,"context_line":"            LOG.info("},{"line_number":308,"context_line":"                f\"Leader election completed: {self.last_leader} -\u003e {leader}. \""},{"line_number":309,"context_line":"                f\"Selected as leader: {CONF.host \u003d\u003d leader}\")"},{"line_number":310,"context_line":"            self.last_leader \u003d leader"},{"line_number":311,"context_line":"        return (CONF.host \u003d\u003d leader)"}],"source_content_type":"text/x-python","patch_set":1,"id":"72ed9e25_04beb56e","line":308,"in_reply_to":"c11235f5_908d7993","updated":"2025-12-11 16:00:38.000000000","message":"Done","commit_id":"a20e3f80a58a61ba92bd52359d144d0a3a1fb142"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"555badf9fdedc26bfa08fcef1c279edc1c9aa7f4","unresolved":true,"context_lines":[{"line_number":306,"context_line":"        leader \u003d active_hosts[0]"},{"line_number":307,"context_line":"        if leader !\u003d self.last_leader:"},{"line_number":308,"context_line":"            LOG.info("},{"line_number":309,"context_line":"                \"Leader election completed: %s -\u003e %s. \""},{"line_number":310,"context_line":"                \"Selected as leader: %s\", self.last_leader, leader,"},{"line_number":311,"context_line":"                CONF.host \u003d\u003d leader)"},{"line_number":312,"context_line":"            self.last_leader \u003d leader"}],"source_content_type":"text/x-python","patch_set":2,"id":"10305728_dc897536","line":309,"updated":"2025-12-17 14:10:21.000000000","message":"we should also log the service_name here for easier debugging","commit_id":"86b9c8eaedfa97d391fddf2f77929d09d37aaca2"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"4e68d116544848d9cfce4de98708c84331dcf817","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        leader \u003d active_hosts[0]"},{"line_number":307,"context_line":"        if leader !\u003d self.last_leader:"},{"line_number":308,"context_line":"            LOG.info("},{"line_number":309,"context_line":"                \"Leader election completed: %s -\u003e %s. \""},{"line_number":310,"context_line":"                \"Selected as leader: %s\", self.last_leader, leader,"},{"line_number":311,"context_line":"                CONF.host \u003d\u003d leader)"},{"line_number":312,"context_line":"            self.last_leader \u003d leader"}],"source_content_type":"text/x-python","patch_set":2,"id":"e7f8cbdc_ac84fea2","line":309,"in_reply_to":"10305728_dc897536","updated":"2026-01-13 11:19:05.000000000","message":"Done","commit_id":"86b9c8eaedfa97d391fddf2f77929d09d37aaca2"}],"watcher/decision_engine/service_monitor.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"555badf9fdedc26bfa08fcef1c279edc1c9aa7f4","unresolved":true,"context_lines":[{"line_number":81,"context_line":"                if len(alive_services) \u003d\u003d 0:"},{"line_number":82,"context_line":"                    LOG.warning(\u0027No alive services found for decision engine\u0027)"},{"line_number":83,"context_line":"                    continue"},{"line_number":84,"context_line":"                if (result \u003d\u003d failed_s):"},{"line_number":85,"context_line":"                    audit_filters \u003d {"},{"line_number":86,"context_line":"                        \u0027audit_type\u0027: objects.audit.AuditType.CONTINUOUS.value,"},{"line_number":87,"context_line":"                        \u0027state\u0027: objects.audit.State.ONGOING,"}],"source_content_type":"text/x-python","patch_set":2,"id":"188b59d7_5afc8261","line":84,"updated":"2025-12-17 14:10:21.000000000","message":"nit: the parenthesis are redundant now","commit_id":"86b9c8eaedfa97d391fddf2f77929d09d37aaca2"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"4e68d116544848d9cfce4de98708c84331dcf817","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                if len(alive_services) \u003d\u003d 0:"},{"line_number":82,"context_line":"                    LOG.warning(\u0027No alive services found for decision engine\u0027)"},{"line_number":83,"context_line":"                    continue"},{"line_number":84,"context_line":"                if (result \u003d\u003d failed_s):"},{"line_number":85,"context_line":"                    audit_filters \u003d {"},{"line_number":86,"context_line":"                        \u0027audit_type\u0027: objects.audit.AuditType.CONTINUOUS.value,"},{"line_number":87,"context_line":"                        \u0027state\u0027: objects.audit.State.ONGOING,"}],"source_content_type":"text/x-python","patch_set":2,"id":"85c0dd2a_0b7ac840","line":84,"in_reply_to":"188b59d7_5afc8261","updated":"2026-01-13 11:19:05.000000000","message":"Done","commit_id":"86b9c8eaedfa97d391fddf2f77929d09d37aaca2"}],"watcher/tests/common/test_service.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f69f49c5870dce4b641689d58003cfc85273c0e8","unresolved":true,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import datetime"},{"line_number":17,"context_line":"import freezegun"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from unittest import mock"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"2de3737d_6ac5fcda","line":17,"updated":"2026-01-15 13:28:27.000000000","message":"this is not part of the python std lib so it should not be here.\n\nthis a third party dependency so it should be in its own group after the std lib deps.\n\n\nhttps://github.com/openstack/hacking/blob/master/HACKING.rst#import-order-template\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/docs/comprehensive-guide.md#2-import-organization-critical-for-ai\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/docs/quick-rules.md#1-file-structure-template","commit_id":"690352cf9724c13a6baa4ccb29e9d46f4568916e"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7dd9cb1452e641022b44748bf5fecc66966e264e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import datetime"},{"line_number":17,"context_line":"import freezegun"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from unittest import mock"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"83f2e82a_907d3e1b","line":17,"in_reply_to":"2de3737d_6ac5fcda","updated":"2026-01-15 14:47:43.000000000","message":"Done","commit_id":"690352cf9724c13a6baa4ccb29e9d46f4568916e"}]}
