)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"24b4b51dda2cfa211b36b33fec2552f67c0b4c6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"08c11e13_9271b1dd","updated":"2021-11-18 07:18:31.000000000","message":"For users to be aware of the default qos policy inherited from external network, seems forget to add the shim extension to this?","commit_id":"50514d1a87346eab4d4dc23100eca626124f6110"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5f907a0e6b703b9c947e7ad2c7016e201011c866","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a7471b4b_557a53ae","updated":"2021-11-18 09:25:18.000000000","message":"I need to bump the n-lib version to include \"qos-fip-network-policy\" [1]\n\n[1]https://review.opendev.org/c/openstack/neutron-lib/+/817936","commit_id":"50514d1a87346eab4d4dc23100eca626124f6110"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5f907a0e6b703b9c947e7ad2c7016e201011c866","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fac0d7a0_e90f7b2c","in_reply_to":"08c11e13_9271b1dd","updated":"2021-11-18 09:25:18.000000000","message":"Right, we need to inform to the user. I\u0027m going to bump the n-lib to include [1].\n\nAlong with this change, I\u0027m going to push, on top of it, another with an upgrade check. Anyone upgrading to Y+, will have a warning message in the deployment has FIPs and the external networks hosting the FIPs have QoS policies.\n\n[1]https://review.opendev.org/c/openstack/neutron-lib/+/817936","commit_id":"50514d1a87346eab4d4dc23100eca626124f6110"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"957093a40ff201ee62dbc06f4ed5894efb4ce63f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f967a8db_7b52065d","in_reply_to":"a7471b4b_557a53ae","updated":"2021-11-18 11:30:51.000000000","message":"Actually no, this patch does not change anything in the L3 code (as commented in the commit message). This implementation will be added in future patches.","commit_id":"50514d1a87346eab4d4dc23100eca626124f6110"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"0e1d826a79f45b132ba0222fa822959a2da182b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"feb74251_4a52fc60","in_reply_to":"fac0d7a0_e90f7b2c","updated":"2021-11-18 12:30:38.000000000","message":"I mean the same work of this https://review.opendev.org/c/openstack/neutron/+/693244/4/neutron/extensions/qos_port_network_policy.py","commit_id":"50514d1a87346eab4d4dc23100eca626124f6110"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1f634d036cac0c45f02b9579349e9dcd7e3bc322","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"55d5a02c_eec2fb6f","in_reply_to":"feb74251_4a52fc60","updated":"2021-11-18 13:41:44.000000000","message":"Right. I\u0027ll add this once I start using the new fip network qos in the L3 agents.\n\nThis patch is only for the models.\n\nHowever, I think it\u0027s worth to add the extension in this patch. The next ones, implementing the code in OVS and OVN, will have the extension available.","commit_id":"50514d1a87346eab4d4dc23100eca626124f6110"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"af8417e2bfb7a482caa3281bb37a8278db702d7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"987e903f_2887600c","updated":"2021-11-22 07:03:12.000000000","message":"recheck","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5246f5c96ec39a64f1c24aac262267657807e9b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0c4d9fdb_37096495","updated":"2021-11-25 09:09:37.000000000","message":"recheck","commit_id":"42cfa055c278b1daa2c486a277e71c674836fb51"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"6b14fa2d80a40d8e606998b01899d4ebc58024fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3614aeef_9bb5d437","updated":"2021-12-07 06:10:52.000000000","message":"recheck","commit_id":"42cfa055c278b1daa2c486a277e71c674836fb51"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5f7ae105c24e9a299e111e9a3c4e1b23ea163793","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"52b8f72b_8abd532f","updated":"2021-11-27 10:32:06.000000000","message":"recheck","commit_id":"42cfa055c278b1daa2c486a277e71c674836fb51"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b87026e9da499e177a453761988d5012ad2545f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d6e88fce_4313772d","updated":"2021-12-02 13:18:49.000000000","message":"recheck","commit_id":"42cfa055c278b1daa2c486a277e71c674836fb51"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"50c39e6d64347343d24b8725e4eac42689b31ab1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f230500c_d91bd763","updated":"2021-11-24 12:35:45.000000000","message":"recheck","commit_id":"42cfa055c278b1daa2c486a277e71c674836fb51"}],"neutron/db/qos/models.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5acc8c3572f984f306459730a17ed15d81c57683","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                     \u0027FloatingIP.floating_network_id\u0027),"},{"line_number":68,"context_line":"        foreign_keys\u003dnetwork_id,"},{"line_number":69,"context_line":"        backref\u003dsa.orm.backref(\u0027qos_network_policy_binding\u0027, uselist\u003dFalse,"},{"line_number":70,"context_line":"                               lazy\u003d\u0027joined\u0027),"},{"line_number":71,"context_line":"        sync_backref\u003dFalse, viewonly\u003dTrue)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"d5008d59_d9393e7e","line":70,"range":{"start_line":70,"start_character":37,"end_line":70,"end_character":43},"updated":"2021-11-19 07:38:09.000000000","message":"why not subquery?","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"af8417e2bfb7a482caa3281bb37a8278db702d7f","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                     \u0027FloatingIP.floating_network_id\u0027),"},{"line_number":68,"context_line":"        foreign_keys\u003dnetwork_id,"},{"line_number":69,"context_line":"        backref\u003dsa.orm.backref(\u0027qos_network_policy_binding\u0027, uselist\u003dFalse,"},{"line_number":70,"context_line":"                               lazy\u003d\u0027joined\u0027),"},{"line_number":71,"context_line":"        sync_backref\u003dFalse, viewonly\u003dTrue)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ab7a003_7f7ad553","line":70,"range":{"start_line":70,"start_character":37,"end_line":70,"end_character":43},"in_reply_to":"69b70501_199afd24","updated":"2021-11-22 07:03:12.000000000","message":"makes sense to me","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"dc86ba8d7bff4cb1adc41138bf69f1678af3f04a","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                     \u0027FloatingIP.floating_network_id\u0027),"},{"line_number":68,"context_line":"        foreign_keys\u003dnetwork_id,"},{"line_number":69,"context_line":"        backref\u003dsa.orm.backref(\u0027qos_network_policy_binding\u0027, uselist\u003dFalse,"},{"line_number":70,"context_line":"                               lazy\u003d\u0027joined\u0027),"},{"line_number":71,"context_line":"        sync_backref\u003dFalse, viewonly\u003dTrue)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ffbfd3ec_580dd74e","line":70,"range":{"start_line":70,"start_character":37,"end_line":70,"end_character":43},"in_reply_to":"986b626c_bb18a3ca","updated":"2021-11-19 09:29:55.000000000","message":"AFAIK \u0027subquery\u0027 also eagerly loads, just for the whole result set at once. It\u0027s efficient for list requests (like when getting all FIPs for a router). \u0027joined\u0027 issues additional query for each object in the list, thus gives (N-1) more queries comparing to \u0027subquery\u0027.","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9b256df013c7bdd1b60aa5f0e3f7b910dcab06d8","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                     \u0027FloatingIP.floating_network_id\u0027),"},{"line_number":68,"context_line":"        foreign_keys\u003dnetwork_id,"},{"line_number":69,"context_line":"        backref\u003dsa.orm.backref(\u0027qos_network_policy_binding\u0027, uselist\u003dFalse,"},{"line_number":70,"context_line":"                               lazy\u003d\u0027joined\u0027),"},{"line_number":71,"context_line":"        sync_backref\u003dFalse, viewonly\u003dTrue)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"986b626c_bb18a3ca","line":70,"range":{"start_line":70,"start_character":37,"end_line":70,"end_character":43},"in_reply_to":"d5008d59_d9393e7e","updated":"2021-11-19 08:24:40.000000000","message":"\"subquery\" is efficient when this parameter is not always used. When needed, we\u0027ll command a new SQL query to the DB. However this parameter is always used when the FIP OVO is created, to populate the new \"qos_network_policy_id\" parameter. \"joined\" will be faster because the \"QosNetworkPolicyBinding\" register will be retrieved in the same query.","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c94e4ef6283f128ac4bb0adadac802c2b7a0ac06","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                     \u0027FloatingIP.floating_network_id\u0027),"},{"line_number":68,"context_line":"        foreign_keys\u003dnetwork_id,"},{"line_number":69,"context_line":"        backref\u003dsa.orm.backref(\u0027qos_network_policy_binding\u0027, uselist\u003dFalse,"},{"line_number":70,"context_line":"                               lazy\u003d\u0027joined\u0027),"},{"line_number":71,"context_line":"        sync_backref\u003dFalse, viewonly\u003dTrue)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"69b70501_199afd24","line":70,"range":{"start_line":70,"start_character":37,"end_line":70,"end_character":43},"in_reply_to":"feae5905_b82b5da0","updated":"2021-11-21 17:08:42.000000000","message":"I understand your concerns. But the reason I\u0027m using \"joined\" is because the complexity added to the FIP query is minimal. What I\u0027m adding is just two new fields (QosNetworkPolicyBinding fields) to this query with a comparison operator.\n\n\"subquery\" will require two queries per FIP request.\n\nIn this case, same as with \"Port\" and \"QosNetworkPolicyBinding\", adding more complexity to a single query performs better than issuing two queries.","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"8232b83316951234acb74d41de19c3ec1ad63eed","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                     \u0027FloatingIP.floating_network_id\u0027),"},{"line_number":68,"context_line":"        foreign_keys\u003dnetwork_id,"},{"line_number":69,"context_line":"        backref\u003dsa.orm.backref(\u0027qos_network_policy_binding\u0027, uselist\u003dFalse,"},{"line_number":70,"context_line":"                               lazy\u003d\u0027joined\u0027),"},{"line_number":71,"context_line":"        sync_backref\u003dFalse, viewonly\u003dTrue)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"feae5905_b82b5da0","line":70,"range":{"start_line":70,"start_character":37,"end_line":70,"end_character":43},"in_reply_to":"ffbfd3ec_580dd74e","updated":"2021-11-19 09:36:09.000000000","message":"Sorry, maybe (N-1) more queries is not quite correct, just each fip query becomes more complex, while with \u0027subquery\u0027 allows to avoid it.","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"}],"neutron/objects/router.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"014af81f2373be910257ba19eeb238dade412672","unresolved":true,"context_lines":[{"line_number":328,"context_line":"        _target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":329,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":330,"context_line":"            primitive.pop(\u0027qos_policy_id\u0027, None)"},{"line_number":331,"context_line":"        if _target_version \u003c (1, 5):"},{"line_number":332,"context_line":"            primitive.pop(\u0027qos_network_policy_id\u0027, None)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"b8431593_7b89a79b","line":331,"range":{"start_line":331,"start_character":32,"end_line":331,"end_character":34},"updated":"2021-11-22 20:35:50.000000000","message":"why 1.5 and not 1.2?","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"63efbf42fa106c25ad2e43e17eb437abf6ed9889","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        _target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":329,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":330,"context_line":"            primitive.pop(\u0027qos_policy_id\u0027, None)"},{"line_number":331,"context_line":"        if _target_version \u003c (1, 5):"},{"line_number":332,"context_line":"            primitive.pop(\u0027qos_network_policy_id\u0027, None)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"4708a88b_70b832a2","line":331,"range":{"start_line":331,"start_character":32,"end_line":331,"end_character":34},"in_reply_to":"aa9475a5_ea9e46c7","updated":"2021-11-24 09:04:10.000000000","message":"That was a mistake, sorry.","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"42a120fbb9f00e718938efbe22e6d33207b5835a","unresolved":true,"context_lines":[{"line_number":328,"context_line":"        _target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":329,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":330,"context_line":"            primitive.pop(\u0027qos_policy_id\u0027, None)"},{"line_number":331,"context_line":"        if _target_version \u003c (1, 5):"},{"line_number":332,"context_line":"            primitive.pop(\u0027qos_network_policy_id\u0027, None)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"aa9475a5_ea9e46c7","line":331,"range":{"start_line":331,"start_character":32,"end_line":331,"end_character":34},"in_reply_to":"b8431593_7b89a79b","updated":"2021-11-23 07:01:58.000000000","message":"+1","commit_id":"8b2cbd38c734e2a1811b64e4b86640385c3bc84b"}]}
