)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2fbd1c46dea0632032e763c09799c09929a8f5bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"846e3acb_27e3534c","updated":"2022-05-03 07:53:09.000000000","message":"Made a grammarly run on the text","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cb39bf20_2be9aa92","updated":"2022-05-09 13:32:39.000000000","message":"We talked through the open questions with Sean on IRC[1]. I noted the agreements inline and I will respin the spec accordingly.\n\n[1] https://meetings.opendev.org/irclogs/%23openstack-nova/%23openstack-nova.2022-05-09.log.html#t2022-05-09T11:38:04","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"91309509_872fd3ce","updated":"2022-05-10 12:24:26.000000000","message":"+1 over all as i think the direction is correct but i think there are still some open questions inline that need to be adressed. this is makeing good progress.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"946715d6e4b672c0926a59589413d64d46898828","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7b3079f8_4f08e3fd","updated":"2022-05-11 17:38:56.000000000","message":"Apologies in advance if I am way off on understanding how placement works. Don\u0027t feel obligated to spend a lot of time re-explaining it if I\u0027ve got it wrong again.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a68c27bf_0a452fb3","updated":"2022-05-13 10:49:04.000000000","message":"The -1 is just for nits because I know gibi plans to rework this. I am still opposed to carrying over the complicated dynamic-PF-or-VF logic into the new placement world but as I\u0027m not doing this work, I\u0027m certainly not going to block it. However, I do think we *really* need to think about the effort and complexity involved in this before committing to it","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3a964bb1_8ec7f991","updated":"2022-05-13 15:34:30.000000000","message":"Great discussion! Thank you Sean, Melanie, Stephen. I updated the spec with the latest agreements.","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5f15a0d79d9f32b1accc6dc2fa8caea1fe05d506","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"72657dba_294f9ce5","updated":"2022-05-16 19:10:26.000000000","message":"Simplifying to disallow passing through both PF and its VFs at the same time does make this feature significantly easier to understand. Does everyone think there would be minimal operator pushback about losing that ability? (I hope so.) If we think it would be received similarly as the removal of support for mixing pinned + unpinned CPUs that stephenfin described was, then I think this sounds like a good way forward.","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3c4b63be1306ada9b5cb70ece0588919de5b130","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a31b44cb_c8f62c0c","updated":"2022-05-16 11:13:18.000000000","message":"This looks good to me now. I\u0027m going to hold off +2ing since Mel and Sean are both looking at this and I don\u0027t want to preempt either of them","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3f24fa1f_629190d3","in_reply_to":"72657dba_294f9ce5","updated":"2022-05-17 12:24:42.000000000","message":"i think it would be recived similarly but they did not exactly like that change :P","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"c416edc25894d0b6ec031c9ed8fd5527204a2e8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8419d61e_2b3616f8","updated":"2022-05-17 21:53:55.000000000","message":"Changes look good","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19812757892a0217dacc5b4441059019c7b811db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2d95b135_9b24c141","updated":"2022-05-23 15:53:40.000000000","message":"I have a nit on the option name. This feels bikesheddy so I won\u0027t -1 but I won\u0027t +2 either just to make sure it\u0027s seen. Otherwise I\u0027m a-okay with this.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1d86883be77a3d3e0022893c5fc59de2e49ab3d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"86939c9f_3e018b02","updated":"2022-05-20 16:35:44.000000000","message":"Latest changes look good!","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e744377c9e1a61cc23e277a687d2780657ced9f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e5483f0e_049bd9ee","updated":"2022-05-24 16:37:16.000000000","message":"So remaining questions (see the discussions inline)\n\n[pci]device_list:\n* Do we have a better name?\n* Do we want to add this as a new config option compared to just renaming the old [pci]passthrough_whitelist?\n\nresource_class naming:\n* normalize and prefix automatically with CUSTOM_\n* OR force the admin to use CUSTOM_ prefix in the config\n\n\n","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3c53b85d_93107abf","updated":"2022-05-23 16:52:47.000000000","message":"The whole direction seems good to me but I have some thoughts about the config option naming.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"74e1f0bd6c088ad45f80b1e807f70ea87b390d54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"5be9870b_0569f181","updated":"2022-05-19 14:33:42.000000000","message":"thansk for adressing the remaining nits gibi\ni am quite happy with this version so +2","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08b265be09dbf417092605aebf7dac81498f722b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1701091e_96b124b7","in_reply_to":"e5483f0e_049bd9ee","updated":"2022-05-25 17:22:31.000000000","message":"changing \n[pci]passthrough_whitelist? is a politcal request not a technial one.\n\ni am not against doing it but i am agaest doing it for just that reason.\ni am fine with updating it as part of large work in this area but not on its own.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e375f9a7_76e9f707","updated":"2022-05-25 11:49:54.000000000","message":"I think all the open questions are resolved","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"13b2cbb795dc6fa69df53adbebf6b77e0b74b51a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1c2bc820_7983f053","updated":"2022-05-25 16:48:21.000000000","message":"Looks good, I like the new config option name too. +1 as Sean needs to look again","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59e8343995b2c6ef5c898733ddddc9f6d77cdea7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6bfc5a5a_19cd1f4b","updated":"2022-05-25 16:33:22.000000000","message":"Wonderful. Thank you for following up on comments up 🙏","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"4ab8ff485f11d130eb4b12b2fdd402188e53a8fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3dc12336_f5f0f55b","updated":"2022-08-29 04:14:32.000000000","message":"may I ask the different between this bp and cyborg? Looks to me, they are basically doing the same stuff.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"95e20197eacb77d18862cd13720da7c8db0c5f1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b8793965_036e2207","updated":"2022-08-10 14:04:54.000000000","message":"noted more deviation from the plans","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5fd0d53e_c5d5000a","updated":"2022-08-30 15:27:51.000000000","message":"pushed a FUP https://review.opendev.org/c/openstack/nova-specs/+/855218","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08b265be09dbf417092605aebf7dac81498f722b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"db7637e4_1cfa3b93","updated":"2022-05-25 17:22:31.000000000","message":"so minor nits but i dont see anything here that requries a respin so +2+w\n\nthanks very much for taking this on gibi and tanks fo melanin and stephen for also reviewing.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"504e07097c50321fa9b7da88d9436c664ac02b72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7838511d_0370ec4f","in_reply_to":"3dc12336_f5f0f55b","updated":"2022-08-29 11:36:06.000000000","message":"This an extension of the existing nova functionality. We\u0027re merely adding placement resource tracking for the existing PCI passthrough functionality for static devices (i.e. not things that need a provisioning or deprovisioning step) found in nova since Mitaka or so. Cyborg does far more than this but requires deployment of a separate service.\n\nIt probably would be worth adding a note in the PCI passthrough docs linking to Cyborg for those most advanced use cases. That would be a good change, if you were interested?","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1db4312919a496791d99c7a0d1d1a871f1448230","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e7113914_0e732112","in_reply_to":"67bbbd0b_cb7d6789","updated":"2022-08-31 08:48:19.000000000","message":"Yes, this will replace the filter eventually (though not yet, since we aren\u0027t migrating everything). As I said above, there was already some overlap between Nova\u0027s PCI passthrough functionality and Cyborg. Nothing\u0027s changed there.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"98a123b7946a49f2d08d29e3ab7cce48ad42506f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"67bbbd0b_cb7d6789","in_reply_to":"7838511d_0370ec4f","updated":"2022-08-31 00:20:57.000000000","message":"do we plan to use placement to replace pci_passthrough_filter? so this bp will implement a subset of functions provided by cyborg?","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"}],"specs/xena/approved/pci-device-tracking-in-placement.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":".."},{"line_number":8,"context_line":"  \u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":"  Title"},{"line_number":10,"context_line":"  \u003d\u003d\u003d\u003d\u003d"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"  header 1"},{"line_number":13,"context_line":"  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"  header 2"},{"line_number":16,"context_line":"  --------"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  header 3"},{"line_number":19,"context_line":"  ~~~~~~~~"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"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"}],"source_content_type":"text/x-rst","patch_set":1,"id":"035d6801_28e4f570","line":19,"range":{"start_line":8,"start_character":1,"end_line":19,"end_character":10},"updated":"2021-05-13 17:42:35.000000000","message":"ok so this did not work","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":".."},{"line_number":8,"context_line":"  \u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":"  Title"},{"line_number":10,"context_line":"  \u003d\u003d\u003d\u003d\u003d"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"  header 1"},{"line_number":13,"context_line":"  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"  header 2"},{"line_number":16,"context_line":"  --------"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  header 3"},{"line_number":19,"context_line":"  ~~~~~~~~"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"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"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ae2093b0_53611952","line":19,"range":{"start_line":8,"start_character":1,"end_line":19,"end_character":10},"in_reply_to":"035d6801_28e4f570","updated":"2022-05-02 16:10:19.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":50,"context_line":"While the current approach to pci tracking works there are some limitations"},{"line_number":51,"context_line":"in the current design and there is room for optimization."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"limitation 1"},{"line_number":54,"context_line":"~~~~~~~~~~~~"},{"line_number":55,"context_line":"During server create pci devices are not claimed until the instance_claim"},{"line_number":56,"context_line":"is created on the compute node. As a result its possible for two concurrent"},{"line_number":57,"context_line":"server create requests to race for the last device on a host."}],"source_content_type":"text/x-rst","patch_set":1,"id":"2fab376e_9c38f96c","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":12},"updated":"2021-05-13 17:42:35.000000000","message":"ill have to change how i do this since this is beeing converted to a header 2\ninstadof a header 3 like i wanted but that fine ill do that in the next version.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":50,"context_line":"While the current approach to pci tracking works there are some limitations"},{"line_number":51,"context_line":"in the current design and there is room for optimization."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"limitation 1"},{"line_number":54,"context_line":"~~~~~~~~~~~~"},{"line_number":55,"context_line":"During server create pci devices are not claimed until the instance_claim"},{"line_number":56,"context_line":"is created on the compute node. As a result its possible for two concurrent"},{"line_number":57,"context_line":"server create requests to race for the last device on a host."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4f19fd83_6968c84e","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":12},"in_reply_to":"2fab376e_9c38f96c","updated":"2022-05-02 16:10:19.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"725af0bc10c45cdf9072458f07c88a087351aade","unresolved":true,"context_lines":[{"line_number":56,"context_line":"is created on the compute node. As a result its possible for two concurrent"},{"line_number":57,"context_line":"server create requests to race for the last device on a host."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"limitation 2"},{"line_number":60,"context_line":"~~~~~~~~~~~~"},{"line_number":61,"context_line":"While nova today tracks the capabilities of network interfaces in the"},{"line_number":62,"context_line":"pci_devices extra info table and the pci passthrough filter could match on"}],"source_content_type":"text/x-rst","patch_set":1,"id":"201f41d0_21ef7653","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":12},"updated":"2021-05-13 17:59:48.000000000","message":"by the way one way to scope down this propsoal while still being usefule would be to jsut target the pci passtough usecase intially and entirely defer the neutron port part.\n\ne.g. just report pci deivceies that can be consumed by a pci alias\n\nthe motivation for reducing the scope in this way would be to punt on the network interface modelling untill we could unify the RP created by nova and neutron in some way.\n\ni do not actully know how to do that yes which is why the current propoasl assumes we will have 2 RPs.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":true,"context_lines":[{"line_number":56,"context_line":"is created on the compute node. As a result its possible for two concurrent"},{"line_number":57,"context_line":"server create requests to race for the last device on a host."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"limitation 2"},{"line_number":60,"context_line":"~~~~~~~~~~~~"},{"line_number":61,"context_line":"While nova today tracks the capabilities of network interfaces in the"},{"line_number":62,"context_line":"pci_devices extra info table and the pci passthrough filter could match on"}],"source_content_type":"text/x-rst","patch_set":1,"id":"de201781_be504a34","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":12},"in_reply_to":"201f41d0_21ef7653","updated":"2021-05-17 15:38:19.000000000","message":"Hm, that might be a good cut of the scope. One question though? Does neutron related InstancePCIRequest only consume type PF, VF and VDPA devices while PCI passthrough only consumes type PCI? If yes, then we have a clear cut.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":56,"context_line":"is created on the compute node. As a result its possible for two concurrent"},{"line_number":57,"context_line":"server create requests to race for the last device on a host."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"limitation 2"},{"line_number":60,"context_line":"~~~~~~~~~~~~"},{"line_number":61,"context_line":"While nova today tracks the capabilities of network interfaces in the"},{"line_number":62,"context_line":"pci_devices extra info table and the pci passthrough filter could match on"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fffe9de_bb559145","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":12},"in_reply_to":"4222e45e_2c1e4e20","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3945fa0acd8302788d9f412e664b0353746a88a1","unresolved":true,"context_lines":[{"line_number":56,"context_line":"is created on the compute node. As a result its possible for two concurrent"},{"line_number":57,"context_line":"server create requests to race for the last device on a host."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"limitation 2"},{"line_number":60,"context_line":"~~~~~~~~~~~~"},{"line_number":61,"context_line":"While nova today tracks the capabilities of network interfaces in the"},{"line_number":62,"context_line":"pci_devices extra info table and the pci passthrough filter could match on"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4222e45e_2c1e4e20","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":12},"in_reply_to":"c0cf9cc0_932de0c0","updated":"2021-05-18 13:58:11.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d5238833e50ddaf2af9ee76a9d619534e9c9234","unresolved":true,"context_lines":[{"line_number":56,"context_line":"is created on the compute node. As a result its possible for two concurrent"},{"line_number":57,"context_line":"server create requests to race for the last device on a host."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"limitation 2"},{"line_number":60,"context_line":"~~~~~~~~~~~~"},{"line_number":61,"context_line":"While nova today tracks the capabilities of network interfaces in the"},{"line_number":62,"context_line":"pci_devices extra info table and the pci passthrough filter could match on"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c0cf9cc0_932de0c0","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":12},"in_reply_to":"de201781_be504a34","updated":"2021-05-18 10:49:06.000000000","message":"no unfortunately but its almost as simple.\n\nneutron can only get devices the have physical_network set in the pci whitelist\n\nalias match on vendor id and product id\n\nhttps://github.com/openstack/nova/blob/master/nova/pci/request.py#L85-L92\n\nso the can match devices that have physical_network present or absent in the pci whitelist.\n\n\ni would personally prefer not ot have to scope this down in designs but approach the implementation by completing the pci passthough part first then the neutron part.\n\nif it took to cyle to complete that would still be ok since each part would be independet.\nlets see if this is needed or not.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":79,"context_line":"Use Cases"},{"line_number":80,"context_line":"---------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":85,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":1,"id":"8d54cc4b_5f704eaa","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":53},"updated":"2021-05-13 16:28:51.000000000","message":"Atomic claim alone does not prevent two racing scheduler processes to select the same candidate and that the second process claiming that to fail and retry. What moving the claim to the scheduler does, is to limit the race window significantly (from seconds to milliseconds).","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Use Cases"},{"line_number":80,"context_line":"---------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":85,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f09bad4_4a9fcc89","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":53},"in_reply_to":"6681e71d_69e79408","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":79,"context_line":"Use Cases"},{"line_number":80,"context_line":"---------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":85,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fef29667_8d251cfc","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":53},"in_reply_to":"8d54cc4b_5f704eaa","updated":"2021-05-13 17:42:35.000000000","message":"well if we just have the placement allocation without moving the claim form the compute node to the scudler/conductor then yes. we can still race but we will discover the race when we try to claim the plamcent allocation.\n \nideally we would also start claiming the pci device or perhaps doing the entire instnace claim in the conductor in addtion to that.\n\nwe cant unfortually put the placemnt allocat and resouce tracker claim into a transation to make it turely atomic but i think we can get most of the way there.\n\nbut you are correct what im proposing below is not enough to fully meet this goal.\n\nit woudl be nice however if we could eventuraly get to the point where we will never retry due to resouce claiming on the compute node at least i think that should be our end goal but its out of scope of this spec to fully resolve that.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d5238833e50ddaf2af9ee76a9d619534e9c9234","unresolved":true,"context_lines":[{"line_number":79,"context_line":"Use Cases"},{"line_number":80,"context_line":"---------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":85,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":1,"id":"c5f9b2c6_a9158527","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":53},"in_reply_to":"9f924f48_d40cffc6","updated":"2021-05-18 10:49:06.000000000","message":"yes although in that case either it will succeed in which case it was not a race to begin with or one of the two will fail to create the allocation and then we will try a different allocation candidate instead.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3945fa0acd8302788d9f412e664b0353746a88a1","unresolved":true,"context_lines":[{"line_number":79,"context_line":"Use Cases"},{"line_number":80,"context_line":"---------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":85,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":1,"id":"6681e71d_69e79408","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":53},"in_reply_to":"c5f9b2c6_a9158527","updated":"2021-05-18 13:58:11.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":true,"context_lines":[{"line_number":79,"context_line":"Use Cases"},{"line_number":80,"context_line":"---------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":85,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f924f48_d40cffc6","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":53},"in_reply_to":"fef29667_8d251cfc","updated":"2021-05-17 15:38:19.000000000","message":"\u003e well if we just have the placement allocation without moving the claim form the compute node to the scudler/conductor then yes. we can still race but we will discover the race when we try to claim the plamcent allocation.\n\u003e  \n\u003e ideally we would also start claiming the pci device or perhaps doing the entire instnace claim in the conductor in addtion to that.\n\u003e \n\u003e we cant unfortually put the placemnt allocat and resouce tracker claim into a transation to make it turely atomic but i think we can get most of the way there.\n\u003e \n\u003e but you are correct what im proposing below is not enough to fully meet this goal.\n\u003e \n\u003e it woudl be nice however if we could eventuraly get to the point where we will never retry due to resouce claiming on the compute node at least i think that should be our end goal but its out of scope of this spec to fully resolve that.\n\nI think we cannot reach 100% with the current Placement API as the GET a_c query and the PUT /allocations request translated to two separate and independent DB transactions. So two scheduler or conductor processes can in parallel query a_c, get the same result, select the same allocation, and try to PUT the same allocation back and only one of them will succeed.\n\nStill your proposal is a good step forward.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":124,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":125,"context_line":"  in the scope of this spec. As detailed in the Moddeling device in placment"},{"line_number":126,"context_line":"  section, each physical device (PF) will be its own resouce provider with inventories"},{"line_number":127,"context_line":"  of the relevent inventories. as such traits cannot vary per VF/VDPA device."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Open Question while we are here shoudl we rename the [pci]/passthroug_whitelist"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ede47426_ebf86bf1","line":127,"range":{"start_line":127,"start_character":9,"end_line":127,"end_character":17},"updated":"2021-05-13 16:28:51.000000000","message":"relevant","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":124,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":125,"context_line":"  in the scope of this spec. As detailed in the Moddeling device in placment"},{"line_number":126,"context_line":"  section, each physical device (PF) will be its own resouce provider with inventories"},{"line_number":127,"context_line":"  of the relevent inventories. as such traits cannot vary per VF/VDPA device."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Open Question while we are here shoudl we rename the [pci]/passthroug_whitelist"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d521f0ea_72974d6b","line":127,"range":{"start_line":127,"start_character":9,"end_line":127,"end_character":17},"in_reply_to":"ede47426_ebf86bf1","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Open Question while we are here shoudl we rename the [pci]/passthroug_whitelist"},{"line_number":131,"context_line":"to something else? [pci]/device_include_list? [pci]/device_filter?"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"pci alias"},{"line_number":134,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"eef9ef86_88c50931","line":131,"updated":"2021-05-13 16:28:51.000000000","message":"I think the renaming can be done independently. I suggest an even simpler name [pci]device_list","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Open Question while we are here shoudl we rename the [pci]/passthroug_whitelist"},{"line_number":131,"context_line":"to something else? [pci]/device_include_list? [pci]/device_filter?"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"pci alias"},{"line_number":134,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2a62b22e_13488202","line":131,"in_reply_to":"0ee9fac0_595098d8","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":true,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Open Question while we are here shoudl we rename the [pci]/passthroug_whitelist"},{"line_number":131,"context_line":"to something else? [pci]/device_include_list? [pci]/device_filter?"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"pci alias"},{"line_number":134,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0ee9fac0_595098d8","line":131,"in_reply_to":"0f551108_cf5a1c9c","updated":"2021-05-17 15:38:19.000000000","message":"I agree. I support the name change. I only suggested separation to limit the scope of this spec.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Open Question while we are here shoudl we rename the [pci]/passthroug_whitelist"},{"line_number":131,"context_line":"to something else? [pci]/device_include_list? [pci]/device_filter?"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"pci alias"},{"line_number":134,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0f551108_cf5a1c9c","line":131,"in_reply_to":"eef9ef86_88c50931","updated":"2021-05-13 17:42:35.000000000","message":"yep i like \n\n[pci]device_list\n\ni just wanted to see if there was an apitie to do this i can indeed to it seperatly form this spec but if people were viatmently against it for upgrade reason i did not want to spend time working on the path to rename it.\n\ni dont think renames of config options are contoverial in generally but if we are being frank the reason for doing this rename would be non technical in nature and i was not sure we would want to do that without at least dissucssing it first.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":154,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":155,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":156,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":157,"context_line":"and ``.``."},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"4a27941a_d2f720e4","line":155,"range":{"start_line":155,"start_character":63,"end_line":155,"end_character":64},"updated":"2021-05-13 16:28:51.000000000","message":"note that Neutron uses \u0027:\u0027 as a separator in the RP name.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":154,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":155,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":156,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":157,"context_line":"and ``.``."},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"96bc41fc_8c0da43b","line":155,"range":{"start_line":155,"start_character":63,"end_line":155,"end_character":64},"in_reply_to":"4a27941a_d2f720e4","updated":"2022-05-02 16:10:19.000000000","message":"Documented our options to choose from","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":153,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":154,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":155,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":156,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":157,"context_line":"and ``.``."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"each pci device RP will have inventories of the appriate standard and custom"},{"line_number":160,"context_line":"resouce classes. To support the current model where a pci device can have VFs configured"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5eaa7e81_b6aeabc8","line":157,"range":{"start_line":156,"start_character":4,"end_line":157,"end_character":10},"updated":"2021-05-13 16:28:51.000000000","message":"do you mean the pci_address part will be normalized. I assume we have to keep the same hostname prefix as the name of the root provider.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":153,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":154,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":155,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":156,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":157,"context_line":"and ``.``."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"each pci device RP will have inventories of the appriate standard and custom"},{"line_number":160,"context_line":"resouce classes. To support the current model where a pci device can have VFs configured"}],"source_content_type":"text/x-rst","patch_set":1,"id":"87670bd6_a3a771cb","line":157,"range":{"start_line":156,"start_character":4,"end_line":157,"end_character":10},"in_reply_to":"5eaa7e81_b6aeabc8","updated":"2021-05-13 17:42:35.000000000","message":"yes the prefix will just be the name form the root rp for this compute node.\nwhich i believe we already normalise to conform to what placment allows although lookign at the placment code i dont see the same rereictions that are in place for triats for example.\n\nill reword this to simply sate this will be prefixed with the hypervior host name as set in the root rp.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":153,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":154,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":155,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":156,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":157,"context_line":"and ``.``."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"each pci device RP will have inventories of the appriate standard and custom"},{"line_number":160,"context_line":"resouce classes. To support the current model where a pci device can have VFs configured"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c1b6a8d1_c49eec26","line":157,"range":{"start_line":156,"start_character":4,"end_line":157,"end_character":10},"in_reply_to":"87670bd6_a3a771cb","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":163,"context_line":"given a pci device we N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of n."},{"line_number":164,"context_line":"If a request woudl consome 1 VF the PF inventoly will have reserved set to total i.e. 1."},{"line_number":165,"context_line":"If a requstion woudl consume 1 PF then the same logic is applied in revews with the VF inventory"},{"line_number":166,"context_line":"beign updated to set reserved\u003d\u003dtotal."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"libvirt driver"},{"line_number":169,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8e1c9df2_478c4a96","line":166,"updated":"2021-05-13 16:28:51.000000000","message":"Which component would implement this logic? The nova scheduler during putting the selected allocation candidate back as allocation to placement?\n\nWe need special care if a single scheduling request asks for two ports, on PF and one VF. The placement free to return allocation candidates that are allocating the two ports from the same PF RP. But Nova should not select that RP for both port as that would contradict with the above logic. Do you plan to have a post filter in the scheduler that removes these candidates?","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":163,"context_line":"given a pci device we N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of n."},{"line_number":164,"context_line":"If a request woudl consome 1 VF the PF inventoly will have reserved set to total i.e. 1."},{"line_number":165,"context_line":"If a requstion woudl consume 1 PF then the same logic is applied in revews with the VF inventory"},{"line_number":166,"context_line":"beign updated to set reserved\u003d\u003dtotal."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"libvirt driver"},{"line_number":169,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"52940b6a_8f81d1a3","line":166,"in_reply_to":"8e1c9df2_478c4a96","updated":"2022-05-02 16:10:19.000000000","message":"Noted in the spec.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"90106d40_6f637f56","line":176,"updated":"2021-05-13 16:28:51.000000000","message":"Does it mean that the NUMA filter now needs to select from allocation candidates instead of only selecting from hosts?","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4f753e2a_4ffe4a7f","line":176,"in_reply_to":"69cd60cf_6337c919","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d5238833e50ddaf2af9ee76a9d619534e9c9234","unresolved":true,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b2f4b25c_70ccc6c5","line":176,"in_reply_to":"6dd135f0_5c82a088","updated":"2021-05-18 10:49:06.000000000","message":"thats a good question perhaps we could have the filter remove failing allocation candiate form teh host state object and then after teh fiters have run we could collect the set of allocation candiates form the remaining hostate objects?\n\nthis still need more tought obviously but that was kind of what i was thinking of.\n\nill see if i can flesh this out in the next version of the spec","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":true,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6dd135f0_5c82a088","line":176,"in_reply_to":"817233eb_62f238e2","updated":"2021-05-17 15:38:19.000000000","message":"OK. I\u0027m fine with the hoststate extension. But how do you plan to communicate which candidate was selected? Today the filter only communicates if a host is selected. But if the host has one good and one bad candidate then what the filter will return True or False? One way would be to allow filters to modify the hoststate object to reduce the list of allocation candidates in them. So at the end we have a host selected and the hoststate only contains the good candidates.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"817233eb_62f238e2","line":176,"in_reply_to":"90106d40_6f637f56","updated":"2021-05-13 17:42:35.000000000","message":"yes it does.\n\nbasically i\u0027m thinking of extended the hoststate object contain the allocation candidates associated with a given host. then the filters coudl also look at those if they needed too when considing if the host is viable.\n\nin the case of the numa filter it would pass the set of allocations to the hardware.py modules functions as an additional input to consider.\n\nextending the hoststate object would allows use to not change the filter scduler api but it would require the filter scdhuler to update each of the hostate objects with teh allocations form placement which i think we should should able to do relitivly cleanly.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3945fa0acd8302788d9f412e664b0353746a88a1","unresolved":true,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"69cd60cf_6337c919","line":176,"in_reply_to":"b2f4b25c_70ccc6c5","updated":"2021-05-18 13:58:11.000000000","message":"I agree that this can be the solution","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"},{"line_number":180,"context_line":"------------"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fe8d82d_07a01d17","line":178,"updated":"2021-05-13 16:28:51.000000000","message":"We need to make sure that this proposal works together with the existing PF and bandwidth modelling in Placement done by Neutron.\n\nThe current implementation in nova supports correlating the allocation that selected a PF in Placement due to bandwidth request, with the VF (and its parent) selected by the PCI claim. This is necessary as if a port requires bandwidth but also requires a VF then both should come from the same physical PF. Today that physical PF is modeled in two places. Once in Placement as an RP under the SRIOV agent RP and once in the PCI tracker.\n\nAfter this feature the same duplication remains but now instead of the PCI tracker, there will be two PF RPs in Placement representing the same physical device. One under the SRIOV agent RP and one directly under the compute RP. The allocation candidate query needs to be formulated in a way that ensures that the same port if allocates bandwidth and VF then it allocates it from the two RPs representing the same physical device.\n\nIf this cannot be done in the allocation candidate query then we might need a scheduler post filter to enforce this.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"725af0bc10c45cdf9072458f07c88a087351aade","unresolved":true,"context_lines":[{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"},{"line_number":180,"context_line":"------------"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f6213b0_a82fd540","line":178,"in_reply_to":"3873d586_0aa92252","updated":"2021-05-13 17:59:48.000000000","message":"am i just tought of something but i have not fully tought it true.\n\nwe might be abel to use an alternitive naming schem for PF RPs that we know have a physnet and have an ifacename.\n\ni think nueton uses \u003chostename\u003e\u003cphysnet\u003e\u003cinterfacename\u003e\n\nwe could for the nic that pcidevice that would be consumed by neutron use the same naming scme and do one of two things\n\neither we coudl create our resouces on teh same RP.\nthat kind of breaks the \"each RP is owned by only one servce\" rule.\n\ne.g.\nhostname\n|__\u003chostename\u003e\u003cphysnet\u003e\u003cinterfacename\u003e\n\n\nwe could also look for that RP and create a child RP with our normal naming scheme of \nhostname\n|__hostename\u003e\u003cphysnet\u003e\u003cinterfacename\u003e\n  |__\u003chostname\u003e_\u003cpci-address\u003e\n\n\nthe first approch would allow use to combine the resouce request from the port into a a single group with the pci deivce request.\n\nthe second approch would work if we use same subtree.\n\nboth approch woudl complicte modelign numa in placment which is less then ideal but really im not sure when or if we will fully get to that point so maybe optimizing for it now is premature.\n\nthe currnt propsal would have the same device modeled in two locaitons.\nsomehting like this\n\nhostname\n|__hostename\u003e\u003cphysnet\u003e\u003cinterfacename\u003e\n|__\u003chostname\u003e_\u003cpci-address\u003e\n\nin which case yes we cannot model the releatinship between them in the plamcent quety and have to do it after the fact in nova but that will allow modeling the device under a numa node in placment in the futre much simpler.\n\nanyway i have not fully tought though the implication of these options.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d5238833e50ddaf2af9ee76a9d619534e9c9234","unresolved":true,"context_lines":[{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"},{"line_number":180,"context_line":"------------"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"79571760_b99418bc","line":178,"in_reply_to":"3f49fa96_ecd04760","updated":"2021-05-18 10:49:06.000000000","message":"unfortunetly the aggreate solution wont work since we dont know the aggreate uuid in advace since that would require use to know the host in advacne to know what aggreate to specifcy in the query.\n\nif we had a member_of_common_aggreate\u003csufix\u003e\u003d\u003cgroup name 1\u003e,\u003cgroup name 2\u003e ... support\nwhere it would get placcement to assert tehy were both a memeber of any common aggreate directly then that would work.\n\nthat type of common aggate style match might be usefule for affinity/anti afinity at some point but im not sure it would be easy to implement.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":true,"context_lines":[{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"},{"line_number":180,"context_line":"------------"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f49fa96_ecd04760","line":178,"in_reply_to":"3f6213b0_a82fd540","updated":"2021-05-17 15:38:19.000000000","message":"\u003e am i just tought of something but i have not fully tought it true.\n\u003e \n\u003e we might be abel to use an alternitive naming schem for PF RPs that we know have a physnet and have an ifacename.\n\u003e \n\u003e i think nueton uses \u003chostename\u003e\u003cphysnet\u003e\u003cinterfacename\u003e\n\nNeutron today uses \u003chostname\u003e:\u003cagent name\u003e:\u003cdevice name\u003e e.g. \"node0:NIC Switch agent:enp129s0f0\"\n\n\u003e \n\u003e we could for the nic that pcidevice that would be consumed by neutron use the same naming scme and do one of two things\n\u003e \n\u003e either we coudl create our resouces on teh same RP.\n\u003e that kind of breaks the \"each RP is owned by only one servce\" rule.\n\u003e \n\u003e e.g.\n\u003e hostname\n\u003e |__\u003chostename\u003e\u003cphysnet\u003e\u003cinterfacename\u003e\n\u003e \n\nThat is an interesting idea to work with. I think the generation handling in Placement give us safety. However we have to decide which agent creates the RP. Or create a solution where each agent checks if it is there and if not creates it. If the naming scheme is in sync then this could work. Although  the parent of the PF RP is the Agent RP so I don\u0027t think nova will create Agent RPs. :)\n\n\n\u003e \n\u003e we could also look for that RP and create a child RP with our normal naming scheme of \n\u003e hostname\n\u003e |__hostename\u003e\u003cphysnet\u003e\u003cinterfacename\u003e\n\u003e   |__\u003chostname\u003e_\u003cpci-address\u003e\n\u003e \n\nThis is also an interesting solution. \n\n\u003e \n\u003e the first approch would allow use to combine the resouce request from the port into a a single group with the pci deivce request.\n\nUnfortunately it is not true. A named request group is always fulfilled from a single provider not a single provider subtree. So if we have two providers then we need two groups and a same_subtree relationship between them.\n\n\u003e \n\u003e the second approch would work if we use same subtree.\n\nyepp\n\n\u003e \n\u003e both approch woudl complicte modelign numa in placment which is less then ideal but really im not sure when or if we will fully get to that point so maybe optimizing for it now is premature.\n\u003e \n\u003e the currnt propsal would have the same device modeled in two locaitons.\n\u003e somehting like this\n\u003e \n\u003e hostname\n\u003e |__hostename\u003e\u003cphysnet\u003e\u003cinterfacename\u003e\n\u003e |__\u003chostname\u003e_\u003cpci-address\u003e\n\u003e \n\u003e in which case yes we cannot model the releatinship between them in the plamcent quety and have to do it after the fact in nova but that will allow modeling the device under a numa node in placment in the futre much simpler.\n\u003e \n\u003e anyway i have not fully tought though the implication of these options.\n\nI\u0027m fine if we do the correlation in a scheduler filter. \n\nAnother thing we can look at what will happens if we start using aggregates.\n\nSo have a duplicated representation in independent subtrees:\n\n hostname\n |__\u003chostname\u003e\u003cagent-name\u003e\n     |__\u003chostname\u003e\u003cagent-name\u003e\u003cinterfacename\u003e  \u003c-- neturon PF RP\n |__\u003chostname\u003e_\u003cpci-address\u003e   \u003c-- Nova PF RP\n\nand then put the nova PF RP and the correlated neutron PF RP into the same placement aggregate. Then in the a_c query both the neutron related request group and the nova related request group gets an extra member_of\u003csuffix\u003e\u003din:\u003caggregate-uuid\u003e parameter. I don\u0027t know if this works from placement perspective but it can be tried.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"},{"line_number":180,"context_line":"------------"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"0c36cb91_75f48bba","line":178,"in_reply_to":"4f84112e_a72746e1","updated":"2022-05-02 16:10:19.000000000","message":"documented our options in the spec for the future","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"},{"line_number":180,"context_line":"------------"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3873d586_0aa92252","line":178,"in_reply_to":"5fe8d82d_07a01d17","updated":"2021-05-13 17:42:35.000000000","message":"ya i i was thinking this would be done in the scudler but maybe a post filter is an alternitive approch.\nyou are correct that we do need to account for this both in the query by using two different groups and in the query but we then need to do the corralation after the fact to ensure they are form the same pf.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3945fa0acd8302788d9f412e664b0353746a88a1","unresolved":true,"context_lines":[{"line_number":175,"context_line":"the pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":176,"context_line":"considerd to just those inlcuded in the allocation canidate summary."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Alternatives"},{"line_number":180,"context_line":"------------"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"4f84112e_a72746e1","line":178,"in_reply_to":"79571760_b99418bc","updated":"2021-05-18 13:58:11.000000000","message":"\u003e unfortunetly the aggreate solution wont work since we dont know the aggreate uuid in advace since that would require use to know the host in advacne to know what aggreate to specifcy in the query.\n\u003e \n\nOhh you are right :/  Then we need to drop this idea.\n\n\u003e if we had a member_of_common_aggreate\u003csufix\u003e\u003d\u003cgroup name 1\u003e,\u003cgroup name 2\u003e ... support\n\u003e where it would get placcement to assert tehy were both a memeber of any common aggreate directly then that would work.\n\u003e \n\u003e that type of common aggate style match might be usefule for affinity/anti afinity at some point but im not sure it would be easy to implement.\n\nYeah, I agree. Also this might require the introduction of some kind of aggregate type, like this aggregate is a same-device type of aggregate which is different from e.g. a shared-disk type of aggregate or from a ip-pool aggregate.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":187,"context_line":"  per host."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"* we could device to only support consuming a pci device statically as a PF or VF to avoid"},{"line_number":190,"context_line":"  the need to set resreved \u003d\u003d total."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* we could model each PCI device under a numa node."},{"line_number":193,"context_line":"  This can be done in the future by moveing the RP under a numa node RP instead"}],"source_content_type":"text/x-rst","patch_set":1,"id":"98865651_e911906b","line":190,"updated":"2021-05-13 16:28:51.000000000","message":"but that would lead to reduced functionality compared to what we have today.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":187,"context_line":"  per host."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"* we could device to only support consuming a pci device statically as a PF or VF to avoid"},{"line_number":190,"context_line":"  the need to set resreved \u003d\u003d total."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* we could model each PCI device under a numa node."},{"line_number":193,"context_line":"  This can be done in the future by moveing the RP under a numa node RP instead"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2f57a907_b567479c","line":190,"in_reply_to":"5523d106_9d8bfd49","updated":"2022-05-02 16:10:19.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":187,"context_line":"  per host."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"* we could device to only support consuming a pci device statically as a PF or VF to avoid"},{"line_number":190,"context_line":"  the need to set resreved \u003d\u003d total."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* we could model each PCI device under a numa node."},{"line_number":193,"context_line":"  This can be done in the future by moveing the RP under a numa node RP instead"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5523d106_9d8bfd49","line":190,"in_reply_to":"98865651_e911906b","updated":"2021-05-13 17:42:35.000000000","message":"yep which is why its in the alternitive section.\nwe remove fucntionality when we move pinned cpus to placment  make  thinks simpler.\nwe could also remove functionality here but i know you previously said that you had customer using it and we proably do to so i put this in the alternivie section for completenetss but i had internally in my head discounted it  for that reason.\n\nif we all agree we are ok with losing this fucntionality and the upgrade issues it would case we can move it to the proposed chagnes section but i somewhat doubt that is the case.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":196,"context_line":"* we could modify neutron to pass resouce resuqest for pci deivce resouce classes and trait"},{"line_number":197,"context_line":"  using the port resouce request mechanium instead of usign the prefilter to do that."},{"line_number":198,"context_line":"  since we need the prefilter for the pci aliase case there is currently no value in modifying"},{"line_number":199,"context_line":"  neutron to do this."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"* ???"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"e0847690_d5bded69","line":199,"updated":"2021-05-13 16:28:51.000000000","message":"This would be an interesting thing to think through. Especially to see how the bandwidth modelling in Placement will coexists and cooperate with the PCI modelling in proposed in this spec.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":true,"context_lines":[{"line_number":196,"context_line":"* we could modify neutron to pass resouce resuqest for pci deivce resouce classes and trait"},{"line_number":197,"context_line":"  using the port resouce request mechanium instead of usign the prefilter to do that."},{"line_number":198,"context_line":"  since we need the prefilter for the pci aliase case there is currently no value in modifying"},{"line_number":199,"context_line":"  neutron to do this."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"* ???"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"cd7c5cad_591ad550","line":199,"in_reply_to":"1f5cf6f9_61deb7e0","updated":"2021-05-17 15:38:19.000000000","message":"I agree to keep it for the future if we can solve the bandwidth case today easily (or cut it out from the scope)","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":196,"context_line":"* we could modify neutron to pass resouce resuqest for pci deivce resouce classes and trait"},{"line_number":197,"context_line":"  using the port resouce request mechanium instead of usign the prefilter to do that."},{"line_number":198,"context_line":"  since we need the prefilter for the pci aliase case there is currently no value in modifying"},{"line_number":199,"context_line":"  neutron to do this."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"* ???"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"f260924a_2a87ce5d","line":199,"in_reply_to":"cd7c5cad_591ad550","updated":"2022-05-02 16:10:19.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":196,"context_line":"* we could modify neutron to pass resouce resuqest for pci deivce resouce classes and trait"},{"line_number":197,"context_line":"  using the port resouce request mechanium instead of usign the prefilter to do that."},{"line_number":198,"context_line":"  since we need the prefilter for the pci aliase case there is currently no value in modifying"},{"line_number":199,"context_line":"  neutron to do this."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"* ???"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f5cf6f9_61deb7e0","line":199,"in_reply_to":"e0847690_d5bded69","updated":"2021-05-13 17:42:35.000000000","message":"ya i think long term that would be a nice approch to take as neutron could ask for all the resouce it need per port. e.g. badnwith, pci devices, traits for nic offloads, ip address for routed networks exctra.\n\nbut i think this can be done in the futrue as a seperate cross project change if we wanted too\nsince it would be nice if other poejct told us the full set of resrouce they wanted use to schduler on and we coudl remove the trasnalteion code in nova. its just a lot more work to do but i hope this proposal will not prevent that form being doen at some point.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":280,"context_line":"the high level plan is as follows"},{"line_number":281,"context_line":"* upgade all host to xena"},{"line_number":282,"context_line":"* define [compute]/placement_pci_reporting\u003dtrue"},{"line_number":283,"context_line":"** this will reshape all allocation for exisig instance with pcidevies."},{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4b3f1b44_6199cd53","line":283,"updated":"2021-05-13 16:28:51.000000000","message":"OK, so while this is done with the /reshape API this is just an extension of the existing instance allocation in placement with additional resources.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":false,"context_lines":[{"line_number":280,"context_line":"the high level plan is as follows"},{"line_number":281,"context_line":"* upgade all host to xena"},{"line_number":282,"context_line":"* define [compute]/placement_pci_reporting\u003dtrue"},{"line_number":283,"context_line":"** this will reshape all allocation for exisig instance with pcidevies."},{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."}],"source_content_type":"text/x-rst","patch_set":1,"id":"d0c0c187_664db141","line":283,"in_reply_to":"43738954_d351733e","updated":"2021-05-17 15:38:19.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":280,"context_line":"the high level plan is as follows"},{"line_number":281,"context_line":"* upgade all host to xena"},{"line_number":282,"context_line":"* define [compute]/placement_pci_reporting\u003dtrue"},{"line_number":283,"context_line":"** this will reshape all allocation for exisig instance with pcidevies."},{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."}],"source_content_type":"text/x-rst","patch_set":1,"id":"43738954_d351733e","line":283,"in_reply_to":"4b3f1b44_6199cd53","updated":"2021-05-13 17:42:35.000000000","message":"yes exactly","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":281,"context_line":"* upgade all host to xena"},{"line_number":282,"context_line":"* define [compute]/placement_pci_reporting\u003dtrue"},{"line_number":283,"context_line":"** this will reshape all allocation for exisig instance with pcidevies."},{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"}],"source_content_type":"text/x-rst","patch_set":1,"id":"be90be64_2420afd5","line":284,"updated":"2021-05-13 16:28:51.000000000","message":"You need this before you can change the allocations in L283","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":false,"context_lines":[{"line_number":281,"context_line":"* upgade all host to xena"},{"line_number":282,"context_line":"* define [compute]/placement_pci_reporting\u003dtrue"},{"line_number":283,"context_line":"** this will reshape all allocation for exisig instance with pcidevies."},{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0948170b_d88bee31","line":284,"in_reply_to":"3bc38d9d_3317f775","updated":"2021-05-17 15:38:19.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":281,"context_line":"* upgade all host to xena"},{"line_number":282,"context_line":"* define [compute]/placement_pci_reporting\u003dtrue"},{"line_number":283,"context_line":"** this will reshape all allocation for exisig instance with pcidevies."},{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3bc38d9d_3317f775","line":284,"in_reply_to":"be90be64_2420afd5","updated":"2021-05-13 17:42:35.000000000","message":"yep so if we have the config option it will contol both the reporting and the reshape in init host.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"},{"line_number":288,"context_line":"*** if yes then we need to first qury with the pci reuquest and then fallback to not including them"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"58535a28_319a79ac","line":287,"updated":"2021-05-13 16:28:51.000000000","message":"Do we need this to support rolling upgrade where some of the computes already reporting PCIs in placement while others still using the PCI tracker?","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39f0505d8fd186c2a966f1d0a16886ca853264af","unresolved":false,"context_lines":[{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"},{"line_number":288,"context_line":"*** if yes then we need to first qury with the pci reuquest and then fallback to not including them"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"de56125f_b6c4a976","line":287,"in_reply_to":"2c68f328_56f2818a","updated":"2021-05-17 15:38:19.000000000","message":"Ack","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":284,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":285,"context_line":"** we coudl just alwasy do this instead but i belive that will force a fallback query below."},{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"},{"line_number":288,"context_line":"*** if yes then we need to first qury with the pci reuquest and then fallback to not including them"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2c68f328_56f2818a","line":287,"in_reply_to":"58535a28_319a79ac","updated":"2021-05-13 17:42:35.000000000","message":"that is why we have the fall-back query for PCPUs yes.\nso i assume we should jsut do the same thing here but it was one of the more complex parts of that proposal. https://github.com/openstack/nova-specs/blob/5f8e26055ddde4916306955757941e2c90b710e5/specs/train/approved/cpu-resources.rst#upgrade-impact\n\nthere are less upgrade issues in this case but i think we still shouldsupport rolling upgrades.\n\nto be clear though we will be useing the pci tracker even after this spec is complete.\nim not propsoing we remove it as we sitll need it to do the actul device selection at least in the the case of vdpa and vfs.\n\nif we use the pci tracker for mdevs in the futrue it would also be required for that obviously.\n\nthe pci tracker will be much less imporant however and the pci filter will nolonger be needed unless we decied to put the logic to assocaite the port bandwith with the pci request into that filter.\n\ni kind of feel like it woudl be bettere to do that  before we got to the current filers but im open to suggestions on how/where to do that.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28941e47ae2e735a0028c2462b8f7ae2f4451ad3","unresolved":true,"context_lines":[{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"},{"line_number":288,"context_line":"*** if yes then we need to first qury with the pci reuquest and then fallback to not including them"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"Implementation"},{"line_number":292,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"80a4ad13_3ad254ba","line":289,"updated":"2021-05-13 16:28:51.000000000","message":"I guess we should also mention that once the a deployment enabled the new PCI reporting on a compute, we should not allow to be disable later.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"},{"line_number":288,"context_line":"*** if yes then we need to first qury with the pci reuquest and then fallback to not including them"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"Implementation"},{"line_number":292,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"195d50b9_465734f0","line":289,"in_reply_to":"58109cb6_36f4a86e","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d74863ce55c116043aadd318fe3cf1532600a53","unresolved":true,"context_lines":[{"line_number":286,"context_line":"* enable schduler prefiler."},{"line_number":287,"context_line":"** open question is do we need to support a fallback query approch like we do with PCPUs"},{"line_number":288,"context_line":"*** if yes then we need to first qury with the pci reuquest and then fallback to not including them"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"Implementation"},{"line_number":292,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"58109cb6_36f4a86e","line":289,"in_reply_to":"80a4ad13_3ad254ba","updated":"2021-05-13 17:42:35.000000000","message":"yep ill add that.","commit_id":"053435faf2d091897b938e5deb52cff6721985f2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":15,"context_line":"of quantitative resources via resource class inventories and qualitative"},{"line_number":16,"context_line":"characteristic via traits. Over the last few cycle nova has utilised placement"},{"line_number":17,"context_line":"to track basic resources such as CPUs, RAM and disk and more complex"},{"line_number":18,"context_line":"resources such as Virtual GPUs. This spec describes how  Nova can utilise"},{"line_number":19,"context_line":"placement to track generic PCI devices."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5b22b3a3_2eda8264","line":18,"range":{"start_line":18,"start_character":56,"end_line":18,"end_character":57},"updated":"2021-07-06 14:19:08.000000000","message":"nit","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":15,"context_line":"of quantitative resources via resource class inventories and qualitative"},{"line_number":16,"context_line":"characteristic via traits. Over the last few cycle nova has utilised placement"},{"line_number":17,"context_line":"to track basic resources such as CPUs, RAM and disk and more complex"},{"line_number":18,"context_line":"resources such as Virtual GPUs. This spec describes how  Nova can utilise"},{"line_number":19,"context_line":"placement to track generic PCI devices."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f885899e_6fd22fa5","line":18,"range":{"start_line":18,"start_character":56,"end_line":18,"end_character":57},"in_reply_to":"5b22b3a3_2eda8264","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Nova has supported generic stateless PCI passthrough for many release using a"},{"line_number":25,"context_line":"dedicated PCI tracker in conjunction with a scheduler post filter."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The pci tracker is responsible for tracking which pci devices are available,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b0a2e60b_d604953f","line":24,"range":{"start_line":24,"start_character":62,"end_line":24,"end_character":69},"updated":"2021-07-06 14:19:08.000000000","message":"nit: releases","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Nova has supported generic stateless PCI passthrough for many release using a"},{"line_number":25,"context_line":"dedicated PCI tracker in conjunction with a scheduler post filter."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The pci tracker is responsible for tracking which pci devices are available,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1d80fcdd_581eb590","line":24,"range":{"start_line":24,"start_character":62,"end_line":24,"end_character":69},"in_reply_to":"b0a2e60b_d604953f","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":24,"context_line":"Nova has supported generic stateless PCI passthrough for many release using a"},{"line_number":25,"context_line":"dedicated PCI tracker in conjunction with a scheduler post filter."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The pci tracker is responsible for tracking which pci devices are available,"},{"line_number":28,"context_line":"claimed and allocated, the capabilities of the device, its consumer when"},{"line_number":29,"context_line":"claimed or allocated as well as the type of pci device and location."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"155ca502_b787e4dd","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":7},"updated":"2021-07-06 14:19:08.000000000","message":"nit: PCI (here and throughout)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Nova has supported generic stateless PCI passthrough for many release using a"},{"line_number":25,"context_line":"dedicated PCI tracker in conjunction with a scheduler post filter."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The pci tracker is responsible for tracking which pci devices are available,"},{"line_number":28,"context_line":"claimed and allocated, the capabilities of the device, its consumer when"},{"line_number":29,"context_line":"claimed or allocated as well as the type of pci device and location."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"cfe49fde_498b0a13","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":7},"in_reply_to":"155ca502_b787e4dd","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":29,"context_line":"claimed or allocated as well as the type of pci device and location."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The pci passthrough filter is responsible for ensuring that devices requested by"},{"line_number":32,"context_line":"the vm exist on a host during scheduling. These pci request come form 2"},{"line_number":33,"context_line":"sources: flavor based pci requests are generated using pci alias flavor extra"},{"line_number":34,"context_line":"specs and the second source of pci requests are neutron ports."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d43893e0_24568aaa","line":32,"range":{"start_line":32,"start_character":60,"end_line":32,"end_character":71},"updated":"2021-07-06 14:19:08.000000000","message":"nit: requests come from two","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":29,"context_line":"claimed or allocated as well as the type of pci device and location."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The pci passthrough filter is responsible for ensuring that devices requested by"},{"line_number":32,"context_line":"the vm exist on a host during scheduling. These pci request come form 2"},{"line_number":33,"context_line":"sources: flavor based pci requests are generated using pci alias flavor extra"},{"line_number":34,"context_line":"specs and the second source of pci requests are neutron ports."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"8c986853_cd274f1f","line":32,"range":{"start_line":32,"start_character":60,"end_line":32,"end_character":71},"in_reply_to":"d43893e0_24568aaa","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The pci passthrough filter is responsible for ensuring that devices requested by"},{"line_number":32,"context_line":"the vm exist on a host during scheduling. These pci request come form 2"},{"line_number":33,"context_line":"sources: flavor based pci requests are generated using pci alias flavor extra"},{"line_number":34,"context_line":"specs and the second source of pci requests are neutron ports."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"While the current approach to pci tracking works there are some limitations"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae298f8_3dbeaabf","line":33,"range":{"start_line":33,"start_character":35,"end_line":33,"end_character":38},"updated":"2021-07-06 14:19:08.000000000","message":"nit: that are","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The pci passthrough filter is responsible for ensuring that devices requested by"},{"line_number":32,"context_line":"the vm exist on a host during scheduling. These pci request come form 2"},{"line_number":33,"context_line":"sources: flavor based pci requests are generated using pci alias flavor extra"},{"line_number":34,"context_line":"specs and the second source of pci requests are neutron ports."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"While the current approach to pci tracking works there are some limitations"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e0c7ebf8_18680899","line":33,"range":{"start_line":33,"start_character":35,"end_line":33,"end_character":38},"in_reply_to":"dae298f8_3dbeaabf","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":31,"context_line":"The pci passthrough filter is responsible for ensuring that devices requested by"},{"line_number":32,"context_line":"the vm exist on a host during scheduling. These pci request come form 2"},{"line_number":33,"context_line":"sources: flavor based pci requests are generated using pci alias flavor extra"},{"line_number":34,"context_line":"specs and the second source of pci requests are neutron ports."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"While the current approach to pci tracking works there are some limitations"},{"line_number":37,"context_line":"in the current design and there is room for optimization."}],"source_content_type":"text/x-rst","patch_set":2,"id":"65ca44b6_e290182b","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":47},"updated":"2021-07-06 14:19:08.000000000","message":"nit: SR-IOV-based","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":31,"context_line":"The pci passthrough filter is responsible for ensuring that devices requested by"},{"line_number":32,"context_line":"the vm exist on a host during scheduling. These pci request come form 2"},{"line_number":33,"context_line":"sources: flavor based pci requests are generated using pci alias flavor extra"},{"line_number":34,"context_line":"specs and the second source of pci requests are neutron ports."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"While the current approach to pci tracking works there are some limitations"},{"line_number":37,"context_line":"in the current design and there is room for optimization."}],"source_content_type":"text/x-rst","patch_set":2,"id":"36457954_c90404de","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":47},"in_reply_to":"65ca44b6_e290182b","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":36,"context_line":"While the current approach to pci tracking works there are some limitations"},{"line_number":37,"context_line":"in the current design and there is room for optimization."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"``limitations``:"},{"line_number":40,"context_line":"* During server create pci devices are not claimed until the instance_claim"},{"line_number":41,"context_line":"  is created on the compute node. As a result its possible for two concurrent"},{"line_number":42,"context_line":"  server create requests to race for the last device on a host."}],"source_content_type":"text/x-rst","patch_set":2,"id":"27850759_9ad0d53f","line":39,"updated":"2021-07-06 14:19:08.000000000","message":"nit:\n\n  .. rubric:: Limitations\n\n  * During ...\n\n  .. rubric:: Optimizations\n\n  * Today, when\n\n(rubric is a headed-like element that doesn\u0027t affect the structure of the document and doesn\u0027t appear in the table of contents, which is what I think you\u0027re going for here)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":36,"context_line":"While the current approach to pci tracking works there are some limitations"},{"line_number":37,"context_line":"in the current design and there is room for optimization."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"``limitations``:"},{"line_number":40,"context_line":"* During server create pci devices are not claimed until the instance_claim"},{"line_number":41,"context_line":"  is created on the compute node. As a result its possible for two concurrent"},{"line_number":42,"context_line":"  server create requests to race for the last device on a host."}],"source_content_type":"text/x-rst","patch_set":2,"id":"d5ddaf8c_06a9e46c","line":39,"in_reply_to":"27850759_9ad0d53f","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":49,"context_line":"* Today when the virt driver is assigning a pci device on the compute hosts"},{"line_number":50,"context_line":"  it need to look at all available pci device on the host and select one that"},{"line_number":51,"context_line":"  fulfils the pci and numa requirements. If we model pci device in placement"},{"line_number":52,"context_line":"  we only need to consider the devices associated with the placement"},{"line_number":53,"context_line":"  allocation."},{"line_number":54,"context_line":"* Today when we schedule we perform host filtering of viable hosts based on"},{"line_number":55,"context_line":"  pci device in python. by utilising placement we can move that filtering to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5cc51f1d_8d9137b4","line":52,"range":{"start_line":52,"start_character":50,"end_line":52,"end_character":68},"updated":"2021-07-06 14:19:08.000000000","message":"nit: not sure what you wanted to say here. \"associated with placement\"? \"associated with the PCI device records in placement\"? Something else?","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":49,"context_line":"* Today when the virt driver is assigning a pci device on the compute hosts"},{"line_number":50,"context_line":"  it need to look at all available pci device on the host and select one that"},{"line_number":51,"context_line":"  fulfils the pci and numa requirements. If we model pci device in placement"},{"line_number":52,"context_line":"  we only need to consider the devices associated with the placement"},{"line_number":53,"context_line":"  allocation."},{"line_number":54,"context_line":"* Today when we schedule we perform host filtering of viable hosts based on"},{"line_number":55,"context_line":"  pci device in python. by utilising placement we can move that filtering to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"adb6ebde_920e59c1","line":52,"range":{"start_line":52,"start_character":50,"end_line":52,"end_character":68},"in_reply_to":"5cc51f1d_8d9137b4","updated":"2022-05-02 16:10:19.000000000","message":"I think the latter. Done.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":58,"context_line":"Use Cases"},{"line_number":59,"context_line":"---------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":64,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":2,"id":"361a4657_ca7b0fc4","line":61,"updated":"2021-07-06 14:19:08.000000000","message":"This isn\u0027t entirely possible, is it? We\u0027re not modelling NUMA so it\u0027s possible for us to have two PCI devices of the same model that are attached to different NUMA nodes and two simultaneous requests that both want the same single underlying PCI device attached to node N. This seems acceptable to me but we should call it out later if you haven\u0027t","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":58,"context_line":"Use Cases"},{"line_number":59,"context_line":"---------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":64,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":2,"id":"42d3f3f2_4b508856","line":61,"range":{"start_line":61,"start_character":15,"end_line":61,"end_character":24},"updated":"2021-07-06 14:19:08.000000000","message":"nit: I want instance","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Use Cases"},{"line_number":59,"context_line":"---------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":64,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5c8aecc8_834397e7","line":61,"in_reply_to":"361a4657_ca7b0fc4","updated":"2022-05-02 16:10:19.000000000","message":"Softened the use case a bit. Done.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Use Cases"},{"line_number":59,"context_line":"---------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":64,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":2,"id":"41144896_03e160ee","line":61,"range":{"start_line":61,"start_character":15,"end_line":61,"end_character":24},"in_reply_to":"42d3f3f2_4b508856","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":64,"context_line":"filters."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"As an operator i want to utilise traits and resource classes to model"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d7ce9ccf_2e4f0313","line":63,"range":{"start_line":63,"start_character":15,"end_line":63,"end_character":31},"updated":"2021-07-06 14:19:08.000000000","message":"nit: I want to shorten","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"As an operator i want vm creation to atomically claim resource to avoid retries."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":64,"context_line":"filters."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"As an operator i want to utilise traits and resource classes to model"}],"source_content_type":"text/x-rst","patch_set":2,"id":"2d667880_7826e4c7","line":63,"range":{"start_line":63,"start_character":15,"end_line":63,"end_character":31},"in_reply_to":"d7ce9ccf_2e4f0313","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":63,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":64,"context_line":"filters."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"As an operator i want to utilise traits and resource classes to model"},{"line_number":67,"context_line":"pci aliases for more expressive device management."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"As an operator i want to be able to associate quotas with pci device usage."}],"source_content_type":"text/x-rst","patch_set":2,"id":"567b5cb9_84c5e75b","line":66,"range":{"start_line":66,"start_character":15,"end_line":66,"end_character":16},"updated":"2021-07-06 14:19:08.000000000","message":"nit: I (and below)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":63,"context_line":"As an operator i want to sorten the time it takes to select a host by running less"},{"line_number":64,"context_line":"filters."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"As an operator i want to utilise traits and resource classes to model"},{"line_number":67,"context_line":"pci aliases for more expressive device management."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"As an operator i want to be able to associate quotas with pci device usage."}],"source_content_type":"text/x-rst","patch_set":2,"id":"22f72188_ca997b31","line":66,"range":{"start_line":66,"start_character":15,"end_line":66,"end_character":16},"in_reply_to":"567b5cb9_84c5e75b","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"As an operator i want to be able to associate quotas with pci device usage."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":".. Note::"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"  Device quotas would require unified limits to be implemented."},{"line_number":74,"context_line":"  Implementing quotas is out of scope of this spec beyond enabling"}],"source_content_type":"text/x-rst","patch_set":2,"id":"67b45ff2_8bcb1d99","line":71,"range":{"start_line":71,"start_character":3,"end_line":71,"end_character":7},"updated":"2021-07-06 14:19:08.000000000","message":"nit:\n\n  .. note::","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"As an operator i want to be able to associate quotas with pci device usage."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":".. Note::"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"  Device quotas would require unified limits to be implemented."},{"line_number":74,"context_line":"  Implementing quotas is out of scope of this spec beyond enabling"}],"source_content_type":"text/x-rst","patch_set":2,"id":"06beeea1_a9a33833","line":71,"range":{"start_line":71,"start_character":3,"end_line":71,"end_character":7},"in_reply_to":"67b45ff2_8bcb1d99","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  Implementing quotas is out of scope of this spec beyond enabling"},{"line_number":75,"context_line":"  the usecase by modelling PCI device in placement."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  This spec will also only focus on flavour based pci passthough."},{"line_number":78,"context_line":"  Neutron sriov port will be addressed in a follow up spec to limit scope."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"eefb6095_1d7aef98","line":77,"range":{"start_line":77,"start_character":36,"end_line":77,"end_character":50},"updated":"2021-07-06 14:19:08.000000000","message":"nit: flavour-based","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":74,"context_line":"  Implementing quotas is out of scope of this spec beyond enabling"},{"line_number":75,"context_line":"  the usecase by modelling PCI device in placement."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  This spec will also only focus on flavour based pci passthough."},{"line_number":78,"context_line":"  Neutron sriov port will be addressed in a follow up spec to limit scope."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"2901d178_576b4932","line":77,"range":{"start_line":77,"start_character":36,"end_line":77,"end_character":50},"in_reply_to":"eefb6095_1d7aef98","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":80,"context_line":"Proposed change"},{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"pci whitelist"},{"line_number":84,"context_line":"~~~~~~~~~~~~~"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The pci whitelist will be extended to support 2 additional standard tags"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c8f08f0e_9ab1a939","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":3},"updated":"2021-07-06 14:19:08.000000000","message":"nit: PCI","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":80,"context_line":"Proposed change"},{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"pci whitelist"},{"line_number":84,"context_line":"~~~~~~~~~~~~~"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The pci whitelist will be extended to support 2 additional standard tags"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1c444cc6_70f21ff4","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":13},"updated":"2021-07-06 14:19:08.000000000","message":"nit: allow list ?","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Proposed change"},{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"pci whitelist"},{"line_number":84,"context_line":"~~~~~~~~~~~~~"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The pci whitelist will be extended to support 2 additional standard tags"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1cec2861_6d1564f8","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":13},"in_reply_to":"1c444cc6_70f21ff4","updated":"2022-05-02 16:10:19.000000000","message":"done some re-shuffling and to be able to use the new name.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Proposed change"},{"line_number":81,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"pci whitelist"},{"line_number":84,"context_line":"~~~~~~~~~~~~~"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The pci whitelist will be extended to support 2 additional standard tags"}],"source_content_type":"text/x-rst","patch_set":2,"id":"cfd468a6_9078e3c0","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":3},"in_reply_to":"c8f08f0e_9ab1a939","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":86,"context_line":"The pci whitelist will be extended to support 2 additional standard tags"},{"line_number":87,"context_line":"``RC`` and ``traits``"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The ``RC`` tag will be a allowed only when the physical_network is not"},{"line_number":90,"context_line":"defined and will allow a pci device to be associated with a custom"},{"line_number":91,"context_line":"resouce class. Each pci whitelist entry may have at most 1 resouce class"},{"line_number":92,"context_line":"associated with it. Devices that have a physical_network tag will not be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"94281ca8_e94e46b2","line":89,"range":{"start_line":89,"start_character":47,"end_line":89,"end_character":64},"updated":"2021-07-06 14:19:08.000000000","message":"nit:\n\n  ``physical_network``\n\n(here and below)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":86,"context_line":"The pci whitelist will be extended to support 2 additional standard tags"},{"line_number":87,"context_line":"``RC`` and ``traits``"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The ``RC`` tag will be a allowed only when the physical_network is not"},{"line_number":90,"context_line":"defined and will allow a pci device to be associated with a custom"},{"line_number":91,"context_line":"resouce class. Each pci whitelist entry may have at most 1 resouce class"},{"line_number":92,"context_line":"associated with it. Devices that have a physical_network tag will not be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ed38c8e5_06895ac4","line":89,"range":{"start_line":89,"start_character":47,"end_line":89,"end_character":64},"in_reply_to":"94281ca8_e94e46b2","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The ``RC`` tag will be a allowed only when the physical_network is not"},{"line_number":90,"context_line":"defined and will allow a pci device to be associated with a custom"},{"line_number":91,"context_line":"resouce class. Each pci whitelist entry may have at most 1 resouce class"},{"line_number":92,"context_line":"associated with it. Devices that have a physical_network tag will not be"},{"line_number":93,"context_line":"reported in placment at this time."},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"837f3438_2e0aa60f","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":7},"updated":"2021-07-06 14:19:08.000000000","message":"nit: resource","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The ``RC`` tag will be a allowed only when the physical_network is not"},{"line_number":90,"context_line":"defined and will allow a pci device to be associated with a custom"},{"line_number":91,"context_line":"resouce class. Each pci whitelist entry may have at most 1 resouce class"},{"line_number":92,"context_line":"associated with it. Devices that have a physical_network tag will not be"},{"line_number":93,"context_line":"reported in placment at this time."},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5d007f03_abecae42","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":7},"in_reply_to":"837f3438_2e0aa60f","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Where a pci device does not have a physical_network or a RC tag"},{"line_number":96,"context_line":"present it will be reported with a generated custom resource class."},{"line_number":97,"context_line":"The resouce class will be ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The ``traits`` tag will be a comma separated list of standard or custom traits"},{"line_number":100,"context_line":"that will be reported for a device."}],"source_content_type":"text/x-rst","patch_set":2,"id":"6e05902f_e0826124","line":97,"range":{"start_line":97,"start_character":26,"end_line":97,"end_character":61},"updated":"2021-07-06 14:19:08.000000000","message":"Can we use\n\n  CUSTOM_PCI_\u003cVEND_ID\u003e_\u003cPROD_ID\u003e\n\ninstead (i.e. a \u0027CUSTOM_PCI_\u0027 prefix rather than just \u0027CUSTOM_\u0027). Maybe it\u0027s extraneous but I think it\u0027s clearer IMO","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Where a pci device does not have a physical_network or a RC tag"},{"line_number":96,"context_line":"present it will be reported with a generated custom resource class."},{"line_number":97,"context_line":"The resouce class will be ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The ``traits`` tag will be a comma separated list of standard or custom traits"},{"line_number":100,"context_line":"that will be reported for a device."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3d8eb999_4ef1e882","line":97,"range":{"start_line":97,"start_character":26,"end_line":97,"end_character":61},"in_reply_to":"6e05902f_e0826124","updated":"2022-05-02 16:10:19.000000000","message":"I agree. Done.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":99,"context_line":"The ``traits`` tag will be a comma separated list of standard or custom traits"},{"line_number":100,"context_line":"that will be reported for a device."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":".. Note::"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":105,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9cfa10a6_9bfbe767","line":102,"range":{"start_line":102,"start_character":3,"end_line":102,"end_character":7},"updated":"2021-07-06 14:19:08.000000000","message":"nit:\n\n  .. note::","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":99,"context_line":"The ``traits`` tag will be a comma separated list of standard or custom traits"},{"line_number":100,"context_line":"that will be reported for a device."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":".. Note::"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":105,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5d06455a_dc6aff1b","line":102,"range":{"start_line":102,"start_character":3,"end_line":102,"end_character":7},"in_reply_to":"9cfa10a6_9bfbe767","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":105,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":106,"context_line":"  in the scope of this spec. As detailed in the Moddeling device in placment"},{"line_number":107,"context_line":"  section, each physical device (PF) will be its own resouce provider with inventories"},{"line_number":108,"context_line":"  of the relevent inventories. as such traits cannot vary per VF device."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"b9c08646_3cb990ee","line":106,"range":{"start_line":106,"start_character":48,"end_line":106,"end_character":57},"updated":"2021-07-06 14:19:08.000000000","message":"nit: Modeling (or Modelling)\n\nAlso, you can link to the below section by doing:\n\n  `Modelling device in Placement`__","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":105,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":106,"context_line":"  in the scope of this spec. As detailed in the Moddeling device in placment"},{"line_number":107,"context_line":"  section, each physical device (PF) will be its own resouce provider with inventories"},{"line_number":108,"context_line":"  of the relevent inventories. as such traits cannot vary per VF device."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"eb8ead12_ab3423fd","line":106,"range":{"start_line":106,"start_character":48,"end_line":106,"end_character":57},"in_reply_to":"b9c08646_3cb990ee","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":104,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":105,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":106,"context_line":"  in the scope of this spec. As detailed in the Moddeling device in placment"},{"line_number":107,"context_line":"  section, each physical device (PF) will be its own resouce provider with inventories"},{"line_number":108,"context_line":"  of the relevent inventories. as such traits cannot vary per VF device."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"While we are making this change we will also take this opportunity to update"}],"source_content_type":"text/x-rst","patch_set":2,"id":"afd0380e_f3522710","line":107,"updated":"2021-07-06 14:19:08.000000000","message":"nit: can you wrap at ~79 characters from here down?","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":104,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":105,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":106,"context_line":"  in the scope of this spec. As detailed in the Moddeling device in placment"},{"line_number":107,"context_line":"  section, each physical device (PF) will be its own resouce provider with inventories"},{"line_number":108,"context_line":"  of the relevent inventories. as such traits cannot vary per VF device."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"While we are making this change we will also take this opportunity to update"}],"source_content_type":"text/x-rst","patch_set":2,"id":"45afb457_f5b1d8d7","line":107,"in_reply_to":"afd0380e_f3522710","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":108,"context_line":"  of the relevent inventories. as such traits cannot vary per VF device."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"While we are making this change we will also take this opportunity to update"},{"line_number":111,"context_line":"the pci whitelist config option name. The ``[pci]/passthrough_whitelist`` config option"},{"line_number":112,"context_line":"will be deprecated for eventual removal and replaced with a new ``[pci]/device_list``"},{"line_number":113,"context_line":"config option."},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"a22c3de0_cd44ad85","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":17},"updated":"2021-07-06 14:19:08.000000000","message":"nit: allow list\n\n(the config option is an allow list for PCI devices)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":108,"context_line":"  of the relevent inventories. as such traits cannot vary per VF device."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"While we are making this change we will also take this opportunity to update"},{"line_number":111,"context_line":"the pci whitelist config option name. The ``[pci]/passthrough_whitelist`` config option"},{"line_number":112,"context_line":"will be deprecated for eventual removal and replaced with a new ``[pci]/device_list``"},{"line_number":113,"context_line":"config option."},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"22e57e2b_60f8f0ff","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":17},"in_reply_to":"a22c3de0_cd44ad85","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":112,"context_line":"will be deprecated for eventual removal and replaced with a new ``[pci]/device_list``"},{"line_number":113,"context_line":"config option."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"pci alias"},{"line_number":116,"context_line":"~~~~~~~~~"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The pci alias definition will be extended to support matching on a resource class"}],"source_content_type":"text/x-rst","patch_set":2,"id":"677212cc_32c810c0","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":9},"updated":"2021-07-06 14:19:08.000000000","message":"nit: PCI aliases","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":112,"context_line":"will be deprecated for eventual removal and replaced with a new ``[pci]/device_list``"},{"line_number":113,"context_line":"config option."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"pci alias"},{"line_number":116,"context_line":"~~~~~~~~~"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The pci alias definition will be extended to support matching on a resource class"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd852ff_7f6ddcfe","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":9},"in_reply_to":"677212cc_32c810c0","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":116,"context_line":"~~~~~~~~~"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The pci alias definition will be extended to support matching on a resource class"},{"line_number":119,"context_line":"and required and forbidden traits. When a resource class is specified, a vendor id"},{"line_number":120,"context_line":"and product id will no longer be required."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"placement prefilter"}],"source_content_type":"text/x-rst","patch_set":2,"id":"837a36c2_f1402a4c","line":119,"range":{"start_line":119,"start_character":80,"end_line":119,"end_character":82},"updated":"2021-07-06 14:19:08.000000000","message":"nit: ID (below too)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":116,"context_line":"~~~~~~~~~"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The pci alias definition will be extended to support matching on a resource class"},{"line_number":119,"context_line":"and required and forbidden traits. When a resource class is specified, a vendor id"},{"line_number":120,"context_line":"and product id will no longer be required."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"placement prefilter"}],"source_content_type":"text/x-rst","patch_set":2,"id":"141e4572_5a260f74","line":119,"range":{"start_line":119,"start_character":80,"end_line":119,"end_character":82},"in_reply_to":"837a36c2_f1402a4c","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":119,"context_line":"and required and forbidden traits. When a resource class is specified, a vendor id"},{"line_number":120,"context_line":"and product id will no longer be required."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"placement prefilter"},{"line_number":123,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new prefilter will be added to convert pci request in to placement resource requests."}],"source_content_type":"text/x-rst","patch_set":2,"id":"06f5d3c7_ae187876","line":122,"range":{"start_line":122,"start_character":0,"end_line":122,"end_character":9},"updated":"2021-07-06 14:19:08.000000000","message":"nit: Placement","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":119,"context_line":"and required and forbidden traits. When a resource class is specified, a vendor id"},{"line_number":120,"context_line":"and product id will no longer be required."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"placement prefilter"},{"line_number":123,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new prefilter will be added to convert pci request in to placement resource requests."}],"source_content_type":"text/x-rst","patch_set":2,"id":"148b4971_61977134","line":122,"range":{"start_line":122,"start_character":0,"end_line":122,"end_character":9},"in_reply_to":"06f5d3c7_ae187876","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":122,"context_line":"placement prefilter"},{"line_number":123,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new prefilter will be added to convert pci request in to placement resource requests."},{"line_number":126,"context_line":"each pci request will be its own placement group. The prefilter will be disabled by default"},{"line_number":127,"context_line":"to enable upgrades and will be enabled by default in a future release. if an pci_request"},{"line_number":128,"context_line":"comes form an alias and the aliase does not have a resouce class associated with it"}],"source_content_type":"text/x-rst","patch_set":2,"id":"8be52757_693e956f","line":125,"range":{"start_line":125,"start_character":41,"end_line":125,"end_character":52},"updated":"2021-07-06 14:19:08.000000000","message":"nit: PCI requests","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":122,"context_line":"placement prefilter"},{"line_number":123,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new prefilter will be added to convert pci request in to placement resource requests."},{"line_number":126,"context_line":"each pci request will be its own placement group. The prefilter will be disabled by default"},{"line_number":127,"context_line":"to enable upgrades and will be enabled by default in a future release. if an pci_request"},{"line_number":128,"context_line":"comes form an alias and the aliase does not have a resouce class associated with it"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bc5e4a7c_cabd857a","line":125,"range":{"start_line":125,"start_character":41,"end_line":125,"end_character":52},"in_reply_to":"8be52757_693e956f","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":123,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new prefilter will be added to convert pci request in to placement resource requests."},{"line_number":126,"context_line":"each pci request will be its own placement group. The prefilter will be disabled by default"},{"line_number":127,"context_line":"to enable upgrades and will be enabled by default in a future release. if an pci_request"},{"line_number":128,"context_line":"comes form an alias and the aliase does not have a resouce class associated with it"},{"line_number":129,"context_line":"it will be computed using the vendor and product id ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"87dccb28_d003db58","line":126,"range":{"start_line":126,"start_character":0,"end_line":126,"end_character":4},"updated":"2021-07-06 14:19:08.000000000","message":"nit: Each","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":123,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new prefilter will be added to convert pci request in to placement resource requests."},{"line_number":126,"context_line":"each pci request will be its own placement group. The prefilter will be disabled by default"},{"line_number":127,"context_line":"to enable upgrades and will be enabled by default in a future release. if an pci_request"},{"line_number":128,"context_line":"comes form an alias and the aliase does not have a resouce class associated with it"},{"line_number":129,"context_line":"it will be computed using the vendor and product id ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"6bdf8066_502fa2b3","line":126,"range":{"start_line":126,"start_character":0,"end_line":126,"end_character":4},"in_reply_to":"87dccb28_d003db58","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new prefilter will be added to convert pci request in to placement resource requests."},{"line_number":126,"context_line":"each pci request will be its own placement group. The prefilter will be disabled by default"},{"line_number":127,"context_line":"to enable upgrades and will be enabled by default in a future release. if an pci_request"},{"line_number":128,"context_line":"comes form an alias and the aliase does not have a resouce class associated with it"},{"line_number":129,"context_line":"it will be computed using the vendor and product id ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d1d86ebe_aba5240e","line":127,"range":{"start_line":127,"start_character":71,"end_line":127,"end_character":73},"updated":"2021-07-06 14:19:08.000000000","message":"nit: If","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new prefilter will be added to convert pci request in to placement resource requests."},{"line_number":126,"context_line":"each pci request will be its own placement group. The prefilter will be disabled by default"},{"line_number":127,"context_line":"to enable upgrades and will be enabled by default in a future release. if an pci_request"},{"line_number":128,"context_line":"comes form an alias and the aliase does not have a resouce class associated with it"},{"line_number":129,"context_line":"it will be computed using the vendor and product id ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"6c057605_8bdb6e74","line":127,"range":{"start_line":127,"start_character":71,"end_line":127,"end_character":73},"in_reply_to":"d1d86ebe_aba5240e","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":126,"context_line":"each pci request will be its own placement group. The prefilter will be disabled by default"},{"line_number":127,"context_line":"to enable upgrades and will be enabled by default in a future release. if an pci_request"},{"line_number":128,"context_line":"comes form an alias and the aliase does not have a resouce class associated with it"},{"line_number":129,"context_line":"it will be computed using the vendor and product id ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Modelling device in Placement"}],"source_content_type":"text/x-rst","patch_set":2,"id":"30fbb7b6_d12ab60d","line":129,"updated":"2021-07-06 14:19:08.000000000","message":"As above, can we change this to CUSTOM_PCI_\u003cVEND_ID\u003e_\u003cPROD_ID\u003e instead?","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":126,"context_line":"each pci request will be its own placement group. The prefilter will be disabled by default"},{"line_number":127,"context_line":"to enable upgrades and will be enabled by default in a future release. if an pci_request"},{"line_number":128,"context_line":"comes form an alias and the aliase does not have a resouce class associated with it"},{"line_number":129,"context_line":"it will be computed using the vendor and product id ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Modelling device in Placement"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f252fc89_1b83fda5","line":129,"in_reply_to":"30fbb7b6_d12ab60d","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":129,"context_line":"it will be computed using the vendor and product id ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Modelling device in Placement"},{"line_number":133,"context_line":"_____________________________"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."}],"source_content_type":"text/x-rst","patch_set":2,"id":"329166e9_89d003c3","line":132,"range":{"start_line":132,"start_character":10,"end_line":132,"end_character":16},"updated":"2021-07-06 14:19:08.000000000","message":"nit: PCI devices","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":129,"context_line":"it will be computed using the vendor and product id ``CUSTOM_\u003cVendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Modelling device in Placement"},{"line_number":133,"context_line":"_____________________________"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1557a84c_58501072","line":132,"range":{"start_line":132,"start_character":10,"end_line":132,"end_character":16},"in_reply_to":"329166e9_89d003c3","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Modelling device in Placement"},{"line_number":133,"context_line":"_____________________________"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":136,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"797c55c9_f6a33dbc","line":133,"updated":"2021-07-06 14:19:08.000000000","message":"I must admit, I\u0027m not a huge fan of this behavior. I get that we want to preserve existing behavior, whereby requesting a PF disables all VFs and requesting any VF disables the PF, but isn\u0027t this existing behavior rather dumb? One could simply configure one or the other ahead of time and only allow PF passthrough or VF passthrough (via neutron or otherwise). I guess gibi should weigh in here since I think he said E/// rely on this","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Modelling device in Placement"},{"line_number":133,"context_line":"_____________________________"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":136,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4298fb37_ec1a408d","line":133,"in_reply_to":"797c55c9_f6a33dbc","updated":"2022-05-02 16:10:19.000000000","message":"I do believe that this logic is used in E///. However I don\u0027t have inside knowledge any more.\n\nIn general I think many deployment out there depends on this feature as it is mostly automatic. If the deployer only wanted to use direct ports at first and whitelisted the VF devices then the deployment automatically got the PF devices available. Then later when the deployer wanted to use direct-phyisical ports it worked out of the box correctly, without any nova reconfiguration.\n\nNow if we remove this mostly automatic behavior these deployments needs to be reconfigured during upgrade. There are mixed computes out there where some VM uses VFs other uses PF and another useses both VFs and PFs on the same compute. While there is always possible to create a good nova configuration that reflects the current device consumption such configuration might be utterly complex.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":133,"context_line":"_____________________________"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":136,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":137,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":138,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":139,"context_line":"and ``.``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"15de63a2_a0717b26","line":136,"range":{"start_line":136,"start_character":31,"end_line":136,"end_character":34},"updated":"2021-07-06 14:19:08.000000000","message":"nit: PCI","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":133,"context_line":"_____________________________"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":136,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":137,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":138,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":139,"context_line":"and ``.``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5b210cd4_d13b1fba","line":136,"range":{"start_line":136,"start_character":61,"end_line":136,"end_character":69},"updated":"2021-07-06 14:19:08.000000000","message":"nit: modeled (this is the second one of this, maybe do a find/replace)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":133,"context_line":"_____________________________"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":136,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":137,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":138,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":139,"context_line":"and ``.``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9eaeeaaf_a95ed028","line":136,"range":{"start_line":136,"start_character":31,"end_line":136,"end_character":34},"in_reply_to":"15de63a2_a0717b26","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":133,"context_line":"_____________________________"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"PCI device modelling in placment will closely mirror that of vGPUs."},{"line_number":136,"context_line":"Each pci device of type ``type-pci`` and ``type-PF`` will be moddeled as"},{"line_number":137,"context_line":"a placment resouce provider, who name is ``\u003chypervior_hostname\u003e_\u003cpci_address\u003e``"},{"line_number":138,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":139,"context_line":"and ``.``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5b9dd888_57eb8131","line":136,"range":{"start_line":136,"start_character":61,"end_line":136,"end_character":69},"in_reply_to":"5b210cd4_d13b1fba","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":138,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":139,"context_line":"and ``.``."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"each pci device RP will have inventories of the appropriate custom resouce classes."},{"line_number":142,"context_line":"To support the current model where a pci device can have VFs configured"},{"line_number":143,"context_line":"but can be dynmical consumed as either a VF or a PF the following logic will be applied."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"85293395_f8d51509","line":141,"range":{"start_line":141,"start_character":0,"end_line":141,"end_character":1},"updated":"2021-07-06 14:19:08.000000000","message":"nit: Each","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":138,"context_line":"the RP name will normalised to remove special characters excluding ``:``, ``-``"},{"line_number":139,"context_line":"and ``.``."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"each pci device RP will have inventories of the appropriate custom resouce classes."},{"line_number":142,"context_line":"To support the current model where a pci device can have VFs configured"},{"line_number":143,"context_line":"but can be dynmical consumed as either a VF or a PF the following logic will be applied."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d8bada75_1de1de27","line":141,"range":{"start_line":141,"start_character":0,"end_line":141,"end_character":1},"in_reply_to":"85293395_f8d51509","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":142,"context_line":"To support the current model where a pci device can have VFs configured"},{"line_number":143,"context_line":"but can be dynmical consumed as either a VF or a PF the following logic will be applied."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Given a pci device with N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of N"},{"line_number":146,"context_line":"assuming both are allowed in the [pci]/device_list."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ecb6fff_2e9a5786","line":145,"range":{"start_line":145,"start_character":62,"end_line":145,"end_character":71},"updated":"2021-07-06 14:19:08.000000000","message":"nit: inventory","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":142,"context_line":"To support the current model where a pci device can have VFs configured"},{"line_number":143,"context_line":"but can be dynmical consumed as either a VF or a PF the following logic will be applied."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Given a pci device with N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of N"},{"line_number":146,"context_line":"assuming both are allowed in the [pci]/device_list."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."}],"source_content_type":"text/x-rst","patch_set":2,"id":"78aae84a_4b7294c8","line":145,"range":{"start_line":145,"start_character":62,"end_line":145,"end_character":71},"in_reply_to":"7ecb6fff_2e9a5786","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db6580eb33d549f4c51df084f10ebc6b28e583fd","unresolved":true,"context_lines":[{"line_number":145,"context_line":"Given a pci device with N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of N"},{"line_number":146,"context_line":"assuming both are allowed in the [pci]/device_list."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."}],"source_content_type":"text/x-rst","patch_set":2,"id":"87f9c340_3fbefafa","line":148,"range":{"start_line":148,"start_character":50,"end_line":148,"end_character":81},"updated":"2021-07-05 16:45:17.000000000","message":"This will be the first case when we change inventory from the scheduler. So far the scheduler only manipulated allocations. So we have to be careful not to create a situation where the scheduler sets the inventory (the reserved value) but then the next moment the nova-compute also detect that the inventory is out of sync from the compute perspective and changes the inventory back (reverting the reserve value).","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":145,"context_line":"Given a pci device with N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of N"},{"line_number":146,"context_line":"assuming both are allowed in the [pci]/device_list."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3671e633_a5c79969","line":148,"range":{"start_line":148,"start_character":40,"end_line":148,"end_character":49},"updated":"2021-07-06 14:19:08.000000000","message":"nit: inventory","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":145,"context_line":"Given a pci device with N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of N"},{"line_number":146,"context_line":"assuming both are allowed in the [pci]/device_list."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."}],"source_content_type":"text/x-rst","patch_set":2,"id":"aad0ad0c_16585eee","line":148,"range":{"start_line":148,"start_character":40,"end_line":148,"end_character":49},"in_reply_to":"3671e633_a5c79969","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dd7b44f02e3dfa931e9a1344ee76e715c9d8c90b","unresolved":true,"context_lines":[{"line_number":145,"context_line":"Given a pci device with N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of N"},{"line_number":146,"context_line":"assuming both are allowed in the [pci]/device_list."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df527858_95f8fbdc","line":148,"range":{"start_line":148,"start_character":50,"end_line":148,"end_character":81},"in_reply_to":"87f9c340_3fbefafa","updated":"2021-07-05 17:11:20.000000000","message":"i was expecting to do this in the conductor actully. but yes that is a valid point","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":145,"context_line":"Given a pci device with N VFs, an RP will be create with a PF invenotry of 1 and a VF inventory of N"},{"line_number":146,"context_line":"assuming both are allowed in the [pci]/device_list."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."}],"source_content_type":"text/x-rst","patch_set":2,"id":"c1afa732_a1c24d65","line":148,"range":{"start_line":148,"start_character":50,"end_line":148,"end_character":81},"in_reply_to":"df527858_95f8fbdc","updated":"2022-05-02 16:10:19.000000000","message":"Noted in the spec.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db6580eb33d549f4c51df084f10ebc6b28e583fd","unresolved":true,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"}],"source_content_type":"text/x-rst","patch_set":2,"id":"6c80b4ec_3ba74bc9","line":151,"range":{"start_line":150,"start_character":31,"end_line":151,"end_character":11},"updated":"2021-07-05 16:45:17.000000000","message":"Please note that placement allows overallocation via inventory manipulation. Placement only reject overallocation when it is done via creating new allocations. When you change total, or reserved value on an inventory while there are allocations against the RC then placement does not check if the allocations are still fit to the new inventory.\n\nE.g.: The following is totally valid from placement perspective and result in -1000 free NET_BW_EGR_KILOBIT_PER_SEC resource on the RP. No new allocation will be accepted but the total and reserved values can be freely modified in any directions.\n\nstack@aio:~/devstack$ openstack resource provider inventory list 1110cf59-cabf-526c-bacc-08baabbac692\n+----------------------------+------------------+----------+------------+----------+-----------+-------+------+\n| resource_class             | allocation_ratio | min_unit |   max_unit | reserved | step_size | total | used |\n+----------------------------+------------------+----------+------------+----------+-----------+-------+------+\n| NET_BW_EGR_KILOBIT_PER_SEC |              1.0 |        1 | 2147483647 |        0 |         1 |  5000 | 1000 |\n| NET_BW_IGR_KILOBIT_PER_SEC |              1.0 |        1 | 2147483647 |        0 |         1 |  5000 | 1000 |\n+----------------------------+------------------+----------+------------+----------+-----------+-------+------+\n\n\nstack@aio:~/devstack$ openstack resource provider inventory set 1110cf59-cabf-526c-bacc-08baabbac692 --amend --resource NET_BW_EGR_KILOBIT_PER_SEC:reserved\u003d5000\n+----------------------------+------------------+----------+------------+----------+-----------+-------+\n| resource_class             | allocation_ratio | min_unit |   max_unit | reserved | step_size | total |\n+----------------------------+------------------+----------+------------+----------+-----------+-------+\n| NET_BW_EGR_KILOBIT_PER_SEC |              1.0 |        1 | 2147483647 |     5000 |         1 |  5000 |\n| NET_BW_IGR_KILOBIT_PER_SEC |              1.0 |        1 | 2147483647 |        0 |         1 |  5000 |\n+----------------------------+------------------+----------+------------+----------+-----------+-------+\n\n\nstack@aio:~/devstack$ openstack resource provider inventory list 1110cf59-cabf-526c-bacc-08baabbac692\n+----------------------------+------------------+----------+------------+----------+-----------+-------+------+\n| resource_class             | allocation_ratio | min_unit |   max_unit | reserved | step_size | total | used |\n+----------------------------+------------------+----------+------------+----------+-----------+-------+------+\n| NET_BW_EGR_KILOBIT_PER_SEC |              1.0 |        1 | 2147483647 |     5000 |         1 |  5000 | 1000 |\n| NET_BW_IGR_KILOBIT_PER_SEC |              1.0 |        1 | 2147483647 |        0 |         1 |  5000 | 1000 |\n+----------------------------+------------------+----------+------------+----------+-----------+-------+------+\n\n\nSo when the RP has VF:total\u003d4,reserved\u003d0,allocation\u003d1 then allocating a PF from the same RP will set VF:total\u003d4,reserved\u003d4,allocation\u003d1 without any conflict. So the conflict needs to be detected on the nova side in your case.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"}],"source_content_type":"text/x-rst","patch_set":2,"id":"383ca943_6876b7e9","line":151,"range":{"start_line":150,"start_character":31,"end_line":151,"end_character":11},"in_reply_to":"27920e47_22e72517","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9ebd8628ef10a81f0924124eaff0895796812fcb","unresolved":true,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"}],"source_content_type":"text/x-rst","patch_set":2,"id":"27920e47_22e72517","line":151,"range":{"start_line":150,"start_character":31,"end_line":151,"end_character":11},"in_reply_to":"28c1340f_99b9bdd4","updated":"2021-07-06 16:01:05.000000000","message":"So you have to order the logic in a way that first the reservation is set then you try to allocate and if the allocation conflicts then you roll back the reservation. This could work.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dd7b44f02e3dfa931e9a1344ee76e715c9d8c90b","unresolved":true,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"If a request would consume 1 VF, the PF inventoly will have reserved set to total i.e. 1."},{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"}],"source_content_type":"text/x-rst","patch_set":2,"id":"28c1340f_99b9bdd4","line":151,"range":{"start_line":150,"start_character":31,"end_line":151,"end_character":11},"in_reply_to":"6c80b4ec_3ba74bc9","updated":"2021-07-05 17:11:20.000000000","message":"i belive that placement will not allow you to create allocation if its already over subscribed.\n\nbut yes i know you can create an oversubsciption case by reducing the inventory or allocation ratio after the allocations are created.\naltering the reservation would have the same effect.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db6580eb33d549f4c51df084f10ebc6b28e583fd","unresolved":true,"context_lines":[{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"49b0898e_0bc173bc","line":152,"updated":"2021-07-05 16:45:17.000000000","message":"Today the scheduler:\n\n1) queries allocation candidates\n2) collects the hosts from those candidates\n3) selects a host with the filtering and weighering\n4) grabs the first candidate from the selected host\n5) allocates that candidate in placement\n\nI think your approach means that at #5) the scheduler looks into the selected candidate, checks if the above reservation logic is needed, then does the inventory update, then try to allocate the candidate. If it fails then revert the reservation change and move to the next candidate on the host. \n\nAn alternative approach would be to filter out those candidates that where allocation is made against the same RP both from PF and VF resources. I think those allocations are always invalid. This can be done between #1) and #2). We would still need to set the reserved value at #5) to avoid later allocations to conflict. So I\u0027m not sure this alternative worth the effort.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"032fb216_3f18673e","line":152,"in_reply_to":"24c4ca40_add815a6","updated":"2022-05-02 16:10:19.000000000","message":"\u003e 6 a) compute compute updates reserved \u003d total on VF/PFs in placment and if that fails it fails the instance claim\n\nThis is incorrect. the reserved\u003dtotal update will always succeed even if it creates resource overallocation.\n\nI documented this in the spec","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dd7b44f02e3dfa931e9a1344ee76e715c9d8c90b","unresolved":true,"context_lines":[{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4a590bf1_a818c828","line":152,"in_reply_to":"49b0898e_0bc173bc","updated":"2021-07-05 17:11:20.000000000","message":"ya so i guess we shoudl do the reservation update in 5 although i would have prefered to do that in the conductor.\n\nperhaps a better approch would be to have the conductopr downcall to the compute after the scudler returns to have it do the instance claim then and have the compute do the placment update.\n\nthis woudl extend the period by which we can race but it woudl avoid conflicts between the scheduler and compute node and we can do that instance claim very early.\n\nwe have talk about doing this anyway to claim numa resouces and proposed doing this in Wallaby if i remember but we never got around to it.\n\n\nso we would do\n\n1) queries allocation candidates\n2) collects the hosts from those candidates\n3) selects a host with the filtering and weighering\n4) grabs the first candidate from the selected host\n5) allocates that candidate in placement\n\nas we do today then\n6) conductor calls compute to do instance claim.\n6 a) compute compute updates reserved \u003d total on VF/PFs in placment and if that fails it fails the instance claim\n6 b) instance claim also claims numa resouces computing any cpu assinemnts ectra.\n\n7 a) if instance claim suceed we proceed to server boot as normal\n7 b) if instance claim fails we free teh allocation agaisnt the host and go to the next alternate host and go back to 5\n8) vm is booted or we run out of alternates.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9ebd8628ef10a81f0924124eaff0895796812fcb","unresolved":true,"context_lines":[{"line_number":149,"context_line":"If a request would consume 1 PF then the same logic is applied in reverse with the VF inventory"},{"line_number":150,"context_line":"updated to set reserved\u003d\u003dtotal. IF this update cannot be made without an intervening allocation"},{"line_number":151,"context_line":"conflicting with the claim we will release the allocation and proceed to the next candidate."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"24c4ca40_add815a6","line":152,"in_reply_to":"4a590bf1_a818c828","updated":"2021-07-06 16:01:05.000000000","message":"I think your analysis is correct. This would introduce a new possible race condition since today the PCI claim and PCI PF/VF reservation is atomic during the claim. Now this would be distributed between the allocation in placement and the claim code in the compute. If you do the ordering like 1) allocation 2) update reservation, then also a single VM could allocate the PF and VFs from the same PF in placement (for two ports), and then the reservation update would not fail and placement allows overallocation with inventory update.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"},{"line_number":156,"context_line":"The libvirt dirver update_available_resouces preoditc task weill be enhanced to report the"},{"line_number":157,"context_line":"relevent inventories and create the RPs in its provider tree."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"during init host in the driver a new reshape will be introduced to create allocation for"}],"source_content_type":"text/x-rst","patch_set":2,"id":"99937530_2cc04748","line":156,"range":{"start_line":156,"start_character":11,"end_line":156,"end_character":64},"updated":"2021-07-06 14:19:08.000000000","message":"nit: driver ``update_available_resources`` periodic task will\n\n(I guess you gave up on spell checking at this point 😉)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"},{"line_number":156,"context_line":"The libvirt dirver update_available_resouces preoditc task weill be enhanced to report the"},{"line_number":157,"context_line":"relevent inventories and create the RPs in its provider tree."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"during init host in the driver a new reshape will be introduced to create allocation for"}],"source_content_type":"text/x-rst","patch_set":2,"id":"26d408b1_dfa0a84d","line":156,"range":{"start_line":156,"start_character":11,"end_line":156,"end_character":64},"in_reply_to":"99937530_2cc04748","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db6580eb33d549f4c51df084f10ebc6b28e583fd","unresolved":true,"context_lines":[{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"},{"line_number":156,"context_line":"The libvirt dirver update_available_resouces preoditc task weill be enhanced to report the"},{"line_number":157,"context_line":"relevent inventories and create the RPs in its provider tree."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"during init host in the driver a new reshape will be introduced to create allocation for"},{"line_number":160,"context_line":"vms with pci passthough devices."}],"source_content_type":"text/x-rst","patch_set":2,"id":"94317f50_228856db","line":157,"updated":"2021-07-05 16:45:17.000000000","message":"This needs to be aware that the scheduler might change the inventory reserved value and the compute should not revert that change during a periodic run. I\u0027m not sure how can we do that. Can we say that the compute will never manipulate the reserved value of these RPs?","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dd7b44f02e3dfa931e9a1344ee76e715c9d8c90b","unresolved":true,"context_lines":[{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"},{"line_number":156,"context_line":"The libvirt dirver update_available_resouces preoditc task weill be enhanced to report the"},{"line_number":157,"context_line":"relevent inventories and create the RPs in its provider tree."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"during init host in the driver a new reshape will be introduced to create allocation for"},{"line_number":160,"context_line":"vms with pci passthough devices."}],"source_content_type":"text/x-rst","patch_set":2,"id":"d7ba3d06_2d2905de","line":157,"in_reply_to":"94317f50_228856db","updated":"2021-07-05 17:11:20.000000000","message":"yes we could as currently that is not something that has a meening.\n\ne.g. you whitelist specific devices or a class of device so if you want to resve it you don\u0027t whitelist it.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9ebd8628ef10a81f0924124eaff0895796812fcb","unresolved":true,"context_lines":[{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"},{"line_number":156,"context_line":"The libvirt dirver update_available_resouces preoditc task weill be enhanced to report the"},{"line_number":157,"context_line":"relevent inventories and create the RPs in its provider tree."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"during init host in the driver a new reshape will be introduced to create allocation for"},{"line_number":160,"context_line":"vms with pci passthough devices."}],"source_content_type":"text/x-rst","patch_set":2,"id":"eaac4615_480acb60","line":157,"in_reply_to":"d7ba3d06_2d2905de","updated":"2021-07-06 16:01:05.000000000","message":"yep that could work","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":154,"context_line":"libvirt driver"},{"line_number":155,"context_line":"~~~~~~~~~~~~~~"},{"line_number":156,"context_line":"The libvirt dirver update_available_resouces preoditc task weill be enhanced to report the"},{"line_number":157,"context_line":"relevent inventories and create the RPs in its provider tree."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"during init host in the driver a new reshape will be introduced to create allocation for"},{"line_number":160,"context_line":"vms with pci passthough devices."}],"source_content_type":"text/x-rst","patch_set":2,"id":"8084fbb8_182b5df7","line":157,"in_reply_to":"eaac4615_480acb60","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":163,"context_line":"hardware.py"},{"line_number":164,"context_line":"~~~~~~~~~~~"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"The pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":167,"context_line":"considered to just those included in the allocation canidate summary."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"To enable this the The allocation candiates will need to be added to The host state object"}],"source_content_type":"text/x-rst","patch_set":2,"id":"aea5f771_e11f68ed","line":166,"range":{"start_line":166,"start_character":43,"end_line":166,"end_character":50},"updated":"2021-07-06 14:19:08.000000000","message":"nit: modified","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":163,"context_line":"hardware.py"},{"line_number":164,"context_line":"~~~~~~~~~~~"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"The pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":167,"context_line":"considered to just those included in the allocation canidate summary."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"To enable this the The allocation candiates will need to be added to The host state object"}],"source_content_type":"text/x-rst","patch_set":2,"id":"26a8f5c9_002fdc46","line":166,"range":{"start_line":166,"start_character":43,"end_line":166,"end_character":50},"in_reply_to":"aea5f771_e11f68ed","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":164,"context_line":"~~~~~~~~~~~"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"The pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":167,"context_line":"considered to just those included in the allocation canidate summary."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"To enable this the The allocation candiates will need to be added to The host state object"},{"line_number":170,"context_line":"by the filter sechduler. numa toplgoy filter will then need to pass the allocatoin candiates to the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ab4aed52_fad959c5","line":167,"range":{"start_line":167,"start_character":52,"end_line":167,"end_character":60},"updated":"2021-07-06 14:19:08.000000000","message":"nit: candidate","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":164,"context_line":"~~~~~~~~~~~"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"The pci numa affinity code will need to be modifed to limit the pci devices"},{"line_number":167,"context_line":"considered to just those included in the allocation canidate summary."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"To enable this the The allocation candiates will need to be added to The host state object"},{"line_number":170,"context_line":"by the filter sechduler. numa toplgoy filter will then need to pass the allocatoin candiates to the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"aaa9fbfd_8a302519","line":167,"range":{"start_line":167,"start_character":52,"end_line":167,"end_character":60},"in_reply_to":"ab4aed52_fad959c5","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"By extendeing the host state object with the allocation candiate we will enable filtere to filter not just"},{"line_number":177,"context_line":"on host but optionaly on allocation candate for the host without altering the filter api therefor maintaining"},{"line_number":178,"context_line":"compatiablity with external filteres."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"pci tracker"},{"line_number":181,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b559003a_7a30c6e6","line":178,"updated":"2021-07-06 14:19:08.000000000","message":"Maybe run the above two through a spell checker. There are some pretty weird typos in there 😜","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":true,"context_lines":[{"line_number":186,"context_line":"in the case of type-PF and type-pci the pci adress for the allocation will be the pci_address of"},{"line_number":187,"context_line":"the device to claim. in the cae fo type-VF it will be the address of the parent device."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"as we may have multiple candiates the pci request object passed to the pci tracker will need"},{"line_number":190,"context_line":"to supprot a list of possible parent adresses which will be the unique subeset of the address"},{"line_number":191,"context_line":"contianted in the allocations."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":2,"id":"2d6a7039_3e51e318","line":191,"range":{"start_line":189,"start_character":0,"end_line":191,"end_character":30},"updated":"2022-05-02 16:10:19.000000000","message":"This is not really clear to me. At PCI claim time we already has one single PCI PF address to be claimed from (the one that is already has the allocation in placement)","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"* we could decide to only support consuming a pci device statically as a PF or VF to avoid"},{"line_number":205,"context_line":"  the need to set resreved \u003d\u003d total. This would break existing usage that is valid today so"},{"line_number":206,"context_line":"  we do not take this approach."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"* we could model each PCI device under a numa node."},{"line_number":209,"context_line":"  This can be done in the future by moveing the RP under a numa node RP instead"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ea7acd25_49ec81ce","line":206,"updated":"2021-07-06 14:19:08.000000000","message":"Sure, people would eventually lose this feature but as above, how important is the feature? People could keep using the legacy path for a release or two before switching over","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"* we could model each PCI device under a numa node."},{"line_number":209,"context_line":"  This can be done in the future by moveing the RP under a numa node RP instead"},{"line_number":210,"context_line":"  of the compute node RP but its declared out of scope of this inital spec."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0e16828f_11d3a22f","line":210,"updated":"2021-07-06 14:19:08.000000000","message":"++","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":254,"context_line":"Other deployer impact"},{"line_number":255,"context_line":"---------------------"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"To utilise the new feature the operator will have to define 2 new config"},{"line_number":258,"context_line":"options. 1 to enable the palacement prefilter and a second to enabel reporting"},{"line_number":259,"context_line":"of pci devices to placement."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"55c90717_ea122c0e","line":257,"range":{"start_line":257,"start_character":60,"end_line":257,"end_character":61},"updated":"2021-07-06 14:19:08.000000000","message":"nit: two","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":254,"context_line":"Other deployer impact"},{"line_number":255,"context_line":"---------------------"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"To utilise the new feature the operator will have to define 2 new config"},{"line_number":258,"context_line":"options. 1 to enable the palacement prefilter and a second to enabel reporting"},{"line_number":259,"context_line":"of pci devices to placement."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"0e22410e_3f9f2031","line":257,"range":{"start_line":257,"start_character":60,"end_line":257,"end_character":61},"in_reply_to":"55c90717_ea122c0e","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":255,"context_line":"---------------------"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"To utilise the new feature the operator will have to define 2 new config"},{"line_number":258,"context_line":"options. 1 to enable the palacement prefilter and a second to enabel reporting"},{"line_number":259,"context_line":"of pci devices to placement."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"(note to reviewers im not sure if we actually need the second option if we"}],"source_content_type":"text/x-rst","patch_set":2,"id":"25956e6c_5455791a","line":258,"range":{"start_line":258,"start_character":9,"end_line":258,"end_character":10},"updated":"2021-07-06 14:19:08.000000000","message":"nit: one","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":255,"context_line":"---------------------"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"To utilise the new feature the operator will have to define 2 new config"},{"line_number":258,"context_line":"options. 1 to enable the palacement prefilter and a second to enabel reporting"},{"line_number":259,"context_line":"of pci devices to placement."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"(note to reviewers im not sure if we actually need the second option if we"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d01cf5a7_ae23f3c4","line":258,"range":{"start_line":258,"start_character":9,"end_line":258,"end_character":10},"in_reply_to":"25956e6c_5455791a","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":262,"context_line":"can simple have 1 config option for the placement prefilter that would be"},{"line_number":263,"context_line":"my preference. this is only added to that you have something on the comptue"},{"line_number":264,"context_line":"node to not report pci device to placment if you dont have the pci prefilter enabled"},{"line_number":265,"context_line":"and too trigger the reshape of placment allocations.)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"624b859e_4c5a92c4","line":265,"updated":"2021-07-06 14:19:08.000000000","message":"What reshape are you referring to? Personally I think we need the second option for a while. If we don\u0027t have this then the compute nodes will report inventory to placement but the usage records for that will be unused. An alternative is to do what we do for the VCPU/PCPU switch and make two placement requests, one with the PCI request included and one without, then use some heuristic to filter out compute nodes that simply don\u0027t have PCI devices from the second request.\n\nLater: ah, the reshape is so that existing instances will now have a PCI device allocation associated with them. Got it.","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":262,"context_line":"can simple have 1 config option for the placement prefilter that would be"},{"line_number":263,"context_line":"my preference. this is only added to that you have something on the comptue"},{"line_number":264,"context_line":"node to not report pci device to placment if you dont have the pci prefilter enabled"},{"line_number":265,"context_line":"and too trigger the reshape of placment allocations.)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f1dd5c84_881eb834","line":265,"in_reply_to":"624b859e_4c5a92c4","updated":"2022-05-02 16:10:19.000000000","message":"Ack","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":287,"context_line":"the high level plan is as follows"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* upgade all host to xena"},{"line_number":290,"context_line":"* define [compute]/placement_pci_reporting\u003dtrue"},{"line_number":291,"context_line":"** this will reshape all allocation for existing instance with pcidevies."},{"line_number":292,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":293,"context_line":"*** note that once this option is enabled we will not support disabling it."}],"source_content_type":"text/x-rst","patch_set":2,"id":"e3234902_b4c9f4bf","line":290,"range":{"start_line":290,"start_character":9,"end_line":290,"end_character":47},"updated":"2021-07-06 14:19:08.000000000","message":"nit:\n\n  Define ``[compute] placement_pci_reporting \u003d true``","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":287,"context_line":"the high level plan is as follows"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* upgade all host to xena"},{"line_number":290,"context_line":"* define [compute]/placement_pci_reporting\u003dtrue"},{"line_number":291,"context_line":"** this will reshape all allocation for existing instance with pcidevies."},{"line_number":292,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":293,"context_line":"*** note that once this option is enabled we will not support disabling it."}],"source_content_type":"text/x-rst","patch_set":2,"id":"6a8524c2_cb69a6ab","line":290,"range":{"start_line":290,"start_character":9,"end_line":290,"end_character":47},"in_reply_to":"e3234902_b4c9f4bf","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":292,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":293,"context_line":"*** note that once this option is enabled we will not support disabling it."},{"line_number":294,"context_line":"* enable schduler prefiler."},{"line_number":295,"context_line":"** to supprot rolling upgrade we will need to implement a falback query as we did for modeling"},{"line_number":296,"context_line":"   cpus in placment."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"the fallback query and option will eventually be removed but initally wont be deprecated."}],"source_content_type":"text/x-rst","patch_set":2,"id":"c8fdf67a_9788f2dd","line":295,"range":{"start_line":295,"start_character":58,"end_line":295,"end_character":65},"updated":"2021-07-06 14:19:08.000000000","message":"nit: fallback","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":292,"context_line":"** this will enable reporting of pci devices to placment"},{"line_number":293,"context_line":"*** note that once this option is enabled we will not support disabling it."},{"line_number":294,"context_line":"* enable schduler prefiler."},{"line_number":295,"context_line":"** to supprot rolling upgrade we will need to implement a falback query as we did for modeling"},{"line_number":296,"context_line":"   cpus in placment."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"the fallback query and option will eventually be removed but initally wont be deprecated."}],"source_content_type":"text/x-rst","patch_set":2,"id":"19a3c982_578eac28","line":295,"range":{"start_line":295,"start_character":58,"end_line":295,"end_character":65},"in_reply_to":"c8fdf67a_9788f2dd","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5bc9f435fa7b4587258247a73e2107a4336c4644","unresolved":true,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"Primary assignee:"},{"line_number":310,"context_line":"  \u003claunchpad-id or None\u003e"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"Other contributors:"},{"line_number":313,"context_line":"  \u003claunchpad-id or None\u003e"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4dafe8e9_89f660f3","line":310,"updated":"2021-07-06 14:19:08.000000000","message":"nit: I can help with this, so...\n\n  stephenfinucane\n\n?","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5235149309b293ec37732fa28554ed10deeb6b83","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"Primary assignee:"},{"line_number":310,"context_line":"  \u003claunchpad-id or None\u003e"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"Other contributors:"},{"line_number":313,"context_line":"  \u003claunchpad-id or None\u003e"}],"source_content_type":"text/x-rst","patch_set":2,"id":"15225ddc_549b118b","line":310,"in_reply_to":"4dafe8e9_89f660f3","updated":"2022-05-02 16:10:19.000000000","message":"Done","commit_id":"ca39a38347e004b19f27e0be0225f164038baacf"}],"specs/zed/approved/pci-device-tracking-in-placement.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":true,"context_lines":[{"line_number":153,"context_line":"  matching resource class in the alias definition. So any custom resource class"},{"line_number":154,"context_line":"  can be used. Will nova-compute create the requested custom resource class in"},{"line_number":155,"context_line":"  placement or it is expected that the deployer pre-creates the resource"},{"line_number":156,"context_line":"  classes in placement before mentioning them in the nova configuration?"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Using arbitrary custom resource classes in the device_list will not work for"},{"line_number":159,"context_line":"  neutron-requested PCI devices as there is no way today for the deployer to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"632bd92b_c6840610","line":156,"updated":"2022-05-09 13:32:39.000000000","message":"nova will normalize, prepend with CUSTOM_ (if not prepended already) and then create the RC.","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c2caf9911836374303971ec4586210c95219446","unresolved":false,"context_lines":[{"line_number":153,"context_line":"  matching resource class in the alias definition. So any custom resource class"},{"line_number":154,"context_line":"  can be used. Will nova-compute create the requested custom resource class in"},{"line_number":155,"context_line":"  placement or it is expected that the deployer pre-creates the resource"},{"line_number":156,"context_line":"  classes in placement before mentioning them in the nova configuration?"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Using arbitrary custom resource classes in the device_list will not work for"},{"line_number":159,"context_line":"  neutron-requested PCI devices as there is no way today for the deployer to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ad8b4438_58edf22d","line":156,"in_reply_to":"632bd92b_c6840610","updated":"2022-05-10 12:06:58.000000000","message":"Done","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":true,"context_lines":[{"line_number":166,"context_line":"  Is it OK?"},{"line_number":167,"context_line":"  If not then we need to reconsider not allowing any custom resource classes"},{"line_number":168,"context_line":"  for PCI devices and only allow traits to be provided by the deployer to"},{"line_number":169,"context_line":"  differentiate between different types of PCI devices."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":".. _`PCI passthrough allow list`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.passthrough_whitelist"}],"source_content_type":"text/x-rst","patch_set":4,"id":"708e082b_89193edd","line":169,"updated":"2022-05-09 13:32:39.000000000","message":"do not mix resource_class and physnet tag, if physnet tag is present use standard RC in the future","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c2caf9911836374303971ec4586210c95219446","unresolved":false,"context_lines":[{"line_number":166,"context_line":"  Is it OK?"},{"line_number":167,"context_line":"  If not then we need to reconsider not allowing any custom resource classes"},{"line_number":168,"context_line":"  for PCI devices and only allow traits to be provided by the deployer to"},{"line_number":169,"context_line":"  differentiate between different types of PCI devices."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":".. _`PCI passthrough allow list`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.passthrough_whitelist"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ec560af3_306b6412","line":169,"in_reply_to":"708e082b_89193edd","updated":"2022-05-10 12:06:58.000000000","message":"Done","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":true,"context_lines":[{"line_number":185,"context_line":"**Question**:"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"* We could use a more normal-looking PCI address in the RP name in the form"},{"line_number":188,"context_line":"  ``DDDD:BB:AA.FF`` if we want, as Placement allows a such name. But then we"},{"line_number":189,"context_line":"  would be inconsistent with the pGPU RP naming."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"* Neutron uses \u0027:\u0027 as a separator after the hostname prefix in the device RP"}],"source_content_type":"text/x-rst","patch_set":4,"id":"74680373_24157c0d","line":188,"updated":"2022-05-09 13:32:39.000000000","message":"Go with this. Note that this is incosistent with pGPU but the libvirt node dev name is not considered stable","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c2caf9911836374303971ec4586210c95219446","unresolved":false,"context_lines":[{"line_number":185,"context_line":"**Question**:"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"* We could use a more normal-looking PCI address in the RP name in the form"},{"line_number":188,"context_line":"  ``DDDD:BB:AA.FF`` if we want, as Placement allows a such name. But then we"},{"line_number":189,"context_line":"  would be inconsistent with the pGPU RP naming."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"* Neutron uses \u0027:\u0027 as a separator after the hostname prefix in the device RP"}],"source_content_type":"text/x-rst","patch_set":4,"id":"2ef1349c_21db1930","line":188,"in_reply_to":"74680373_24157c0d","updated":"2022-05-10 12:06:58.000000000","message":"Done","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":true,"context_lines":[{"line_number":243,"context_line":"  information e.g.: product_id, vendor_id, mac_address?"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"* Do we want that nova-compute automatically reports traits based on device"},{"line_number":246,"context_line":"  capabilities like TSO?"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"Reporting inventories from libvirt to Placement"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3817b640_0e08630a","line":246,"updated":"2022-05-09 13:32:39.000000000","message":"Do not add cap traits, keep user defined additive only for both cases. In the future we can automate capability reporting to placement. (today only netdev capabilities are used anyhow)","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c2caf9911836374303971ec4586210c95219446","unresolved":false,"context_lines":[{"line_number":243,"context_line":"  information e.g.: product_id, vendor_id, mac_address?"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"* Do we want that nova-compute automatically reports traits based on device"},{"line_number":246,"context_line":"  capabilities like TSO?"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"Reporting inventories from libvirt to Placement"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e11967d0_53f836de","line":246,"in_reply_to":"3817b640_0e08630a","updated":"2022-05-10 12:06:58.000000000","message":"Done","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":true,"context_lines":[{"line_number":289,"context_line":"  are provided in the alias? The new logic can only filter for vendor/product"},{"line_number":290,"context_line":"  based on the RC in Placement. Should we add vendor_id and product_id traits"},{"line_number":291,"context_line":"  automatically to the device RP and filter on them if provided in the alias?"},{"line_number":292,"context_line":"  OR just let the PciPassthroughFilter do the filtering for vendor/product?"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":".. _`PCI alias definition`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.alias"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"02a1e279_9fb9a34c","line":292,"updated":"2022-05-09 13:32:39.000000000","message":"allow mixed mode, do not check consistency, use RC for placement query, and the rest will be enforced by PCIFilter","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c2caf9911836374303971ec4586210c95219446","unresolved":false,"context_lines":[{"line_number":289,"context_line":"  are provided in the alias? The new logic can only filter for vendor/product"},{"line_number":290,"context_line":"  based on the RC in Placement. Should we add vendor_id and product_id traits"},{"line_number":291,"context_line":"  automatically to the device RP and filter on them if provided in the alias?"},{"line_number":292,"context_line":"  OR just let the PciPassthroughFilter do the filtering for vendor/product?"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":".. _`PCI alias definition`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.alias"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"a4cf7cf1_14d6c4cd","line":292,"in_reply_to":"02a1e279_9fb9a34c","updated":"2022-05-10 12:06:58.000000000","message":"Done","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ca593a1af81b8989de4359ec7eb0376d6f2f272c","unresolved":true,"context_lines":[{"line_number":350,"context_line":"  So Nova needs to reserve first."},{"line_number":351,"context_line":""},{"line_number":352,"context_line":".. note::"},{"line_number":353,"context_line":"  The scheduler needs to specially handle the case when a VM requests two ports"},{"line_number":354,"context_line":"  one direct and one direct-physical. This request should not pass a compute"},{"line_number":355,"context_line":"  host that has only one PF and a child VF available. **But** from Placement"},{"line_number":356,"context_line":"  perspective, PF and VF resources can be independently consumed. So Placement"},{"line_number":357,"context_line":"  will return an allocation candidate for such compute host. Therefore Nova is"}],"source_content_type":"text/x-rst","patch_set":4,"id":"4a67aeb7_3db07e4f","line":354,"range":{"start_line":353,"start_character":70,"end_line":354,"end_character":37},"updated":"2022-05-09 08:46:48.000000000","message":"change this to alias based example. So the VM requests two pci devices one type-PF and one type-VF via alias.","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c2caf9911836374303971ec4586210c95219446","unresolved":false,"context_lines":[{"line_number":350,"context_line":"  So Nova needs to reserve first."},{"line_number":351,"context_line":""},{"line_number":352,"context_line":".. note::"},{"line_number":353,"context_line":"  The scheduler needs to specially handle the case when a VM requests two ports"},{"line_number":354,"context_line":"  one direct and one direct-physical. This request should not pass a compute"},{"line_number":355,"context_line":"  host that has only one PF and a child VF available. **But** from Placement"},{"line_number":356,"context_line":"  perspective, PF and VF resources can be independently consumed. So Placement"},{"line_number":357,"context_line":"  will return an allocation candidate for such compute host. Therefore Nova is"}],"source_content_type":"text/x-rst","patch_set":4,"id":"acb96256_7d8e9da3","line":354,"range":{"start_line":353,"start_character":70,"end_line":354,"end_character":37},"in_reply_to":"4a67aeb7_3db07e4f","updated":"2022-05-10 12:06:58.000000000","message":"Done","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":true,"context_lines":[{"line_number":372,"context_line":"  handling at all. It is tempting as this is a huge complexity addition."},{"line_number":373,"context_line":"  However, I think the current behavior is heavily used as it was sort of"},{"line_number":374,"context_line":"  automatically applied in any environment that every whitelisted a PF that"},{"line_number":375,"context_line":"  had VFs. Can we drop this logic to save on complexity?"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"PCI NUMA affinity"},{"line_number":378,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8584d7bc_35f9ad83","line":375,"updated":"2022-05-09 13:32:39.000000000","message":"Keep this open for now. We want to get rid of the complexity, but this is used by deployments out there.","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":372,"context_line":"  handling at all. It is tempting as this is a huge complexity addition."},{"line_number":373,"context_line":"  However, I think the current behavior is heavily used as it was sort of"},{"line_number":374,"context_line":"  automatically applied in any environment that every whitelisted a PF that"},{"line_number":375,"context_line":"  had VFs. Can we drop this logic to save on complexity?"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"PCI NUMA affinity"},{"line_number":378,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8a4be96b_0d5acf6e","line":375,"in_reply_to":"74a72939_4ff52947","updated":"2022-05-13 10:49:04.000000000","message":"What Sean suggests is effectively the approach we took with CPUs (deprecating \u0027[DEFAULT] vcpu_pin_set\u0027 in favour of \u0027[compute] cpu_dedicated_set\u0027 and \u0027[compute] cpu_shared_set\u0027. It\u0027s been done before and it worked.","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60c12f59c6c7ce33e591195488d01382e6410d32","unresolved":true,"context_lines":[{"line_number":372,"context_line":"  handling at all. It is tempting as this is a huge complexity addition."},{"line_number":373,"context_line":"  However, I think the current behavior is heavily used as it was sort of"},{"line_number":374,"context_line":"  automatically applied in any environment that every whitelisted a PF that"},{"line_number":375,"context_line":"  had VFs. Can we drop this logic to save on complexity?"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"PCI NUMA affinity"},{"line_number":378,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"74a72939_4ff52947","line":375,"in_reply_to":"8584d7bc_35f9ad83","updated":"2022-05-11 11:14:13.000000000","message":"this is the other simplciation opertunity.\n\nwe could decied that we wont allow a device to be whitelist as both a VF and PF anymore.\n\nthat removes the need for the resverve value updateing.\n\nit would be a breaking change and a non 0 upgrade impact however.\n\nwe  did this likely instead of simply renaming the passthough_whitelist config option we would have to keep both passthough_whitelist and device_list so that operators can opt in to the new world of pci in palcment as we did for cpus in placment.\n\nwe would still passthough_whitelist for removal in the future but use the new name to enable the new mecanics.\n\nso after updating to zed you would need to update the config to reflect how the devices are curently used and also decide how the devices will be used going forward.","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":372,"context_line":"  handling at all. It is tempting as this is a huge complexity addition."},{"line_number":373,"context_line":"  However, I think the current behavior is heavily used as it was sort of"},{"line_number":374,"context_line":"  automatically applied in any environment that every whitelisted a PF that"},{"line_number":375,"context_line":"  had VFs. Can we drop this logic to save on complexity?"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"PCI NUMA affinity"},{"line_number":378,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"59382ea0_5b095f6b","line":375,"in_reply_to":"8a4be96b_0d5acf6e","updated":"2022-05-13 15:34:30.000000000","message":"OK, lets simplify!","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"51e43e9959b16acce4797ca7a6d929ddeeba49ef","unresolved":true,"context_lines":[{"line_number":426,"context_line":"and that is out of the scope of this spec."},{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":430,"context_line":"-----------------------------------"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"This is out of scope in the current spec. But certain aspects of the problem"}],"source_content_type":"text/x-rst","patch_set":4,"id":"191e62b6_3326ee35","line":429,"range":{"start_line":429,"start_character":0,"end_line":429,"end_character":35},"updated":"2022-05-09 13:19:49.000000000","message":"JUST QUESTIONS AND CONSIDERATIONS ABOUT SRIOV AND NEUTRON.\nOk, I was looking for this the very first time I saw \"physical_network\" tag was not considered.\n\nWill SRIOV ports be supported as other PCI devices? If yes, should Neutron request it when a new port is created (maybe this question is for the future development)?","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":true,"context_lines":[{"line_number":426,"context_line":"and that is out of the scope of this spec."},{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":430,"context_line":"-----------------------------------"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"This is out of scope in the current spec. But certain aspects of the problem"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6c5ffb7d_f28a21c9","line":429,"range":{"start_line":429,"start_character":0,"end_line":429,"end_character":35},"in_reply_to":"191e62b6_3326ee35","updated":"2022-05-09 13:32:39.000000000","message":"We agreed with Sean that if the physical_network tag is present then nova will use standard VF and PF RCs. So we have multiple options. \na) neutron can include the standard VF and PF RC in the port resource_request. This is preferred in my eyes. (also the physnet trait could be included at the same time)\nb) nova when generates the InstancePCIRequest (as today) from the neutron SRIOV port can insert the VF / PF RC to the request.\n\nI think if we solve the correlation of BW and PF RP (options are at the end of the chapter) then we will see if a) or b) is more viable. E.g. if we got with a scheduler filter then I\u0027m fine to keep the whole thing nova only and go with b).","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c2caf9911836374303971ec4586210c95219446","unresolved":false,"context_lines":[{"line_number":426,"context_line":"and that is out of the scope of this spec."},{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":430,"context_line":"-----------------------------------"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"This is out of scope in the current spec. But certain aspects of the problem"}],"source_content_type":"text/x-rst","patch_set":4,"id":"037c01f3_73d32358","line":429,"range":{"start_line":429,"start_character":0,"end_line":429,"end_character":35},"in_reply_to":"6c5ffb7d_f28a21c9","updated":"2022-05-10 12:06:58.000000000","message":"Noted this now below","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a30e9f0ab52f91c3ba208ca2e731dcef34a9e7","unresolved":true,"context_lines":[{"line_number":583,"context_line":"  * This will enable reporting of PCI devices resource inventories to Placement"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"  * This will do a reshape to extend the allocation of the existing instance"},{"line_number":586,"context_line":"    with PCI devices."},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"Additionally, we can introduce a fallback query in the scheduler (similarly to"},{"line_number":589,"context_line":"how it was handled for the PCPU transition) to avoid the temporary failure of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"2e6789be_91728643","line":586,"updated":"2022-05-09 13:32:39.000000000","message":"So instead:\nstart reporting devices but keep them out from the request.\nwhen all the computes are upgraded:\n* enable the requests (can be based on min version check)\n* heal allocations either by restart the computes or by a CLI, or we can keep the healing as a periodic in the compute as it is only allocation healing at this point.","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c2caf9911836374303971ec4586210c95219446","unresolved":false,"context_lines":[{"line_number":583,"context_line":"  * This will enable reporting of PCI devices resource inventories to Placement"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"  * This will do a reshape to extend the allocation of the existing instance"},{"line_number":586,"context_line":"    with PCI devices."},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"Additionally, we can introduce a fallback query in the scheduler (similarly to"},{"line_number":589,"context_line":"how it was handled for the PCPU transition) to avoid the temporary failure of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e73653b6_5794dde5","line":586,"in_reply_to":"2e6789be_91728643","updated":"2022-05-10 12:06:58.000000000","message":"Done","commit_id":"00499f479180f8f63a6a6669402aabedfa982774"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":14,"context_line":"of quantitative resources via resource class inventories and qualitative"},{"line_number":15,"context_line":"characteristics via traits. Over the last few cycles, nova has utilized"},{"line_number":16,"context_line":"Placement to track basic resources such as CPUs, RAM, and disk, and more"},{"line_number":17,"context_line":"complex resources such as Virtual GPUs. This spec describes how Nova can"},{"line_number":18,"context_line":"utilize Placement to track generic PCI devices."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Problem description"},{"line_number":21,"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":5,"id":"962e1bf2_86b24aec","line":18,"range":{"start_line":17,"start_character":40,"end_line":18,"end_character":47},"updated":"2022-05-23 16:52:47.000000000","message":"nit: maybe we should explicitly tell in this summary that we wouldn\u0027t support NUMA-aware support for those PCI devices by this spec (and continuing to support this feature by the NUMA filter)","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":14,"context_line":"of quantitative resources via resource class inventories and qualitative"},{"line_number":15,"context_line":"characteristics via traits. Over the last few cycles, nova has utilized"},{"line_number":16,"context_line":"Placement to track basic resources such as CPUs, RAM, and disk, and more"},{"line_number":17,"context_line":"complex resources such as Virtual GPUs. This spec describes how Nova can"},{"line_number":18,"context_line":"utilize Placement to track generic PCI devices."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Problem description"},{"line_number":21,"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":5,"id":"9809d229_6ace1839","line":18,"range":{"start_line":17,"start_character":40,"end_line":18,"end_character":47},"in_reply_to":"962e1bf2_86b24aec","updated":"2022-05-25 11:49:54.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":31,"context_line":"The ``PciPassthroughFilter`` is responsible for ensuring that devices,"},{"line_number":32,"context_line":"requested by the VM, exist on a host during scheduling. These PCI requests come"},{"line_number":33,"context_line":"from two sources: flavor-based PCI requests that are generated using the"},{"line_number":34,"context_line":"``pci_passthrough:alias`` `flavor extra specs`_ and the second source of PCI"},{"line_number":35,"context_line":"requests are SR-IOV backed neutron ports."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":".. _`flavor extra specs`: https://docs.openstack.org/nova/latest/configuration/extra-specs.html#pci_passthrough:alias"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4793525d_ccde7a65","line":34,"range":{"start_line":34,"start_character":48,"end_line":34,"end_character":70},"updated":"2022-05-23 16:52:47.000000000","message":"nit: and secondly, by...","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":31,"context_line":"The ``PciPassthroughFilter`` is responsible for ensuring that devices,"},{"line_number":32,"context_line":"requested by the VM, exist on a host during scheduling. These PCI requests come"},{"line_number":33,"context_line":"from two sources: flavor-based PCI requests that are generated using the"},{"line_number":34,"context_line":"``pci_passthrough:alias`` `flavor extra specs`_ and the second source of PCI"},{"line_number":35,"context_line":"requests are SR-IOV backed neutron ports."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":".. _`flavor extra specs`: https://docs.openstack.org/nova/latest/configuration/extra-specs.html#pci_passthrough:alias"}],"source_content_type":"text/x-rst","patch_set":5,"id":"42762db2_f78c6ecd","line":34,"range":{"start_line":34,"start_character":48,"end_line":34,"end_character":70},"in_reply_to":"4793525d_ccde7a65","updated":"2022-05-25 11:49:54.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":31,"context_line":"The ``PciPassthroughFilter`` is responsible for ensuring that devices,"},{"line_number":32,"context_line":"requested by the VM, exist on a host during scheduling. These PCI requests come"},{"line_number":33,"context_line":"from two sources: flavor-based PCI requests that are generated using the"},{"line_number":34,"context_line":"``pci_passthrough:alias`` `flavor extra specs`_ and the second source of PCI"},{"line_number":35,"context_line":"requests are SR-IOV backed neutron ports."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":".. _`flavor extra specs`: https://docs.openstack.org/nova/latest/configuration/extra-specs.html#pci_passthrough:alias"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"0544b3a2_40aa629c","line":35,"range":{"start_line":34,"start_character":52,"end_line":35,"end_character":41},"updated":"2022-05-13 10:49:04.000000000","message":"grammar nit:\n\n  and PCI requests generated by the use of SR-IOV backed neutron ports.\n\n(if you\u0027re going to say \"and the second source\" then you kind of have to say \"the first source\" beforehand 😄)","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":31,"context_line":"The ``PciPassthroughFilter`` is responsible for ensuring that devices,"},{"line_number":32,"context_line":"requested by the VM, exist on a host during scheduling. These PCI requests come"},{"line_number":33,"context_line":"from two sources: flavor-based PCI requests that are generated using the"},{"line_number":34,"context_line":"``pci_passthrough:alias`` `flavor extra specs`_ and the second source of PCI"},{"line_number":35,"context_line":"requests are SR-IOV backed neutron ports."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":".. _`flavor extra specs`: https://docs.openstack.org/nova/latest/configuration/extra-specs.html#pci_passthrough:alias"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff1955cc_ff122da6","line":35,"range":{"start_line":34,"start_character":52,"end_line":35,"end_character":41},"in_reply_to":"0544b3a2_40aa629c","updated":"2022-05-13 15:34:30.000000000","message":"I was always wondering if this was a hard grammar rule or just a style thing.\n\nFixed.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":52,"context_line":"  user-facing way to express a request for an SR-IOV neutron port with a"},{"line_number":53,"context_line":"  specific network capability e.g. TSO."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* There is no admin-facing interface to check the available, and allocated PCI"},{"line_number":56,"context_line":"  resources in the cloud. The only way today is to look into the Nova database."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. rubric:: Optimizations"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff9f3be4_520603ea","line":55,"range":{"start_line":55,"start_character":59,"end_line":55,"end_character":60},"updated":"2022-05-13 10:49:04.000000000","message":"nit: strike","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":52,"context_line":"  user-facing way to express a request for an SR-IOV neutron port with a"},{"line_number":53,"context_line":"  specific network capability e.g. TSO."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* There is no admin-facing interface to check the available, and allocated PCI"},{"line_number":56,"context_line":"  resources in the cloud. The only way today is to look into the Nova database."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. rubric:: Optimizations"}],"source_content_type":"text/x-rst","patch_set":5,"id":"43791091_b45fcf99","line":55,"range":{"start_line":55,"start_character":59,"end_line":55,"end_character":60},"in_reply_to":"ff9f3be4_520603ea","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  specific network capability e.g. TSO."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* There is no admin-facing interface to check the available, and allocated PCI"},{"line_number":56,"context_line":"  resources in the cloud. The only way today is to look into the Nova database."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. rubric:: Optimizations"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"cba3f4b0_2dc9768e","line":56,"range":{"start_line":56,"start_character":39,"end_line":56,"end_character":44},"updated":"2022-05-13 10:49:04.000000000","message":"nit: strike","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  specific network capability e.g. TSO."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* There is no admin-facing interface to check the available, and allocated PCI"},{"line_number":56,"context_line":"  resources in the cloud. The only way today is to look into the Nova database."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. rubric:: Optimizations"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a600d2a0_193cb4b3","line":56,"range":{"start_line":56,"start_character":39,"end_line":56,"end_character":44},"in_reply_to":"cba3f4b0_2dc9768e","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":79,"context_line":"- As an operator, I want to utilize traits and resource classes to model"},{"line_number":80,"context_line":"  PCI aliases and requests for more expressive device management."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- As an operator, I want to be able to associate quotas with PCI device usage."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"- As an operator, I want to be able to use the Placement API to query available"},{"line_number":85,"context_line":"  and allocated PCI devices in my cloud."}],"source_content_type":"text/x-rst","patch_set":5,"id":"58b89d5d_4166b9eb","line":82,"updated":"2022-05-23 16:52:47.000000000","message":"++","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":79,"context_line":"- As an operator, I want to utilize traits and resource classes to model"},{"line_number":80,"context_line":"  PCI aliases and requests for more expressive device management."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- As an operator, I want to be able to associate quotas with PCI device usage."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"- As an operator, I want to be able to use the Placement API to query available"},{"line_number":85,"context_line":"  and allocated PCI devices in my cloud."}],"source_content_type":"text/x-rst","patch_set":5,"id":"f77da4cb_d8d3038b","line":82,"in_reply_to":"58b89d5d_4166b9eb","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":96,"context_line":"Proposed change"},{"line_number":97,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"PCI device_list configuration"},{"line_number":100,"context_line":"-----------------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Below we propose a change to the ``[pci]passthrough_whitelist`` configuration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"05d408d6_1126db06","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":15},"updated":"2022-05-13 10:49:04.000000000","message":"nit: ``code``","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":true,"context_lines":[{"line_number":96,"context_line":"Proposed change"},{"line_number":97,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"PCI device_list configuration"},{"line_number":100,"context_line":"-----------------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Below we propose a change to the ``[pci]passthrough_whitelist`` configuration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"c98bfe2d_10d5f64a","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":15},"in_reply_to":"05d408d6_1126db06","updated":"2022-05-13 15:34:30.000000000","message":"then I cannot refer to this from L213. Or at least I haven\u0027t figured out the syntax","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Proposed change"},{"line_number":97,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"PCI device_list configuration"},{"line_number":100,"context_line":"-----------------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Below we propose a change to the ``[pci]passthrough_whitelist`` configuration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"e4a5fd50_9614b6f1","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":15},"in_reply_to":"1d30cc51_bed978f3","updated":"2022-05-19 13:27:48.000000000","message":"Ack","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":96,"context_line":"Proposed change"},{"line_number":97,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"PCI device_list configuration"},{"line_number":100,"context_line":"-----------------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Below we propose a change to the ``[pci]passthrough_whitelist`` configuration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1d30cc51_bed978f3","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":15},"in_reply_to":"c98bfe2d_10d5f64a","updated":"2022-05-17 12:24:42.000000000","message":"ya in other place i would use `` `` but for the section headings lets not","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":97,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"PCI device_list configuration"},{"line_number":100,"context_line":"-----------------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Below we propose a change to the ``[pci]passthrough_whitelist`` configuration"},{"line_number":103,"context_line":"option. While we are making this change we will take this opportunity to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"95f49e0b_863eadaf","line":100,"updated":"2022-05-13 10:49:04.000000000","message":"Can you give a minimal \u0027nova.conf\u0027 example below? It will help reader understand this and can be reused when writing the docs for the option itself","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":97,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"PCI device_list configuration"},{"line_number":100,"context_line":"-----------------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Below we propose a change to the ``[pci]passthrough_whitelist`` configuration"},{"line_number":103,"context_line":"option. While we are making this change we will take this opportunity to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"058aeb6e_83cc5978","line":100,"in_reply_to":"95f49e0b_863eadaf","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":102,"context_line":"Below we propose a change to the ``[pci]passthrough_whitelist`` configuration"},{"line_number":103,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":104,"context_line":"update the name of the configuration option. The"},{"line_number":105,"context_line":"``[pci]/passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":106,"context_line":"removal and replaced with the new ``[pci]/device_list`` config option. Both the"},{"line_number":107,"context_line":"old and the new config options will support the newly proposed"},{"line_number":108,"context_line":"``resource_class`` and ``traits`` tags."}],"source_content_type":"text/x-rst","patch_set":5,"id":"aa8a72c3_3b3ff207","line":105,"range":{"start_line":105,"start_character":7,"end_line":105,"end_character":8},"updated":"2022-05-13 10:49:04.000000000","message":"nit: strike (here and elsewhere - we already have a delimiter in the form of the square brackets)","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":102,"context_line":"Below we propose a change to the ``[pci]passthrough_whitelist`` configuration"},{"line_number":103,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":104,"context_line":"update the name of the configuration option. The"},{"line_number":105,"context_line":"``[pci]/passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":106,"context_line":"removal and replaced with the new ``[pci]/device_list`` config option. Both the"},{"line_number":107,"context_line":"old and the new config options will support the newly proposed"},{"line_number":108,"context_line":"``resource_class`` and ``traits`` tags."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7c538f52_71540c21","line":105,"range":{"start_line":105,"start_character":7,"end_line":105,"end_character":8},"in_reply_to":"aa8a72c3_3b3ff207","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"The syntax of the `PCI passthrough allow list`_ configuration option will be"},{"line_number":111,"context_line":"extended to support two additional standard tags ``resource_class`` and"},{"line_number":112,"context_line":"``traits``."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The ``resource_class`` tag will be allowed only when the ``physical_network``"},{"line_number":115,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4d52fa07_cfac54f4","line":112,"updated":"2022-05-13 10:49:04.000000000","message":"Can we *please* drop device_name in the process. It\u0027s been the cause of so many customer cases and I\u0027d hate to bring those problems into the new placementy world.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"The syntax of the `PCI passthrough allow list`_ configuration option will be"},{"line_number":111,"context_line":"extended to support two additional standard tags ``resource_class`` and"},{"line_number":112,"context_line":"``traits``."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The ``resource_class`` tag will be allowed only when the ``physical_network``"},{"line_number":115,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"}],"source_content_type":"text/x-rst","patch_set":5,"id":"094c530b_c3f88eea","line":112,"in_reply_to":"4d52fa07_cfac54f4","updated":"2022-05-13 15:34:30.000000000","message":"OK, Let\u0027s do it. Added it to the end of this chapter.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":114,"context_line":"The ``resource_class`` tag will be allowed only when the ``physical_network``"},{"line_number":115,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"},{"line_number":116,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":117,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":118,"context_line":"reported in Placement at this time."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Where a PCI device does not have a ``physical_network`` or a ``resource_class``"},{"line_number":121,"context_line":"tag present it will be reported with a generated custom resource class."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ab549934_2338dec4","line":118,"range":{"start_line":117,"start_character":20,"end_line":118,"end_character":35},"updated":"2022-05-13 10:49:04.000000000","message":"Why?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":114,"context_line":"The ``resource_class`` tag will be allowed only when the ``physical_network``"},{"line_number":115,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"},{"line_number":116,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":117,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":118,"context_line":"reported in Placement at this time."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Where a PCI device does not have a ``physical_network`` or a ``resource_class``"},{"line_number":121,"context_line":"tag present it will be reported with a generated custom resource class."}],"source_content_type":"text/x-rst","patch_set":5,"id":"2b3d994b_d48d5fca","line":118,"range":{"start_line":117,"start_character":20,"end_line":118,"end_character":35},"in_reply_to":"ab549934_2338dec4","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":125,"context_line":"names that will be reported for the device RP in Placement."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Nova will normalize and prefix the resource class and trait names with"},{"line_number":128,"context_line":"``CUSTOM_``, if isn\u0027t already prefixed, before creating them in placement."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":".. note::"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"0ca4f64d_68fd614e","line":128,"updated":"2022-05-10 12:24:26.000000000","message":"nit: at least for the traits if the trait is a standard trait we should not prefix it obviously but since you list standar or custom trait on line 124 that kind of implictly understood so this is probaly fine.  we could clarify that if we wanted but its not really that big of a deal if we dont.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":125,"context_line":"names that will be reported for the device RP in Placement."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Nova will normalize and prefix the resource class and trait names with"},{"line_number":128,"context_line":"``CUSTOM_``, if isn\u0027t already prefixed, before creating them in placement."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":".. note::"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"c7e0f0bb_7123897d","line":128,"in_reply_to":"0ca4f64d_68fd614e","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"  While it would possible to support defining different ``resource_class``"},{"line_number":144,"context_line":"  names for different VFs under the same parent PF, this is considered bad"},{"line_number":145,"context_line":"  practice and unnecessary complexity. So such configuration will be rejected."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  If different traits need to be supported on a PF than its children VFs"},{"line_number":148,"context_line":"  then it is suggested to match the PF and its VFs in two separate"}],"source_content_type":"text/x-rst","patch_set":5,"id":"72d41847_6fa7d7fa","line":145,"range":{"start_line":145,"start_character":39,"end_line":145,"end_character":46},"updated":"2022-05-13 10:49:04.000000000","message":"nit: Such\n\n(Don\u0027t start sentences with So unless you stick in a comma/are Sean 😄)","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"  While it would possible to support defining different ``resource_class``"},{"line_number":144,"context_line":"  names for different VFs under the same parent PF, this is considered bad"},{"line_number":145,"context_line":"  practice and unnecessary complexity. So such configuration will be rejected."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  If different traits need to be supported on a PF than its children VFs"},{"line_number":148,"context_line":"  then it is suggested to match the PF and its VFs in two separate"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b32ffb5f_668bf396","line":145,"range":{"start_line":145,"start_character":39,"end_line":145,"end_character":46},"in_reply_to":"72d41847_6fa7d7fa","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":149,"context_line":"  ``device_list`` entries and differentiate the PF and VF traits by namespacing"},{"line_number":150,"context_line":"  them, e.g.: CUSTOM_PCI_PF_XXX and CUSTOM_PCI_VF_YYY"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. note::"},{"line_number":153,"context_line":"  In the future when PCI tracking in Placement will be extended to device_list"},{"line_number":154,"context_line":"  entries with ``physical_network`` tag, these entries will not allow"},{"line_number":155,"context_line":"  specifying a ``resource_class`` but nova will use the standard"}],"source_content_type":"text/x-rst","patch_set":5,"id":"59941740_78808cf2","line":152,"updated":"2022-05-13 10:49:04.000000000","message":"style nit: newline under this?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":149,"context_line":"  ``device_list`` entries and differentiate the PF and VF traits by namespacing"},{"line_number":150,"context_line":"  them, e.g.: CUSTOM_PCI_PF_XXX and CUSTOM_PCI_VF_YYY"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. note::"},{"line_number":153,"context_line":"  In the future when PCI tracking in Placement will be extended to device_list"},{"line_number":154,"context_line":"  entries with ``physical_network`` tag, these entries will not allow"},{"line_number":155,"context_line":"  specifying a ``resource_class`` but nova will use the standard"}],"source_content_type":"text/x-rst","patch_set":5,"id":"6bb6230f_62e25722","line":152,"in_reply_to":"59941740_78808cf2","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  specifying a ``resource_class`` but nova will use the standard"},{"line_number":156,"context_line":"  ``SRIOV_NET_VF`` and ``SRIOV_NET_PF`` classes. This will not prevent"},{"line_number":157,"context_line":"  type-VF and type-PF devices to be consumed via PCI alias, as the alias can"},{"line_number":158,"context_line":"  request teh ``SRIVO_NET_VF`` and ``SRIOV_NET_PF`` classes."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".. _`PCI passthrough allow list`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.passthrough_whitelist"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"4d7aabc2_c78ce6e7","line":158,"updated":"2022-05-10 12:24:26.000000000","message":"nit we coudl also mention SRIOV_NET_VDPA as a possible future trait but since we are not going to add that as part of this spec this is really just a note to reviewers.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  specifying a ``resource_class`` but nova will use the standard"},{"line_number":156,"context_line":"  ``SRIOV_NET_VF`` and ``SRIOV_NET_PF`` classes. This will not prevent"},{"line_number":157,"context_line":"  type-VF and type-PF devices to be consumed via PCI alias, as the alias can"},{"line_number":158,"context_line":"  request teh ``SRIVO_NET_VF`` and ``SRIOV_NET_PF`` classes."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".. _`PCI passthrough allow list`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.passthrough_whitelist"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"467a3f72_59f4b631","line":158,"range":{"start_line":158,"start_character":10,"end_line":158,"end_character":13},"updated":"2022-05-13 10:49:04.000000000","message":"the","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  specifying a ``resource_class`` but nova will use the standard"},{"line_number":156,"context_line":"  ``SRIOV_NET_VF`` and ``SRIOV_NET_PF`` classes. This will not prevent"},{"line_number":157,"context_line":"  type-VF and type-PF devices to be consumed via PCI alias, as the alias can"},{"line_number":158,"context_line":"  request teh ``SRIVO_NET_VF`` and ``SRIOV_NET_PF`` classes."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".. _`PCI passthrough allow list`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.passthrough_whitelist"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"6af15271_9a3db491","line":158,"range":{"start_line":158,"start_character":10,"end_line":158,"end_character":13},"in_reply_to":"467a3f72_59f4b631","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  specifying a ``resource_class`` but nova will use the standard"},{"line_number":156,"context_line":"  ``SRIOV_NET_VF`` and ``SRIOV_NET_PF`` classes. This will not prevent"},{"line_number":157,"context_line":"  type-VF and type-PF devices to be consumed via PCI alias, as the alias can"},{"line_number":158,"context_line":"  request teh ``SRIVO_NET_VF`` and ``SRIOV_NET_PF`` classes."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".. _`PCI passthrough allow list`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.passthrough_whitelist"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff6cfb45_9b9618a8","line":158,"in_reply_to":"4d7aabc2_c78ce6e7","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":163,"context_line":"----------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f36f31b6_0e9f87bf","line":166,"range":{"start_line":166,"start_character":24,"end_line":166,"end_character":35},"updated":"2022-05-10 12:24:26.000000000","message":"just a little history for context\n\nwhen we first added pci passthough there was only type-pci\nwe did not supprot neutron consumtion only via alais and we explcitly did not support nics only stateless acceleratros specific it was intoduced for pci passthough of intels QAT crypto acclerators whcih did not supprot sriov.\n\nlater we added supprot for sriov in neuton with vnic-type\u003ddirect.\n\nAt the time direct was allowed consome either VFs or full devices and you contoled\nthat via the pci whitelist and the physical_network tag.\n\nit was soon observed that that lead to broken behavior since the nic mac adress did not match the neutron port mac if a non vf was selected.\n\nto adress this vnic-type direct-physical and type-pf were added \n\nvnic-type\u003ddirect-physical explcitly have type-PF in the pci request spec.\nwhen we added it also put a filter in place to remove pools of type-PF if\nthe request spec does not ask for type-PF,\n\nthis filter was a breaking change and broke anyone who had a pci alias with just vendor-id and product id but not a device-type set.\n\n\nmore context:\n\ntype-pci device are any device that is not a VF and doese not have the ablity to create a VF in the pci config capablities.\n\ntype-PF is any pci device that can create VFs\n\nand type VF is any vf device that does not supprot VDPA\n\ntype-vdpa is actully spelled \u0027vdpa\u0027 in the database because the column\nlimit was 7 and i did not want a db scheme to make it 8 when the type prfix for a device-type column is reduntant.\n\nvdpa devices are any VFs with the vdpa capablity.\n\nthey can only be requested if the pci request object has device-type\u003dvdpa and are filtered the same way PFs are when device-type!\u003dvdpa\n\n\nso puting this all togehter\n\n\u0027type-PF\u0027 devices can only be requested if the pci request spec has device-type\u003dtype-pf\nthey can be requested via alia or vnic-type\u003ddirect-physical.\n\n\u0027vdpa\u0027 devices can only be requested if the pci request spec has device-type\u003dvdpa\nand that is only possible via vnic-type\u003dvdpa. it is not supported in the pci alias.\n\n\u0027type-VF\u0027 devices can be requested explcitly vai the alias by setting device-type\u003dtype-vf or implictly via vnic-type\u003ddirect or vnic-type\u003dmacvtap\n\n\u0027type-pci\u0027 devices can be requested explcitly vai the alias by setting device-type\u003dtype-pci or implictly via vnic-type\u003ddirect or vnic-type\u003dmacvtap.\nhowever when assigned to netorn port the port mac adress will not be updated.\n\n\nso when we shoudl proably fix this either in a follow up spec when we add neutron sriov port supprot or as part of this one.\n\nvnic-type\u003ddirect and vnic-type\u003dmacvtap shoudl likely explictly request type-vf\n\nvnic-type\u003ddirect-physical shoudl be able to reqest type-pci or type-pf.\n\ntoday the pci request object cannot accpet a list of device types so this would required an object change and changes to the pci tracker so that it could handel that.\n\nthere are other ways to adress such as making the device-type required in the alias. in which if vnic-type direct and macvtap request VF we can remvoe the PF filter. that woudl enable use to remvoe the device-type form the pci request geenreated for vnic-type\u003ddirect-physical and it could then consome type-pci or type-PF\n\ni just wanted to raise this since i  thinks for sriov ports we shoudl be tracking both type-pci and type-PF deveices as inventories of SRIOV_NET_PF.\nsince form a neutron perpctive a PF and a full pci passthogh of a device that does not supprot vf createoin are the same.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"32edc9f2b9c9ecef8e651f6b366c2b019cc045bc","unresolved":true,"context_lines":[{"line_number":163,"context_line":"----------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"66f79112_cdbd904a","line":166,"range":{"start_line":166,"start_character":24,"end_line":166,"end_character":35},"in_reply_to":"0ca66bbd_8b1da71c","updated":"2022-05-11 03:02:35.000000000","message":"I can\u0027t follow the details of what you said but as I read Sean\u0027s comment explaining the history, my first thought was, \"is this an opportunity to change the existing/legacy logic to something simpler?\" 😕","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":163,"context_line":"----------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5cb599dc_4e5852fa","line":166,"range":{"start_line":166,"start_character":24,"end_line":166,"end_character":35},"in_reply_to":"5837a826_e047e43a","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60c12f59c6c7ce33e591195488d01382e6410d32","unresolved":true,"context_lines":[{"line_number":163,"context_line":"----------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f879da87_bb7bcc79","line":166,"range":{"start_line":166,"start_character":24,"end_line":166,"end_character":35},"in_reply_to":"66f79112_cdbd904a","updated":"2022-05-11 11:14:13.000000000","message":"@melanie\nyes it is the best opertunity to symplify we will get bar removing this support enirely and delgating ti to cyborg which i dont belive we should do given cyborges current state of maturity. that is why i brought up the history because while the current system works and work pretty well it was extended repetadly and not always with full context of the implication as the direct-pysical addtion shows.\n\n@gibi\n\nlet me clarify my previous comment.\n\nneutron port request always have a phsyical network request in the pci request object. so vnic-type\u003ddirect-physical or any other neutron port will only consider devices that have a matching physical network tag in the device list.\n\nso if you only set phsyical_network on your nics the they will only select nics. we do not have any other protection in place to prevent neutron claimign non nic devices and we do not check that the device with physical_network set are actully nics, we trust the operator to only set it on the correct devices. so yes \n\"\"\"that is technically prevented by the fact that neutron ports always impose a physical_network request on the PCI device and we don\u0027t expect that a non-netdev PCI device is whitelisted with a physical_network tag in the config.\"\"\"\n\n\"\"\"I think it shows a data model issue that a direct-physical port is either consume a type-PF or a type-PCI,\"\"\"\n\ntoday that is not the case. direct-physical will always exclivtly consume type-PF.\n\ndirect or macvtap ports will consume type-VF or type-PCI.\n\nthat is because direct and macvtap ports do not pass a device type in the pci request.  we always filter out type-PF and type-vdpa if not requested\nthen we so because direct and macvtap dont explcitly reqeust type-VF they can get type-VF or type-PCI. that is obviouls the wrong logical grouping\n\ntype-PCI and type-PF are equvalent since neither can have there mac updated and represnet a fully device passthough so they should both map to driect-phsyical.\n\nwe get a way with this today since very few datacenter grade nics these days dont support sriov so it now uncommon to find a nic that is report as type-pci.\n\n\ncopy pasting your poposal with replies inline\n----------------------------------------------\n\n\"\"\"each device from the ``device_list`` that is not a VF represented by an individual RP in placement.\"\"\"\n\n+1\n\n\"\"\"either the ``resource_class`` from the ``device_list`` entry defines the RC for the inventory of this device.or there is no ``resource_class`` but there is a ``phsysical_network`` tag  in the ``device_list`` entry. In this case we assume that the device is a netdev. If it is a netdev but not a VF then we start tracking them as PCI_NETDEV\u003d1 resource inventory. (It can be still a PF or non-PF netdev we don\u0027t care, if we need to care in the future we can add a CUSTOM_PCI_PF trait to indicate that it is a special netdev that is a PF).\"\"\"\n\nso looking at the standard resouc classes we dont actully have an SRIOV_NET_PF class\n\nhttps://github.com/openstack/os-resource-classes/blob/master/os_resource_classes/__init__.py#L48-L49\u003d\n\nwe have a PCI_DEVICE class but im ok with adding PCI_NETDEV\nto model (type-pci or type-PF) with phsyical_network\nand we can use the HW_NIC_SRIOV triat to model the differnce\nhttps://github.com/openstack/os-traits/blob/master/os_traits/hw/nic/__init__.py#L17\u003d\n\nwe do not need a CUSTOM_PCI_PF trait.\n\n\n\"\"\"pci alias can request any kind of resource class, it can even request PCI_NETDEV or SRIOV_NET_VF\"\"\"\n\nyes in principal we currently prevent it claiming vdpa devices intentionally but the pci tacker will block that so we dont need to filter at placment level. so +1\n\n\n\"\"\"a neutron direct-physical port will always be mapped to request PCI_NETDEV\u003d1 resource from placement.\"\"\"\n+1\n\n\"\"\"a neutron direct port will request SRIOV_NET_VF\u003d1 resource from placement.\"\"\"\n \nso these are all the \"sriov\" vnic-types\nhttps://github.com/openstack/nova/blob/master/nova/network/model.py#L123\u003d\nVNIC_TYPES_SRIOV \u003d (\n    VNIC_TYPE_DIRECT, VNIC_TYPE_MACVTAP, VNIC_TYPE_DIRECT_PHYSICAL,\n    VNIC_TYPE_VIRTIO_FORWARDER, VNIC_TYPE_VDPA, VNIC_TYPE_REMOTE_MANAGED)\n\n\n(VNIC_TYPE_DIRECT, VNIC_TYPE_MACVTAP, VNIC_TYPE_VIRTIO_FORWARDER and  VNIC_TYPE_REMOTE_MANAGED) all map to SRIOV_NET_VF\u003d1\n\nVNIC_TYPE_DIRECT_PHYSICAL would be PCI_NETDEV\u003d1\n\nand VNIC_TYPE_VDPA should likely be VDPA_NETDEV\u003d1\n\nso yes +1 to your poposal.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d634e5a4306f0eb0ed8d997952f528993c9e8313","unresolved":true,"context_lines":[{"line_number":163,"context_line":"----------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"0ca66bbd_8b1da71c","line":166,"range":{"start_line":166,"start_character":24,"end_line":166,"end_character":35},"in_reply_to":"f36f31b6_0e9f87bf","updated":"2022-05-10 14:57:19.000000000","message":"thanks for the context. \n\nDo I understand correctly that for a direct-physical port it is OK to consume a non-netdev PCI device? At least that is what \"vnic-type\u003ddirect-physical shoudl be able to reqest type-pci or type-pf.\" suggests to me. Or that is technically prevented by the fact that neutron ports always impose a physical_network request on the PCI device and we don\u0027t expect that a non-netdev PCI device is whitelisted with a physical_network tag in the config.\n\nI think it shows a data model issue that a direct-physical port is either consume a type-PF or a type-PCI, BUT, in reality what direct-physical is asking for is a netdev. Some type-PCI devices are netdevs but not PFs, other type-PCI devices are not netdevs. And this breaks our mapping between requested resource class and inventory of a resource class.\n\n* What we are sure about is that an RP is one PCI device. (can be netdev, can be an accelerator, can be a PF)\n* We plan not to differentiate between individual VFs under the same parent so we not represent them as child RPs. We just put a VF inventory on the parent PCI device RP (that is in this special case always a PF)\n* We are not sure what RC represents a type-PCI that is actually a netdev and expected to be consumed via a direct-physical port.\n\nTo resolve the last bullet point I think we need to diverge from the current PCI tracking logic.\n\nToday we have type-PF and type-PCI but they are not distinct sets logically. Hence the consumption issue of a direct-physical port. I think a better grouping would be netdev PCI devices and non-netdev PCI devices. Then we would know that a direct-phyical port always needs a netdev PCI and never a non-netdev PCI. \n\nSo my proposal for the future(I ignoring VDPA in this case but I think the proposal can be naturally extended with that):\n\n* each device from the ``device_list`` that is not a VF represented by an individual RP in placement.\nFor each non-VF device from the ``device_list``:\n* either the ``resource_class`` from the ``device_list`` entry defines the RC for the inventory of this device. \n* or there is no ``resource_class`` but there is a ``phsysical_network`` tag  in the ``device_list`` entry. In this case we assume that the device is a netdev. If it is a netdev but not a VF then we start tracking them as PCI_NETDEV\u003d1 resource inventory. (It can be still a PF or non-PF netdev we don\u0027t care, if we need to care in the future we can add a CUSTOM_PCI_PF trait to indicate that it is a special netdev that is a PF).\n* pci alias can request any kind of resource class, it can even request PCI_NETDEV or SRIOV_NET_VF\n* a neutron direct-physical port will always be mapped to request PCI_NETDEV\u003d1 resource from placement.\n* a neutron direct port will request SRIOV_NET_VF\u003d1 resource from placement.\n\n\nWhat do you think?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"74b4cd248b4999545abbb08ced86a39314958328","unresolved":true,"context_lines":[{"line_number":163,"context_line":"----------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5837a826_e047e43a","line":166,"range":{"start_line":166,"start_character":24,"end_line":166,"end_character":35},"in_reply_to":"f879da87_bb7bcc79","updated":"2022-05-11 13:51:57.000000000","message":"cool I will add this to the spec.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"},{"line_number":170,"context_line":"name will be the full PCI address in the same format of ``DDDD:BB:AA.FF``."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"03d7231e_4c55103a","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":39},"updated":"2022-05-10 12:24:26.000000000","message":"+1\nthis might end up being virt dirver specific in the future.\ni think this makes sense fo libvirt.\n\nit may not make sense for other virtdriver like hyperv but i dont think anything\nin the spec depends on this format.\n\nits just convenient for the operator.\n\nit may also be useful for the netron work in the future but i would argure\nif hyperv reported `\u003chypervisor_hostname\u003e_\u003csome other identifyer\u003e`` then the neutron sriov agent equivlaent on widnows woudl be able to know its on windows and use that format.\n\nbut i think ``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e`` is the correct format to use in general.\n\nthe pciadress in DDDD:BB:AA.FF is part of the pcie spec its not os dependent.\nits actully a integer that is assigned to the device in hardware with a defiend format. an os coudl chosse not to expose that hardware detail via its drievers but\nthat does not change the fact that at the hardware/pci protocol level this adress exsits as a seriese of bits that the pci bus uses for routing.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d634e5a4306f0eb0ed8d997952f528993c9e8313","unresolved":true,"context_lines":[{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"},{"line_number":170,"context_line":"name will be the full PCI address in the same format of ``DDDD:BB:AA.FF``."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"c699af3a_76f52704","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":39},"in_reply_to":"03d7231e_4c55103a","updated":"2022-05-10 14:57:19.000000000","message":"correct. We are not using this name for any kind of correlation or logic. It just what we will show in placement.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":165,"context_line":"PCI device modeling in Placement will closely mirror that of vGPUs."},{"line_number":166,"context_line":"Each PCI device of type ``type-PCI`` and ``type-PF`` will be modeled as a"},{"line_number":167,"context_line":"Placement resource provider (RP) with the name"},{"line_number":168,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":169,"context_line":"the same string as the name of the root RP. The pci_address part of the"},{"line_number":170,"context_line":"name will be the full PCI address in the same format of ``DDDD:BB:AA.FF``."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"10be52d3_641efb1d","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":39},"in_reply_to":"c699af3a_76f52704","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":205,"context_line":"  the handling of ``type-PF`` and ``type-VF`` devices cannot be ignored as"},{"line_number":206,"context_line":"  those device types can also be requested via PCI alias by setting the"},{"line_number":207,"context_line":"  ``device_type`` tag accordingly."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":".. note::"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  A PF and its children VFs can be represented with different resource classes"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4560ea75_74881c0b","line":208,"updated":"2022-05-10 12:24:26.000000000","message":"yep so the prime example is that with the required frimware update the latest gen intel QAT devices can not suport sriov so you can parttion the QAT device using VFs\n\namd also use VFs for there vGPU implementation that does not use mdevs\nand  samsung have some datacenter SSD that supprot VF partioning too.\n\nSSDs are out os scope since we only support Stateless device but i include them for compltenes to show that there are a range of non nic device that implemetn the sriov sepecificaiotn and supprot the creation fo VFs.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":205,"context_line":"  the handling of ``type-PF`` and ``type-VF`` devices cannot be ignored as"},{"line_number":206,"context_line":"  those device types can also be requested via PCI alias by setting the"},{"line_number":207,"context_line":"  ``device_type`` tag accordingly."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":".. note::"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  A PF and its children VFs can be represented with different resource classes"}],"source_content_type":"text/x-rst","patch_set":5,"id":"070c60e9_71a95b37","line":208,"in_reply_to":"4560ea75_74881c0b","updated":"2022-05-13 15:34:30.000000000","message":"Ack","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":223,"context_line":"  In the future Nova can be extended to automatically report PCI device"},{"line_number":224,"context_line":"  capabilities as custom traits in placement. However this is out of scope of"},{"line_number":225,"context_line":"  the current spec. If needed the deployer can add these traits via the"},{"line_number":226,"context_line":"  ``[pci]device_list`` configuration manually."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Reporting inventories from libvirt to Placement"}],"source_content_type":"text/x-rst","patch_set":5,"id":"c5ef2ea7_41420274","line":226,"updated":"2022-05-10 12:24:26.000000000","message":"ack\nand as we discussed this is out of scope since we really only have 2 sets of capablities today.\n\n1 the network capablities which are reported for nics only so those are out of scope until we supprot neutron ports\n\n2 the vpd capablity which currenly is only used for remove_managed nics so again not need until we supprot neutron ports.\n\nthe point is that it shoudl be trivial to extend nova to report these traits in the future and this spec allows for that extention as part of its design.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":223,"context_line":"  In the future Nova can be extended to automatically report PCI device"},{"line_number":224,"context_line":"  capabilities as custom traits in placement. However this is out of scope of"},{"line_number":225,"context_line":"  the current spec. If needed the deployer can add these traits via the"},{"line_number":226,"context_line":"  ``[pci]device_list`` configuration manually."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Reporting inventories from libvirt to Placement"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b00b00de_02dcb40f","line":226,"in_reply_to":"c5ef2ea7_41420274","updated":"2022-05-13 15:34:30.000000000","message":"Ack","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":229,"context_line":"Reporting inventories from libvirt to Placement"},{"line_number":230,"context_line":"-----------------------------------------------"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"The resource tracker\u0027s update_available_resource periodic task calls the"},{"line_number":233,"context_line":"update_provider_tree method on the libvirt virt driver. The"},{"line_number":234,"context_line":"implementation of update_provider_tree in the libvirt virt driver will be"},{"line_number":235,"context_line":"extended to create the relevant PF RPs, and report inventories and traits via"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4a371842_93b7ef01","line":232,"range":{"start_line":232,"start_character":23,"end_line":232,"end_character":57},"updated":"2022-05-13 10:49:04.000000000","message":"Can we format these function names as ``code``?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":229,"context_line":"Reporting inventories from libvirt to Placement"},{"line_number":230,"context_line":"-----------------------------------------------"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"The resource tracker\u0027s update_available_resource periodic task calls the"},{"line_number":233,"context_line":"update_provider_tree method on the libvirt virt driver. The"},{"line_number":234,"context_line":"implementation of update_provider_tree in the libvirt virt driver will be"},{"line_number":235,"context_line":"extended to create the relevant PF RPs, and report inventories and traits via"}],"source_content_type":"text/x-rst","patch_set":5,"id":"c27eb011_998fc1ff","line":232,"range":{"start_line":232,"start_character":23,"end_line":232,"end_character":57},"in_reply_to":"4a371842_93b7ef01","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":267,"context_line":"  If both ``resource_class`` and ``vendor_id`` and ``product_id`` fields are"},{"line_number":268,"context_line":"  provided in the alias then Nova will use the ``resource_class`` for the"},{"line_number":269,"context_line":"  Placement query but the ``vendor_id`` and ``product_id`` filtering will"},{"line_number":270,"context_line":"  happen in the ``PciPassthroughFilter``."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":".. _`PCI alias definition`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.alias"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a0c992f9_f17fcdf8","line":270,"updated":"2022-05-10 12:24:26.000000000","message":"ack\n\nso the PciPassthrougFilter is still requried for neuton ports to match on the physnet tag and or remote manged status of the prots and vdpa.\n\nbut evenutally it can go away once we also supprot neutron ports.\n\nalso on a related note teh numa affintiy will continue to be enforce by the numatoplogy filter and not modled in placment at this time.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":267,"context_line":"  If both ``resource_class`` and ``vendor_id`` and ``product_id`` fields are"},{"line_number":268,"context_line":"  provided in the alias then Nova will use the ``resource_class`` for the"},{"line_number":269,"context_line":"  Placement query but the ``vendor_id`` and ``product_id`` filtering will"},{"line_number":270,"context_line":"  happen in the ``PciPassthroughFilter``."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":".. _`PCI alias definition`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.alias"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a83365bd_3d939157","line":270,"in_reply_to":"a0c992f9_f17fcdf8","updated":"2022-05-13 15:34:30.000000000","message":"Ack","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":288,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"The prefilter will be disabled by default to enable rolling"},{"line_number":291,"context_line":"upgrades and will be enabled by automatically based on the minimum compute"},{"line_number":292,"context_line":"service version of the cluster. There will be a new config option"},{"line_number":293,"context_line":"``[scheduler]pci_prefilter`` that can be used to fully disable the prefilter in"},{"line_number":294,"context_line":"deployments where no PCI device tracking is needed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bdad2df8_90b323a0","line":291,"range":{"start_line":291,"start_character":13,"end_line":291,"end_character":74},"updated":"2022-05-13 10:49:04.000000000","message":"Is that usual? As far as I can recall, we normally waited a few cycles and then toggled a thing on, leaving users to toggle it on sooner if they wished. I\u0027m assuming there\u0027s a good reason to deviate from this plan? If so, could you write it here?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":288,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"The prefilter will be disabled by default to enable rolling"},{"line_number":291,"context_line":"upgrades and will be enabled by automatically based on the minimum compute"},{"line_number":292,"context_line":"service version of the cluster. There will be a new config option"},{"line_number":293,"context_line":"``[scheduler]pci_prefilter`` that can be used to fully disable the prefilter in"},{"line_number":294,"context_line":"deployments where no PCI device tracking is needed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"199993cf_a347cef8","line":291,"range":{"start_line":291,"start_character":29,"end_line":291,"end_character":31},"updated":"2022-05-10 12:24:26.000000000","message":"delete","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":288,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"The prefilter will be disabled by default to enable rolling"},{"line_number":291,"context_line":"upgrades and will be enabled by automatically based on the minimum compute"},{"line_number":292,"context_line":"service version of the cluster. There will be a new config option"},{"line_number":293,"context_line":"``[scheduler]pci_prefilter`` that can be used to fully disable the prefilter in"},{"line_number":294,"context_line":"deployments where no PCI device tracking is needed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9bed12f6_a0e34529","line":291,"range":{"start_line":291,"start_character":29,"end_line":291,"end_character":31},"in_reply_to":"199993cf_a347cef8","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":288,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"The prefilter will be disabled by default to enable rolling"},{"line_number":291,"context_line":"upgrades and will be enabled by automatically based on the minimum compute"},{"line_number":292,"context_line":"service version of the cluster. There will be a new config option"},{"line_number":293,"context_line":"``[scheduler]pci_prefilter`` that can be used to fully disable the prefilter in"},{"line_number":294,"context_line":"deployments where no PCI device tracking is needed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"628320a3_f3bc4f38","line":291,"range":{"start_line":291,"start_character":13,"end_line":291,"end_character":74},"in_reply_to":"bdad2df8_90b323a0","updated":"2022-05-13 15:34:30.000000000","message":"OK. I convinced over IRC to make this totally manual.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":291,"context_line":"upgrades and will be enabled by automatically based on the minimum compute"},{"line_number":292,"context_line":"service version of the cluster. There will be a new config option"},{"line_number":293,"context_line":"``[scheduler]pci_prefilter`` that can be used to fully disable the prefilter in"},{"line_number":294,"context_line":"deployments where no PCI device tracking is needed."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":".. note::"},{"line_number":297,"context_line":"  For now the prefilter will only create request groups from PCI requests"}],"source_content_type":"text/x-rst","patch_set":5,"id":"04997d2a_8f6fdd69","line":294,"updated":"2022-05-10 12:24:26.000000000","message":"i guess if we are going to have this option we could alow it to override the behaivor. e.g supprot both true and false with default of None\n\nthat has limited uses but perhaps as part of the rooling upgrade you might add pci passthouhg to the new nodes and not ahve it on the old currently. you might want to opt in before you completed your upgrade in that case.\n\n\nby the way if the cloud has no pci device then the flaovr will not have a pci alias so it will early out without modifying the request so im not really sure this si required. i dont think it will really have much of a perfromance overhead.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":291,"context_line":"upgrades and will be enabled by automatically based on the minimum compute"},{"line_number":292,"context_line":"service version of the cluster. There will be a new config option"},{"line_number":293,"context_line":"``[scheduler]pci_prefilter`` that can be used to fully disable the prefilter in"},{"line_number":294,"context_line":"deployments where no PCI device tracking is needed."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":".. note::"},{"line_number":297,"context_line":"  For now the prefilter will only create request groups from PCI requests"}],"source_content_type":"text/x-rst","patch_set":5,"id":"2d5a1fcf_64af442e","line":294,"in_reply_to":"04997d2a_8f6fdd69","updated":"2022-05-13 15:34:30.000000000","message":"I propose now to go with a full manual enable/disable flag","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4d0b7034_57c3f84b","line":340,"updated":"2022-05-10 12:24:26.000000000","message":"ack so this will be done by the pci passthough filter\n\nin the future i would like to add a non global isolated_group feature to palcment\nso we can implement group_policy\u003disolate but only between set of specific named resouce request groups\n\ne.g. isolated_groups\u003dpci_1,pci_2;gpu_1,gpu2\n\nin this case pci_1 an pci_2 would be isoalted and gpu_1 and gpu_2 woudl be isolated but there woudl be no isoalteion between the pci or gpu groups enforced.\n\n\ni dont that that is exactly the sematic we will want or syntax but evernually it would be nice if nova did not have to do this but for now i think it makes sense to not extend placment and do this nova side.\n+1","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"74b4cd248b4999545abbb08ced86a39314958328","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9e81c3d0_969e0ede","line":340,"in_reply_to":"35a8c378_dce2ae6f","updated":"2022-05-11 13:51:57.000000000","message":"Thanks Sean for the details. Yes, one way to fix this is group level isolation policy in placement.\n\nJust some extra context: nova has some logic around group_policy (as it is a mandatory and not defaulted thing in the placement query if multiple groups are involved) https://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/scheduler/utils.py#L728-L748","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"dcf6321268d6bc496b397b4f52943da6a781d320","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5ae2be85_0358e137","line":340,"in_reply_to":"371218a7_9eb34b2d","updated":"2022-05-11 23:03:33.000000000","message":"Thank you for the awesome diagram. I\u0027m saving it to a google doc for reference 😄\n\nGuh, I had been thinking the VFs were RPs too, like this:\n\n                 ┌──────────────┐\n                 │  compute RP  │\n                 └───┬───┬───┬──┘\n                     │   │   │\n          ┌──────────┘   │   └──────────┐\n          │              │              │\n    ┌─────┴─────┐  ┌─────┴─────┐  ┌─────┴─────┐\n    │  PF_1 RP  │  │  PF_2 RP  │  │  PF_3 RP  │\n    └─┬───────┬─┘  └───────────┘  └───────────┘\n      │       │\n┌─────┴──┐ ┌──┴─────┐\n│  VF_1  │ │  VF_2  │\n└────────┘ └────────┘\n\nand that we could isolate say PF_2 from VF_2 by looking at whether VF_2 was a child of PF_2. Nevermind and sorry about that 😕\n\n\u003e so we woudl either need to combind request form muliple neutron ports into one request_group in the palcment query or we woudl have to use group_policy\u003dnone\n\u003e and if we use none the placment will not guarentee any isolation between groups.\n\nAnd I take it combining multiple neutron ports into one request_group is not a reasonable thing to do?\n\nOf the options I think 2) sounds the most intuitive and seems more a natural extension of the abilities already in placement but that might just be me.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"32edc9f2b9c9ecef8e651f6b366c2b019cc045bc","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"79a746f5_86299fc8","line":340,"in_reply_to":"4d0b7034_57c3f84b","updated":"2022-05-11 03:02:35.000000000","message":"I think I don\u0027t understand this scenario. If the VM requests two separate devices (one is not a child of the other) in a query for allocation candidates, why wouldn\u0027t placement be able to exclude the PF -\u003e VF compute host by knowing that the only available VF is a child of the only available PF?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"565965ea79a093217ced64683ba26b40afee40b8","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"eb4d7ab7_4a2954aa","line":340,"in_reply_to":"5ae2be85_0358e137","updated":"2022-05-12 07:10:59.000000000","message":"@Melanie: we cannot unconditionally combine two ports into on request group. We could only combine them if we know that i) both ports request the same resource class, and same physnet (this is doable by looking at the ports), ii) on the potential compute we can land only has one PF with two VF inventories, instead of two PFs with one VF inventory each. Obviously we cannot decided that before the scheduling. \n\nI think the per request group isolation policy would be generally useful in placement (if we can make it optional in the request). However logic is still needed in nova (or neutron) to decide which ports need to be isolated. I.e. two direct ports should not be isolated, but a direct-phyiscal needs to be isolated from each direct port in the same request.\n\nStill I vote to do #2) as part of the followup work where we start supporting neutron port based InstancePCIRequest in Placement PCI tracking. And use the current effort to gather experience about the whole context by implementing this spec. Still this problem is valid and need a workaround in the current scope. And I think that the WA can be a small addition to the current PciPassthroughFilter to drop the allocation candidates where a PF and VF allocation is targeting the same RP.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60c12f59c6c7ce33e591195488d01382e6410d32","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"35a8c378_dce2ae6f","line":340,"in_reply_to":"79a746f5_86299fc8","updated":"2022-05-11 11:14:13.000000000","message":"today the semantics of named request groups are as follows\n\nif you set no policy on isolation is giveen be tween named request groups so multiple groups can be satifed form the same RP.\n\nif you set group_policy\u003disolate only one named request group can be mapped to any one RP.\n\nso the porbem with usin isolate is that if you ask for 2 VF on the same physnet and there is only one phsyical nic and one RP as a result then that request will fail even though there are enough resocues.\n\non the flip side if you ask for a PF and VF we need to ensure they do not come form the same provider so group_policy\u003dnone (the default) will not provide any filtering.\n\nsince we dont want  to teach placment about VF and PF resouce classes being sepcial in the placement code it currently has not way to enforce that we cant claim the VF and PF form the same RP.\n\nso to have palcment do that for us in a generic way we need to be abel to specify a list of isolated groups so that placment can do the isolation at the granularity we need or we need a way to say that the two inventories are mutally exclisive in placment data model which might be a better approch in this case but again requires a placment change to model properly.\n\ndoes that make sense?\n\nam i missing somthing obvious that would allow us to model this?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"6bfceaab_75faf674","line":340,"in_reply_to":"8b69aef0_750b604d","updated":"2022-05-13 15:34:30.000000000","message":"OK I got convinced to drop the dependent device handling in the new placementy PCI tracing. So we keep it working in the legacy Filter + pci claim + pci tracker case. But when the operator enables the [pci]report_in_placement config to start using this new feature we will start rejecting device_list configs that are enabling both the PF and its children VFs.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8b69aef0_750b604d","line":340,"in_reply_to":"90bb31b4_2a0619eb","updated":"2022-05-13 10:49:04.000000000","message":"For what it\u0027s worth, I\u0027m still in favour of (1). As fun[*] as it may be to figure this out, I don\u0027t think it\u0027s worth doing. IMO this is needless complexity in an already poorly understood piece of the code base. IIRC, it was mainly Mellanox that pushed for this feature back then and their primary motivation was that their PFs and VFs shared a common PCI device ID and they needed some way to distinguish between the two. However, while I understand why someone would want the ability to choose between passing the PF or the VF through to the guest, I don\u0027t understand why that decision has to be left until scheduling time rather than being made at initial deployment (via nova.conf configuration). Who is really relying on this functionality?\n\nAlso, because I saw it mentioned on IRC, removing support for Schrödinger\u0027s CPUs (i.e. CPUs that may be both pinned and unpinned at the same time) caused minimal pushback and ultimately resulted in a much simpler system that was far easier to model. From a Red Hat perspective, this is already in the wild (with OSP 16.x) and I\u0027ve seen...one bug related to it (which we were comfortable pushing back on). This is a good case study and argument in favour of continuing down the complexity reduction road if you ask me.\n\n[*] for masochists","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"946715d6e4b672c0926a59589413d64d46898828","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ab9d79a1_8440841a","line":340,"in_reply_to":"9e81c3d0_969e0ede","updated":"2022-05-11 17:38:56.000000000","message":"\u003e if you set group_policy\u003disolate only one named request group can be mapped to any one RP.\n\u003e \n\u003e so the porbem with usin isolate is that if you ask for 2 VF on the same physnet and there is only one phsyical nic and one RP as a result then that request will fail even though there are enough resocues.\n\nOK, so the limitation in placement is that only root RP isolation is implemented and there is currently no concept of isolation between sibling RPs? My understanding is that PFs will be root RPs and VFs will be child RPs. If that is not correct then I probably need a diagram 😂 \n\n\u003e on the flip side if you ask for a PF and VF we need to ensure they do not come form the same provider so group_policy\u003dnone (the default) will not provide any filtering.\n\nAnd this case is where we need to exclude RPs that have a parent-child relationship ... ?\n\n\u003e since we dont want  to teach placment about VF and PF resouce classes being sepcial in the placement code it currently has not way to enforce that we cant claim the VF and PF form the same RP.\n\nDoes it ever make sense in general to claim a parent RP and a child RP with direct ancestry (when one is an ancestor of the other, not sure if there\u0027s a better term for this) when two request groups are specified? Or do you think that is something we could change placement to always exclude?\n\n\u003e so to have palcment do that for us in a generic way we need to be abel to specify a list of isolated groups so that placment can do the isolation at the granularity we need or we need a way to say that the two inventories are mutally exclisive in placment data model which might be a better approch in this case but again requires a placment change to model properly.\n\nI\u0027m wondering if we could change the way placement calculates isolation to do something like check whether, in the case of two request groups, whether one of the matching resources is a descendent or ancestor of the other and exclude them if so?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cb84830cccd9aff190b5a5b48c3cdfede0be692b","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"371218a7_9eb34b2d","line":340,"in_reply_to":"ab9d79a1_8440841a","updated":"2022-05-11 20:08:20.000000000","message":"https://paste.opendev.org/show/btZLEVa44TutlmzBIwax/\n  \ntanks to asciiflow this is not that hard to create 😊\nunfortunetly its wider then the comment box so it gets wrapped\n\n\nso each descrit device of device_type \"type-PCI\" or \"type-PF\" will be a child\nrp of the compute node RP.\n\n\nif the device is type-pci or a pf that has no VFs then it will look like the box on the right \n\n              \n  ┌─────────────────────────┴─┐\n  │ compute-1_0000:06:0.0     │\n  ├───────────────────────────┤\n  │                           │\n  │  PCI_NETDEV:    1         │\n  │                           │\n  ├───────────────────────────┤\n  │                           │\n  │  CUSTOM_PHYSNET_PRIVATE   │\n  │  OWNER_NOVA               │\n  └───────────────────────────┘\n\n\nit will have an inventory of RC PCI_NETDEV with quantity 1\nif its a PF it woudl also have the  HW_NET_SRIOV triat to track that\nits capable of SRIOV but no invetory fo SRIOV_NET_VF unless VF are both\nallcoated on the host and more impoatnly allowed by the device_list.\n\n\n\n\nA PF with VF alocated and whitelisted would look like this\n\n\n\n  ┌────────────────────────┬\n  │ compute-1_0000:04:0.0  │\n  ├────────────────────────┤\n  │                        │\n  │  PCI_NETDEV:    1      │\n  │  SRIOV_NET_VF:  8      │\n  ├────────────────────────┤\n  │  HW_NET_SRIOV          │\n  │  CUSTOM_PHYSNET_PUBLIC │\n  │  OWNER_NOVA            │\n  └────────────────────────┘\n\n\nin this case the device can either be consumed as a PF or the 8 VF can be consumed\nboth not both.\n\nif a VF is consumed the PF becomes unclaimable and the reserved value of the PCI_NETDEV inventoy would be set to 1. alternitive this invetnory could be deleted form the RP.\n\nsimilarly if the PF was allcoate to an instance the reserved value of the \nSRIOV_NET_VF woudl be set to 8.\n\n\nif a PF was not allowed by the device list but the VF were you can proably guess it would look like this\n\n\n ┌────────────────────────┐\n │ compute-1_0000:07:0.0  │\n ├────────────────────────┤\n │                        │\n │                        │\n │  SRIOV_NET_VF:  8      │\n ├────────────────────────┤\n │  HW_NET_SRIOV          │\n │  CUSTOM_PHYSNET_PRIVATE│\n │  OWNER_NOVA            │\n └────────────────────────┘\n\nwe woudl have an inventory of VFs the RP name would sitll be in the format\n\u003chostname\u003e_\u003cpciadress\u003e but the adress would the adress of the VF parent device\ni.e. the PF\n\nwe do not report a PCI_NETDEV inventory for the pf because it not allcoateable by nova.\n\nthe middel case of a generic pci device is not really any differnt\n ┌────────────────┴───────┐\n │ compute-1_0000:05:0.0  │\n ├────────────────────────┤\n │                        │\n │ CUSTOM_PCI_8086_1520: 1│\n │                        │\n ├────────────────────────┤\n │                        │\n │                        │\n │ OWNER_NOVA             │\n └────────────────────────┘\n\nit just uses a CUSTOM_ resocue class name.\n\neither the autogenerated name in the format CUSTOM_PCI_\u003cVENDOR_ID\u003e_\u003cPRODUCT_ID\u003e\nor one passed in the device list.\n\n\nso the problem we have is for \n\n  ┌────────────────────────┬\n  │ compute-1_0000:04:0.0  │\n  ├────────────────────────┤\n  │                        │\n  │  PCI_NETDEV:    1      │\n  │  SRIOV_NET_VF:  8      │\n  ├────────────────────────┤\n  │  HW_NET_SRIOV          │\n  │  CUSTOM_PHYSNET_PUBLIC │\n  │  OWNER_NOVA            │\n  └────────────────────────┘\n\nif i ask for /allcoation_candiates?resouces1:PCI_NETDEV\u003d1\u0026resouces2:SRIOV_NET_VF\u003d1 \nthen  the compute-1_0000:04:0.0 RP can technially provide both \nto prevent that you woudl need to pass group_polcy\u003disolate.\n\nthat would allow this RP to provide resouce to only one named group.\n\nbut if we just add group_polcy\u003disolate it wont work if i instead asked ro 2 allcoations of SRIOV_NET_VF on the public phsynet\n\n\ncompute-1_0000:04:0.0 is the only RP on the public physnet\nand it has 8 VF but each neturon port is in its own request group.\n\n\nso we woudl either need to combind request form muliple neutron ports into one request_group in the palcment query or we woudl have to use group_policy\u003dnone\n\nand if we use none the placment will not guarentee any isolation between groups.\n\n\n\nso i think there are a three ways to solve this.\n\n1.) we take stephens suggestion and dont allwo you to whitelist a device which is both a PF and VFs. that is a breaking change but means we can model it in placment today.\n2.) we add the ablity to have isolation between specific named groups. so rather than nomore then one named group can have resouces form any singel RP it becomes this set of named groups cannot overlap.\n3.) we add a way to model mutally exclisive inventories in an RP.\nwhere multally exclisive inventors can have allcoation provided form at most one of the set of inventores and placment would automaticaly reserve the other invetores when an allcoation is made againg any of them.\n\n2 and 3 require placment work but might be reusabel for other problems.\n1 is enterily in nova but has upgrade implciations but would result in simpler\npci passthough althoug we would loose the ablity to defer deciding if the PF or VF will be consumed to when we boot a vm.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3370f3e3872033715c8372c87c0110b365c4ecd4","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"90bb31b4_2a0619eb","line":340,"in_reply_to":"d2fadfd1_46490952","updated":"2022-05-12 11:59:29.000000000","message":"OK, we can delay deciding between 2 and 3 until we write a placement spec maybe in AA :)","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"30c863de5e161b634672e507d4b0e02fc17e968d","unresolved":true,"context_lines":[{"line_number":337,"context_line":"  compute host that has only one PF and a child VF available. **But** from"},{"line_number":338,"context_line":"  Placement perspective, PF and VF resources can be independently consumed. So"},{"line_number":339,"context_line":"  Placement will return an allocation candidate for such compute host."},{"line_number":340,"context_line":"  Therefore Nova is responsible to eliminate such candidates."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":".. note::"},{"line_number":343,"context_line":"  This will be the first time that the nova-scheduler will manipulate resource"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d2fadfd1_46490952","line":340,"in_reply_to":"eb4d7ab7_4a2954aa","updated":"2022-05-12 10:03:12.000000000","message":"yes that will require pass the allocation candiates to the filter by adding them to the hoststate object as noted belvoe for the numa toplogy filter so that should be pretty simple to do. for this spec i think this is fine. its no worse tehn we have today and placement shoudl significantly window down the set of host the filter has to consider and infact this coudl even allow you to use smaller result set potentially which woudl be nice for larger clouds.\n\n2 and 3 are really the same the real delta is where the code that compute the group isolation live.\n\nin 2 its client side i.e. in nova. in 3 its server side and we just annotate the inventories as being mutually exclisive some how so placemnt can generate the isolated groups internally.\n\n2 is defintly more in line with how placmenet works today. 3 is more work up front but its kind of set and forget. it would always maintian the exclusive state and make any allocation against one inveotry atomicly resever the capastiyt of the others so its harder to break the invairent.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"32edc9f2b9c9ecef8e651f6b366c2b019cc045bc","unresolved":true,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9d44bee1_1d31461a","line":349,"updated":"2022-05-11 03:02:35.000000000","message":"This ... :(","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"6bfcec13_8e9c01a8","line":349,"in_reply_to":"068ddf58_20bf534a","updated":"2022-05-13 15:34:30.000000000","message":"This was a good mental exercise but I was convinced not to pursue it.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"30c863de5e161b634672e507d4b0e02fc17e968d","unresolved":true,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"599559f9_cca9ea4e","line":349,"in_reply_to":"2828c06e_a225176e","updated":"2022-05-12 10:03:12.000000000","message":"well if we have the pci claim in the tracker done in the schduler/conductor before the down call to compute after the sucsessfull allocation in placment the compute could then update the inventory as part of the pci claim or asyn in the next periodic.\n\ntechnially there is a short window where a race could happen from a placment perspective but the pci tracker will never allow an instnace to claim a pci dev in that case.\n\nso we could get much of the benifit by just doing the pci claim in the pci tracker imidealy after the schduler returns to the conductor or in the schduler after it commits thet placemtn allcoation.\n\nif the pci cliam fails we just relase the allocation and go to the next alternate host.\n\nThat would keep all inventory manamgement on the compute which i kind of like even if ti does intoduce an addtion rpc call to the compute.\n\nthe code for this in the sriov live migration workflow is in check_can_live_migrate_destination to avoid an extra rpc\nhttps://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/compute/manager.py#L8141\u003d\n\nbut the actull funtion that does the claim is\n _claim_pci_for_instance_vifs\nhttps://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/compute/manager.py#L10855\u003d\n\nthat could be added to the compute rpc api or we could could add a new\nresouce_tracker_claim_for_instance function to the comptue rpc api.\n\nresouce_tracker_claim_for_instance minimally could call _claim_pci_for_instance_vifs but i would actully have it the instnace_claim and store it in an inmemeory dict. the instnace claim is currenlty created here in _build_and_run_instance\nhttps://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/compute/manager.py#L2461-L2462\u003d\n\n\nthat will ensure the instnace pci devices and numa toplogy are full calulated and populated before we downcall to boot.\n\nhttps://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/compute/claims.py#L130-L158\u003d\n\nthat wont nessisarly reduce the delay significantly but we really should be doing the instnace_claim as close to allocating the allcoation candiate in placment as possibele.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"565965ea79a093217ced64683ba26b40afee40b8","unresolved":true,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"2828c06e_a225176e","line":349,"in_reply_to":"32531ccf_18dff83b","updated":"2022-05-12 07:10:59.000000000","message":"Yes currently nova-compute manages inventories alone while allocations are managed by multiple services: nova-scheduler (after a successful scheduling) nova-conductor (moving source host alloc to migration uuid before a move operation) nova-compute (VM delete).\nIf we want to keep the nova-compute the only service manages inventories then we can allocate dependent devices in scheduler instead of reserving them.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"50bbd70412b0ed46d19c4ad7d17276b21adcc0de","unresolved":true,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"88002e94_81894e8b","line":349,"in_reply_to":"4e736604_52d6bb2a","updated":"2022-05-11 14:37:53.000000000","message":"I don\u0027t think we should allow admins to set the reserve value or allocation ratio for that mather on these inventories\n\nwe only report the device they have set in the device list.\nso if they don\u0027t want them to be used they should ideally not list them.\n\nwe could support this in the future as you said but if we can avoid allowing operators to mutate them I would prefer that unless there is\na strong reason/use-case that can be addressed via the device list.\n\nwith that said the non-atomicity of the reservation update is what I assumed made Melaine sad and the complexity.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3370f3e3872033715c8372c87c0110b365c4ecd4","unresolved":true,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ca2183bd_71cdb7c8","line":349,"in_reply_to":"599559f9_cca9ea4e","updated":"2022-05-12 11:59:29.000000000","message":"\u003e well if we have the pci claim in the tracker done in the schduler/conductor before the down call to compute after the sucsessfull allocation in placment the compute could then update the inventory as part of the pci claim or asyn in the next periodic.\n\u003e \n\u003e technially there is a short window where a race could happen from a placment perspective but the pci tracker will never allow an instnace to claim a pci dev in that case.\n\u003e \n\u003e so we could get much of the benifit by just doing the pci claim in the pci tracker imidealy after the schduler returns to the conductor or in the schduler after it commits thet placemtn allcoation.\n\u003e \n\u003e if the pci cliam fails we just relase the allocation and go to the next alternate host.\n\u003e \n\u003e That would keep all inventory manamgement on the compute which i kind of like even if ti does intoduce an addtion rpc call to the compute.\n\u003e \n\n+1 on the benefit of having the inventory only managed by the compute\n-1 on the new RPC. How is this new RPC faster than the existing build_and_run_instance RPC call that also does the instance claim as the first step? The main delay between the placement allocation and the instance claim is the RPC call. So adding a new RPC call will not remove the delay it just moves it from the build_and_run_instance RPC to the resouce_tracker_claim_for_instance RPC. The only real improvement would be to do the placement allocation and the instance claim in the same nova service. If we want that then that is a separate pre requisite spec in my eyes.\n\n\u003e the code for this in the sriov live migration workflow is in check_can_live_migrate_destination to avoid an extra rpc\n\u003e https://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/compute/manager.py#L8141\u003d\n\u003e \n\u003e but the actull funtion that does the claim is\n\u003e  _claim_pci_for_instance_vifs\n\u003e https://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/compute/manager.py#L10855\u003d\n\u003e \n\u003e that could be added to the compute rpc api or we could could add a new\n\u003e resouce_tracker_claim_for_instance function to the comptue rpc api.\n\u003e \n\u003e resouce_tracker_claim_for_instance minimally could call _claim_pci_for_instance_vifs but i would actully have it the instnace_claim and store it in an inmemeory dict. the instnace claim is currenlty created here in _build_and_run_instance\n\u003e https://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/compute/manager.py#L2461-L2462\u003d\n\u003e \n\u003e \n\u003e that will ensure the instnace pci devices and numa toplogy are full calulated and populated before we downcall to boot.\n\u003e \n\u003e https://github.com/openstack/nova/blob/972c06c608f0b00e9066d7f581fd81197065cf49/nova/compute/claims.py#L130-L158\u003d\n\u003e \n\u003e that wont nessisarly reduce the delay significantly but we really should be doing the instnace_claim as close to allocating the allcoation candiate in placment as possibele.\n\nThe current proposal does not make it closer it is replacing one RPC call with another RPC call.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"946715d6e4b672c0926a59589413d64d46898828","unresolved":true,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"32531ccf_18dff83b","line":349,"in_reply_to":"88002e94_81894e8b","updated":"2022-05-11 17:38:56.000000000","message":"Yeah I was :( to the nova-scheduler and nova-compute both writing inventory updates at the same time, just seems like quite a lot more complicated than the current design/architecture/interaction. Currently only nova-compute writes inventory updates?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"74b4cd248b4999545abbb08ced86a39314958328","unresolved":true,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"4e736604_52d6bb2a","line":349,"in_reply_to":"9d44bee1_1d31461a","updated":"2022-05-11 13:51:57.000000000","message":"Yep this is a limitation. Basically the admin cannot reserve these resource via placement manually or via nova-compute with some new config option. The workaround is that the deployer should not list the device in the ``[pci]device_list`` that are reserved.\n\nIf this become cumbersome for some reason then we can start thinking about not reserving the dependent device but instead allocating it to some system consumer (i.e. to the compute node uuid) so that would make it consumed from placement perspective but still allow the reserved value to be used by the admin","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":346,"context_line":"  overwriting a parallel inventory update coming from a nova-compute service."},{"line_number":347,"context_line":"  Also, nova-compute needs to be aware that the scheduler might change the"},{"line_number":348,"context_line":"  reserved value of a resource inventory and the compute should not overwrite"},{"line_number":349,"context_line":"  such change."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"**Questions:**"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"068ddf58_20bf534a","line":349,"in_reply_to":"ca2183bd_71cdb7c8","updated":"2022-05-13 10:49:04.000000000","message":"🤮😅","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":359,"context_line":"PCI NUMA affinity"},{"line_number":360,"context_line":"-----------------"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"The PCI NUMA affinity code (mostly in hardware.py) will need to be modified to"},{"line_number":363,"context_line":"limit the PCI devices considered to just those included in the allocation"},{"line_number":364,"context_line":"candidate summary. Also at the same time, this code should provide information"},{"line_number":365,"context_line":"to the scheduler about which allocation candidate is valid from affinity"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4bd3f8ab_a3bfff2d","line":362,"range":{"start_line":362,"start_character":38,"end_line":362,"end_character":49},"updated":"2022-05-13 10:49:04.000000000","message":"nit: ``code`` (below also)","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":359,"context_line":"PCI NUMA affinity"},{"line_number":360,"context_line":"-----------------"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"The PCI NUMA affinity code (mostly in hardware.py) will need to be modified to"},{"line_number":363,"context_line":"limit the PCI devices considered to just those included in the allocation"},{"line_number":364,"context_line":"candidate summary. Also at the same time, this code should provide information"},{"line_number":365,"context_line":"to the scheduler about which allocation candidate is valid from affinity"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9e7d02ad_9a4e2ced","line":362,"range":{"start_line":362,"start_character":38,"end_line":362,"end_character":49},"in_reply_to":"4bd3f8ab_a3bfff2d","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":414,"context_line":"This is out of scope in the current spec. But certain aspects of the problem"},{"line_number":415,"context_line":"are already known and therefore listed here."},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"Neutron direct and direct-physical ports are needs to be backed by VF or PF PCI"},{"line_number":418,"context_line":"devices."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"In the simpler case when a port only requires a PCI device but does"}],"source_content_type":"text/x-rst","patch_set":5,"id":"13e7d18a_d5a9d37a","line":417,"range":{"start_line":417,"start_character":8,"end_line":417,"end_character":14},"updated":"2022-05-13 10:49:04.000000000","message":"nit: ``code`` ?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":414,"context_line":"This is out of scope in the current spec. But certain aspects of the problem"},{"line_number":415,"context_line":"are already known and therefore listed here."},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"Neutron direct and direct-physical ports are needs to be backed by VF or PF PCI"},{"line_number":418,"context_line":"devices."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"In the simpler case when a port only requires a PCI device but does"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8aa08f52_f4bf8670","line":417,"range":{"start_line":417,"start_character":8,"end_line":417,"end_character":14},"in_reply_to":"13e7d18a_d5a9d37a","updated":"2022-05-13 15:34:30.000000000","message":"Done","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":473,"context_line":"  port via the port ``resource_request`` field"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"* Nova can include these resources to the request when the"},{"line_number":476,"context_line":"  ``InstancePCIRequest`` objects are created based on the requested ports."},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"Alternatives"},{"line_number":479,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8378d50d_ce89f214","line":476,"updated":"2022-05-10 12:24:26.000000000","message":"see comment on line 166 for the extra complexitiy but i belive there is apath forward but there are more details we need to consider when we actully do this.\n\nthe current spec shoudl allow use to evolve to support neutorn port howerver which is the impoarnt part.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":473,"context_line":"  port via the port ``resource_request`` field"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"* Nova can include these resources to the request when the"},{"line_number":476,"context_line":"  ``InstancePCIRequest`` objects are created based on the requested ports."},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"Alternatives"},{"line_number":479,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"773cc788_b84bb2f1","line":476,"in_reply_to":"8378d50d_ce89f214","updated":"2022-05-13 15:34:30.000000000","message":"Ack","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83a5ed8defd498601635513871fefe24c6c8ede1","unresolved":true,"context_lines":[{"line_number":478,"context_line":"Alternatives"},{"line_number":479,"context_line":"------------"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"* We could not track PCI devices in Placement."},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"* We could track each PCI device record as a separate RP."},{"line_number":484,"context_line":"  This would result in each VF having its own RP allowing each VF to have"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bc9fa3bf_83a81ec5","line":481,"updated":"2022-05-13 10:49:04.000000000","message":"nit: This isn\u0027t really an alternative. If it was, every spec could have a \"don\u0027t do the thing we described in this spec\" \"alternative\" 😉","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":478,"context_line":"Alternatives"},{"line_number":479,"context_line":"------------"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"* We could not track PCI devices in Placement."},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"* We could track each PCI device record as a separate RP."},{"line_number":484,"context_line":"  This would result in each VF having its own RP allowing each VF to have"}],"source_content_type":"text/x-rst","patch_set":5,"id":"82582b73_9cd5c90c","line":481,"in_reply_to":"4cad63de_7dddf85a","updated":"2022-05-13 15:34:30.000000000","message":"I made it nicer :)","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87b1e0997d7535cfad23a55282c943f7cea34a29","unresolved":true,"context_lines":[{"line_number":478,"context_line":"Alternatives"},{"line_number":479,"context_line":"------------"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"* We could not track PCI devices in Placement."},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"* We could track each PCI device record as a separate RP."},{"line_number":484,"context_line":"  This would result in each VF having its own RP allowing each VF to have"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4cad63de_7dddf85a","line":481,"in_reply_to":"bc9fa3bf_83a81ec5","updated":"2022-05-13 11:06:45.000000000","message":"they often do :) but its a fair comment we can drop this if we like","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"74b4cd248b4999545abbb08ced86a39314958328","unresolved":true,"context_lines":[{"line_number":544,"context_line":"Other deployer impact"},{"line_number":545,"context_line":"---------------------"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"To utilize the new feature the operator will have to define two new config"},{"line_number":548,"context_line":"options. One to enable the placement prefilter and a second to enable the"},{"line_number":549,"context_line":"reporting of the PCI devices to Placement."},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"Developer impact"},{"line_number":552,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"337e1ba2_0cdc1f36","line":549,"range":{"start_line":547,"start_character":0,"end_line":549,"end_character":42},"updated":"2022-05-11 13:51:57.000000000","message":"I need to update this","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":544,"context_line":"Other deployer impact"},{"line_number":545,"context_line":"---------------------"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"To utilize the new feature the operator will have to define two new config"},{"line_number":548,"context_line":"options. One to enable the placement prefilter and a second to enable the"},{"line_number":549,"context_line":"reporting of the PCI devices to Placement."},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"Developer impact"},{"line_number":552,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"a0bf934e_03962d04","line":549,"range":{"start_line":547,"start_character":0,"end_line":549,"end_character":42},"in_reply_to":"337e1ba2_0cdc1f36","updated":"2022-05-13 15:34:30.000000000","message":"Actually we went back to this :)","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"32edc9f2b9c9ecef8e651f6b366c2b019cc045bc","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"93f549ef_a84bb0ea","line":581,"updated":"2022-05-11 03:02:35.000000000","message":"These upgrade steps make it sound like nova is automatically controlling the two new config options values (enable prefilter, report to placement). I thought these two options default to false (Scheduling section). Is this saying nova will enable them at the appropriate times? I am wary about auto controlling config option values.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"30c863de5e161b634672e507d4b0e02fc17e968d","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7afddf40_c83b272e","line":581,"in_reply_to":"0c87d738_4c7828c2","updated":"2022-05-12 10:03:12.000000000","message":"Not entirely\n\nit depend on the type of the config option\n\nif its a stropt ``pci_prefilter\u003dNone`` will be the string \"None\" not the python object None\n\nfor a boolOpt i belive you are correct that it handels that conversion correctly.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63e5c96c0bb4f35557231b9176848877142f3b74","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a324a0e_6c7106c2","line":581,"in_reply_to":"1a495ca7_13072a08","updated":"2022-05-11 20:10:17.000000000","message":"i think gibi ment Python None object as the default\n\nso the same as \n[scheduler]\npci_prefilter\u003d\n\nor \n\n[scheduler]\n# pci_prefilter\u003d not set at all.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"dcf6321268d6bc496b397b4f52943da6a781d320","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"76b7f65d_ee014231","line":581,"in_reply_to":"3a324a0e_6c7106c2","updated":"2022-05-11 23:03:33.000000000","message":"Oh OK, so pci_prefilter\u003d is like \"don\u0027t care\" how the prefilter is managed and so it will be automatic. I guess it will all be explained in the config help anyway so it will be clear there what the default \"don\u0027t care\" will do.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"565965ea79a093217ced64683ba26b40afee40b8","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"0c87d738_4c7828c2","line":581,"in_reply_to":"76b7f65d_ee014231","updated":"2022-05-12 07:10:59.000000000","message":"Sure this needs a bunch of comment in the config doc. Still ``pci_prefilter\u003d`` and ``pci_prefilter\u003dNone`` means the same for oslo_config","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3370f3e3872033715c8372c87c0110b365c4ecd4","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"e67e8f06_e456252d","line":581,"in_reply_to":"7afddf40_c83b272e","updated":"2022-05-12 11:59:29.000000000","message":"yeah, I thought about a bool opt, but you are right in case of stropt it is different","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60c12f59c6c7ce33e591195488d01382e6410d32","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ea8293c6_a298d8bb","line":581,"in_reply_to":"93f549ef_a84bb0ea","updated":"2022-05-11 11:14:13.000000000","message":"we started without config options then i suggested makign it atomatic.\nnow we have both :) \n\nso the reporting to placemtn would be unconditional\nif the libvirt driver i new enough it would report the device to placemt\nas the spec is currently written. we could also decide to tie the reporting\nto placment to the use of the new device_list paramater.\n\ni was suggesting the scudling would automaticaly enable if the min compute service version was reached.\n\ngibi points out below that for hyperv we likely need to opt out via config so may we just go back to only haveing a config option and remove the automtic enabling fo the prefilter.\n\nat some point we would want the other virt driver to supprot this too but i dont think we have a way to test them so i dotn think we can just implemtn it even though tey all share the saem pci tracker so that code is common.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"946715d6e4b672c0926a59589413d64d46898828","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a495ca7_13072a08","line":581,"in_reply_to":"a56b0c65_16618286","updated":"2022-05-11 17:38:56.000000000","message":"This might be considered a nit but to me pci_prefilter\u003dNone sounds to me like it means no prefilter at all and may invite confusion. What about a StrOpt with choices\u003d(\u0027auto\u0027, \u0027enabled\u0027, \u0027disabled\u0027) or something similar?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"50bbd70412b0ed46d19c4ad7d17276b21adcc0de","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"a56b0c65_16618286","line":581,"in_reply_to":"ab2446dd_276751f1","updated":"2022-05-11 14:37:53.000000000","message":"im ok with that","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"716f0e26_3bdccb02","line":581,"in_reply_to":"e67e8f06_e456252d","updated":"2022-05-13 15:34:30.000000000","message":"We went back to the simple boolean. The automatic behavior is removed.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"74b4cd248b4999545abbb08ced86a39314958328","unresolved":true,"context_lines":[{"line_number":578,"context_line":"  PCI prefilter to start including PCI request to the Placement query during"},{"line_number":579,"context_line":"  scheduling and therefore the scheduler will automatically start allocating"},{"line_number":580,"context_line":"  PCI device in Placement when a compute is selected."},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ab2446dd_276751f1","line":581,"in_reply_to":"ea8293c6_a298d8bb","updated":"2022-05-11 13:51:57.000000000","message":"Yeah, I need to clean this up as now it is not consistent through the spec.\n\nSo I think the tri state ``[scheduler]pci_prefilter`` (True,False,None) has the following use case:\n1) None (the default): Use the prefilter if the min compute service version is high enough. This is to support the rolling upgrade of an deployment already using PCI passthrough\n2) True: Use the prefilter without a compute service version check. This is to support the rolling upgrade case when PCI passthrough is only added to the new computes and the deployer does not want to wait for the rolling upgrade to finish before the prefilter start acting towards the new computes. (I think this is a fairly rare case so we might be able to ignore it)\n3) False: Never enable the prefilter. This is to support deployments with hyperv and PCI passthrough as the hyperv virt driver will not have PCI tracking in Placemenet support right now.\n\nIf we say we want to ignore #2). Then we can fall back to a single boolean where True means enable if the min service version is high enough.\n\nWhat do you think?","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d4a77bda1e218668fb8f037153169ca6b83a7bf","unresolved":true,"context_lines":[{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"Implementation"},{"line_number":587,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"e06cc393_bbcf0b1a","line":584,"updated":"2022-05-10 12:24:26.000000000","message":"does that mean we shoudl only auto enable the fielter if all hypervisros are of type qemu\n(libvirt reports by virt_type qemu and kvm as hypervior type QEMU)\n\ni think hyperv technicaly supprot pci passthough and perhaps vmware. it woudl be ncie if they supproted that.\n\ni dont think ironic makes sesnse as an example.\n\nyou would not have a pci alise defined for ironic.\n\nironic flavor need to set resources:VCPU\u003d0 resources:MEMORY_MB\u003d0 resources:DISK\u003d0\nand then request resouces:CUSTOM_BAREMETAL_RC\u003d1\n\nthey would not have a pci alias defiend so they would be unaffected by the prefileter.\n\nso this is only an issue for driver that support pci_alises but dont support reproting pci device to placment.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60c12f59c6c7ce33e591195488d01382e6410d32","unresolved":true,"context_lines":[{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"Implementation"},{"line_number":587,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"81ed4558_ae48c9a2","line":584,"in_reply_to":"5b00e8ba_194ef650","updated":"2022-05-11 11:14:13.000000000","message":"yep","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3613160161358c8c987eeb6abfe5495586b10cae","unresolved":false,"context_lines":[{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"Implementation"},{"line_number":587,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fb57ca3b_8f0e43ea","line":584,"in_reply_to":"81ed4558_ae48c9a2","updated":"2022-05-13 15:34:30.000000000","message":"Ack","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d634e5a4306f0eb0ed8d997952f528993c9e8313","unresolved":true,"context_lines":[{"line_number":581,"context_line":""},{"line_number":582,"context_line":"The prefilter will always be configurable as not all virt drivers will support"},{"line_number":583,"context_line":"PCI passthrough. I.e.: Ironic will never support this and only libvirt will be"},{"line_number":584,"context_line":"supported initially."},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"Implementation"},{"line_number":587,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5b00e8ba_194ef650","line":584,"in_reply_to":"e06cc393_bbcf0b1a","updated":"2022-05-10 14:57:19.000000000","message":"So in case of hyperv that supports pci passthrough but does not support PCI device tracking in placement, the prefilter needs to be disable otherwise the placement query will return no candidates for a flavor with pci alias.\nIn case of ironic disabling the prefilter is not mandatory but it can spare some cpu cycles maybe.","commit_id":"c013fdecd3bf3e79e42fc6c3e0031fcbe6d4c8cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"},{"line_number":110,"context_line":"changed to ``True``."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"PCI device_list configuration"},{"line_number":113,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dacd5219_4cdbc66a","line":110,"updated":"2022-05-17 12:24:42.000000000","message":"ack i assume we will jsut check if the inventories are in placment or not to prevent this.\n\nwe dont need to document that in the spec as its an implementaion detail but just confirming we are not touch a file or anything to record this.\n-------later------\nthis is covered in the spec","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"},{"line_number":110,"context_line":"changed to ``True``."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"PCI device_list configuration"},{"line_number":113,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"d7cc2e58_55239747","line":110,"in_reply_to":"dacd5219_4cdbc66a","updated":"2022-05-19 13:27:48.000000000","message":"Ack","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3c4b63be1306ada9b5cb70ece0588919de5b130","unresolved":false,"context_lines":[{"line_number":144,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"},{"line_number":145,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":146,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":147,"context_line":"reported in Placement at this time as Neutron bases SR-IOV is out of the"},{"line_number":148,"context_line":"scope of the current spec."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Where a PCI device does not have a ``physical_network`` or a ``resource_class``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"07dbc751_60245ae8","line":147,"range":{"start_line":147,"start_character":46,"end_line":147,"end_character":51},"updated":"2022-05-16 11:13:18.000000000","message":"nit: based","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"41bbf258b2395a1044125b0cd16f744332b5c522","unresolved":false,"context_lines":[{"line_number":144,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"},{"line_number":145,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":146,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":147,"context_line":"reported in Placement at this time as Neutron bases SR-IOV is out of the"},{"line_number":148,"context_line":"scope of the current spec."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Where a PCI device does not have a ``physical_network`` or a ``resource_class``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"6846e5e2_8300a3d1","line":147,"range":{"start_line":147,"start_character":46,"end_line":147,"end_character":51},"in_reply_to":"07dbc751_60245ae8","updated":"2022-05-17 10:38:55.000000000","message":"done","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3c4b63be1306ada9b5cb70ece0588919de5b130","unresolved":true,"context_lines":[{"line_number":346,"context_line":"become unavailable. Also when a VF is consumed its parent PF becomes"},{"line_number":347,"context_line":"unavailable. This dynamic device type selection will be deprecated and the new"},{"line_number":348,"context_line":"Placement based PCI tracking will only allow configuring either the PF device"},{"line_number":349,"context_line":"or it children VF devices. The old PCI tracker will continue support this but"},{"line_number":350,"context_line":"as soon as ``[pci]report_in_placement`` is set to True on a compute that"},{"line_number":351,"context_line":"compute will reject configurations that are enabling both the PF and in"},{"line_number":352,"context_line":"children VFs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"59c8609b_8e5756fc","line":349,"range":{"start_line":349,"start_character":3,"end_line":349,"end_character":5},"updated":"2022-05-16 11:13:18.000000000","message":"its","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3c4b63be1306ada9b5cb70ece0588919de5b130","unresolved":true,"context_lines":[{"line_number":346,"context_line":"become unavailable. Also when a VF is consumed its parent PF becomes"},{"line_number":347,"context_line":"unavailable. This dynamic device type selection will be deprecated and the new"},{"line_number":348,"context_line":"Placement based PCI tracking will only allow configuring either the PF device"},{"line_number":349,"context_line":"or it children VF devices. The old PCI tracker will continue support this but"},{"line_number":350,"context_line":"as soon as ``[pci]report_in_placement`` is set to True on a compute that"},{"line_number":351,"context_line":"compute will reject configurations that are enabling both the PF and in"},{"line_number":352,"context_line":"children VFs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"4507d874_6d6b5ba5","line":349,"range":{"start_line":349,"start_character":61,"end_line":349,"end_character":73},"updated":"2022-05-16 11:13:18.000000000","message":"to support this functionality","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"41bbf258b2395a1044125b0cd16f744332b5c522","unresolved":false,"context_lines":[{"line_number":346,"context_line":"become unavailable. Also when a VF is consumed its parent PF becomes"},{"line_number":347,"context_line":"unavailable. This dynamic device type selection will be deprecated and the new"},{"line_number":348,"context_line":"Placement based PCI tracking will only allow configuring either the PF device"},{"line_number":349,"context_line":"or it children VF devices. The old PCI tracker will continue support this but"},{"line_number":350,"context_line":"as soon as ``[pci]report_in_placement`` is set to True on a compute that"},{"line_number":351,"context_line":"compute will reject configurations that are enabling both the PF and in"},{"line_number":352,"context_line":"children VFs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3ba51fdd_0e818a72","line":349,"range":{"start_line":349,"start_character":61,"end_line":349,"end_character":73},"in_reply_to":"4507d874_6d6b5ba5","updated":"2022-05-17 10:38:55.000000000","message":"Done","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"41bbf258b2395a1044125b0cd16f744332b5c522","unresolved":false,"context_lines":[{"line_number":346,"context_line":"become unavailable. Also when a VF is consumed its parent PF becomes"},{"line_number":347,"context_line":"unavailable. This dynamic device type selection will be deprecated and the new"},{"line_number":348,"context_line":"Placement based PCI tracking will only allow configuring either the PF device"},{"line_number":349,"context_line":"or it children VF devices. The old PCI tracker will continue support this but"},{"line_number":350,"context_line":"as soon as ``[pci]report_in_placement`` is set to True on a compute that"},{"line_number":351,"context_line":"compute will reject configurations that are enabling both the PF and in"},{"line_number":352,"context_line":"children VFs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"ca284164_86c7083a","line":349,"range":{"start_line":349,"start_character":3,"end_line":349,"end_character":5},"in_reply_to":"59c8609b_8e5756fc","updated":"2022-05-17 10:38:55.000000000","message":"Done","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5f15a0d79d9f32b1accc6dc2fa8caea1fe05d506","unresolved":true,"context_lines":[{"line_number":441,"context_line":"  provide VFs will have a trait ``HW_NIC_SRIOV`` but still use the"},{"line_number":442,"context_line":"  ``PCI_NETDEV`` resource class."},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"* A device that has ``physical_network`` tag and is a VFs will be modelled"},{"line_number":445,"context_line":"  as ``SRIOV_NET_VF`` resource."},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"This way every Neutron ``vnic_type`` can be mapped to one single resource"}],"source_content_type":"text/x-rst","patch_set":6,"id":"91cbb277_97857d63","line":444,"range":{"start_line":444,"start_character":54,"end_line":444,"end_character":57},"updated":"2022-05-16 19:10:26.000000000","message":"VF","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"41bbf258b2395a1044125b0cd16f744332b5c522","unresolved":false,"context_lines":[{"line_number":441,"context_line":"  provide VFs will have a trait ``HW_NIC_SRIOV`` but still use the"},{"line_number":442,"context_line":"  ``PCI_NETDEV`` resource class."},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"* A device that has ``physical_network`` tag and is a VFs will be modelled"},{"line_number":445,"context_line":"  as ``SRIOV_NET_VF`` resource."},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"This way every Neutron ``vnic_type`` can be mapped to one single resource"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1c2bcd4b_a0eea025","line":444,"range":{"start_line":444,"start_character":54,"end_line":444,"end_character":57},"in_reply_to":"91cbb277_97857d63","updated":"2022-05-17 10:38:55.000000000","message":"Done","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3c4b63be1306ada9b5cb70ece0588919de5b130","unresolved":true,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"* We could keep supporting the dynamic PF or VF consumption in Placement but"},{"line_number":513,"context_line":"  it is deemed more complex than useful. We will keep supporting it via the"},{"line_number":514,"context_line":"  legacy code path but the new will not support it."},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"* We could model each PCI device under a NUMA node."},{"line_number":517,"context_line":"  This can be done in the future by moving the RP under a NUMA node RP instead"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fee9205a_b7db0148","line":514,"range":{"start_line":514,"start_character":27,"end_line":514,"end_character":30},"updated":"2022-05-16 11:13:18.000000000","message":"new code path?","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"41bbf258b2395a1044125b0cd16f744332b5c522","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"* We could keep supporting the dynamic PF or VF consumption in Placement but"},{"line_number":513,"context_line":"  it is deemed more complex than useful. We will keep supporting it via the"},{"line_number":514,"context_line":"  legacy code path but the new will not support it."},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"* We could model each PCI device under a NUMA node."},{"line_number":517,"context_line":"  This can be done in the future by moving the RP under a NUMA node RP instead"}],"source_content_type":"text/x-rst","patch_set":6,"id":"f21b0a0a_8e3e3148","line":514,"range":{"start_line":514,"start_character":27,"end_line":514,"end_character":30},"in_reply_to":"fee9205a_b7db0148","updated":"2022-05-17 10:38:55.000000000","message":"Done","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5f15a0d79d9f32b1accc6dc2fa8caea1fe05d506","unresolved":true,"context_lines":[{"line_number":560,"context_line":"query slightly longer and the resulting execution time may increase for"},{"line_number":561,"context_line":"instances with PCI requests but should have no effect for instances without"},{"line_number":562,"context_line":"PCI requests. This added complexity is expected to be offset by the removal of"},{"line_number":563,"context_line":"the requirement to enable the ``PCIPassthrough`` scheduler filter eventually."},{"line_number":564,"context_line":"As a result of the offloading of the filtering to Placement and the removal of"},{"line_number":565,"context_line":"reschedules due to racing for the last PCI device on a host, the overall"},{"line_number":566,"context_line":"performance is expected to improve."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a7427c7_399f1edc","line":563,"range":{"start_line":563,"start_character":32,"end_line":563,"end_character":46},"updated":"2022-05-16 19:10:26.000000000","message":"PciPassthroughFilter?","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"41bbf258b2395a1044125b0cd16f744332b5c522","unresolved":false,"context_lines":[{"line_number":560,"context_line":"query slightly longer and the resulting execution time may increase for"},{"line_number":561,"context_line":"instances with PCI requests but should have no effect for instances without"},{"line_number":562,"context_line":"PCI requests. This added complexity is expected to be offset by the removal of"},{"line_number":563,"context_line":"the requirement to enable the ``PCIPassthrough`` scheduler filter eventually."},{"line_number":564,"context_line":"As a result of the offloading of the filtering to Placement and the removal of"},{"line_number":565,"context_line":"reschedules due to racing for the last PCI device on a host, the overall"},{"line_number":566,"context_line":"performance is expected to improve."}],"source_content_type":"text/x-rst","patch_set":6,"id":"e7c60a0e_2e1540ae","line":563,"range":{"start_line":563,"start_character":32,"end_line":563,"end_character":46},"in_reply_to":"1a7427c7_399f1edc","updated":"2022-05-17 10:38:55.000000000","message":"Done","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5f15a0d79d9f32b1accc6dc2fa8caea1fe05d506","unresolved":true,"context_lines":[{"line_number":622,"context_line":""},{"line_number":623,"context_line":"  Once ``[pci]report_to_placement`` is enabled for a compute host it cannot be"},{"line_number":624,"context_line":"  disabled any more."},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"Second, after every compute has been configured to report PCI inventories to"},{"line_number":627,"context_line":"Placement the scheduling prefilter needs to be enabled in the nova-scheduler"},{"line_number":628,"context_line":"configuration via the ``[scheduler]pci_prefilter`` configuration option."}],"source_content_type":"text/x-rst","patch_set":6,"id":"4b78b7d4_f768169c","line":625,"updated":"2022-05-16 19:10:26.000000000","message":"Should we have another note for the procedure about how operators who are relying on the legacy dynamic device type selection will need to update their nova.conf to explicitly choose whether to passthrough either the PF or VFs of a given device?\n\nThe reason I ask is I\u0027m imagining this section being the basis for the release note or wherever the upgrade procedure will be documented when the feature lands.","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"41bbf258b2395a1044125b0cd16f744332b5c522","unresolved":false,"context_lines":[{"line_number":622,"context_line":""},{"line_number":623,"context_line":"  Once ``[pci]report_to_placement`` is enabled for a compute host it cannot be"},{"line_number":624,"context_line":"  disabled any more."},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"Second, after every compute has been configured to report PCI inventories to"},{"line_number":627,"context_line":"Placement the scheduling prefilter needs to be enabled in the nova-scheduler"},{"line_number":628,"context_line":"configuration via the ``[scheduler]pci_prefilter`` configuration option."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5b3c3b2f_e18da3a4","line":625,"in_reply_to":"4b78b7d4_f768169c","updated":"2022-05-17 10:38:55.000000000","message":"Good point. I added a note. Thanks for noticing.","commit_id":"9d58a9b519ec77d49d1beb95defc20addc353c1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The syntax of the `PCI passthrough allow list`_ configuration option will be"},{"line_number":124,"context_line":"extended to support two additional standard tags ``resource_class`` and"},{"line_number":125,"context_line":"``traits``. These new tags will only take effect if the"},{"line_number":126,"context_line":"``[pci]report_in_placement`` config option is set to ``True``."}],"source_content_type":"text/x-rst","patch_set":7,"id":"27b9949b_5bcfe51c","line":123,"range":{"start_line":123,"start_character":35,"end_line":123,"end_character":40},"updated":"2022-05-17 12:24:42.000000000","message":"nit: device\n\nwe are not using the term allow list in general.\n\ni also dislike \"allow list\"  out side of an ACL context as i think its not actully correct in the context of resouce filtering.","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The syntax of the `PCI passthrough allow list`_ configuration option will be"},{"line_number":124,"context_line":"extended to support two additional standard tags ``resource_class`` and"},{"line_number":125,"context_line":"``traits``. These new tags will only take effect if the"},{"line_number":126,"context_line":"``[pci]report_in_placement`` config option is set to ``True``."}],"source_content_type":"text/x-rst","patch_set":7,"id":"2663d412_a42036a3","line":123,"range":{"start_line":123,"start_character":35,"end_line":123,"end_character":40},"in_reply_to":"27b9949b_5bcfe51c","updated":"2022-05-19 13:27:48.000000000","message":"Done","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":140,"context_line":"    }"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The ``resource_class`` tag will be allowed only when the ``physical_network``"},{"line_number":144,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"},{"line_number":145,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":146,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"2ca33cff_c8e8f382","line":143,"range":{"start_line":143,"start_character":35,"end_line":143,"end_character":42},"updated":"2022-05-17 12:24:42.000000000","message":"nit: accepted or valid\n\nits a pet peve but i hate using allow outside the context of permission such as ACL or policies.\n\nwhen we are talking about filtering i prefer to use include/exclue\nand vlaidations accept/reject\n\nuse allow and forbid genericly out side of permssiosn to me signifcanlty worsens our docs and user expericne as it has a different contextural meaning\n\nif we you allow list in context to pci i woudl initally assume it was related to roles or tenats that are allowd to consuem it not filtering what device are consumable. that is espcialy true in this context since peopel have asked about limiting who can use pci passthough in the past which is accive today via flavor access or with this spec you will have the option of using unified limits and qutoas for access contol.","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    }"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The ``resource_class`` tag will be allowed only when the ``physical_network``"},{"line_number":144,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"},{"line_number":145,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":146,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"089c32a8_c1b066f9","line":143,"range":{"start_line":143,"start_character":35,"end_line":143,"end_character":42},"in_reply_to":"2ca33cff_c8e8f382","updated":"2022-05-19 13:27:48.000000000","message":"Done","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The ``resource_class`` tag will be allowed only when the ``physical_network``"},{"line_number":144,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"},{"line_number":145,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":146,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":147,"context_line":"reported in Placement at this time as Neutron based SR-IOV is out of the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"d20add99_e39e8835","line":144,"range":{"start_line":144,"start_character":28,"end_line":144,"end_character":33},"updated":"2022-05-17 12:24:42.000000000","message":"nit: enable or configure","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The ``resource_class`` tag will be allowed only when the ``physical_network``"},{"line_number":144,"context_line":"tag is not defined and will allow a PCI device to be associated with a custom"},{"line_number":145,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":146,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":147,"context_line":"reported in Placement at this time as Neutron based SR-IOV is out of the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"6f983230_33ea38be","line":144,"range":{"start_line":144,"start_character":28,"end_line":144,"end_character":33},"in_reply_to":"d20add99_e39e8835","updated":"2022-05-19 13:27:48.000000000","message":"Done","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":241,"context_line":"Each PCI device RP will have traits reported according to the ``traits`` tag"},{"line_number":242,"context_line":"of the matching ``device_list`` entry. Nova might report additional traits on"},{"line_number":243,"context_line":"the device RP automatically for scheduling purposes."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Listing both the parent PF device and any of this children VF devices at the"},{"line_number":246,"context_line":"same time will not be support if ``[pci]report_in_placement`` is enabled. See"},{"line_number":247,"context_line":"`Dependent device handling`_ section for more details."}],"source_content_type":"text/x-rst","patch_set":7,"id":"b5635f52_065f0579","line":244,"updated":"2022-05-17 12:24:42.000000000","message":"ack the simple example is the OWNER_NOVA trait which it will add once the owner spec is implemeted. but there could be other in the future","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":241,"context_line":"Each PCI device RP will have traits reported according to the ``traits`` tag"},{"line_number":242,"context_line":"of the matching ``device_list`` entry. Nova might report additional traits on"},{"line_number":243,"context_line":"the device RP automatically for scheduling purposes."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Listing both the parent PF device and any of this children VF devices at the"},{"line_number":246,"context_line":"same time will not be support if ``[pci]report_in_placement`` is enabled. See"},{"line_number":247,"context_line":"`Dependent device handling`_ section for more details."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ccc7ba05_655e4428","line":244,"in_reply_to":"b5635f52_065f0579","updated":"2022-05-19 13:27:48.000000000","message":"Ack","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":288,"context_line":"  option or due to a physical device removal from the hypervisor. The driver"},{"line_number":289,"context_line":"  needs to modify the VF resource inventory on the PF RP (when a VF is removed)"},{"line_number":290,"context_line":"  or delete the PF RP (if the PF is removed and no children VFs matched)."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"PCI alias configuration"},{"line_number":293,"context_line":"-----------------------"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"327bcfdd_ccb3a0b9","line":291,"updated":"2022-05-17 12:24:42.000000000","message":"ack so this is just mirroring the logic we have in the pci_devices table where it would delete the rows to keep things consitent","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":288,"context_line":"  option or due to a physical device removal from the hypervisor. The driver"},{"line_number":289,"context_line":"  needs to modify the VF resource inventory on the PF RP (when a VF is removed)"},{"line_number":290,"context_line":"  or delete the PF RP (if the PF is removed and no children VFs matched)."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"PCI alias configuration"},{"line_number":293,"context_line":"-----------------------"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3580fa7c_3f6497af","line":291,"in_reply_to":"327bcfdd_ccb3a0b9","updated":"2022-05-19 13:27:48.000000000","message":"Ack","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":293,"context_line":"-----------------------"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"The `PCI alias definition`_ in ``[pci]alias`` configuration option will be"},{"line_number":296,"context_line":"extended to support three new tags, ``resource_class``, ``required_traits``,"},{"line_number":297,"context_line":"and ``forbidden_traits``. The ``resource_class`` tag can hold exactly one"},{"line_number":298,"context_line":"resource class name. While each ``\u003crequired|forbidden\u003e_traits`` tag can hold a"},{"line_number":299,"context_line":"comma-separated list of trait names. When the ``resource_class`` is specified,"},{"line_number":300,"context_line":"the ``vendor_id`` and ``product_id`` tags will no longer be required."}],"source_content_type":"text/x-rst","patch_set":7,"id":"03958d7e_0aac8b68","line":297,"range":{"start_line":296,"start_character":57,"end_line":297,"end_character":24},"updated":"2022-05-17 12:24:42.000000000","message":"ill admit i was really only thinking of required traits but sure we can support frobidden_traits too.\n\ni was assuming this would be just \"traits\" and if we were to supprot both we woudl just support a +/- syntax or the existing ! syntax in teh future  not two seperate fields.\n\ni have a slight prefernce for one field instead of 2 but im ok with either approach.\n\nthis is why im +1 currently so you can respond to this comment\notherwise i think im +2\n\ni have a number of nits but those could be address in a fup","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"70a47039d572265126390e755aeb9eda79d6da89","unresolved":true,"context_lines":[{"line_number":293,"context_line":"-----------------------"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"The `PCI alias definition`_ in ``[pci]alias`` configuration option will be"},{"line_number":296,"context_line":"extended to support three new tags, ``resource_class``, ``required_traits``,"},{"line_number":297,"context_line":"and ``forbidden_traits``. The ``resource_class`` tag can hold exactly one"},{"line_number":298,"context_line":"resource class name. While each ``\u003crequired|forbidden\u003e_traits`` tag can hold a"},{"line_number":299,"context_line":"comma-separated list of trait names. When the ``resource_class`` is specified,"},{"line_number":300,"context_line":"the ``vendor_id`` and ``product_id`` tags will no longer be required."}],"source_content_type":"text/x-rst","patch_set":7,"id":"514cb0b7_63201512","line":297,"range":{"start_line":296,"start_character":57,"end_line":297,"end_character":24},"in_reply_to":"03958d7e_0aac8b68","updated":"2022-05-17 22:04:35.000000000","message":"I\u0027m definitely not an expert but if it\u0027s s similar amount of work it seems like a good idea to support both required and forbidden (this is me assuming users like to also specify forbidden traits when allocating PCI?). And as for the syntax, I think to keep consistent with whatever is already being done in placement for required vs forbidden.","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":293,"context_line":"-----------------------"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"The `PCI alias definition`_ in ``[pci]alias`` configuration option will be"},{"line_number":296,"context_line":"extended to support three new tags, ``resource_class``, ``required_traits``,"},{"line_number":297,"context_line":"and ``forbidden_traits``. The ``resource_class`` tag can hold exactly one"},{"line_number":298,"context_line":"resource class name. While each ``\u003crequired|forbidden\u003e_traits`` tag can hold a"},{"line_number":299,"context_line":"comma-separated list of trait names. When the ``resource_class`` is specified,"},{"line_number":300,"context_line":"the ``vendor_id`` and ``product_id`` tags will no longer be required."}],"source_content_type":"text/x-rst","patch_set":7,"id":"8b4a8842_5be00ba7","line":297,"range":{"start_line":296,"start_character":57,"end_line":297,"end_character":24},"in_reply_to":"514cb0b7_63201512","updated":"2022-05-19 13:27:48.000000000","message":"flavor extra_spec uses:\n  \n  trait{group}:{trait_name}\u003dforbidden|required\n\nI don\u0027t think we want the tag name being dynamic so we cannot follow this. \n\nPlacement API uses \n\n  required\u003dtrait1,!trait2 \n\nthat is recently being evolved into the more complex\n\n  required\u003din:T3,T4\u0026required\u003dT1,!T2 \n\nsyntax. And this gives great flexibility but it needs \"required\" to be repeatable. That again we cannot really replicate in tags. \n\nI would prefer \u003cnothing\u003e/! over the +/- syntax if we go there to keep some level of consistency at least with placement.\n\nAs the alias is always mapped to a single request group we never have to handle group names in the tags. So we can use the postfix to do repetition.\n\nSo lets have a tag named \u0027traits\u0027, with this spec we support \u003cnothing\u003e/! prefix on trait names in the value of the \u0027trait\u0027 tag to express required/forbidden traits. Later on this can be extended to repeat the traits tag with a free text postfix to express more complex things and we can also allow \u0027in:\u0027 prefix:\n\n  traits1\u003dT1,!T2\n  traits2\u003din:T3,T4\n\nSo \u0027trait\u0027 will be forward compatible","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":298,"context_line":"resource class name. While each ``\u003crequired|forbidden\u003e_traits`` tag can hold a"},{"line_number":299,"context_line":"comma-separated list of trait names. When the ``resource_class`` is specified,"},{"line_number":300,"context_line":"the ``vendor_id`` and ``product_id`` tags will no longer be required."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":".. note::"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"  If both ``resource_class`` and ``vendor_id`` and ``product_id`` fields are"}],"source_content_type":"text/x-rst","patch_set":7,"id":"c8c793d7_d1e8173b","line":301,"updated":"2022-05-17 12:24:42.000000000","message":"+1 i skip this when i read over this quickly and wasg going to ask you to include it in the note.\nyes this is the semantics i was expecting","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":298,"context_line":"resource class name. While each ``\u003crequired|forbidden\u003e_traits`` tag can hold a"},{"line_number":299,"context_line":"comma-separated list of trait names. When the ``resource_class`` is specified,"},{"line_number":300,"context_line":"the ``vendor_id`` and ``product_id`` tags will no longer be required."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":".. note::"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"  If both ``resource_class`` and ``vendor_id`` and ``product_id`` fields are"}],"source_content_type":"text/x-rst","patch_set":7,"id":"c2b47f4e_0f7bb8a6","line":301,"in_reply_to":"c8c793d7_d1e8173b","updated":"2022-05-19 13:27:48.000000000","message":"Ack","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"  For now the prefilter will only create request groups from PCI requests"},{"line_number":336,"context_line":"  coming from the flavor. PCI requests coming from Neutron ports will be"},{"line_number":337,"context_line":"  ignored by the prefilter and kept scheduled by the ``PciPassthroughFilter``."},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Dependent device handling"}],"source_content_type":"text/x-rst","patch_set":7,"id":"32f62bb7_85ae89a3","line":337,"updated":"2022-05-17 12:24:42.000000000","message":"ack cool so internally i think we can look at the requester_type filed in teh InstancePCIRequest object. i dont recall the filed name off the top of my head but we have a property i belive on the ovo that will tell you if the request is from the flavor or neutron that we can just use to determin if we shoudl use it in the prefilter so this is simple to do.\n\nwe already use this for sriov live migration for example to determin if the vm has InstancePCIRequests form the flavor and reject it if it does.","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"  For now the prefilter will only create request groups from PCI requests"},{"line_number":336,"context_line":"  coming from the flavor. PCI requests coming from Neutron ports will be"},{"line_number":337,"context_line":"  ignored by the prefilter and kept scheduled by the ``PciPassthroughFilter``."},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Dependent device handling"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4168e1c6_4787592a","line":337,"in_reply_to":"32f62bb7_85ae89a3","updated":"2022-05-19 13:27:48.000000000","message":"Ack","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":349,"context_line":"or its children VF devices. The old PCI tracker will continue support this"},{"line_number":350,"context_line":"functionality but as soon as ``[pci]report_in_placement`` is set to True on a"},{"line_number":351,"context_line":"compute that compute will reject configurations that are enabling both the PF"},{"line_number":352,"context_line":"and in children VFs."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"PCI NUMA affinity"},{"line_number":355,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"12645717_422c6394","line":352,"updated":"2022-05-17 12:24:42.000000000","message":"+1\n\nso when set to true the agent will refuse to start if this dynamic config is detected which will prevent scheduling to that node since it will be down.\n\nwe will not need to communicate the state of this config option to the scheduler.\n\nimplemenation detail:\nits imporant that we do this check before starting the reshap so that they can revert to [pci]report_in_placement\u003dFalse if they need to move instances aroudn first.\n\ne.g. setting [pci]report_in_placement\u003dTrue whoudl only prevent rolling back to [pci]report_in_placement\u003dFalse if and only if the config is valid.","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":349,"context_line":"or its children VF devices. The old PCI tracker will continue support this"},{"line_number":350,"context_line":"functionality but as soon as ``[pci]report_in_placement`` is set to True on a"},{"line_number":351,"context_line":"compute that compute will reject configurations that are enabling both the PF"},{"line_number":352,"context_line":"and in children VFs."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"PCI NUMA affinity"},{"line_number":355,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"83e3c978_4ebefb30","line":352,"in_reply_to":"12645717_422c6394","updated":"2022-05-19 13:27:48.000000000","message":"Ack","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":"Attaching and detaching PCI devices are only supported via Neutron SR-IOV ports"},{"line_number":403,"context_line":"and that is out of the scope of this spec."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":407,"context_line":"-----------------------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"cdfb47b1_53e0774f","line":404,"updated":"2022-05-17 12:24:42.000000000","message":"oh right so that would in the future also need to update the allcoations.\nthat will be fun :)","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":"Attaching and detaching PCI devices are only supported via Neutron SR-IOV ports"},{"line_number":403,"context_line":"and that is out of the scope of this spec."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":407,"context_line":"-----------------------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"82fdee7b_8bf67626","line":404,"in_reply_to":"cdfb47b1_53e0774f","updated":"2022-05-19 13:27:48.000000000","message":"super fun :)","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":554,"context_line":"------------------"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"In general, this is expected to improve the scheduling performance but"},{"line_number":557,"context_line":"should have no runtime performance on guests."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"The introduction of a new prefilter will make the computation of the placement"},{"line_number":560,"context_line":"query slightly longer and the resulting execution time may increase for"}],"source_content_type":"text/x-rst","patch_set":7,"id":"de4ab362_c3b57878","line":557,"range":{"start_line":557,"start_character":15,"end_line":557,"end_character":1},"updated":"2022-05-17 12:24:42.000000000","message":"nit: runtime performance impact on guests.","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":554,"context_line":"------------------"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"In general, this is expected to improve the scheduling performance but"},{"line_number":557,"context_line":"should have no runtime performance on guests."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"The introduction of a new prefilter will make the computation of the placement"},{"line_number":560,"context_line":"query slightly longer and the resulting execution time may increase for"}],"source_content_type":"text/x-rst","patch_set":7,"id":"b78f667d_e5c6751a","line":557,"range":{"start_line":557,"start_character":15,"end_line":557,"end_character":1},"in_reply_to":"de4ab362_c3b57878","updated":"2022-05-19 13:27:48.000000000","message":"Done","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":581,"context_line":"Upgrade impact"},{"line_number":582,"context_line":"--------------"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"The new Placement based PCI tracking will be disable by default. Deployments"},{"line_number":585,"context_line":"already using PCI devices can freely upgrade to the new Nova version without"},{"line_number":586,"context_line":"any impact. At this state the PCI device management will be done by the"},{"line_number":587,"context_line":"``PciPassthroughFilter`` in the scheduler and the PCI claim in the PCI device"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bbb5a3ec_be84bfbf","line":584,"range":{"start_line":584,"start_character":45,"end_line":584,"end_character":52},"updated":"2022-05-17 12:24:42.000000000","message":"nit: disabled","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":581,"context_line":"Upgrade impact"},{"line_number":582,"context_line":"--------------"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"The new Placement based PCI tracking will be disable by default. Deployments"},{"line_number":585,"context_line":"already using PCI devices can freely upgrade to the new Nova version without"},{"line_number":586,"context_line":"any impact. At this state the PCI device management will be done by the"},{"line_number":587,"context_line":"``PciPassthroughFilter`` in the scheduler and the PCI claim in the PCI device"}],"source_content_type":"text/x-rst","patch_set":7,"id":"e2fb8378_24771fd4","line":584,"range":{"start_line":584,"start_character":45,"end_line":584,"end_character":52},"in_reply_to":"bbb5a3ec_be84bfbf","updated":"2022-05-19 13:27:48.000000000","message":"Done","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":".. note::"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"  Operators are encouraged to take the opportunity to and rename the"},{"line_number":612,"context_line":"  ``[pci]passthrough_whitelist`` config option to the new ``[pci]device_list``"},{"line_number":613,"context_line":"  option. The syntax of the two options are the same."},{"line_number":614,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"4ab72f61_567c877e","line":611,"range":{"start_line":611,"start_character":54,"end_line":611,"end_character":57},"updated":"2022-05-17 12:24:42.000000000","message":"delete","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":".. note::"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"  Operators are encouraged to take the opportunity to and rename the"},{"line_number":612,"context_line":"  ``[pci]passthrough_whitelist`` config option to the new ``[pci]device_list``"},{"line_number":613,"context_line":"  option. The syntax of the two options are the same."},{"line_number":614,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"a24ba803_c278f656","line":611,"range":{"start_line":611,"start_character":54,"end_line":611,"end_character":57},"in_reply_to":"4ab72f61_567c877e","updated":"2022-05-19 13:27:48.000000000","message":"Done","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"c416edc25894d0b6ec031c9ed8fd5527204a2e8e","unresolved":true,"context_lines":[{"line_number":637,"context_line":"    be removed from the ``device_list`` and at least the currently allocated"},{"line_number":638,"context_line":"    VFs needs to be kept in the config, while other non allocated children VFs"},{"line_number":639,"context_line":"    can be kept or removed from the ``device_list`` at will."},{"line_number":640,"context_line":""},{"line_number":641,"context_line":".. note::"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"  Once ``[pci]report_to_placement`` is enabled for a compute host it cannot be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"f24fb7e1_e570e11c","line":640,"updated":"2022-05-17 21:53:55.000000000","message":"Very nice! Good clarity.","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":637,"context_line":"    be removed from the ``device_list`` and at least the currently allocated"},{"line_number":638,"context_line":"    VFs needs to be kept in the config, while other non allocated children VFs"},{"line_number":639,"context_line":"    can be kept or removed from the ``device_list`` at will."},{"line_number":640,"context_line":""},{"line_number":641,"context_line":".. note::"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"  Once ``[pci]report_to_placement`` is enabled for a compute host it cannot be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"e50979de_f61d50e3","line":640,"in_reply_to":"f24fb7e1_e570e11c","updated":"2022-05-19 13:27:48.000000000","message":"Ack","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b36c9f781b308b8612dcef04213dbe704558b66b","unresolved":true,"context_lines":[{"line_number":689,"context_line":""},{"line_number":690,"context_line":"This spec has no direct dependency on any spec but it has an indirect"},{"line_number":691,"context_line":"dependency on unified limits to support quotas on PCI devices by resource"},{"line_number":692,"context_line":"class."},{"line_number":693,"context_line":""},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5bcaa8a1_820fbc69","line":692,"updated":"2022-05-17 12:24:42.000000000","message":"this is fine to keep but unified limtis is not implemetned so it could be dropped :)","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e533891f17eddf7767cf2e20a3ff7a888c720668","unresolved":false,"context_lines":[{"line_number":689,"context_line":""},{"line_number":690,"context_line":"This spec has no direct dependency on any spec but it has an indirect"},{"line_number":691,"context_line":"dependency on unified limits to support quotas on PCI devices by resource"},{"line_number":692,"context_line":"class."},{"line_number":693,"context_line":""},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":7,"id":"e3ae53a2_d4387b65","line":692,"in_reply_to":"365a0139_35427229","updated":"2022-05-19 13:27:48.000000000","message":"Done","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"c416edc25894d0b6ec031c9ed8fd5527204a2e8e","unresolved":true,"context_lines":[{"line_number":689,"context_line":""},{"line_number":690,"context_line":"This spec has no direct dependency on any spec but it has an indirect"},{"line_number":691,"context_line":"dependency on unified limits to support quotas on PCI devices by resource"},{"line_number":692,"context_line":"class."},{"line_number":693,"context_line":""},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":7,"id":"365a0139_35427229","line":692,"in_reply_to":"5bcaa8a1_820fbc69","updated":"2022-05-17 21:53:55.000000000","message":"Unified limits are available albeit in an opt-in, experimental state :)","commit_id":"2b6bdb21c4f8c643e0bd22b3a5484dc08f8321be"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":103,"context_line":"and to be able to deprecate and eventually remove some of the functionality of"},{"line_number":104,"context_line":"the current PCI device tracker the new Placement based PCI device tracking will"},{"line_number":105,"context_line":"be disabled by default in the first release. The new"},{"line_number":106,"context_line":"``[pci]report_in_placement`` config option can be used to enable the"},{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"}],"source_content_type":"text/x-rst","patch_set":8,"id":"81c5d30f_f4970b21","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":27},"updated":"2022-05-23 16:52:47.000000000","message":"nit : in general, we split the group from the option name by a slash like [group]/opt_name.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa13be955231e356b241ef0a33155ac376864294","unresolved":true,"context_lines":[{"line_number":103,"context_line":"and to be able to deprecate and eventually remove some of the functionality of"},{"line_number":104,"context_line":"the current PCI device tracker the new Placement based PCI device tracking will"},{"line_number":105,"context_line":"be disabled by default in the first release. The new"},{"line_number":106,"context_line":"``[pci]report_in_placement`` config option can be used to enable the"},{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"}],"source_content_type":"text/x-rst","patch_set":8,"id":"eb728472_8cc4cf80","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":27},"in_reply_to":"81c5d30f_f4970b21","updated":"2022-05-23 17:26:00.000000000","message":"I think we don\u0027t. I learned from Stephen to rely purely on ] as a separator.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59e8343995b2c6ef5c898733ddddc9f6d77cdea7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"and to be able to deprecate and eventually remove some of the functionality of"},{"line_number":104,"context_line":"the current PCI device tracker the new Placement based PCI device tracking will"},{"line_number":105,"context_line":"be disabled by default in the first release. The new"},{"line_number":106,"context_line":"``[pci]report_in_placement`` config option can be used to enable the"},{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"}],"source_content_type":"text/x-rst","patch_set":8,"id":"41de8cd8_decb90c7","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":27},"in_reply_to":"eb728472_8cc4cf80","updated":"2022-05-25 16:33:22.000000000","message":"Yeah, this was mriedem\u0027s thing and he\u0027s dead to us now #rip We already have our delimiter","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":105,"context_line":"be disabled by default in the first release. The new"},{"line_number":106,"context_line":"``[pci]report_in_placement`` config option can be used to enable the"},{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"},{"line_number":110,"context_line":"changed to ``True``."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"379eaada_079ad20d","line":108,"range":{"start_line":108,"start_character":40,"end_line":108,"end_character":48},"updated":"2022-05-23 16:52:47.000000000","message":"nit : disable","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":105,"context_line":"be disabled by default in the first release. The new"},{"line_number":106,"context_line":"``[pci]report_in_placement`` config option can be used to enable the"},{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"},{"line_number":110,"context_line":"changed to ``True``."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"f894e769_80ccc6a5","line":108,"range":{"start_line":108,"start_character":22,"end_line":108,"end_character":36},"updated":"2022-05-23 16:52:47.000000000","message":"you mean, it will return an exception at startup, right?","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":105,"context_line":"be disabled by default in the first release. The new"},{"line_number":106,"context_line":"``[pci]report_in_placement`` config option can be used to enable the"},{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"},{"line_number":110,"context_line":"changed to ``True``."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"865aec08_871780d4","line":108,"range":{"start_line":108,"start_character":22,"end_line":108,"end_character":36},"in_reply_to":"19272fcc_edfa4319","updated":"2022-05-25 11:49:54.000000000","message":"clarified in the text","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":105,"context_line":"be disabled by default in the first release. The new"},{"line_number":106,"context_line":"``[pci]report_in_placement`` config option can be used to enable the"},{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"},{"line_number":110,"context_line":"changed to ``True``."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"19fceb16_f38a5ce1","line":108,"range":{"start_line":108,"start_character":40,"end_line":108,"end_character":48},"in_reply_to":"379eaada_079ad20d","updated":"2022-05-25 11:49:54.000000000","message":"Done","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa13be955231e356b241ef0a33155ac376864294","unresolved":true,"context_lines":[{"line_number":105,"context_line":"be disabled by default in the first release. The new"},{"line_number":106,"context_line":"``[pci]report_in_placement`` config option can be used to enable the"},{"line_number":107,"context_line":"functionality. It will be defaulted to ``False`` first and once it is turned to"},{"line_number":108,"context_line":"``True`` nova-compute will not allow to disabled it again. In a future release,"},{"line_number":109,"context_line":"after the PCI tracking in Placement is feature complete, the default will be"},{"line_number":110,"context_line":"changed to ``True``."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"19272fcc_edfa4319","line":108,"range":{"start_line":108,"start_character":22,"end_line":108,"end_character":36},"in_reply_to":"f894e769_80ccc6a5","updated":"2022-05-23 17:26:00.000000000","message":"yes, it will prevent the compute service to start","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19812757892a0217dacc5b4441059019c7b811db","unresolved":true,"context_lines":[{"line_number":116,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":117,"context_line":"update the name of the configuration option. The"},{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"342a746e_40172614","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":54},"updated":"2022-05-23 15:53:40.000000000","message":"I assume we\u0027re keeping this as a MultiStrOpt? If so, the name is a bit of misnomer because this isn\u0027t a list. Perhaps simply \u0027device\u0027 or \u0027device_filter\u0027, \u0027available_device\u0027, something like that? You\u0027ll note that \u0027alias\u0027 is singular (thankfully) since that\u0027s also a MultiStrOpt.\n\n  [pci]\n  device \u003d {\"product_id\": \"0443\", \"vendor_id\": \"8086\"}\n  alias \u003d {\"name\": \"QuickAssist\", \"product_id\": \"0443\", \"vendor_id\": \"8086\"}\n  device \u003d {\"product_id\": \"225c\", \"vendor_id\": \"8086\"}\n  alias \u003d {\"name\": \"Phi\", \"product_id\": \"225c\", \"vendor_id\": \"8086\"}","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":116,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":117,"context_line":"update the name of the configuration option. The"},{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"e2a6ba1a_3244ffb3","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":54},"in_reply_to":"342a746e_40172614","updated":"2022-05-23 16:52:47.000000000","message":"I agree, this isn\u0027t a list of devices, but rather a device specification.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7dd7e60f561bb7f24d95311539efa2c3aed740e","unresolved":true,"context_lines":[{"line_number":116,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":117,"context_line":"update the name of the configuration option. The"},{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5ac59823_1ab9a2fc","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":54},"in_reply_to":"342a746e_40172614","updated":"2022-05-23 16:20:35.000000000","message":"I planned to keep the same MultiStrOpt but I\u0027m open to suggestions.\n\nAbout of prularness, currently a single item in the device_list can match multiple devices (globbing and regexp is supported). So I\u0027m not sure the singular ``device`` is good.\n\nCan we go with [pci]devices maybe?","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e744377c9e1a61cc23e277a687d2780657ced9f2","unresolved":true,"context_lines":[{"line_number":116,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":117,"context_line":"update the name of the configuration option. The"},{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"8cd00682_6695f47b","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":54},"in_reply_to":"68cc9a6d_201d7508","updated":"2022-05-24 16:37:16.000000000","message":"I think this is vice versa. The [pci]passthrough_whitelist supports both the repeating and the direct json list:\n\nhttps://github.com/openstack/nova/blob/61b161eeaaed9e228b735f7c6793e7fc5bf1a830/nova/pci/whitelist.py#L67-L69\n\nBut the [pci]alias only supports repeating the config opt:\n\nhttps://github.com/openstack/nova/blob/61b161eeaaed9e228b735f7c6793e7fc5bf1a830/nova/conf/pci.py#L70-L71\nhttps://github.com/openstack/nova/blob/61b161eeaaed9e228b735f7c6793e7fc5bf1a830/nova/pci/request.py#L127-L129","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":116,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":117,"context_line":"update the name of the configuration option. The"},{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"04299445_1795b647","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":54},"in_reply_to":"8cd00682_6695f47b","updated":"2022-05-25 11:49:54.000000000","message":"After discussing the naming over IRC I renamed it to [pci]device_spec so that it means a specification that matches zero, one or multiple devices.\n\nAs of moving away from MultiStrOpt I declare that is out of scope of this spec.\nAdding the json list support for pci_alias also considered out of scope of this spec as I believe we should move away from MultiStrOpt instead.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa13be955231e356b241ef0a33155ac376864294","unresolved":true,"context_lines":[{"line_number":116,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":117,"context_line":"update the name of the configuration option. The"},{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"f8141d56_9cfb0a1e","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":54},"in_reply_to":"e2a6ba1a_3244ffb3","updated":"2022-05-23 17:26:00.000000000","message":"this is a list of filters and those filters either match to zero, one, or multiple devices each.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75eb600a79ff541cee8bbff3a24fb1ab3fc2f763","unresolved":true,"context_lines":[{"line_number":116,"context_line":"option. While we are making this change we will take this opportunity to"},{"line_number":117,"context_line":"update the name of the configuration option. The"},{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"68cc9a6d_201d7508","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":54},"in_reply_to":"f8141d56_9cfb0a1e","updated":"2022-05-24 08:45:46.000000000","message":"yes its almost always goign to refer to mupliple devices\nwhich is why i was ok with device_list orginally\nwe can use device or device but honetly i really did not want to open the question fo MultiStrOpt string or not in this spec.\n\ni want to keep that out of scope and perhaps have a single spec to dicuss deprecating the current nova.conf in conf formant and replacing it with a yaml based config or at leas todign that for all device filtering usage we hvae today.\n\n\ni woudl like to do this eitehr by adding a resouces section to provider.yaml or defining a resouces.yaml file that will have all device info (pci,vgpu,pmem, numa_vswitch...) for device nova owns.\n\nMultiStrOpt string are a problem for dpeloymnent tools to handel since they are part of the conf formmat not the ini format so any ini libs cant process them\n\nin ini format if an option is repeated only the last version is used.\nmost ansibel based tools use dicts internally such as kolla-ansibles config generator code. that also does not work with multi opt value as only one of them will be preserved. sotools that render a template and then merge those templates generaly dont work.\n\nfor the alias we supprot\n\nalias \u003d {\"name\": \"QuickAssist\", \"product_id\": \"0443\", \"vendor_id\": \"8086\"}\nalias \u003d {\"name\": \"Phi\", \"product_id\": \"225c\", \"vendor_id\": \"8086\"}\n\nbut we also support \nalias \u003d [\n{\"name\": \"QuickAssist\", \"product_id\": \"0443\", \"vendor_id\": \"8086\"},\n{\"name\": \"Phi\", \"product_id\": \"225c\", \"vendor_id\": \"8086\"}\n]\n\ni.e. the alias is actully a multiopt value of json string which may have a list of aliass\n\nthat is how we workaround the multiopt limiations for the alsis but that\nis not supproted for the device_list today\n\nif we want to make a minimal change to the device list without going full yaml\n\nthen my preference would be to support \"devices\" or \"device\" a a multiopt sting\nand device_list as a singel json string with support for a json list of device filter objects\n\n\nso \n\n [pci]\n  device_list \u003d [\n    {\"product_id\": \"0443\", \"vendor_id\": \"8086\"},\n    {\"product_id\": \"225c\", \"vendor_id\": \"8086\"}\n  ]\n  alias \u003d [\n    {\"name\": \"QuickAssist\", \"product_id\": \"0443\", \"vendor_id\": \"8086\"}\n    {\"name\": \"Phi\", \"product_id\": \"225c\", \"vendor_id\": \"8086\"}\n  ]\n\nit solve the current parsing/generation porblems we have, it bring parity to the two options and its trivial to handel in code.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The syntax of the `PCI passthrough device list`_ configuration option will be"},{"line_number":124,"context_line":"extended to support two additional standard tags ``resource_class`` and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"b0019e09_1d083205","line":121,"updated":"2022-05-23 16:52:47.000000000","message":"do we raise an exception if we turn on report_in_placement config option but we don\u0027t specific the resource_class and traits tags ?\n\nI guess the other way isn\u0027t a problem, we can ignore those new tags.\n\nFrom an upgrade PoV, the config change is a breaking modification, so we need to carefully ensure that ops correctly switch to new-style tracking.\n\nLATER : Oh, both are optional, we default to some values if not provided. Nevermind this comment then.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The syntax of the `PCI passthrough device list`_ configuration option will be"},{"line_number":124,"context_line":"extended to support two additional standard tags ``resource_class`` and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"00fec738_17176108","line":121,"in_reply_to":"1fec69a1_cb978091","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa13be955231e356b241ef0a33155ac376864294","unresolved":true,"context_lines":[{"line_number":118,"context_line":"``[pci]passthrough_whitelist`` config option will be deprecated for eventual"},{"line_number":119,"context_line":"removal and replaced with the new ``[pci]device_list`` config option. Both the"},{"line_number":120,"context_line":"old and the new config options will support the newly proposed"},{"line_number":121,"context_line":"``resource_class`` and ``traits`` tags."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The syntax of the `PCI passthrough device list`_ configuration option will be"},{"line_number":124,"context_line":"extended to support two additional standard tags ``resource_class`` and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1fec69a1_cb978091","line":121,"in_reply_to":"b0019e09_1d083205","updated":"2022-05-23 17:26:00.000000000","message":"Yepp, resouce_class defaults to CUSTOM_\u003cvendor_id\u003e_\u003cproduct_id\u003e dynamically, traits defaults to an empty list statically.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":131,"context_line":"      \"vendor_id\": \"1002\","},{"line_number":132,"context_line":"      \"product_id\": \"67FF\","},{"line_number":133,"context_line":"      \"resource_class\":\"CUSTOM_GPU\","},{"line_number":134,"context_line":"      \"traits\": \"CUSTOM_RADEON_RX_560\", \"CUSTOM_GDDR5\""},{"line_number":135,"context_line":"    }"},{"line_number":136,"context_line":"    device_list \u003d {"},{"line_number":137,"context_line":"      \"address\": \"0000:82:00.0\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"5ce6aa51_eb4fe5af","line":134,"updated":"2022-05-23 16:52:47.000000000","message":"are we sure that we can have a list of strings as values of the traits option if this is a MultiStrOpt ?\nDoc says MultiStrOpt inherits from MultiOpt where item_type is MultiStr but I\u0027m not sure it allows list of strings as value for a item of such list of strings.\n\nhttps://docs.openstack.org/oslo.config/latest/reference/api/oslo_config.html#oslo_config.types.MultiString","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa13be955231e356b241ef0a33155ac376864294","unresolved":true,"context_lines":[{"line_number":131,"context_line":"      \"vendor_id\": \"1002\","},{"line_number":132,"context_line":"      \"product_id\": \"67FF\","},{"line_number":133,"context_line":"      \"resource_class\":\"CUSTOM_GPU\","},{"line_number":134,"context_line":"      \"traits\": \"CUSTOM_RADEON_RX_560\", \"CUSTOM_GDDR5\""},{"line_number":135,"context_line":"    }"},{"line_number":136,"context_line":"    device_list \u003d {"},{"line_number":137,"context_line":"      \"address\": \"0000:82:00.0\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"8b9af4f4_c118488d","line":134,"in_reply_to":"5ce6aa51_eb4fe5af","updated":"2022-05-23 17:26:00.000000000","message":"the value will be a string from the oslo_config perspective and nova will split the string by \u0027,\u0027 to get a list of traits","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":131,"context_line":"      \"vendor_id\": \"1002\","},{"line_number":132,"context_line":"      \"product_id\": \"67FF\","},{"line_number":133,"context_line":"      \"resource_class\":\"CUSTOM_GPU\","},{"line_number":134,"context_line":"      \"traits\": \"CUSTOM_RADEON_RX_560\", \"CUSTOM_GDDR5\""},{"line_number":135,"context_line":"    }"},{"line_number":136,"context_line":"    device_list \u003d {"},{"line_number":137,"context_line":"      \"address\": \"0000:82:00.0\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"9aa96283_eef6559b","line":134,"in_reply_to":"8b9af4f4_c118488d","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":140,"context_line":"    }"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The ``resource_class`` tag will be accepted only when the ``physical_network``"},{"line_number":144,"context_line":"tag is not defined and will enable a PCI device to be associated with a custom"},{"line_number":145,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":146,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":147,"context_line":"reported in Placement at this time as Neutron based SR-IOV is out of the"},{"line_number":148,"context_line":"scope of the current spec."}],"source_content_type":"text/x-rst","patch_set":8,"id":"fc958473_b04d6347","line":145,"range":{"start_line":143,"start_character":0,"end_line":145,"end_character":14},"updated":"2022-05-23 16:52:47.000000000","message":"later: oh, the resource_class tag is optional, I see.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    }"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The ``resource_class`` tag will be accepted only when the ``physical_network``"},{"line_number":144,"context_line":"tag is not defined and will enable a PCI device to be associated with a custom"},{"line_number":145,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":146,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":147,"context_line":"reported in Placement at this time as Neutron based SR-IOV is out of the"},{"line_number":148,"context_line":"scope of the current spec."}],"source_content_type":"text/x-rst","patch_set":8,"id":"36d57ef2_d7b8bdf7","line":145,"range":{"start_line":143,"start_character":0,"end_line":145,"end_character":14},"in_reply_to":"fc958473_b04d6347","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Where a PCI device does not have a ``physical_network`` or a ``resource_class``"},{"line_number":151,"context_line":"tag present it will be reported with a generated custom resource class."},{"line_number":152,"context_line":"The resource class will be ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"The ``traits`` tag will be a comma-separated list of standard or custom trait"},{"line_number":155,"context_line":"names that will be reported for the device RP in Placement."}],"source_content_type":"text/x-rst","patch_set":8,"id":"f08d9576_99f9a41c","line":152,"updated":"2022-05-23 16:52:47.000000000","message":"I see.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Where a PCI device does not have a ``physical_network`` or a ``resource_class``"},{"line_number":151,"context_line":"tag present it will be reported with a generated custom resource class."},{"line_number":152,"context_line":"The resource class will be ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"The ``traits`` tag will be a comma-separated list of standard or custom trait"},{"line_number":155,"context_line":"names that will be reported for the device RP in Placement."}],"source_content_type":"text/x-rst","patch_set":8,"id":"93f6a206_3d62adb2","line":152,"in_reply_to":"f08d9576_99f9a41c","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":154,"context_line":"The ``traits`` tag will be a comma-separated list of standard or custom trait"},{"line_number":155,"context_line":"names that will be reported for the device RP in Placement."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Nova will normalize and prefix the resource class and trait names with"},{"line_number":158,"context_line":"``CUSTOM_``, if isn\u0027t already prefixed, before creating them in Placement."},{"line_number":159,"context_line":"Nova will first check the provided trait name in os_traits and if it exists"},{"line_number":160,"context_line":"as a standard trait then that will be used instead of creating a custom one."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df71119a_05bbd69a","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":74},"updated":"2022-05-23 16:52:47.000000000","message":"fwiw, docs need to be super explicit on automatically normalizing the traits and rcs, this can be errorprone.\n\nI\u0027d rather propose to *not* mention the prefix and let operators provider their own namings (like \"gpu\")","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":154,"context_line":"The ``traits`` tag will be a comma-separated list of standard or custom trait"},{"line_number":155,"context_line":"names that will be reported for the device RP in Placement."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Nova will normalize and prefix the resource class and trait names with"},{"line_number":158,"context_line":"``CUSTOM_``, if isn\u0027t already prefixed, before creating them in Placement."},{"line_number":159,"context_line":"Nova will first check the provided trait name in os_traits and if it exists"},{"line_number":160,"context_line":"as a standard trait then that will be used instead of creating a custom one."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"a579c05e_57228ce3","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":74},"in_reply_to":"defa1a9c_1f90e01f","updated":"2022-05-25 11:49:54.000000000","message":"I will keep this as is in the spec proposing normalization and conditional but automatic prefixing. We can debate this again in the implementation patch further.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75eb600a79ff541cee8bbff3a24fb1ab3fc2f763","unresolved":true,"context_lines":[{"line_number":154,"context_line":"The ``traits`` tag will be a comma-separated list of standard or custom trait"},{"line_number":155,"context_line":"names that will be reported for the device RP in Placement."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Nova will normalize and prefix the resource class and trait names with"},{"line_number":158,"context_line":"``CUSTOM_``, if isn\u0027t already prefixed, before creating them in Placement."},{"line_number":159,"context_line":"Nova will first check the provided trait name in os_traits and if it exists"},{"line_number":160,"context_line":"as a standard trait then that will be used instead of creating a custom one."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"defa1a9c_1f90e01f","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":74},"in_reply_to":"df71119a_05bbd69a","updated":"2022-05-24 08:45:46.000000000","message":"well if we did that i woudl want to force them to explictly pass CUSTOM_\n\ni want our suport teams to be able to look at the config and see CUSTOM_FANCY_DEVICE and then look at the placemnt RP and see CUSTOM_FANCY_DEVICE inventories\n\ni dont relly want them tohave to knwo that we are prfixing it when we create teh inventory.\n\nthe normallisation was to allow operats that dont care about that to jsut set FANCY_DEVICE\n\nbut i dont really wnat that to be what we recommend.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":165,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":166,"context_line":"  in the scope of this spec."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"  As detailed in the `Modeling PCI devices in Placement`_ section, each"},{"line_number":169,"context_line":"  physical device (PF) will be its own resource provider with inventories of"}],"source_content_type":"text/x-rst","patch_set":8,"id":"6cf5fa7b_eba14cfc","line":166,"updated":"2022-05-23 16:52:47.000000000","message":"Changing the resource class after having the inventories created is also problematic, right? \n\nShould we then propose to warn the operators if they start touching their configs after they opted into Placement PCI tracking  ?","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":165,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":166,"context_line":"  in the scope of this spec."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"  As detailed in the `Modeling PCI devices in Placement`_ section, each"},{"line_number":169,"context_line":"  physical device (PF) will be its own resource provider with inventories of"}],"source_content_type":"text/x-rst","patch_set":8,"id":"34bf9139_0b112fde","line":166,"in_reply_to":"45de295c_5e8a74a0","updated":"2022-05-25 11:49:54.000000000","message":"noted in the spec now","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa13be955231e356b241ef0a33155ac376864294","unresolved":true,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":165,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":166,"context_line":"  in the scope of this spec."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"  As detailed in the `Modeling PCI devices in Placement`_ section, each"},{"line_number":169,"context_line":"  physical device (PF) will be its own resource provider with inventories of"}],"source_content_type":"text/x-rst","patch_set":8,"id":"d4fea4d6_cc689005","line":166,"in_reply_to":"6cf5fa7b_eba14cfc","updated":"2022-05-23 17:26:00.000000000","message":"Good point. I think nova can detect such config changes my matching the PCI address of the device with the name of the placement RPs. If we don\u0027t like depending on the RPs names then we can do an indirection. Use the PCI address to query the UUID of the device from the pci_devices table, and use the UUID to get the PF RP from placement.\n\nThen if the resource being renamed is already allocated then simply refuse to start. If the resource is free then nova can delete the old inventory and report the new inventory to placement to do the rename. \n\nOptionally nova could do a reshape to handle the rename even if the resource is already allocated but I feel that a bit too much complexity.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75eb600a79ff541cee8bbff3a24fb1ab3fc2f763","unresolved":true,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  Initially traits will only be additive, in the future if we need to we can"},{"line_number":165,"context_line":"  allow traits to be removed using a +/- syntax but this is not included"},{"line_number":166,"context_line":"  in the scope of this spec."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"  As detailed in the `Modeling PCI devices in Placement`_ section, each"},{"line_number":169,"context_line":"  physical device (PF) will be its own resource provider with inventories of"}],"source_content_type":"text/x-rst","patch_set":8,"id":"45de295c_5e8a74a0","line":166,"in_reply_to":"d4fea4d6_cc689005","updated":"2022-05-24 08:45:46.000000000","message":"ya i would just block this on agent startup if there are allocations.\n\ni think its ok to change the resouce class if you dont have allocations","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":189,"context_line":"  ``SRIOV_NET_VF``, ``PCI_NETDEV`` and ``VDPA_NETDEV`` classes. This will"},{"line_number":190,"context_line":"  not prevent type-VF and type-PF devices to be consumed via PCI alias, as the"},{"line_number":191,"context_line":"  alias can request these standard resource classes too."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":".. _`PCI passthrough device list`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.passthrough_whitelist"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The new Placement based PCI tracking feature won\u0027t support the ``devname`` tag"}],"source_content_type":"text/x-rst","patch_set":8,"id":"d4ffaaf9_0425e754","line":192,"updated":"2022-05-23 16:52:47.000000000","message":"wfm","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":189,"context_line":"  ``SRIOV_NET_VF``, ``PCI_NETDEV`` and ``VDPA_NETDEV`` classes. This will"},{"line_number":190,"context_line":"  not prevent type-VF and type-PF devices to be consumed via PCI alias, as the"},{"line_number":191,"context_line":"  alias can request these standard resource classes too."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":".. _`PCI passthrough device list`: https://docs.openstack.org/nova/latest/configuration/config.html#pci.passthrough_whitelist"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The new Placement based PCI tracking feature won\u0027t support the ``devname`` tag"}],"source_content_type":"text/x-rst","patch_set":8,"id":"e7b0c968_ed42d33f","line":192,"in_reply_to":"d4ffaaf9_0425e754","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":208,"context_line":"Placement resource provider (RP) with the name"},{"line_number":209,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":210,"context_line":"the same string as the name of the root RP. The pci_address part of the"},{"line_number":211,"context_line":"name will be the full PCI address in the same format of ``DDDD:BB:AA.FF``."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":".. note::"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"586b9a33_220106fd","line":211,"updated":"2022-05-23 16:52:47.000000000","message":"+1 an implementation detail could make sure that we use the same method for normalizing the RP names from the PCI IDs.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":208,"context_line":"Placement resource provider (RP) with the name"},{"line_number":209,"context_line":"``\u003chypervisor_hostname\u003e_\u003cpci_address\u003e``. The hypervisor_hostname prefix will be"},{"line_number":210,"context_line":"the same string as the name of the root RP. The pci_address part of the"},{"line_number":211,"context_line":"name will be the full PCI address in the same format of ``DDDD:BB:AA.FF``."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":".. note::"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9d7023d6_f5f6d3f0","line":211,"in_reply_to":"586b9a33_220106fd","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":265,"context_line":"  capabilities as custom traits in placement. However this is out of scope of"},{"line_number":266,"context_line":"  the current spec. If needed the deployer can add these traits via the"},{"line_number":267,"context_line":"  ``[pci]device_list`` configuration manually."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Reporting inventories from libvirt to Placement"},{"line_number":271,"context_line":"-----------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"c79a9579_dcf90389","line":268,"updated":"2022-05-23 16:52:47.000000000","message":"I have nothing to argue on the Placement modeling.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":265,"context_line":"  capabilities as custom traits in placement. However this is out of scope of"},{"line_number":266,"context_line":"  the current spec. If needed the deployer can add these traits via the"},{"line_number":267,"context_line":"  ``[pci]device_list`` configuration manually."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Reporting inventories from libvirt to Placement"},{"line_number":271,"context_line":"-----------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f23f2e2_566f878c","line":268,"in_reply_to":"c79a9579_dcf90389","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":279,"context_line":"When ``update_provider_tree`` is called during compute service startup (via"},{"line_number":280,"context_line":"init_host) the virt driver will do a reshape of the provider tree to make sure"},{"line_number":281,"context_line":"that existing VMs with PCI allocation will have the corresponding resource"},{"line_number":282,"context_line":"allocation in Placement as well."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":".. note::"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"de446fa8_bda1171b","line":282,"updated":"2022-05-23 16:52:47.000000000","message":"this may be costly if the resource inventories change because the operator changed the resource class names, just sayin\u0027...","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":279,"context_line":"When ``update_provider_tree`` is called during compute service startup (via"},{"line_number":280,"context_line":"init_host) the virt driver will do a reshape of the provider tree to make sure"},{"line_number":281,"context_line":"that existing VMs with PCI allocation will have the corresponding resource"},{"line_number":282,"context_line":"allocation in Placement as well."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":".. note::"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"28117f00_7325f5cd","line":282,"in_reply_to":"124ac7da_5bc5deec","updated":"2022-08-30 15:27:51.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08b265be09dbf417092605aebf7dac81498f722b","unresolved":true,"context_lines":[{"line_number":279,"context_line":"When ``update_provider_tree`` is called during compute service startup (via"},{"line_number":280,"context_line":"init_host) the virt driver will do a reshape of the provider tree to make sure"},{"line_number":281,"context_line":"that existing VMs with PCI allocation will have the corresponding resource"},{"line_number":282,"context_line":"allocation in Placement as well."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":".. note::"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"124ac7da_5bc5deec","line":282,"in_reply_to":"c844de6d_36726b82","updated":"2022-05-25 17:22:31.000000000","message":"yep","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa13be955231e356b241ef0a33155ac376864294","unresolved":true,"context_lines":[{"line_number":279,"context_line":"When ``update_provider_tree`` is called during compute service startup (via"},{"line_number":280,"context_line":"init_host) the virt driver will do a reshape of the provider tree to make sure"},{"line_number":281,"context_line":"that existing VMs with PCI allocation will have the corresponding resource"},{"line_number":282,"context_line":"allocation in Placement as well."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":".. note::"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"c844de6d_36726b82","line":282,"in_reply_to":"de446fa8_bda1171b","updated":"2022-05-23 17:26:00.000000000","message":"We cannot avoid this in a rolling upgrade environment that already has PCI usage. During the rolling upgrade new PCI allocations can be created without having the prefilter enabled therefore without placement allocations. So we need to heal at least until the rolling upgrade is finished and the prefilter is enabled.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":287,"context_line":"  present any more either due to changes in the ``[pci]device_list`` config"},{"line_number":288,"context_line":"  option or due to a physical device removal from the hypervisor. The driver"},{"line_number":289,"context_line":"  needs to modify the VF resource inventory on the PF RP (when a VF is removed)"},{"line_number":290,"context_line":"  or delete the PF RP (if the PF is removed and no children VFs matched)."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"PCI alias configuration"},{"line_number":293,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"a64f63c4_61746931","line":290,"updated":"2022-05-23 16:52:47.000000000","message":"Yeah, that\u0027s my concern : any modification to the config options once we\u0027re settled down with Placement tracking will be a breaking change, as we saw with VGPU bugs (and operators flipping hardware while allocations were created, or changing config).\nI\u0027m OK with letting it free to be changed, but we should loudly explain in our docs this is UNSUPPORTED to change the config if you have allocations against the RPs.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":287,"context_line":"  present any more either due to changes in the ``[pci]device_list`` config"},{"line_number":288,"context_line":"  option or due to a physical device removal from the hypervisor. The driver"},{"line_number":289,"context_line":"  needs to modify the VF resource inventory on the PF RP (when a VF is removed)"},{"line_number":290,"context_line":"  or delete the PF RP (if the PF is removed and no children VFs matched)."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"PCI alias configuration"},{"line_number":293,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"b8db4755_745c14a7","line":290,"in_reply_to":"a64f63c4_61746931","updated":"2022-05-25 11:49:54.000000000","message":"noted.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"44ebb0e6816913421b3c7364c753f650958907fb","unresolved":false,"context_lines":[{"line_number":305,"context_line":"  If both ``resource_class`` and ``vendor_id`` and ``product_id`` fields are"},{"line_number":306,"context_line":"  provided in the alias then Nova will use the ``resource_class`` for the"},{"line_number":307,"context_line":"  Placement query but the ``vendor_id`` and ``product_id`` filtering will"},{"line_number":308,"context_line":"  happen in the ``PciPassthroughFilter``."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":".. note::"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"4b68215f_b6236911","line":308,"updated":"2022-05-23 16:00:46.000000000","message":"I assume this is because we allow wildcarding in the vendor/product ID fields so we\u0027d want additional filtering here? The alternative is to insist that people create a separate \u0027[pci] device\u0027 value (and therefore a separate placement inventory) for each \"unique\" device (unique in the sense that you can group it by alias). Would that be less complex in the long-run?","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c33463e56267fea7be0263d907e88b41a1b3c96f","unresolved":false,"context_lines":[{"line_number":305,"context_line":"  If both ``resource_class`` and ``vendor_id`` and ``product_id`` fields are"},{"line_number":306,"context_line":"  provided in the alias then Nova will use the ``resource_class`` for the"},{"line_number":307,"context_line":"  Placement query but the ``vendor_id`` and ``product_id`` filtering will"},{"line_number":308,"context_line":"  happen in the ``PciPassthroughFilter``."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":".. note::"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"cfd26325_1e0f3d8c","line":308,"in_reply_to":"079d232b_e41519be","updated":"2022-05-23 17:14:37.000000000","message":"i dont think we want to force a unique device list entry for each device since i know that seveal deploypment tools cannot support multi opt string properly.\n\nits a significant issue so long term i woudl prefer if we removed all our usage of multi opt strigns and or move to using yaml files instead of conf file.\n\nnot that ini file do nto support multiopt strings that is part of the conf formant not ini so any tool tht is genering config using ini libs cant actully generate multi opt string properly.\n\nso i explictly dont think we shuld force peopl to have one device entry per RP while we use the current conf format.\n\nso im -1 on that idea bordering on -2\n\nwe supprot regex and glob matches in the adress filed so this is not about wildcading in vendor_id or product id.\n\nthe whitelist entries are typicly not a 1:1 mapping to indiviucal devies. \ni would consider that to be the lest typical use of this filed.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7dd7e60f561bb7f24d95311539efa2c3aed740e","unresolved":false,"context_lines":[{"line_number":305,"context_line":"  If both ``resource_class`` and ``vendor_id`` and ``product_id`` fields are"},{"line_number":306,"context_line":"  provided in the alias then Nova will use the ``resource_class`` for the"},{"line_number":307,"context_line":"  Placement query but the ``vendor_id`` and ``product_id`` filtering will"},{"line_number":308,"context_line":"  happen in the ``PciPassthroughFilter``."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":".. note::"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"079d232b_e41519be","line":308,"in_reply_to":"4b68215f_b6236911","updated":"2022-05-23 16:20:35.000000000","message":"It is here for the case when the deployer use a generic resource class that matches multiple devices in the [pci]device_list config, then in the alias he/she needs more fine grained request. \n\nSure we could simply reject this combination, but right now it is almost free to support.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"44ebb0e6816913421b3c7364c753f650958907fb","unresolved":false,"context_lines":[{"line_number":364,"context_line":"or its children VF devices. The old PCI tracker will continue support this"},{"line_number":365,"context_line":"functionality but as soon as ``[pci]report_in_placement`` is set to True on a"},{"line_number":366,"context_line":"compute that compute will reject configurations that are enabling both the PF"},{"line_number":367,"context_line":"and in children VFs."},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"PCI NUMA affinity"},{"line_number":370,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"d5ad5cd1_32df587b","line":367,"updated":"2022-05-23 16:00:46.000000000","message":"To be clear, for some devices (older Mellanox cards), this would mean you couldn\u0027t use vendor/product ID to whitelist a device. You\u0027d have to use device addresses. Not an issue, just an observation.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7dd7e60f561bb7f24d95311539efa2c3aed740e","unresolved":false,"context_lines":[{"line_number":364,"context_line":"or its children VF devices. The old PCI tracker will continue support this"},{"line_number":365,"context_line":"functionality but as soon as ``[pci]report_in_placement`` is set to True on a"},{"line_number":366,"context_line":"compute that compute will reject configurations that are enabling both the PF"},{"line_number":367,"context_line":"and in children VFs."},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"PCI NUMA affinity"},{"line_number":370,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"d4bd86c1_3ae86941","line":367,"in_reply_to":"d5ad5cd1_32df587b","updated":"2022-05-23 16:20:35.000000000","message":"yepp, true.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":375,"context_line":"to the scheduler about which allocation candidate is valid from affinity"},{"line_number":376,"context_line":"perspective."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"To enable this the allocation candidates will be added to the ``HostState``"},{"line_number":379,"context_line":"object of the filter scheduler. The ``NUMATopologyFilter`` will then need to"},{"line_number":380,"context_line":"pass the allocation candidates to the hardware.py functions which will need to"},{"line_number":381,"context_line":"remove any allocation candidates from that list that do not fulfill the NUMA"},{"line_number":382,"context_line":"requirements. The filter should then pop any invalid allocation candidates"}],"source_content_type":"text/x-rst","patch_set":8,"id":"714d54d5_f411311c","line":379,"range":{"start_line":378,"start_character":0,"end_line":379,"end_character":31},"updated":"2022-05-23 16:52:47.000000000","message":"this sounds OK to me, HostState are not persistent and only generated in memory everytime we schedule.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":375,"context_line":"to the scheduler about which allocation candidate is valid from affinity"},{"line_number":376,"context_line":"perspective."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"To enable this the allocation candidates will be added to the ``HostState``"},{"line_number":379,"context_line":"object of the filter scheduler. The ``NUMATopologyFilter`` will then need to"},{"line_number":380,"context_line":"pass the allocation candidates to the hardware.py functions which will need to"},{"line_number":381,"context_line":"remove any allocation candidates from that list that do not fulfill the NUMA"},{"line_number":382,"context_line":"requirements. The filter should then pop any invalid allocation candidates"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5c698ef6_837e7a38","line":379,"range":{"start_line":378,"start_character":0,"end_line":379,"end_character":31},"in_reply_to":"714d54d5_f411311c","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":387,"context_line":"By extending the ``HostState`` object with the allocation candidate we will"},{"line_number":388,"context_line":"enable the filters to filter not just by the host but optionally by the"},{"line_number":389,"context_line":"allocation candidates of the host without altering the filter API therefore"},{"line_number":390,"context_line":"maintaining compatibility with external filters."},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"PCI tracker"},{"line_number":393,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ea5d7fee_6378d1a8","line":390,"updated":"2022-05-23 16:52:47.000000000","message":"I don\u0027t see any upgrade issue here.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":387,"context_line":"By extending the ``HostState`` object with the allocation candidate we will"},{"line_number":388,"context_line":"enable the filters to filter not just by the host but optionally by the"},{"line_number":389,"context_line":"allocation candidates of the host without altering the filter API therefore"},{"line_number":390,"context_line":"maintaining compatibility with external filters."},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"PCI tracker"},{"line_number":393,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"310530b0_34a65066","line":390,"in_reply_to":"ea5d7fee_6378d1a8","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":400,"context_line":"the device to claim. In the case of ``type-VF`` it will be the address of the"},{"line_number":401,"context_line":"parent device."},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"Both the instance claim and the move claim need to be extended similarly."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"VM lifecycle operations"}],"source_content_type":"text/x-rst","patch_set":8,"id":"46d79bd6_dccc3b26","line":403,"updated":"2022-05-23 16:52:47.000000000","message":"++","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":400,"context_line":"the device to claim. In the case of ``type-VF`` it will be the address of the"},{"line_number":401,"context_line":"parent device."},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"Both the instance claim and the move claim need to be extended similarly."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"VM lifecycle operations"}],"source_content_type":"text/x-rst","patch_set":8,"id":"0e626956_4bec9265","line":403,"in_reply_to":"46d79bd6_dccc3b26","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"Attaching and detaching PCI devices are only supported via Neutron SR-IOV ports"},{"line_number":418,"context_line":"and that is out of the scope of this spec."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":422,"context_line":"-----------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3d260380_5fb5dffd","line":419,"updated":"2022-05-23 16:52:47.000000000","message":"++","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"Attaching and detaching PCI devices are only supported via Neutron SR-IOV ports"},{"line_number":418,"context_line":"and that is out of the scope of this spec."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":422,"context_line":"-----------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"25decd23_e47c6914","line":419,"in_reply_to":"3d260380_5fb5dffd","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"548665631746a6f3a26da4f6ccab270fe2c885ac","unresolved":true,"context_lines":[{"line_number":418,"context_line":"and that is out of the scope of this spec."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":422,"context_line":"-----------------------------------"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"This is out of scope in the current spec. But certain aspects of the problem"}],"source_content_type":"text/x-rst","patch_set":8,"id":"6e22c89b_5709bc9a","line":421,"updated":"2022-05-23 16:52:47.000000000","message":"++","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":418,"context_line":"and that is out of the scope of this spec."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Neutron SR-IOV ports (out of scope)"},{"line_number":422,"context_line":"-----------------------------------"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"This is out of scope in the current spec. But certain aspects of the problem"}],"source_content_type":"text/x-rst","patch_set":8,"id":"488813c3_2ce05f64","line":421,"in_reply_to":"6e22c89b_5709bc9a","updated":"2022-05-25 11:49:54.000000000","message":"Ack","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"44ebb0e6816913421b3c7364c753f650958907fb","unresolved":true,"context_lines":[{"line_number":684,"context_line":""},{"line_number":685,"context_line":"Work Items"},{"line_number":686,"context_line":"----------"},{"line_number":687,"context_line":"* rename PCI ``passthrough_whitelist`` to ``device_list``"},{"line_number":688,"context_line":"* support for adding a resource class and traits to ``device_list``"},{"line_number":689,"context_line":"* introduce ``[pci]report_in_placement``"},{"line_number":690,"context_line":"* reject dependent devices config and ``devname`` config"}],"source_content_type":"text/x-rst","patch_set":8,"id":"506153dc_5d2de658","line":687,"updated":"2022-05-23 16:00:46.000000000","message":"We\u0027re not renaming it, right? We\u0027re adding a new one","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7dd7e60f561bb7f24d95311539efa2c3aed740e","unresolved":true,"context_lines":[{"line_number":684,"context_line":""},{"line_number":685,"context_line":"Work Items"},{"line_number":686,"context_line":"----------"},{"line_number":687,"context_line":"* rename PCI ``passthrough_whitelist`` to ``device_list``"},{"line_number":688,"context_line":"* support for adding a resource class and traits to ``device_list``"},{"line_number":689,"context_line":"* introduce ``[pci]report_in_placement``"},{"line_number":690,"context_line":"* reject dependent devices config and ``devname`` config"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5987e34e_3f658381","line":687,"in_reply_to":"506153dc_5d2de658","updated":"2022-05-23 16:20:35.000000000","message":"I thought we rename it by deprecating the old name and reusing the same opt definition. Why would we want a totally separate config def? That would make things complicated as then both the old and the new options can be independently configured and nova would need to handle (merge?) them. What are the downsides just renaming the opt?","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75eb600a79ff541cee8bbff3a24fb1ab3fc2f763","unresolved":true,"context_lines":[{"line_number":684,"context_line":""},{"line_number":685,"context_line":"Work Items"},{"line_number":686,"context_line":"----------"},{"line_number":687,"context_line":"* rename PCI ``passthrough_whitelist`` to ``device_list``"},{"line_number":688,"context_line":"* support for adding a resource class and traits to ``device_list``"},{"line_number":689,"context_line":"* introduce ``[pci]report_in_placement``"},{"line_number":690,"context_line":"* reject dependent devices config and ``devname`` config"}],"source_content_type":"text/x-rst","patch_set":8,"id":"c996fad9_49ff91e9","line":687,"in_reply_to":"5987e34e_3f658381","updated":"2022-05-24 08:45:46.000000000","message":"no gibi we are proposeing to rename it and the old deprecated name for compat.\n\nits not a standalone value currenlty soince we are not changing the type or parsing rules just adding addtional standard tags to the device_list.\n\nif we go with my conter proposal to use device/devices for the renamed option and add device_list to support the json list formant that woudl be a new option.\n\nbut i would expect use to take teh rename/deprecate option for \nconvreting rename PCI ``passthrough_whitelist`` to ``device``\n\nas we dont realy want nova ot have to care in that case.\n\nthe new behavior is such as rejecing device name is all guarded behind \nreport_in_placement.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3a3a26f7217ade3f49245b689454520818a9a06","unresolved":false,"context_lines":[{"line_number":684,"context_line":""},{"line_number":685,"context_line":"Work Items"},{"line_number":686,"context_line":"----------"},{"line_number":687,"context_line":"* rename PCI ``passthrough_whitelist`` to ``device_list``"},{"line_number":688,"context_line":"* support for adding a resource class and traits to ``device_list``"},{"line_number":689,"context_line":"* introduce ``[pci]report_in_placement``"},{"line_number":690,"context_line":"* reject dependent devices config and ``devname`` config"}],"source_content_type":"text/x-rst","patch_set":8,"id":"83d16221_c5e36e61","line":687,"in_reply_to":"6362c2dc_843e3a9a","updated":"2022-05-25 11:49:54.000000000","message":"Clarified at the top.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1b7cac800fba74bd0de5481b22fb4c3d86c52a2","unresolved":false,"context_lines":[{"line_number":684,"context_line":""},{"line_number":685,"context_line":"Work Items"},{"line_number":686,"context_line":"----------"},{"line_number":687,"context_line":"* rename PCI ``passthrough_whitelist`` to ``device_list``"},{"line_number":688,"context_line":"* support for adding a resource class and traits to ``device_list``"},{"line_number":689,"context_line":"* introduce ``[pci]report_in_placement``"},{"line_number":690,"context_line":"* reject dependent devices config and ``devname`` config"}],"source_content_type":"text/x-rst","patch_set":8,"id":"6362c2dc_843e3a9a","line":687,"in_reply_to":"c996fad9_49ff91e9","updated":"2022-05-25 09:16:03.000000000","message":"Sorry, I misunderstood based on this bit from above:\n\n\u003e The ``[pci]passthrough_whitelist`` config option will be deprecated for eventual removal and replaced with the new ``[pci]device_list`` config option.\n\nWe\u0027re just renaming and extending. Ignore this comment.","commit_id":"2cd2e8e1fbba2c733e5dd6ac57d067af4ade5614"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08b265be09dbf417092605aebf7dac81498f722b","unresolved":true,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The ``resource_class`` tag will be accepted only when the ``physical_network``"},{"line_number":145,"context_line":"tag is not defined and will enable a PCI device to be associated with a custom"},{"line_number":146,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":147,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":148,"context_line":"reported in Placement at this time as Neutron based SR-IOV is out of the"},{"line_number":149,"context_line":"scope of the current spec."}],"source_content_type":"text/x-rst","patch_set":9,"id":"84f3ca59_85e49a74","line":146,"range":{"start_line":146,"start_character":25,"end_line":146,"end_character":34},"updated":"2022-05-25 17:22:31.000000000","message":"nit:device_spec","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The ``resource_class`` tag will be accepted only when the ``physical_network``"},{"line_number":145,"context_line":"tag is not defined and will enable a PCI device to be associated with a custom"},{"line_number":146,"context_line":"resource class. Each PCI whitelist entry may have at most one resource class"},{"line_number":147,"context_line":"associated with it. Devices that have a ``physical_network`` tag will not be"},{"line_number":148,"context_line":"reported in Placement at this time as Neutron based SR-IOV is out of the"},{"line_number":149,"context_line":"scope of the current spec."}],"source_content_type":"text/x-rst","patch_set":9,"id":"367bc913_16d7c505","line":146,"range":{"start_line":146,"start_character":25,"end_line":146,"end_character":34},"in_reply_to":"84f3ca59_85e49a74","updated":"2022-08-30 15:27:51.000000000","message":"Done in a FUP","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08b265be09dbf417092605aebf7dac81498f722b","unresolved":true,"context_lines":[{"line_number":156,"context_line":"names that will be reported for the device RP in Placement."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Nova will normalize and prefix the resource class and trait names with"},{"line_number":159,"context_line":"``CUSTOM_``, if isn\u0027t already prefixed, before creating them in Placement."},{"line_number":160,"context_line":"Nova will first check the provided trait name in os_traits and if it exists"},{"line_number":161,"context_line":"as a standard trait then that will be used instead of creating a custom one."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"4b1ce9fa_f487c607","line":159,"range":{"start_line":159,"start_character":15,"end_line":159,"end_character":21},"updated":"2022-05-25 17:22:31.000000000","message":"nit: it isn\u0027t","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":156,"context_line":"names that will be reported for the device RP in Placement."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Nova will normalize and prefix the resource class and trait names with"},{"line_number":159,"context_line":"``CUSTOM_``, if isn\u0027t already prefixed, before creating them in Placement."},{"line_number":160,"context_line":"Nova will first check the provided trait name in os_traits and if it exists"},{"line_number":161,"context_line":"as a standard trait then that will be used instead of creating a custom one."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"af19096b_5a93669b","line":159,"range":{"start_line":159,"start_character":15,"end_line":159,"end_character":21},"in_reply_to":"4b1ce9fa_f487c607","updated":"2022-08-30 15:27:51.000000000","message":"Done in a FUP","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"77e0b25710a778f96230760e1c3278e019fe0b0f","unresolved":true,"context_lines":[{"line_number":177,"context_line":"  names for different VFs under the same parent PF, this is considered bad"},{"line_number":178,"context_line":"  practice and unnecessary complexity. Such configuration will be rejected."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  If different traits need to be supported on a PF than its children VFs"},{"line_number":181,"context_line":"  then it is suggested to match the PF and its VFs in two separate"},{"line_number":182,"context_line":"  ``device_spec`` entries and differentiate the PF and VF traits by namespacing"},{"line_number":183,"context_line":"  them, e.g.: CUSTOM_PCI_PF_XXX and CUSTOM_PCI_VF_YYY"}],"source_content_type":"text/x-rst","patch_set":9,"id":"971caca7_8b4e0ab2","line":180,"range":{"start_line":180,"start_character":2,"end_line":180,"end_character":72},"updated":"2022-06-18 12:23:00.000000000","message":"We removed dependent device support so both PF and its VFs cannot be configured any more.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":177,"context_line":"  names for different VFs under the same parent PF, this is considered bad"},{"line_number":178,"context_line":"  practice and unnecessary complexity. Such configuration will be rejected."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  If different traits need to be supported on a PF than its children VFs"},{"line_number":181,"context_line":"  then it is suggested to match the PF and its VFs in two separate"},{"line_number":182,"context_line":"  ``device_spec`` entries and differentiate the PF and VF traits by namespacing"},{"line_number":183,"context_line":"  them, e.g.: CUSTOM_PCI_PF_XXX and CUSTOM_PCI_VF_YYY"}],"source_content_type":"text/x-rst","patch_set":9,"id":"daf70bcb_a345e7dd","line":180,"range":{"start_line":180,"start_character":2,"end_line":180,"end_character":72},"in_reply_to":"971caca7_8b4e0ab2","updated":"2022-08-30 15:27:51.000000000","message":"text dropepd in a FUP","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"77e0b25710a778f96230760e1c3278e019fe0b0f","unresolved":true,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":".. note::"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"  Nova will detect if the ``resource_class`` or ``traits`` configuration of"},{"line_number":188,"context_line":"  an already reported device is changed at a nova-compute service restart. If"},{"line_number":189,"context_line":"  the affected device is free the Nova will apply the change in Placement but"},{"line_number":190,"context_line":"  if the device is already allocated then the nova-compute service will refuse"}],"source_content_type":"text/x-rst","patch_set":9,"id":"582e092a_01260354","line":187,"range":{"start_line":187,"start_character":45,"end_line":187,"end_character":58},"updated":"2022-06-18 12:23:00.000000000","message":"Actually we can support trait changes on allocated devs. Also we not allow it as technically provider.yaml can be used to modify traits on existing RPs.\n\nStill changing RCs with allocations should be rejected as that can only happen in a way that an old RC (with allocation) is deleted, but that is rejected by placement.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":".. note::"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"  Nova will detect if the ``resource_class`` or ``traits`` configuration of"},{"line_number":188,"context_line":"  an already reported device is changed at a nova-compute service restart. If"},{"line_number":189,"context_line":"  the affected device is free the Nova will apply the change in Placement but"},{"line_number":190,"context_line":"  if the device is already allocated then the nova-compute service will refuse"}],"source_content_type":"text/x-rst","patch_set":9,"id":"0b1bbb81_51f49992","line":187,"range":{"start_line":187,"start_character":45,"end_line":187,"end_character":58},"in_reply_to":"582e092a_01260354","updated":"2022-08-30 15:27:51.000000000","message":"Done","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"77e0b25710a778f96230760e1c3278e019fe0b0f","unresolved":true,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"  Nova will detect if the ``resource_class`` or ``traits`` configuration of"},{"line_number":188,"context_line":"  an already reported device is changed at a nova-compute service restart. If"},{"line_number":189,"context_line":"  the affected device is free the Nova will apply the change in Placement but"},{"line_number":190,"context_line":"  if the device is already allocated then the nova-compute service will refuse"},{"line_number":191,"context_line":"  to start."},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf735cb5_8ca21908","line":189,"range":{"start_line":189,"start_character":30,"end_line":189,"end_character":33},"updated":"2022-06-18 12:23:00.000000000","message":"nit: then","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"  Nova will detect if the ``resource_class`` or ``traits`` configuration of"},{"line_number":188,"context_line":"  an already reported device is changed at a nova-compute service restart. If"},{"line_number":189,"context_line":"  the affected device is free the Nova will apply the change in Placement but"},{"line_number":190,"context_line":"  if the device is already allocated then the nova-compute service will refuse"},{"line_number":191,"context_line":"  to start."},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"93e87e44_8240d5f9","line":189,"range":{"start_line":189,"start_character":30,"end_line":189,"end_character":33},"in_reply_to":"bf735cb5_8ca21908","updated":"2022-08-30 15:27:51.000000000","message":"Done","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08b265be09dbf417092605aebf7dac81498f722b","unresolved":false,"context_lines":[{"line_number":225,"context_line":"  follow that naming scheme as the libvirt nodedev names are not considered"},{"line_number":226,"context_line":"  stable. Also nova always uses the RP UUID to identify and RP instead of its"},{"line_number":227,"context_line":"  name. So these names are only for troubleshooting purposes."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Each PCI device RP will have an inventory of resource class and traits based"},{"line_number":230,"context_line":"on the ``[pci]device_spec`` entry matching with the given device. If the device"},{"line_number":231,"context_line":"has children devices (VFs) matching with any ``device_spec`` entry then the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"cba554ea_7aaa7f8d","line":228,"updated":"2022-05-25 17:22:31.000000000","message":"+1","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a0696100ddc3947b5eb4f663a224ed5c0e4fdf6b","unresolved":true,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Each PCI device RP will have traits reported according to the ``traits`` tag"},{"line_number":251,"context_line":"of the matching ``device_spec`` entry. Nova might report additional traits on"},{"line_number":252,"context_line":"the device RP automatically for scheduling purposes."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Listing both the parent PF device and any of this children VF devices at the"},{"line_number":255,"context_line":"same time will not be support if ``[pci]report_in_placement`` is enabled. See"}],"source_content_type":"text/x-rst","patch_set":9,"id":"df31fc3f_66fba425","line":252,"updated":"2022-06-21 11:31:26.000000000","message":"There is a trait CUSTOM_NOVA_MANAGED_PCI_DEVICE automatically added now to be able to detect and reject if the reporting was first enabled and then disable later.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Each PCI device RP will have traits reported according to the ``traits`` tag"},{"line_number":251,"context_line":"of the matching ``device_spec`` entry. Nova might report additional traits on"},{"line_number":252,"context_line":"the device RP automatically for scheduling purposes."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Listing both the parent PF device and any of this children VF devices at the"},{"line_number":255,"context_line":"same time will not be support if ``[pci]report_in_placement`` is enabled. See"}],"source_content_type":"text/x-rst","patch_set":9,"id":"d18b9394_bcb04513","line":252,"in_reply_to":"2083643f_43dfb96b","updated":"2022-08-30 15:27:51.000000000","message":"Done","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"95e20197eacb77d18862cd13720da7c8db0c5f1b","unresolved":true,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Each PCI device RP will have traits reported according to the ``traits`` tag"},{"line_number":251,"context_line":"of the matching ``device_spec`` entry. Nova might report additional traits on"},{"line_number":252,"context_line":"the device RP automatically for scheduling purposes."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Listing both the parent PF device and any of this children VF devices at the"},{"line_number":255,"context_line":"same time will not be support if ``[pci]report_in_placement`` is enabled. See"}],"source_content_type":"text/x-rst","patch_set":9,"id":"2083643f_43dfb96b","line":252,"in_reply_to":"df31fc3f_66fba425","updated":"2022-08-10 14:04:54.000000000","message":"We choose to add COMPUTE_MANAGED_PCI_DEVICE standard trait instead","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a0696100ddc3947b5eb4f663a224ed5c0e4fdf6b","unresolved":true,"context_lines":[{"line_number":276,"context_line":"  ``[pci]device_spec`` configuration manually."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"Reporting inventories from libvirt to Placement"},{"line_number":280,"context_line":"-----------------------------------------------"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The resource tracker\u0027s ``update_available_resource`` periodic task calls the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1d519667_efd25534","line":279,"updated":"2022-06-21 11:31:26.000000000","message":"This whole chapter needs to be rewritten. The logic described here is not done in the virt driver. The PciDevTracker already implements a virt driver agnostic resource tracking so the placement reporting is done based on that information during the _update_to_placement call of the resource tracker.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":276,"context_line":"  ``[pci]device_spec`` configuration manually."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"Reporting inventories from libvirt to Placement"},{"line_number":280,"context_line":"-----------------------------------------------"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"The resource tracker\u0027s ``update_available_resource`` periodic task calls the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"b281828e_fd2e292b","line":279,"in_reply_to":"1d519667_efd25534","updated":"2022-08-30 15:27:51.000000000","message":"Done","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6a9bc750f1440ab6e9e09bb5d4f566a9fa8d2d89","unresolved":true,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":".. note::"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"  The compute restart logic needs to handle the case when a device is not"},{"line_number":296,"context_line":"  present any more either due to changes in the ``[pci]device_spec`` config"},{"line_number":297,"context_line":"  option or due to a physical device removal from the hypervisor. The driver"},{"line_number":298,"context_line":"  needs to modify the VF resource inventory on the PF RP (when a VF is removed)"},{"line_number":299,"context_line":"  or delete the PF RP (if the PF is removed and no children VFs matched). Nova"},{"line_number":300,"context_line":"  cannot prevent the removal of a PCI device from the hypervisor while the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"48b1502f_f726a9e3","line":297,"range":{"start_line":295,"start_character":3,"end_line":297,"end_character":65},"updated":"2022-07-28 11:05:40.000000000","message":"To implement this we need to add a trait to each PCI RP so that nova can know which RP represents a removed PCI device.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":".. note::"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"  The compute restart logic needs to handle the case when a device is not"},{"line_number":296,"context_line":"  present any more either due to changes in the ``[pci]device_spec`` config"},{"line_number":297,"context_line":"  option or due to a physical device removal from the hypervisor. The driver"},{"line_number":298,"context_line":"  needs to modify the VF resource inventory on the PF RP (when a VF is removed)"},{"line_number":299,"context_line":"  or delete the PF RP (if the PF is removed and no children VFs matched). Nova"},{"line_number":300,"context_line":"  cannot prevent the removal of a PCI device from the hypervisor while the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"eacdfe03_651c8f73","line":297,"range":{"start_line":295,"start_character":3,"end_line":297,"end_character":65},"in_reply_to":"48b1502f_f726a9e3","updated":"2022-08-30 15:27:51.000000000","message":"Done","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"55ece9a5b96a4dc0e9a6502cd854620e4cb9eb57","unresolved":true,"context_lines":[{"line_number":344,"context_line":"Scheduling"},{"line_number":345,"context_line":"----------"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"A new prefilter will be added to convert ``InstancePCIRequest`` requests into"},{"line_number":348,"context_line":"Placement resource requests. Each PCI request will be its own Placement named"},{"line_number":349,"context_line":"request group. If a PCI request comes from a PCI alias and the alias does not"},{"line_number":350,"context_line":"have a ``resource_class`` associated with it it will be computed using the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"8baa4414_cceb97f9","line":347,"range":{"start_line":347,"start_character":0,"end_line":347,"end_character":15},"updated":"2022-08-22 20:07:46.000000000","message":"Generating RequestGroups via a prefilter will not work for us. The prefilter runs in the scheduler service and even if the request_spec is modified by the prefilter to include the new groups, the conductor will not get back the modified request_spec from the scheduler (or the InstancePCIRequest object). Therefore we cannot really communicate the request group -\u003e RP mapping via the request spec or the pci request. The only way to do this is via the Selection object that returned from the scheduler as that contains the mapping for each selected host and alternates. But for this to work we need to create the request groups in the request spec before the scheduler is called as the conductor will try to copy the mapping to the request group in the request spec after select_destination call returned from the scheduler with the Selection object.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":344,"context_line":"Scheduling"},{"line_number":345,"context_line":"----------"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"A new prefilter will be added to convert ``InstancePCIRequest`` requests into"},{"line_number":348,"context_line":"Placement resource requests. Each PCI request will be its own Placement named"},{"line_number":349,"context_line":"request group. If a PCI request comes from a PCI alias and the alias does not"},{"line_number":350,"context_line":"have a ``resource_class`` associated with it it will be computed using the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"210c83d6_51bef6f0","line":347,"range":{"start_line":347,"start_character":0,"end_line":347,"end_character":15},"in_reply_to":"8baa4414_cceb97f9","updated":"2022-08-30 15:27:51.000000000","message":"Done","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"95e20197eacb77d18862cd13720da7c8db0c5f1b","unresolved":true,"context_lines":[{"line_number":345,"context_line":"----------"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"A new prefilter will be added to convert ``InstancePCIRequest`` requests into"},{"line_number":348,"context_line":"Placement resource requests. Each PCI request will be its own Placement named"},{"line_number":349,"context_line":"request group. If a PCI request comes from a PCI alias and the alias does not"},{"line_number":350,"context_line":"have a ``resource_class`` associated with it it will be computed using the"},{"line_number":351,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"581e85b7_32d97ff5","line":349,"range":{"start_line":348,"start_character":29,"end_line":349,"end_character":14},"updated":"2022-08-10 14:04:54.000000000","message":"We should not do that. A flavor based InstancePCIRequest could ask for more than one device via \u003calias-name:2\u003e flavor extra_spec. Such flavor extra_spec is translated to a single InstancePCIRequest with count\u003d2. If we translate that to a single named RequestGroup(RC\u003d2) then placement will only return candidates where both PCI resource is fulfilled by the same RP. This is obviously incorrect in a situation when the user asks for two PFs via the alias.\n\nSo instead, we have to translate all the InstancePCIRequests (coming from the flavor) into the unnamed (unsuffixed) request group. As that group is can be fulfilled by the whole RP tree.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":345,"context_line":"----------"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"A new prefilter will be added to convert ``InstancePCIRequest`` requests into"},{"line_number":348,"context_line":"Placement resource requests. Each PCI request will be its own Placement named"},{"line_number":349,"context_line":"request group. If a PCI request comes from a PCI alias and the alias does not"},{"line_number":350,"context_line":"have a ``resource_class`` associated with it it will be computed using the"},{"line_number":351,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"a80ea530_89eaddab","line":349,"range":{"start_line":348,"start_character":29,"end_line":349,"end_character":14},"in_reply_to":"22a7fa14_549021f4","updated":"2022-08-30 15:27:51.000000000","message":"Done","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"55ece9a5b96a4dc0e9a6502cd854620e4cb9eb57","unresolved":true,"context_lines":[{"line_number":345,"context_line":"----------"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"A new prefilter will be added to convert ``InstancePCIRequest`` requests into"},{"line_number":348,"context_line":"Placement resource requests. Each PCI request will be its own Placement named"},{"line_number":349,"context_line":"request group. If a PCI request comes from a PCI alias and the alias does not"},{"line_number":350,"context_line":"have a ``resource_class`` associated with it it will be computed using the"},{"line_number":351,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"22a7fa14_549021f4","line":349,"range":{"start_line":348,"start_character":29,"end_line":349,"end_character":14},"in_reply_to":"581e85b7_32d97ff5","updated":"2022-08-22 20:07:46.000000000","message":"... buut the unnamed group will not work because there will be no information in the provider mapping returned from placement which InstancePCIRequest is fulfilled by which RP and therefore we cannot drive the PciPassthroughFilter to select the same RP of the request. Basically to fulfill a complex scheduling we have to match request to PCI pool to RP.\n\nThe latest solution in the implementation series is to map nstancePCIRequest with count\u003d2 to two RequestGroup(RC\u003d1). And connect generate RequestGroup suffixes based on the request_id and a running index to count 1, 2.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"55ece9a5b96a4dc0e9a6502cd854620e4cb9eb57","unresolved":true,"context_lines":[{"line_number":351,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"The prefilter will be disabled by default to enable rolling"},{"line_number":354,"context_line":"upgrades. There will be a new config option ``[scheduler]pci_prefilter`` that"},{"line_number":355,"context_line":"can be used to enable the prefilter. Enabling that prefilter has a list of"},{"line_number":356,"context_line":"prerequisites. See the `Upgrade impact`_ section for the full upgrade"},{"line_number":357,"context_line":"procedure."}],"source_content_type":"text/x-rst","patch_set":9,"id":"efe8eac0_10451bf7","line":354,"range":{"start_line":354,"start_character":46,"end_line":354,"end_character":70},"updated":"2022-08-22 20:07:46.000000000","message":"if this is not a prefilter then we should name this something else. [scheduler]pci_in_placement is the current name I working with.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8c402a5d99a0a72b5dadeaca58a2adaf5d3bd8c","unresolved":false,"context_lines":[{"line_number":351,"context_line":"``vendor_id`` and ``product_id`` ``CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e``."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"The prefilter will be disabled by default to enable rolling"},{"line_number":354,"context_line":"upgrades. There will be a new config option ``[scheduler]pci_prefilter`` that"},{"line_number":355,"context_line":"can be used to enable the prefilter. Enabling that prefilter has a list of"},{"line_number":356,"context_line":"prerequisites. See the `Upgrade impact`_ section for the full upgrade"},{"line_number":357,"context_line":"procedure."}],"source_content_type":"text/x-rst","patch_set":9,"id":"fea1c0ad_9c915c6b","line":354,"range":{"start_line":354,"start_character":46,"end_line":354,"end_character":70},"in_reply_to":"efe8eac0_10451bf7","updated":"2022-08-30 15:27:51.000000000","message":"Done","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08b265be09dbf417092605aebf7dac81498f722b","unresolved":true,"context_lines":[{"line_number":376,"context_line":"functionality but as soon as ``[pci]report_in_placement`` is set to True on a"},{"line_number":377,"context_line":"compute that compute will reject configurations that are enabling both the PF"},{"line_number":378,"context_line":"and in children VFs."},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"PCI NUMA affinity"},{"line_number":381,"context_line":"-----------------"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"6f962644_fba5e12f","line":379,"updated":"2022-05-25 17:22:31.000000000","message":"note we might want a nova status check for this ^ but i think we can leave that out of scope this cycle as its not really needed until we actully want to change the default for reporting in placment.\n\nat that point we should have a nova status check for now its not needed since operators that dont opt-in dont need to do anything on upgrade.","commit_id":"480346c85bfa5e0b0f8cc88bcf5c944b1fa33968"}]}
