)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d3373b65_a36b5422","updated":"2025-11-20 15:09:36.000000000","message":"Couple of things inline.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"95e941a1_f54bb9c0","updated":"2025-11-25 21:49:11.000000000","message":"sorry im out of time to respond to this today but ill try and do a new reveion tomorrow","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b8cb8e156e55aea71808d4dc76495962690cb35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b3ad129d_eebb0624","updated":"2025-11-26 14:58:43.000000000","message":"just addign some json dumps of values form a relel env so that we can see what they look like.","commit_id":"6ebc0fe118a430522b5659f97c44384ce2c5b767"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8128bd549028b0c3168b0a75631d901c8b4d110a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"80f19760_2a3b267f","updated":"2025-12-02 16:53:10.000000000","message":"I honestly had to stop at the middle of the spec review given I don\u0027t really understand the reason why we need notifications for all of the informations we have.\n\nWe *may* (surely) need notifications for knowing that the Watcher resource information could be stale, but why Watcher needs to get the updated information directly from the notification bus and why can\u0027t it call Nova to get the information ?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"22be5886_55b065d5","updated":"2025-12-01 14:03:23.000000000","message":"https://termbin.com/g41z is the output of the current proposed notification \n\nill update the poc with the code that gfenerated it","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6016ada4f4927e3a2eb7756c9a7fd97807d86bc4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"2f4259a8_116f73b9","in_reply_to":"80f19760_2a3b267f","updated":"2025-12-02 19:03:48.000000000","message":"This informtaion is not aviable via a public nova api.\n\nwe could build one but some of this info is only aviable on the compute node ro placement\n\n\nthis work started by explfoing all current api to see if we coudl do it any other way today.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"82bcdca43a1cee1d8b6f220e851b0a1b5207ee10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5bde49c0_eb1b4550","updated":"2025-12-03 18:09:41.000000000","message":"while I can understand now *why* Watcher would use notifications from Nova, I\u0027m still afraid of the needed payload. We should discuss about each of the payload fields and whether we would need to get the values by every period or just when the compute service is restarting (because of the fact most of the values are related to not-mutable config options) or whether Watcher could get the values directly from libvirt.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7d9d152467ac67c22d46092458c0deedb4353e8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4b426d42_eb1e4141","updated":"2025-12-04 14:40:26.000000000","message":"Sean, can you resolve comments here that are no longer valid? There are a ton of them at the top of the spec that gerrit has decided no longer even have an anchor in the text. It\u0027s really difficult to review this with all the clutter, so closing any that are no longer relevant would really help.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"86b99452e27ba42e51d8d3c2ee40acc28c9a1e70","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4497a81c_9f2c6829","updated":"2025-12-04 01:41:44.000000000","message":"This is my best attempt to find a compromise solution that provides\nthe data that is not aviable any other way, with very little extra information that is not of very high value such as inlcuing the image object in the isntace notification or includign the host value in the can at least construct watcher version fo a compute node object without having to hit the hypervisors api to look it up.\n\ni hope this is something we are comfortable moving forward with.\n\nif so i will try and get a POC of this working before the end of the year.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b6c9394cdd1fa377dd6a9965c78acd33a04e9b43","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3743f6ef_994101b6","updated":"2025-12-04 16:09:54.000000000","message":"well, I\u0027m most fine with the new revision but I still have a few concerns. Do we need to provide the same notifications for all of them at the *same time*, which could be something less than one minute.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"452ae9a849f7a6c2dd856522f5f91739cdff4459","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1a2f5268_2804e042","in_reply_to":"3743f6ef_994101b6","updated":"2025-12-04 16:47:00.000000000","message":"no but that is unlikely to happen update_aviable_resouces uses the defualt perodic task decroatr form oslo.service\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/instance.py#L193-L195\nhttps://github.com/openstack/oslo.service/blob/master/oslo_service/periodic_task.py#L38\n\nif all the agents started at the same time it would inntially align\n\nbut solo add 5% random jitter\n\nhttps://github.com/openstack/oslo.service/blob/master/oslo_service/periodic_task.py#L149-L168 \n\nso we sould not need to do anything special here to avoid that.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b47fb27b41b5d7c9c23034bf8e84ee25f83da110","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"42595384_a3ad1622","in_reply_to":"4b426d42_eb1e4141","updated":"2025-12-04 14:42:37.000000000","message":"Apologies, I might have been looking at a rev from yesterday (which definitely suffered from this) but looks like it has been cleaned up since then.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"}],"specs/2026.1/approved/resource-notifications.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":8,"context_line":"Compute Manager Resource Notifications"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/resource-notifications"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes to add resource notifications to the compute manager"},{"line_number":14,"context_line":"to enable external systems to be notified of resource changes."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fd442f38_0c564085","line":11,"updated":"2025-11-20 15:09:36.000000000","message":"it does not seems to exists yet","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Compute Manager Resource Notifications"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/resource-notifications"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes to add resource notifications to the compute manager"},{"line_number":14,"context_line":"to enable external systems to be notified of resource changes."}],"source_content_type":"text/x-rst","patch_set":1,"id":"f0937512_92a9f0d5","line":11,"in_reply_to":"b4cf0c47_8d5d7283","updated":"2025-11-25 22:48:55.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":8,"context_line":"Compute Manager Resource Notifications"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/resource-notifications"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes to add resource notifications to the compute manager"},{"line_number":14,"context_line":"to enable external systems to be notified of resource changes."}],"source_content_type":"text/x-rst","patch_set":1,"id":"b4cf0c47_8d5d7283","line":11,"in_reply_to":"fd442f38_0c564085","updated":"2025-11-21 16:29:02.000000000","message":"ya i was going to create it if it looked like this was going to be accpeted but i can create it now as well.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/resource-notifications"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes to add resource notifications to the compute manager"},{"line_number":14,"context_line":"to enable external systems to be notified of resource changes."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"cb7d9e6b_2a58de86","line":14,"updated":"2025-11-20 15:09:36.000000000","message":"resource inventory? resource usage? both?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/resource-notifications"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes to add resource notifications to the compute manager"},{"line_number":14,"context_line":"to enable external systems to be notified of resource changes."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"76248b1f_037e22b6","line":14,"in_reply_to":"83eaf1d3_1b027d64","updated":"2025-11-25 22:48:55.000000000","message":"ill reword this but i tought i did 😊","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/resource-notifications"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes to add resource notifications to the compute manager"},{"line_number":14,"context_line":"to enable external systems to be notified of resource changes."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"83eaf1d3_1b027d64","line":14,"in_reply_to":"84c9a310_49a76648","updated":"2025-11-25 13:57:26.000000000","message":"OK so maybe say that \"... to add resource inventory and usage notifications...\"","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/resource-notifications"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec proposes to add resource notifications to the compute manager"},{"line_number":14,"context_line":"to enable external systems to be notified of resource changes."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"84c9a310_49a76648","line":14,"in_reply_to":"cb7d9e6b_2a58de86","updated":"2025-11-21 16:29:02.000000000","message":"both asynchronously to enable eventually consistency with there view of the world.\n\nthe toployg and resouce aviabley is not expected to change frequently and this is expected to be a low bandwith way to make that aviable\n\nrealitme allocation where possible would be verified via placment","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"scheduling and workload management in openstack is split between several"},{"line_number":20,"context_line":"services. Placement is responsible for inventory management and allocation"},{"line_number":21,"context_line":"tracking. Watcher can utilize monitoring data to detect resource contention"},{"line_number":22,"context_line":"or achieve high level goals like workload balancing or consolidation."}],"source_content_type":"text/x-rst","patch_set":1,"id":"d35ef095_996a53c5","line":19,"updated":"2025-11-20 15:09:36.000000000","message":"nit: Scheduling","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"scheduling and workload management in openstack is split between several"},{"line_number":20,"context_line":"services. Placement is responsible for inventory management and allocation"},{"line_number":21,"context_line":"tracking. Watcher can utilize monitoring data to detect resource contention"},{"line_number":22,"context_line":"or achieve high level goals like workload balancing or consolidation."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1c1df3d0_871f2ae6","line":19,"in_reply_to":"15591a58_a7131ca5","updated":"2025-11-25 22:48:55.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"scheduling and workload management in openstack is split between several"},{"line_number":20,"context_line":"services. Placement is responsible for inventory management and allocation"},{"line_number":21,"context_line":"tracking. Watcher can utilize monitoring data to detect resource contention"},{"line_number":22,"context_line":"or achieve high level goals like workload balancing or consolidation."}],"source_content_type":"text/x-rst","patch_set":1,"id":"15591a58_a7131ca5","line":19,"in_reply_to":"d35ef095_996a53c5","updated":"2025-11-21 16:29:02.000000000","message":"looks like i forgot to do a final spellcheck pass on this one like i did for my other spec. thanks ill fix this and the rest shortly.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e26903c86160df67e7e6cde174146bdefb4e7d6","unresolved":true,"context_lines":[{"line_number":23,"context_line":"Blazar provides reservation management and nova is the final arbiter of"},{"line_number":24,"context_line":"resource allocation and scheduling."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"A common pain point for external orchestrator like watcher or third party"},{"line_number":27,"context_line":"tools is the lack of semi real-time resource availability and topology data."},{"line_number":28,"context_line":"enable them to make informed decisions."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a252769_b7ff1754","line":26,"range":{"start_line":26,"start_character":33,"end_line":26,"end_character":45},"updated":"2025-11-21 16:31:14.000000000","message":"pluralize","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Blazar provides reservation management and nova is the final arbiter of"},{"line_number":24,"context_line":"resource allocation and scheduling."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"A common pain point for external orchestrator like watcher or third party"},{"line_number":27,"context_line":"tools is the lack of semi real-time resource availability and topology data."},{"line_number":28,"context_line":"enable them to make informed decisions."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"40344baf_958660fa","line":26,"range":{"start_line":26,"start_character":33,"end_line":26,"end_character":45},"in_reply_to":"5a252769_b7ff1754","updated":"2025-11-25 22:48:55.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01ae4c2eefbf135c78e1617be82c4c60621fe082","unresolved":true,"context_lines":[{"line_number":24,"context_line":"resource allocation and scheduling."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"A common pain point for external orchestrator like watcher or third party"},{"line_number":27,"context_line":"tools is the lack of semi real-time resource availability and topology data."},{"line_number":28,"context_line":"enable them to make informed decisions."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As we move more and more resources to be modeled in placement the for a nova"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b8982ed9_92113f1c","line":27,"range":{"start_line":27,"start_character":6,"end_line":27,"end_character":9},"updated":"2025-11-25 19:13:48.000000000","message":"are","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":24,"context_line":"resource allocation and scheduling."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"A common pain point for external orchestrator like watcher or third party"},{"line_number":27,"context_line":"tools is the lack of semi real-time resource availability and topology data."},{"line_number":28,"context_line":"enable them to make informed decisions."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As we move more and more resources to be modeled in placement the for a nova"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1b5552fd_af538e44","line":27,"range":{"start_line":27,"start_character":6,"end_line":27,"end_character":9},"in_reply_to":"b8982ed9_92113f1c","updated":"2025-11-25 22:48:55.000000000","message":"either is correct\n\nthis is a case wehre the consistien use fo the oxford common woudl make it clear that im considetin resouce aviablity and toplogy data to be 1 thing not 2","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":27,"context_line":"tools is the lack of semi real-time resource availability and topology data."},{"line_number":28,"context_line":"enable them to make informed decisions."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As we move more and more resources to be modeled in placement the for a nova"},{"line_number":31,"context_line":"specific rest api to provide this data is becoming less and less desirable."},{"line_number":32,"context_line":"As we want to reduce the need for the hypervisor api in favor of the"},{"line_number":33,"context_line":"placement api. However today NUMA is not modeled in placement and even with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3dc0a5c4_bed94505","line":30,"range":{"start_line":30,"start_character":62,"end_line":30,"end_character":71},"updated":"2025-11-20 15:09:36.000000000","message":"nit: seems like something is missing here","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":27,"context_line":"tools is the lack of semi real-time resource availability and topology data."},{"line_number":28,"context_line":"enable them to make informed decisions."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As we move more and more resources to be modeled in placement the for a nova"},{"line_number":31,"context_line":"specific rest api to provide this data is becoming less and less desirable."},{"line_number":32,"context_line":"As we want to reduce the need for the hypervisor api in favor of the"},{"line_number":33,"context_line":"placement api. However today NUMA is not modeled in placement and even with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c17573d1_f9719d1c","line":30,"range":{"start_line":30,"start_character":62,"end_line":30,"end_character":71},"in_reply_to":"3dc0a5c4_bed94505","updated":"2025-11-21 16:29:02.000000000","message":"```suggestion\nAs we move more and more resources to be modeled in placement the need for a nova\n```","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":27,"context_line":"tools is the lack of semi real-time resource availability and topology data."},{"line_number":28,"context_line":"enable them to make informed decisions."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As we move more and more resources to be modeled in placement the for a nova"},{"line_number":31,"context_line":"specific rest api to provide this data is becoming less and less desirable."},{"line_number":32,"context_line":"As we want to reduce the need for the hypervisor api in favor of the"},{"line_number":33,"context_line":"placement api. However today NUMA is not modeled in placement and even with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ac9b1faf_afd7257e","line":30,"range":{"start_line":30,"start_character":62,"end_line":30,"end_character":71},"in_reply_to":"c17573d1_f9719d1c","updated":"2025-11-25 22:48:55.000000000","message":"Acknowledged","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":33,"context_line":"placement api. However today NUMA is not modeled in placement and even with"},{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"f0e25d25_66921c0b","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":5},"updated":"2025-11-20 15:09:36.000000000","message":"nit: Until","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":33,"context_line":"placement api. However today NUMA is not modeled in placement and even with"},{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a2e0605f_73221d77","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":5},"in_reply_to":"f0e25d25_66921c0b","updated":"2025-11-25 22:48:55.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01ae4c2eefbf135c78e1617be82c4c60621fe082","unresolved":true,"context_lines":[{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"470846c5_9859aac4","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":5},"updated":"2025-11-25 19:13:48.000000000","message":"Can we also specify a way to get the resource allocations?\ne.g. \nI want to know how many CPU cores from a numa cell has been assigned to vm1\nor how many PCI vf from a numa cell has been assigned to vm2.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f93642de_d65b5f06","line":38,"updated":"2025-11-20 15:09:36.000000000","message":"While pci alias is known by the compute (to support some lifecycle operations) there are other ways to consume pci devices as well.\n* mdev GPUs are consumed via direct resource class request in the flavor extra spec\n* PCI NICs might be consumed via neutron ports with special vnic_types (direct, direct-physical, ...)\n\nThe compute does not know about these entities so it cannot provide the mapping for these.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f42d9ccd46711ae0bfec0464c738940af872e143","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dd42189f_cede8d3b","line":38,"in_reply_to":"029a9631_e899f440","updated":"2025-11-25 14:56:25.000000000","message":"Yeah, to be clear, the notifications are needed anyway, just for the immediate indication that something has changed. All I\u0027m saying is that it sort of sounds like this is saying that listening to notifications for a while is a good way to get a picture of the state of the system, and I don\u0027t think it is. Specifically this statement:\n\n\u003e As we move more and more resources to be modeled in placement the [need ?] for a nova specific rest api to provide this data is becoming less and less desirable.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"4b506e1076bb1272cd38389a63e614b4f92294fb","unresolved":true,"context_lines":[{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6d249ebd_41fa8f0a","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":5},"in_reply_to":"34bf8c3f_d4369a19","updated":"2025-11-26 17:18:30.000000000","message":"This is quite important to our use cases. \nCan we use virsh command to gather this informtion and include in the message (in stead of doing db queries)?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"34bf8c3f_d4369a19","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":5},"in_reply_to":"470846c5_9859aac4","updated":"2025-11-25 21:49:11.000000000","message":"we could although i was intentionally trying to avoid passing that information to keep the payload size small.\n\nto schdule you do not actully need to know what device the instance has, just the ones it needs\n\n\nyou can infer this form the instnace flavor but i guess its more explcit in the request spec.\n\nthe compute node does not actullly have acess to either the request spec or the instnace object for all instnace on the host in genreal but we may have this info in the update aviable resouce preodic.\n\nif possible i would like to avoid any db queres form the compute over rpc to look this ups that woudl be somewhat expensive in large clouds.\n\nthe pci tracker and instance numa toplogy blob form teh resocues tracker do know whihc device are free, and in the case of the pci tracker we may have the asignemnet in memory but im not sure how cheap it woudl be to rpovide the instance view.\n\nhow important is that to your usecase?\n\nif this is very imporant to your use cause \nperhaps that implies there should 2 notifcaitons instead of one.\n\n\none that is a resouce summary. this shoudl change very in frequently\nthe other would be an instance summary this we could expect to change more frequently.\n\ni had planned to include a list of the instnace uuid for the instnace on a host but\nperahse a subset of the isntnace objects focusing on the instnace numa toplogy + device assgiements (pci requests, mdevs ectra) could be incldued.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f0975afbb0b197c67a78af1676404a9b83bd96e1","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c8f5b416_99d732b3","line":38,"in_reply_to":"53c47759_a3360488","updated":"2025-11-21 17:54:10.000000000","message":"i agree  that an API is the nicer, cleaner solution here. Getting a complete, up-to-date copy of the host state object from an API endpoint would be superior to trying to piece it together from a stream of notifications in general.\nwatcher is already doign that today so this is a natural fit to the exsitng model fo watcher. https://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/notification/nova.py\n\nthis paragraph is not justifying why its not an api by the way\ni agree overall, api woudl be a better longterm soltion though it would have been nice to receive that feedback in the ptg session\nsine the feedback i did receive was\n\n```\n    AGREED:\n\n    Fine with the idea.\n\n    We need to take care about the volume of data sent.\n\n    Sean to propose a spec.\n```\n\nhttps://etherpad.opendev.org/p/r.9bac75a686ab0941572757b205c9415c#L772\n\nsince the general direction was well recivied in the brainstorming session i crated at the ptg i didn\u0027t try to motivate for why this is not an api in the spec.\nperusing the api driven approch was mentioned offhand but not indicated as prefered \nhence why i started on this spec in its current form.\n\nbeing pragmatic for second i belive i can impleent the notifcaton and we can review it in the time remaining but the API driven appoch is a lot more invasive. Im not agaisnt thakign the longer term view but it woudl vastly increase the scope of work.\n\nI\u0027m not proposing this notification as the final destination, just a incremntal step to get critical data to systems that need to make complex scheduling decisions now, while we figure out the long-term, API-driven solution.\n\n\nthinking through the API approach off the cuff \n\ni coudl add a new rpc endpoitn to the scheduler ot generate those or factor the logic into a common module that is invoked directly in the api,there is still some information that is only aviabel either on the compute or in placement today.\n\nthe pci alias info i have in the api config\nthe phsynet and numa info is aviabel in the cell dbs (either in the host numa topology blob and or the pci device table or technically via the pci pools in the compute node stats.\ni can also query the resources table for thing like intel persistent memory.\n\ngeneric mdevs are only available in placement as they are not viable to the nova schduelr at all, but i guess because they are in placement that is ok.\nif its an api call i also have access to the instance and cell mapping tables so i can include that if need and or host aggregate mapping although that getting a bit expensive.\n\nso i htink i could build the host view in a new api endpoitn just for this.\nit woudl be more work but the content of the api respocne woudl jsut be a list of effectivly the same data as the notification woudl hold.\nproably quryally both as a list and per hypervior.\n\nalthough watcher would likely do this in one paginated call once an hour as we already do for the hypervisors api.\n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py#L342-L425\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py#L180-L192\n\nif we are going doing the api route i could also build the api to take a exisitn instnace or project/flavor/instnace triple and pdocuec some datascuture that woudl allow me to use the other api +placment ot comptue and simulate possibel hosts.\nbut at that point we are heading mroe in the direction of builign the api to supprot https://wiki.openstack.org/wiki/Gantt or a seperate extnal schduler serleer service as  a first class thing.\n\n\nIf the concensous of the core team is they would prefer to focus on an api drive appcoh instead i can start desgining that although it proablym wont be completeable this cycle.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a9253655_39333de7","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":5},"in_reply_to":"6d249ebd_41fa8f0a","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"974dae0a3ecdc6f55c51c28fdbb77f64ec922553","unresolved":true,"context_lines":[{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fff77b0e_47afda73","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":5},"in_reply_to":"6d249ebd_41fa8f0a","updated":"2025-12-01 16:49:53.000000000","message":"Usage information can be pieced together from instance create/delete notifications and or from the audit notification https://docs.openstack.org/nova/latest/configuration/config.html#DEFAULT.instance_usage_audit today. But note that such notification is not carrying the NUMA and PCI allocation data of the instance.\n\n\u003e Can we use virsh command to gather this informtion and include in the message (in stead of doing db queries)?\n\nIf we are at it. @liliueecg@gmail.com could your data gathering use case be satisfied by reading the libvirt domain XMLs on the host? Or having a Prometheus exporter doing it for you? The libvirt domain XML is already a well defined API that contains all this resource usage information, and also it contains the nova VM UUID as metadata so you can correlate the usage back to nova VMs. OpenStack has no problem if an external service reads the domain XMLs periodically. We only state that we don\u0027t support the case when the external system changes such XML.\n\nFor me using an already well defined interface sounds a lot better than start designing an interface here from scratch.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"adefca42_c2bd5ca4","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":5},"in_reply_to":"99929f16_5e9c2659","updated":"2025-12-03 13:52:41.000000000","message":"i have refactored the spec to extend the instance notifications conditionaly with\nthe device asignment info\n\nlets resolve this thread and reasses the new direcreation (this is effectivly v1 but with the refinements we have discussed along the way)","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"029a9631_e899f440","line":38,"in_reply_to":"c8f5b416_99d732b3","updated":"2025-11-25 13:57:26.000000000","message":"I was happy with the notification approach as the notification versioning is less strict than our API versioning. I.e. we never promised to support emitting old notification versions, we always emit the latest. But we do keep backward compatibility by only extending the notification structs in a new minor version. So it is simpler to evolve the notification interface by adding new data to it, then the REST API where that would mean a new microversion + support for the old microversion as well.\n\nAlso the notification approach scales a bit better in my head. Polling 100s of computes every hour via REST + RPC is more costly than getting a notification when something changes. Also the REST API way will be prone to the error of a compute intermittently being unavailable holding up the REST response of the listing (like in case we had with the uptime).\n\nMy point in the comment was about how we will include the pci_alias, the mdev type, and the potentical vnic_type of a port, that can consume the compute\u0027s resources. It seem Sean has plans for it. So I\u0027m fine reviewing the update based on their idea.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e6d7403b_5de6095f","line":38,"in_reply_to":"dd42189f_cede8d3b","updated":"2025-11-25 21:49:11.000000000","message":"ack, what i was trying to say with that is. if all resouce assgined and assinable to the vm were modeled in placement we could get the information from placement instead.\n\nso as we get closer to all assgiable resocues being modeled in palcmeent the gap closes.\n\nplacement api is not perfect either.\n\nwe woudl bascilly have to construct the full provider tree of invetores for each host and im not sure i can do that in one call to the api today.\ncertainly not with the  if we wnat a view of both the curent usate and avialable capstiy which watcher woudl need to knwo to make schdulign decsions\n\neffectively we woudl need a way to generate something like the provdier_summaries\nwe get back form the allocation candidates response and i dont think we can get that in general without using the allcoation candates endpoitn today.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e7a6f38b_8501a2cf","line":38,"in_reply_to":"e6d7403b_5de6095f","updated":"2025-11-25 22:48:55.000000000","message":"i will resolve this for now as i have rewrite the prblem statemet a lot ot help clarify my intent.\n\nlet see if that help and we can review the update.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e26903c86160df67e7e6cde174146bdefb4e7d6","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"53c47759_a3360488","line":38,"in_reply_to":"f93642de_d65b5f06","updated":"2025-11-21 16:31:14.000000000","message":"It also feels like the nicer thing would be to have an API for this. Not sure it should be the hypervisor API or anything like it, but I imagine this is a common pain point. Saying that resource notifications solves this problem seems disingenuous to me as I would imagine most people would see cobbling together the list from a stream of notifications unreasonable. I imagine even watcher, which is well-positioned to make the list out of notification fragments, would prefer to be able to just _get_ the list.\n\nNot saying this spec should propose such an API, but rather that justifying these notifications with this as a reason seems to be to be rather...weak.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f335c1a6_297617fb","line":38,"in_reply_to":"f93642de_d65b5f06","updated":"2025-11-21 16:29:02.000000000","message":"the comptue knows about the mdev type to resouce class mapping via its config\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#devices.enabled_mdev_types\nhttps://specs.openstack.org/openstack/nova-specs/specs/xena/implemented/generic-mdevs.html\n\nthe enabled_mdev_types are reported as f\"CUSTOM_{type.to_upper()} custom resouce classes\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/xena/implemented/generic-mdevs.html#the-custom-resource-classes\n\nbut you can also spcify it with the mdev class config option according to the spec but i need to verify if that was actuly implemented in the code\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/xena/implemented/generic-mdevs.html#the-configuration-changes\n\n\nfor the neutron case this si even simpler \n\nwe jsut need the pci device type and the presnece of the physical network tag on teh pci device to know it aviable to neutron and what type of port it woudl need to be to request it\n\ntype-PF + physnet -\u003e vnic\u003ddirect-phsyical\ntype-VF + physnet -\u003e vnic\u003ddirect or vnic\u003dmacvtap\nvdpa +phsynet -\u003e vnic\u003dvdpa\n\n\nthis info is all aviabe in the pci device table and the pci pools/pci tacker in memory\n\nits the same mapping more or less impleid by \n\nhttps://specs.openstack.org/openstack/nova-specs/specs/zed/approved/pci-device-tracking-in-placement.html#neutron-sr-iov-ports-out-of-scope\n\nobvioulsy we coudl report the resouce class directly in the notificaton if we ever finish that but for now just knowing the phsnet and device type info woudl allow use to schdule bead on neutron sriov port aviabality in watcher.\n\ntoday we have no idea if a vm can be shcduled to a host if it has any neutron sriov port or passhtough devices\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/rocky/implemented/numa-aware-vswitches.html is also a factor which is touch on later in teh spec.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"6901acc10678e5c3bbec3579d3e4a478ac58265e","unresolved":true,"context_lines":[{"line_number":34,"context_line":"pci in placement not all devices are tracked such as network devices."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"until all resources are modeled in placement we need a way to notify external"},{"line_number":37,"context_line":"systems of resource availability, topology and how they can be requested by"},{"line_number":38,"context_line":"a vm. i.e. how to translate from a pci alias name to the actual requirements."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"99929f16_5e9c2659","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":5},"in_reply_to":"fff77b0e_47afda73","updated":"2025-12-02 19:32:29.000000000","message":"All we need to know is just for the CPUs of PCI devices that assigned to a VM, which side of NUMA does it consume from.\n\nIf this notification can include this kind of information, that would be very valuable to us. I believe this is also part of the topology of the resoureces.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e26903c86160df67e7e6cde174146bdefb4e7d6","unresolved":true,"context_lines":[{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"As an operator, i want the ability advertise all consumable resources to"},{"line_number":44,"context_line":"external systems so they can make informed decisions without requiring db"},{"line_number":45,"context_line":"access, config access or host introspection."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"43f684b9_e6d5e169","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":17},"updated":"2025-11-21 16:31:14.000000000","message":"\"I\" (here and below)","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e26903c86160df67e7e6cde174146bdefb4e7d6","unresolved":true,"context_lines":[{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"As an operator, i want the ability advertise all consumable resources to"},{"line_number":44,"context_line":"external systems so they can make informed decisions without requiring db"},{"line_number":45,"context_line":"access, config access or host introspection."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2305cd58_efcb8b9b","line":43,"range":{"start_line":43,"start_character":35,"end_line":43,"end_character":44},"updated":"2025-11-21 16:31:14.000000000","message":"\"to advertise\" I think","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"As an operator, i want the ability advertise all consumable resources to"},{"line_number":44,"context_line":"external systems so they can make informed decisions without requiring db"},{"line_number":45,"context_line":"access, config access or host introspection."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"56215759_a1358517","line":43,"range":{"start_line":43,"start_character":35,"end_line":43,"end_character":44},"in_reply_to":"2305cd58_efcb8b9b","updated":"2025-11-25 22:48:55.000000000","message":"yes that what i orgianlly ment.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Use Cases"},{"line_number":41,"context_line":"---------"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"As an operator, i want the ability advertise all consumable resources to"},{"line_number":44,"context_line":"external systems so they can make informed decisions without requiring db"},{"line_number":45,"context_line":"access, config access or host introspection."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"44f5df03_5c6976d6","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":17},"in_reply_to":"43f684b9_e6d5e169","updated":"2025-11-25 22:48:55.000000000","message":"Acknowledged","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01ae4c2eefbf135c78e1617be82c4c60621fe082","unresolved":true,"context_lines":[{"line_number":52,"context_line":"resource by extending my existing use of nova versioned notifications."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"As a nova developer, i want to minimize the number of notifications sent"},{"line_number":55,"context_line":"and the payload size to minimize the performance impact on the notification"},{"line_number":56,"context_line":"bus by only sending notifications for changes or when a minimum interval has"},{"line_number":57,"context_line":"passed since the last notification."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"4eefc3c1_4aa80a72","line":55,"range":{"start_line":55,"start_character":24,"end_line":55,"end_character":33},"updated":"2025-11-25 19:13:48.000000000","message":"we can add configurations on the compute side for what contents can be sent to the notification bus","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":52,"context_line":"resource by extending my existing use of nova versioned notifications."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"As a nova developer, i want to minimize the number of notifications sent"},{"line_number":55,"context_line":"and the payload size to minimize the performance impact on the notification"},{"line_number":56,"context_line":"bus by only sending notifications for changes or when a minimum interval has"},{"line_number":57,"context_line":"passed since the last notification."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"84322ac9_cf2dd5df","line":55,"range":{"start_line":55,"start_character":24,"end_line":55,"end_character":33},"in_reply_to":"4eefc3c1_4aa80a72","updated":"2025-11-25 21:49:11.000000000","message":"to a limtied degree,\n\nwe cant allwo you to add arbiatry field but we coudl make some filed optional\n\ni.e not include any info about instances by default beyond the uuids.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":52,"context_line":"resource by extending my existing use of nova versioned notifications."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"As a nova developer, i want to minimize the number of notifications sent"},{"line_number":55,"context_line":"and the payload size to minimize the performance impact on the notification"},{"line_number":56,"context_line":"bus by only sending notifications for changes or when a minimum interval has"},{"line_number":57,"context_line":"passed since the last notification."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"22e82960_132dcad1","line":55,"range":{"start_line":55,"start_character":24,"end_line":55,"end_character":33},"in_reply_to":"84322ac9_cf2dd5df","updated":"2025-11-25 22:48:55.000000000","message":"i have reworked this to demphaize minimizing performafe impact and instead focuso on providing the requried information w","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":true,"context_lines":[{"line_number":56,"context_line":"bus by only sending notifications for changes or when a minimum interval has"},{"line_number":57,"context_line":"passed since the last notification."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Proposed change"},{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"A new versioned notification will be added as part of the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4d7e81de_61ebe524","line":59,"updated":"2025-11-25 22:48:55.000000000","message":"in terms fo the detailed rework i only got as far as here today.\n\nthis update is mainly adressing the low haning fuit like spellcheckign which i started on yesterday\n\ni have reworked the problem descrtion and usecases to hopefully be more correct.\n\nthis will be what i am maninly working on tomrow and imbooing to make some progress on updating the propsoed changes esction with more represtivies object/fileds\n\ni did not have time to do that today however so ill push what i have now.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":56,"context_line":"bus by only sending notifications for changes or when a minimum interval has"},{"line_number":57,"context_line":"passed since the last notification."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Proposed change"},{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"A new versioned notification will be added as part of the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"18226a45_822c0432","line":59,"in_reply_to":"4d7e81de_61ebe524","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"be0a880f_4fa4ac81","line":65,"updated":"2025-11-20 15:09:36.000000000","message":"You mentioned the requirement to limit the performance impact on the notification bus. If we have one big notification then if anything changes in nova\u0027s resource view then we need to send the whole notification payload. If we are afraid of the notification performance would it be better to design a set of smaller notifications to limit the amount of data we emit when only one thing is changed?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c9dbba5c_69b163cb","line":65,"in_reply_to":"00663035_d84a3fa8","updated":"2025-12-03 13:52:41.000000000","message":"Done they are now included int eh instnace notficiaons behind a boolean config flag\nand the resouce notificaion is just the host resouce toplogy/avaiabliy info.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5ef73e6c_485fa36c","line":65,"in_reply_to":"6e3222d7_d3f51dbd","updated":"2025-12-01 14:03:23.000000000","message":"Acknowledged","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"974dae0a3ecdc6f55c51c28fdbb77f64ec922553","unresolved":true,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"00663035_d84a3fa8","line":65,"in_reply_to":"6e3222d7_d3f51dbd","updated":"2025-12-01 16:49:53.000000000","message":"Please not that we already have notification about allocations. The instance action and the instance audit notifications are about allocations. If NUMA and PCI allocation is needed then I rather add them to those existing notifications than creating a new one for allocations only.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e24c0528d1157d9fec13333f15690855fb684b72","unresolved":true,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6e3222d7_d3f51dbd","line":65,"in_reply_to":"6e977b90_280f6872","updated":"2025-11-26 20:08:39.000000000","message":"yes exactly that one of the options we need to consider.\n\nsendign the host toploty once an hour or once a day is proably sufficent\n\nthe insance coudl be sent more frequestly.\n\nmany instance action also send notifciaons already so those may also be of interest to you.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f2ded430_e2ad6aee","line":65,"in_reply_to":"824c7013_d3d00c82","updated":"2025-11-25 13:57:26.000000000","message":"\u003e As a nova developer, i want to minimize the number of notifications sent\nand the payload size to minimize the performance impact on the notification\nbus by only sending notifications for changes or when a minimum interval has\npassed since the last notification.\n\n\n\n\u003e im not really worried about hte overall performance of one big object \n\nOK then the above user case needs to be refined that we only worry about the frequency but not the size of the notification.\n\n\u003e but perhaps i shoudl be and a more granualar approch coudl be better\n\u003e do you have a proposl for the decompostion?\n\nI we do worry about the size as well then maybe a way to split it up is by resource categories: \n* basic (cpu,ram, disk, including pinning and numa), \n* pci\n* other (persistent memory, sev context, etc)\n\nOr it would be even better to split up via how frequently data would change, i.e. all the data that expected to change infrequently can be in one notification and the frequently changing data can be in another (or multiple another). So far we see that there will be resource inventory type data that is not expected to change much and there will be resource usage type data that will change as frequently as VM lifecycle operations.\n\nWe can get back to this once we see the data structure to be sent and try to which part of it will change how frequently.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d49708b7_91631eff","line":65,"in_reply_to":"968186ac_e6a41d91","updated":"2025-11-25 21:49:11.000000000","message":"so the aviable resouce of a compute basically never change after the ocmptue agent start.\n\nthe consumtion fo them does but the number of vcpu or pci device cant chagne without restarting the nova_compute agent\n\nthat why im wondering fo a very simple resouce view that is sent very in in frequestly + a sepreate notifcation for instance makes mreo sense.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"824c7013_d3d00c82","line":65,"in_reply_to":"be0a880f_4fa4ac81","updated":"2025-11-21 16:29:02.000000000","message":"good question \n\nim not really worried about hte overall performance of one big object but perhaps i shoudl be and a more granualar approch coudl be better\n\ndo you have a proposl for the decompostion?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"0b7a75af00f1c0825950da50c44f2296c417cfbd","unresolved":true,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6e977b90_280f6872","line":65,"in_reply_to":"d49708b7_91631eff","updated":"2025-11-26 16:32:18.000000000","message":"So there could be 2 types of messages\n1. A message that contains the entire host topology -\u003e this can be sent less freq\n2. A message that contains usage/allocation -\u003e this can be send more freq/on each change basis\nAm I right?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01ae4c2eefbf135c78e1617be82c4c60621fe082","unresolved":true,"context_lines":[{"line_number":62,"context_line":"A new versioned notification will be added as part of the"},{"line_number":63,"context_line":"update_available_resources periodic task. This will be sent after the"},{"line_number":64,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":65,"context_line":"the final resource view is reported to the scheduler."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":68,"context_line":"will be ratelimited so that it is only sent if it has changed since the last"}],"source_content_type":"text/x-rst","patch_set":1,"id":"968186ac_e6a41d91","line":65,"in_reply_to":"f2ded430_e2ad6aee","updated":"2025-11-25 19:13:48.000000000","message":"As I mentioned earlier, we can have more granualar configuration on what to send and how freq to send the notification \n\u003cnotification item\u003e \u003cinterval in sec\u003e\ne.g. \nconmpute_numa_cpu_notification 3600\nconmpute_numa_pci_notification 1800","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The minimum interval or time to live for the notification will be"},{"line_number":72,"context_line":"configurable to allow external systems to resync if a notification is missed"},{"line_number":73,"context_line":"and will default to 1 hour specified in integer seconds."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The new notification will be off by default requiring operators to opt in via"},{"line_number":76,"context_line":"new config options."}],"source_content_type":"text/x-rst","patch_set":1,"id":"67bd1b67_d0df8c48","line":73,"updated":"2025-11-20 15:09:36.000000000","message":"Do we trigger sending the notification from the periodic update_available_resources task or there will be a separate periodic for this? If the former then we need to be careful as such periodic can be configured to run very infrequently or even disabled altogether.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The minimum interval or time to live for the notification will be"},{"line_number":72,"context_line":"configurable to allow external systems to resync if a notification is missed"},{"line_number":73,"context_line":"and will default to 1 hour specified in integer seconds."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The new notification will be off by default requiring operators to opt in via"},{"line_number":76,"context_line":"new config options."}],"source_content_type":"text/x-rst","patch_set":1,"id":"df93396c_9a144129","line":73,"in_reply_to":"02c0f072_d0713090","updated":"2025-11-25 13:57:26.000000000","message":"My problem with the update_available_resources that it has its own frequency. So then the notification frequency config needs to take into account the update_available_resources frequency config. Creating a bit of complication for the user to configure. \n\nI have a feeling that outside the periodic update_available_resources there is other compute manager / resource tracker operations that affects the overall resource usage view of the compute, like resource claim due to new instance is being created. So if the periodic update_available_resources is set to infrequent run (I think at some point we said it can be even turned off safely these days) then resource usage change due to claim will not trigger a notification. I.e. the diff notification will not happen or will happen a lot later when eventually update_available_resources runs.\n\nSo if you need resource usage diff notification then the update_available_resources periodic might not be a good place to trigger it. But instead you need to hook into other parts of the resource tracker.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The minimum interval or time to live for the notification will be"},{"line_number":72,"context_line":"configurable to allow external systems to resync if a notification is missed"},{"line_number":73,"context_line":"and will default to 1 hour specified in integer seconds."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The new notification will be off by default requiring operators to opt in via"},{"line_number":76,"context_line":"new config options."}],"source_content_type":"text/x-rst","patch_set":1,"id":"024b9c76_c6f17094","line":73,"in_reply_to":"4f959efa_a6696a27","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The minimum interval or time to live for the notification will be"},{"line_number":72,"context_line":"configurable to allow external systems to resync if a notification is missed"},{"line_number":73,"context_line":"and will default to 1 hour specified in integer seconds."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The new notification will be off by default requiring operators to opt in via"},{"line_number":76,"context_line":"new config options."}],"source_content_type":"text/x-rst","patch_set":1,"id":"02c0f072_d0713090","line":73,"in_reply_to":"67bd1b67_d0df8c48","updated":"2025-11-21 16:29:02.000000000","message":"it will be form update_available_resources at least in this proposal\n\nwe coud have a sperate one if folks prefer. i want to avodi doing the actull data collection if we are doing it in a sperate task but maybe that is cleaner\n\ni can just read form teh in memory resouce tracker ectra to get the info i need.\n\ni was proposing 2 config options  a bool to enable sending the notication and an interval for how often to send if if there is no change.\n\nif i make it a new periodic i woudl only need 1 config optin.\n\nit can defualt to disabled and i just need the perodic interval.\nthat actully seams cleaner to me on paper so maybe i shoudl update the spec to take \n\nthat approch and move trigering on update_available_resources to the alternitives.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The minimum interval or time to live for the notification will be"},{"line_number":72,"context_line":"configurable to allow external systems to resync if a notification is missed"},{"line_number":73,"context_line":"and will default to 1 hour specified in integer seconds."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The new notification will be off by default requiring operators to opt in via"},{"line_number":76,"context_line":"new config options."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4f959efa_a6696a27","line":73,"in_reply_to":"df93396c_9a144129","updated":"2025-11-25 21:49:11.000000000","message":"ah yes i have argued that we shoudl be able to run with the update_avaible_resouces preodic disabeld today\n\n\ni think that is enough of an argument to make this its own perodic so it can have an independet lifetiem.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"TBD should this be enabled by specifying a topic to send the notification"},{"line_number":79,"context_line":"to? or just a simple boolean flag? or as a side effect of the interval config"},{"line_number":80,"context_line":"option."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The notification will contain the following fields:"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dd0963db_fafd8408","line":80,"updated":"2025-11-20 15:09:36.000000000","message":"Good question. \n\nDo we want to be able to send this and only this notification to a separate topic from the rest of the versioned notifications? This will be a first. As the rest of the notifications always go to the same (but configurable) topic. \n\nThe frequency option would not be optimal to enable sending this notification as the periodic re-sending might be turned off while the diff based re-sending is still needed. \n\nI think enabling this notification with a boolean flag makes the most sense for me and that decouples the enabling from the rest of the advanced behaviors like topics and time based re-sending.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"TBD should this be enabled by specifying a topic to send the notification"},{"line_number":79,"context_line":"to? or just a simple boolean flag? or as a side effect of the interval config"},{"line_number":80,"context_line":"option."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The notification will contain the following fields:"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"b222ace4_ee0f180d","line":80,"in_reply_to":"0716a65c_64fde625","updated":"2025-11-25 21:49:11.000000000","message":"if the reason to seprate it is for performace i dont think a sperate topic really helps. it might somewhat if this was for local consumtion on a per host basis\nbut for watcher at elast that is not our usecase we want a single stream with all teh rescoue notifcations form all comptues.\n\nideally on teh same topic we already get the other nova notificaton on and on the same rabbit isntance.\n\nif we were to assume that oeprators deploy notification prodmently to there own rabbit server which i belive is the norm i think we are ok to send this on the same topic/exchange/server as the rest fo the notifictions.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f0975afbb0b197c67a78af1676404a9b83bd96e1","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"TBD should this be enabled by specifying a topic to send the notification"},{"line_number":79,"context_line":"to? or just a simple boolean flag? or as a side effect of the interval config"},{"line_number":80,"context_line":"option."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The notification will contain the following fields:"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2e3bc1b4_3e564fa6","line":80,"in_reply_to":"2589a8b2_0f7011ad","updated":"2025-11-21 17:54:10.000000000","message":"yes this is here because dan raised in the ptg dicussion.\n\nif we are happy to defer this to a later \"generic notification queue mapping\" feature im fine to consider this out of scope of this spec and remove it.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"TBD should this be enabled by specifying a topic to send the notification"},{"line_number":79,"context_line":"to? or just a simple boolean flag? or as a side effect of the interval config"},{"line_number":80,"context_line":"option."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The notification will contain the following fields:"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"0716a65c_64fde625","line":80,"in_reply_to":"2e3bc1b4_3e564fa6","updated":"2025-11-25 13:57:26.000000000","message":"I\u0027m fine either way. \nIf we go with this notification being special and sent to a configurable topic, but we feel that there will be other notifications later, then we should design the config interface in a way that is extendable to the later mappings. Also if this is going to a separate topic, does it also need to go to a separate bus? Today we have  way to provide a separate bus for notifications only, but no further granularity.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"TBD should this be enabled by specifying a topic to send the notification"},{"line_number":79,"context_line":"to? or just a simple boolean flag? or as a side effect of the interval config"},{"line_number":80,"context_line":"option."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The notification will contain the following fields:"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3990cbe3_e9d2733a","line":80,"in_reply_to":"b222ace4_ee0f180d","updated":"2025-12-01 14:03:23.000000000","message":"removed this as we dicussed doing this speeratly in the future as its own sepc.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e26903c86160df67e7e6cde174146bdefb4e7d6","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"TBD should this be enabled by specifying a topic to send the notification"},{"line_number":79,"context_line":"to? or just a simple boolean flag? or as a side effect of the interval config"},{"line_number":80,"context_line":"option."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The notification will contain the following fields:"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2589a8b2_0f7011ad","line":80,"in_reply_to":"dd0963db_fafd8408","updated":"2025-11-21 16:31:14.000000000","message":"I think this is here because I suggested it. I feel like this is probably likely to be the kind of thing that is consumed differently from the other notifications and thus might be best handled by grouping hosts to smaller notification queue than the global one for all of nova. If that\u0027s the case, enabling by setting a topic just avoids the need to make this \"enable and configure\" instead of \"enabled by virtue of being configured.\"\n\nAnyway, it\u0027s not that important and perhaps we should consider the ability to just map notifications to queues generally as a separate effort if we decide that\u0027s useful. As someone who recently used notifications to implement a per-host action (a pattern which resource notifications may fall into) I think having to eat the whole stream just to get one thing is increasingly undesirable.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":".. NOTE:: (sean-k-mooney): this is a placeholder for the actual"},{"line_number":85,"context_line":"   notification fields. i will update this in future revisions to be"},{"line_number":86,"context_line":"   specified in more detail in ovo notation."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Identifier fields"},{"line_number":89,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9c5da0e1_cabc85bf","line":86,"updated":"2025-11-20 15:09:36.000000000","message":"I\u0027m OK to have just a generic description here if you have a WIP patch showing the actual o.v.o class(es) inheriting from NotificationPayloadBase as the proposal about the structure.\n\nIn any cases besides the field definitions please point to where the given field will be populate from. E.g. most of our Instance notification\u0027s payload are populated from the Instance ovo but some parts of it is coming from the BDM ovo etc. The sources of the data does not need to be an o.v.o of course but if it can be that is even better (e.g. because the we can just use the SCHEMA field to map the source and dest ovo fields and automate the data copy)","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":".. NOTE:: (sean-k-mooney): this is a placeholder for the actual"},{"line_number":85,"context_line":"   notification fields. i will update this in future revisions to be"},{"line_number":86,"context_line":"   specified in more detail in ovo notation."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Identifier fields"},{"line_number":89,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8992306f_8f1840b0","line":86,"in_reply_to":"40d87752_74c44413","updated":"2025-11-25 13:57:26.000000000","message":"I\u0027m OK to read the structure def in the spec or in a WIP patch. If you need a bunch of commentary for certain fields then it is probably better to discuss (those) in the spec.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":".. NOTE:: (sean-k-mooney): this is a placeholder for the actual"},{"line_number":85,"context_line":"   notification fields. i will update this in future revisions to be"},{"line_number":86,"context_line":"   specified in more detail in ovo notation."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Identifier fields"},{"line_number":89,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4eb10a25_d3bcb3d3","line":86,"in_reply_to":"6feecb2b_f3b6e934","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e24c0528d1157d9fec13333f15690855fb684b72","unresolved":true,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":".. NOTE:: (sean-k-mooney): this is a placeholder for the actual"},{"line_number":85,"context_line":"   notification fields. i will update this in future revisions to be"},{"line_number":86,"context_line":"   specified in more detail in ovo notation."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Identifier fields"},{"line_number":89,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6feecb2b_f3b6e934","line":86,"in_reply_to":"8992306f_8f1840b0","updated":"2025-11-26 20:08:39.000000000","message":"i have done a poc of the jobect here\n\nhttps://review.opendev.org/c/openstack/nova/+/968558\n\nand you can view the json serialisation here\n\nhttps://termbin.com/hary\n\nill try an get that into the sepc tomorow so we can dicsus if we want to decompose it and how.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":".. NOTE:: (sean-k-mooney): this is a placeholder for the actual"},{"line_number":85,"context_line":"   notification fields. i will update this in future revisions to be"},{"line_number":86,"context_line":"   specified in more detail in ovo notation."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Identifier fields"},{"line_number":89,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"40d87752_74c44413","line":86,"in_reply_to":"9c5da0e1_cabc85bf","updated":"2025-11-21 16:29:02.000000000","message":"no but that is why i was hoping ot do next week \n\ni was net sure if i woudl copy pasta the class defintion or the serisaed form of it or both but i tought creatign it and embeding it in the spec woudl be the clearest way to expalin what this contianed.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* compute_node_uuid: the uuid of the compute node which is also the"},{"line_number":92,"context_line":"  resource provider uuid."},{"line_number":93,"context_line":"* compute_service_id: the service.id value of the compute node."},{"line_number":94,"context_line":"* host: the service.host value of the compute node (CONF.Host)"},{"line_number":95,"context_line":"* hypervisor_hostname: the hypervisor_hostname value of the compute node."},{"line_number":96,"context_line":"* hypervisor_type: the hypervisor_type value of the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4592cd7e_c4be014b","line":93,"updated":"2025-11-20 15:09:36.000000000","message":"Is this the uuid visible in the openstack compute service list? If so then OK","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* compute_node_uuid: the uuid of the compute node which is also the"},{"line_number":92,"context_line":"  resource provider uuid."},{"line_number":93,"context_line":"* compute_service_id: the service.id value of the compute node."},{"line_number":94,"context_line":"* host: the service.host value of the compute node (CONF.Host)"},{"line_number":95,"context_line":"* hypervisor_hostname: the hypervisor_hostname value of the compute node."},{"line_number":96,"context_line":"* hypervisor_type: the hypervisor_type value of the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5cbef9a9_62c2b998","line":93,"in_reply_to":"20a5631c_cf308639","updated":"2025-11-25 13:57:26.000000000","message":"OK. Lets name it compute_service_uuid to signal the intention to match with the uuid returned by the services API","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* compute_node_uuid: the uuid of the compute node which is also the"},{"line_number":92,"context_line":"  resource provider uuid."},{"line_number":93,"context_line":"* compute_service_id: the service.id value of the compute node."},{"line_number":94,"context_line":"* host: the service.host value of the compute node (CONF.Host)"},{"line_number":95,"context_line":"* hypervisor_hostname: the hypervisor_hostname value of the compute node."},{"line_number":96,"context_line":"* hypervisor_type: the hypervisor_type value of the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"20a5631c_cf308639","line":93,"in_reply_to":"4592cd7e_c4be014b","updated":"2025-11-21 16:29:02.000000000","message":"yes dan rescently started populating this i nthe cell db\nbut i belvie we have this via the service ref.\n\nthis is not really vital but its useful to have to avoid having to correlate\ncompute node to compute service with the host value.\n\nill update this to say compute_service_uuid to make it clear it not the int primary key form the compute service table.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* compute_node_uuid: the uuid of the compute node which is also the"},{"line_number":92,"context_line":"  resource provider uuid."},{"line_number":93,"context_line":"* compute_service_id: the service.id value of the compute node."},{"line_number":94,"context_line":"* host: the service.host value of the compute node (CONF.Host)"},{"line_number":95,"context_line":"* hypervisor_hostname: the hypervisor_hostname value of the compute node."},{"line_number":96,"context_line":"* hypervisor_type: the hypervisor_type value of the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5be1bf8a_a420db41","line":93,"in_reply_to":"5cbef9a9_62c2b998","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":99,"context_line":"Resource fields"},{"line_number":100,"context_line":"---------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"8ec4f53c_cfd3a31b","line":102,"updated":"2025-11-20 15:09:36.000000000","message":"I think we have existing ovos for these we can use as data source via SCHEMA\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/numa.py","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01ae4c2eefbf135c78e1617be82c4c60621fe082","unresolved":true,"context_lines":[{"line_number":99,"context_line":"Resource fields"},{"line_number":100,"context_line":"---------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"da10331a_c0a80990","line":102,"in_reply_to":"4ad6c4d8_359d350b","updated":"2025-11-25 19:13:48.000000000","message":"will numa_topology also include PCI numa topology? e.g. which device is closer to which cpu numa\nOr this will be covered sperately in the pci devices?\n\nIn addition, will allocation data be reported here?  \nWe also hope to know which VM consumes how many cores from which numa cell.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":99,"context_line":"Resource fields"},{"line_number":100,"context_line":"---------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"626278a7_3c804661","line":102,"in_reply_to":"4cd025a2_6f78d56c","updated":"2025-12-01 14:03:23.000000000","message":"Acknowledged","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":99,"context_line":"Resource fields"},{"line_number":100,"context_line":"---------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4ad6c4d8_359d350b","line":102,"in_reply_to":"8ec4f53c_cfd3a31b","updated":"2025-11-21 16:29:02.000000000","message":"yep. i plan ot resue as many of the existing ovo as make senses too.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b8cb8e156e55aea71808d4dc76495962690cb35","unresolved":true,"context_lines":[{"line_number":99,"context_line":"Resource fields"},{"line_number":100,"context_line":"---------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4cd025a2_6f78d56c","line":102,"in_reply_to":"d4ae1e23_d8385875","updated":"2025-11-26 14:58:43.000000000","message":"this is a pretty printed version fo what we log \nfor the hypervior resouce view today\n\nhttps://paste.opendev.org/show/829744/\n\nthat printign each of the pci devices but i dont thinkthat is a good representation for our use case.\n\nif we isntead use teh pci pools we compres that alot into \n\nhttps://paste.opendev.org/show/829745/\n\ncloud in the pool object is the cound of free devices.\n\nif this was not form a vm numa_node woudl general be an int alhtough sometimes\ndevices do not report a numa node so its a nullable int\n\nthis is the representation that the schduler schdules on today\n\nhttps://paste.opendev.org/show/829746/\n\nthis is what a numa toploty oject contains\n\nin my case the \"pinned_cpus\": [],\nis empty because i have not created any vms in this env so they are all free.\n\nif i configure cpu_shared_set and cpu_dedicated_set\n\n```\n[compute]\ncpu_shared_set \u003d 0,6\ncpu_dedicated_set \u003d 1-5,7\n```\nthe topology will lok like this\nhttps://paste.opendev.org/show/829747/\n\nthis what we woudl expect today if your using cpu pinning, i.e reprot pinned cpus to placement with the PCPU resource class","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":99,"context_line":"Resource fields"},{"line_number":100,"context_line":"---------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"d4ae1e23_d8385875","line":102,"in_reply_to":"da10331a_c0a80990","updated":"2025-11-25 21:49:11.000000000","message":"spereatly\n\ndotay the pci device have a numa_node assocated with them and its one of the parmeter that is internally used when creating pools fo pci devices internally\n\n\nthe numa toploty will be https://github.com/openstack/nova/blob/master/nova/objects/numa.py#L211\nwhich is just a list of numa cells\nhttps://github.com/openstack/nova/blob/master/nova/objects/numa.py#L25\n\n```\n    fields \u003d {\n        \u0027id\u0027: obj_fields.IntegerField(read_only\u003dTrue),\n        \u0027cpuset\u0027: obj_fields.SetOfIntegersField(),\n        \u0027pcpuset\u0027: obj_fields.SetOfIntegersField(),\n        \u0027memory\u0027: obj_fields.IntegerField(),\n        \u0027cpu_usage\u0027: obj_fields.IntegerField(default\u003d0),\n        \u0027memory_usage\u0027: obj_fields.IntegerField(default\u003d0),\n        \u0027pinned_cpus\u0027: obj_fields.SetOfIntegersField(),\n        \u0027siblings\u0027: obj_fields.ListOfSetsOfIntegersField(),\n        \u0027mempages\u0027: obj_fields.ListOfObjectsField(\u0027NUMAPagesTopology\u0027),\n        \u0027network_metadata\u0027: obj_fields.ObjectField(\u0027NetworkMetadata\u0027),\n        \u0027socket\u0027: obj_fields.IntegerField(nullable\u003dTrue),\n    }\n```\n\n\nthe pci device poosl woudl be \n\nhttps://github.com/openstack/nova/blob/master/nova/objects/pci_device_pool.py#L32-L38\n```\nfields \u003d {\n        \u0027product_id\u0027: fields.StringField(),\n        \u0027vendor_id\u0027: fields.StringField(),\n        \u0027numa_node\u0027: fields.IntegerField(nullable\u003dTrue),\n        \u0027tags\u0027: fields.DictOfNullableStringsField(),\n        \u0027count\u0027: fields.IntegerField(),\n        }\n```\n\nwe could use a list of pci device instead\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/pci_device.py#L103-L121\n\n```\n fields \u003d {\n        \u0027id\u0027: fields.IntegerField(),\n        \u0027uuid\u0027: fields.UUIDField(),\n        # Note(yjiang5): the compute_node_id may be None because the pci\n        # device objects are created before the compute node is created in DB\n        \u0027compute_node_id\u0027: fields.IntegerField(nullable\u003dTrue),\n        \u0027address\u0027: fields.StringField(),\n        \u0027vendor_id\u0027: fields.StringField(),\n        \u0027product_id\u0027: fields.StringField(),\n        \u0027dev_type\u0027: fields.PciDeviceTypeField(),\n        \u0027status\u0027: fields.PciDeviceStatusField(),\n        \u0027dev_id\u0027: fields.StringField(nullable\u003dTrue),\n        \u0027label\u0027: fields.StringField(nullable\u003dTrue),\n        \u0027instance_uuid\u0027: fields.StringField(nullable\u003dTrue),\n        \u0027request_id\u0027: fields.StringField(nullable\u003dTrue),\n        \u0027extra_info\u0027: fields.DictOfStringsField(default\u003d{}),\n        \u0027numa_node\u0027: fields.IntegerField(nullable\u003dTrue),\n        \u0027parent_addr\u0027: fields.StringField(nullable\u003dTrue),\n    }\n```\n\nbut you woudl end up with 1 per virtual function which is far to largage to return in an notificaiton on an ongoing basis.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":100,"context_line":"---------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"79e0edfc_f3f6fd66","line":103,"updated":"2025-11-20 15:09:36.000000000","message":"ditto I would define the notification payload based on (parts of) the existing ovo https://github.com/openstack/nova/blob/master/nova/objects/pci_device.py#L53 and use the ovo as data source.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":100,"context_line":"---------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"d4e56245_945cf8c6","line":103,"in_reply_to":"79e0edfc_f3f6fd66","updated":"2025-12-01 14:03:23.000000000","message":"Acknowledged","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ea82cfe2_66078977","line":104,"updated":"2025-11-20 15:09:36.000000000","message":"pci alias does not have an object representation today it is defined only as\nAlias \u003d ty.Dict[str, ty.Tuple[str, ty.List[ty.Dict[str, str]]]]\n\nAt least the notification structure should be a bit more precise than that.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"}],"source_content_type":"text/x-rst","patch_set":1,"id":"57cb8500_6610dc21","line":104,"in_reply_to":"574bb881_0567d1fd","updated":"2025-11-25 13:57:26.000000000","message":"yeah moving that to be an ovo make sense at this point.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"}],"source_content_type":"text/x-rst","patch_set":1,"id":"45db8707_6f0090c5","line":104,"in_reply_to":"57cb8500_6610dc21","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"}],"source_content_type":"text/x-rst","patch_set":1,"id":"574bb881_0567d1fd","line":104,"in_reply_to":"ea82cfe2_66078977","updated":"2025-11-21 16:29:02.000000000","message":"it does have a jsonshema however.\n\nhttps://github.com/openstack/nova/blob/master/nova/pci/request.py#L73-L121\n\n```\n_ALIAS_SCHEMA \u003d {\n    \"type\": \"object\",\n    \"additionalProperties\": False,\n    \"properties\": {\n        \"name\": {\n            \"type\": \"string\",\n            \"minLength\": 1,\n            \"maxLength\": 256,\n        },\n        # TODO(stephenfin): This isn\u0027t used anywhere outside of tests and\n        # should probably be removed.\n        \"capability_type\": {\n            \"type\": \"string\",\n            \"enum\": [\u0027pci\u0027],\n        },\n        \"product_id\": {\n            \"type\": \"string\",\n            \"pattern\": utils.PCI_VENDOR_PATTERN,\n        },\n        \"vendor_id\": {\n            \"type\": \"string\",\n            \"pattern\": utils.PCI_VENDOR_PATTERN,\n        },\n        \"device_type\": {\n            \"type\": \"string\",\n            # NOTE(sean-k-mooney): vDPA devices cannot currently be used with\n            # alias-based PCI passthrough so we exclude it here\n            \"enum\": [\n                obj_fields.PciDeviceType.STANDARD,\n                obj_fields.PciDeviceType.SRIOV_PF,\n                obj_fields.PciDeviceType.SRIOV_VF,\n            ],\n        },\n        \"numa_policy\": {\n            \"type\": \"string\",\n            \"enum\": list(obj_fields.PCINUMAAffinityPolicy.ALL),\n        },\n        \"resource_class\": {\n            \"type\": \"string\",\n        },\n        \"traits\": {\n            \"type\": \"string\",\n        },\n        \"live_migratable\": {\n            \"type\": \"string\",\n        },\n    },\n    \"required\": [\"name\"],\n}\n```\nso i woudl be codifying that into an ovo","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"},{"line_number":108,"context_line":"fields:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a0599594_ccce5bf8","line":105,"updated":"2025-11-20 15:09:36.000000000","message":"I\u0027m not sure if we have an object model for that or not","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"},{"line_number":108,"context_line":"fields:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"40d3d1d1_ee86c65e","line":105,"in_reply_to":"5b03caf1_bf75cccb","updated":"2025-12-01 14:03:23.000000000","message":"Acknowledged","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01ae4c2eefbf135c78e1617be82c4c60621fe082","unresolved":true,"context_lines":[{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"},{"line_number":108,"context_line":"fields:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f0888d4_72990a86","line":105,"in_reply_to":"9b99f34f_0746a79c","updated":"2025-11-25 19:13:48.000000000","message":"when Cyborg comes to the picture, shall these information be exposed via Cyborg APIs?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"},{"line_number":108,"context_line":"fields:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5b03caf1_bf75cccb","line":105,"in_reply_to":"9f0888d4_72990a86","updated":"2025-11-25 21:49:11.000000000","message":"i guess there are 2 ways to answer that\n\nin teh context of this spec cyborg does not exist and the notificaiton wont include any cyborg resocues.\n\nbut to your implised quetion of how to discover cyborg resouce then ya you woudl either go to the cyborg api, placment or we woudl have to impelmnt the same in cybrog.\n\nmy understanding is this information is aviabel via the deployables api and or devices api in cybrog\n\nhttps://docs.openstack.org/api-ref/accelerator/#list-devices\nhttps://docs.openstack.org/api-ref/accelerator/#list-deployables","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":102,"context_line":"* numa_topology: the numa topology of the compute node."},{"line_number":103,"context_line":"* pci_devices: a list of pci devices on the compute node."},{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"},{"line_number":108,"context_line":"fields:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9b99f34f_0746a79c","line":105,"in_reply_to":"a0599594_ccce5bf8","updated":"2025-11-21 16:29:02.000000000","message":"we do not.\n\ni actuly dont really want to encode the indevitual mdev more\n\nthe pools of them see below.\n\ni will proably ened up defineing new classes for this rather then ebmdeing them directly in one large object although im not propsoing adotping these in exsitign code as aprt fo this spec to limit scope.\n\n\nthis will be closer to a codifcation of\n\nhttps://github.com/openstack/nova/blob/master/nova/conf/devices.py\n\nin to an ovo  then a new ovo for a specif mdev instnace but i woudl like to alos include the mapping info to the relevent placement resouce provider.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01ae4c2eefbf135c78e1617be82c4c60621fe082","unresolved":true,"context_lines":[{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"},{"line_number":108,"context_line":"fields:"},{"line_number":109,"context_line":"* id: the id of the cell."},{"line_number":110,"context_line":"* VCPUs: the cpus of the cell."}],"source_content_type":"text/x-rst","patch_set":1,"id":"23394811_801ef9f7","line":107,"range":{"start_line":107,"start_character":4,"end_line":107,"end_character":18},"updated":"2025-11-25 19:13:48.000000000","message":"Can it also include PCI devices?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"},{"line_number":108,"context_line":"fields:"},{"line_number":109,"context_line":"* id: the id of the cell."},{"line_number":110,"context_line":"* VCPUs: the cpus of the cell."}],"source_content_type":"text/x-rst","patch_set":1,"id":"39eb6461_1dbf4e51","line":107,"range":{"start_line":107,"start_character":4,"end_line":107,"end_character":18},"in_reply_to":"23394811_801ef9f7","updated":"2025-11-25 21:49:11.000000000","message":"not in this obejct but in the overall notfication yes but see my point above.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":104,"context_line":"* pci_alias: a dictionary of pci alias names to the actual requirements."},{"line_number":105,"context_line":"* mdev_devices: a list of mdev devices on the compute node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The numa_topology field will be a list of cells containing the following"},{"line_number":108,"context_line":"fields:"},{"line_number":109,"context_line":"* id: the id of the cell."},{"line_number":110,"context_line":"* VCPUs: the cpus of the cell."}],"source_content_type":"text/x-rst","patch_set":1,"id":"91c00511_7d8b634d","line":107,"range":{"start_line":107,"start_character":4,"end_line":107,"end_character":18},"in_reply_to":"39eb6461_1dbf4e51","updated":"2025-12-01 14:03:23.000000000","message":"Acknowledged","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":138,"context_line":"   device is assigned to each instance we could return the devices i think"},{"line_number":139,"context_line":"   we get that from the instance notification already so i suspect the"},{"line_number":140,"context_line":"   actual assignment info will not be required just the capacity and usage"},{"line_number":141,"context_line":"   of the pool."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The pci_devices field will contain the following fields:"},{"line_number":144,"context_line":"* vendor_id: the vendor id of the pci device."}],"source_content_type":"text/x-rst","patch_set":1,"id":"75d429a0_4a70df30","line":141,"updated":"2025-11-20 15:09:36.000000000","message":"I dont see any PCI device allocation data in our instance notifications https://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py\n\nIn general what is in the notification is closer to what is available on the API and not what is available internally in nova. Similarly to PCI I don\u0027t see instance numa topology either in the instance notification. So if these information is needed for watcher then the existing instance notifications needs to be extended too.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":138,"context_line":"   device is assigned to each instance we could return the devices i think"},{"line_number":139,"context_line":"   we get that from the instance notification already so i suspect the"},{"line_number":140,"context_line":"   actual assignment info will not be required just the capacity and usage"},{"line_number":141,"context_line":"   of the pool."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The pci_devices field will contain the following fields:"},{"line_number":144,"context_line":"* vendor_id: the vendor id of the pci device."}],"source_content_type":"text/x-rst","patch_set":1,"id":"218a9276_419c4258","line":141,"in_reply_to":"34fbb316_c2707de5","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"01ae4c2eefbf135c78e1617be82c4c60621fe082","unresolved":true,"context_lines":[{"line_number":138,"context_line":"   device is assigned to each instance we could return the devices i think"},{"line_number":139,"context_line":"   we get that from the instance notification already so i suspect the"},{"line_number":140,"context_line":"   actual assignment info will not be required just the capacity and usage"},{"line_number":141,"context_line":"   of the pool."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The pci_devices field will contain the following fields:"},{"line_number":144,"context_line":"* vendor_id: the vendor id of the pci device."}],"source_content_type":"text/x-rst","patch_set":1,"id":"73fed155_39321f10","line":141,"in_reply_to":"4b1da0ec_da5f5f99","updated":"2025-11-25 19:13:48.000000000","message":"I am not familiar on how Watcher works. but from our use cases. We might not need to know which individual vfs/cores on a NUMA cell are assigned to which VMs\nHowever, knowing how MANY vfs/cores on a NUMA cell are assigned to which VMs is demanding.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":138,"context_line":"   device is assigned to each instance we could return the devices i think"},{"line_number":139,"context_line":"   we get that from the instance notification already so i suspect the"},{"line_number":140,"context_line":"   actual assignment info will not be required just the capacity and usage"},{"line_number":141,"context_line":"   of the pool."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The pci_devices field will contain the following fields:"},{"line_number":144,"context_line":"* vendor_id: the vendor id of the pci device."}],"source_content_type":"text/x-rst","patch_set":1,"id":"34fbb316_c2707de5","line":141,"in_reply_to":"73fed155_39321f10","updated":"2025-11-25 21:49:11.000000000","message":"right its bsically the deltat between the numa constratits and the numa pinning.\n\nthe scheduler only partly build a numa topology blob form the flavor/image which effectively translate to  \"give me 8 cores over 2 numa node with 1 VF on phsenet\u003dpublic\" i.e. the numa constraits.\n\nwe deterim if a host passes int eh filter by seeing if we can fulfill that request by calculating a valid cpu pining and device assignment but effeictly that a counting exersie of checkign if there are enoch free resouces.\n\n\nto for wathcer or any other external scheduler to function we need a sumamry of the resource that are aviable\n\nso either just the count of free resouce or total and used.\n\n\nfor simple vms the with no device assingemnt of numa features placment provide that already.\n\nfor evething else however we cant actully do any of that validation and have to just hope the 1 host we caluate has enough resouces or the scdhuler will reject the clod/live migration\n\nthe tl;dr is we need a similar view of the hsot as the nova schduler which operats on a smurised viw of the pci device\n\nwe proably will want a very slightly diffent stucture since it woudl be nice to include the placement uuid or resouce class which im not sure are incldued today.\n\nthe host numa obejct i think we can use directly.\nbut im thinking ill propose a new pci_summary object instead for this usecase.\ni could perhasp extend the pci_pool obejct but im trying to minimse the impact of the rest of nova.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":138,"context_line":"   device is assigned to each instance we could return the devices i think"},{"line_number":139,"context_line":"   we get that from the instance notification already so i suspect the"},{"line_number":140,"context_line":"   actual assignment info will not be required just the capacity and usage"},{"line_number":141,"context_line":"   of the pool."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The pci_devices field will contain the following fields:"},{"line_number":144,"context_line":"* vendor_id: the vendor id of the pci device."}],"source_content_type":"text/x-rst","patch_set":1,"id":"a4776408_c39d6b02","line":141,"in_reply_to":"75d429a0_4a70df30","updated":"2025-11-21 16:29:02.000000000","message":"the InstanceNUMACell and InstancePCIRequest i tough were included in the isntace paylookd as i was expecting to see the reqqust spec in that.\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/instance_pci_requests.py#L22\nhttps://github.com/openstack/nova/blob/master/nova/objects/instance_numa.py#L32\nhttps://github.com/openstack/nova/blob/master/nova/notifications/objects/request_spec.py#L24\n\nthe resqst spec is part of the ComputeTaskPayload\n\nhttps://github.com/openstack/nova/blob/master/nova/notifications/objects/compute_task.py#L38\nbut that is only sent on error apprently\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/utils.py#L1033\n\ni tought that might be sent when a vm boots as well.\nsending that noticiaton on succesful complete of tasks woudl be nice but i dont knwo how other feel about that.\n\n\n\n\ni do see the request_id for the pci request but your right numa nad pci requests are not part of the payload.\n\nhttps://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py#L115\n\nbut im not sure we need to include the InstanceNUMACell or  as aprt fo this work. i do not really want the new notification ot really focus on data about the instances. im considering puting\na list of instance uuids in the payload but that was about it.\n\neven if tehy are not included today what i really need to know are computable form the flavor extra spec and the embedded flavor is part of the payload.\nhttps://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py#L88\n\n\n\nthe problem that this info about the pools or pci device helps me solve is given the request in the flavor/ports which host can we move it to.\n\nultimately the correct way to adress this long term is to cahnge the nova api so that i can get the placement request for a given vm + perhaps a set of candiate thos form the schdluer. so that i can either ask placement form the allcation candate via the query template\n\nor i can consier the N candates that the scuer retred if we were to have effectivly a dry run type of api that took either a existing instnace or a project,flavor,image triple.\n\n\nthat coudl be nice to have in the future but i dont think its practical to desgin and impelmnt that this cycle so this psec focus on a minimal feature that can allow us to do some of this on watcher side whiel we fitoure out if and how to make nova mroe freidly to external schduer in a seprate propaosl after this mvp is compelte.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":138,"context_line":"   device is assigned to each instance we could return the devices i think"},{"line_number":139,"context_line":"   we get that from the instance notification already so i suspect the"},{"line_number":140,"context_line":"   actual assignment info will not be required just the capacity and usage"},{"line_number":141,"context_line":"   of the pool."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The pci_devices field will contain the following fields:"},{"line_number":144,"context_line":"* vendor_id: the vendor id of the pci device."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4b1da0ec_da5f5f99","line":141,"in_reply_to":"a4776408_c39d6b02","updated":"2025-11-25 13:57:26.000000000","message":"\u003e the resqst spec is part of the ComputeTaskPayload\n\n\nThe request_spec is also in the SelectDestinationsNotification. But indeed not in any of the normal instance payloads. Neither any instance Numa or PCI information.\n\n\u003e i do see the request_id for the pci request but your right numa nad pci requests are not part of the payload.\n\u003e https://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py#L115\n\nThe request_id is not the PCI request_id but the overall API request_id. See how it is get filled in:\n\nhttps://github.com/openstack/nova/blob/23b462d77df1a1d09c43d0918bca853ef3af1e3f/nova/notifications/objects/instance.py#L132-L137\n\n\u003e but im not sure we need to include the InstanceNUMACell or as aprt fo this work. i do not really want the new notification ot really focus on data about the instances. im considering puting\na list of instance uuids in the payload but that was about it.\n\n\u003e even if tehy are not included today what i really need to know are computable form the flavor extra spec and the embedded flavor is part of the payload.\nhttps://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py#L88\n\n\u003e the problem that this info about the pools or pci device helps me solve is given the request in the flavor/ports which host can we move it to.\n\nI have limited context how watcher works. For me it seems strange that we need to tell PCI inventory and NUMA topology to watcher but watcher does not need the same level of information about the instance\u0027s PCI and NUMA usage. Anyhow if not needed then it is fine that nova does not send the allocation / usage. If watcher would eventually need it then I suggest to start including PciDevices and InstanceNUMATopology fields to the **instance** notifications. \n\nI\u0027m fine emitting PCI pooling information independently from the instance notifications into the resource notification.\n\nAlso if request spec is needed I\u0027m fine if we start including that to instance notifications. It is just strange to me the watcher rather needs the request_spec than the actual allocation resulted from it. But again I\u0027m low on watcher context :)","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e26903c86160df67e7e6cde174146bdefb4e7d6","unresolved":true,"context_lines":[{"line_number":171,"context_line":"------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"We could extend the hypervisors api to expose numa topology and device"},{"line_number":174,"context_line":"information and the pci alias mappings. however that would require doing"},{"line_number":175,"context_line":"several cell db lookups for each compute node to build the full picture."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"We could complete numa in placement and pci in placement for nics but likely"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ddc6bf97_b94f86d7","line":174,"range":{"start_line":174,"start_character":40,"end_line":174,"end_character":47},"updated":"2025-11-21 16:31:14.000000000","message":"\"However\"\n\n...Could you maybe just use a tool to spell/grammar check this whole thing please?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":171,"context_line":"------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"We could extend the hypervisors api to expose numa topology and device"},{"line_number":174,"context_line":"information and the pci alias mappings. however that would require doing"},{"line_number":175,"context_line":"several cell db lookups for each compute node to build the full picture."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"We could complete numa in placement and pci in placement for nics but likely"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9c1b8a6c_f87811aa","line":174,"range":{"start_line":174,"start_character":40,"end_line":174,"end_character":47},"in_reply_to":"d0ea867b_19d7bc15","updated":"2025-11-25 22:48:55.000000000","message":"Done i think. ill do another pass again tomrrow.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":171,"context_line":"------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"We could extend the hypervisors api to expose numa topology and device"},{"line_number":174,"context_line":"information and the pci alias mappings. however that would require doing"},{"line_number":175,"context_line":"several cell db lookups for each compute node to build the full picture."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"We could complete numa in placement and pci in placement for nics but likely"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d0ea867b_19d7bc15","line":174,"range":{"start_line":174,"start_character":40,"end_line":174,"end_character":47},"in_reply_to":"ddc6bf97_b94f86d7","updated":"2025-11-25 21:49:11.000000000","message":"i said i would in my first responce that why i set -w\n\nhttps://review.opendev.org/c/openstack/nova-specs/+/967712/comment/d35ef095_996a53c5/\n\ni tought i had done it for this spec but i evidently confused that with my other specs.\n\ni did do several reviesion like i always do locally but that take me a long time nor is it a simple ask for me to do it.\n\nai helps alot with this so its less of an ask then in the past but its still not easy or quick.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"this avoid changing the virt driver api but also allows us to not implement"},{"line_number":191,"context_line":"it for drivers like ironic where the compute node is allocated as a non"},{"line_number":192,"context_line":"divisible unit."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"REST API impact"},{"line_number":195,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7bfc2250_eb506d54","line":192,"updated":"2025-11-20 15:09:36.000000000","message":"This can be done based on [DEFAULT]compute_driver.\nThis can be then a virt driver capability as well. \nOr we can simply ignore it from the impl perspective and let the user enable it for computes where it make sense.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e26903c86160df67e7e6cde174146bdefb4e7d6","unresolved":true,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"this avoid changing the virt driver api but also allows us to not implement"},{"line_number":191,"context_line":"it for drivers like ironic where the compute node is allocated as a non"},{"line_number":192,"context_line":"divisible unit."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"REST API impact"},{"line_number":195,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fd2fd1a9_c7ed6ff0","line":192,"in_reply_to":"7bfc2250_eb506d54","updated":"2025-11-21 16:31:14.000000000","message":"I guess I\u0027m not sure why this is a driver-dependent thing. Can you explain more here? It is just because you want to not send this notification in cases where a driver doesn\u0027t support the hardware (NUMA, PCI, etc) that would have interesting data in the notification? Personally, I\u0027d just let the operator not enable it if it doesn\u0027t contain interesting info and not pre-decide that and/or make it non-obvious why it\u0027s being ignored in some cases.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"this avoid changing the virt driver api but also allows us to not implement"},{"line_number":191,"context_line":"it for drivers like ironic where the compute node is allocated as a non"},{"line_number":192,"context_line":"divisible unit."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"REST API impact"},{"line_number":195,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"daede951_532dfea2","line":192,"in_reply_to":"7bfc2250_eb506d54","updated":"2025-11-21 16:29:02.000000000","message":"ya so i tought baout that and i know we dont generally like adding conditionsl based on [DEFAULT]compute_driver. in the compute manger.\n\nthat is eiaser to grock as woudl be a compute capablity flag\n\nif folks are ok with either of your suggestsion that works for me.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f42d9ccd46711ae0bfec0464c738940af872e143","unresolved":true,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"this avoid changing the virt driver api but also allows us to not implement"},{"line_number":191,"context_line":"it for drivers like ironic where the compute node is allocated as a non"},{"line_number":192,"context_line":"divisible unit."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"REST API impact"},{"line_number":195,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f7bf0c4b_44782691","line":192,"in_reply_to":"958ce1c7_de8a0488","updated":"2025-11-25 14:56:25.000000000","message":"\u003e any input on\n\nNot sure if there was more to be said here?\n\nEither way, can you just explain why it\u0027s even problematic for ironic? Is it just because of the N-nodes-1-compute thing?","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40eb6724042f049770a01195181e0c92666c6947","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"this avoid changing the virt driver api but also allows us to not implement"},{"line_number":191,"context_line":"it for drivers like ironic where the compute node is allocated as a non"},{"line_number":192,"context_line":"divisible unit."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"REST API impact"},{"line_number":195,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fb32ab07_4ebf5fc7","line":192,"in_reply_to":"e22f0d3e_ce5adce9","updated":"2025-11-25 22:48:55.000000000","message":"Acknowledged","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"this avoid changing the virt driver api but also allows us to not implement"},{"line_number":191,"context_line":"it for drivers like ironic where the compute node is allocated as a non"},{"line_number":192,"context_line":"divisible unit."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"REST API impact"},{"line_number":195,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e22f0d3e_ce5adce9","line":192,"in_reply_to":"f7bf0c4b_44782691","updated":"2025-11-25 21:49:11.000000000","message":"yes its just the 1-n thing and the fact that most of the data i wanted to return does not exizt for ironic.\n\nif we were returning partial object i guess that would be fine.\n\nthe filed would just be nullable and empty.\n\ni also dont currently have a usecase that need this for anything other than the libvirt driver so i wanted to focus on that.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f0975afbb0b197c67a78af1676404a9b83bd96e1","unresolved":true,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"this avoid changing the virt driver api but also allows us to not implement"},{"line_number":191,"context_line":"it for drivers like ironic where the compute node is allocated as a non"},{"line_number":192,"context_line":"divisible unit."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"REST API impact"},{"line_number":195,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"958ce1c7_de8a0488","line":192,"in_reply_to":"fd2fd1a9_c7ed6ff0","updated":"2025-11-21 17:54:10.000000000","message":"that and i was slightly worried how this woudl work i nthe ironci case.\n\nif we are fine with just saying\n\ndonot urn this on if there is noting useful form this compute service thin ill jsut simplfy it.\n\n\nany input on","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"We can enable this in the nova alt config job using the log notification"},{"line_number":294,"context_line":"driver and just assert that we see it in the logs. but we likely wont"},{"line_number":295,"context_line":"implement this in the alt config job as an assert or post playbook."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dc7db493_8a37d018","line":295,"updated":"2025-11-20 15:09:36.000000000","message":"Yeah we had a dream of having a small notification client built into tempest and used to assert the incoming notifications. But it never materialized. So I won\u0027t ask for it here either. The notification sample functional tests should be enough as a first step to cover this. Once we have a real user for these notification, like watcher, we can have and end-to-end tempest scenario test where the scenario only works if the nova notifications are received by watcher and containing the valid data.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"We can enable this in the nova alt config job using the log notification"},{"line_number":294,"context_line":"driver and just assert that we see it in the logs. but we likely wont"},{"line_number":295,"context_line":"implement this in the alt config job as an assert or post playbook."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"56cdb659_c68eb8b1","line":295,"in_reply_to":"14b3edca_9de21eee","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"We can enable this in the nova alt config job using the log notification"},{"line_number":294,"context_line":"driver and just assert that we see it in the logs. but we likely wont"},{"line_number":295,"context_line":"implement this in the alt config job as an assert or post playbook."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e8114494_8a7b223f","line":295,"in_reply_to":"c88ebf7f_bac76ab6","updated":"2025-11-25 13:57:26.000000000","message":"I OK to have the log driver approach top of the functional tests.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e26903c86160df67e7e6cde174146bdefb4e7d6","unresolved":true,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"We can enable this in the nova alt config job using the log notification"},{"line_number":294,"context_line":"driver and just assert that we see it in the logs. but we likely wont"},{"line_number":295,"context_line":"implement this in the alt config job as an assert or post playbook."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c88ebf7f_bac76ab6","line":295,"in_reply_to":"dc7db493_8a37d018","updated":"2025-11-21 16:31:14.000000000","message":"I like the idea of enabling the log driver for a job regardless, and especially here it seems useful.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"We can enable this in the nova alt config job using the log notification"},{"line_number":294,"context_line":"driver and just assert that we see it in the logs. but we likely wont"},{"line_number":295,"context_line":"implement this in the alt config job as an assert or post playbook."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2d561a07_192ffeca","line":295,"in_reply_to":"dc7db493_8a37d018","updated":"2025-11-21 16:29:02.000000000","message":"i considered proposing we port your\n\nhttps://github.com/gibizer/nova-notification-demo/blob/master/ws_forwarder.py\n\ninto the nova devstack plugin to allow provide a rest api endpoint or somethign that would allow tempest to call it to check that the event was recived.\n\nthat felt a littel to compelx for me to commit to in the spec.\n\nwhat i was thinking was maybe ill extend one of the post playbooks with a simple grep of the nova-comptue log and jsut assert that we see the notificion class in the logs to show it was sent.\n\nthat seam doable but i was hopign we were fine with waiting for watcher or simialr to consume for intetration level testign beyond that.\n\nit sound like you are ok with that approch.\n\nfor me as i wrote the minimum testing we shoud expect is unit/fucntional covert and turning it on in a job to show it does not explode when enabled.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"We can enable this in the nova alt config job using the log notification"},{"line_number":294,"context_line":"driver and just assert that we see it in the logs. but we likely wont"},{"line_number":295,"context_line":"implement this in the alt config job as an assert or post playbook."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"14b3edca_9de21eee","line":295,"in_reply_to":"e8114494_8a7b223f","updated":"2025-11-25 21:49:11.000000000","message":"cool ill update it to say that more directly.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"180c1d59872c37ab6a8db8546135bdcd5a34841c","unresolved":true,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Minimal, the primary documentation will be via the release note and config"},{"line_number":302,"context_line":"option help text. A minimal addition to the install guide or admin guide may"},{"line_number":303,"context_line":"be made if a suitable section is identified."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"References"},{"line_number":306,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"63954c14_478a49de","line":303,"updated":"2025-11-20 15:09:36.000000000","message":"There will be notification sample added and that will be automatically included in our doc","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d452e847eb7099d01137379b35a5d9f6a2531326","unresolved":true,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Minimal, the primary documentation will be via the release note and config"},{"line_number":302,"context_line":"option help text. A minimal addition to the install guide or admin guide may"},{"line_number":303,"context_line":"be made if a suitable section is identified."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"References"},{"line_number":306,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f5bfbd1f_ca2b0100","line":303,"in_reply_to":"2b15b53a_c4013623","updated":"2025-11-25 21:49:11.000000000","message":"oh ya that broken.\n\ni guess i shoud add that to the work items or list it here.\n\nthat more a bug but we shoudl fix it in any case.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8da00e43148508378e15d776614cfd15e0c5c630","unresolved":true,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Minimal, the primary documentation will be via the release note and config"},{"line_number":302,"context_line":"option help text. A minimal addition to the install guide or admin guide may"},{"line_number":303,"context_line":"be made if a suitable section is identified."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"References"},{"line_number":306,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bd94cc5e_87ed0df6","line":303,"in_reply_to":"63954c14_478a49de","updated":"2025-11-21 16:29:02.000000000","message":"ack ya i was not really sure how extensive our existign docs for notifcaton are\nand where best to put thsi but your right there woudl be a notifciation sample indeed.","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d05f92e4498e4fb7e5c306f5dcf7a5687fec23b4","unresolved":true,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Minimal, the primary documentation will be via the release note and config"},{"line_number":302,"context_line":"option help text. A minimal addition to the install guide or admin guide may"},{"line_number":303,"context_line":"be made if a suitable section is identified."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"References"},{"line_number":306,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2b15b53a_c4013623","line":303,"in_reply_to":"bd94cc5e_87ed0df6","updated":"2025-11-25 13:57:26.000000000","message":"When you are at it could you please fix the UI of the notification sample doc? At some point the UI template changed and now the doc renders the sample content centered which makes the tabbed data unreadable.\n\nhttps://docs.openstack.org/nova/latest/reference/notifications.html","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Minimal, the primary documentation will be via the release note and config"},{"line_number":302,"context_line":"option help text. A minimal addition to the install guide or admin guide may"},{"line_number":303,"context_line":"be made if a suitable section is identified."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"References"},{"line_number":306,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"472a370c_3b96cd62","line":303,"in_reply_to":"f5bfbd1f_ca2b0100","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"3a20bf0f61312183de538a45b88c1486146df20e"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"4b506e1076bb1272cd38389a63e614b4f92294fb","unresolved":true,"context_lines":[{"line_number":78,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":79,"context_line":"the final resource view is reported to the scheduler."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":82,"context_line":"will be rate-limited so that it is only sent if it has changed since the last"},{"line_number":83,"context_line":"notification or if a minimum interval has passed since the last notification."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"The minimum interval or time to live for the notification will be"},{"line_number":86,"context_line":"configurable to allow external systems to re-sync if a notification is missed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"37dca31f_e6d52b8c","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":77},"updated":"2025-11-26 17:18:30.000000000","message":"If the openstack has been running for half year, how can a 3rd party service understnd the current state of the topology when it just starts to listen to the message queue?","commit_id":"6ebc0fe118a430522b5659f97c44384ce2c5b767"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e24c0528d1157d9fec13333f15690855fb684b72","unresolved":true,"context_lines":[{"line_number":78,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":79,"context_line":"the final resource view is reported to the scheduler."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":82,"context_line":"will be rate-limited so that it is only sent if it has changed since the last"},{"line_number":83,"context_line":"notification or if a minimum interval has passed since the last notification."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"The minimum interval or time to live for the notification will be"},{"line_number":86,"context_line":"configurable to allow external systems to re-sync if a notification is missed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e648d4cd_13ed706c","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":77},"in_reply_to":"37dca31f_e6d52b8c","updated":"2025-11-26 20:08:39.000000000","message":"i can clarify this btu the propsoal is to send the fulll\nnotifcion at least once an hour even if there is no change.\n\n\nhowever since it was sugested that i use a seprate perodic  instead of update_aviable_resouces you will be able to select how often it can run and how long to wait before sending the same obejct even if there is not change\n\nwe coudl simplfy it even mroe and remov the caching entrily and only send it on a long interval as well","commit_id":"6ebc0fe118a430522b5659f97c44384ce2c5b767"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36a0f7a444e92e3b6a5d580ac18ee22aba26a7ae","unresolved":false,"context_lines":[{"line_number":78,"context_line":"resources have been updated by the driver at approximately the same time as"},{"line_number":79,"context_line":"the final resource view is reported to the scheduler."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"The new notification will only be available as a versioned notification and"},{"line_number":82,"context_line":"will be rate-limited so that it is only sent if it has changed since the last"},{"line_number":83,"context_line":"notification or if a minimum interval has passed since the last notification."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"The minimum interval or time to live for the notification will be"},{"line_number":86,"context_line":"configurable to allow external systems to re-sync if a notification is missed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5197aa8b_84180550","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":77},"in_reply_to":"e648d4cd_13ed706c","updated":"2025-12-01 14:03:23.000000000","message":"Done","commit_id":"6ebc0fe118a430522b5659f97c44384ce2c5b767"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8128bd549028b0c3168b0a75631d901c8b4d110a","unresolved":true,"context_lines":[{"line_number":46,"context_line":"on compute nodes, or to discover how those resources can be requested by a"},{"line_number":47,"context_line":"guest (for example, how a PCI alias name maps to the actual resource"},{"line_number":48,"context_line":"requirements)."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Use Cases"},{"line_number":51,"context_line":"---------"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"86067027_23f8b013","line":49,"updated":"2025-12-02 16:53:10.000000000","message":"all of the above is understandable but *why* do we need Nova to emit notifications for getting all of the resource knowledge ?\nWhy couldn\u0027t it be something like an API for example ?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6016ada4f4927e3a2eb7756c9a7fd97807d86bc4","unresolved":true,"context_lines":[{"line_number":46,"context_line":"on compute nodes, or to discover how those resources can be requested by a"},{"line_number":47,"context_line":"guest (for example, how a PCI alias name maps to the actual resource"},{"line_number":48,"context_line":"requirements)."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Use Cases"},{"line_number":51,"context_line":"---------"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"c8c89b20_5ddb0af2","line":49,"in_reply_to":"86067027_23f8b013","updated":"2025-12-02 19:03:48.000000000","message":"we discussed that as one of the options in the brainstorming session at the PTG before i created a spec precisely to to make sure that the notification approach was acceptable and the direction to take.\n\nwe could have an API or many new APIs which i have mentioned in the alternative but all of them are significantly more invasive requiring new RPC calls or multiple cell db queries.\n\none approach i floated was providing a API that would return something equivalent to the host state objects since the intent of this spec is to allow an external solution to effectively replace the scheduler and calculate the placement of many vms into the future. to do that effectivly we also need some summerised view of the request spec which we can mostly reconstruct form the instance show responce now that we inlcude image properties and flavor extra spec in the responce as well as the pinned az info.\n\nthat might work for watcher but the host state object dont know about what devices are assigned to each instance which while not strictly required for watcher apparently si require fo li liu\u0027s uscase.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":46,"context_line":"on compute nodes, or to discover how those resources can be requested by a"},{"line_number":47,"context_line":"guest (for example, how a PCI alias name maps to the actual resource"},{"line_number":48,"context_line":"requirements)."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Use Cases"},{"line_number":51,"context_line":"---------"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"33c21d4d_e44c69d1","line":49,"in_reply_to":"c8c89b20_5ddb0af2","updated":"2025-12-04 15:15:27.000000000","message":"resolving as there is no actiobale feedback.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8128bd549028b0c3168b0a75631d901c8b4d110a","unresolved":true,"context_lines":[{"line_number":62,"context_line":"As a Watcher developer, I want to consume a stream of versioned Nova resource"},{"line_number":63,"context_line":"notifications to maintain a near real-time model of cloud resources and"},{"line_number":64,"context_line":"topology so that I can avoid heavy polling of Placement and hypervisor APIs"},{"line_number":65,"context_line":"to rebuild the full state of all compute nodes."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As a Nova developer and operator, I want resource notifications to expose the"},{"line_number":68,"context_line":"necessary and sufficient information external systems need to build an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"37976d79_26d29ffd","line":65,"updated":"2025-12-02 16:53:10.000000000","message":"why do you want Watcher to consume a stream of notifications ? This is not a usecase, that\u0027s a design solution IMHO.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6016ada4f4927e3a2eb7756c9a7fd97807d86bc4","unresolved":true,"context_lines":[{"line_number":62,"context_line":"As a Watcher developer, I want to consume a stream of versioned Nova resource"},{"line_number":63,"context_line":"notifications to maintain a near real-time model of cloud resources and"},{"line_number":64,"context_line":"topology so that I can avoid heavy polling of Placement and hypervisor APIs"},{"line_number":65,"context_line":"to rebuild the full state of all compute nodes."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As a Nova developer and operator, I want resource notifications to expose the"},{"line_number":68,"context_line":"necessary and sufficient information external systems need to build an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bbc104e2_39b3daca","line":65,"in_reply_to":"37976d79_26d29ffd","updated":"2025-12-02 19:03:48.000000000","message":"as a wtacher developer i woudl liek to extend teh exising integration point betwen watcher and nova instead of creating another one. today that consuming notificaion as they cme or polling the nova rest api once an hour.\n\ni proposed the notification because its the smallest possible change to nova and watcher to allow us to build on the exsing integration for notificaions.\n\nThis is the priarmy way that watcher is desigiend to update its internal data model in respocne to new workloads or move opertions done by an admin or enduse.\n\nit consumes nova and cinder notificiaons to update an in memory model of the resource manage by both services and then has a peroidc collector that runs once an hour to heal its data model with some addition information.\n\nso this proposal is guided by the exiting way that watcher get information about\nnova resources like vms.\n\nwe recive the following notifications form nova today\n\n```\n   notification_mapping \u003d {\n        \u0027instance.create.end\u0027: instance_created,\n        \u0027instance.lock\u0027: instance_updated,\n        \u0027instance.unlock\u0027: instance_updated,\n        \u0027instance.pause.end\u0027: instance_updated,\n        \u0027instance.power_off.end\u0027: instance_updated,\n        \u0027instance.power_on.end\u0027: instance_updated,\n        \u0027instance.resize_confirm.end\u0027: instance_updated,\n        \u0027instance.restore.end\u0027: instance_updated,\n        \u0027instance.resume.end\u0027: instance_updated,\n        \u0027instance.shelve.end\u0027: instance_updated,\n        \u0027instance.shutdown.end\u0027: instance_updated,\n        \u0027instance.suspend.end\u0027: instance_updated,\n        \u0027instance.unpause.end\u0027: instance_updated,\n        \u0027instance.unrescue.end\u0027: instance_updated,\n        \u0027instance.unshelve.end\u0027: instance_updated,\n        \u0027instance.rebuild.end\u0027: instance_updated,\n        \u0027instance.rescue.end\u0027: instance_updated,\n        \u0027instance.update\u0027: instance_updated,\n        \u0027instance.live_migration_force_complete.end\u0027: instance_updated,\n        \u0027instance.live_migration_post.end\u0027: instance_updated,\n        \u0027instance.delete.end\u0027: instance_deleted,\n        \u0027instance.soft_delete.end\u0027: instance_deleted,\n        \u0027service.create\u0027: service_updated,\n        \u0027service.delete\u0027: service_deleted,\n        \u0027service.update\u0027: service_updated,\n        }\n```\n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/notification/nova.py#L323-L349\n\n\nwhen we do an audit we use this cached information to inform out decisions by combining it with metrics from a datastore i.e. Prometheus\n\nwatcher has a collector interface where in addition to push notification \nwe can pull data form rest apis \n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py\n\nthat loops over all host aggregates, all compute servcies, and all hyperviors\nand instances to build a view fo all of the nova computes in memory.\n\nas part of that process we alsto have to hits placment\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py#L373\nto enrich the hypervior info with information like the cpu allction ratio\n\nunfortunately that code currently does not know about nested resources providers or \nPCPU to name 2 gaps. those are gaps we shoudl fix in watcher btu even if we fixed them today we could not provide teh info this notificon would be providing without numa in placmeent and finishng the neutron part of pci in placment.\n\nwe will have to improve that in watcher eventually but we will end up making may calls to placment without changing its api. nova could package up the info we need in an api, or we could package up the information nicely in a notification and plug it directly into our exising notification handling logic for updating our in memory model.\n\nthe former directly create new load on teh nova api and cell db. i was hoping the latter woudl only need info already in memory and collected by the update aviable resources periodic \n\ndownstream we overrode that default to run the collectors every 15 minutes but im really concerned that it will not scale to 1000s or even 100s of compute in its current form  at that short an interval.  So while i would love to just be able to use an api for this for exmaple the hyperviors api, im concerned that will be very expensive in the long run.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":62,"context_line":"As a Watcher developer, I want to consume a stream of versioned Nova resource"},{"line_number":63,"context_line":"notifications to maintain a near real-time model of cloud resources and"},{"line_number":64,"context_line":"topology so that I can avoid heavy polling of Placement and hypervisor APIs"},{"line_number":65,"context_line":"to rebuild the full state of all compute nodes."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"As a Nova developer and operator, I want resource notifications to expose the"},{"line_number":68,"context_line":"necessary and sufficient information external systems need to build an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"35bcc850_ffb72c76","line":65,"in_reply_to":"bbc104e2_39b3daca","updated":"2025-12-04 15:15:27.000000000","message":"Acknowledged","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":94,"context_line":"What will not be included in the notification:"},{"line_number":95,"context_line":"* the compute node availability zone or host aggregate membership."},{"line_number":96,"context_line":"* the compute node cell mapping."},{"line_number":97,"context_line":"* anything that requires a database query."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Why?"},{"line_number":100,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1eeaf3e1_c068f185","line":97,"updated":"2025-12-02 14:12:55.000000000","message":"So no lazy load on ovos either? It feels like a tricky restriction. But maybe we can keep it.\n\nWe can ignore this in the spec and get back to it in the impl.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":94,"context_line":"What will not be included in the notification:"},{"line_number":95,"context_line":"* the compute node availability zone or host aggregate membership."},{"line_number":96,"context_line":"* the compute node cell mapping."},{"line_number":97,"context_line":"* anything that requires a database query."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Why?"},{"line_number":100,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"a9973a4d_b3d37707","line":97,"in_reply_to":"1eeaf3e1_c068f185","updated":"2025-12-02 15:15:13.000000000","message":"well we may need to relax this.\n\nim more capturing th intent to avoid this fi possible.\n\ni was orgianlly proposing this as part of the update aviable resouces \nperodic beacysue the isntances for the current hsotare already retrived form the \ndb in the resocue tacker.\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L1004-L1024\n\nso orginally i was going to pass the isntnace and other info into \n\n_report_final_resource_view \n\nhttps://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L1148\n\nand send the notrifciaton form there or more then likely add a ne fucjtion call in\n_update_available_resource roughly where _report_final_resource_view  is to create and send the notifcation.\n\nthe spec now include more instance usage informat thne i orgianly need for my wathcer use case an di still need to confirm\n\nim actully kind fo torn because by having a sperate perodic i need to redo alot of this work so i think im going to revert back to saying it will be part of the update aviable resouces perodic.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":94,"context_line":"What will not be included in the notification:"},{"line_number":95,"context_line":"* the compute node availability zone or host aggregate membership."},{"line_number":96,"context_line":"* the compute node cell mapping."},{"line_number":97,"context_line":"* anything that requires a database query."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Why?"},{"line_number":100,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3b68c042_5e6df0fb","line":97,"in_reply_to":"528e1ae2_f5f080ca","updated":"2025-12-04 15:15:27.000000000","message":"resolving shice thre is no actionable request here.\n\ni agree with the fact its not optimal to have the tight coupling.\n\ni woudl be open to collaberating on a larger desing dicsusion on this in the futur e if there as an apite to adress this but its not in scope fo this spec.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6016ada4f4927e3a2eb7756c9a7fd97807d86bc4","unresolved":true,"context_lines":[{"line_number":94,"context_line":"What will not be included in the notification:"},{"line_number":95,"context_line":"* the compute node availability zone or host aggregate membership."},{"line_number":96,"context_line":"* the compute node cell mapping."},{"line_number":97,"context_line":"* anything that requires a database query."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Why?"},{"line_number":100,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"77686a48_782028f7","line":97,"in_reply_to":"580bfaaf_866aeb12","updated":"2025-12-02 19:03:48.000000000","message":"i need ot be able to schdule a vm with all of the constraint that nova would condier in the schduler.\n\nif i cant do that i can implement load balcancing or consolidation,\nsla enforcement or any other policy that watcher would like todo.\n\nthe primay way that watcher has to mitigate a perframce issue si to live migrate\na workload and to do that effectivly we must specify the destiation host.\nwe cannot leave it to the nova schduler to choose in most case because nova\ndoes not have awrenes of the metics and policy we are trying to enfoce.\n\ntoday i cant schedule instance that have neutron sriov prot for example because there is no public api via nova or palcment to know which host have VFs free on the correct phsynet for vm.\n\ni cant properly schedule intactness with cpu pinning because even if i look at the PCPU inventory in placement i do not want which numa nodes those are free on so i cant determine if the instance could fit.\n\n\neffectively unless i can replicate the behavior fo the nova scheduler in watcher decision engine i cannot effectively develop any no trivial optimisation strategies.\n\nmodeling numa in placement and pci devices associated with neutron phsynets in placement would provide a way for watcher to discoverer this information but\nnova is already grahtering most if not all the information that is missing for watcher in _update_available_resource in the resource tracker\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L1004-L1103\n\nall im really asking for is to extend that function so that we can leverage all the work already done in the nova resouce tracker to update watcher so we can hae a similar view so we can schdel work liek nova does.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":94,"context_line":"What will not be included in the notification:"},{"line_number":95,"context_line":"* the compute node availability zone or host aggregate membership."},{"line_number":96,"context_line":"* the compute node cell mapping."},{"line_number":97,"context_line":"* anything that requires a database query."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Why?"},{"line_number":100,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d2e901a8_28ec9ebf","line":97,"in_reply_to":"77686a48_782028f7","updated":"2025-12-03 17:36:28.000000000","message":"\u003e effectively unless i can replicate the behavior fo the nova scheduler in watcher decision engine i cannot effectively develop any no trivial optimisation strategies.\n\nThis sounds very scary to me. This basically means all the scheduler internals should become external information to support watcher. My immediate reaction is why don\u0027t we share the scheduler itself instead of just sharing the inputs of the scheduler and hoping that watcher\u0027s version of the scheduler logic reach the same conclusion as the nova scheduler. It does not feel sustainable long term. Basically any logic change in the scheduler needs to be replicated to watcher. \n\nSure I know that it is a totally different effort sharing the scheduler as a lib or as a externally callable service than just exposing some nova internal data via a notification. In a short notice the latter is possible but the former probably does not. But I sincerely hope that the former is considered on a longer time frame as I don\u0027t believe maintaining the same scheduler logic in two places is sustainable long term.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8128bd549028b0c3168b0a75631d901c8b4d110a","unresolved":true,"context_lines":[{"line_number":94,"context_line":"What will not be included in the notification:"},{"line_number":95,"context_line":"* the compute node availability zone or host aggregate membership."},{"line_number":96,"context_line":"* the compute node cell mapping."},{"line_number":97,"context_line":"* anything that requires a database query."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Why?"},{"line_number":100,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"580bfaaf_866aeb12","line":97,"in_reply_to":"a9973a4d_b3d37707","updated":"2025-12-02 16:53:10.000000000","message":"\"anything that requires a DB query\" This is a pretty large payload, right?\nAgain, *why* do we need to know all of the DB resources ?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":94,"context_line":"What will not be included in the notification:"},{"line_number":95,"context_line":"* the compute node availability zone or host aggregate membership."},{"line_number":96,"context_line":"* the compute node cell mapping."},{"line_number":97,"context_line":"* anything that requires a database query."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Why?"},{"line_number":100,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"528e1ae2_f5f080ca","line":97,"in_reply_to":"d2e901a8_28ec9ebf","updated":"2025-12-03 20:09:40.000000000","message":"the scarey proposal was the attent to copy the nova fileter direclty into watcher 7 years ago\n\nhttps://review.opendev.org/c/openstack/watcher-specs/+/561640\nhttps://review.opendev.org/c/openstack/watcher/+/569769\n\nso im not saying we shoudl revive gant the project to have a common scheduler for all openstac resources\n\nbut if it was possible ot share the nova scheduler by creating a new rest api or moveing it to say placement i would not be against exploring that if i would not be shot for doing so.\n\nwhen i was ask to look a watcher a year ago i knew that we would have to eventually either move all resource tracking to placmeent or  that we would eventually need to have that conversation about exposing the scheduler as a rest endpoint because without reimpelmting parity in watcher or putting a api in fornt of the scheduler it woudl prevent many of the usecase that i was asked to extend watcher to support.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8128bd549028b0c3168b0a75631d901c8b4d110a","unresolved":true,"context_lines":[{"line_number":100,"context_line":"----"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* the compute node availability zone or host aggregate membership is not"},{"line_number":103,"context_line":"  known by the compute node."},{"line_number":104,"context_line":"* the conductor will not know the compute node cell mapping but the compute"},{"line_number":105,"context_line":"  node does."},{"line_number":106,"context_line":"* database lookups are expensive and this is intended to be a view of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1edc7e6f_5771bc5b","line":103,"updated":"2025-12-02 16:53:10.000000000","message":"why is this a problem if the scheduling query is not done by the compute ?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":100,"context_line":"----"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* the compute node availability zone or host aggregate membership is not"},{"line_number":103,"context_line":"  known by the compute node."},{"line_number":104,"context_line":"* the conductor will not know the compute node cell mapping but the compute"},{"line_number":105,"context_line":"  node does."},{"line_number":106,"context_line":"* database lookups are expensive and this is intended to be a view of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"e5838ab7_cdd35ebc","line":103,"in_reply_to":"1edc7e6f_5771bc5b","updated":"2025-12-03 13:52:41.000000000","message":"wathcer is the entiy doign the sdhcuding and selecting a host for nova to move the instance too.\n\ni am just calling out some thing you might expect to be include but are not because\nthe compute does not have this info.\ni removed this in later revsions so resloving.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":102,"context_line":"* the compute node availability zone or host aggregate membership is not"},{"line_number":103,"context_line":"  known by the compute node."},{"line_number":104,"context_line":"* the conductor will not know the compute node cell mapping but the compute"},{"line_number":105,"context_line":"  node does."},{"line_number":106,"context_line":"* database lookups are expensive and this is intended to be a view of the"},{"line_number":107,"context_line":"  compute node\u0027s resources only. All the required information should be in"},{"line_number":108,"context_line":"  memory or in its local config."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5fbc90b6_a28d24eb","line":105,"updated":"2025-12-02 14:12:55.000000000","message":"really the compute node knows its own cell name? (sure it knows the rabbit URL and that expected to be unique for the cell but that is not really the abstract cell name or cell uuid)","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a284942985cfd99f9443228700c49ce51208bdde","unresolved":true,"context_lines":[{"line_number":102,"context_line":"* the compute node availability zone or host aggregate membership is not"},{"line_number":103,"context_line":"  known by the compute node."},{"line_number":104,"context_line":"* the conductor will not know the compute node cell mapping but the compute"},{"line_number":105,"context_line":"  node does."},{"line_number":106,"context_line":"* database lookups are expensive and this is intended to be a view of the"},{"line_number":107,"context_line":"  compute node\u0027s resources only. All the required information should be in"},{"line_number":108,"context_line":"  memory or in its local config."}],"source_content_type":"text/x-rst","patch_set":5,"id":"48f0692c_d00ced4f","line":105,"in_reply_to":"5fbc90b6_a28d24eb","updated":"2025-12-02 14:51:22.000000000","message":"I think this is reversed in the text from the intent.. the (super)conductor knows, but the compute does not, which is why this is explaining that it won\u0027t be included.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":102,"context_line":"* the compute node availability zone or host aggregate membership is not"},{"line_number":103,"context_line":"  known by the compute node."},{"line_number":104,"context_line":"* the conductor will not know the compute node cell mapping but the compute"},{"line_number":105,"context_line":"  node does."},{"line_number":106,"context_line":"* database lookups are expensive and this is intended to be a view of the"},{"line_number":107,"context_line":"  compute node\u0027s resources only. All the required information should be in"},{"line_number":108,"context_line":"  memory or in its local config."}],"source_content_type":"text/x-rst","patch_set":5,"id":"d36f867f_ce631bb4","line":105,"in_reply_to":"5fbc90b6_a28d24eb","updated":"2025-12-02 15:15:13.000000000","message":"no this an error in redrafting\n\nthe compute does not and should not.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e7c31fe060a2e1b0bad45d90d8242f6031376dd","unresolved":true,"context_lines":[{"line_number":102,"context_line":"* the compute node availability zone or host aggregate membership is not"},{"line_number":103,"context_line":"  known by the compute node."},{"line_number":104,"context_line":"* the conductor will not know the compute node cell mapping but the compute"},{"line_number":105,"context_line":"  node does."},{"line_number":106,"context_line":"* database lookups are expensive and this is intended to be a view of the"},{"line_number":107,"context_line":"  compute node\u0027s resources only. All the required information should be in"},{"line_number":108,"context_line":"  memory or in its local config."}],"source_content_type":"text/x-rst","patch_set":5,"id":"db462ac5_e1e72ac3","line":105,"in_reply_to":"d36f867f_ce631bb4","updated":"2025-12-02 15:17:26.000000000","message":"yes dand is correct. im tryint to explain why it wont be incldue becuase the comptue does not know.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":102,"context_line":"* the compute node availability zone or host aggregate membership is not"},{"line_number":103,"context_line":"  known by the compute node."},{"line_number":104,"context_line":"* the conductor will not know the compute node cell mapping but the compute"},{"line_number":105,"context_line":"  node does."},{"line_number":106,"context_line":"* database lookups are expensive and this is intended to be a view of the"},{"line_number":107,"context_line":"  compute node\u0027s resources only. All the required information should be in"},{"line_number":108,"context_line":"  memory or in its local config."}],"source_content_type":"text/x-rst","patch_set":5,"id":"432b71fb_ffb76f73","line":105,"in_reply_to":"db462ac5_e1e72ac3","updated":"2025-12-03 13:52:41.000000000","message":"Done","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":128,"context_line":"* memory_mb_used: IntegerField"},{"line_number":129,"context_line":"* disk_gb: IntegerField"},{"line_number":130,"context_line":"* disk_gb_used: IntegerField"},{"line_number":131,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"167c5293_5e3c9060","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":24},"updated":"2025-12-02 14:12:55.000000000","message":"Is it easy to decide if the instance directory is on nfs?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a284942985cfd99f9443228700c49ce51208bdde","unresolved":true,"context_lines":[{"line_number":128,"context_line":"* memory_mb_used: IntegerField"},{"line_number":129,"context_line":"* disk_gb: IntegerField"},{"line_number":130,"context_line":"* disk_gb_used: IntegerField"},{"line_number":131,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"be7783da_25013372","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":24},"in_reply_to":"167c5293_5e3c9060","updated":"2025-12-02 14:51:22.000000000","message":"Technically, yes:\n\nhttps://man7.org/linux/man-pages/man2/statfs.2.html\n\nNot sure how that makes it through a bind mount if nova-compute is running in a container though. Either way, I guess I\u0027m not sure this is the best idea for us to try to report this \"guess\" as it could be quite non-obvious if it\u0027s really shared. We could have our own non-shared storage NFS-mounted, or we could be a single compute node in an edge site with a dedicated ceph.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":128,"context_line":"* memory_mb_used: IntegerField"},{"line_number":129,"context_line":"* disk_gb: IntegerField"},{"line_number":130,"context_line":"* disk_gb_used: IntegerField"},{"line_number":131,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b4369b5b_835c875b","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":24},"in_reply_to":"167c5293_5e3c9060","updated":"2025-12-02 15:15:13.000000000","message":"initally i was only going to set shared if it was RBD\n\nbut yes i think we can trivially check the mount point of \n\nwe can use df for example \n\n```\ndf -T\nFilesystem                       Type     1K-blocks     Used Available Use% Mounted on\nudev                             devtmpfs  48747916        0  48747916   0% /dev\ntmpfs                            tmpfs      9755468     2004   9753464   1% /run\n/dev/mapper/rhel_hibernal01-root ext4     123268672 39083396  77877436  34% /\ntmpfs                            tmpfs     48777320      228  48777092   1% /dev/shm\nefivarfs                         efivarfs       304      128       172  43% /sys/firmware/efi/efivars\ntmpfs                            tmpfs         5120        0      5120   0% /run/lock\ntmpfs                            tmpfs     48777324       16  48777308   1% /tmp\n/dev/sdb2                        ext4        996780   192440    735528  21% /boot\n/dev/mapper/rhel_hibernal01-home ext4     205314024  4008380 190803500   3% /home\n/dev/mapper/rhel_hibernal01-opt  ext4     112478484  3778920 102939772   4% /opt\n/dev/sdb1                        vfat        613160    11708    601452   2% /boot/efi\ntmpfs                            tmpfs         1024        0      1024   0% /run/credentials/getty@tty1.service\ntmpfs                            tmpfs         1024        0      1024   0% /run/credentials/systemd-journald.service\ntmpfs                            tmpfs       524288   125028    399260  24% /opt/stack/data/etcd\ntmpfs                            tmpfs      9755464       12   9755452   1% /run/user/1000\n```\n\n`findmnt findmnt -T /var/lib/nova -o FSTYPE -n`\n\ni coudl remove this but the reason thsi is here si to solve the problem we have with the hyperviors api where all host with rbd sotrage report the same storage.\n\na better way to do that might be instead to report the FSID\nwhich we can do with stat\n\nstat -f -c \u0027FSID: %i Type: %T Device: %D\u0027 /opt/stack\nFSID: f5e76a29f979477e Type: ext2/ext3 Device: ?\n\nthis info is return by https://man.archlinux.org/man/statfs.2.en\n\nlong term i woudl like to evenutally auto add conpute nodes to placement aggreate based on FSID so that we can properly supprot mixed envs where some host have images_type\u003drbd and we need to live migrate to a host on the same ceph cluster os for that i do need the fsid instead but this is a nice to have currently.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"821c3a1b70de9f2dbd6f4014bdd761366f5cca5e","unresolved":false,"context_lines":[{"line_number":128,"context_line":"* memory_mb_used: IntegerField"},{"line_number":129,"context_line":"* disk_gb: IntegerField"},{"line_number":130,"context_line":"* disk_gb_used: IntegerField"},{"line_number":131,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba49cfed_a589bf0d","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":24},"in_reply_to":"464e914c_ff746605","updated":"2025-12-04 15:46:39.000000000","message":"dan clarifed on irc that stroage_type can be missleading but the fsi is somethign we can report as we can discover that or declar it in a file\nbut we cant know if storage is shared just becasue its a nfs mount.\n\nill resolve this for now and remvoe storage_type but keep storage_fsid in teh next revsion","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6016ada4f4927e3a2eb7756c9a7fd97807d86bc4","unresolved":true,"context_lines":[{"line_number":128,"context_line":"* memory_mb_used: IntegerField"},{"line_number":129,"context_line":"* disk_gb: IntegerField"},{"line_number":130,"context_line":"* disk_gb_used: IntegerField"},{"line_number":131,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d651d224_de21bb7e","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":24},"in_reply_to":"b4369b5b_835c875b","updated":"2025-12-02 19:03:48.000000000","message":"i was orgianlly going to just report shared for image_type\u003drbd and then i added nfs as an after tought.\n\nwoudl folks prefer if i removed it entirly for now.\nthis is here to mitigate the issue with the hyperviors api where i can tell if the host is suign share or local storage but i could jsut put that out of scope for this proposal.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":true,"context_lines":[{"line_number":128,"context_line":"* memory_mb_used: IntegerField"},{"line_number":129,"context_line":"* disk_gb: IntegerField"},{"line_number":130,"context_line":"* disk_gb_used: IntegerField"},{"line_number":131,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"464e914c_ff746605","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":24},"in_reply_to":"d651d224_de21bb7e","updated":"2025-12-04 15:15:27.000000000","message":"im not seeing any clear feedback one way or another so ill resolve this for now.\n\nthis is a nice to have as i called out in the note so we can defer this to a future release if needed.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a284942985cfd99f9443228700c49ce51208bdde","unresolved":true,"context_lines":[{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"PciAlias"},{"line_number":138,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"55c7f875_6d55cd32","line":135,"updated":"2025-12-02 14:51:22.000000000","message":"This is feeling insanely massive to me at this point.. This is almost a DB snapshot... I thought this was supposed to be a resource summary, and if someone needed the instance info, they\u0027d look for those existing notifications and/or query the API for them?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a8b9a3cc2d87f2a929cc5cc962f365e7e765ca80","unresolved":true,"context_lines":[{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"PciAlias"},{"line_number":138,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9310788e_e1829e84","line":135,"in_reply_to":"55c7f875_6d55cd32","updated":"2025-12-02 15:19:52.000000000","message":"orgianly for the wathcer usecase i didn not need the assignement info\nso the size has increased to capture that\n\nmy orignal proposal only incldued the list of instance uuids on the host and no other isntance info.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8128bd549028b0c3168b0a75631d901c8b4d110a","unresolved":true,"context_lines":[{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"PciAlias"},{"line_number":138,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"adda0f0e_963ec934","line":135,"in_reply_to":"8da5f05f_982c13c7","updated":"2025-12-02 16:53:10.000000000","message":"agreed on the very massive payload... I definitely need to understand why we need to have all of those resources in the notification emissions and why we can\u0027t just call the Nova API for getting some of those resources, like the instance details","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"95b8b4ef75ad13f5dcdcfaa203dfdc0b79472a6b","unresolved":true,"context_lines":[{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"PciAlias"},{"line_number":138,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8da5f05f_982c13c7","line":135,"in_reply_to":"9310788e_e1829e84","updated":"2025-12-02 15:23:18.000000000","message":"Yeah, a list of instance uuids is reasonable I think. These Instance and BuildRequest objects are not, IMHO.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  shared is nfs or ceph."},{"line_number":133,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":134,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":135,"context_line":"* instances: ListOfObjectsField(\u0027InstanceSummary\u0027)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"PciAlias"},{"line_number":138,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"942e6a68_fed361cd","line":135,"in_reply_to":"adda0f0e_963ec934","updated":"2025-12-03 13:52:41.000000000","message":"removed, v7 is now back to what i was orginlly envsioning this to contain with all the assginemen information removed form the resource notification.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":167,"context_line":"Summary of an instance on the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"2112e18c_a016b0ec","line":170,"updated":"2025-12-02 14:12:55.000000000","message":"I\u0027m a bit torn on request_spec. I\u0027m not sure an external service will understand it easily as this is not an entity that exists on the Nova API. In the other hand flavor is. I would like to see a confirmation from @liliueecg@gmail.com that this is  what they wants.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b79ffea5c71a4b366d7fb43c26fdb7367a3ff0a","unresolved":true,"context_lines":[{"line_number":167,"context_line":"Summary of an instance on the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"30973783_f52f7f7b","line":170,"in_reply_to":"1c730fa7_07c3ca61","updated":"2025-12-02 16:02:41.000000000","message":"yes, so im doing that because i guess i missuder stood the converstaion in teh ptg\n\ni tought hte requst at the ptg was to use as many of the existing object as i coudl to miniume the set of new ovo\n\ni think the actull intent of that feedbac was more a logn the lines fo \"dont jsut send a dict of random data, reuses existing object if they make sesnse\"\n\n\nso i chose the request spec object because it has most of teh interestign field we would need form a scdhuliign spersective already and because it is the obejct passed to the filters/weigher so it will always have all the constratint\n\ngibi has suggeted create a smaller object that is optimised for consumtpion by external systems so ill remove the request spec and isntead create a Request summary obejct with a subset of filed that present the important info.\n\nalthough if we remove the InstanceSummary enritrely adn just go back to a list of instance uuids for the isntnace on the host then ill just delete this.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a284942985cfd99f9443228700c49ce51208bdde","unresolved":true,"context_lines":[{"line_number":167,"context_line":"Summary of an instance on the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"eeed1e69_ffb85fd6","line":170,"in_reply_to":"2112e18c_a016b0ec","updated":"2025-12-02 14:51:22.000000000","message":"How is the compute going to get RequestSpec to send? It\u0027s in the API database...","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":167,"context_line":"Summary of an instance on the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5e38c4cd_3dd72271","line":170,"in_reply_to":"2112e18c_a016b0ec","updated":"2025-12-02 15:15:13.000000000","message":"so keep in mind that LiLiu si only one of the stake holders i am trying to satisfy.\n\ni ge you rpoin on the resuqest spec not nessiarly beint the ideal format\n\nhowever for watcher i need to ideally ahve the schduler hin, pci requests, numa toplogy, pinned az infomation,  server groups, flavor and image properties and other info contained in the request spec\n\nthis is a place where we can make the refienment to the payload size but if we do we have to be carful not to break other usecases","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":167,"context_line":"Summary of an instance on the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"67d5084b_c882819d","line":170,"in_reply_to":"30973783_f52f7f7b","updated":"2025-12-03 13:52:41.000000000","message":"Done","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e7c31fe060a2e1b0bad45d90d8242f6031376dd","unresolved":true,"context_lines":[{"line_number":167,"context_line":"Summary of an instance on the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"cd92ba94_33760f79","line":170,"in_reply_to":"5e38c4cd_3dd72271","updated":"2025-12-02 15:17:26.000000000","message":"its not going to get it im was proposing building a object in memroy form teh info we have.\n\ni can stript this wont to the subset fo field i really need but that a non trivial amount of the request spec.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2538cd94728a8a50bb6455f9aaa32fa6bdc2960f","unresolved":true,"context_lines":[{"line_number":167,"context_line":"Summary of an instance on the host."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1c730fa7_07c3ca61","line":170,"in_reply_to":"cd92ba94_33760f79","updated":"2025-12-02 15:22:10.000000000","message":"So you\u0027re going to create an in-memory version of an API-database object we can\u0027t load from the database and populate it with a few fields we think are there? That seems unideal to me. Are you doing this because there are some field types you want to include? It seems better to just define those here and not send a partial object we can\u0027t actually load and don\u0027t know if what we\u0027re sending is accurate. But again, I think including instance info in this resource notification is too heavy.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"},{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"37f3b401_4b32732d","line":173,"range":{"start_line":172,"start_character":0,"end_line":173,"end_character":40},"updated":"2025-12-02 14:12:55.000000000","message":"Do we miss the image_ref here?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"},{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"40c9bcab_ac2b795d","line":173,"range":{"start_line":172,"start_character":0,"end_line":173,"end_character":40},"in_reply_to":"37f3b401_4b32732d","updated":"2025-12-02 15:15:13.000000000","message":"its in the request spec.\nthese are not as far as i could see.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"* uuid: UUIDField"},{"line_number":170,"context_line":"* request_spec: ObjectField(\u0027RequestSpec\u0027)"},{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"},{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7499abd1_702a45ca","line":173,"range":{"start_line":172,"start_character":0,"end_line":173,"end_character":40},"in_reply_to":"40c9bcab_ac2b795d","updated":"2025-12-03 13:52:41.000000000","message":"Done","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"},{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"41e45e92_dba5edfa","line":174,"updated":"2025-12-02 14:12:55.000000000","message":"I guess this is the user facing metadata of the instance and it does not contain the system_metadata. Am I correct?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"},{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"cbb6f2e8_371abff6","line":174,"in_reply_to":"41e45e92_dba5edfa","updated":"2025-12-02 15:15:13.000000000","message":"correct. when i proposed adding annotaiton and lables to instace in epoxy i was told to try and uses instnce metadata for this usecase in watcher instead\nhttps://etherpad.opendev.org/p/r.bf5f1185e201e31ed8c3adeb45e3cf6d#L728\n\nso i want to incldue this for now to make this info aviabel to watcher to make policy decsions on.\n\nthis is related too these flavor or metadata properties\n\n```\n    \"lifecyle:live-migratable\u003dtrue|false\"  declares if this instance may be live migrated even if its possbel (lifecyle:live-migratable\u003dfalse  is useful for runing ectd database on openstack where live migration is not recommend)\n\n    \"lifecyle:cold-migratable\u003dtrue|false\"  declares if this instance may  be cold migrated even if its possbel (useful for runing ectd database on openstack)\n\n    \"lifecyle:evacuatable\u003dtrue|false\"  \n\n    \"lifecyle:shelvable\u003dtrue|false\"  \n\n    \"lifecycle:premetable\u003dtrue|false\"\n\n    this woudl allwo watcher to implement spot/premetable isntnace instances\n\n    \"ha:maintance_stragey:inplace|power_off|migrate\" how shoudl masikari or watcher treat the vm if the comptue service is disabeld for maintiance\n\n    if \"ha:maintance_stragey\u003dmigrate  watcher would choose one of the lifecycle operatiosn allwoed by the instance to do the move it if you were doing maitance on the under lying host.\n\n    \"ha:role\u003d\"primary|secondary\"\n\n    ha:priority:\u003csome value that makes sense to the consumer\u003e e.g. high/medium/low, gold/silver/bronze , wiskey,/coffee/cake\n    \n```\nwe woudl likely use an optimize: namespace for the watcher specific metadata keys\nto prevent collisions \n\ne.g. `optimize_lifecyle:live-migratable\u003dfalse` to tell watcher to never live migrate this vm, this is useful for openshift workers running etcd as an example.\n\ni woudl like nova to report some of those eventaully but that all out of scope for now.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":171,"context_line":"* display_name: StringField(nullable\u003dTrue)"},{"line_number":172,"context_line":"* kernel_id: StringField(nullable\u003dTrue)"},{"line_number":173,"context_line":"* ramdisk_id: StringField(nullable\u003dTrue)"},{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"868623f1_dbf1f8c4","line":174,"in_reply_to":"cbb6f2e8_371abff6","updated":"2025-12-03 13:52:41.000000000","message":"watcher already collects this for the instnace notificaion so ill resolve this since we will continue to do that and we are not only including the instance uuids in teh resouce obejct","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"InstancePciDevice"},{"line_number":179,"context_line":"-----------------"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ec32e0c8_c6be3de6","line":177,"updated":"2025-12-02 14:12:55.000000000","message":"I thought @liliueecg@gmail.com needs the instance numa topology as well to know which instance uses which cores on which numa node.\n\n--later--\n\n\u003e We might not need to know which individual vfs/cores on a NUMA cell are assigned to which VMs\nHowever, knowing how MANY vfs/cores on a NUMA cell are assigned to which VMs is demanding.\n\nSo yeah the ResourceSummaryPayload.numa_topology is not enough as that only tells how many pcpu is free / used per numa, but does not tell which VM is using it. \n\nThe InstanceSummary.request_spec might be used to know how many vpcus a VM wants but it does not tell from which numa node it got those vcpus.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"InstancePciDevice"},{"line_number":179,"context_line":"-----------------"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"48b85a2c_217bbdff","line":177,"in_reply_to":"d2ca4e0e_6f98f3f3","updated":"2025-12-03 13:52:41.000000000","message":"This is nolonger relevnet.\n\nthe instance object will use the fully populated InstanceNUMATopology in the new proposal.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":174,"context_line":"* metadata: DictOfStringsField()"},{"line_number":175,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027)"},{"line_number":176,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"InstancePciDevice"},{"line_number":179,"context_line":"-----------------"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"d2ca4e0e_6f98f3f3","line":177,"in_reply_to":"ec32e0c8_c6be3de6","updated":"2025-12-02 15:15:13.000000000","message":"actully it will because we will be useing the instnace_numa toplgoy blob form the comptue node which has that info. the version in the api db does not.\n\nbasically the version that is normally in the request spesc is the partly filled version that is used for schduling\n\nin the example https://termbin.com/g41z\n\ni have not populated cpu_pinning_raw bnut i intend too.\n\n            \"numa_topology\": {\n                    \"nova_object.changes\": [\n                      \"emulator_threads_policy\",\n                      \"cells\"\n                    ],\n                    \"nova_object.data\": {\n                      \"cells\": [\n                        {\n                          \"nova_object.changes\": [\n                            \"cpuset_reserved\",\n                            \"cpu_pinning_raw\",\n                            \"id\",\n                            \"cpu_thread_policy\",\n                            \"pcpuset\",\n                            \"pagesize\",\n                            \"cpu_policy\",\n                            \"memory\",\n                            \"cpuset\"\n                          ],\n                          \"nova_object.data\": {\n                            \"cpu_pinning_raw\": null,\n                            \"cpu_policy\": \"dedicated\",\n                            \"cpu_thread_policy\": null,\n                            \"cpuset\": [],\n                            \"cpuset_reserved\": null,\n                            \"id\": 0,\n                            \"memory\": 512,\n                            \"pagesize\": -1,\n                            \"pcpuset\": [\n                              0,\n                              1\n                            ]\n                          },\n                          \"nova_object.name\": \"InstanceNUMACell\",\n                          \"nova_object.namespace\": \"nova\",\n                          \"nova_object.version\": \"1.6\"\n                        }\n                      ],\n                      \"emulator_threads_policy\": null\n                    },\n                    \"nova_object.name\": \"InstanceNUMATopology\",\n                    \"nova_object.namespace\": \"nova\",\n                    \"nova_object.version\": \"1.3\"\n                  },\n\n\n\nthis is what actully store in the instace extra table\n\n```\n{\n  \"nova_object.name\": \"InstanceNUMATopology\",\n  \"nova_object.namespace\": \"nova\",\n  \"nova_object.version\": \"1.3\",\n  \"nova_object.data\": {\n    \"cells\": [\n      {\n        \"nova_object.name\": \"InstanceNUMACell\",\n        \"nova_object.namespace\": \"nova\",\n        \"nova_object.version\": \"1.6\",\n        \"nova_object.data\": {\n          \"id\": 0,\n          \"cpuset\": [],\n          \"pcpuset\": [\n            0,\n            1\n          ],\n          \"cpuset_reserved\": null,\n          \"memory\": 512,\n          \"pagesize\": 4,\n          \"cpu_pinning_raw\": {\n            \"0\": 2,\n            \"1\": 5\n          },\n          \"cpu_policy\": \"dedicated\",\n          \"cpu_thread_policy\": null\n        },\n        \"nova_object.changes\": [\n          \"id\",\n          \"cpu_pinning_raw\",\n          \"pagesize\",\n          \"cpuset_reserved\"\n        ]\n      }\n    ],\n    \"emulator_threads_policy\": null\n  },\n  \"nova_object.changes\": [\n    \"emulator_threads_policy\",\n    \"cells\"\n  ]\n}\n\npci_requests: [\n  {\n    \"count\": 1,\n    \"spec\": [\n      {\n        \"vendor_id\": \"8086\",\n        \"product_id\": \"10ca\"\n      }\n    ],\n    \"alias_name\": \"vf\",\n    \"is_new\": false,\n    \"numa_policy\": \"legacy\",\n    \"request_id\": \"cc17009e-bbef-4aee-aa57-897c5e8bb145\",\n    \"requester_id\": null\n  }\n]\n```\n\nwhich is loaded here\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L1017-L1023\n\n\nby the way for the wathcer usecase we dont need to know which cores are used by the current vm becuase we are not trying to backfile the freed up capsity to get the optimal configuation in one go.\n\nwe will be moving isntnace to host that have spare capstity \n\nthe in a future autid we can rebalance again\n\nso we conly need the constratis for the pinning and the free space. not the current usage.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Defines an assigned PCI device."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"* request_id: StringField"},{"line_number":184,"context_line":"  If the request is for a Neutron port this is the port UUID"},{"line_number":185,"context_line":"* device_address: StringField"},{"line_number":186,"context_line":"* pool_address: StringField"},{"line_number":187,"context_line":"* request_type: EnumField(\u0027RequestType\u0027, choices\u003d[\u0027flavor\u0027, \u0027port\u0027])"}],"source_content_type":"text/x-rst","patch_set":5,"id":"281fa7d7_3d49d83e","line":184,"range":{"start_line":183,"start_character":0,"end_line":184,"end_character":60},"updated":"2025-12-02 14:12:55.000000000","message":"Will this be populated form the matching InstancePCIRequest.requester_id? The PCIDevice.request_id is generated and matching with the InstancePCIRequest.request_id so that is a different from the requester_id that can be the port uuid.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Defines an assigned PCI device."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"* request_id: StringField"},{"line_number":184,"context_line":"  If the request is for a Neutron port this is the port UUID"},{"line_number":185,"context_line":"* device_address: StringField"},{"line_number":186,"context_line":"* pool_address: StringField"},{"line_number":187,"context_line":"* request_type: EnumField(\u0027RequestType\u0027, choices\u003d[\u0027flavor\u0027, \u0027port\u0027])"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ee71a47d_881b1748","line":184,"range":{"start_line":183,"start_character":0,"end_line":184,"end_character":60},"in_reply_to":"281fa7d7_3d49d83e","updated":"2025-12-02 15:15:13.000000000","message":"yes this shoudl be the requester_id instead i guess.\n\nfor requests form the PCI alias we just generate a UUID for each device\nfor request form neutron port we use the port uuid.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Defines an assigned PCI device."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"* request_id: StringField"},{"line_number":184,"context_line":"  If the request is for a Neutron port this is the port UUID"},{"line_number":185,"context_line":"* device_address: StringField"},{"line_number":186,"context_line":"* pool_address: StringField"},{"line_number":187,"context_line":"* request_type: EnumField(\u0027RequestType\u0027, choices\u003d[\u0027flavor\u0027, \u0027port\u0027])"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fb67149c_b21691bf","line":184,"range":{"start_line":183,"start_character":0,"end_line":184,"end_character":60},"in_reply_to":"ee71a47d_881b1748","updated":"2025-12-03 13:52:41.000000000","message":"Done","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3ea0c1e08a27cbe414ce5a1413b4958d46c7a2a","unresolved":true,"context_lines":[{"line_number":183,"context_line":"* request_id: StringField"},{"line_number":184,"context_line":"  If the request is for a Neutron port this is the port UUID"},{"line_number":185,"context_line":"* device_address: StringField"},{"line_number":186,"context_line":"* pool_address: StringField"},{"line_number":187,"context_line":"* request_type: EnumField(\u0027RequestType\u0027, choices\u003d[\u0027flavor\u0027, \u0027port\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"InstanceMdevDevice"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b0ec08d1_49535f3e","line":186,"updated":"2025-12-02 14:12:55.000000000","message":"What is this? Does it want to point to a DevicePool object?","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"31c379bca0d2e4fb1a0ae8640d519b0843c2bdc9","unresolved":false,"context_lines":[{"line_number":183,"context_line":"* request_id: StringField"},{"line_number":184,"context_line":"  If the request is for a Neutron port this is the port UUID"},{"line_number":185,"context_line":"* device_address: StringField"},{"line_number":186,"context_line":"* pool_address: StringField"},{"line_number":187,"context_line":"* request_type: EnumField(\u0027RequestType\u0027, choices\u003d[\u0027flavor\u0027, \u0027port\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"InstanceMdevDevice"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f193e679_79a675cf","line":186,"in_reply_to":"00d1b67b_62316c2f","updated":"2025-12-03 13:52:41.000000000","message":"Acknowledged","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c9375b3c96af9c11f8e26dfb9b9d71de18c10ab","unresolved":true,"context_lines":[{"line_number":183,"context_line":"* request_id: StringField"},{"line_number":184,"context_line":"  If the request is for a Neutron port this is the port UUID"},{"line_number":185,"context_line":"* device_address: StringField"},{"line_number":186,"context_line":"* pool_address: StringField"},{"line_number":187,"context_line":"* request_type: EnumField(\u0027RequestType\u0027, choices\u003d[\u0027flavor\u0027, \u0027port\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"InstanceMdevDevice"}],"source_content_type":"text/x-rst","patch_set":5,"id":"00d1b67b_62316c2f","line":186,"in_reply_to":"b0ec08d1_49535f3e","updated":"2025-12-02 15:15:13.000000000","message":"this is matched against the address filed in teh pci pool object\n```\n        \"pci_device_pools\": {\n          \"nova_object.changes\": [\n            \"objects\"\n          ],\n          \"nova_object.data\": {\n            \"objects\": [\n              {\n                \"nova_object.changes\": [\n                  \"vendor_id\",\n                  \"numa_node\",\n                  \"count\",\n                  \"tags\",\n                  \"product_id\"\n                ],\n                \"nova_object.data\": {\n                  \"count\": 3,\n                  \"numa_node\": null,\n                  \"product_id\": \"10ca\",\n                  \"tags\": {\n                    \"address\": \"0000:01:00.0\",\n                    \"dev_type\": \"type-VF\",\n                    \"parent_ifname\": \"enp1s0\",\n                    \"remote_managed\": \"false\"\n                  },\n                  \"vendor_id\": \"8086\"\n                },\n                \"nova_object.name\": \"PciDevicePool\",\n                \"nova_object.namespace\": \"nova\",\n                \"nova_object.version\": \"1.1\"\n              }\n            ]\n          },\n```\n\nif the pool is dev_type type-VF|VDPA,\nthen the adress is the PF addres.\nwell for type-pci or type-PF its allso the PF adress because that is the asignable unit.\n\nthe pool adress is also the adres used to name the placement resouce provider that correalate with this pool in the pic in placmeent case.","commit_id":"d31fdf5ee17ea75bcb404ee29488e8231254c9e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6016ada4f4927e3a2eb7756c9a7fd97807d86bc4","unresolved":true,"context_lines":[{"line_number":225,"context_line":"multiple DB queries, pagination and would only cover resources in"},{"line_number":226,"context_line":"Nova\u0027s DB."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Instead of including the InstanceSummary objects we could just return,"},{"line_number":229,"context_line":"a list of instance uuids, and explore enhancing the existing Instance"},{"line_number":230,"context_line":"instance_usage_audit notificaton to include the missing information."},{"line_number":231,"context_line":"this could be done by extending the InstanceExistsPayload or base"},{"line_number":232,"context_line":"InstancePayload objects to include the device assignments."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Data model impact"},{"line_number":235,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"4b673fad_f8f11a94","line":232,"range":{"start_line":228,"start_character":1,"end_line":232,"end_character":58},"updated":"2025-12-02 19:03:48.000000000","message":"@dms@danplanet.com @gibi i added this as an alternative but i think based on the discussion this is actually the path we would like to take correct?\n\nuse the exciting instance_task_audit to provide instance usage info i think\nis a better way to achive that usecase provide we coudl exented those notifcaion to provide the missing info.\n\ni was not specificlly thinking fo that notifciaon but looking at this brifely \ni think the instance exists notifcation coudl be enhanced to fuflile this usecase in combination with a lighter weight host summary.\n\nto be clear this is what is more or less what i was orginally planning to do.\n\nstep 1 add the resouce notfication for the hosts resource info.\nstpe 2 extned the exting instnace noticition to provde addtion info as needed.\n\n\nwe already sicovered when we added the ablity to colect the pinned_az info\nusing the 2.96 micorvstion that the instance notificaiton were never updated with this info \n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py#L455-L489\n\nso this is not currently somethign we can extract\n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/notification/nova.py#L75-L116\n\nthe same is ture of the scheduler_hints and image properites added in 2.100 adn 2.98\n\nso adressign the missing filed in https://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py#L74-L120\nwoudl help.\n\n\n\nthat why i was only proposing to add a list of instnace uuid in the resouce summary.\n\ni woudl much prefer to enhcne the existing instnace notifcation then have to include that info in the resource one.\n\n\nhowe woudl ye feel about pivioting the spec in that direction?","commit_id":"eade70c13161538a7e7c28d0ccec5ac953a50cbb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":225,"context_line":"multiple DB queries, pagination and would only cover resources in"},{"line_number":226,"context_line":"Nova\u0027s DB."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Instead of including the InstanceSummary objects we could just return,"},{"line_number":229,"context_line":"a list of instance uuids, and explore enhancing the existing Instance"},{"line_number":230,"context_line":"instance_usage_audit notificaton to include the missing information."},{"line_number":231,"context_line":"this could be done by extending the InstanceExistsPayload or base"},{"line_number":232,"context_line":"InstancePayload objects to include the device assignments."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Data model impact"},{"line_number":235,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"f4aa9f75_788938c3","line":232,"range":{"start_line":228,"start_character":1,"end_line":232,"end_character":58},"in_reply_to":"4b673fad_f8f11a94","updated":"2025-12-03 17:36:28.000000000","message":"\u003e i woudl much prefer to enhcne the existing instnace notifcation then have to include that info in the resource one.\n\n+100","commit_id":"eade70c13161538a7e7c28d0ccec5ac953a50cbb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":225,"context_line":"multiple DB queries, pagination and would only cover resources in"},{"line_number":226,"context_line":"Nova\u0027s DB."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Instead of including the InstanceSummary objects we could just return,"},{"line_number":229,"context_line":"a list of instance uuids, and explore enhancing the existing Instance"},{"line_number":230,"context_line":"instance_usage_audit notificaton to include the missing information."},{"line_number":231,"context_line":"this could be done by extending the InstanceExistsPayload or base"},{"line_number":232,"context_line":"InstancePayload objects to include the device assignments."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Data model impact"},{"line_number":235,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"f27b83f0_9e55e1e2","line":232,"range":{"start_line":228,"start_character":1,"end_line":232,"end_character":58},"in_reply_to":"f4aa9f75_788938c3","updated":"2025-12-04 15:15:27.000000000","message":"Done","commit_id":"eade70c13161538a7e7c28d0ccec5ac953a50cbb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":89,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"A new versioned notification will be added as part of the"},{"line_number":92,"context_line":"_update_available_resources function in the resource tracker."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"This will use the information from the resource tracker and config to build"},{"line_number":95,"context_line":"the notification object."}],"source_content_type":"text/x-rst","patch_set":7,"id":"b0640bc1_fcef2f90","line":92,"updated":"2025-12-03 17:36:28.000000000","message":"We agreed below that it will be in a different periodic task as _update_available_resources periodic can be turned off.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":89,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"A new versioned notification will be added as part of the"},{"line_number":92,"context_line":"_update_available_resources function in the resource tracker."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"This will use the information from the resource tracker and config to build"},{"line_number":95,"context_line":"the notification object."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ebe6e199_0c3663b6","line":92,"in_reply_to":"b0640bc1_fcef2f90","updated":"2025-12-03 20:09:40.000000000","message":"so i change back to this because the place i want to send the notification form is in _update_aviable_resouce in the resouce tracker.\n\nif i do it as a sperate perodic then i think i will need to do a lot more work to reconstruct the infor that that fucntion has already collected.\n\nwith that said now that the resouce notficiion only had the list of instnace uuids i may not need the list of instnace object that the resocue tackder already retrived from the db.\n\nhttps://github.com/openstack/nova/blob/23b462d77df1a1d09c43d0918bca853ef3af1e3f/nova/compute/resource_tracker.py#L1018\n\nis this somehtin you woudl be oke defering to the implemtion review\n\ni.e. weither we reused _update_aviable_resoruce so that i ahve all the data i need in memroy alsready or create a new periodic tha tmay required db calls if i cant retrive teh info form the resouce tracker in memroy form a separate perodic.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":89,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"A new versioned notification will be added as part of the"},{"line_number":92,"context_line":"_update_available_resources function in the resource tracker."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"This will use the information from the resource tracker and config to build"},{"line_number":95,"context_line":"the notification object."}],"source_content_type":"text/x-rst","patch_set":7,"id":"d72e0b5f_cf71081d","line":92,"in_reply_to":"d8aaf8e5_aa13a23c","updated":"2025-12-04 15:15:27.000000000","message":"since this is related to the interval the resouce notfication is sent on im more or less ok with that being relatively infrequent like once a day.\n\nso if they reduce the canance of update_avaiable_resouce to once an hour or once a day it wont fundementlly break the usage mode but ya if i can decouple them i will try\n\ni dont think the conflict will arrise because the isntnace notficiton that we already consume shoudl notify use of the resouce usage changes as they happen.\n\nill resolve this for now but feel free to reopen if you disagree.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"49311d1631887cf164277d590f68a675da19d72c","unresolved":true,"context_lines":[{"line_number":89,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"A new versioned notification will be added as part of the"},{"line_number":92,"context_line":"_update_available_resources function in the resource tracker."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"This will use the information from the resource tracker and config to build"},{"line_number":95,"context_line":"the notification object."}],"source_content_type":"text/x-rst","patch_set":7,"id":"d8aaf8e5_aa13a23c","line":92,"in_reply_to":"ebe6e199_0c3663b6","updated":"2025-12-04 13:15:49.000000000","message":"I\u0027m OK to defer this decision. I just wanted to note that if we thigh this notification to the _update_aviable_resouce periodic then we might creating conflicting situation between the two forces\n* customer wants to reduce load by reducing the frequency of the _update_aviable_resouce. Which nova actually supports as this periodic is just there for safety afaik and all the resource alloc / dealloc happens independently\n* customer wants that watcher reacts to changes fast and therefore he wants to make the resource notification to sent more frequently. \n\nIf we don\u0027t think such conflict will arise then I\u0027m fine putting the notification to the existing periodic.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"82bcdca43a1cee1d8b6f220e851b0a1b5207ee10","unresolved":true,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":123,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"f044e32b_f3fe269a","line":124,"updated":"2025-12-03 18:09:41.000000000","message":"why can\u0027t we get that field directly ?","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4f853ded3272bf17a06c81b3404064303046c17","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":123,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"49148b95_f871031d","line":124,"in_reply_to":"9f4bb92e_e06b6481","updated":"2025-12-04 01:27:19.000000000","message":"im consolidating these into once comment ot make it more readble.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":123,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9f4bb92e_e06b6481","line":124,"in_reply_to":"f044e32b_f3fe269a","updated":"2025-12-03 20:09:40.000000000","message":"we can vai the rest aip but this is very vaulabel and very cheap to include.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"82bcdca43a1cee1d8b6f220e851b0a1b5207ee10","unresolved":true,"context_lines":[{"line_number":122,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":123,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"},{"line_number":128,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ffcfd47_ea9f3e0b","line":125,"updated":"2025-12-03 18:09:41.000000000","message":"why can\u0027t some Watcher agent run on the host to call the libvirt API ?","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":122,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":123,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"},{"line_number":128,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"2771f980_e667a217","line":125,"in_reply_to":"1ffcfd47_ea9f3e0b","updated":"2025-12-03 20:09:40.000000000","message":"it could but honestly i dont think that is a reasonable thing to do or expect serverice to do.\n\nif it were os-bick woudl not be invoked by nova it would be invoked by a cinder-compute agent.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4f853ded3272bf17a06c81b3404064303046c17","unresolved":false,"context_lines":[{"line_number":122,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":123,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"},{"line_number":128,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ee65ca23_116263de","line":125,"in_reply_to":"2771f980_e667a217","updated":"2025-12-04 01:27:19.000000000","message":"Acknowledged","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"82bcdca43a1cee1d8b6f220e851b0a1b5207ee10","unresolved":true,"context_lines":[{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"},{"line_number":128,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"},{"line_number":129,"context_line":"* pci_device_pools: ObjectField(\u0027PciDevicePoolList\u0027, nullable\u003dTrue)"},{"line_number":130,"context_line":"* shared_cpu_count: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9f08a7ae_a666a41a","line":127,"updated":"2025-12-03 18:09:41.000000000","message":"why can\u0027t some Watcher agent run on the host to call the libvirt API ?","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"},{"line_number":128,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"},{"line_number":129,"context_line":"* pci_device_pools: ObjectField(\u0027PciDevicePoolList\u0027, nullable\u003dTrue)"},{"line_number":130,"context_line":"* shared_cpu_count: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"a41c380b_4171d804","line":127,"in_reply_to":"9f08a7ae_a666a41a","updated":"2025-12-03 20:09:40.000000000","message":"answered above.\n\nhypervisor_version is imprtant to watcher since libvirt and nova do not supprot live migrationg form a newer to an older hypervior.\n\nso when we are selecting destion at we need to account for that.\n\ntoday we can get this form the hypervior detail api\n\nhttps://docs.openstack.org/api-ref/compute/#id296\n\nbut that require watcher to pool the hypervioru detial list api every 15-60 minutes becasue the current logic for rebuilding the comptue mode is not incremantl. it buidl it form scrach every time the collector runs.\n\nso every time it runs we what to list every hypervisor and every instance every hour.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4f853ded3272bf17a06c81b3404064303046c17","unresolved":false,"context_lines":[{"line_number":124,"context_line":"* host: StringField"},{"line_number":125,"context_line":"* hypervisor_hostname: StringField"},{"line_number":126,"context_line":"* hypervisor_type: StringField"},{"line_number":127,"context_line":"* hypervisor_version: IntegerField"},{"line_number":128,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"},{"line_number":129,"context_line":"* pci_device_pools: ObjectField(\u0027PciDevicePoolList\u0027, nullable\u003dTrue)"},{"line_number":130,"context_line":"* shared_cpu_count: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"37ce4ae6_2fa9b357","line":127,"in_reply_to":"a41c380b_4171d804","updated":"2025-12-04 01:27:19.000000000","message":"Acknowledged","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"82bcdca43a1cee1d8b6f220e851b0a1b5207ee10","unresolved":true,"context_lines":[{"line_number":131,"context_line":"  dedicated cpus are always reported only in the numa topology."},{"line_number":132,"context_line":"  cpu_shared_set or (host cpu count - reserved)"},{"line_number":133,"context_line":"* shared_cpu_used: IntegerField"},{"line_number":134,"context_line":"* memory_mb: IntegerField"},{"line_number":135,"context_line":"  # (total host memory - reserved) or file_backed_memory"},{"line_number":136,"context_line":"* memory_mb_used: IntegerField"},{"line_number":137,"context_line":"* disk_gb: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"2d939cad_246d5117","line":134,"updated":"2025-12-03 18:09:41.000000000","message":"again, why not getting it from Libvirt ?","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":131,"context_line":"  dedicated cpus are always reported only in the numa topology."},{"line_number":132,"context_line":"  cpu_shared_set or (host cpu count - reserved)"},{"line_number":133,"context_line":"* shared_cpu_used: IntegerField"},{"line_number":134,"context_line":"* memory_mb: IntegerField"},{"line_number":135,"context_line":"  # (total host memory - reserved) or file_backed_memory"},{"line_number":136,"context_line":"* memory_mb_used: IntegerField"},{"line_number":137,"context_line":"* disk_gb: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"b7f4c901_d57ced89","line":134,"in_reply_to":"2d939cad_246d5117","updated":"2025-12-03 20:09:40.000000000","message":"answered above\n\nwe can get this in other places it germane to the problem im trying to address to include it. gibi as me in a previous review to optimize for the ux of consumtion so i have provdie this data to aovid havign to call placmeent or the hypervior api to retive this.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  dedicated cpus are always reported only in the numa topology."},{"line_number":132,"context_line":"  cpu_shared_set or (host cpu count - reserved)"},{"line_number":133,"context_line":"* shared_cpu_used: IntegerField"},{"line_number":134,"context_line":"* memory_mb: IntegerField"},{"line_number":135,"context_line":"  # (total host memory - reserved) or file_backed_memory"},{"line_number":136,"context_line":"* memory_mb_used: IntegerField"},{"line_number":137,"context_line":"* disk_gb: IntegerField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"8dfad664_61d61079","line":134,"in_reply_to":"b7f4c901_d57ced89","updated":"2025-12-04 15:15:27.000000000","message":"i remvoed this as while this might be nice to avoid api round trips i can get this info in other ways","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"82bcdca43a1cee1d8b6f220e851b0a1b5207ee10","unresolved":true,"context_lines":[{"line_number":134,"context_line":"* memory_mb: IntegerField"},{"line_number":135,"context_line":"  # (total host memory - reserved) or file_backed_memory"},{"line_number":136,"context_line":"* memory_mb_used: IntegerField"},{"line_number":137,"context_line":"* disk_gb: IntegerField"},{"line_number":138,"context_line":"* disk_gb_used: IntegerField"},{"line_number":139,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":140,"context_line":"* storage_fsid: StringField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ae6f78f1_6df242bd","line":137,"updated":"2025-12-03 18:09:41.000000000","message":"ditto","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":134,"context_line":"* memory_mb: IntegerField"},{"line_number":135,"context_line":"  # (total host memory - reserved) or file_backed_memory"},{"line_number":136,"context_line":"* memory_mb_used: IntegerField"},{"line_number":137,"context_line":"* disk_gb: IntegerField"},{"line_number":138,"context_line":"* disk_gb_used: IntegerField"},{"line_number":139,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":140,"context_line":"* storage_fsid: StringField"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9b63e7a2_2a6e6de3","line":137,"in_reply_to":"ae6f78f1_6df242bd","updated":"2025-12-04 15:15:27.000000000","message":"Acknowledged","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"82bcdca43a1cee1d8b6f220e851b0a1b5207ee10","unresolved":true,"context_lines":[{"line_number":138,"context_line":"* disk_gb_used: IntegerField"},{"line_number":139,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":140,"context_line":"* storage_fsid: StringField"},{"line_number":141,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":142,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":143,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"c82b43d0_1a0e47e0","line":141,"updated":"2025-12-03 18:09:41.000000000","message":"why can\u0027t we provide the pci aliases only when we restart the compute ?","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":138,"context_line":"* disk_gb_used: IntegerField"},{"line_number":139,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":140,"context_line":"* storage_fsid: StringField"},{"line_number":141,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":142,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":143,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"f8a61d3e_4f6c7a34","line":141,"in_reply_to":"a60c2382_b5573ebb","updated":"2025-12-04 15:15:27.000000000","message":"Acknowledged","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":138,"context_line":"* disk_gb_used: IntegerField"},{"line_number":139,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":140,"context_line":"* storage_fsid: StringField"},{"line_number":141,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":142,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":143,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"a60c2382_b5573ebb","line":141,"in_reply_to":"c82b43d0_1a0e47e0","updated":"2025-12-03 20:09:40.000000000","message":"simple if watcher misses that notificoan or is restarted it will not have it","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"82bcdca43a1cee1d8b6f220e851b0a1b5207ee10","unresolved":true,"context_lines":[{"line_number":140,"context_line":"* storage_fsid: StringField"},{"line_number":141,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":142,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":143,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":".. note::"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"22619f95_90fb3493","line":143,"updated":"2025-12-03 18:09:41.000000000","message":"why can\u0027t watcher look at the instance notifications to know when the instance is run by the host ?","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":140,"context_line":"* storage_fsid: StringField"},{"line_number":141,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":142,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":143,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":".. note::"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5b735b25_56ec9985","line":143,"in_reply_to":"22619f95_90fb3493","updated":"2025-12-03 20:09:40.000000000","message":"it does but those are only sent monthly if you have the instance_autit task enabeld or if an instnace is moved.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":140,"context_line":"* storage_fsid: StringField"},{"line_number":141,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":142,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":143,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":".. note::"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"be53ad1e_6d5c7aca","line":143,"in_reply_to":"5b735b25_56ec9985","updated":"2025-12-04 15:15:27.000000000","message":"Acknowledged","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":173,"context_line":"  \u0027NumaPolicy\u0027, choices\u003d[\u0027required\u0027, \u0027preferred\u0027, \u0027legacy\u0027, \u0027socket\u0027])"},{"line_number":174,"context_line":"* resource_class: StringField"},{"line_number":175,"context_line":"* traits: ListOfStringsField"},{"line_number":176,"context_line":"* live_migratable: BooleanField"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"MdevType"},{"line_number":179,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"b5e6e77c_a1b2a634","line":176,"updated":"2025-12-03 17:36:28.000000000","message":"This data structure only works when PCI in Placement in enabled and therefore nova forced to have only a single spec per alias name. If PCI in Placement is not enabled then a single alias name can have a list of specifications attached.\nSee https://review.opendev.org/c/openstack/nova/+/944062 \n\nSo either we make sure that this notification can only be enabled if PCI in Placement is also enabled and then we can keep this structure. \nOr we need to change this structure to allow a list of tags per alias name.\n\nI.e. this is totally valid when PCI in Placement is not enabled and means vf1 alias is either dev with product_id 10ca or f0000.\n```\n[pci]\nalias \u003d { \"name\": \"vf1\", \"product_id\":\"10ca\", \"vendor_id\":\"8086\", \"device_type\":\"type-VF\"}\nalias \u003d { \"name\": \"vf1\", \"product_id\":\"f000\", \"vendor_id\":\"8086\", \"device_type\":\"type-VF\"}\n```","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"49311d1631887cf164277d590f68a675da19d72c","unresolved":true,"context_lines":[{"line_number":173,"context_line":"  \u0027NumaPolicy\u0027, choices\u003d[\u0027required\u0027, \u0027preferred\u0027, \u0027legacy\u0027, \u0027socket\u0027])"},{"line_number":174,"context_line":"* resource_class: StringField"},{"line_number":175,"context_line":"* traits: ListOfStringsField"},{"line_number":176,"context_line":"* live_migratable: BooleanField"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"MdevType"},{"line_number":179,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"75527037_e220abd0","line":176,"in_reply_to":"1d726103_a572a58d","updated":"2025-12-04 13:15:49.000000000","message":"\u003e yes and no. i condier ^ to be deprecated and not supproted in genreal.\n\nSorry but it is not deprecated in any documentation of nova. So even though you consider it such, it is not deprecated.\n\n\u003e but on the other hand it will work beacsue i am defining this as a list or pci ailaises in the the ResourceSummaryPayload, so if there are multiple with the same name i can include both definition and it will be up to the consumer to decied how ti will handel that.\n\nThat is true. But it kicks the problem down to the client. Anyhow as watcher wants to reimplement the nova scheduler and this is currently how nova scheduler works. I guess it is fine.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":173,"context_line":"  \u0027NumaPolicy\u0027, choices\u003d[\u0027required\u0027, \u0027preferred\u0027, \u0027legacy\u0027, \u0027socket\u0027])"},{"line_number":174,"context_line":"* resource_class: StringField"},{"line_number":175,"context_line":"* traits: ListOfStringsField"},{"line_number":176,"context_line":"* live_migratable: BooleanField"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"MdevType"},{"line_number":179,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"982d3f8f_139d3720","line":176,"in_reply_to":"75527037_e220abd0","updated":"2025-12-04 15:15:27.000000000","message":"ya its unfortunate that we still have this possibility.\nit will eventually go away once pci in palcment is the only mode (or we delegate pci managemnt to cyborg) but that wont happen until we have partiy which mena completing the neuton port part.\n\nill resolve this thread for clarity but it is somethign the consumer will have to handel.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"86b99452e27ba42e51d8d3c2ee40acc28c9a1e70","unresolved":true,"context_lines":[{"line_number":173,"context_line":"  \u0027NumaPolicy\u0027, choices\u003d[\u0027required\u0027, \u0027preferred\u0027, \u0027legacy\u0027, \u0027socket\u0027])"},{"line_number":174,"context_line":"* resource_class: StringField"},{"line_number":175,"context_line":"* traits: ListOfStringsField"},{"line_number":176,"context_line":"* live_migratable: BooleanField"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"MdevType"},{"line_number":179,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1d726103_a572a58d","line":176,"in_reply_to":"b5e6e77c_a1b2a634","updated":"2025-12-04 01:41:44.000000000","message":"yes and no. i condier ^ to be deprecated and not supproted in genreal.\nThat was intended to be remvoed a long time ago and never was, it proably never will be at this point.  so yes this woudl nto work if the PciAlias was encoded as a map form alias to its content.\n\nbut on the other hand it will work beacsue i am defining this as a list or pci ailaises in the the ResourceSummaryPayload,  so if there are multiple with the same name i can include both definition and it will be up to the consumer to decied how ti will handel that.\n\nit can check what the isntance actully got and find a host witht he same vendor/product id\n\nit can or them and find a host with either or it can resues to supprot this.\n\nin any case since this will be a   pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)\n\ni can provdie the infromation and you can choose to either follow my recomendation and never have multiple aliases with same name or you ignore it in which case the naems in teh list wont be unique.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":196,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027, nullable\u003dTrue)"},{"line_number":197,"context_line":"* numa_topology: ObjectField(\u0027InstanceNUMATopology\u0027, nullable\u003dTrue)"},{"line_number":198,"context_line":"* image: ObjectField(\u0027ImageMeta\u0027, nullable\u003dTrue)"},{"line_number":199,"context_line":"* network_info_cache: ObjectField(\u0027InstanceInfoCache\u0027, nullable\u003dTrue)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":".. note::"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"cef89f98_4a1226e9","line":199,"updated":"2025-12-03 17:36:28.000000000","message":"really? that is pretty deeply internal to nova. I\u0027m not happy to blindly sharing that with external parties. Also the NetworkModel inside it not well defined as far as I see. Is it just a json blob?","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":196,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027, nullable\u003dTrue)"},{"line_number":197,"context_line":"* numa_topology: ObjectField(\u0027InstanceNUMATopology\u0027, nullable\u003dTrue)"},{"line_number":198,"context_line":"* image: ObjectField(\u0027ImageMeta\u0027, nullable\u003dTrue)"},{"line_number":199,"context_line":"* network_info_cache: ObjectField(\u0027InstanceInfoCache\u0027, nullable\u003dTrue)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":".. note::"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fb8fb09a_9d7fa03f","line":199,"in_reply_to":"cef89f98_4a1226e9","updated":"2025-12-03 20:09:40.000000000","message":"there are two ways to look at this.\n\ni added the info cache because honelty i did not have tiem to pull out the field i woudl need to avoid all calls ot neutron and just operate on the data in the instnace objects\n\ni think for now i ll just remove this an live iwth the fact i will need ot do a neutorn prot list to do network aware scdhuleing on a per instance basis.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":196,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027, nullable\u003dTrue)"},{"line_number":197,"context_line":"* numa_topology: ObjectField(\u0027InstanceNUMATopology\u0027, nullable\u003dTrue)"},{"line_number":198,"context_line":"* image: ObjectField(\u0027ImageMeta\u0027, nullable\u003dTrue)"},{"line_number":199,"context_line":"* network_info_cache: ObjectField(\u0027InstanceInfoCache\u0027, nullable\u003dTrue)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":".. note::"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"eb2862cf_3e367f58","line":199,"in_reply_to":"fb8fb09a_9d7fa03f","updated":"2025-12-04 15:15:27.000000000","message":"Done","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"  All new fields are optional as not all instances will have all of"},{"line_number":204,"context_line":"  these resources assigned or available when the existing notifications"},{"line_number":205,"context_line":"  are sent. The image is added to provide the image properties. The"},{"line_number":206,"context_line":"  network_info_cache is added to provide the set of neutron ports and"},{"line_number":207,"context_line":"  their associated network/subnet information and vnic_type."},{"line_number":208,"context_line":"  This is a standing for the \u0027NetworkRequestList\u0027 and could be replaced"},{"line_number":209,"context_line":"  with a simpler object."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  While desirable, the scheduler hints and server group information"},{"line_number":212,"context_line":"  are not currently available from the instance object and are not"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5047613c_7d63fddc","line":209,"range":{"start_line":205,"start_character":64,"end_line":209,"end_character":24},"updated":"2025-12-03 17:36:28.000000000","message":"I feel like we need a well defined \"this is the network resources the instance uses\" notification object as the NetworkModel ovo field seems to be a blob.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"  All new fields are optional as not all instances will have all of"},{"line_number":204,"context_line":"  these resources assigned or available when the existing notifications"},{"line_number":205,"context_line":"  are sent. The image is added to provide the image properties. The"},{"line_number":206,"context_line":"  network_info_cache is added to provide the set of neutron ports and"},{"line_number":207,"context_line":"  their associated network/subnet information and vnic_type."},{"line_number":208,"context_line":"  This is a standing for the \u0027NetworkRequestList\u0027 and could be replaced"},{"line_number":209,"context_line":"  with a simpler object."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  While desirable, the scheduler hints and server group information"},{"line_number":212,"context_line":"  are not currently available from the instance object and are not"}],"source_content_type":"text/x-rst","patch_set":7,"id":"f99439ad_b2081a7b","line":209,"range":{"start_line":205,"start_character":64,"end_line":209,"end_character":24},"in_reply_to":"5047613c_7d63fddc","updated":"2025-12-03 20:09:40.000000000","message":"i dont disagree but i wont be able to detailed design review of this in tiem so ill remvoe this form the propsoal for now.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"  All new fields are optional as not all instances will have all of"},{"line_number":204,"context_line":"  these resources assigned or available when the existing notifications"},{"line_number":205,"context_line":"  are sent. The image is added to provide the image properties. The"},{"line_number":206,"context_line":"  network_info_cache is added to provide the set of neutron ports and"},{"line_number":207,"context_line":"  their associated network/subnet information and vnic_type."},{"line_number":208,"context_line":"  This is a standing for the \u0027NetworkRequestList\u0027 and could be replaced"},{"line_number":209,"context_line":"  with a simpler object."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  While desirable, the scheduler hints and server group information"},{"line_number":212,"context_line":"  are not currently available from the instance object and are not"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3c77b5b6_60e9a0c6","line":209,"range":{"start_line":205,"start_character":64,"end_line":209,"end_character":24},"in_reply_to":"f99439ad_b2081a7b","updated":"2025-12-04 15:15:27.000000000","message":"Done","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  While desirable, the scheduler hints and server group information"},{"line_number":212,"context_line":"  are not currently available from the instance object and are not"},{"line_number":213,"context_line":"  included in the extended instance notifications."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  The pci_devices and mdev_devices fields will only be added if"},{"line_number":216,"context_line":"  ``[notifications]resource_notification_enabled`` is True."}],"source_content_type":"text/x-rst","patch_set":7,"id":"e1fc2c6c_1590baca","line":213,"updated":"2025-12-03 17:36:28.000000000","message":"Is the problem here that we cannot look that data up in the compute? Or it is more like that we don\u0027t want to make an extra DB query in the compute to look it up?\n\nIt might make sense to review where the instance notifications are sent to see if the request_spec is available there as a RPC parameter. If it is in most of the cases then I\u0027m OK to add hint and group fields to the InstancePayload filled from the RequestSpec available locally.\n\nBut I\u0027m also OK to table this for later.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  While desirable, the scheduler hints and server group information"},{"line_number":212,"context_line":"  are not currently available from the instance object and are not"},{"line_number":213,"context_line":"  included in the extended instance notifications."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  The pci_devices and mdev_devices fields will only be added if"},{"line_number":216,"context_line":"  ``[notifications]resource_notification_enabled`` is True."}],"source_content_type":"text/x-rst","patch_set":7,"id":"34738f75_da3a093b","line":213,"in_reply_to":"9fb708e9_803b6d8d","updated":"2025-12-04 15:15:27.000000000","message":"i guess i tought that was less commonly avaiable.\n\nshall i include them as nullable then or defer this to a future release?\n\nim trying to get to an mvp that we can complete this cycle so im fine with either but didnt want to put the feature at risk for info i can get via the api if i have too.\n\nthe obvious reaosn i need this is so that watcher can acocunt for server affinity/antiaffinty policy which it does not handel today. we will be addign the ablity to collect this form the api once we have replace nova clinet with opentack sdk to be able to use microverison after 2.96 which we are doing this cycle.\n\nso server group awarenes was on my todo list for the 2026.2 cycle.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"49311d1631887cf164277d590f68a675da19d72c","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  While desirable, the scheduler hints and server group information"},{"line_number":212,"context_line":"  are not currently available from the instance object and are not"},{"line_number":213,"context_line":"  included in the extended instance notifications."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  The pci_devices and mdev_devices fields will only be added if"},{"line_number":216,"context_line":"  ``[notifications]resource_notification_enabled`` is True."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb708e9_803b6d8d","line":213,"in_reply_to":"c7bd41fe_fb9cfc58","updated":"2025-12-04 13:15:49.000000000","message":"\u003e correct the data is not in memory in the resouce tracker that im awre of and i woudl have to pull this info form the request spec in the api db otherwise since its not in teh cell db as far as im aware.\n\nThis is the InstancePayload. That is part of the instance action notifications which are not sent from resource tracker but mostly from the compute manager from the RPC handler method where the RequestSpec tend to be available.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  While desirable, the scheduler hints and server group information"},{"line_number":212,"context_line":"  are not currently available from the instance object and are not"},{"line_number":213,"context_line":"  included in the extended instance notifications."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  The pci_devices and mdev_devices fields will only be added if"},{"line_number":216,"context_line":"  ``[notifications]resource_notification_enabled`` is True."}],"source_content_type":"text/x-rst","patch_set":7,"id":"c7bd41fe_fb9cfc58","line":213,"in_reply_to":"e1fc2c6c_1590baca","updated":"2025-12-03 20:09:40.000000000","message":"correct the data is not in memory in the resouce tracker that im awre of and i woudl have to pull this info form the request spec in the api db otherwise since its not in teh cell db as far as im aware.\n\nwe will have to rely on on watcher collector getting this info form the API or\nby intercepthign a diffent notificaoin like the scdhuler select destionation one to grab it.\n\n\nif we are ok with inlcuding thos and only sending if we happen to have the request spec that might be ok but im confuse that could confuse the receiver.\n\nthat why i jsut removed it","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":213,"context_line":"  included in the extended instance notifications."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  The pci_devices and mdev_devices fields will only be added if"},{"line_number":216,"context_line":"  ``[notifications]resource_notification_enabled`` is True."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Instance resource assignment information will be sent periodically"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9ab7cd9f_dcc46b33","line":216,"updated":"2025-12-03 17:36:28.000000000","message":"Yepp similarly how we conditionally emit bdms in the instance notifications to avoid the extra load when unused.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":213,"context_line":"  included in the extended instance notifications."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  The pci_devices and mdev_devices fields will only be added if"},{"line_number":216,"context_line":"  ``[notifications]resource_notification_enabled`` is True."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Instance resource assignment information will be sent periodically"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9f897d9d_e3ba72d8","line":216,"in_reply_to":"9ab7cd9f_dcc46b33","updated":"2025-12-04 15:15:27.000000000","message":"Acknowledged","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":221,"context_line":"``InstanceExistsPayload``. These audit notifications are sent on an"},{"line_number":222,"context_line":"interval controlled by ``[DEFAULT] instance_usage_audit_period``. By"},{"line_number":223,"context_line":"default this runs monthly and can be configured to run more"},{"line_number":224,"context_line":"frequently."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"For more frequent updates, the extended ``InstancePayload`` allows"},{"line_number":227,"context_line":"device assignment to be discovered for all instance operations (like"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da79b4c3_4478fa98","line":224,"updated":"2025-12-03 17:36:28.000000000","message":"+1","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":221,"context_line":"``InstanceExistsPayload``. These audit notifications are sent on an"},{"line_number":222,"context_line":"interval controlled by ``[DEFAULT] instance_usage_audit_period``. By"},{"line_number":223,"context_line":"default this runs monthly and can be configured to run more"},{"line_number":224,"context_line":"frequently."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"For more frequent updates, the extended ``InstancePayload`` allows"},{"line_number":227,"context_line":"device assignment to be discovered for all instance operations (like"}],"source_content_type":"text/x-rst","patch_set":7,"id":"17ae65ba_8c9bfed0","line":224,"in_reply_to":"da79b4c3_4478fa98","updated":"2025-12-04 15:15:27.000000000","message":"Acknowledged","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":226,"context_line":"For more frequent updates, the extended ``InstancePayload`` allows"},{"line_number":227,"context_line":"device assignment to be discovered for all instance operations (like"},{"line_number":228,"context_line":"spawn, resize, cold migrate, unshelve, etc.) that currently send"},{"line_number":229,"context_line":"instance notifications."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"InstancePciDevice"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9d3083b5_2b19f3de","line":229,"updated":"2025-12-03 17:36:28.000000000","message":"+1\n\nSo we have the catch-up via instance.exists and the real time update via the normal instance action notifications.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":226,"context_line":"For more frequent updates, the extended ``InstancePayload`` allows"},{"line_number":227,"context_line":"device assignment to be discovered for all instance operations (like"},{"line_number":228,"context_line":"spawn, resize, cold migrate, unshelve, etc.) that currently send"},{"line_number":229,"context_line":"instance notifications."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"InstancePciDevice"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5da826e7_38c29889","line":229,"in_reply_to":"9d3083b5_2b19f3de","updated":"2025-12-04 15:15:27.000000000","message":"Acknowledged","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":229,"context_line":"instance notifications."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"InstancePciDevice"},{"line_number":233,"context_line":"-----------------"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Defines an assigned PCI device."}],"source_content_type":"text/x-rst","patch_set":7,"id":"03ec0982_770fd84e","line":232,"updated":"2025-12-03 17:36:28.000000000","message":"So we add this to the InstancePayload. As far as I understand the data here is a mix of InstancePCIRequest and PCIDevice. But both is available in the Instance ovo so it is easy to provide. Except the pool_address. Could you point out how that will be calculated? Is there a traceable connection from PCIDevice to PciDevicePool via an id somewhere?","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":229,"context_line":"instance notifications."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"InstancePciDevice"},{"line_number":233,"context_line":"-----------------"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Defines an assigned PCI device."}],"source_content_type":"text/x-rst","patch_set":7,"id":"bed15abb_f1f429dc","line":232,"in_reply_to":"03ec0982_770fd84e","updated":"2025-12-03 20:09:40.000000000","message":"the pool adress for a pci device of type VF or vdpa is the parent address\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/pci_device.py#L120\n\nfor a PF or type-pci its just the adress of the device\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/pci_device.py#L109C1-L109C41\n\ni was going to just add a new pool_address property to the pci device object to return that.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4b51639d7a49443a79fd3124bd203bcee4cbf380","unresolved":false,"context_lines":[{"line_number":229,"context_line":"instance notifications."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"InstancePciDevice"},{"line_number":233,"context_line":"-----------------"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Defines an assigned PCI device."}],"source_content_type":"text/x-rst","patch_set":7,"id":"696e0b04_fae1f608","line":232,"in_reply_to":"ab743802_84686d30","updated":"2025-12-05 18:11:26.000000000","message":"Done","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":true,"context_lines":[{"line_number":229,"context_line":"instance notifications."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"InstancePciDevice"},{"line_number":233,"context_line":"-----------------"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Defines an assigned PCI device."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ab743802_84686d30","line":232,"in_reply_to":"bed15abb_f1f429dc","updated":"2025-12-04 15:15:27.000000000","message":"i guess i can add a note to this effect in the spec.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3f026116cffce9f3c2a6ca30cd8b32437f7f9bfc","unresolved":true,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"When the resource notifications are enabled, a new notification will"},{"line_number":337,"context_line":"be emitted via the existing ``update_available_resources`` periodic"},{"line_number":338,"context_line":"task if the payload has changed or the TTL has expired."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Additionally, the InstancePayload will be extended to include the"},{"line_number":341,"context_line":"additional resource assignment information."}],"source_content_type":"text/x-rst","patch_set":7,"id":"81f4228c_61afbbeb","line":338,"updated":"2025-12-03 17:36:28.000000000","message":"I thought we talked about a different periodic to allow disabling update_available_resources while still keeping the summary notifications going.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd422890a12afb6f6980fad279f0473f010ae6a4","unresolved":true,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"When the resource notifications are enabled, a new notification will"},{"line_number":337,"context_line":"be emitted via the existing ``update_available_resources`` periodic"},{"line_number":338,"context_line":"task if the payload has changed or the TTL has expired."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Additionally, the InstancePayload will be extended to include the"},{"line_number":341,"context_line":"additional resource assignment information."}],"source_content_type":"text/x-rst","patch_set":7,"id":"8f6e3429_079ce043","line":338,"in_reply_to":"81f4228c_61afbbeb","updated":"2025-12-03 20:09:40.000000000","message":"we did and i reverted to the same one when i reaslist the place i wanted to extend to send the notificaion was in _update_available_resources in the resouce tracker.\n\ni can make ti a sepeate perodic again but i might need to lookup info i dont have in memory.\n\ni have not had the time to resarch that and i dont know if i will be spec freeze.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"When the resource notifications are enabled, a new notification will"},{"line_number":337,"context_line":"be emitted via the existing ``update_available_resources`` periodic"},{"line_number":338,"context_line":"task if the payload has changed or the TTL has expired."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Additionally, the InstancePayload will be extended to include the"},{"line_number":341,"context_line":"additional resource assignment information."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3066b5bd_1cea7f39","line":338,"in_reply_to":"8f6e3429_079ce043","updated":"2025-12-04 15:15:27.000000000","message":"ill resolve this since im proposing deferring the choice of a sepetae periodic to the implemention phase whic i have documented above.","commit_id":"461b2e44265779cec2011085418e489b61a35dd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"49311d1631887cf164277d590f68a675da19d72c","unresolved":true,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":".. note::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  It is desirable to allow this notification to be sent via a new"},{"line_number":97,"context_line":"  periodic task however it is not clear if that can be done without"},{"line_number":98,"context_line":"  addtional db queries. The spec currently extends the"},{"line_number":99,"context_line":"  ``update_available_resources`` periodic task to send the new notification"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ff2c294b_4f908d2b","line":96,"updated":"2025-12-04 13:15:49.000000000","message":"I would wrote done the reason why it is desirable as I think that is important here.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":".. note::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  It is desirable to allow this notification to be sent via a new"},{"line_number":97,"context_line":"  periodic task however it is not clear if that can be done without"},{"line_number":98,"context_line":"  addtional db queries. The spec currently extends the"},{"line_number":99,"context_line":"  ``update_available_resources`` periodic task to send the new notification"}],"source_content_type":"text/x-rst","patch_set":8,"id":"deba90b6_9d942be5","line":96,"in_reply_to":"933a67c9_59880827","updated":"2025-12-04 16:38:05.000000000","message":"Done","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fabbc8712fba3d8e4507621a2818b38b8990650","unresolved":true,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":".. note::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  It is desirable to allow this notification to be sent via a new"},{"line_number":97,"context_line":"  periodic task however it is not clear if that can be done without"},{"line_number":98,"context_line":"  addtional db queries. The spec currently extends the"},{"line_number":99,"context_line":"  ``update_available_resources`` periodic task to send the new notification"}],"source_content_type":"text/x-rst","patch_set":8,"id":"933a67c9_59880827","line":96,"in_reply_to":"ff2c294b_4f908d2b","updated":"2025-12-04 15:15:27.000000000","message":"ok i can add a short summary.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f17e59fff5c1be3dff2aadd349f5f5d8e3ff8fd","unresolved":true,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  It is desirable to allow this notification to be sent via a new"},{"line_number":97,"context_line":"  periodic task however it is not clear if that can be done without"},{"line_number":98,"context_line":"  addtional db queries. The spec currently extends the"},{"line_number":99,"context_line":"  ``update_available_resources`` periodic task to send the new notification"},{"line_number":100,"context_line":"  because it already collects the most important information."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"0871bd95_584dc385","line":98,"range":{"start_line":98,"start_character":2,"end_line":98,"end_character":11},"updated":"2025-12-04 15:06:44.000000000","message":"\"additional\"","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  It is desirable to allow this notification to be sent via a new"},{"line_number":97,"context_line":"  periodic task however it is not clear if that can be done without"},{"line_number":98,"context_line":"  addtional db queries. The spec currently extends the"},{"line_number":99,"context_line":"  ``update_available_resources`` periodic task to send the new notification"},{"line_number":100,"context_line":"  because it already collects the most important information."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"fb80627f_1201f7df","line":98,"range":{"start_line":98,"start_character":2,"end_line":98,"end_character":11},"in_reply_to":"0871bd95_584dc385","updated":"2025-12-04 16:38:05.000000000","message":"Done","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f17e59fff5c1be3dff2aadd349f5f5d8e3ff8fd","unresolved":true,"context_lines":[{"line_number":100,"context_line":"  because it already collects the most important information."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  During the initial implementation we will explore if it is possible to"},{"line_number":103,"context_line":"  retreive all the information in memory without extending"},{"line_number":104,"context_line":"  ``update_available_resources`` periodic to achive this and add a new"},{"line_number":105,"context_line":"  periodic task instead. If it is possible the boolean"},{"line_number":106,"context_line":"  ``resource_notification_enabled`` config option will be replaced with a"}],"source_content_type":"text/x-rst","patch_set":8,"id":"090b8073_8c3e8d7a","line":103,"range":{"start_line":103,"start_character":2,"end_line":103,"end_character":10},"updated":"2025-12-04 15:06:44.000000000","message":"\"retrieve\"","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":100,"context_line":"  because it already collects the most important information."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  During the initial implementation we will explore if it is possible to"},{"line_number":103,"context_line":"  retreive all the information in memory without extending"},{"line_number":104,"context_line":"  ``update_available_resources`` periodic to achive this and add a new"},{"line_number":105,"context_line":"  periodic task instead. If it is possible the boolean"},{"line_number":106,"context_line":"  ``resource_notification_enabled`` config option will be replaced with a"}],"source_content_type":"text/x-rst","patch_set":8,"id":"4fd5ad97_d3b9b5bf","line":103,"range":{"start_line":103,"start_character":2,"end_line":103,"end_character":10},"in_reply_to":"090b8073_8c3e8d7a","updated":"2025-12-04 16:38:05.000000000","message":"Done","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f17e59fff5c1be3dff2aadd349f5f5d8e3ff8fd","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  During the initial implementation we will explore if it is possible to"},{"line_number":103,"context_line":"  retreive all the information in memory without extending"},{"line_number":104,"context_line":"  ``update_available_resources`` periodic to achive this and add a new"},{"line_number":105,"context_line":"  periodic task instead. If it is possible the boolean"},{"line_number":106,"context_line":"  ``resource_notification_enabled`` config option will be replaced with a"},{"line_number":107,"context_line":"  new config option ``resource_notification_period``."}],"source_content_type":"text/x-rst","patch_set":8,"id":"05a96cc6_d27d4f07","line":104,"range":{"start_line":104,"start_character":45,"end_line":104,"end_character":51},"updated":"2025-12-04 15:06:44.000000000","message":"\"achieve\"","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  During the initial implementation we will explore if it is possible to"},{"line_number":103,"context_line":"  retreive all the information in memory without extending"},{"line_number":104,"context_line":"  ``update_available_resources`` periodic to achive this and add a new"},{"line_number":105,"context_line":"  periodic task instead. If it is possible the boolean"},{"line_number":106,"context_line":"  ``resource_notification_enabled`` config option will be replaced with a"},{"line_number":107,"context_line":"  new config option ``resource_notification_period``."}],"source_content_type":"text/x-rst","patch_set":8,"id":"ad4034ac_d8b2aaf9","line":104,"range":{"start_line":104,"start_character":45,"end_line":104,"end_character":51},"in_reply_to":"05a96cc6_d27d4f07","updated":"2025-12-04 16:38:05.000000000","message":"Done","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b6c9394cdd1fa377dd6a9965c78acd33a04e9b43","unresolved":true,"context_lines":[{"line_number":104,"context_line":"  ``update_available_resources`` periodic to achive this and add a new"},{"line_number":105,"context_line":"  periodic task instead. If it is possible the boolean"},{"line_number":106,"context_line":"  ``resource_notification_enabled`` config option will be replaced with a"},{"line_number":107,"context_line":"  new config option ``resource_notification_period``."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To avoid excessive notifications, a new notification will only be sent if the"},{"line_number":110,"context_line":"payload has changed or if the Time To Live (TTL) of the previous notification"}],"source_content_type":"text/x-rst","patch_set":8,"id":"633acb62_de2966db","line":107,"updated":"2025-12-04 16:09:54.000000000","message":"I\u0027m on the side to have a different periodic task for this... yet again due to the payload and the periodic value... even maybe having *different* periodic tasks for providing different resource notifications as some of them don\u0027t need to be provided every minute...","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"452ae9a849f7a6c2dd856522f5f91739cdff4459","unresolved":true,"context_lines":[{"line_number":104,"context_line":"  ``update_available_resources`` periodic to achive this and add a new"},{"line_number":105,"context_line":"  periodic task instead. If it is possible the boolean"},{"line_number":106,"context_line":"  ``resource_notification_enabled`` config option will be replaced with a"},{"line_number":107,"context_line":"  new config option ``resource_notification_period``."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To avoid excessive notifications, a new notification will only be sent if the"},{"line_number":110,"context_line":"payload has changed or if the Time To Live (TTL) of the previous notification"}],"source_content_type":"text/x-rst","patch_set":8,"id":"b15a6a6f_b49ed866","line":107,"in_reply_to":"633acb62_de2966db","updated":"2025-12-04 16:47:00.000000000","message":"the default interval of the perod is 5 minute and the notfiction will only be sent once an hour if there is no change. so im not sure where every minute is coming form","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4f853ded3272bf17a06c81b3404064303046c17","unresolved":true,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":130,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":131,"context_line":"* host: StringField"},{"line_number":132,"context_line":"* hypervisor_hostname: StringField"},{"line_number":133,"context_line":"* hypervisor_type: StringField"},{"line_number":134,"context_line":"* hypervisor_version: IntegerField"},{"line_number":135,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":136,"context_line":"* storage_fsid: StringField(nullable\u003dTrue)"},{"line_number":137,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"0c6ea380_4ed07db9","line":134,"range":{"start_line":131,"start_character":1,"end_line":134,"end_character":34},"updated":"2025-12-04 01:27:19.000000000","message":"i can technilly get the hostname/hypervisor info form the hypervisor api\n\n* host: StringField\n* hypervisor_hostname: StringField\n* hypervisor_type: StringField\n* hypervisor_version: IntegerField\n\nbut these are the primay way that watcher identifies host and having that + the compute_node_uuid and comptue_service_uuid will make things eiaser fo use to look up info in placment and track things liek the compute service status\n\nso unless you really insist i would prefer not to remove these.\n\nat the very minium i need the comptue_node_uuid and the host filed\n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py#L405-L420\nhoever we need the hypervior hostname for other cases\n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py#L319-L326\n\nunfortunately today watcher assume the host and hypervioer_hostnames are interchangeable in places and that is one of the thing i want to fix by ensuring we always have both.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b6c9394cdd1fa377dd6a9965c78acd33a04e9b43","unresolved":true,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":130,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":131,"context_line":"* host: StringField"},{"line_number":132,"context_line":"* hypervisor_hostname: StringField"},{"line_number":133,"context_line":"* hypervisor_type: StringField"},{"line_number":134,"context_line":"* hypervisor_version: IntegerField"},{"line_number":135,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":136,"context_line":"* storage_fsid: StringField(nullable\u003dTrue)"},{"line_number":137,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"325c8adf_286bcbfe","line":134,"range":{"start_line":131,"start_character":1,"end_line":134,"end_character":34},"in_reply_to":"0c6ea380_4ed07db9","updated":"2025-12-04 16:09:54.000000000","message":"that\u0027s something that won\u0027t change every period, right?","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"452ae9a849f7a6c2dd856522f5f91739cdff4459","unresolved":true,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* compute_node_uuid: UUIDField"},{"line_number":130,"context_line":"* compute_service_uuid: UUIDField"},{"line_number":131,"context_line":"* host: StringField"},{"line_number":132,"context_line":"* hypervisor_hostname: StringField"},{"line_number":133,"context_line":"* hypervisor_type: StringField"},{"line_number":134,"context_line":"* hypervisor_version: IntegerField"},{"line_number":135,"context_line":"* storage_type: EnumField(\u0027StorageType\u0027, choices\u003d[\u0027local\u0027, \u0027shared\u0027])"},{"line_number":136,"context_line":"* storage_fsid: StringField(nullable\u003dTrue)"},{"line_number":137,"context_line":"* numa_topology: ObjectField(\u0027NUMATopology\u0027)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa980a20_85af5a22","line":134,"range":{"start_line":131,"start_character":1,"end_line":134,"end_character":34},"in_reply_to":"325c8adf_286bcbfe","updated":"2025-12-04 16:47:00.000000000","message":"correct it wont but we use this to info to find the object we are updating.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b6c9394cdd1fa377dd6a9965c78acd33a04e9b43","unresolved":true,"context_lines":[{"line_number":138,"context_line":"* pci_device_pools: ObjectField(\u0027PciDevicePoolList\u0027, nullable\u003dTrue)"},{"line_number":139,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":140,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":141,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":".. note::"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"c8e14571_0a8b4706","line":141,"updated":"2025-12-04 16:09:54.000000000","message":"still having concerns about the payload for instances but given this is just a list, OK.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"065ad09a746f2d2497eb48135c98c05d9a284b49","unresolved":false,"context_lines":[{"line_number":138,"context_line":"* pci_device_pools: ObjectField(\u0027PciDevicePoolList\u0027, nullable\u003dTrue)"},{"line_number":139,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":140,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":141,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":".. note::"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"c69df34d_dc39a6ac","line":141,"in_reply_to":"ba7bffac_12563549","updated":"2025-12-05 18:10:05.000000000","message":"watcher supports nonfiction to avoid having to call nova\u0027s api.\nthe reason this is here is so that when i receive the update i\ncan tell if my current model of what instance are on the host is out of sync and determine if i need to update the model without querying the API.\n\ninstance exist notification form the instance_task_audit only happen monthly if enabled with our default so they do not help to heal our data model today but i guess i could remove this and just rely on a hourly collector to deal with any missed notification or an api call for a server list on each reconciliation of the notification.\n\nim not really a fan of how watcher currently builds it world view,\nparticularly the fact that its currently a giant in memory structured.\n\ngiven we are at spec freeze and this is not approved i dont know how to proceed.\nill remove this if it will get this over the line.\nwhat i really need are the field that i cant get any other way and this is not one of them.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f9bde8f83049bfac0463a4acc49a7d09485677cd","unresolved":true,"context_lines":[{"line_number":138,"context_line":"* pci_device_pools: ObjectField(\u0027PciDevicePoolList\u0027, nullable\u003dTrue)"},{"line_number":139,"context_line":"* pci_aliases: ListOfObjectsField(\u0027PciAlias\u0027)"},{"line_number":140,"context_line":"* mdev_devices: ListOfObjectsField(\u0027MdevType\u0027)"},{"line_number":141,"context_line":"* instances: ListOfStringsField # list of instance UUIDs"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":".. note::"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba7bffac_12563549","line":141,"in_reply_to":"c8e14571_0a8b4706","updated":"2025-12-04 21:24:57.000000000","message":"TBH, I\u0027m not sure why this is required. It\u0027s trivial to get the instance uuids from the API with a host filter right? Also, the actual instance information is sent separately, so if the external system is tracking those changes, it should already know where every instance is, right? It\u0027s definitely better than whole instance objects, but since this is still pretty big it seems like this is something we could do without.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f17e59fff5c1be3dff2aadd349f5f5d8e3ff8fd","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  Both the storage_type and storage_fsid are optional and could be"},{"line_number":156,"context_line":"  removed from the MVP if needed in favor of the long term solution"},{"line_number":157,"context_line":"  but are included as they are not currently discoverable by external"},{"line_number":158,"context_line":"  systems."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"PciAlias"},{"line_number":161,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"8f3cdb87_16050d3b","line":158,"updated":"2025-12-04 15:06:44.000000000","message":"Personally I don\u0027t like having `storage_type` here because, unless I\u0027m missing something, we can\u0027t reliably make this determination (even just being on NFS doesn\u0027t mean our storage is actually shared with anything).","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc7c2d0e078f84407a90d1618f0536943c3c101b","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  Both the storage_type and storage_fsid are optional and could be"},{"line_number":156,"context_line":"  removed from the MVP if needed in favor of the long term solution"},{"line_number":157,"context_line":"  but are included as they are not currently discoverable by external"},{"line_number":158,"context_line":"  systems."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"PciAlias"},{"line_number":161,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"c41baf26_2ebe51a3","line":158,"in_reply_to":"8f3cdb87_16050d3b","updated":"2025-12-04 15:20:44.000000000","message":"storage_fsid was intened to adresss that but ok for now ill just remvoe\n\nstorage_type nad storage_fsid\n\nill see if i can write up something for reporting storage affinity via sharing resouce providers for a future release.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  Both the storage_type and storage_fsid are optional and could be"},{"line_number":156,"context_line":"  removed from the MVP if needed in favor of the long term solution"},{"line_number":157,"context_line":"  but are included as they are not currently discoverable by external"},{"line_number":158,"context_line":"  systems."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"PciAlias"},{"line_number":161,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5bbbe8d4_9b319cb8","line":158,"in_reply_to":"c41baf26_2ebe51a3","updated":"2025-12-04 16:38:05.000000000","message":"i remove sotrage type and kept storage_fsid based on our irc converstaion","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f17e59fff5c1be3dff2aadd349f5f5d8e3ff8fd","unresolved":true,"context_lines":[{"line_number":171,"context_line":"  \u0027NumaPolicy\u0027, choices\u003d[\u0027required\u0027, \u0027preferred\u0027, \u0027legacy\u0027, \u0027socket\u0027])"},{"line_number":172,"context_line":"* resource_class: StringField"},{"line_number":173,"context_line":"* traits: ListOfStringsField"},{"line_number":174,"context_line":"* live_migratable: BooleanField"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"MdevType"},{"line_number":177,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ce845b37_57a82ac2","line":174,"updated":"2025-12-04 15:06:44.000000000","message":"Just to be clear, this is just us sending our config via notification right? Meaning, this is not anything about allocated resources, but only what our config says?","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f9bde8f83049bfac0463a4acc49a7d09485677cd","unresolved":true,"context_lines":[{"line_number":171,"context_line":"  \u0027NumaPolicy\u0027, choices\u003d[\u0027required\u0027, \u0027preferred\u0027, \u0027legacy\u0027, \u0027socket\u0027])"},{"line_number":172,"context_line":"* resource_class: StringField"},{"line_number":173,"context_line":"* traits: ListOfStringsField"},{"line_number":174,"context_line":"* live_migratable: BooleanField"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"MdevType"},{"line_number":177,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"37c3d2c7_d21f4dd5","line":174,"in_reply_to":"304aeec1_6ff25d4e","updated":"2025-12-04 21:24:57.000000000","message":"My point is.. this and mdev are basically just us broadcasting our extremely static config elements over RPC periodically because they\u0027re not easily fetchable from anywhere else right? When we discussed this at PTG, I (at least) was thinking that these notifications would be highly dynamic information about resource allocation/availability and not things like copies of our static config.\n\nCan\u0027t we solve the visibility if live-migrate-ability of a resource by exposing that in the InstancePayload/InstancePciDevice when we send that for an actual instance allocation instead of repeating the config information over and over?","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"065ad09a746f2d2497eb48135c98c05d9a284b49","unresolved":true,"context_lines":[{"line_number":171,"context_line":"  \u0027NumaPolicy\u0027, choices\u003d[\u0027required\u0027, \u0027preferred\u0027, \u0027legacy\u0027, \u0027socket\u0027])"},{"line_number":172,"context_line":"* resource_class: StringField"},{"line_number":173,"context_line":"* traits: ListOfStringsField"},{"line_number":174,"context_line":"* live_migratable: BooleanField"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"MdevType"},{"line_number":177,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dbd82c9f_b9ee21b2","line":174,"in_reply_to":"37c3d2c7_d21f4dd5","updated":"2025-12-05 18:10:05.000000000","message":"we could but only if there is a instance with the relevant alias or mdev used.\n\nThat would increase the size fo the notification that are sent often to reduce the size of the one that is sent infrequently.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":171,"context_line":"  \u0027NumaPolicy\u0027, choices\u003d[\u0027required\u0027, \u0027preferred\u0027, \u0027legacy\u0027, \u0027socket\u0027])"},{"line_number":172,"context_line":"* resource_class: StringField"},{"line_number":173,"context_line":"* traits: ListOfStringsField"},{"line_number":174,"context_line":"* live_migratable: BooleanField"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"MdevType"},{"line_number":177,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"304aeec1_6ff25d4e","line":174,"in_reply_to":"ce845b37_57a82ac2","updated":"2025-12-04 16:38:05.000000000","message":"correct this is basiclly the json schema for the pci aliase encoded in an ovo\n\nhttps://github.com/openstack/nova/blob/master/nova/pci/request.py#L73-L121\n\nwe could use this object in the future in the PCI tracker instead but i dint include doing that in this spec.\n\ncurrently we never send the alias over rpc so we have not needed to make it an object before now.\n\nwe send pci request objects instead.\n\nfrom the flavor you cannot currently tell if a pci passhtough alaise is live mgirateable or not as an example which this resolves.\n\nin a future version of watcher my intent is to diallow live migration fo an instance has a pci request in the flavor an fall back to generating cold migration unles live_migratable\u003d\u003dtrue. today we alwasy try to live migrate and that action will just fail cause the action plan to fail.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f17e59fff5c1be3dff2aadd349f5f5d8e3ff8fd","unresolved":true,"context_lines":[{"line_number":182,"context_line":"* resource_provider_uuids: DictOfStringsField()"},{"line_number":183,"context_line":"  A dictionary mapping resource provider uuids to device addresses."},{"line_number":184,"context_line":"* mdev_class: StringField"},{"line_number":185,"context_line":"* max_instances: IntegerField(nullable\u003dTrue)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"InstancePayload"},{"line_number":188,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"35e6afb4_25c63891","line":185,"updated":"2025-12-04 15:06:44.000000000","message":"Same?","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":182,"context_line":"* resource_provider_uuids: DictOfStringsField()"},{"line_number":183,"context_line":"  A dictionary mapping resource provider uuids to device addresses."},{"line_number":184,"context_line":"* mdev_class: StringField"},{"line_number":185,"context_line":"* max_instances: IntegerField(nullable\u003dTrue)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"InstancePayload"},{"line_number":188,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"59486908_738abf76","line":185,"in_reply_to":"35e6afb4_25c63891","updated":"2025-12-04 16:38:05.000000000","message":"yes. this cloases the fact that we cant tell fi a generic custom resouce class is a gpu.\n\nit will also help us correlate gpu metrics in the future.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f17e59fff5c1be3dff2aadd349f5f5d8e3ff8fd","unresolved":true,"context_lines":[{"line_number":193,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027, nullable\u003dTrue)"},{"line_number":194,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027, nullable\u003dTrue)"},{"line_number":195,"context_line":"* numa_topology: ObjectField(\u0027InstanceNUMATopology\u0027, nullable\u003dTrue)"},{"line_number":196,"context_line":"* image: ObjectField(\u0027ImageMeta\u0027, nullable\u003dTrue)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":".. note::"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bce63233_d7204256","line":196,"updated":"2025-12-04 15:06:44.000000000","message":"~~I still think this is too big. We should notify about instance allocation when it happens, but I think this is going to be massive when we have `node.instances[n].{pci_devices,mdev_devices,numa_topology}`. IMHO, notifications are to indicate that something happened, and sending a full dump of the current state of an entire compute node periodically (on any schedule) feels wrong.~~\n\n-- later --\n\nUm, are you talking about just adding these fields to the existing InstancePayload to be sent when we send those? It wasn\u0027t until the alternatives section below that I went back to see that `instances` is back to `ListOfStringsField` in your `ResourceSummaryPayload`. Assuming that\u0027s right, I think it might be worth moving this to a separate subsection with some text like \"...and also, separate from the above, we\u0027ll add these fields to the existing...\"","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":193,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027, nullable\u003dTrue)"},{"line_number":194,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027, nullable\u003dTrue)"},{"line_number":195,"context_line":"* numa_topology: ObjectField(\u0027InstanceNUMATopology\u0027, nullable\u003dTrue)"},{"line_number":196,"context_line":"* image: ObjectField(\u0027ImageMeta\u0027, nullable\u003dTrue)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":".. note::"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"688dc6af_23aeb554","line":196,"in_reply_to":"a93b4444_861b14a0","updated":"2025-12-04 16:38:05.000000000","message":"i have added a section to call this out at the top hopefully that make it clearer","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc7c2d0e078f84407a90d1618f0536943c3c101b","unresolved":true,"context_lines":[{"line_number":193,"context_line":"* pci_devices: ListOfObjectsField(\u0027InstancePciDevice\u0027, nullable\u003dTrue)"},{"line_number":194,"context_line":"* mdev_devices: ListOfObjectsField(\u0027InstanceMdevDevice\u0027, nullable\u003dTrue)"},{"line_number":195,"context_line":"* numa_topology: ObjectField(\u0027InstanceNUMATopology\u0027, nullable\u003dTrue)"},{"line_number":196,"context_line":"* image: ObjectField(\u0027ImageMeta\u0027, nullable\u003dTrue)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":".. note::"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"a93b4444_861b14a0","line":196,"in_reply_to":"bce63233_d7204256","updated":"2025-12-04 15:20:44.000000000","message":"ack thanks i can do that","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5f17e59fff5c1be3dff2aadd349f5f5d8e3ff8fd","unresolved":true,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"We could extend the hypervisors API to expose NUMA topology and device"},{"line_number":255,"context_line":"information and other fields in the notification. However, that would"},{"line_number":256,"context_line":"require doing several cell database lookups for each compute node to"},{"line_number":257,"context_line":"build the full picture and require querying placement in the case of"},{"line_number":258,"context_line":"generic mdev devices as they are not tracked in Nova\u0027s DB."},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"0bf0a195_2300802e","line":256,"range":{"start_line":256,"start_character":14,"end_line":256,"end_character":43},"updated":"2025-12-04 15:06:44.000000000","message":"Unless by \"several\" you mean \"one\", I think I\u0027m missing something here.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc7c2d0e078f84407a90d1618f0536943c3c101b","unresolved":true,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"We could extend the hypervisors API to expose NUMA topology and device"},{"line_number":255,"context_line":"information and other fields in the notification. However, that would"},{"line_number":256,"context_line":"require doing several cell database lookups for each compute node to"},{"line_number":257,"context_line":"build the full picture and require querying placement in the case of"},{"line_number":258,"context_line":"generic mdev devices as they are not tracked in Nova\u0027s DB."},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"b4932852_4570ecbf","line":256,"range":{"start_line":256,"start_character":14,"end_line":256,"end_character":43},"in_reply_to":"0bf0a195_2300802e","updated":"2025-12-04 15:20:44.000000000","message":"well i was more thinking that we need tdata form several tables in teh cell db and we would be callign all cells but ya i guess this is pahsed badly\n\nyour right that for any one compute  or instnace it is obvioulsy only in one cell.","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc66cb8993adbf972f121be8e0f354f4abc628fe","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"We could extend the hypervisors API to expose NUMA topology and device"},{"line_number":255,"context_line":"information and other fields in the notification. However, that would"},{"line_number":256,"context_line":"require doing several cell database lookups for each compute node to"},{"line_number":257,"context_line":"build the full picture and require querying placement in the case of"},{"line_number":258,"context_line":"generic mdev devices as they are not tracked in Nova\u0027s DB."},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ae9cb145_0f6dbf35","line":256,"range":{"start_line":256,"start_character":14,"end_line":256,"end_character":43},"in_reply_to":"b4932852_4570ecbf","updated":"2025-12-04 16:38:05.000000000","message":"Done","commit_id":"7649f25c4c9d94267ec87e2638ba673d31858221"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f9bde8f83049bfac0463a4acc49a7d09485677cd","unresolved":true,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"  Decoupling the behavior removes the tension between reducing load by"},{"line_number":105,"context_line":"  reducing the frequency of the _update_available_resources and allowing"},{"line_number":106,"context_line":"  external system to react quickly to resource changes."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"  Since the change in resources are correlated to changes in configuration"},{"line_number":109,"context_line":"  or hardware changes this is expected to be a rare event."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1be4997f_2277b0e0","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":10},"updated":"2025-12-04 21:24:57.000000000","message":"\"the external\"","commit_id":"1148d9dc80a94834d964f520bc6df156f9b36f13"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"065ad09a746f2d2497eb48135c98c05d9a284b49","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"  Decoupling the behavior removes the tension between reducing load by"},{"line_number":105,"context_line":"  reducing the frequency of the _update_available_resources and allowing"},{"line_number":106,"context_line":"  external system to react quickly to resource changes."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"  Since the change in resources are correlated to changes in configuration"},{"line_number":109,"context_line":"  or hardware changes this is expected to be a rare event."}],"source_content_type":"text/x-rst","patch_set":9,"id":"04908988_ca862690","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":10},"in_reply_to":"1be4997f_2277b0e0","updated":"2025-12-05 18:10:05.000000000","message":"Done","commit_id":"1148d9dc80a94834d964f520bc6df156f9b36f13"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f9bde8f83049bfac0463a4acc49a7d09485677cd","unresolved":true,"context_lines":[{"line_number":165,"context_line":"  when the image_type is rbd. Nova cannot move instances between"},{"line_number":166,"context_line":"  different storage backends or different ceph pools."},{"line_number":167,"context_line":"  This could also be used for other backends in the future either"},{"line_number":168,"context_line":"  via the statfs syscall or declaring the FSID in a file."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"  Long term we should report the shared storage connectivity to"},{"line_number":171,"context_line":"  placement with a placement aggregate per FSID for compute hosts using"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ddcd1cc6_5ae1827c","line":168,"updated":"2025-12-04 21:24:57.000000000","message":"Apparently the fsid in the statfs() call is not safe to report externally and is only shown to root on some systems so.. probably not.","commit_id":"1148d9dc80a94834d964f520bc6df156f9b36f13"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"065ad09a746f2d2497eb48135c98c05d9a284b49","unresolved":false,"context_lines":[{"line_number":165,"context_line":"  when the image_type is rbd. Nova cannot move instances between"},{"line_number":166,"context_line":"  different storage backends or different ceph pools."},{"line_number":167,"context_line":"  This could also be used for other backends in the future either"},{"line_number":168,"context_line":"  via the statfs syscall or declaring the FSID in a file."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"  Long term we should report the shared storage connectivity to"},{"line_number":171,"context_line":"  placement with a placement aggregate per FSID for compute hosts using"}],"source_content_type":"text/x-rst","patch_set":9,"id":"c0fe2724_bb3ae34d","line":168,"in_reply_to":"ddcd1cc6_5ae1827c","updated":"2025-12-05 18:10:05.000000000","message":"ack then for other backend we will likely take a simplar approch to what you did for the compute-id file or jsut have it as an optional config option. i.e. a way to declare this rather then auto discoverign it\n\nthat is out of scope of this spec anyway. but since im updating it to remvoe the list of instance ill remove the refence to statfs.","commit_id":"1148d9dc80a94834d964f520bc6df156f9b36f13"}]}
