)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"787cd73d46b38ae0501f8aaa50a14066cd7b952b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bbb50ce7_75faa9b9","updated":"2026-01-27 19:14:28.000000000","message":"still wip","commit_id":"f8b81c1b01e8583fdeb3859b9cc9ef0a4eb7a44a"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"72305bfa701aad0f642d6c90623fa57ac45dacc7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"bd6558bc_6eaa78c0","updated":"2026-02-03 13:06:49.000000000","message":"recheck unrelated failure in grenade job","commit_id":"2364b0a4416d180f8ec052da0d1eb6ced45b923f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"5072d90e7cdeef2c223b2959bfa78ea1b31733b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"f5512d27_0cd835e5","updated":"2026-02-11 10:21:40.000000000","message":"recheck unrelated failure","commit_id":"750d08300a915ddb31df2cb500e2761dda063df3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"32926e8adcbb36bd175a5797492bf83a2ec763df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"f8a33e4b_4f47c033","updated":"2026-02-13 07:50:09.000000000","message":"recheck","commit_id":"6337d338ea9afaba31f73c3c8b76ee51426ed5b7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"dab8e3b3cae35091150f94feb482f277554b2c74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"80377a8c_cebe1aa1","updated":"2026-02-19 17:47:52.000000000","message":"recheck","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"62eb6ac99b49edb07fefb7a8992686e1e5278739","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"e3a9453d_f3384750","updated":"2026-02-24 20:58:45.000000000","message":"re adding my vote, since we can fix the remaining comment in a follow up","commit_id":"67b0be383e959f4561dd77c19d386a26ab82f47e"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c69c5d1aeddea3a3c86b443734937d3343e479d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"63a0924a_97a515a8","updated":"2026-02-24 15:26:21.000000000","message":"recheck","commit_id":"67b0be383e959f4561dd77c19d386a26ab82f47e"}],"releasenotes/notes/prepare-openstacksdk-migration-73cc43ab26ed47e6.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7630f455ee50b5f28fbe6f28b1447f099f352129","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Connection settings for Nova should be added"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"eddfe969_88bc6c03","line":1,"in_reply_to":"3a4ad72b_20ef9580","updated":"2026-02-24 20:49:30.000000000","message":"DONE","commit_id":"67b0be383e959f4561dd77c19d386a26ab82f47e"}],"watcher/common/clients.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2df8b34083259b876e70df22045b7cff3ed3bbe0","unresolved":true,"context_lines":[{"line_number":104,"context_line":"    def reset_clients(self):"},{"line_number":105,"context_line":"        self._session \u003d None"},{"line_number":106,"context_line":"        self._keystone \u003d None"},{"line_number":107,"context_line":"        self._nova \u003d None"},{"line_number":108,"context_line":"        self._gnocchi \u003d None"},{"line_number":109,"context_line":"        self._cinder \u003d None"},{"line_number":110,"context_line":"        self._monasca \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"55171e6b_36345096","side":"PARENT","line":107,"updated":"2026-02-03 18:47:48.000000000","message":"so this breaks ironic\n\nhttps://review.opendev.org/c/openstack/watcher/+/974925/12/watcher/common/metal_helper/base.py#72","commit_id":"bf01e15066cdb599cddc6b04a5e794376f5ce5af"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"54ac85606ed7db8bd30bb2932511193918d30228","unresolved":true,"context_lines":[{"line_number":104,"context_line":"    def reset_clients(self):"},{"line_number":105,"context_line":"        self._session \u003d None"},{"line_number":106,"context_line":"        self._keystone \u003d None"},{"line_number":107,"context_line":"        self._nova \u003d None"},{"line_number":108,"context_line":"        self._gnocchi \u003d None"},{"line_number":109,"context_line":"        self._cinder \u003d None"},{"line_number":110,"context_line":"        self._monasca \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"9702eeda_8f32fab5","side":"PARENT","line":107,"in_reply_to":"55171e6b_36345096","updated":"2026-02-04 11:11:32.000000000","message":"that\u0027s true, I missed that and the unit tests did not catch it either, I\u0027ll change the ironic to use the nova helper instead of the client directly","commit_id":"bf01e15066cdb599cddc6b04a5e794376f5ce5af"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    def reset_clients(self):"},{"line_number":105,"context_line":"        self._session \u003d None"},{"line_number":106,"context_line":"        self._keystone \u003d None"},{"line_number":107,"context_line":"        self._nova \u003d None"},{"line_number":108,"context_line":"        self._gnocchi \u003d None"},{"line_number":109,"context_line":"        self._cinder \u003d None"},{"line_number":110,"context_line":"        self._monasca \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"19111693_8bacba86","side":"PARENT","line":107,"in_reply_to":"9702eeda_8f32fab5","updated":"2026-02-19 18:21:02.000000000","message":"Done","commit_id":"bf01e15066cdb599cddc6b04a5e794376f5ce5af"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f67e94d2fd1d7a69e7067e27b657c2f94300deab","unresolved":true,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        novaclient_version \u003d CONF.nova.api_version"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        check_min_nova_api_version(novaclient_version)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        nova_endpoint_type \u003d self._get_client_option(\u0027nova\u0027, \u0027endpoint_type\u0027)"},{"line_number":182,"context_line":"        nova_region_name \u003d self._get_client_option(\u0027nova\u0027, \u0027region_name\u0027)"}],"source_content_type":"text/x-python","patch_set":34,"id":"f203e0a8_37564090","side":"PARENT","line":179,"range":{"start_line":179,"start_character":0,"end_line":179,"end_character":54},"updated":"2026-02-23 19:17:15.000000000","message":"so it looks like we are not doing api_version check anymore by removing this code","commit_id":"cfbe8224f33278775adc590aa14124822566babe"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"bbf35801efb397bc26971269aeaa21384fcdbd55","unresolved":true,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        novaclient_version \u003d CONF.nova.api_version"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        check_min_nova_api_version(novaclient_version)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        nova_endpoint_type \u003d self._get_client_option(\u0027nova\u0027, \u0027endpoint_type\u0027)"},{"line_number":182,"context_line":"        nova_region_name \u003d self._get_client_option(\u0027nova\u0027, \u0027region_name\u0027)"}],"source_content_type":"text/x-python","patch_set":34,"id":"48b1c207_3062700e","side":"PARENT","line":179,"range":{"start_line":179,"start_character":0,"end_line":179,"end_character":54},"in_reply_to":"f203e0a8_37564090","updated":"2026-02-24 09:40:05.000000000","message":"right, I can move this call to the __init__ of NovaHelper","commit_id":"cfbe8224f33278775adc590aa14124822566babe"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f67e94d2fd1d7a69e7067e27b657c2f94300deab","unresolved":true,"context_lines":[{"line_number":109,"context_line":"    :raises: ValueError if the configured version is less than the required"},{"line_number":110,"context_line":"        minimum"},{"line_number":111,"context_line":"    \"\"\""},{"line_number":112,"context_line":"    min_required \u003d versionutils.convert_version_to_int(MIN_NOVA_API_VERSION)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    if versionutils.convert_version_to_int(config_version) \u003c min_required:"},{"line_number":115,"context_line":"        raise ValueError(f\u0027Invalid nova.api_version {config_version}. \u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"4b750536_fa2198ef","line":112,"range":{"start_line":112,"start_character":32,"end_line":112,"end_character":54},"updated":"2026-02-23 19:17:15.000000000","message":"Based on previous changes, it was agreed on using microversion_parse instead. Please update if you push a new PS. Thanks","commit_id":"406776d2ed0c2f0e7a9b0ef3ee911ce47451cff5"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"bbf35801efb397bc26971269aeaa21384fcdbd55","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    :raises: ValueError if the configured version is less than the required"},{"line_number":110,"context_line":"        minimum"},{"line_number":111,"context_line":"    \"\"\""},{"line_number":112,"context_line":"    min_required \u003d versionutils.convert_version_to_int(MIN_NOVA_API_VERSION)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    if versionutils.convert_version_to_int(config_version) \u003c min_required:"},{"line_number":115,"context_line":"        raise ValueError(f\u0027Invalid nova.api_version {config_version}. \u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"97d15fb1_36e7c162","line":112,"range":{"start_line":112,"start_character":32,"end_line":112,"end_character":54},"in_reply_to":"4b750536_fa2198ef","updated":"2026-02-24 09:40:05.000000000","message":"thanks I had missed this one, fixed","commit_id":"406776d2ed0c2f0e7a9b0ef3ee911ce47451cff5"}],"watcher/common/metal_helper/base.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2df8b34083259b876e70df22045b7cff3ed3bbe0","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    @property"},{"line_number":70,"context_line":"    def nova_client(self):"},{"line_number":71,"context_line":"        if not getattr(self, \"_nova_client\", None):"},{"line_number":72,"context_line":"            self._nova_client \u003d self._osc.nova()"},{"line_number":73,"context_line":"        return self._nova_client"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"9af9a5cb_3e572d7e","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":2},"updated":"2026-02-03 18:47:48.000000000","message":"so ai spotted that you are braking this \n\nhttps://minio-api.teim.app/zuul-logs/d3b/main/d3beb0b6303a424f84ca5d13181c4cbc/code-review/review-report.html","commit_id":"2364b0a4416d180f8ec052da0d1eb6ced45b923f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"54ac85606ed7db8bd30bb2932511193918d30228","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    @property"},{"line_number":70,"context_line":"    def nova_client(self):"},{"line_number":71,"context_line":"        if not getattr(self, \"_nova_client\", None):"},{"line_number":72,"context_line":"            self._nova_client \u003d self._osc.nova()"},{"line_number":73,"context_line":"        return self._nova_client"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"33671f1e_d3b61903","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":2},"in_reply_to":"9af9a5cb_3e572d7e","updated":"2026-02-04 11:11:32.000000000","message":"that\u0027s a good catch, I\u0027ll fix in the next PS","commit_id":"2364b0a4416d180f8ec052da0d1eb6ced45b923f"}],"watcher/common/nova_helper.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def handle_nova_error(resource_type, id_arg_index\u003d1):"},{"line_number":61,"context_line":"    \"\"\"Decorator to handle exceptions from novaclient."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    This decorator catches novaclient exceptions and handles them as follows:"},{"line_number":64,"context_line":"    - NotFound exceptions: logs a debug message and raises"}],"source_content_type":"text/x-python","patch_set":32,"id":"98f36a79_032a0416","line":61,"in_reply_to":"68e44cb2_24b7a102","updated":"2026-02-19 18:21:02.000000000","message":"again echnialy correct but this will be delted i nthe next patch in the seriese so...","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    return decorator"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"@dc.dataclass(frozen\u003dTrue)"},{"line_number":97,"context_line":"class Server:"},{"line_number":98,"context_line":"    \"\"\"Pure dataclass for server data."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"fc14c708_ef3160c4","line":96,"in_reply_to":"075c61b8_5fce60fe","updated":"2026-02-19 18:21:02.000000000","message":"the existing validation is enough","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    @nova_retries"},{"line_number":436,"context_line":"    @handle_nova_error(\"Compute node\")"},{"line_number":437,"context_line":"    def get_compute_node_list(self, filter_ironic_nodes\u003dTrue):"},{"line_number":438,"context_line":"        \"\"\"Get the list of compute nodes (hypervisors)."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        :param filter_ironic_nodes: If True, exclude baremetal (ironic) nodes"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa6eca97_4bbb45f9","line":437,"in_reply_to":"1a06dcd2_6737a5b1","updated":"2026-02-19 18:21:02.000000000","message":"so they shoudl not be but watcher has historical bagage whre it treats ironic compute as differnt form non ironic computes which is a historical hack.\n\nso this is just maintiaing behvior even if it shoudl not work this way long term.","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":false,"context_lines":[{"line_number":492,"context_line":"                    if cn.service_host \u003d\u003d node_hostname:"},{"line_number":493,"context_line":"                        return cn"},{"line_number":494,"context_line":"            raise exception.ComputeNodeNotFound(name\u003dnode_hostname)"},{"line_number":495,"context_line":"        except Exception as exc:"},{"line_number":496,"context_line":"            LOG.exception(exc)"},{"line_number":497,"context_line":"            raise exception.ComputeNodeNotFound(name\u003dnode_hostname) from exc"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"b463911e_8eb518f0","line":495,"in_reply_to":"f9ea7fb5_9ff9eb83","updated":"2026-02-19 18:21:02.000000000","message":"yes but this is unrelate to this change.\nwe shoudl do a pass on this module seperatly to get ride of all bare expctions after the sdk conversion is done.","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7630f455ee50b5f28fbe6f28b1447f099f352129","unresolved":true,"context_lines":[{"line_number":374,"context_line":"        \"\"\""},{"line_number":375,"context_line":"        self._config_overrides \u003d False"},{"line_number":376,"context_line":"        self._override_deprecated_configs()"},{"line_number":377,"context_line":"        clients.check_min_nova_api_version(CONF.nova.api_version)"},{"line_number":378,"context_line":"        self.osc \u003d osc if osc else clients.OpenStackClients()"},{"line_number":379,"context_line":"        self.cinder \u003d self.osc.cinder()"},{"line_number":380,"context_line":"        self._create_sdk_connection("}],"source_content_type":"text/x-python","patch_set":35,"id":"78375981_a05dd7ff","line":377,"updated":"2026-02-24 20:49:30.000000000","message":"just an fyi \n\neveuntlly we need to remove this config option and move to having every call pass an explcit microverions\n\nthat is how novas api is inteded to be used","commit_id":"67b0be383e959f4561dd77c19d386a26ab82f47e"}],"watcher/decision_engine/datasources/grafana.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7630f455ee50b5f28fbe6f28b1447f099f352129","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        influxdb.InfluxDBGrafanaTranslator.NAME"},{"line_number":46,"context_line":"    ]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, osc\u003dNone):"},{"line_number":49,"context_line":"        \"\"\":param osc: an OpenStackClients instance\"\"\""},{"line_number":50,"context_line":"        self.osc \u003d osc if osc else clients.OpenStackClients()"},{"line_number":51,"context_line":"        self.configured \u003d False"}],"source_content_type":"text/x-python","patch_set":32,"id":"b7dc6c40_b39102b5","line":48,"in_reply_to":"585442b4_40d808c2","updated":"2026-02-24 20:49:30.000000000","message":"Acknowledged","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        influxdb.InfluxDBGrafanaTranslator.NAME"},{"line_number":46,"context_line":"    ]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, osc\u003dNone):"},{"line_number":49,"context_line":"        \"\"\":param osc: an OpenStackClients instance\"\"\""},{"line_number":50,"context_line":"        self.osc \u003d osc if osc else clients.OpenStackClients()"},{"line_number":51,"context_line":"        self.configured \u003d False"}],"source_content_type":"text/x-python","patch_set":32,"id":"585442b4_40d808c2","line":48,"in_reply_to":"6aaee28a_06e31cab","updated":"2026-02-19 18:21:02.000000000","message":"fiar.\n\nbut this requires changing the driver api so we can only do it if its not used in any driver.\n\nself.osc is nto used so we can remove it inrenally without removing the osc paramter form __init__ for now","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"}],"watcher/decision_engine/model/collector/nova.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":true,"context_lines":[{"line_number":463,"context_line":"        limit \u003d len(instances) if len(instances) \u003c\u003d 1000 else -1"},{"line_number":464,"context_line":"        # Get all servers on this compute host."},{"line_number":465,"context_line":"        # Note that the advantage of passing the limit parameter is"},{"line_number":466,"context_line":"        # that it can speed up the call time of novaclient. 1000 is"},{"line_number":467,"context_line":"        # the default maximum number of return servers provided by"},{"line_number":468,"context_line":"        # compute API. If we need to request more than 1000 servers,"},{"line_number":469,"context_line":"        # we can set limit\u003d-1. For details, please see:"}],"source_content_type":"text/x-python","patch_set":32,"id":"29824fac_eba84681","line":466,"in_reply_to":"0b89790b_772ab0db","updated":"2026-02-19 18:21:02.000000000","message":"this is valid. i do not have a prefernce.","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"bbf35801efb397bc26971269aeaa21384fcdbd55","unresolved":true,"context_lines":[{"line_number":463,"context_line":"        limit \u003d len(instances) if len(instances) \u003c\u003d 1000 else -1"},{"line_number":464,"context_line":"        # Get all servers on this compute host."},{"line_number":465,"context_line":"        # Note that the advantage of passing the limit parameter is"},{"line_number":466,"context_line":"        # that it can speed up the call time of novaclient. 1000 is"},{"line_number":467,"context_line":"        # the default maximum number of return servers provided by"},{"line_number":468,"context_line":"        # compute API. If we need to request more than 1000 servers,"},{"line_number":469,"context_line":"        # we can set limit\u003d-1. For details, please see:"}],"source_content_type":"text/x-python","patch_set":32,"id":"fe067273_1aca7f79","line":466,"in_reply_to":"29824fac_eba84681","updated":"2026-02-24 09:40:05.000000000","message":"I changed it to `Nova API` since I had to make a couple of small changes","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7630f455ee50b5f28fbe6f28b1447f099f352129","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        limit \u003d len(instances) if len(instances) \u003c\u003d 1000 else -1"},{"line_number":464,"context_line":"        # Get all servers on this compute host."},{"line_number":465,"context_line":"        # Note that the advantage of passing the limit parameter is"},{"line_number":466,"context_line":"        # that it can speed up the call time of novaclient. 1000 is"},{"line_number":467,"context_line":"        # the default maximum number of return servers provided by"},{"line_number":468,"context_line":"        # compute API. If we need to request more than 1000 servers,"},{"line_number":469,"context_line":"        # we can set limit\u003d-1. For details, please see:"}],"source_content_type":"text/x-python","patch_set":32,"id":"cdc2c924_4e40a92e","line":466,"in_reply_to":"fe067273_1aca7f79","updated":"2026-02-24 20:49:30.000000000","message":"Done","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"}],"watcher/decision_engine/strategy/strategies/saving_energy.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":true,"context_lines":[{"line_number":101,"context_line":"    def nova_client(self):"},{"line_number":102,"context_line":"        if not self._nova_client:"},{"line_number":103,"context_line":"            self._nova_client \u003d self.osc.nova()"},{"line_number":104,"context_line":"        return self._nova_client"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @classmethod"},{"line_number":107,"context_line":"    def get_name(cls):"}],"source_content_type":"text/x-python","patch_set":32,"id":"a937b5cf_bbbe4efd","side":"PARENT","line":104,"updated":"2026-02-19 18:21:02.000000000","message":"i guess this was just unused so nice to clean it up.","commit_id":"957b984b5dfe53adba68e56ebcb09155706ee1d4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7630f455ee50b5f28fbe6f28b1447f099f352129","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def nova_client(self):"},{"line_number":102,"context_line":"        if not self._nova_client:"},{"line_number":103,"context_line":"            self._nova_client \u003d self.osc.nova()"},{"line_number":104,"context_line":"        return self._nova_client"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @classmethod"},{"line_number":107,"context_line":"    def get_name(cls):"}],"source_content_type":"text/x-python","patch_set":32,"id":"34d14df9_c2cd15f1","side":"PARENT","line":104,"in_reply_to":"a937b5cf_bbbe4efd","updated":"2026-02-24 20:49:30.000000000","message":"Acknowledged","commit_id":"957b984b5dfe53adba68e56ebcb09155706ee1d4"}],"watcher/tests/unit/common/metal_helper/test_ironic.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df99e9831994825444846ef0e402cd14deb8f6d5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        super().setUp()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self._mock_osc \u003d mock.Mock()"},{"line_number":79,"context_line":"        self._mock_nova_client \u003d self.useFixture("},{"line_number":80,"context_line":"            fixtures.MockPatch(\"watcher.common.nova_helper.NovaHelper\")"},{"line_number":81,"context_line":"        ).mock.return_value"},{"line_number":82,"context_line":"        self._mock_ironic_client \u003d self._mock_osc.ironic.return_value"}],"source_content_type":"text/x-python","patch_set":32,"id":"366f1d0c_4f35723f","line":79,"in_reply_to":"8e01fee2_82158505","updated":"2026-02-19 18:21:02.000000000","message":"we coudl add autospec\u003dtrue perhasp but  this shoudl be fine as is","commit_id":"09f3142790b91dccc4e06fa9cf0984c35d9dba1f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8bd0d992c02f734700fa4703c1712e12ae6aa724","unresolved":true,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        out_node \u003d self._helper.get_node(mock.sentinel.id)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        self._mock_nova_client.get_compute_node_by_uuid.return_value \u003d \\"},{"line_number":118,"context_line":"            out_node._nova_node"},{"line_number":119,"context_line":"        self.assertEqual(self._mock_ironic_client, out_node._ironic_client)"},{"line_number":120,"context_line":"        self.assertEqual(mock_machine, out_node._ironic_node)"}],"source_content_type":"text/x-python","patch_set":35,"id":"84e1a7c1_ab026491","line":117,"in_reply_to":"1a7c1aba_35a92417","updated":"2026-02-24 20:57:01.000000000","message":"hum, yeah, doesn\u0027t make sense to change the return_value here after calling helper.get_node. This is expected to be an assert.","commit_id":"67b0be383e959f4561dd77c19d386a26ab82f47e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"099f3c55227a911cf4ee4ccb8666d1f9cbb3525e","unresolved":true,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        out_node \u003d self._helper.get_node(mock.sentinel.id)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        self._mock_nova_client.get_compute_node_by_uuid.return_value \u003d \\"},{"line_number":118,"context_line":"            out_node._nova_node"},{"line_number":119,"context_line":"        self.assertEqual(self._mock_ironic_client, out_node._ironic_client)"},{"line_number":120,"context_line":"        self.assertEqual(mock_machine, out_node._ironic_node)"}],"source_content_type":"text/x-python","patch_set":35,"id":"ce7659c1_efb8d0ba","line":117,"in_reply_to":"1a7c1aba_35a92417","updated":"2026-02-24 20:59:00.000000000","message":"i spoke to doug adn we agreed this can be fixed in a followup patch.\n\ncan you add a patch to the end of the series for this","commit_id":"67b0be383e959f4561dd77c19d386a26ab82f47e"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"1243446d1f5ff53c3c3c97965f457359b027d053","unresolved":true,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        out_node \u003d self._helper.get_node(mock.sentinel.id)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        self._mock_nova_client.get_compute_node_by_uuid.return_value \u003d \\"},{"line_number":118,"context_line":"            out_node._nova_node"},{"line_number":119,"context_line":"        self.assertEqual(self._mock_ironic_client, out_node._ironic_client)"},{"line_number":120,"context_line":"        self.assertEqual(mock_machine, out_node._ironic_node)"}],"source_content_type":"text/x-python","patch_set":35,"id":"dba71397_62c12758","line":117,"in_reply_to":"ce7659c1_efb8d0ba","updated":"2026-02-25 08:41:54.000000000","message":"right, that is wrong, I\u0027ve pushed a fix in https://review.opendev.org/c/openstack/watcher/+/977919","commit_id":"67b0be383e959f4561dd77c19d386a26ab82f47e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7630f455ee50b5f28fbe6f28b1447f099f352129","unresolved":true,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        out_node \u003d self._helper.get_node(mock.sentinel.id)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        self._mock_nova_client.get_compute_node_by_uuid.return_value \u003d \\"},{"line_number":118,"context_line":"            out_node._nova_node"},{"line_number":119,"context_line":"        self.assertEqual(self._mock_ironic_client, out_node._ironic_client)"},{"line_number":120,"context_line":"        self.assertEqual(mock_machine, out_node._ironic_node)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a7c1aba_35a92417","line":117,"in_reply_to":"d848a5b5_1a9a53c9","updated":"2026-02-24 20:49:30.000000000","message":"this seams valid","commit_id":"67b0be383e959f4561dd77c19d386a26ab82f47e"}]}
