)]}'
{"neutron/templates/bin/_neutron-openvswitch-agent-init.sh.tpl":[{"author":{"_account_id":16353,"name":"Georg Kunz","email":"georg.kunz@ericsson.com","username":"georg-kunz"},"change_message_id":"35fd39a3d12f0d67448145eb6a95083a9f30fd31","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    #"},{"line_number":219,"context_line":"    # handle BOND {{ .name | quote }}"},{"line_number":220,"context_line":"    #"},{"line_number":221,"context_line":"    {{- range .nics }}"},{"line_number":222,"context_line":"      if [[ ${migrate_ip} \u003d \"true\" \u0026\u0026 ${ip_migrated} \u003d \"false\" ]]; then"},{"line_number":223,"context_line":"        migrate_ip {{ .pci_id | quote }} ${dpdk_bridge}"},{"line_number":224,"context_line":"        ip_migrated\u003dtrue"}],"source_content_type":"text/x-smarty","patch_set":16,"id":"7faddb67_fee9d77f","line":221,"range":{"start_line":221,"start_character":4,"end_line":221,"end_character":22},"updated":"2019-07-08 08:13:15.000000000","message":"This inner loop looks very similar to the function process_dpdk_nics. Would it be possible to re-use a generic function to gather all port config parameters in both places? Otherwise we have to maintain two very similar pieces of code and also add new configuration parameters in two places.","commit_id":"c8e16dec7cfdb4a77fdb979b747f409953b46e7d"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"4e73fcc4354332cb715966d8416c03317bbee31e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  name\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":65,"context_line":"  if [ -n \"${name}\" ] ; then"},{"line_number":66,"context_line":"    set +e"},{"line_number":67,"context_line":"    ip\u003d$(get_ip_address_from_interface ${name})"},{"line_number":68,"context_line":"    prefix\u003d$(get_ip_prefix_from_interface ${name})"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # Enabling explicit error handling: We must avoid to lose the IP"},{"line_number":71,"context_line":"    # address in the migration process. Hence, on every error, we"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_101fac6c","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":50},"updated":"2019-08-14 21:42:48.000000000","message":"Even with set +e, it looks like get_ip_address_from_interface and get_ip_prefix_from_interface will exit 1 if there is not an IP assigned","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"b12ea8248c76a09046fab3a8bd4e10908ee15d80","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  name\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":65,"context_line":"  if [ -n \"${name}\" ] ; then"},{"line_number":66,"context_line":"    set +e"},{"line_number":67,"context_line":"    ip\u003d$(get_ip_address_from_interface ${name})"},{"line_number":68,"context_line":"    prefix\u003d$(get_ip_prefix_from_interface ${name})"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # Enabling explicit error handling: We must avoid to lose the IP"},{"line_number":71,"context_line":"    # address in the migration process. Hence, on every error, we"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_f9998d6c","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":50},"in_reply_to":"7faddb67_101fac6c","updated":"2019-08-15 17:48:23.000000000","message":"It doesn\u0027t exit if IP is not assigned. I tested it locally","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":16353,"name":"Georg Kunz","email":"georg.kunz@ericsson.com","username":"georg-kunz"},"change_message_id":"8162f0bb43d844483390d20fffe15f7e00a0c883","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  name\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":65,"context_line":"  if [ -n \"${name}\" ] ; then"},{"line_number":66,"context_line":"    set +e"},{"line_number":67,"context_line":"    ip\u003d$(get_ip_address_from_interface ${name})"},{"line_number":68,"context_line":"    prefix\u003d$(get_ip_prefix_from_interface ${name})"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # Enabling explicit error handling: We must avoid to lose the IP"},{"line_number":71,"context_line":"    # address in the migration process. Hence, on every error, we"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_cce2d8d4","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":50},"in_reply_to":"7faddb67_101fac6c","updated":"2019-08-15 07:49:30.000000000","message":"Right. The set +e is not explicitly needed for those two lines and could be moved further down. In fact, I think get_ip_prefix_from_interface should actually exit here and thereby let the pod crash in order to make the error case explicit.","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":16353,"name":"Georg Kunz","email":"georg.kunz@ericsson.com","username":"georg-kunz"},"change_message_id":"fdd5af1fa7f281c84cdaa28789627d42db6daf54","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  name\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":65,"context_line":"  if [ -n \"${name}\" ] ; then"},{"line_number":66,"context_line":"    set +e"},{"line_number":67,"context_line":"    ip\u003d$(get_ip_address_from_interface ${name})"},{"line_number":68,"context_line":"    prefix\u003d$(get_ip_prefix_from_interface ${name})"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # Enabling explicit error handling: We must avoid to lose the IP"},{"line_number":71,"context_line":"    # address in the migration process. Hence, on every error, we"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_efd8a67f","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":50},"in_reply_to":"7faddb67_648e3f28","updated":"2019-08-20 07:12:48.000000000","message":"Hi Deepak, sorry for the slow response. Ok, I get your point and I didn\u0027t fully consider the implications of a mixed SR-IOV and DPDK use case. so, thank you for clarifying. I agree with the approach you have taken.","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"2a04670c5ab6fe204903c3588a6bce69de0917c1","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  name\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":65,"context_line":"  if [ -n \"${name}\" ] ; then"},{"line_number":66,"context_line":"    set +e"},{"line_number":67,"context_line":"    ip\u003d$(get_ip_address_from_interface ${name})"},{"line_number":68,"context_line":"    prefix\u003d$(get_ip_prefix_from_interface ${name})"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # Enabling explicit error handling: We must avoid to lose the IP"},{"line_number":71,"context_line":"    # address in the migration process. Hence, on every error, we"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_648e3f28","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":50},"in_reply_to":"7faddb67_a1fbd7bb","updated":"2019-08-16 15:41:09.000000000","message":"Georg, when I test it locally, I see that the script does exit if the kernel interface doesn\u0027t exist. \n\nubuntu@u1604:~/test$ ./script.sh\n+ export src_nic\u003densfg4\n+ src_nic\u003densfg4\n++ get_ip_address_from_interface ensfg4\n++ local interface\u003densfg4\n+++ awk \u0027{ print $4; exit }\u0027\n+++ ip -4 -o addr s ensfg4\n+++ awk -F / \u0027{print $1}\u0027\nDevice \"ensfg4\" does not exist.\n++ local ip\u003d\n++ \u0027[\u0027 -z \u0027\u0027 \u0027]\u0027\n++ exit 1\n+ ip\u003d\n\n------\n\nAlso the things got bit complicated by the fact that we are trying to deploy it for a shared profile scenario, i.e. sriov+ovs-dpdk, where any specific VF interfaces is being used for ovs-dpdk. So in such a case, the way it works it that in nics section user can either provide nic of a vf directly or he can provide the nic of physical NIC and the vf number he wants to use. The latter case is useful because if sriov-agent is configuring the VFs then operator may not know the PCI id of that VF NIC beforehand.\n\nDue to above, even in rerun case, PF interface shall still be visible as its the VF NIC which has been bound to DPDK.\n\nSo we have following possibilities:-\n\n1. User provides PCI of NIC to be bound to DPDK (plain ovs-dpdk case and shared profile case when user provides PCI of VF): \n    - In case of rerun, either the interface itself shouldn\u0027t exist, in which case the dpdk bridge should hv a valid IP, or if it exists then it should hv a valid IP...\n\n2.  User provides PCI of PF (shared profile case):\n    - In case of rerun, the interface will always exist because its the VF PCI thats bound to DPDK not PF. So in this case either the interface should hv a valid IP or the dpdk bridge should hv a valid IP. If none as a valid IP then its a failure case.\n\n\nSo to take care of all these cases, I think following solution caters to both scenarios:- \"If IP is not found on the interface or if the interface itself is not found then check if the dpdk bridge has got an IP already? If yes then treat it as success case. If both the interface as well as the bridge don;t hv IP then this is an error scenario\"\n\nThe current implementation in my patchset is as per above philosophy. Please check and let me know if you see some scenario is being missed here?","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"b12ea8248c76a09046fab3a8bd4e10908ee15d80","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  name\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":65,"context_line":"  if [ -n \"${name}\" ] ; then"},{"line_number":66,"context_line":"    set +e"},{"line_number":67,"context_line":"    ip\u003d$(get_ip_address_from_interface ${name})"},{"line_number":68,"context_line":"    prefix\u003d$(get_ip_prefix_from_interface ${name})"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # Enabling explicit error handling: We must avoid to lose the IP"},{"line_number":71,"context_line":"    # address in the migration process. Hence, on every error, we"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_19dd8913","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":50},"in_reply_to":"7faddb67_cce2d8d4","updated":"2019-08-15 17:48:23.000000000","message":"Georg, this is required in the case when suppose we are running the chart second time. In the first run, IP was migrated to bridge and it was flushed from the nic. Now if we restart the pod then it will fail on these lines, instead, it should first check if IP exist on the bridge? If yes then that should be treated as a success case. Thats what I am trying to do here and this part has been tested ok for all the various scenarios.....","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":16353,"name":"Georg Kunz","email":"georg.kunz@ericsson.com","username":"georg-kunz"},"change_message_id":"2b8a60621fc6b65994646e6c353b41aec9a6a3de","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  name\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":65,"context_line":"  if [ -n \"${name}\" ] ; then"},{"line_number":66,"context_line":"    set +e"},{"line_number":67,"context_line":"    ip\u003d$(get_ip_address_from_interface ${name})"},{"line_number":68,"context_line":"    prefix\u003d$(get_ip_prefix_from_interface ${name})"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # Enabling explicit error handling: We must avoid to lose the IP"},{"line_number":71,"context_line":"    # address in the migration process. Hence, on every error, we"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_a1fbd7bb","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":50},"in_reply_to":"7faddb67_f9998d6c","updated":"2019-08-15 20:15:41.000000000","message":"oh, yes, you are absolutely right about the case when re-running the script: It should not exit.\n\nHowever, for clarity: when re-running the script, it does not exit because the given interface, which is a kernel interface, does not exist anymore; it was assigned to DPDK during the previous run. Because of this, the \"if -n $name\" condition is not met and the entire IP migration logic is skipped.\n\nI believe the script should in fact exit with an error if\n i) the kernel interface still exists (i.e., the NIC was not bound to DPDK yet) and\nii) has no valid IP assigned\n\nThis is a configuration problem and should be caught. That was the intention of the \"echo\" in the get_ip_... functions.\n\nStill, if I miss anything (again), please let me know.","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"4e73fcc4354332cb715966d8416c03317bbee31e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"      init_ovs_dpdk_bridge \"${bridge_name}\""},{"line_number":77,"context_line":"    fi"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    bridge_ip\u003d$(get_ip_address_from_interface \"${bridge_name}\")"},{"line_number":80,"context_line":"    bridge_prefix\u003d$(get_ip_prefix_from_interface \"${bridge_name}\")"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    if [[ -n \"${ip}\" \u0026\u0026 -n \"${prefix}\" ]]; then"},{"line_number":83,"context_line":"      ip addr flush dev ${name}"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_700dc03c","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":66},"updated":"2019-08-14 21:42:48.000000000","message":"ditto","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":16353,"name":"Georg Kunz","email":"georg.kunz@ericsson.com","username":"georg-kunz"},"change_message_id":"8162f0bb43d844483390d20fffe15f7e00a0c883","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"function process_dpdk_nics {"},{"line_number":141,"context_line":"  target_driver\u003d{{ .Values.conf.ovs_dpdk.driver }}"},{"line_number":142,"context_line":"  {{- range .Values.conf.ovs_dpdk.nics }}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    #"},{"line_number":145,"context_line":"    # handle NIC {{ .pci_id }}"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_4c9a686f","line":142,"range":{"start_line":142,"start_character":2,"end_line":142,"end_character":41},"updated":"2019-08-15 07:49:30.000000000","message":"In order to support per-host overrides, we moved away from Go templating here and instead read host-specific configuration parameters from a local config file (see the other patch [1]). There has been some confusion about this approach [2], but if it is correct, then you need to adopt this here and in other places as well. \n\n[1] https://review.opendev.org/#/c/643284/\n[2] https://review.opendev.org/#/c/643284/31/neutron/templates/configmap-etc.yaml","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"2a04670c5ab6fe204903c3588a6bce69de0917c1","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"function process_dpdk_nics {"},{"line_number":141,"context_line":"  target_driver\u003d{{ .Values.conf.ovs_dpdk.driver }}"},{"line_number":142,"context_line":"  {{- range .Values.conf.ovs_dpdk.nics }}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    #"},{"line_number":145,"context_line":"    # handle NIC {{ .pci_id }}"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_84933b4f","line":142,"range":{"start_line":142,"start_character":2,"end_line":142,"end_character":41},"in_reply_to":"7faddb67_4c9a686f","updated":"2019-08-16 15:41:09.000000000","message":"Done","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":16353,"name":"Georg Kunz","email":"georg.kunz@ericsson.com","username":"georg-kunz"},"change_message_id":"8162f0bb43d844483390d20fffe15f7e00a0c883","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    #"},{"line_number":216,"context_line":"    # handle BOND {{ .name | quote }}"},{"line_number":217,"context_line":"    #"},{"line_number":218,"context_line":"    {{- range .nics }}"},{"line_number":219,"context_line":"      if [[ ${migrate_ip} \u003d \"true\" \u0026\u0026 ${ip_migrated} \u003d \"false\" ]]; then"},{"line_number":220,"context_line":"        migrate_ip {{ .pci_id | quote }} ${dpdk_bridge}"},{"line_number":221,"context_line":"        ip_migrated\u003dtrue"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_ac3bdc35","line":218,"range":{"start_line":218,"start_character":4,"end_line":218,"end_character":22},"updated":"2019-08-15 07:49:30.000000000","message":"see my other comment on Go templates vs. local config file.","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"2a04670c5ab6fe204903c3588a6bce69de0917c1","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    #"},{"line_number":216,"context_line":"    # handle BOND {{ .name | quote }}"},{"line_number":217,"context_line":"    #"},{"line_number":218,"context_line":"    {{- range .nics }}"},{"line_number":219,"context_line":"      if [[ ${migrate_ip} \u003d \"true\" \u0026\u0026 ${ip_migrated} \u003d \"false\" ]]; then"},{"line_number":220,"context_line":"        migrate_ip {{ .pci_id | quote }} ${dpdk_bridge}"},{"line_number":221,"context_line":"        ip_migrated\u003dtrue"}],"source_content_type":"text/x-smarty","patch_set":22,"id":"7faddb67_2494c735","line":218,"range":{"start_line":218,"start_character":4,"end_line":218,"end_character":22},"in_reply_to":"7faddb67_ac3bdc35","updated":"2019-08-16 15:41:09.000000000","message":"Done","commit_id":"d1f59581b51cbfac4fe390a6494f6d90c5bd67fd"},{"author":{"_account_id":16353,"name":"Georg Kunz","email":"georg.kunz@ericsson.com","username":"georg-kunz"},"change_message_id":"e7f0afef467b6ddcfb14a1c935e7606d3b295943","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    if [ -n \"${vf_index}\" ]; then"},{"line_number":176,"context_line":"      vf_string\u003d\u0027vf ${vf_index}\u0027"},{"line_number":177,"context_line":"    }"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    ip link set ${iface} promisc on"},{"line_number":180,"context_line":"    ip link set ${iface} ${vf_string} trust on"}],"source_content_type":"text/x-smarty","patch_set":24,"id":"7faddb67_8e2d9f47","line":177,"range":{"start_line":177,"start_character":0,"end_line":177,"end_character":5},"updated":"2019-08-16 11:11:31.000000000","message":"syntax error causing the gate job to fail: \"}\" -\u003e fi","commit_id":"d29d7640a9ef35d881fd2e687f2bbaa165a7e0cd"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"2a04670c5ab6fe204903c3588a6bce69de0917c1","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    if [ -n \"${vf_index}\" ]; then"},{"line_number":176,"context_line":"      vf_string\u003d\u0027vf ${vf_index}\u0027"},{"line_number":177,"context_line":"    }"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    ip link set ${iface} promisc on"},{"line_number":180,"context_line":"    ip link set ${iface} ${vf_string} trust on"}],"source_content_type":"text/x-smarty","patch_set":24,"id":"7faddb67_21ccb932","line":177,"range":{"start_line":177,"start_character":0,"end_line":177,"end_character":5},"in_reply_to":"7faddb67_8e2d9f47","updated":"2019-08-16 15:41:09.000000000","message":"Done","commit_id":"d29d7640a9ef35d881fd2e687f2bbaa165a7e0cd"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"06aa0791b3c4a6dd2ccc698b3be1c33f8870f57c","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    iface\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    if [ -n \"${vf_index}\" ]; then"},{"line_number":176,"context_line":"      vf_string\u003d\u0027vf ${vf_index}\u0027"},{"line_number":177,"context_line":"    fi"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    ip link set ${iface} promisc on"}],"source_content_type":"text/x-smarty","patch_set":25,"id":"7faddb67_66bb9fe4","line":176,"range":{"start_line":176,"start_character":16,"end_line":176,"end_character":32},"updated":"2019-08-16 21:57:36.000000000","message":"needs double-quotes instead of single","commit_id":"a282c88b599dd4f04f17c315fb8a01b4b863280b"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"ec62aae36a3a0d84cebec837d4922eaf780ccc84","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    iface\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    if [ -n \"${vf_index}\" ]; then"},{"line_number":176,"context_line":"      vf_string\u003d\u0027vf ${vf_index}\u0027"},{"line_number":177,"context_line":"    fi"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    ip link set ${iface} promisc on"}],"source_content_type":"text/x-smarty","patch_set":25,"id":"7faddb67_46ea2374","line":176,"range":{"start_line":176,"start_character":16,"end_line":176,"end_character":32},"in_reply_to":"7faddb67_66bb9fe4","updated":"2019-08-16 22:38:02.000000000","message":"Done","commit_id":"a282c88b599dd4f04f17c315fb8a01b4b863280b"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"06aa0791b3c4a6dd2ccc698b3be1c33f8870f57c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"      iface\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"      if [ -n \"${vf_index}\" ]; then"},{"line_number":259,"context_line":"        vf_string\u003d\u0027vf ${vf_index}\u0027"},{"line_number":260,"context_line":"      fi"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"      ip link set ${iface} promisc on"}],"source_content_type":"text/x-smarty","patch_set":25,"id":"7faddb67_26b12702","line":259,"range":{"start_line":259,"start_character":18,"end_line":259,"end_character":34},"updated":"2019-08-16 21:57:36.000000000","message":"ditto","commit_id":"a282c88b599dd4f04f17c315fb8a01b4b863280b"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"ec62aae36a3a0d84cebec837d4922eaf780ccc84","unresolved":false,"context_lines":[{"line_number":256,"context_line":"      iface\u003d$(get_name_by_pci_id \"${pci_id}\")"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"      if [ -n \"${vf_index}\" ]; then"},{"line_number":259,"context_line":"        vf_string\u003d\u0027vf ${vf_index}\u0027"},{"line_number":260,"context_line":"      fi"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"      ip link set ${iface} promisc on"}],"source_content_type":"text/x-smarty","patch_set":25,"id":"7faddb67_0600ab33","line":259,"range":{"start_line":259,"start_character":18,"end_line":259,"end_character":34},"in_reply_to":"7faddb67_26b12702","updated":"2019-08-16 22:38:02.000000000","message":"Done","commit_id":"a282c88b599dd4f04f17c315fb8a01b4b863280b"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"646b041435002b4d3a7039daebee4aa25a980060","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    bridge_prefix\u003d$(get_ip_prefix_from_interface \"${bridge_name}\")"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    if [[ -n \"${ip}\" \u0026\u0026 -n \"${prefix}\" ]]; then"},{"line_number":102,"context_line":"      ip addr flush dev ${src_nic}"},{"line_number":103,"context_line":"      if [ $? -ne 0 ] ; then"},{"line_number":104,"context_line":"        ip addr add ${ip}/${prefix} dev ${src_nic}"},{"line_number":105,"context_line":"        echo \"Error while flushing IP from ${src_nic}.\""}],"source_content_type":"text/x-smarty","patch_set":27,"id":"7faddb67_2e08928f","line":102,"range":{"start_line":102,"start_character":0,"end_line":102,"end_character":34},"updated":"2019-08-26 18:17:32.000000000","message":"Ensure that no IPs are lost when `src_nic` has multiple IPs.","commit_id":"9dd3231fd6415726eb1fb3d1e6f4fe75f0b0acb0"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"f832ebcc7829354e1ad62c4a733427c9e189f704","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    local mtu\u003d$(get_dpdk_config_value ${bond} \u0027.mtu\u0027)"},{"line_number":233,"context_line":"    local n_rxq\u003d$(get_dpdk_config_value ${bond} \u0027.n_rxq\u0027)"},{"line_number":234,"context_line":"    local ofport_request\u003d$(get_dpdk_config_value ${bond} \u0027.ofport_request\u0027)"},{"line_number":235,"context_line":"    local pmd_rxq_affinity\u003d$(get_dpdk_config_value ${bond} \u0027.pmd_rxq_affinity\u0027)"},{"line_number":236,"context_line":"    local n_rxq_size\u003d$(get_dpdk_config_value ${bond} \u0027.n_rxq_size\u0027)"},{"line_number":237,"context_line":"    local n_txq_size\u003d$(get_dpdk_config_value ${bond} \u0027.n_txq_size\u0027)"},{"line_number":238,"context_line":"    local ovs_options\u003d$(get_dpdk_config_value ${bond} \u0027.ovs_options\u0027)"}],"source_content_type":"text/x-smarty","patch_set":27,"id":"7faddb67_6fb89a10","line":235,"range":{"start_line":235,"start_character":0,"end_line":235,"end_character":79},"updated":"2019-08-28 19:21:37.000000000","message":"Consider moving this to a per-nic value under .bonds[].nics[] so we can pin individual NICs to appropriate CPUs on different NUMAs.","commit_id":"9dd3231fd6415726eb1fb3d1e6f4fe75f0b0acb0"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"87cca027058696ab34318030b4165f9a8c66037c","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    local mtu\u003d$(get_dpdk_config_value ${bond} \u0027.mtu\u0027)"},{"line_number":233,"context_line":"    local n_rxq\u003d$(get_dpdk_config_value ${bond} \u0027.n_rxq\u0027)"},{"line_number":234,"context_line":"    local ofport_request\u003d$(get_dpdk_config_value ${bond} \u0027.ofport_request\u0027)"},{"line_number":235,"context_line":"    local pmd_rxq_affinity\u003d$(get_dpdk_config_value ${bond} \u0027.pmd_rxq_affinity\u0027)"},{"line_number":236,"context_line":"    local n_rxq_size\u003d$(get_dpdk_config_value ${bond} \u0027.n_rxq_size\u0027)"},{"line_number":237,"context_line":"    local n_txq_size\u003d$(get_dpdk_config_value ${bond} \u0027.n_txq_size\u0027)"},{"line_number":238,"context_line":"    local ovs_options\u003d$(get_dpdk_config_value ${bond} \u0027.ovs_options\u0027)"}],"source_content_type":"text/x-smarty","patch_set":27,"id":"7faddb67_48bd94d5","line":235,"range":{"start_line":235,"start_character":0,"end_line":235,"end_character":79},"in_reply_to":"7faddb67_6fb89a10","updated":"2019-08-28 22:19:08.000000000","message":"Done","commit_id":"9dd3231fd6415726eb1fb3d1e6f4fe75f0b0acb0"}],"neutron/values.yaml":[{"author":{"_account_id":16353,"name":"Georg Kunz","email":"georg.kunz@ericsson.com","username":"georg-kunz"},"change_message_id":"35fd39a3d12f0d67448145eb6a95083a9f30fd31","unresolved":false,"context_lines":[{"line_number":1719,"context_line":"      - name: br-phy"},{"line_number":1720,"context_line":"    # Optional parameter for configuring bonding in OVS-DPDK"},{"line_number":1721,"context_line":"    #   - name: br-phy-bond0"},{"line_number":1722,"context_line":"    # bonds:"},{"line_number":1723,"context_line":"    #   - name: dpdkbond0"},{"line_number":1724,"context_line":"    #     bridge: br-phy-bond0"},{"line_number":1725,"context_line":"    #     # The IP from the first nic in nics list shall be used"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7faddb67_3ec76f15","line":1722,"range":{"start_line":1722,"start_character":6,"end_line":1722,"end_character":11},"updated":"2019-07-08 08:13:15.000000000","message":"I initially thought that adding the bonds section like this here feels like duplicating the port configuration parameters (mtu size, queue sizes, etc) in different places. I tried to restructure this config section using a generic construct like a \"port\", but I came to the conclusion that this generalized approach would be harder to read and understand. So, doing it like you propose is fine for me.","commit_id":"c8e16dec7cfdb4a77fdb979b747f409953b46e7d"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"f832ebcc7829354e1ad62c4a733427c9e189f704","unresolved":false,"context_lines":[{"line_number":1978,"context_line":"    #     migrate_ip: true"},{"line_number":1979,"context_line":"    #     mtu: 2000"},{"line_number":1980,"context_line":"    #     n_rxq: 2"},{"line_number":1981,"context_line":"    #     pmd_rxq_affinity: \"0:3,1:27\""},{"line_number":1982,"context_line":"    #     ofport_request: 1"},{"line_number":1983,"context_line":"    #     n_rxq_size: 1024"},{"line_number":1984,"context_line":"    #     n_txq_size: 1024"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"7faddb67_aff2129a","line":1981,"range":{"start_line":1981,"start_character":0,"end_line":1981,"end_character":38},"updated":"2019-08-28 19:21:37.000000000","message":"suggest moving to per-nic","commit_id":"9dd3231fd6415726eb1fb3d1e6f4fe75f0b0acb0"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"87cca027058696ab34318030b4165f9a8c66037c","unresolved":false,"context_lines":[{"line_number":1978,"context_line":"    #     migrate_ip: true"},{"line_number":1979,"context_line":"    #     mtu: 2000"},{"line_number":1980,"context_line":"    #     n_rxq: 2"},{"line_number":1981,"context_line":"    #     pmd_rxq_affinity: \"0:3,1:27\""},{"line_number":1982,"context_line":"    #     ofport_request: 1"},{"line_number":1983,"context_line":"    #     n_rxq_size: 1024"},{"line_number":1984,"context_line":"    #     n_txq_size: 1024"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"7faddb67_e8b32009","line":1981,"range":{"start_line":1981,"start_character":0,"end_line":1981,"end_character":38},"in_reply_to":"7faddb67_aff2129a","updated":"2019-08-28 22:19:08.000000000","message":"Done","commit_id":"9dd3231fd6415726eb1fb3d1e6f4fe75f0b0acb0"}],"neutron/values_overrides/dpdk-bond-rocky-ubuntu_bionic.yaml":[{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"f832ebcc7829354e1ad62c4a733427c9e189f704","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        mtu: 2000"},{"line_number":38,"context_line":"        # The IP from the first nic in nics list shall be used"},{"line_number":39,"context_line":"        migrate_ip: true"},{"line_number":40,"context_line":"        n_rxq: 2"},{"line_number":41,"context_line":"        n_rxq_size: 1024"},{"line_number":42,"context_line":"        n_txq_size: 1024"},{"line_number":43,"context_line":"        ovs_options: \"bond_mode\u003dactive-backup\""}],"source_content_type":"text/x-yaml","patch_set":27,"id":"7faddb67_6f665abe","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":16},"updated":"2019-08-28 19:21:37.000000000","message":"It looks like this value applies to each bond member, and is not the total number of queues for the entire bond. It might be worth clarifying this.\n\n(i.e. n_rxq: 2 in this example will be 4 rx queues total)","commit_id":"9dd3231fd6415726eb1fb3d1e6f4fe75f0b0acb0"},{"author":{"_account_id":27589,"name":"Deepak Tiwari","email":"deepak.tiwari@aricent.com","username":"deepak.tiwari"},"change_message_id":"87cca027058696ab34318030b4165f9a8c66037c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        mtu: 2000"},{"line_number":38,"context_line":"        # The IP from the first nic in nics list shall be used"},{"line_number":39,"context_line":"        migrate_ip: true"},{"line_number":40,"context_line":"        n_rxq: 2"},{"line_number":41,"context_line":"        n_rxq_size: 1024"},{"line_number":42,"context_line":"        n_txq_size: 1024"},{"line_number":43,"context_line":"        ovs_options: \"bond_mode\u003dactive-backup\""}],"source_content_type":"text/x-yaml","patch_set":27,"id":"7faddb67_28ba98e0","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":16},"in_reply_to":"7faddb67_6f665abe","updated":"2019-08-28 22:19:08.000000000","message":"Added the clarification","commit_id":"9dd3231fd6415726eb1fb3d1e6f4fe75f0b0acb0"}]}
