)]}'
{".zuul.yaml":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"732cca0f3fb6af306dbbe44685e7ac73fa7c8720","unresolved":true,"context_lines":[{"line_number":201,"context_line":"            watcher_compute_model:"},{"line_number":202,"context_line":"              enable_extended_attributes: true"},{"line_number":203,"context_line":"            nova_client:"},{"line_number":204,"context_line":"              api_version: \"2.99\""},{"line_number":205,"context_line":"        test-config:"},{"line_number":206,"context_line":"          $TEMPEST_CONFIG:"},{"line_number":207,"context_line":"            compute:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"f6d07125_00999ac4","line":204,"range":{"start_line":204,"start_character":28,"end_line":204,"end_character":32},"updated":"2025-08-13 20:12:04.000000000","message":"planning to fix https://bugs.launchpad.net/watcher/+bug/2120586 before merging this patch","commit_id":"6f5046eef0890044337659bc2d0db324f4ff8aa9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a23179b6b1859d14531b1339d754d7d8adfcac45","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            watcher_compute_model:"},{"line_number":202,"context_line":"              enable_extended_attributes: true"},{"line_number":203,"context_line":"            nova_client:"},{"line_number":204,"context_line":"              api_version: \"2.99\""},{"line_number":205,"context_line":"        test-config:"},{"line_number":206,"context_line":"          $TEMPEST_CONFIG:"},{"line_number":207,"context_line":"            compute:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3a22bd83_9ea241f4","line":204,"range":{"start_line":204,"start_character":28,"end_line":204,"end_character":32},"in_reply_to":"f6d07125_00999ac4","updated":"2025-08-26 14:27:40.000000000","message":"Acknowledged","commit_id":"6f5046eef0890044337659bc2d0db324f4ff8aa9"}],"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9a5f53c86733fd3e9543fea96fa11c662da2bbde","unresolved":true,"context_lines":[{"line_number":18,"context_line":"of nova api (2.96) and enables the extended attributes"},{"line_number":19,"context_line":"collection."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Implements: bp/extend-compute-model-attributes"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Assisted-By: Cursor (claude-4-sonnet)"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"547c173c_46423d0f","line":21,"updated":"2025-08-26 14:48:36.000000000","message":"nit: Implements: blueprint extend-compute-model-attributes\n\nif we want the hyperlink to render properly and it to auto link to the blueprint in launchpad.","commit_id":"03c09825f7421eac429034fb4e25ba089671077d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"34094f7dcc16c5a239e67516889dcefd707e37bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"620585a6_e9b9b287","updated":"2025-07-31 12:49:26.000000000","message":"Still working on it, there is a problem with notification updates for new fields, working on that yet","commit_id":"c459d899a0e17f3cf342d7d9a5a6b57be5e7be03"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"7455be78233b3c6a5c06f08fa5f7b6842f4aa5a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d1b2af24_ea301489","updated":"2025-08-19 16:52:24.000000000","message":"Based on the recently discovered limitation, python-novaclient would not work with microversion \u003e 2.96. We can consider 2 options: 1) split the attributes and only support \u0027flavor.extra_specs\u0027 and \u0027pinned_az\u0027 in this microversion. And let scheduler hints and server_groups for future implementation. 2) Freeze this implementation and just add these attributes once we integrate with openstacksdk.\nI personally think that we could go with 1) since we didn\u0027t start the integration with openstacksdk, and not sure when it is going to be ready.","commit_id":"6f5046eef0890044337659bc2d0db324f4ff8aa9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"346b05c6ea039202b9802ebc71a327a6a5ea38bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"13d4a652_6d8b4b98","updated":"2025-08-13 20:35:09.000000000","message":"i need to look at this again but overall it hink this is looking ok\n\nthere si something off with the way the instance object is used but i woudl need ot look closer to understand why","commit_id":"6f5046eef0890044337659bc2d0db324f4ff8aa9"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"ae18dac9375a47340a5cb06f5288a7434367730b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3505c63b_3f076186","updated":"2025-08-13 23:56:58.000000000","message":"recheck\n\nprometheus job failed with:\n\"ERROR: Failed building wheel for uwsgi\"","commit_id":"6f5046eef0890044337659bc2d0db324f4ff8aa9"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"42495aaba7412286237ce574b8b7053ab01b33e5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e536ac12_49ea3f3d","in_reply_to":"d1b2af24_ea301489","updated":"2025-08-19 16:53:06.000000000","message":"The limitation was described by Sean in this LP: https://bugs.launchpad.net/watcher/+bug/2120586/comments/1","commit_id":"6f5046eef0890044337659bc2d0db324f4ff8aa9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6e1e48447895ff6a6fb6b9c02e634d9078858dfe","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"eae768fe_6fa6f415","in_reply_to":"e536ac12_49ea3f3d","updated":"2025-08-19 17:12:03.000000000","message":"the ohter option is as you said\nwe can use the client and grab the filed out of the raw responce.\nthat would work but is not clean.\n\nthat is why you need to use getattr but it works.\n\nwe can also just use the keystone auth client ot make a raw http request and parse the json responce without using the nova client but that is more work.\n\nthe main fix for https://bugs.launchpad.net/watcher/+bug/2120586/comments/1 is just using the ApiVerion class to do the comparisons instead of floats so we can fix this without needing to adopt the sdk.\n\nthe quesion is really how much tech debth do we want ot carry until we swap out nova to use the sdk.","commit_id":"6f5046eef0890044337659bc2d0db324f4ff8aa9"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"240d8c3439311e44a48ea67eb8ada4cbeadb3e8a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d8de2823_16e9b464","in_reply_to":"eae768fe_6fa6f415","updated":"2025-08-19 18:11:51.000000000","message":"right, I think that is more safe if we just limit watcher\u0027s nova_client.api_version based on the limitation of the client, so we may void other issues from newer microversions not supported by the client. I will be working on the fix for LP 2120586 and we can continue discussing in the IRC meeting/channel.","commit_id":"6f5046eef0890044337659bc2d0db324f4ff8aa9"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6ddccd34f6862fcc1f5ec70757f9e57b19208636","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9df2e9bb_9db38745","updated":"2025-08-25 11:33:20.000000000","message":"recheck\n\naetos job failed with:\n\n2025-08-22 18:50:34.987056 | controller | Connecting to github.com (github.com)|140.82.113.3|:443... connected.\n2025-08-22 18:50:37.105588 | controller | HTTP request sent, awaiting response... 503 Service Unavailable","commit_id":"54171ab5fcdb0bffb7f51d4e9da7ebfb149633ce"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d2bb1272334e9f231e1660798473ee8f66a2fda6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"0eae7f44_a278238e","updated":"2025-08-22 18:19:20.000000000","message":"recheck\n\njob: watcher-tempest-strategies\nfailed with: ERROR: Failed building wheel for uwsgi","commit_id":"54171ab5fcdb0bffb7f51d4e9da7ebfb149633ce"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a23179b6b1859d14531b1339d754d7d8adfcac45","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f04c145c_ffa4e7ab","updated":"2025-08-26 14:27:40.000000000","message":"your changes all look good to me\n\ni think there is a bug in the skip code that we should fix later","commit_id":"54171ab5fcdb0bffb7f51d4e9da7ebfb149633ce"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9a5f53c86733fd3e9543fea96fa11c662da2bbde","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d99d2083_4f47cb52","updated":"2025-08-26 14:48:36.000000000","message":"this looks good to me.\n\ni will leave this up for a day incase anyone else has review comments but if not ill add +w before cob tomorrow in advance of feature freeze.","commit_id":"03c09825f7421eac429034fb4e25ba089671077d"}],"devstack/lib/watcher":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a23179b6b1859d14531b1339d754d7d8adfcac45","unresolved":true,"context_lines":[{"line_number":268,"context_line":"    # Please make sure to update this when the microversion is updated, otherwise"},{"line_number":269,"context_line":"    # new tests may be skipped."},{"line_number":270,"context_line":"    TEMPEST_WATCHER_MIN_MICROVERSION\u003d${TEMPEST_WATCHER_MIN_MICROVERSION:-\"1.0\"}"},{"line_number":271,"context_line":"    TEMPEST_WATCHER_MAX_MICROVERSION\u003d${TEMPEST_WATCHER_MAX_MICROVERSION:-\"1.4\"}"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    # Set microversion options in tempest.conf"},{"line_number":274,"context_line":"    iniset $TEMPEST_CONFIG optimize min_microversion $TEMPEST_WATCHER_MIN_MICROVERSION"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"c4574611_043c4ba7","side":"PARENT","line":271,"updated":"2025-08-26 14:27:40.000000000","message":"we may have missed this in alfredos change i.e. bumping it to 1.5 but that\u0027s ok this will include both.\n\nif we did bump it this might end up in merge conflict but lets see.","commit_id":"534c340df15c615e1b749bd0fe88306253265d7f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7694ee0277e3079be41980adff26b18e92870e92","unresolved":true,"context_lines":[{"line_number":268,"context_line":"    # Please make sure to update this when the microversion is updated, otherwise"},{"line_number":269,"context_line":"    # new tests may be skipped."},{"line_number":270,"context_line":"    TEMPEST_WATCHER_MIN_MICROVERSION\u003d${TEMPEST_WATCHER_MIN_MICROVERSION:-\"1.0\"}"},{"line_number":271,"context_line":"    TEMPEST_WATCHER_MAX_MICROVERSION\u003d${TEMPEST_WATCHER_MAX_MICROVERSION:-\"1.4\"}"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    # Set microversion options in tempest.conf"},{"line_number":274,"context_line":"    iniset $TEMPEST_CONFIG optimize min_microversion $TEMPEST_WATCHER_MIN_MICROVERSION"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"60d3b6ab_36b30c0a","side":"PARENT","line":271,"in_reply_to":"c4574611_043c4ba7","updated":"2025-08-26 14:28:52.000000000","message":"ah its now in merge conflict which i bet is this","commit_id":"534c340df15c615e1b749bd0fe88306253265d7f"}],"test-requirements.txt":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a23179b6b1859d14531b1339d754d7d8adfcac45","unresolved":true,"context_lines":[{"line_number":1,"context_line":"coverage\u003e\u003d4.5.1 # Apache-2.0"},{"line_number":2,"context_line":"ddt\u003e\u003d1.2.1 # MIT"},{"line_number":3,"context_line":"freezegun\u003e\u003d0.3.10 # Apache-2.0"},{"line_number":4,"context_line":"oslotest\u003e\u003d3.3.0 # Apache-2.0"},{"line_number":5,"context_line":"testscenarios\u003e\u003d0.5.0 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":9,"id":"a3319b3c_e787eeea","line":2,"updated":"2025-08-26 14:27:40.000000000","message":"+1 this is a commoly used dep in nova and other service so no issue with addign it.","commit_id":"54171ab5fcdb0bffb7f51d4e9da7ebfb149633ce"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9a5f53c86733fd3e9543fea96fa11c662da2bbde","unresolved":false,"context_lines":[{"line_number":1,"context_line":"coverage\u003e\u003d4.5.1 # Apache-2.0"},{"line_number":2,"context_line":"ddt\u003e\u003d1.2.1 # MIT"},{"line_number":3,"context_line":"freezegun\u003e\u003d0.3.10 # Apache-2.0"},{"line_number":4,"context_line":"oslotest\u003e\u003d3.3.0 # Apache-2.0"},{"line_number":5,"context_line":"testscenarios\u003e\u003d0.5.0 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":9,"id":"3969d1c6_b43d5a02","line":2,"in_reply_to":"a3319b3c_e787eeea","updated":"2025-08-26 14:48:36.000000000","message":"Acknowledged","commit_id":"54171ab5fcdb0bffb7f51d4e9da7ebfb149633ce"}],"watcher/api/controllers/v1/utils.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a23179b6b1859d14531b1339d754d7d8adfcac45","unresolved":true,"context_lines":[{"line_number":196,"context_line":"        versions.VERSIONS.MINOR_4_WEBHOOK_API.value)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"def allow_list_extend_compute_model():"},{"line_number":200,"context_line":"    \"\"\"Check if it should list extended compute model attributes."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    Version 1.6 of the API added support to additional attributes"}],"source_content_type":"text/x-python","patch_set":9,"id":"60e2bb2c_e72bdc6f","line":199,"updated":"2025-08-26 14:27:40.000000000","message":"hum again your change is correct we shoudl double check if we have a bug in the other change as we shoudl be filtering out the status massage unless you ask for 1.5+","commit_id":"54171ab5fcdb0bffb7f51d4e9da7ebfb149633ce"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9a5f53c86733fd3e9543fea96fa11c662da2bbde","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        versions.VERSIONS.MINOR_4_WEBHOOK_API.value)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"def allow_list_extend_compute_model():"},{"line_number":200,"context_line":"    \"\"\"Check if it should list extended compute model attributes."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    Version 1.6 of the API added support to additional attributes"}],"source_content_type":"text/x-python","patch_set":9,"id":"247dec01_a864e847","line":199,"in_reply_to":"60e2bb2c_e72bdc6f","updated":"2025-08-26 14:48:36.000000000","message":"ah its there after the rebase cool","commit_id":"54171ab5fcdb0bffb7f51d4e9da7ebfb149633ce"}],"watcher/conf/models.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"346b05c6ea039202b9802ebc71a327a6a5ea38bd","unresolved":true,"context_lines":[{"line_number":28,"context_line":"             \"Note that some attributes require a more recent api \""},{"line_number":29,"context_line":"             \"microversion to be configured in nova_client section.\""},{"line_number":30,"context_line":"    ),"},{"line_number":31,"context_line":"]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":4,"id":"0d6f7bbb_01d89068","line":31,"updated":"2025-08-13 20:35:09.000000000","message":"this is what we agreed in the spec because we don\u0027t currently have usage fo these new metrics bug long term we may remove this and always collect them.\nwe will need to consider the memory usage  the main issue is we should avoid config driven API behavior were possible but obviously the more we keep in the model the more ram it uses and we do not want to be wasteful.\n\ni personally think its a mistake to actually have an API to get the data model content at all but that a different matter.","commit_id":"a7b3553b117a09fa6197aae2bfe93b4b6a551bef"}],"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":"346b05c6ea039202b9802ebc71a327a6a5ea38bd","unresolved":true,"context_lines":[{"line_number":462,"context_line":"        :return: An instance node for the graph."},{"line_number":463,"context_line":"        \"\"\""},{"line_number":464,"context_line":"        flavor \u003d instance.flavor"},{"line_number":465,"context_line":"        scheduler_hints \u003d getattr(instance, \"scheduler_hints\", {})"},{"line_number":466,"context_line":"        instance_attributes \u003d {"},{"line_number":467,"context_line":"            \"uuid\": instance.id,"},{"line_number":468,"context_line":"            \"name\": instance.name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fafee6a_49b09f6b","line":465,"range":{"start_line":465,"start_character":26,"end_line":465,"end_character":33},"updated":"2025-08-13 20:35:09.000000000","message":"we shoudl not be using getattr in production code.\nthat generally a code smell. the feeidl shoudl alwasy exit but may be null or unset.\n\nwhat they type of instance here?\n\nactully you also do this again on line 481 below so this line is not needed.","commit_id":"a7b3553b117a09fa6197aae2bfe93b4b6a551bef"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"7455be78233b3c6a5c06f08fa5f7b6842f4aa5a1","unresolved":true,"context_lines":[{"line_number":462,"context_line":"        :return: An instance node for the graph."},{"line_number":463,"context_line":"        \"\"\""},{"line_number":464,"context_line":"        flavor \u003d instance.flavor"},{"line_number":465,"context_line":"        scheduler_hints \u003d getattr(instance, \"scheduler_hints\", {})"},{"line_number":466,"context_line":"        instance_attributes \u003d {"},{"line_number":467,"context_line":"            \"uuid\": instance.id,"},{"line_number":468,"context_line":"            \"name\": instance.name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"b4899349_2921a897","line":465,"range":{"start_line":465,"start_character":26,"end_line":465,"end_character":33},"in_reply_to":"9fafee6a_49b09f6b","updated":"2025-08-19 16:52:24.000000000","message":"right, i can delete this line, it was moved to 481\ni can check how to remove the getattr here, but in the end I was using it because other parts of the code also use it. But I agree that if there is other way, we should avoid it.","commit_id":"a7b3553b117a09fa6197aae2bfe93b4b6a551bef"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"346b05c6ea039202b9802ebc71a327a6a5ea38bd","unresolved":true,"context_lines":[{"line_number":487,"context_line":"                # scheduler_hints"},{"line_number":488,"context_line":"                \"groups\": scheduler_hints.get(\"group\", []),"},{"line_number":489,"context_line":"                \"flavor_extra_specs\": flavor.get(\"extra_specs\", {}),"},{"line_number":490,"context_line":"                })"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        # node_attributes \u003d dict()"},{"line_number":493,"context_line":"        # node_attributes[\"layer\"] \u003d \"virtual\""}],"source_content_type":"text/x-python","patch_set":4,"id":"f62088be_008842a7","line":490,"updated":"2025-08-13 20:35:09.000000000","message":"same basic comment here we shoudl avoid getattr in production code.","commit_id":"a7b3553b117a09fa6197aae2bfe93b4b6a551bef"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"346b05c6ea039202b9802ebc71a327a6a5ea38bd","unresolved":true,"context_lines":[{"line_number":489,"context_line":"                \"flavor_extra_specs\": flavor.get(\"extra_specs\", {}),"},{"line_number":490,"context_line":"                })"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        # node_attributes \u003d dict()"},{"line_number":493,"context_line":"        # node_attributes[\"layer\"] \u003d \"virtual\""},{"line_number":494,"context_line":"        # node_attributes[\"category\"] \u003d \"compute\""},{"line_number":495,"context_line":"        # node_attributes[\"type\"] \u003d \"compute\""},{"line_number":496,"context_line":"        # node_attributes[\"attributes\"] \u003d instance_attributes"},{"line_number":497,"context_line":"        return element.Instance(**instance_attributes)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    def _merge_compute_scope(self, compute_scope):"}],"source_content_type":"text/x-python","patch_set":4,"id":"65d6133e_d0bef565","line":496,"range":{"start_line":492,"start_character":7,"end_line":496,"end_character":61},"updated":"2025-08-13 20:35:09.000000000","message":"can you delete this whiel your here...\ntechnially its unrelated but outside fo test we shoudl not have any commented code like this.","commit_id":"a7b3553b117a09fa6197aae2bfe93b4b6a551bef"}]}
