)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"6f8378797ab2e130f621dd3d912608b32fcace61","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"428114c4_cc75f6ef","updated":"2026-02-11 15:26:18.000000000","message":"check-rdo","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"16e769f2ce0d82b31ecf90fab80d8da6cdb0b5d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"83b317de_fe0ed549","updated":"2026-02-11 20:18:40.000000000","message":"lgtm, match with nova api ref","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"3c938fd6437ea84b33ebd0319b7e26765ffcc32b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"69c8642c_a3870825","updated":"2026-02-12 09:32:31.000000000","message":"recheck","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"8582a3b4749050803406218f9aa2c0bb2b1fa569","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b5965a40_fb5e9020","updated":"2026-02-12 07:54:54.000000000","message":"recheck failed while deploying devstack","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f5ee76645868266641007dc218e66e63a145572","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f4a5e46c_478d9f4c","updated":"2026-02-11 18:12:04.000000000","message":"some comment inline\n\nwe could adress them in followups so +2","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"}],"watcher/common/nova_helper.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"02ebdd4b4a54bddf1a76c318f2f131089e27a4ed","unresolved":true,"context_lines":[{"line_number":521,"context_line":"                break"},{"line_number":522,"context_line":"            time.sleep(poll_interval)"},{"line_number":523,"context_line":"        else:"},{"line_number":524,"context_line":"            raise Exception("},{"line_number":525,"context_line":"                f\"Volume {volume.id} did not reach status {status} \""},{"line_number":526,"context_line":"                f\"after {timeout:d} s\")"},{"line_number":527,"context_line":"        return volume.status \u003d\u003d status"}],"source_content_type":"text/x-python","patch_set":5,"id":"d82bb206_3e5c27e3","line":524,"in_reply_to":"04c9884c_349f31ee","updated":"2026-02-09 18:31:21.000000000","message":"this is correct we should never raise generic excptions\n\non won had thie si a pre existing bug but on the other we should fix it as part fo this rework\n\nwe shoudl only ever raise excption that inherit form watches base expction class or are standard error like value error or type error.","commit_id":"0e80d34652501e16e57077bff97caa36a2a37bb7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f5ee76645868266641007dc218e66e63a145572","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                break"},{"line_number":522,"context_line":"            time.sleep(poll_interval)"},{"line_number":523,"context_line":"        else:"},{"line_number":524,"context_line":"            raise Exception("},{"line_number":525,"context_line":"                f\"Volume {volume.id} did not reach status {status} \""},{"line_number":526,"context_line":"                f\"after {timeout:d} s\")"},{"line_number":527,"context_line":"        return volume.status \u003d\u003d status"}],"source_content_type":"text/x-python","patch_set":5,"id":"09a7a44a_b1fe237d","line":524,"in_reply_to":"d1ec8612_09400468","updated":"2026-02-11 18:12:04.000000000","message":"im +2 on that so ill resolve this","commit_id":"0e80d34652501e16e57077bff97caa36a2a37bb7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"8bfe7ad5fe1b91b470026c68524d0c58e26a094d","unresolved":true,"context_lines":[{"line_number":521,"context_line":"                break"},{"line_number":522,"context_line":"            time.sleep(poll_interval)"},{"line_number":523,"context_line":"        else:"},{"line_number":524,"context_line":"            raise Exception("},{"line_number":525,"context_line":"                f\"Volume {volume.id} did not reach status {status} \""},{"line_number":526,"context_line":"                f\"after {timeout:d} s\")"},{"line_number":527,"context_line":"        return volume.status \u003d\u003d status"}],"source_content_type":"text/x-python","patch_set":5,"id":"d1ec8612_09400468","line":524,"in_reply_to":"d82bb206_3e5c27e3","updated":"2026-02-10 09:09:32.000000000","message":"fair, I kind of ignored this method since it\u0027s not used anywhere and I have another patch outside of this chain (I opened it before starting this effort) to remove it https://review.opendev.org/c/openstack/watcher/+/971219. I can change the exception anyway in the previous patch","commit_id":"0e80d34652501e16e57077bff97caa36a2a37bb7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f5ee76645868266641007dc218e66e63a145572","unresolved":true,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            uuid.UUID(nova_server.id)"},{"line_number":95,"context_line":"        except (ValueError, AttributeError, TypeError):"},{"line_number":96,"context_line":"            raise exception.InvalidUUID(uuid\u003dnova_server.id)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        return cls("}],"source_content_type":"text/x-python","patch_set":8,"id":"e03f530b_62938631","line":95,"in_reply_to":"04a5f02b_7f092f32","updated":"2026-02-11 18:12:04.000000000","message":"ya i kind fo agre\nlets not convert type error or atibute error and only convert ValueErrro\n\nthe other two are programing mistatks that should never happen at runtime","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"c560bd2c11b71653b6260965779712bd473f6d00","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            uuid.UUID(nova_server.id)"},{"line_number":95,"context_line":"        except (ValueError, AttributeError, TypeError):"},{"line_number":96,"context_line":"            raise exception.InvalidUUID(uuid\u003dnova_server.id)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        return cls("}],"source_content_type":"text/x-python","patch_set":8,"id":"4e521402_d68fe021","line":95,"in_reply_to":"e03f530b_62938631","updated":"2026-02-12 08:10:25.000000000","message":"ack, I\u0027m fixing it in the next patch","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f5ee76645868266641007dc218e66e63a145572","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            uuid.UUID(nova_server.id)"},{"line_number":95,"context_line":"        except (ValueError, AttributeError, TypeError):"},{"line_number":96,"context_line":"            raise exception.InvalidUUID(uuid\u003dnova_server.id)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        return cls("},{"line_number":99,"context_line":"            uuid\u003dnova_server.id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1cd651e3_b7b299ae","line":96,"in_reply_to":"e2309537_ef5e4f86","updated":"2026-02-11 18:12:04.000000000","message":"i debug long woudl be ok but hunestly te server uuid is the database uniqe constratit so its alwsay goign to be a valid uuid so this shoudl never happen in reality.","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f5ee76645868266641007dc218e66e63a145572","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        servers \u003d hypervisor_dict.get(\u0027servers\u0027, [])"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            uuid.UUID(nova_hypervisor.id)"},{"line_number":164,"context_line":"        except (ValueError, AttributeError, TypeError):"},{"line_number":165,"context_line":"            raise exception.InvalidUUID(uuid\u003dnova_hypervisor.id)"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"0d6cce04_ad2aac5c","line":163,"updated":"2026-02-11 18:12:04.000000000","message":"note the hypervior id can be an inte with old microversoin but with the one we are usign it should be a uuid","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"c560bd2c11b71653b6260965779712bd473f6d00","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    resolved at construction time."},{"line_number":192,"context_line":"    \"\"\""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    id: str"},{"line_number":195,"context_line":"    flavor_name: str"},{"line_number":196,"context_line":"    vcpus: int"},{"line_number":197,"context_line":"    ram: int"}],"source_content_type":"text/x-python","patch_set":8,"id":"6ba60a8a_45d2f25e","line":194,"in_reply_to":"967e0a1a_7536c1a7","updated":"2026-02-12 08:10:25.000000000","message":"ack, adding the comment on the classes that do not have a uuid","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f5ee76645868266641007dc218e66e63a145572","unresolved":true,"context_lines":[{"line_number":191,"context_line":"    resolved at construction time."},{"line_number":192,"context_line":"    \"\"\""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    id: str"},{"line_number":195,"context_line":"    flavor_name: str"},{"line_number":196,"context_line":"    vcpus: int"},{"line_number":197,"context_line":"    ram: int"}],"source_content_type":"text/x-python","patch_set":8,"id":"967e0a1a_7536c1a7","line":194,"in_reply_to":"e19a8965_72dfb714","updated":"2026-02-11 18:12:04.000000000","message":"we could add a commnet that the flavor id is not a uuid \nthat is what we autogenerate but its a string in the api spec and we accpge values like 42 (m1.nano) as valid values.","commit_id":"e070c5e057ac9b6d2b40ab41ef2484cd303fc4d7"}],"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":"02ebdd4b4a54bddf1a76c318f2f131089e27a4ed","unresolved":true,"context_lines":[{"line_number":368,"context_line":"        :param node: A node hypervisor instance"},{"line_number":369,"context_line":"        :type node: :py:class:`~novaclient.v2.hypervisors.Hypervisor`"},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        inventories \u003d self.placement_helper.get_inventories(node.uuid)"},{"line_number":372,"context_line":"        if inventories and orc.VCPU in inventories:"},{"line_number":373,"context_line":"            vcpus \u003d inventories[orc.VCPU][\u0027total\u0027]"},{"line_number":374,"context_line":"            vcpu_reserved \u003d inventories[orc.VCPU][\u0027reserved\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"30b8debc_4ab41958","line":371,"updated":"2026-02-09 18:31:21.000000000","message":"we should fix this in th prior patch","commit_id":"0e80d34652501e16e57077bff97caa36a2a37bb7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6f17cd99cdc841ef92c6f9cbd8dc89480d96a58d","unresolved":true,"context_lines":[{"line_number":368,"context_line":"        :param node: A node hypervisor instance"},{"line_number":369,"context_line":"        :type node: :py:class:`~novaclient.v2.hypervisors.Hypervisor`"},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        inventories \u003d self.placement_helper.get_inventories(node.uuid)"},{"line_number":372,"context_line":"        if inventories and orc.VCPU in inventories:"},{"line_number":373,"context_line":"            vcpus \u003d inventories[orc.VCPU][\u0027total\u0027]"},{"line_number":374,"context_line":"            vcpu_reserved \u003d inventories[orc.VCPU][\u0027reserved\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7d17744a_7695a310","line":371,"in_reply_to":"291e839a_31df28e0","updated":"2026-02-10 18:06:30.000000000","message":"i was suggesting that you shoudl make thie change before you stat using the the new objects in the real code","commit_id":"0e80d34652501e16e57077bff97caa36a2a37bb7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"8bfe7ad5fe1b91b470026c68524d0c58e26a094d","unresolved":true,"context_lines":[{"line_number":368,"context_line":"        :param node: A node hypervisor instance"},{"line_number":369,"context_line":"        :type node: :py:class:`~novaclient.v2.hypervisors.Hypervisor`"},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        inventories \u003d self.placement_helper.get_inventories(node.uuid)"},{"line_number":372,"context_line":"        if inventories and orc.VCPU in inventories:"},{"line_number":373,"context_line":"            vcpus \u003d inventories[orc.VCPU][\u0027total\u0027]"},{"line_number":374,"context_line":"            vcpu_reserved \u003d inventories[orc.VCPU][\u0027reserved\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"291e839a_31df28e0","line":371,"in_reply_to":"30b8debc_4ab41958","updated":"2026-02-10 09:09:32.000000000","message":"I\u0027m not sure if I understand correctly, but we can\u0027t make this change in the previous patch. In the previous I use the new wrapper classes, so the base version is correct, because the Hypervisor class has an `id` field, no a `uuid`. In this patch I change the `id` field to `uuid` for the resources that have it, so this change has to be in this patch","commit_id":"0e80d34652501e16e57077bff97caa36a2a37bb7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"de1e7028d5730455ee24daa85639da01cd810f01","unresolved":true,"context_lines":[{"line_number":368,"context_line":"        :param node: A node hypervisor instance"},{"line_number":369,"context_line":"        :type node: :py:class:`~novaclient.v2.hypervisors.Hypervisor`"},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        inventories \u003d self.placement_helper.get_inventories(node.uuid)"},{"line_number":372,"context_line":"        if inventories and orc.VCPU in inventories:"},{"line_number":373,"context_line":"            vcpus \u003d inventories[orc.VCPU][\u0027total\u0027]"},{"line_number":374,"context_line":"            vcpu_reserved \u003d inventories[orc.VCPU][\u0027reserved\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"e9d31977_6ceac277","line":371,"in_reply_to":"7d17744a_7695a310","updated":"2026-02-11 08:24:30.000000000","message":"ah ok, that makes sense, I\u0027ll  change the order of this patch and the previous one","commit_id":"0e80d34652501e16e57077bff97caa36a2a37bb7"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"2018f54ee3d204a374e236983a76f0228883cb2a","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        :param node: A node hypervisor instance"},{"line_number":369,"context_line":"        :type node: :py:class:`~novaclient.v2.hypervisors.Hypervisor`"},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        inventories \u003d self.placement_helper.get_inventories(node.uuid)"},{"line_number":372,"context_line":"        if inventories and orc.VCPU in inventories:"},{"line_number":373,"context_line":"            vcpus \u003d inventories[orc.VCPU][\u0027total\u0027]"},{"line_number":374,"context_line":"            vcpu_reserved \u003d inventories[orc.VCPU][\u0027reserved\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff5dcd91_4bd2861f","line":371,"in_reply_to":"e9d31977_6ceac277","updated":"2026-02-12 08:10:34.000000000","message":"Done","commit_id":"0e80d34652501e16e57077bff97caa36a2a37bb7"}]}
