)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"0620d052f32b13fcd9b7631e85f45e342bacb208","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2023-01-06 23:39:33 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Openvswitch driver with Virtio-Forwarder was extended"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I00c7b9ac02b05b187018536722d9aa0a211aa56d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"f7264464_02df4cf5","line":8,"updated":"2023-01-09 04:41:11.000000000","message":"Please add a link to the bug/RFE/blueprint","commit_id":"012d32106a46d52a0b2cc5e4cd2a4fe415582dfb"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"e216006805bf82bad7f35d0dca9cb2d8d2c3f4b8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2023-01-06 23:39:33 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Openvswitch driver with Virtio-Forwarder was extended"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I00c7b9ac02b05b187018536722d9aa0a211aa56d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"21729022_01693ccc","line":8,"in_reply_to":"f7264464_02df4cf5","updated":"2023-03-10 18:01:55.000000000","message":"Done","commit_id":"012d32106a46d52a0b2cc5e4cd2a4fe415582dfb"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"a7888519e7a94d1bee27de8fa0727fea6e49dd32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"91d45654_45d1efb8","updated":"2023-03-10 10:06:18.000000000","message":"recheck","commit_id":"012d32106a46d52a0b2cc5e4cd2a4fe415582dfb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"906b98aae74947145bc088d24b792cea10b9babd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9e0dabda_324d51b9","updated":"2023-04-28 07:50:45.000000000","message":"check experimental","commit_id":"6d024401901987e3e195554d4d752ae16fd237e1"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6d110c64db7503b06317f3821d9a05ba63e14c9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"abb622c6_a81ba226","updated":"2023-05-05 14:24:32.000000000","message":"Thanks Danylo sounds in good shape. There is a missing case that is not handled. Also any chance that you add a reno note? and finally I would have seen a test that validate the change in vhu_socket_path","commit_id":"fb453d19b92a3960902110b2bb755c0198b8fd0f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c768c5dcaa5b2262017d03503a1d48c37ede63e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"665c5d89_4adf772e","updated":"2023-05-15 09:20:52.000000000","message":"failure was due to requirements bump was not merged, see:\nhttps://review.opendev.org/c/openstack/requirements/+/882927","commit_id":"aec1b8ffe7d0e9221a7926c6dbc0bd4aab9f4b27"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"5c5556743b0bc8c191c6d1cec7e83f258d486c23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ca35d6d7_e6b17166","updated":"2023-05-16 18:46:03.000000000","message":"recheck","commit_id":"aec1b8ffe7d0e9221a7926c6dbc0bd4aab9f4b27"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"436805cbfbbbe015f55ac03be74e05f443741ae1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"664e29ec_54a2147e","in_reply_to":"665c5d89_4adf772e","updated":"2023-05-16 18:49:50.000000000","message":"Yes, I\u0027ve figured it out the root cause, thank you","commit_id":"aec1b8ffe7d0e9221a7926c6dbc0bd4aab9f4b27"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a862e74606d9fc5abab20a047e2b2af283740b7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"af96f9c2_811bf5d2","updated":"2023-07-06 08:57:07.000000000","message":"Waiting for the Nova spec to be merged.\n\nIf this patch depends on a n-lib one, please update the requirements accordingly.","commit_id":"511761256554f04fdabc362d78aa19829ea82486"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ea16cf5007752eec850bd3a271e9112a8dcf5bec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7c48d987_94180526","updated":"2023-07-10 12:13:35.000000000","message":"Hey thank you Danylo, the log looks good but you miss to add some tests that will assert the new behavior of the function, also I\u0027m interested to see hoz the ValueError will be converted in the upper layer. Any chance that you articulate those parts?","commit_id":"273190ad7c3a5c9896da1733ffe6edd6d59b13b0"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"a67aeb29062aca36dbebcd9e5547ac1958b83b85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5f146cce_193b65a6","in_reply_to":"7c48d987_94180526","updated":"2023-07-10 12:24:16.000000000","message":"Hello, Sahid.\nThis code was added firstly for a better understanding of our purposes.\nWe will add test coverage for all packets soon.\nIf you have some additional concerns about other parts of this proposal, I will be appreciate for mentine them","commit_id":"273190ad7c3a5c9896da1733ffe6edd6d59b13b0"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"13276b7498fe090c2232bb3cf38dee97137efff2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"1d4abb07_b8bb0a7f","updated":"2023-08-14 07:43:09.000000000","message":"As the nova spec was merged, I think we can push this long story forward. If the extra CI job is ready that will be the crown on this topic :-)","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"1e15959c9e84298fd10025890e1a03f424586626","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"051eafaa_d7f03aa3","updated":"2023-08-11 12:02:17.000000000","message":"recheck","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"c9f6ce98b77e396c29d117ce97e39e0982805b9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"eb03bd1f_89d24066","updated":"2023-08-11 14:40:33.000000000","message":"recheck","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eed2b0719bb8923963b78d84cbcc0c7000b0f84c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"1277fca0_4d19abd3","in_reply_to":"1d4abb07_b8bb0a7f","updated":"2023-08-14 10:32:27.000000000","message":"the thrid party ci was a requirement for meging this.\nat least on the nova side but if your happy to proceed witht eh neutron part then thats ok with me.\n\ni dont want to enable the end to end feature until we have testing of the end to end feature with first or third pary ci but if the motivation is to unblock nova form merging the code im dont object to that.","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"}],"neutron/plugins/ml2/drivers/openvswitch/mech_driver/mech_openvswitch.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e7be8deafaf90c11001c1cc31ba1c6db59e2d975","unresolved":true,"context_lines":[{"line_number":196,"context_line":"                dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":197,"context_line":"                domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":198,"context_line":"                vf_num \u003d int(slot) * 8 + int(func)"},{"line_number":199,"context_line":"                sock_path \u003d \"/usr/local/var/run/stdvio\" + str(vf_num)"},{"line_number":200,"context_line":"            else:"},{"line_number":201,"context_line":"                sock_path \u003d self.agent_vhu_sockpath(agent, context.current[\u0027id\u0027])"},{"line_number":202,"context_line":"            caps \u003d a_config.get(\u0027ovs_capabilities\u0027, {})"}],"source_content_type":"text/x-python","patch_set":1,"id":"085bfec8_5eb3edf5","line":199,"updated":"2023-01-10 16:22:06.000000000","message":"Seems like this logic should be in it\u0027s own method. Also, look at agent_vhu_sockpath() and see how it uses a config option to over-ride the socket dir as it might be different based on distro.","commit_id":"012d32106a46d52a0b2cc5e4cd2a4fe415582dfb"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"e216006805bf82bad7f35d0dca9cb2d8d2c3f4b8","unresolved":true,"context_lines":[{"line_number":196,"context_line":"                dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":197,"context_line":"                domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":198,"context_line":"                vf_num \u003d int(slot) * 8 + int(func)"},{"line_number":199,"context_line":"                sock_path \u003d \"/usr/local/var/run/stdvio\" + str(vf_num)"},{"line_number":200,"context_line":"            else:"},{"line_number":201,"context_line":"                sock_path \u003d self.agent_vhu_sockpath(agent, context.current[\u0027id\u0027])"},{"line_number":202,"context_line":"            caps \u003d a_config.get(\u0027ovs_capabilities\u0027, {})"}],"source_content_type":"text/x-python","patch_set":1,"id":"54da2566_a78ccebc","line":199,"in_reply_to":"085bfec8_5eb3edf5","updated":"2023-03-10 18:01:55.000000000","message":"The logic for socket number calculation was moved to the agent_vhu_sockpath() method.","commit_id":"012d32106a46d52a0b2cc5e4cd2a4fe415582dfb"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"52798d8e705fd0e2f6a91fd9fd12fdc6c95929f4","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":197,"context_line":"                domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":198,"context_line":"                vf_num \u003d int(slot) * 8 + int(func)"},{"line_number":199,"context_line":"                sock_path \u003d \"/usr/local/var/run/stdvio\" + str(vf_num)"},{"line_number":200,"context_line":"            else:"},{"line_number":201,"context_line":"                sock_path \u003d self.agent_vhu_sockpath(agent, context.current[\u0027id\u0027])"},{"line_number":202,"context_line":"            caps \u003d a_config.get(\u0027ovs_capabilities\u0027, {})"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1af435_b865bb54","line":199,"in_reply_to":"54da2566_a78ccebc","updated":"2023-03-10 18:14:42.000000000","message":"Done","commit_id":"012d32106a46d52a0b2cc5e4cd2a4fe415582dfb"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"09f10e9cfadb0841e605ee0ffb26d2ef4e04ec83","unresolved":true,"context_lines":[{"line_number":194,"context_line":"                    portbindings.VNIC_VIRTIO_FORWARDER):"},{"line_number":195,"context_line":"                profile \u003d context.current.get(portbindings.PROFILE)"},{"line_number":196,"context_line":"                sock_path \u003d self.agent_vhu_sockpath("},{"line_number":197,"context_line":"                    agent, pci_addr\u003dprofile.get(\u0027pci_slot\u0027, \u0027\u0027))"},{"line_number":198,"context_line":"            else:"},{"line_number":199,"context_line":"                sock_path \u003d self.agent_vhu_sockpath("},{"line_number":200,"context_line":"                    agent, port_id\u003dcontext.current[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1746bd92_b3f93865","line":197,"updated":"2023-04-14 14:30:47.000000000","message":"I guess you want pci_addr to be None instead of an empty string?\n\ns/profile.get(\u0027pci_slot\u0027, \u0027\u0027)/profile.get(\u0027pci_slot\u0027)","commit_id":"6d024401901987e3e195554d4d752ae16fd237e1"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"cac641e00a2b9c27387d7a8f192e4b9cbc9688a2","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                    portbindings.VNIC_VIRTIO_FORWARDER):"},{"line_number":195,"context_line":"                profile \u003d context.current.get(portbindings.PROFILE)"},{"line_number":196,"context_line":"                sock_path \u003d self.agent_vhu_sockpath("},{"line_number":197,"context_line":"                    agent, pci_addr\u003dprofile.get(\u0027pci_slot\u0027, \u0027\u0027))"},{"line_number":198,"context_line":"            else:"},{"line_number":199,"context_line":"                sock_path \u003d self.agent_vhu_sockpath("},{"line_number":200,"context_line":"                    agent, port_id\u003dcontext.current[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"f6c7a67a_04a384ef","line":197,"in_reply_to":"1746bd92_b3f93865","updated":"2023-05-04 14:34:44.000000000","message":"Done","commit_id":"6d024401901987e3e195554d4d752ae16fd237e1"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6d110c64db7503b06317f3821d9a05ba63e14c9c","unresolved":true,"context_lines":[{"line_number":198,"context_line":"            else:"},{"line_number":199,"context_line":"                sock_path \u003d self.agent_vhu_sockpath("},{"line_number":200,"context_line":"                    agent, port_id\u003dcontext.current[\u0027id\u0027])"},{"line_number":201,"context_line":"            caps \u003d a_config.get(\u0027ovs_capabilities\u0027, {})"},{"line_number":202,"context_line":"            mode \u003d self.get_vhost_mode(caps.get(\u0027iface_types\u0027, []))"},{"line_number":203,"context_line":"            details \u003d {portbindings.CAP_PORT_FILTER: False,"},{"line_number":204,"context_line":"                       portbindings.OVS_HYBRID_PLUG: False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"31266a14_cdcdc64a","line":201,"updated":"2023-05-05 14:24:32.000000000","message":"nit: You can perhaps add a debug here with sock path so if something is wrong we can validate it based on the vnic type.","commit_id":"fb453d19b92a3960902110b2bb755c0198b8fd0f"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"640cfe4f662cb3b50178cc956dd9e548c8300a9b","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            else:"},{"line_number":199,"context_line":"                sock_path \u003d self.agent_vhu_sockpath("},{"line_number":200,"context_line":"                    agent, port_id\u003dcontext.current[\u0027id\u0027])"},{"line_number":201,"context_line":"            caps \u003d a_config.get(\u0027ovs_capabilities\u0027, {})"},{"line_number":202,"context_line":"            mode \u003d self.get_vhost_mode(caps.get(\u0027iface_types\u0027, []))"},{"line_number":203,"context_line":"            details \u003d {portbindings.CAP_PORT_FILTER: False,"},{"line_number":204,"context_line":"                       portbindings.OVS_HYBRID_PLUG: False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"8c256ba4_1ae7075a","line":201,"in_reply_to":"31266a14_cdcdc64a","updated":"2023-05-09 11:42:06.000000000","message":"Done","commit_id":"fb453d19b92a3960902110b2bb755c0198b8fd0f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6d110c64db7503b06317f3821d9a05ba63e14c9c","unresolved":true,"context_lines":[{"line_number":216,"context_line":"                                              ovs_const.VHOST_USER_SOCKET_DIR)"},{"line_number":217,"context_line":"        if (port_id is not None and pci_addr is None):"},{"line_number":218,"context_line":"            sock_name \u003d (constants.VHOST_USER_DEVICE_PREFIX + port_id)[:14]"},{"line_number":219,"context_line":"        else:"},{"line_number":220,"context_line":"            dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":221,"context_line":"            domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":222,"context_line":"            vf_num \u003d int(slot) * 8 + int(func)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fcc7ef92_f319b6aa","line":219,"updated":"2023-05-05 14:24:32.000000000","message":"it should be an elif port_id is None and pci_addr not None.\n\nThen we should have a else and raise an exception indicating something it wrong.","commit_id":"fb453d19b92a3960902110b2bb755c0198b8fd0f"},{"author":{"_account_id":35489,"name":"Danylo Vodopianov","email":"dvo-plv@napatech.com","username":"dvo-plv"},"change_message_id":"640cfe4f662cb3b50178cc956dd9e548c8300a9b","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                                              ovs_const.VHOST_USER_SOCKET_DIR)"},{"line_number":217,"context_line":"        if (port_id is not None and pci_addr is None):"},{"line_number":218,"context_line":"            sock_name \u003d (constants.VHOST_USER_DEVICE_PREFIX + port_id)[:14]"},{"line_number":219,"context_line":"        else:"},{"line_number":220,"context_line":"            dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":221,"context_line":"            domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":222,"context_line":"            vf_num \u003d int(slot) * 8 + int(func)"}],"source_content_type":"text/x-python","patch_set":5,"id":"d62121a2_dd5c3551","line":219,"in_reply_to":"fcc7ef92_f319b6aa","updated":"2023-05-09 11:42:06.000000000","message":"Done","commit_id":"fb453d19b92a3960902110b2bb755c0198b8fd0f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eed2b0719bb8923963b78d84cbcc0c7000b0f84c","unresolved":true,"context_lines":[{"line_number":197,"context_line":"                    agent, pci_addr\u003dprofile.get(\u0027pci_slot\u0027, None))"},{"line_number":198,"context_line":"            else:"},{"line_number":199,"context_line":"                sock_path \u003d self.agent_vhu_sockpath("},{"line_number":200,"context_line":"                    agent, port_id\u003dcontext.current[\u0027id\u0027])"},{"line_number":201,"context_line":"            caps \u003d a_config.get(\u0027ovs_capabilities\u0027, {})"},{"line_number":202,"context_line":"            mode \u003d self.get_vhost_mode(caps.get(\u0027iface_types\u0027, []))"},{"line_number":203,"context_line":"            details \u003d {portbindings.CAP_PORT_FILTER: False,"}],"source_content_type":"text/x-python","patch_set":13,"id":"4154a4d9_82222c3a","line":200,"updated":"2023-08-14 10:32:27.000000000","message":"a port id was mad a kwarg ok","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eed2b0719bb8923963b78d84cbcc0c7000b0f84c","unresolved":true,"context_lines":[{"line_number":211,"context_line":"        return details"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @staticmethod"},{"line_number":214,"context_line":"    def agent_vhu_sockpath(agent, port_id\u003dNone, pci_addr\u003dNone):"},{"line_number":215,"context_line":"        \"\"\"Return the agent\u0027s vhost-user socket path for a given port\"\"\""},{"line_number":216,"context_line":"        sockdir \u003d agent[\u0027configurations\u0027].get(\u0027vhostuser_socket_dir\u0027,"},{"line_number":217,"context_line":"                                              ovs_const.VHOST_USER_SOCKET_DIR)"}],"source_content_type":"text/x-python","patch_set":13,"id":"dc53ea4d_37da6a84","line":214,"updated":"2023-08-14 10:32:27.000000000","message":"so only one of  port_id or pci_addr will be set normally.","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eed2b0719bb8923963b78d84cbcc0c7000b0f84c","unresolved":true,"context_lines":[{"line_number":215,"context_line":"        \"\"\"Return the agent\u0027s vhost-user socket path for a given port\"\"\""},{"line_number":216,"context_line":"        sockdir \u003d agent[\u0027configurations\u0027].get(\u0027vhostuser_socket_dir\u0027,"},{"line_number":217,"context_line":"                                              ovs_const.VHOST_USER_SOCKET_DIR)"},{"line_number":218,"context_line":"        if (port_id is not None and pci_addr is None):"},{"line_number":219,"context_line":"            sock_name \u003d (constants.VHOST_USER_DEVICE_PREFIX + port_id)[:14]"},{"line_number":220,"context_line":"        elif (port_id is None and pci_addr is not None):"},{"line_number":221,"context_line":"            dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":222,"context_line":"            domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":223,"context_line":"            vf_num \u003d int(slot) * 8 + int(func)"},{"line_number":224,"context_line":"            sock_name \u003d \u0027stdvio\u0027 + str(vf_num)"},{"line_number":225,"context_line":"        else:"},{"line_number":226,"context_line":"            raise ValueError(_(\u0027Unable to create socket path.\u0027))"},{"line_number":227,"context_line":"        return os.path.join(sockdir, sock_name)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f020841_94ffe71d","line":226,"range":{"start_line":218,"start_character":5,"end_line":226,"end_character":64},"updated":"2023-08-14 10:32:27.000000000","message":"i would rewirte this slightly to early out in the error case.\n\nform \n        if (port_id is not None and pci_addr is None):\n            sock_name \u003d (constants.VHOST_USER_DEVICE_PREFIX + port_id)[:14]\n        elif (port_id is None and pci_addr is not None):\n            dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)\n            domain, bus, slot \u003d dbs.split(\u0027:\u0027)\n            vf_num \u003d int(slot) * 8 + int(func)\n            sock_name \u003d \u0027stdvio\u0027 + str(vf_num)\n        else:\n            raise ValueError(_(\u0027Unable to create socket path.\u0027))\n            \nto\n        if (port_id is none xor pci_addr is None):\n           raise ValueError(_(\u0027Unable to create socket path.\u0027))\n        \n        if port_id is not None:\n            sock_name \u003d (constants.VHOST_USER_DEVICE_PREFIX + port_id)[:14]\n        else:\n            dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)\n            domain, bus, slot \u003d dbs.split(\u0027:\u0027)\n            vf_num \u003d int(slot) * 8 + int(func)\n            sock_name \u003d \u0027stdvio\u0027 + str(vf_num)\n\n\nby using xor we will raise if both port_id and pci_addr are none or if both  port_id and pci_addr  are not none.","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"59b56ff58530bdd8a716098df942fe1cd8b2d129","unresolved":true,"context_lines":[{"line_number":215,"context_line":"        \"\"\"Return the agent\u0027s vhost-user socket path for a given port\"\"\""},{"line_number":216,"context_line":"        sockdir \u003d agent[\u0027configurations\u0027].get(\u0027vhostuser_socket_dir\u0027,"},{"line_number":217,"context_line":"                                              ovs_const.VHOST_USER_SOCKET_DIR)"},{"line_number":218,"context_line":"        if (port_id is not None and pci_addr is None):"},{"line_number":219,"context_line":"            sock_name \u003d (constants.VHOST_USER_DEVICE_PREFIX + port_id)[:14]"},{"line_number":220,"context_line":"        elif (port_id is None and pci_addr is not None):"},{"line_number":221,"context_line":"            dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":222,"context_line":"            domain, bus, slot \u003d dbs.split(\u0027:\u0027)"},{"line_number":223,"context_line":"            vf_num \u003d int(slot) * 8 + int(func)"},{"line_number":224,"context_line":"            sock_name \u003d \u0027stdvio\u0027 + str(vf_num)"},{"line_number":225,"context_line":"        else:"},{"line_number":226,"context_line":"            raise ValueError(_(\u0027Unable to create socket path.\u0027))"},{"line_number":227,"context_line":"        return os.path.join(sockdir, sock_name)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"bbcaf75a_ca80c434","line":226,"range":{"start_line":218,"start_character":5,"end_line":226,"end_character":64},"in_reply_to":"7f020841_94ffe71d","updated":"2023-08-22 11:51:34.000000000","message":"based on our conversation in https://review.opendev.org/c/openstack/os-vif/+/859574/7..8/vif_plug_ovs/ovs.py#b352\n\nI have two questions.\n\n1 is this a vendor-neutral approach i.e. will this work for all nics that support dpdk port represents.\n2 does this work correctly when you have multiple NICs.\n\n\nsince the vf number is also apprenetly needed for os-vif/nova\nyou shoudl also store the vf_nub calulated here in the port binding_details\nas a new vf_number field.\n\nthis would be added as a new filed in the os-vif object i woudl probably extend VIFPortProfileOVSRepresentor with the new filed once that is done nova can pars the port binding details and populate the filed in _nova_to_osvif_vif_vhostuser\n\nhttps://github.com/openstack/nova/blob/master/nova/network/os_vif_util.py#L397-L446\n\nwe gnenerally try really hard not to use the same algortiom in both neutorn and nova/os-vif and instead pass the requried info form neutron to nova to os-vif.\n\nin this case you impemtned the same algorhtim two diffent ways in both neutron and os-vif even thought he end result is the same. since they two cannot diverge that is an ongoing maintance issue.\n\nif we instead calulate the vf number once in neutron and pass it we only have to mantain the calulation in one place.","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"}],"neutron/tests/functional/plugins/ml2/test_plugin.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"13276b7498fe090c2232bb3cf38dee97137efff2","unresolved":true,"context_lines":[{"line_number":19,"context_line":"from neutron_lib import constants"},{"line_number":20,"context_line":"from neutron_lib import context"},{"line_number":21,"context_line":"from neutron_lib.db import api as db_api"},{"line_number":22,"context_line":"from neutron_lib.plugins.ml2 import ovs_constants as a_const"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.db import agents_db"},{"line_number":25,"context_line":"from neutron.plugins.ml2 import models"}],"source_content_type":"text/x-python","patch_set":13,"id":"f5266a25_e1ac94a8","line":22,"range":{"start_line":22,"start_character":53,"end_line":22,"end_character":60},"updated":"2023-08-14 07:43:09.000000000","message":"nit: why a_const? it should be ovs_const","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eed2b0719bb8923963b78d84cbcc0c7000b0f84c","unresolved":true,"context_lines":[{"line_number":19,"context_line":"from neutron_lib import constants"},{"line_number":20,"context_line":"from neutron_lib import context"},{"line_number":21,"context_line":"from neutron_lib.db import api as db_api"},{"line_number":22,"context_line":"from neutron_lib.plugins.ml2 import ovs_constants as a_const"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.db import agents_db"},{"line_number":25,"context_line":"from neutron.plugins.ml2 import models"}],"source_content_type":"text/x-python","patch_set":13,"id":"d2df51d2_f82a9c69","line":22,"range":{"start_line":22,"start_character":53,"end_line":22,"end_character":60},"in_reply_to":"f5266a25_e1ac94a8","updated":"2023-08-14 10:32:27.000000000","message":"a_const used to be used else wehre to refer to this as the agent constnats so i wouldl guess this is just copy paste form one of the other tests.","commit_id":"da64af49952e50e975ec1cf7c3b084cb4034e3c0"}]}
