)]}'
{".zuul.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0f1fbbde59752ba7645e997f68e936721d34a632","unresolved":true,"context_lines":[{"line_number":70,"context_line":"              period: 120"},{"line_number":71,"context_line":"          $CINDER_CONF:"},{"line_number":72,"context_line":"            # enable notifications in compute node, by default they are only"},{"line_number":73,"context_line":"            # configured in the controller"},{"line_number":74,"context_line":"            oslo_messaging_notifications:"},{"line_number":75,"context_line":"              driver: messagingv2"},{"line_number":76,"context_line":"        test-config:"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"91540b59_3527b0ee","line":73,"updated":"2025-09-11 18:56:15.000000000","message":"nit this is the same comment form the sub node(compute) but this section is configuring the controller.","commit_id":"6cb4e2fa83a34346ebafffa2980f997f478653d1"}],"/COMMIT_MSG":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"4aac60b423737bd52350473cccdb67f9d0e80812","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable storage model collector by default"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By default Watcher enables only the compute model collector [1]. This"},{"line_number":10,"context_line":"change enables the storage one as well, since otherwise when doing"},{"line_number":11,"context_line":"volume migration the model quickly becomes obsolete if there are new"},{"line_number":12,"context_line":"volumes created while an audit is running. The storage model is only"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"0b249ee0_10489998","line":9,"range":{"start_line":9,"start_character":60,"end_line":9,"end_character":63},"updated":"2025-07-10 10:23:53.000000000","message":"I think we missed the link here?","commit_id":"f39c5fc56dd2028cab7c370f89bc521d371cd057"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"eebbc0ff42f9da44b589029645f1193047084f85","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable storage model collector by default"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By default Watcher enables only the compute model collector [1]. This"},{"line_number":10,"context_line":"change enables the storage one as well, since otherwise when doing"},{"line_number":11,"context_line":"volume migration the model quickly becomes obsolete if there are new"},{"line_number":12,"context_line":"volumes created while an audit is running. The storage model is only"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f33d6e1_95f288ce","line":9,"range":{"start_line":9,"start_character":60,"end_line":9,"end_character":63},"in_reply_to":"0b249ee0_10489998","updated":"2025-07-10 10:36:22.000000000","message":"yes, I missed it, added now, thanks!","commit_id":"f39c5fc56dd2028cab7c370f89bc521d371cd057"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f956dd04d2296ee08ee0e0ea23afd28001af8da","unresolved":true,"context_lines":[{"line_number":10,"context_line":"change enables the storage one as well, since otherwise when doing"},{"line_number":11,"context_line":"volume migration the model quickly becomes obsolete if there are new"},{"line_number":12,"context_line":"volumes created while an audit is running. The storage model is only"},{"line_number":13,"context_line":"enabled if a cinder service is registered in keystone."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://docs.openstack.org/watcher/latest/configuration/watcher.html#collector.collector_plugins"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"58403c5a_146131ef","line":13,"updated":"2025-07-21 18:24:20.000000000","message":"The model also gets updated via via cinder notifications.\n\nthat is the primary way to get semi real-time model updates.\n\nthe collector is a secondary way to achieve eventual consistency.\n\nwe shoudl make sure that we have configure cinder to use notifcaiton in the ci jobs.\n\n https://github.com/openstack/watcher/blob/374750847f3ca2284b455792c414808a55e181ff/watcher/decision_engine/model/notification/cinder.py","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"70386f9d940523f5b051598be8315b63645bf1fc","unresolved":true,"context_lines":[{"line_number":10,"context_line":"change enables the storage one as well, since otherwise when doing"},{"line_number":11,"context_line":"volume migration the model quickly becomes obsolete if there are new"},{"line_number":12,"context_line":"volumes created while an audit is running. The storage model is only"},{"line_number":13,"context_line":"enabled if a cinder service is registered in keystone."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://docs.openstack.org/watcher/latest/configuration/watcher.html#collector.collector_plugins"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"80399dcd_450f1106","line":13,"in_reply_to":"13125963_5f2bf872","updated":"2025-08-19 13:06:17.000000000","message":"PS13 has cinder notifications enabled. I tested it in a watcher-tempest patch https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/954625 and they seem to work. From the watcher-strategies job https://zuul.opendev.org/t/openstack/build/2f163680141243e29c91f6bc06906083 the decision engine logs (https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_2f1/openstack/2f163680141243e29c91f6bc06906083/controller/logs/screen-watcher-decision-engine.txt) shows it receiving cinder notifications (the errors in the logs are known issues that are already reported as bugs):\n\n```\nAug 19 06:05:49.887985 npdef4ca19f1534 watcher-decision-engine[92951]: INFO watcher.decision_engine.model.notification.cinder [None e9fa4366-2401-4119-97ad-505b264b4322 None None] Event \u0027volume.create.end\u0027 received from volume.npdef4ca19f1534@lvmdriver-1#lvmdriver-1 with metadata {\u0027message_id\u0027: \u0027e9fa4366-2401-4119-97ad-505b264b4322\u0027, \u0027timestamp\u0027: \u00272025-08-19 06:05:49.880399\u0027}\nAug 19 06:05:49.888251 npdef4ca19f1534 watcher-decision-engine[92951]: DEBUG watcher.decision_engine.model.notification.cinder [None e9fa4366-2401-4119-97ad-505b264b4322 None None] {\u0027tenant_id\u0027: \u0027d4f78cae36ff472cbc3e86875abc7f5a\u0027, \u0027host\u0027: \u0027npdef4ca19f1534@lvmdriver-1#lvmdriver-1\u0027, \u0027user_id\u0027: \u00278524ea052f1d4e21a9ef35e9b003f2ec\u0027, \u0027availability_zone\u0027: \u0027nova\u0027, \u0027volume_id\u0027: \u00275316f749-f017-4c93-ac73-7a1db9a83ab5\u0027, \u0027volume_type\u0027: \u0027540e629c-97f6-45db-817d-5ea6a1367b94\u0027, \u0027display_name\u0027: \u0027tempest-TestExecuteZoneMigrationStrategyVolume-volume-709842173\u0027, \u0027launched_at\u0027: \u00272025-08-19T06:05:49.852060+00:00\u0027, \u0027created_at\u0027: \u00272025-08-19T06:05:48+00:00\u0027, \u0027status\u0027: \u0027available\u0027, \u0027snapshot_id\u0027: None, \u0027size\u0027: 1, \u0027replication_status\u0027: None, \u0027replication_extended_status\u0027: None, \u0027replication_driver_data\u0027: None, \u0027metadata\u0027: [], \u0027volume_attachment\u0027: []} {{(pid\u003d92951) info /opt/stack/watcher/watcher/decision_engine/model/notification/cinder.py:291}}\n```","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"15d6cbde6f6dc9b2a151fbf126c92d5405d23677","unresolved":true,"context_lines":[{"line_number":10,"context_line":"change enables the storage one as well, since otherwise when doing"},{"line_number":11,"context_line":"volume migration the model quickly becomes obsolete if there are new"},{"line_number":12,"context_line":"volumes created while an audit is running. The storage model is only"},{"line_number":13,"context_line":"enabled if a cinder service is registered in keystone."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://docs.openstack.org/watcher/latest/configuration/watcher.html#collector.collector_plugins"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"13125963_5f2bf872","line":13,"in_reply_to":"58403c5a_146131ef","updated":"2025-08-13 14:45:54.000000000","message":"I tried to enable the cinder notifications in the tempest strategies job in PS 8, not sure I have all the required config in place","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0f1fbbde59752ba7645e997f68e936721d34a632","unresolved":false,"context_lines":[{"line_number":10,"context_line":"change enables the storage one as well, since otherwise when doing"},{"line_number":11,"context_line":"volume migration the model quickly becomes obsolete if there are new"},{"line_number":12,"context_line":"volumes created while an audit is running. The storage model is only"},{"line_number":13,"context_line":"enabled if a cinder service is registered in keystone."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://docs.openstack.org/watcher/latest/configuration/watcher.html#collector.collector_plugins"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"059efdf2_0b076c7d","line":13,"in_reply_to":"68c7a049_1bc8a869","updated":"2025-09-11 18:56:15.000000000","message":"Acknowledged","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"3cd9dfdbedf588fa4d7354c086690b9f0ef082aa","unresolved":true,"context_lines":[{"line_number":10,"context_line":"change enables the storage one as well, since otherwise when doing"},{"line_number":11,"context_line":"volume migration the model quickly becomes obsolete if there are new"},{"line_number":12,"context_line":"volumes created while an audit is running. The storage model is only"},{"line_number":13,"context_line":"enabled if a cinder service is registered in keystone."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://docs.openstack.org/watcher/latest/configuration/watcher.html#collector.collector_plugins"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"68c7a049_1bc8a869","line":13,"in_reply_to":"80399dcd_450f1106","updated":"2025-08-25 14:20:57.000000000","message":"replaced the configuration for cinder notification by https://review.opendev.org/c/openstack/watcher/+/957668 which enables them by default","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"99454ca9d183b81a4eb4060da4bf5fbe158cf92b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ec93275e_b410a55e","updated":"2025-06-27 12:51:53.000000000","message":"Before enabling by default, we could add a test to force a storage model update, and check the returned value. We can use the `list-data-model` API[1] for that. \n@Joan do you have an environment to test this call with `data_model_type\u003dstorage` and without cinder backends?\nStill not sure if we want to enable it by default.\n\n[1] https://docs.openstack.org/api-ref/resource-optimization/#list-data-model","commit_id":"d2300ff4612886bb710af0c2124297bdcce3b5c3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"6cbc7fff1d05b3950a354e81569c21a0288132aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f1b70b8b_daefd6f7","updated":"2025-06-02 11:46:36.000000000","message":"My observations based on CI logs in https://review.opendev.org/c/openstack/watcher/+/951491 and from code:\n\n- default period to create the model is 1hr, so I would not expect this change to load cinder apis in a significant way.\n- Note that the model has code to check if there are audits with storage scope. That makes watcher to skip the storage model creation at all when there is no cinder even when enabled, see messages:\n\nJun 02 08:59:44.398937 np0040977187 watcher-decision-engine[90336]: DEBUG watcher.decision_engine.model.collector.cinder [-] Building latest Cinder cluster data model {{(pid\u003d90336) execute /opt/stack/watcher/watcher/decision_engine/model/collector/cinder.py:148}}\nJun 02 08:59:44.399117 np0040977187 watcher-decision-engine[90336]: DEBUG watcher.decision_engine.model.collector.cinder [-] No audit, Don\u0027t Build storage data model {{(pid\u003d90336) execute /opt/stack/watcher/watcher/decision_engine/model/collector/cinder.py:151}}\n\nThis avoids any error when cinder is not deployed.\n\nThe only actual errors happen in case a strategy is created which involves storage. In that case the decision-engine reports errors in the log if cinder is not enabled and the collector is included. It\u0027d be good to improve that case, but I think the current situation is acceptable to enable storage collector by default.\n\nIdeally, we could manage better the situation when cinder is not available but that would be follow-up. Actually, I\u0027d say we would get the same errors if we don\u0027t enable the collector because the audit triggers an storage model collection if it does not exist.","commit_id":"d2300ff4612886bb710af0c2124297bdcce3b5c3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"61c5fd4ffdfdb5184ea57e7e985c7b6f14c5a850","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0432c205_4b3e0a72","updated":"2025-05-30 14:36:38.000000000","message":"check-rdo","commit_id":"d2300ff4612886bb710af0c2124297bdcce3b5c3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"0d1d5a48d497f823f6e75e28a92715928b1e1ad6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"028b0f36_8709662c","in_reply_to":"ec93275e_b410a55e","updated":"2025-07-04 10:22:02.000000000","message":"sorry Doug, I missed your comment. As we talked about earlier today offline, we can\u0027t use that API for testing this as it\u0027s limited to the compute model https://github.com/openstack/watcher/blob/93366df2641b64b7bc345ed91bfbef7ae17de25a/watcher/api/controllers/v1/data_model.py#L58","commit_id":"d2300ff4612886bb710af0c2124297bdcce3b5c3"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"4aac60b423737bd52350473cccdb67f9d0e80812","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"330c15a8_0ad47cf4","updated":"2025-07-10 10:23:53.000000000","message":"overall it looks good.","commit_id":"f39c5fc56dd2028cab7c370f89bc521d371cd057"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"aacd43399e3ebd8fdfb0925e47dea8936ac3452b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"91697cbc_8636d93d","updated":"2025-07-09 07:34:47.000000000","message":"recheck","commit_id":"f39c5fc56dd2028cab7c370f89bc521d371cd057"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"920ba23b48452907d782fbf876ebcb5f4778c88d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6b55ab46_3366d76c","updated":"2025-07-10 10:20:41.000000000","message":"test_execute_workload_balance_strategy_cpu known issue, fix is in progress.","commit_id":"f39c5fc56dd2028cab7c370f89bc521d371cd057"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"31198c77686b58d223187d27adece3dd9cbaa0c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ddb0d319_2e0785f9","updated":"2025-07-16 15:24:44.000000000","message":"I have a question about available vs enabled. I think that would make more sense to check if the service is enabled.","commit_id":"f038df5f30f4485ef95bf35934511e66e4f346fe"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9e52861222952ce12a824f62b4ef8a73f1f45891","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5b32c7e0_a0347e0f","updated":"2025-07-18 06:12:21.000000000","message":"recheck after skipping tempest tests https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/955302","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"09094f6853d229796090a74d166fd04908b961e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"bb5a9a95_9fb29280","updated":"2025-08-27 19:08:28.000000000","message":"I think that we can proceed with this. We also need to increase test coverage in storage model and related strategies, so this is a good start.","commit_id":"69ac834a7d5084ca5a42e9ac835208872c76f835"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"604dab0d03ba4661f7bbd91ae00b00e9b17e8196","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"4ca41583_8a09fab0","updated":"2025-09-11 18:56:34.000000000","message":"check-rdo","commit_id":"6cb4e2fa83a34346ebafffa2980f997f478653d1"}],"watcher/common/keystone_helper.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"31198c77686b58d223187d27adece3dd9cbaa0c0","unresolved":true,"context_lines":[{"line_number":91,"context_line":"                             name_or_id))"},{"line_number":92,"context_line":"            return domains[0]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def is_service_available(self, name_or_id):"},{"line_number":95,"context_line":"        try:"},{"line_number":96,"context_line":"            self.keystone.services.get(name_or_id)"},{"line_number":97,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"138a2a4c_f832690b","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":28},"updated":"2025-07-16 15:24:44.000000000","message":"I think that we actually need to see if the service is \u0027enabled\u0027. We can have the service listed, but disabled.\nWe can get the returned object from get/list and check the \u0027enabled\u0027 parameter.","commit_id":"f038df5f30f4485ef95bf35934511e66e4f346fe"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"43f3b247991a6868353a60613af01c267cd06ff5","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                             name_or_id))"},{"line_number":92,"context_line":"            return domains[0]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def is_service_available(self, name_or_id):"},{"line_number":95,"context_line":"        try:"},{"line_number":96,"context_line":"            self.keystone.services.get(name_or_id)"},{"line_number":97,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"11ecd5ec_bdc947b8","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":28},"in_reply_to":"138a2a4c_f832690b","updated":"2025-07-17 10:52:05.000000000","message":"good point, fixed, thanks!","commit_id":"f038df5f30f4485ef95bf35934511e66e4f346fe"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"31198c77686b58d223187d27adece3dd9cbaa0c0","unresolved":true,"context_lines":[{"line_number":100,"context_line":"            if len(services) \u003d\u003d 0:"},{"line_number":101,"context_line":"                LOG.warning(f\"Service not Found: {name_or_id}\")"},{"line_number":102,"context_line":"                return False"},{"line_number":103,"context_line":"            elif len(services) \u003e 1:"},{"line_number":104,"context_line":"                LOG.warning(f\"Service name seems ambiguous: {name_or_id}\")"},{"line_number":105,"context_line":"                return False"},{"line_number":106,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"55a3e369_4ec9ba34","line":103,"range":{"start_line":103,"start_character":12,"end_line":103,"end_character":35},"updated":"2025-07-16 15:24:44.000000000","message":"should we consider the case that we have more than one, but only one enabled, as valid?","commit_id":"f038df5f30f4485ef95bf35934511e66e4f346fe"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"43f3b247991a6868353a60613af01c267cd06ff5","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            if len(services) \u003d\u003d 0:"},{"line_number":101,"context_line":"                LOG.warning(f\"Service not Found: {name_or_id}\")"},{"line_number":102,"context_line":"                return False"},{"line_number":103,"context_line":"            elif len(services) \u003e 1:"},{"line_number":104,"context_line":"                LOG.warning(f\"Service name seems ambiguous: {name_or_id}\")"},{"line_number":105,"context_line":"                return False"},{"line_number":106,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"3cfcd49d_98b3962b","line":103,"range":{"start_line":103,"start_character":12,"end_line":103,"end_character":35},"in_reply_to":"55a3e369_4ec9ba34","updated":"2025-07-17 10:52:05.000000000","message":"yes, that makes sense, done","commit_id":"f038df5f30f4485ef95bf35934511e66e4f346fe"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f956dd04d2296ee08ee0e0ea23afd28001af8da","unresolved":true,"context_lines":[{"line_number":91,"context_line":"                             name_or_id))"},{"line_number":92,"context_line":"            return domains[0]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def is_service_enabled(self, name_or_id):"},{"line_number":95,"context_line":"        try:"},{"line_number":96,"context_line":"            service \u003d self.keystone.services.get(name_or_id)"},{"line_number":97,"context_line":"            return service.enabled"}],"source_content_type":"text/x-python","patch_set":6,"id":"48042a8b_b8f2afc6","line":94,"updated":"2025-07-21 18:24:20.000000000","message":"the canonical way to check if a service exist is via the service type not the name or id.\nthe name is freeform and not somethign we can rely on in code in general\n\nthe service type however shoudl be one of a set of well know values.","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"15d6cbde6f6dc9b2a151fbf126c92d5405d23677","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                             name_or_id))"},{"line_number":92,"context_line":"            return domains[0]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def is_service_enabled(self, name_or_id):"},{"line_number":95,"context_line":"        try:"},{"line_number":96,"context_line":"            service \u003d self.keystone.services.get(name_or_id)"},{"line_number":97,"context_line":"            return service.enabled"}],"source_content_type":"text/x-python","patch_set":6,"id":"8a7f7dd8_a66e9fcf","line":94,"in_reply_to":"48042a8b_b8f2afc6","updated":"2025-08-13 14:45:54.000000000","message":"Acknowledged","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"}],"watcher/decision_engine/model/collector/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f956dd04d2296ee08ee0e0ea23afd28001af8da","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            for collector_name in collector_plugins:"},{"line_number":44,"context_line":"                if collector_name \u003d\u003d \u0027storage\u0027:"},{"line_number":45,"context_line":"                    keystone \u003d keystone_helper.KeystoneHelper(self.osc)"},{"line_number":46,"context_line":"                    if not keystone.is_service_enabled(name_or_id\u003d\u0027cinder\u0027):"},{"line_number":47,"context_line":"                        LOG.warning("},{"line_number":48,"context_line":"                            \"Cinder service is not enabled,\""},{"line_number":49,"context_line":"                            \" skipping storage collector\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ecf6dfaf_c990e9c7","line":46,"updated":"2025-07-21 18:24:20.000000000","message":"-1 you cant rely on it being called cinder.\n\nwe shoudl check by service type \n\nhttps://opendev.org/openstack/service-types-authority/src/branch/master/service-types.yaml#L72-L78\n\nalternitivly i wonder if we can reuse our exisitng cidner client to knwo if its deployed?","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0f1fbbde59752ba7645e997f68e936721d34a632","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            for collector_name in collector_plugins:"},{"line_number":44,"context_line":"                if collector_name \u003d\u003d \u0027storage\u0027:"},{"line_number":45,"context_line":"                    keystone \u003d keystone_helper.KeystoneHelper(self.osc)"},{"line_number":46,"context_line":"                    if not keystone.is_service_enabled(name_or_id\u003d\u0027cinder\u0027):"},{"line_number":47,"context_line":"                        LOG.warning("},{"line_number":48,"context_line":"                            \"Cinder service is not enabled,\""},{"line_number":49,"context_line":"                            \" skipping storage collector\""}],"source_content_type":"text/x-python","patch_set":6,"id":"b2544ac7_544d7fa2","line":46,"in_reply_to":"c6d6717b_794e422f","updated":"2025-09-11 18:56:15.000000000","message":"Done","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"15d6cbde6f6dc9b2a151fbf126c92d5405d23677","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            for collector_name in collector_plugins:"},{"line_number":44,"context_line":"                if collector_name \u003d\u003d \u0027storage\u0027:"},{"line_number":45,"context_line":"                    keystone \u003d keystone_helper.KeystoneHelper(self.osc)"},{"line_number":46,"context_line":"                    if not keystone.is_service_enabled(name_or_id\u003d\u0027cinder\u0027):"},{"line_number":47,"context_line":"                        LOG.warning("},{"line_number":48,"context_line":"                            \"Cinder service is not enabled,\""},{"line_number":49,"context_line":"                            \" skipping storage collector\""}],"source_content_type":"text/x-python","patch_set":6,"id":"c6d6717b_794e422f","line":46,"in_reply_to":"ecf6dfaf_c990e9c7","updated":"2025-08-13 14:45:54.000000000","message":"ack thanks, I updated to code to check for the service type.\n\ncurrently the cinder helper does not have any check for the service https://github.com/openstack/watcher/blob/master/watcher/common/cinder_helper.py#L30.\n\nIIUC it relies on the cinder client library attempting to connect to the endpoint when it creates the Cinder client object in https://github.com/openstack/watcher/blob/4080d5767da4e7cdd4e25d533f4dc7dd279d5c13/watcher/common/clients.py#L181","commit_id":"f41050e8e2157300bc5d6ed73c1324eae05a2f43"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0f1fbbde59752ba7645e997f68e936721d34a632","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            # volumev3 is a commonly used alias for the cinder keystone service"},{"line_number":45,"context_line":"            # type"},{"line_number":46,"context_line":"            return True"},{"line_number":47,"context_line":"        return False"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_collectors(self):"},{"line_number":50,"context_line":"        if self._collectors is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"b7c3b073_04f06de2","line":47,"updated":"2025-09-11 18:56:15.000000000","message":"this is ok. i belive if we were using the sdk there is a better way to do this but we can adress that as part fo movign to the sdk.","commit_id":"6cb4e2fa83a34346ebafffa2980f997f478653d1"}]}
