)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f2ec9452e11b313930f19f84f4a52edb533180c3","unresolved":true,"context_lines":[{"line_number":14,"context_line":"unlimited number of tenant ID properties to be set on the"},{"line_number":15,"context_line":"aggregate. This update maintains backward compatibility."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Related-to: #1802111"},{"line_number":18,"context_line":"Signed-off-by: Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@industrialdiscipline.com\u003e"},{"line_number":19,"context_line":"Change-Id: Ic87d142647774b62a6af2cc5eb7a3cd66f9afeb7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"56a8b8a9_61f00a83","line":17,"updated":"2023-10-03 14:05:16.000000000","message":"the bug report was closed so honestly, I think we shall just make this a specless blueprint for correctly tracking the fact we\u0027re adding a new thing.","commit_id":"8048ff8a5eadcd6a0682abac822d617c3e474535"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"90e4feb14ea008efad9c045b1d1e04e98aa9f4fe","unresolved":false,"context_lines":[{"line_number":14,"context_line":"unlimited number of tenant ID properties to be set on the"},{"line_number":15,"context_line":"aggregate. This update maintains backward compatibility."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Related-to: #1802111"},{"line_number":18,"context_line":"Signed-off-by: Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@industrialdiscipline.com\u003e"},{"line_number":19,"context_line":"Change-Id: Ic87d142647774b62a6af2cc5eb7a3cd66f9afeb7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"d576de9a_89b7df14","line":17,"in_reply_to":"56a8b8a9_61f00a83","updated":"2024-04-24 14:57:15.000000000","message":"Done","commit_id":"8048ff8a5eadcd6a0682abac822d617c3e474535"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f2ec9452e11b313930f19f84f4a52edb533180c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1a4d31b4_e479be37","updated":"2023-10-03 14:05:16.000000000","message":"mostly paperwork concerns, I would be in favor of tracking this as a blueprint (specless) rather than as a related-bug fix.","commit_id":"8048ff8a5eadcd6a0682abac822d617c3e474535"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cfb31d068d2e12af154c1559d2d4ccb071b9c816","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9d680b32_ef6f9311","updated":"2023-09-28 08:38:41.000000000","message":"recheck","commit_id":"8048ff8a5eadcd6a0682abac822d617c3e474535"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7f75d69fb2a1ceff9fc04f6ab4a80e545dbb3985","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8a3ef15b_493f6f2a","updated":"2023-09-27 12:42:41.000000000","message":"recheck POST_FAILURE","commit_id":"8048ff8a5eadcd6a0682abac822d617c3e474535"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e82cde81b93488006cd46e08a89cd1ed7732cd11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d9d32e99_c80e5930","updated":"2023-10-09 10:57:35.000000000","message":"recheck POST_FAILURE","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"fe6a210524a0ee8c3374110b4390d03822e01f17","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"40aaffea_10a90832","updated":"2023-12-05 15:17:34.000000000","message":"Thank you Sean let see if we can accept it for the next meeting so","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2bb6dc1fe2dd388680fab6f7274a2c7ba71befbf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b85d9a02_e0249636","updated":"2023-11-20 14:26:26.000000000","message":"im -1 on this in general as i think we should be removing this not extending it\nyou can already do this i belive with the placemetn version so if we were to do this i would like to see a spec or justifaation as to why this cant be doen useing the placmenet version","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d867b76db795beb47f2ce748cff990926d967c8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b0dd7b5c_4c2c8440","in_reply_to":"30a45818_672bfde5","updated":"2023-11-28 10:11:59.000000000","message":"Honestly, even if we want to use Placement prefilters, this change is just simple for accepting to do a few feature for the already existing scheduler filter.\n\nI don\u0027t see why we should say \u0027nay\u0027 to it just because of Placement. Operators could just either use it if they want, that\u0027s it.","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75c169e2812d6d1d241f7219ef9817c2a5c6bc21","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"741fcca5_bbfafa59","in_reply_to":"50a8eb23_3d8f1f86","updated":"2023-11-27 17:40:43.000000000","message":"ya i chated to sahid about this on irc\n\nso my concern basically is this since placment is prefiltering the host before we get to the schduler and the limit of allcoation candiate can be small, placemnt may not provide any candiates that fullfil the request.\n\nso to do this in the post filter you need to ensure the candiate limit is high enough to have a reasonable probaliy of finding a host. so if we add this functionaltiy in the filter we need to document that carfully.\n\n\nto your question the only way i can think of doing this today with placement is somethign like this\n\nask nova for all host aggreate uuid with a tenatn metadata key !\u003d too the current tenant.\nadd all those IDs to a member_of\u003d!in:aggreate_uuid,aggreate_2_uuid\n\nhttps://docs.openstack.org/api-ref/placement/#list-allocation-candidates\n\nthe \"not in\" fuctionality was added in  1.21\n\n\nthat will exlude only the host in an aggreate that have a tenant restriction that does not match the currrnet tenant.\n\nthe current prefilter does not do that today but it could be modifed to do that if we wanted too possible behind a config option.\n\nthe only concern i have with that approch is hitting the url lenght limit.\nwithout doign this in hearder or the body i dont know how to adress that.\nboth hearder and body based request would also need a new placment api microversion","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4799b2fa160706604de3c1a069c0571232e45abf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"30a45818_672bfde5","in_reply_to":"741fcca5_bbfafa59","updated":"2023-11-27 17:49:49.000000000","message":"Right, so that seems like it won\u0027t scale reasonably. If I have a ton of aggregates, each request will put all the aggregates except the one I own into the request, and the SQL query on the placement side. It will work, but it seems very inefficient. Compared to the alternative of a very small post filter that can do it very efficiently, I guess I don\u0027t see that being a strong argument for going the placement-only route.","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"90e4feb14ea008efad9c045b1d1e04e98aa9f4fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b1875694_192830af","in_reply_to":"afb0257d_eb7d965d","updated":"2024-04-24 14:57:15.000000000","message":"Done","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3b441644ad3647e124891618c5edd10990b435e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c9d996cb_3ef085ee","in_reply_to":"b0dd7b5c_4c2c8440","updated":"2023-12-05 14:57:38.000000000","message":"my main issue is jsut that we didnt intent that both the postfilter and prefilter be used at the same time.\n\nthe post filter is broken for some use cases (reducing the alloction candidate limit for faster schduilng) and the prefilter does not support the use case that Sahid wants to enable.\n\nso we are forcing operators to choose between performance and functionality.\ni would prefer if we ketp parity between both implementations rather than diverging but i guess we can just offer this tradeoff.\n\nas i said if we document the limitation of the post filter and how it interacts with placment when you reduce the allocation candate limit im ok to proceed with this implemenation.","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4c94c9b5a7ba54e4c3cf6a2c369087951f96d680","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ffa79480_1fa025ae","in_reply_to":"b85d9a02_e0249636","updated":"2023-11-20 15:35:46.000000000","message":"The current placement does not address the same behavior, and the filter is not marked as deprecated.","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08f6f71c5c2d0db7a69b0783098e2a39c6171e4d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"afb0257d_eb7d965d","in_reply_to":"b97221e4_27a31993","updated":"2024-01-11 16:02:37.000000000","message":"the edge case you can do today with the prefilter is \n\nallocate a aggrated to a tenenet for there exluscive use and allow the tenant to boot on host that are not allocated this way to anohter tenant","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"a15e8192e2155e5191fe89531e66bb549dd7fa96","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cd0f849b_6ca994fc","in_reply_to":"c9d996cb_3ef085ee","updated":"2024-01-11 10:32:12.000000000","message":"So for me using both postfilter and prefilter looks like enabling quite important usecase, which is being able to have a really isolated aggregate for tenant, without need to add rest of hosts to some other aggregate.\n\nAt the moment if only pre-filter is being used, it allows all tenants not being mentioned in aggregate to create instances on this aggregate.\n\nIf only post-filter is used, it allows tenant mentioned in aggregate to spawn anywhere he wants (if rest computes are not part of other aggregate).\n\nSo the only way to make tenant to have resources on the specific aggregate that nobody else can join - use both pre and post filters (while keeping flexibility for rest).","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f273b46e1a6e8e069eecf27d99f1e274218860c7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b97221e4_27a31993","in_reply_to":"cba01c9b_0cb3f79b","updated":"2024-01-11 16:00:52.000000000","message":"the behaivor of the pre-filter is configurable.\n\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#scheduler.placement_aggregate_required_for_tenants\n\n\"\"\"\n\nplacement_aggregate_required_for_tenants¶\n\n    Type:\n\n        boolean\n    Default:\n\n        False\n\n    Require a placement aggregate association for all tenants.\n\n    This setting, when limit_tenants_to_placement_aggregate\u003dTrue, will control whether or not a tenant with no aggregate affinity will be allowed to schedule to any available node. If aggregates are used to limit some tenants but not all, then this should be False. If all tenants should be confined via aggregate, then this should be True to prevent them from receiving unrestricted scheduling to any available node.\n\n    Possible values:\n\n        A boolean value.\n\n    Related options:\n\n        [scheduler] placement_aggregate_required_for_tenants\n\n\n\"\"\"\n\nso placement_aggregate_required_for_tenants\u003dtrue and limit_tenants_to_placement_aggregate\u003dTrue\n\nwill prevent tenant not listed in an aggreate form booting on those hosts.\n\nbut it will also prevent them form booting on hosts that dont have any tenant assocated with them.","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e8840e047d5615b2f1ad6edf74760d89ca06aa1b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cba01c9b_0cb3f79b","in_reply_to":"cd0f849b_6ca994fc","updated":"2024-01-11 13:18:53.000000000","message":"However, I do agree here, that there must be ability to preserve current behaviour (ie only post or only pre filter) as well.\n\nSo I do agree with concerns above about the patch, that while it implements very valid usecase, it\u0027s important not to break already existing logic ppl rely on.","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b2e9d82b9120174f33a1ac3aab61d4f66c556f34","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"50a8eb23_3d8f1f86","in_reply_to":"ffa79480_1fa025ae","updated":"2023-11-27 15:25:54.000000000","message":"Sean, how would you do this with placement? AFAIK, we can only ask placement for candidates in a set of aggregates. We can\u0027t say \"or any others\" right? I\u0027m not sure if we can say \"not any of $these\" but if we did, we\u0027d have to provide a list of *all* aggregates they\u0027re not specifically disallowed from.","commit_id":"f46b0e109575df942543856b5c0b1a5d61f19e35"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a198c9cbe6807b2e6a2955bd40357af7853d5e16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bbe7f950_2d167c7c","updated":"2024-01-15 16:46:23.000000000","message":"I\u0027m not sure that I was able to follow all your discussions. Please let me know if anything else is needed I will do my best to fix it.","commit_id":"06264d905d39c742ce7d8dcf7f886c17b33f9535"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0f2f60299410a803460acec63a6d3540b28eab13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4b97a8a7_5aa00d86","updated":"2024-05-23 12:19:36.000000000","message":"I think we should be accepting this change as the blueprint was approved.\nEven if folks think that given pre-filters already support it we shouldn\u0027t provide this, well, then please understand that the usecase was understood why we should still modify this filter.\nI haven\u0027t also found any problem within the change, so +2 here.","commit_id":"3cd26b0a084d86201c9b07ac62aa72962b3a5c2f"}],"nova/scheduler/filters/aggregate_multitenancy_isolation.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"49eb0adfe944d60875ecb69928a146959d0a0872","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        tenant(s). A host can be in different aggregates."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        If a host doesn\u0027t belong to an aggregate with the metadata key"},{"line_number":39,"context_line":"        prefixed with \"filter_tenant_id\" it can create instances from all"},{"line_number":40,"context_line":"        tenants."},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        tenant_id \u003d spec_obj.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"68ae77da_5f69a5f7","line":39,"updated":"2023-10-10 17:36:23.000000000","message":"The placement-based request filter already does this. I remember this being a concern that CERN had about the placement-based filter when I wrote it. However, because it does, it\u0027s more flexible *and* should be much faster than this filter-based approach.\n\nWhy not just use that instead of this filter?","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8acda64428c8ef69ff87b7f697841f10db292a90","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        tenant(s). A host can be in different aggregates."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        If a host doesn\u0027t belong to an aggregate with the metadata key"},{"line_number":39,"context_line":"        prefixed with \"filter_tenant_id\" it can create instances from all"},{"line_number":40,"context_line":"        tenants."},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        tenant_id \u003d spec_obj.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"ade0775c_21264754","line":39,"in_reply_to":"68ae77da_5f69a5f7","updated":"2023-10-19 16:26:52.000000000","message":"The placement filter and the scheduler filter do not use the exact same behavior, which is why we have decided to use the scheduler filter.\n\nWith the placement based request filter, a tenant specified under the filter_tenant_id property will only be allowed to schedule instances on that particular aggregate.\n\nIn contrast, with the scheduler filter, a tenant under the filter_tenant_id property is allowed to schedule instances not just on the given aggregate, but may also schedule instances on other aggregates. This is the behavior we require.\n\nWe don\u0027t want to restrict tenants to a specific aggregate; We want them to have the option to use that aggregate. I hope that makes more sense now. I can update the commit message to clarify motivations of the change.","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab2a720f4449c2013fb5842d916d4c624ae96bc2","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        tenant(s). A host can be in different aggregates."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        If a host doesn\u0027t belong to an aggregate with the metadata key"},{"line_number":39,"context_line":"        prefixed with \"filter_tenant_id\" it can create instances from all"},{"line_number":40,"context_line":"        tenants."},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        tenant_id \u003d spec_obj.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"c8b2cacb_37993dc3","line":39,"in_reply_to":"ade0775c_21264754","updated":"2023-10-31 14:27:27.000000000","message":"Ack, I see from reading the code, but I think your explanation above doesn\u0027t quite make it clear. I\u0027d suggest:\n\n\"The filter keeps non-specified tenants out of an aggregate that has restrictions, but allows anyone into unrestricted aggregates\"\n\nas the explanation. It\u0027s not really required for this change, but I think it will help people understand why you\u0027re modifying this (perceived to be legacy) filter.","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b6f5a7d6cd19f5ec71a344611147996dc589afa7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        tenant(s). A host can be in different aggregates."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        If a host doesn\u0027t belong to an aggregate with the metadata key"},{"line_number":39,"context_line":"        prefixed with \"filter_tenant_id\" it can create instances from all"},{"line_number":40,"context_line":"        tenants."},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        tenant_id \u003d spec_obj.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"8d939d95_7966b753","line":39,"in_reply_to":"c8b2cacb_37993dc3","updated":"2023-11-07 09:12:49.000000000","message":"Done","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab2a720f4449c2013fb5842d916d4c624ae96bc2","unresolved":true,"context_lines":[{"line_number":47,"context_line":"            configured_tenant_ids \u003d []"},{"line_number":48,"context_line":"            for name, values in metadata.items():"},{"line_number":49,"context_line":"                if name.startswith(\"filter_tenant_id\"):"},{"line_number":50,"context_line":"                    configured_tenant_ids +\u003d values"},{"line_number":51,"context_line":"            if configured_tenant_ids:"},{"line_number":52,"context_line":"                if tenant_id not in configured_tenant_ids:"},{"line_number":53,"context_line":"                    LOG.debug(\"%s fails tenant id on aggregate\", host_state)"}],"source_content_type":"text/x-python","patch_set":4,"id":"cc5bf46e_7d896b52","line":50,"updated":"2023-10-31 14:27:27.000000000","message":"This is a set, why not use a set to collect and set math? AFAIK you could end up with a much bigger list here than you need.","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0f2f60299410a803460acec63a6d3540b28eab13","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            configured_tenant_ids \u003d []"},{"line_number":48,"context_line":"            for name, values in metadata.items():"},{"line_number":49,"context_line":"                if name.startswith(\"filter_tenant_id\"):"},{"line_number":50,"context_line":"                    configured_tenant_ids +\u003d values"},{"line_number":51,"context_line":"            if configured_tenant_ids:"},{"line_number":52,"context_line":"                if tenant_id not in configured_tenant_ids:"},{"line_number":53,"context_line":"                    LOG.debug(\"%s fails tenant id on aggregate\", host_state)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9225a39e_92c3af93","line":50,"in_reply_to":"c64efcea_88fb56a4","updated":"2024-05-23 12:19:36.000000000","message":"Done","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b6f5a7d6cd19f5ec71a344611147996dc589afa7","unresolved":true,"context_lines":[{"line_number":47,"context_line":"            configured_tenant_ids \u003d []"},{"line_number":48,"context_line":"            for name, values in metadata.items():"},{"line_number":49,"context_line":"                if name.startswith(\"filter_tenant_id\"):"},{"line_number":50,"context_line":"                    configured_tenant_ids +\u003d values"},{"line_number":51,"context_line":"            if configured_tenant_ids:"},{"line_number":52,"context_line":"                if tenant_id not in configured_tenant_ids:"},{"line_number":53,"context_line":"                    LOG.debug(\"%s fails tenant id on aggregate\", host_state)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c64efcea_88fb56a4","line":50,"in_reply_to":"cc5bf46e_7d896b52","updated":"2023-11-07 09:12:49.000000000","message":"Is that what you are looking for?","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab2a720f4449c2013fb5842d916d4c624ae96bc2","unresolved":true,"context_lines":[{"line_number":48,"context_line":"            for name, values in metadata.items():"},{"line_number":49,"context_line":"                if name.startswith(\"filter_tenant_id\"):"},{"line_number":50,"context_line":"                    configured_tenant_ids +\u003d values"},{"line_number":51,"context_line":"            if configured_tenant_ids:"},{"line_number":52,"context_line":"                if tenant_id not in configured_tenant_ids:"},{"line_number":53,"context_line":"                    LOG.debug(\"%s fails tenant id on aggregate\", host_state)"},{"line_number":54,"context_line":"                    return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"f5450609_a23c8912","line":51,"updated":"2023-10-31 14:27:27.000000000","message":"FYI for other reviewers: I thought this was actually changing the behavior from \"string in string\" to \"string in list of strings\" which would have broken people using multiple tenant ids in a single key. However the utils function we call above is collating the data and splits by comma such that this s actually an iterable.","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"90e4feb14ea008efad9c045b1d1e04e98aa9f4fe","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            for name, values in metadata.items():"},{"line_number":49,"context_line":"                if name.startswith(\"filter_tenant_id\"):"},{"line_number":50,"context_line":"                    configured_tenant_ids +\u003d values"},{"line_number":51,"context_line":"            if configured_tenant_ids:"},{"line_number":52,"context_line":"                if tenant_id not in configured_tenant_ids:"},{"line_number":53,"context_line":"                    LOG.debug(\"%s fails tenant id on aggregate\", host_state)"},{"line_number":54,"context_line":"                    return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"24511277_aede60ea","line":51,"in_reply_to":"f5450609_a23c8912","updated":"2024-04-24 14:57:15.000000000","message":"Done","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"}],"releasenotes/notes/remove-filter-tenant-id-limitation-7aae698b02ec3bc2.yaml":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f2ec9452e11b313930f19f84f4a52edb533180c3","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release includes a change to the"},{"line_number":5,"context_line":"    `AggregateMultitenancyIsolation` scheduler filter which now"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"fde025ae_d9b59c33","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":5},"updated":"2023-10-03 14:05:16.000000000","message":"if you decide that\u0027s a bugfix, you shall tell which bug report it\u0027s fixing below.","commit_id":"8048ff8a5eadcd6a0682abac822d617c3e474535"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b6f5a7d6cd19f5ec71a344611147996dc589afa7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release includes a change to the"},{"line_number":5,"context_line":"    `AggregateMultitenancyIsolation` scheduler filter which now"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"2fc5e4f9_a6bb0f43","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":5},"in_reply_to":"add894c7_cf45e337","updated":"2023-11-07 09:12:49.000000000","message":"Done","commit_id":"8048ff8a5eadcd6a0682abac822d617c3e474535"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab2a720f4449c2013fb5842d916d4c624ae96bc2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release includes a change to the"},{"line_number":5,"context_line":"    `AggregateMultitenancyIsolation` scheduler filter which now"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"add894c7_cf45e337","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":5},"in_reply_to":"fde025ae_d9b59c33","updated":"2023-10-31 14:27:27.000000000","message":"This is not a bugfix, IMHO it\u0027s all feature.","commit_id":"8048ff8a5eadcd6a0682abac822d617c3e474535"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab2a720f4449c2013fb5842d916d4c624ae96bc2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release includes a change to the"},{"line_number":5,"context_line":"    `AggregateMultitenancyIsolation` scheduler filter which now"},{"line_number":6,"context_line":"    removes the limit of tenant filtering based on the aggregate"},{"line_number":7,"context_line":"    property `filter_tenant_id`."},{"line_number":8,"context_line":"    Previously, there was a limitation on the number of tenants that"},{"line_number":9,"context_line":"    could be filtered using the `filter_tenant_id` aggregate"},{"line_number":10,"context_line":"    property. This constraint has now been removed. You can use"},{"line_number":11,"context_line":"    `filter_tenant_id` as a suffix to set an infinite number of"},{"line_number":12,"context_line":"    properties for tenant IDs on the aggregate."},{"line_number":13,"context_line":"    This change has been implemented in a manner that preserves"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"f46ac818_4fa27bd2","line":10,"range":{"start_line":4,"start_character":4,"end_line":10,"end_character":51},"updated":"2023-10-31 14:27:27.000000000","message":"This is too verbose and says the same thing multiple times. Suggest:\n\n\"This release removes the limit of the number of tenants that can be specified for an aggregate and honored by the `AggregateMultitenancyIsolation` filter. It now respects multiple keys prefixed by `filter_tenant_id` like the request filter implementation.","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b6f5a7d6cd19f5ec71a344611147996dc589afa7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release includes a change to the"},{"line_number":5,"context_line":"    `AggregateMultitenancyIsolation` scheduler filter which now"},{"line_number":6,"context_line":"    removes the limit of tenant filtering based on the aggregate"},{"line_number":7,"context_line":"    property `filter_tenant_id`."},{"line_number":8,"context_line":"    Previously, there was a limitation on the number of tenants that"},{"line_number":9,"context_line":"    could be filtered using the `filter_tenant_id` aggregate"},{"line_number":10,"context_line":"    property. This constraint has now been removed. You can use"},{"line_number":11,"context_line":"    `filter_tenant_id` as a suffix to set an infinite number of"},{"line_number":12,"context_line":"    properties for tenant IDs on the aggregate."},{"line_number":13,"context_line":"    This change has been implemented in a manner that preserves"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"6fcd0cd3_52046e64","line":10,"range":{"start_line":4,"start_character":4,"end_line":10,"end_character":51},"in_reply_to":"f46ac818_4fa27bd2","updated":"2023-11-07 09:12:49.000000000","message":"Done","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab2a720f4449c2013fb5842d916d4c624ae96bc2","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    Previously, there was a limitation on the number of tenants that"},{"line_number":9,"context_line":"    could be filtered using the `filter_tenant_id` aggregate"},{"line_number":10,"context_line":"    property. This constraint has now been removed. You can use"},{"line_number":11,"context_line":"    `filter_tenant_id` as a suffix to set an infinite number of"},{"line_number":12,"context_line":"    properties for tenant IDs on the aggregate."},{"line_number":13,"context_line":"    This change has been implemented in a manner that preserves"},{"line_number":14,"context_line":"    backward compatibility. Existing configurations using"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9d1b129a_1879d4b3","line":11,"range":{"start_line":11,"start_character":28,"end_line":11,"end_character":34},"updated":"2023-10-31 14:27:27.000000000","message":"It\u0027s a prefix not a suffix.","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b6f5a7d6cd19f5ec71a344611147996dc589afa7","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    Previously, there was a limitation on the number of tenants that"},{"line_number":9,"context_line":"    could be filtered using the `filter_tenant_id` aggregate"},{"line_number":10,"context_line":"    property. This constraint has now been removed. You can use"},{"line_number":11,"context_line":"    `filter_tenant_id` as a suffix to set an infinite number of"},{"line_number":12,"context_line":"    properties for tenant IDs on the aggregate."},{"line_number":13,"context_line":"    This change has been implemented in a manner that preserves"},{"line_number":14,"context_line":"    backward compatibility. Existing configurations using"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"d93ee338_81bb45f1","line":11,"range":{"start_line":11,"start_character":28,"end_line":11,"end_character":34},"in_reply_to":"9d1b129a_1879d4b3","updated":"2023-11-07 09:12:49.000000000","message":"Done","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab2a720f4449c2013fb5842d916d4c624ae96bc2","unresolved":true,"context_lines":[{"line_number":12,"context_line":"    properties for tenant IDs on the aggregate."},{"line_number":13,"context_line":"    This change has been implemented in a manner that preserves"},{"line_number":14,"context_line":"    backward compatibility. Existing configurations using"},{"line_number":15,"context_line":"    `filter_tenant_id` will continue to function as expected."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"91bec86c_74493151","line":15,"updated":"2023-10-31 14:27:27.000000000","message":"Perhaps mention that it just mirrors the request filter behavior?","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b6f5a7d6cd19f5ec71a344611147996dc589afa7","unresolved":true,"context_lines":[{"line_number":12,"context_line":"    properties for tenant IDs on the aggregate."},{"line_number":13,"context_line":"    This change has been implemented in a manner that preserves"},{"line_number":14,"context_line":"    backward compatibility. Existing configurations using"},{"line_number":15,"context_line":"    `filter_tenant_id` will continue to function as expected."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"dde6a00c_e15e6a8e","line":15,"in_reply_to":"91bec86c_74493151","updated":"2023-11-07 09:12:49.000000000","message":"I was not sure where you want me to put that, please let me know and I will update?","commit_id":"9316e7faabfe015da8abb84464edc6045df34491"}]}
