)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"8414ba24f9b2868e980f6141c4bf2309b7bafe16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e796b290_d48e2a41","updated":"2026-06-05 19:54:28.000000000","message":"Can you please also add the release note for this change?","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"f8028ad8e6328064fa751a654c9c933220aa4191","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f36d75fb_40f82da4","updated":"2026-06-08 15:18:37.000000000","message":"Please don\u0027t forget to add a release note for this change.\n\nUse the command `reno new ovn` which will create a file releasenotes/notes/ovn-\u003crandom_suffix\u003e.yaml from the release note template and then you can update this file and describe the change.","commit_id":"b82b393dc41b21c8d6129b1fe534e23cb21e53a6"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"daefbf9177f75f9948688fc77f2fb1759ae93bb1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2397ae5d_b4e01677","updated":"2026-06-16 14:29:57.000000000","message":"recheck","commit_id":"70b79e3cffbce70b85a7ff3bdfd8b58671f6860a"}],"ovn/templates/bin/_ovn-bgp-agent.sh.tpl":[{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"e6dca6afae5d5a942927280c068d4ac9a2d57589","unresolved":true,"context_lines":[{"line_number":18,"context_line":"COMMAND\u003d\"${@:-start}\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"function start () {"},{"line_number":21,"context_line":"  /usr/lib/frr/frrinit.sh start"},{"line_number":22,"context_line":"  exec ovn-bgp-agent --config-file /etc/ovn-bgp-agent/bgp-agent.conf"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-smarty","patch_set":4,"id":"c5c4716e_7a8d16c7","line":21,"updated":"2026-06-01 17:21:37.000000000","message":"Wouldn\u0027t it be a better approach to run frr as a sidecar instead?","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0606771bc9591a6d65122bd00bc0e11379c159d0","unresolved":true,"context_lines":[{"line_number":18,"context_line":"COMMAND\u003d\"${@:-start}\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"function start () {"},{"line_number":21,"context_line":"  /usr/lib/frr/frrinit.sh start"},{"line_number":22,"context_line":"  exec ovn-bgp-agent --config-file /etc/ovn-bgp-agent/bgp-agent.conf"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-smarty","patch_set":4,"id":"494c1656_d99140ad","line":21,"in_reply_to":"42211cd9_0fbe9c68","updated":"2026-06-02 21:42:58.000000000","message":"I understand your approach.\n\n\u003e And avoid version diff between vtysh client and FRR daemon.\n\nNot sure I agree with this one since both containers can be based on the same image.","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39109,"name":"FIN Matthieu","display_name":"MatthieuFin","email":"matthieu2717@gmail.com","username":"matthieufin"},"change_message_id":"6d7489357aa289b9b40c23750a0672604b7ea950","unresolved":true,"context_lines":[{"line_number":18,"context_line":"COMMAND\u003d\"${@:-start}\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"function start () {"},{"line_number":21,"context_line":"  /usr/lib/frr/frrinit.sh start"},{"line_number":22,"context_line":"  exec ovn-bgp-agent --config-file /etc/ovn-bgp-agent/bgp-agent.conf"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-smarty","patch_set":4,"id":"83d1600d_aff5fcf9","line":21,"in_reply_to":"494c1656_d99140ad","updated":"2026-06-03 07:21:56.000000000","message":"Obviously ! I did\u0027nt think about this a way to use same image in both containers ...\nWe will take a dive in this direction which seems better than run different processes in same container","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"bb258d6c97180e3ae5914ba9be829c9fee13e2a1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"COMMAND\u003d\"${@:-start}\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"function start () {"},{"line_number":21,"context_line":"  /usr/lib/frr/frrinit.sh start"},{"line_number":22,"context_line":"  exec ovn-bgp-agent --config-file /etc/ovn-bgp-agent/bgp-agent.conf"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-smarty","patch_set":4,"id":"3220a8f6_e656ae86","line":21,"in_reply_to":"83d1600d_aff5fcf9","updated":"2026-06-04 14:47:16.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39109,"name":"FIN Matthieu","display_name":"MatthieuFin","email":"matthieu2717@gmail.com","username":"matthieufin"},"change_message_id":"e2ccb6e623fd1886b8b100df91ffe35a33102fa0","unresolved":true,"context_lines":[{"line_number":18,"context_line":"COMMAND\u003d\"${@:-start}\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"function start () {"},{"line_number":21,"context_line":"  /usr/lib/frr/frrinit.sh start"},{"line_number":22,"context_line":"  exec ovn-bgp-agent --config-file /etc/ovn-bgp-agent/bgp-agent.conf"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-smarty","patch_set":4,"id":"42211cd9_0fbe9c68","line":21,"in_reply_to":"c5c4716e_7a8d16c7","updated":"2026-06-01 17:51:04.000000000","message":"That was actually our initial approach. However, OVN BGP Agent relies on [/usr/bin/vtysh](https://opendev.org/openstack/ovn-bgp-agent/src/branch/master/ovn_bgp_agent/privileged/vtysh.py#L38) binary to communicate with `FRR`, and `vtysh` is provided by the Ubuntu [frr](https://opendev.org/openstack/openstack-helm-images/src/commit/009649ea8cb166a188d5a1294a8db0d7b2294927/bindep.txt#L12) package itself. This creates a fairly strong dependency between the agent and the FRR installation.\n\nGiven that dependency, we decided to keep the setup simple and run the FRR daemon directly within the same image rather than introducing a separate sidecar container. And avoid version diff between `vtysh` client and FRR daemon.","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"4590c597ab429681eed70f7a9ad0132539c60256","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"function stop () {"},{"line_number":26,"context_line":"  /usr/lib/frr/frrinit.sh stop || true"},{"line_number":27,"context_line":"  kill -TERM 1"},{"line_number":28,"context_line":"}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"$COMMAND"}],"source_content_type":"text/x-smarty","patch_set":4,"id":"b37d77be_1a361a4f","line":27,"updated":"2026-06-01 19:11:59.000000000","message":"in case you use shareProcessNamespace: true the PID 1 is gonna be the pause container. So this will be ignored.","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"bb258d6c97180e3ae5914ba9be829c9fee13e2a1","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"function stop () {"},{"line_number":26,"context_line":"  /usr/lib/frr/frrinit.sh stop || true"},{"line_number":27,"context_line":"  kill -TERM 1"},{"line_number":28,"context_line":"}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"$COMMAND"}],"source_content_type":"text/x-smarty","patch_set":4,"id":"c62f1967_96fbd517","line":27,"in_reply_to":"b37d77be_1a361a4f","updated":"2026-06-04 14:47:16.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"}],"ovn/templates/bin/_ovn-frr.sh.tpl":[{"author":{"_account_id":16580,"name":"Tyler Wilson","email":"tyler@ghosty.pw"},"change_message_id":"caa34fdc3d9fda8e9b4449c4235bfde19e22c590","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"function start () {"},{"line_number":21,"context_line":"  /usr/lib/frr/frrinit.sh start"},{"line_number":22,"context_line":"  exec sleep infinity"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"function stop () {"}],"source_content_type":"text/x-smarty","patch_set":9,"id":"bf546b2d_9230356a","line":22,"updated":"2026-06-09 16:57:12.000000000","message":"Is this the proper way to start this container? Wouldn\u0027t we have 2 processes here?\nThe official dockerfile does it a bit differently \nhttps://github.com/FRRouting/frr/blob/master/docker/alpine/docker-start","commit_id":"b82b393dc41b21c8d6129b1fe534e23cb21e53a6"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"58c0747ec7bd858e61ee645ea77949d5326a79a7","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"function start () {"},{"line_number":21,"context_line":"  /usr/lib/frr/frrinit.sh start"},{"line_number":22,"context_line":"  exec sleep infinity"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"function stop () {"}],"source_content_type":"text/x-smarty","patch_set":9,"id":"d6fc74fa_87053e4e","line":22,"in_reply_to":"bf546b2d_9230356a","updated":"2026-06-15 11:11:23.000000000","message":"Done","commit_id":"b82b393dc41b21c8d6129b1fe534e23cb21e53a6"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"45d0c4e9b960a5cf8e5033a3fdc91ad63c9c05a4","unresolved":true,"context_lines":[{"line_number":31,"context_line":"fi"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"source /usr/lib/frr/frrcommon.sh"},{"line_number":34,"context_line":"/usr/lib/frr/watchfrr $(daemon_list)"}],"source_content_type":"text/x-smarty","patch_set":12,"id":"fa99e953_cce2120e","line":34,"updated":"2026-06-17 16:45:29.000000000","message":"since now the native frr watcher is used probably it is better to exec the watchfrr. Bash does not forward SIGTERM to its children, so watchfrr never gets the shutdown signal from kubelet.","commit_id":"d9ecd6839f24a1c24d065927cf6327a9ddbef44f"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"16148e495230682e0403327632c1500a9610ccac","unresolved":false,"context_lines":[{"line_number":31,"context_line":"fi"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"source /usr/lib/frr/frrcommon.sh"},{"line_number":34,"context_line":"/usr/lib/frr/watchfrr $(daemon_list)"}],"source_content_type":"text/x-smarty","patch_set":12,"id":"2b326812_d90dfb53","line":34,"in_reply_to":"fa99e953_cce2120e","updated":"2026-06-24 07:33:17.000000000","message":"Done","commit_id":"d9ecd6839f24a1c24d065927cf6327a9ddbef44f"}],"ovn/templates/daemonset-ovn-bgp-agent.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"4590c597ab429681eed70f7a9ad0132539c60256","unresolved":true,"context_lines":[{"line_number":13,"context_line":"*/}}"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"{{- define \"ovn.bgp_agent.daemonset\" }}"},{"line_number":16,"context_line":"{{- $daemonset :\u003d index . 0 }}"},{"line_number":17,"context_line":"{{- $configMapName :\u003d index . 1 }}"},{"line_number":18,"context_line":"{{- $serviceAccountName :\u003d index . 2 }}"},{"line_number":19,"context_line":"{{- $envAll :\u003d index . 3 }}"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"e61eaa78_5f45f55b","line":16,"updated":"2026-06-01 19:11:59.000000000","message":"$daemonset is never referenced","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"7c38ef2577533488c78f81aa0a8386bfd99db369","unresolved":false,"context_lines":[{"line_number":13,"context_line":"*/}}"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"{{- define \"ovn.bgp_agent.daemonset\" }}"},{"line_number":16,"context_line":"{{- $daemonset :\u003d index . 0 }}"},{"line_number":17,"context_line":"{{- $configMapName :\u003d index . 1 }}"},{"line_number":18,"context_line":"{{- $serviceAccountName :\u003d index . 2 }}"},{"line_number":19,"context_line":"{{- $envAll :\u003d index . 3 }}"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"6fe2b2ea_c5a84e63","line":16,"in_reply_to":"e61eaa78_5f45f55b","updated":"2026-06-03 15:45:05.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0606771bc9591a6d65122bd00bc0e11379c159d0","unresolved":true,"context_lines":[{"line_number":52,"context_line":"{{ dict \"envAll\" $envAll \"application\" \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_pod_security_context\" | indent 6 }}"},{"line_number":53,"context_line":"      serviceAccountName: {{ $serviceAccountName }}"},{"line_number":54,"context_line":"      hostNetwork: true"},{"line_number":55,"context_line":"      shareProcessNamespace: true"},{"line_number":56,"context_line":"      dnsPolicy: {{ .Values.pod.dns_policy }}"},{"line_number":57,"context_line":"{{ if $envAll.Values.pod.tolerations.ovn_bgp_agent.enabled }}"},{"line_number":58,"context_line":"{{ tuple $envAll \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_tolerations\" | indent 6 }}"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"aeb1b765_6b71ac0d","line":55,"updated":"2026-06-02 21:42:58.000000000","message":"Why is this required if both ovn-bgp-agent and frr are running in the same container?","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"7c38ef2577533488c78f81aa0a8386bfd99db369","unresolved":false,"context_lines":[{"line_number":52,"context_line":"{{ dict \"envAll\" $envAll \"application\" \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_pod_security_context\" | indent 6 }}"},{"line_number":53,"context_line":"      serviceAccountName: {{ $serviceAccountName }}"},{"line_number":54,"context_line":"      hostNetwork: true"},{"line_number":55,"context_line":"      shareProcessNamespace: true"},{"line_number":56,"context_line":"      dnsPolicy: {{ .Values.pod.dns_policy }}"},{"line_number":57,"context_line":"{{ if $envAll.Values.pod.tolerations.ovn_bgp_agent.enabled }}"},{"line_number":58,"context_line":"{{ tuple $envAll \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_tolerations\" | indent 6 }}"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7ed77f2f_8ad2e82b","line":55,"in_reply_to":"aeb1b765_6b71ac0d","updated":"2026-06-03 15:45:05.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0606771bc9591a6d65122bd00bc0e11379c159d0","unresolved":true,"context_lines":[{"line_number":67,"context_line":"{{ tuple $envAll $envAll.Values.pod.resources.ovn_bgp_agent | include \"helm-toolkit.snippets.kubernetes_resources\" | indent 10 }}"},{"line_number":68,"context_line":"{{ dict \"envAll\" $envAll \"application\" \"ovn_bgp_agent\" \"container\" \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_container_security_context\" | indent 10 }}"},{"line_number":69,"context_line":"          command:"},{"line_number":70,"context_line":"            - /tmp/ovn-bgp-agent.sh"},{"line_number":71,"context_line":"            - start"},{"line_number":72,"context_line":"          lifecycle:"},{"line_number":73,"context_line":"            preStop:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"c49cdad2_f614ce1e","line":70,"updated":"2026-06-02 21:42:58.000000000","message":"Would it be better to use /usr/bin/tini to invoke /tmp/ovn-bgp-agent.sh?\nIt can take care of the signaling and avoid creating zombies.\nIt seems to be a better approach if multiple processes/daemons are running within the same container.","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"7c38ef2577533488c78f81aa0a8386bfd99db369","unresolved":false,"context_lines":[{"line_number":67,"context_line":"{{ tuple $envAll $envAll.Values.pod.resources.ovn_bgp_agent | include \"helm-toolkit.snippets.kubernetes_resources\" | indent 10 }}"},{"line_number":68,"context_line":"{{ dict \"envAll\" $envAll \"application\" \"ovn_bgp_agent\" \"container\" \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_container_security_context\" | indent 10 }}"},{"line_number":69,"context_line":"          command:"},{"line_number":70,"context_line":"            - /tmp/ovn-bgp-agent.sh"},{"line_number":71,"context_line":"            - start"},{"line_number":72,"context_line":"          lifecycle:"},{"line_number":73,"context_line":"            preStop:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"cfcd478d_e321b8d6","line":70,"in_reply_to":"c49cdad2_f614ce1e","updated":"2026-06-03 15:45:05.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"4590c597ab429681eed70f7a9ad0132539c60256","unresolved":true,"context_lines":[{"line_number":96,"context_line":"            - name: ovn-etc-frr-conf"},{"line_number":97,"context_line":"              mountPath: /etc/frr/frr.conf"},{"line_number":98,"context_line":"              subPath: frr.conf"},{"line_number":99,"context_line":"              readOnly: false"},{"line_number":100,"context_line":"            - name: run-openvswitch"},{"line_number":101,"context_line":"              mountPath: /run/openvswitch"},{"line_number":102,"context_line":"            - name: run-ovn"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf2dbd35_c99aec57","line":99,"updated":"2026-06-01 19:11:59.000000000","message":"since ovn-etc-frr-conf volume is backed with secret it is gonna be always read only.","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"7c38ef2577533488c78f81aa0a8386bfd99db369","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            - name: ovn-etc-frr-conf"},{"line_number":97,"context_line":"              mountPath: /etc/frr/frr.conf"},{"line_number":98,"context_line":"              subPath: frr.conf"},{"line_number":99,"context_line":"              readOnly: false"},{"line_number":100,"context_line":"            - name: run-openvswitch"},{"line_number":101,"context_line":"              mountPath: /run/openvswitch"},{"line_number":102,"context_line":"            - name: run-ovn"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"6feda0fd_28dcb8e5","line":99,"in_reply_to":"bf2dbd35_c99aec57","updated":"2026-06-03 15:45:05.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"8414ba24f9b2868e980f6141c4bf2309b7bafe16","unresolved":true,"context_lines":[{"line_number":40,"context_line":"  selector:"},{"line_number":41,"context_line":"    matchLabels:"},{"line_number":42,"context_line":"{{ tuple $envAll \"ovn\" \"ovn-bgp-agent\" | include \"helm-toolkit.snippets.kubernetes_metadata_labels\" | indent 6 }}"},{"line_number":43,"context_line":"{{ tuple $envAll \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_upgrades_daemonset\" | indent 2 }}"},{"line_number":44,"context_line":"  template:"},{"line_number":45,"context_line":"    metadata:"},{"line_number":46,"context_line":"      labels:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9d0f6f12_98833b80","line":43,"updated":"2026-06-05 19:54:28.000000000","message":"This conflicts with the updateStrategy defined on the line 36","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"a85f5c39ee02be52e1585bd26617a151cc9e0f44","unresolved":false,"context_lines":[{"line_number":40,"context_line":"  selector:"},{"line_number":41,"context_line":"    matchLabels:"},{"line_number":42,"context_line":"{{ tuple $envAll \"ovn\" \"ovn-bgp-agent\" | include \"helm-toolkit.snippets.kubernetes_metadata_labels\" | indent 6 }}"},{"line_number":43,"context_line":"{{ tuple $envAll \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_upgrades_daemonset\" | indent 2 }}"},{"line_number":44,"context_line":"  template:"},{"line_number":45,"context_line":"    metadata:"},{"line_number":46,"context_line":"      labels:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"41fdad71_9c7d0faa","line":43,"in_reply_to":"9d0f6f12_98833b80","updated":"2026-06-08 08:25:54.000000000","message":"Done","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"8414ba24f9b2868e980f6141c4bf2309b7bafe16","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        configmap-bin-hash: {{ tuple \"configmap-bin.yaml\" . | include \"helm-toolkit.utils.hash\" }}"},{"line_number":51,"context_line":"        configmap-etc-hash: {{ tuple \"configmap-etc.yaml\" . | include \"helm-toolkit.utils.hash\" }}"},{"line_number":52,"context_line":"{{ tuple \"ovn_bgp_agent\" . | include \"helm-toolkit.snippets.custom_pod_annotations\" | indent 8 }}"},{"line_number":53,"context_line":"{{ dict \"envAll\" $envAll \"podName\" \"ovn-bgp-agent\" \"containerNames\" (list \"ovn-bgp-agent\" \"init\") | include \"helm-toolkit.snippets.kubernetes_mandatory_access_control_annotation\" | indent 8 }}"},{"line_number":54,"context_line":"    spec:"},{"line_number":55,"context_line":"{{ dict \"envAll\" $envAll \"application\" \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_pod_security_context\" | indent 6 }}"},{"line_number":56,"context_line":"      serviceAccountName: {{ $serviceAccountName }}"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"8d16f8d4_774b4209","line":53,"updated":"2026-06-05 19:54:28.000000000","message":"probably here we also need to add \"frr\" container","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"a85f5c39ee02be52e1585bd26617a151cc9e0f44","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        configmap-bin-hash: {{ tuple \"configmap-bin.yaml\" . | include \"helm-toolkit.utils.hash\" }}"},{"line_number":51,"context_line":"        configmap-etc-hash: {{ tuple \"configmap-etc.yaml\" . | include \"helm-toolkit.utils.hash\" }}"},{"line_number":52,"context_line":"{{ tuple \"ovn_bgp_agent\" . | include \"helm-toolkit.snippets.custom_pod_annotations\" | indent 8 }}"},{"line_number":53,"context_line":"{{ dict \"envAll\" $envAll \"podName\" \"ovn-bgp-agent\" \"containerNames\" (list \"ovn-bgp-agent\" \"init\") | include \"helm-toolkit.snippets.kubernetes_mandatory_access_control_annotation\" | indent 8 }}"},{"line_number":54,"context_line":"    spec:"},{"line_number":55,"context_line":"{{ dict \"envAll\" $envAll \"application\" \"ovn_bgp_agent\" | include \"helm-toolkit.snippets.kubernetes_pod_security_context\" | indent 6 }}"},{"line_number":56,"context_line":"      serviceAccountName: {{ $serviceAccountName }}"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7c1a5b56_14203e82","line":53,"in_reply_to":"8d16f8d4_774b4209","updated":"2026-06-08 08:25:54.000000000","message":"Done","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"8414ba24f9b2868e980f6141c4bf2309b7bafe16","unresolved":true,"context_lines":[{"line_number":79,"context_line":"          volumeMounts:"},{"line_number":80,"context_line":"            - name: pod-tmp"},{"line_number":81,"context_line":"              mountPath: /tmp"},{"line_number":82,"context_line":"            - name: ovn-bin"},{"line_number":83,"context_line":"              mountPath: /tmp/ovn-bgp-agent.sh"},{"line_number":84,"context_line":"              subPath: ovn-bgp-agent.sh"},{"line_number":85,"context_line":"              readOnly: true"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dabe3b8b_40a7ace6","line":82,"updated":"2026-06-05 19:54:28.000000000","message":"The mount is not needed here.","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"a85f5c39ee02be52e1585bd26617a151cc9e0f44","unresolved":false,"context_lines":[{"line_number":79,"context_line":"          volumeMounts:"},{"line_number":80,"context_line":"            - name: pod-tmp"},{"line_number":81,"context_line":"              mountPath: /tmp"},{"line_number":82,"context_line":"            - name: ovn-bin"},{"line_number":83,"context_line":"              mountPath: /tmp/ovn-bgp-agent.sh"},{"line_number":84,"context_line":"              subPath: ovn-bgp-agent.sh"},{"line_number":85,"context_line":"              readOnly: true"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"bca93e5b_aaa45b58","line":82,"in_reply_to":"dabe3b8b_40a7ace6","updated":"2026-06-08 08:25:54.000000000","message":"Done","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"8414ba24f9b2868e980f6141c4bf2309b7bafe16","unresolved":true,"context_lines":[{"line_number":142,"context_line":"            items:"},{"line_number":143,"context_line":"              - key: bgp-agent.conf"},{"line_number":144,"context_line":"                path: bgp-agent.conf"},{"line_number":145,"context_line":"        - name: ovn-etc-frr-daemons"},{"line_number":146,"context_line":"          secret:"},{"line_number":147,"context_line":"            secretName: {{ $configMapName }}"},{"line_number":148,"context_line":"            defaultMode: 0444"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7942ea8d_396e8cba","line":145,"updated":"2026-06-05 19:54:28.000000000","message":"this two volumes probably must be gated by pod.sidecars.frr","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"a85f5c39ee02be52e1585bd26617a151cc9e0f44","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            items:"},{"line_number":143,"context_line":"              - key: bgp-agent.conf"},{"line_number":144,"context_line":"                path: bgp-agent.conf"},{"line_number":145,"context_line":"        - name: ovn-etc-frr-daemons"},{"line_number":146,"context_line":"          secret:"},{"line_number":147,"context_line":"            secretName: {{ $configMapName }}"},{"line_number":148,"context_line":"            defaultMode: 0444"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"0350db04_ffe174e6","line":145,"in_reply_to":"7942ea8d_396e8cba","updated":"2026-06-08 08:25:54.000000000","message":"Done","commit_id":"06df1afb979d1f5fccf4bc0a380294ad88bac969"}],"ovn/values.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"4590c597ab429681eed70f7a9ad0132539c60256","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    image_repo_sync: quay.io/airshipit/docker:27.5.0"},{"line_number":30,"context_line":"    vector: docker.io/timberio/vector:0.51.1-debian"},{"line_number":31,"context_line":"    ovn_logging_parser: quay.io/airshipit/neutron:2026.1-ubuntu_noble"},{"line_number":32,"context_line":"    ovn_bgp_agent: quay.io/airshipit/ovn-bgp-agent:2026.1-ubuntu_noble  # This image does not exist yet"},{"line_number":33,"context_line":"  pull_policy: \"IfNotPresent\""},{"line_number":34,"context_line":"  local_registry:"},{"line_number":35,"context_line":"    active: false"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1dc7e348_8692f60f","line":32,"updated":"2026-06-01 19:11:59.000000000","message":"the image already exists","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"7c38ef2577533488c78f81aa0a8386bfd99db369","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    image_repo_sync: quay.io/airshipit/docker:27.5.0"},{"line_number":30,"context_line":"    vector: docker.io/timberio/vector:0.51.1-debian"},{"line_number":31,"context_line":"    ovn_logging_parser: quay.io/airshipit/neutron:2026.1-ubuntu_noble"},{"line_number":32,"context_line":"    ovn_bgp_agent: quay.io/airshipit/ovn-bgp-agent:2026.1-ubuntu_noble  # This image does not exist yet"},{"line_number":33,"context_line":"  pull_policy: \"IfNotPresent\""},{"line_number":34,"context_line":"  local_registry:"},{"line_number":35,"context_line":"    active: false"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"8bc3ad61_4894257e","line":32,"in_reply_to":"1dc7e348_8692f60f","updated":"2026-06-03 15:45:05.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"4590c597ab429681eed70f7a9ad0132539c60256","unresolved":true,"context_lines":[{"line_number":156,"context_line":"      expose_tenant_networks: false"},{"line_number":157,"context_line":"      expose_ipv6_gua_tenant_networks: false"},{"line_number":158,"context_line":"      driver: ovn_bgp_driver"},{"line_number":159,"context_line":"      bgp_router_id: 1.2.3.4"},{"line_number":160,"context_line":"      bgp_AS: 64999"},{"line_number":161,"context_line":"      bgp_nic: bgp-nic"},{"line_number":162,"context_line":"      bgp_vrf: bgp-vrf"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1241c6b5_98a9cefa","line":159,"updated":"2026-06-01 19:11:59.000000000","message":"Probably it is better to leave these lines commented so users can use them as a reference, otherwise it\u0027s going to silently advertise bogus router id. The same for other bgp parameters. \n\nHowever I am not sure bgp agent will fail loudly if these parameters are not specified at all.","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"993ea393a53568cdbd3ba56790008fa2b34c42cd","unresolved":false,"context_lines":[{"line_number":156,"context_line":"      expose_tenant_networks: false"},{"line_number":157,"context_line":"      expose_ipv6_gua_tenant_networks: false"},{"line_number":158,"context_line":"      driver: ovn_bgp_driver"},{"line_number":159,"context_line":"      bgp_router_id: 1.2.3.4"},{"line_number":160,"context_line":"      bgp_AS: 64999"},{"line_number":161,"context_line":"      bgp_nic: bgp-nic"},{"line_number":162,"context_line":"      bgp_vrf: bgp-vrf"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"0317362b_acd722de","line":159,"in_reply_to":"0e14a1bc_25cc7033","updated":"2026-06-04 14:46:56.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0606771bc9591a6d65122bd00bc0e11379c159d0","unresolved":true,"context_lines":[{"line_number":156,"context_line":"      expose_tenant_networks: false"},{"line_number":157,"context_line":"      expose_ipv6_gua_tenant_networks: false"},{"line_number":158,"context_line":"      driver: ovn_bgp_driver"},{"line_number":159,"context_line":"      bgp_router_id: 1.2.3.4"},{"line_number":160,"context_line":"      bgp_AS: 64999"},{"line_number":161,"context_line":"      bgp_nic: bgp-nic"},{"line_number":162,"context_line":"      bgp_vrf: bgp-vrf"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"0e14a1bc_25cc7033","line":159,"in_reply_to":"1241c6b5_98a9cefa","updated":"2026-06-02 21:42:58.000000000","message":"I wonder if the \"required\" helm template function can be used to force the user to provide the value.","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"4590c597ab429681eed70f7a9ad0132539c60256","unresolved":true,"context_lines":[{"line_number":161,"context_line":"      bgp_nic: bgp-nic"},{"line_number":162,"context_line":"      bgp_vrf: bgp-vrf"},{"line_number":163,"context_line":"      bgp_vrf_table_id: 10"},{"line_number":164,"context_line":"      ovsdb_connection: \"unix:/var/run/openvswitch/db.sock\""},{"line_number":165,"context_line":"    local_ovn_cluster:"},{"line_number":166,"context_line":"      provider_networks_pool_prefixes: \"\""},{"line_number":167,"context_line":"  frr_daemons: |"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1712ae43_19d643cd","line":164,"updated":"2026-06-01 19:11:59.000000000","message":"The daemonset mounts /run/openvswitch not /var/run/openvswitch. This is only gonna work if there is a symlink /var/run -\u003e /run","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"7c38ef2577533488c78f81aa0a8386bfd99db369","unresolved":false,"context_lines":[{"line_number":161,"context_line":"      bgp_nic: bgp-nic"},{"line_number":162,"context_line":"      bgp_vrf: bgp-vrf"},{"line_number":163,"context_line":"      bgp_vrf_table_id: 10"},{"line_number":164,"context_line":"      ovsdb_connection: \"unix:/var/run/openvswitch/db.sock\""},{"line_number":165,"context_line":"    local_ovn_cluster:"},{"line_number":166,"context_line":"      provider_networks_pool_prefixes: \"\""},{"line_number":167,"context_line":"  frr_daemons: |"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bcec282f_e34f5eae","line":164,"in_reply_to":"1712ae43_19d643cd","updated":"2026-06-03 15:45:05.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"4590c597ab429681eed70f7a9ad0132539c60256","unresolved":true,"context_lines":[{"line_number":271,"context_line":"      container:"},{"line_number":272,"context_line":"        ovn_bgp_agent:"},{"line_number":273,"context_line":"          readOnlyRootFilesystem: false"},{"line_number":274,"context_line":"          privileged: true"},{"line_number":275,"context_line":"          runAsUser: 0"},{"line_number":276,"context_line":"          capabilities:"},{"line_number":277,"context_line":"            add:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3c5ba4d0_80aaea92","line":274,"updated":"2026-06-01 19:11:59.000000000","message":"privileged: true seems to contradict with the explicit list of capabilities.","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"7c38ef2577533488c78f81aa0a8386bfd99db369","unresolved":false,"context_lines":[{"line_number":271,"context_line":"      container:"},{"line_number":272,"context_line":"        ovn_bgp_agent:"},{"line_number":273,"context_line":"          readOnlyRootFilesystem: false"},{"line_number":274,"context_line":"          privileged: true"},{"line_number":275,"context_line":"          runAsUser: 0"},{"line_number":276,"context_line":"          capabilities:"},{"line_number":277,"context_line":"            add:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"10cce594_f0e7c522","line":274,"in_reply_to":"1e65c40a_c319909f","updated":"2026-06-03 15:45:05.000000000","message":"Done","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0606771bc9591a6d65122bd00bc0e11379c159d0","unresolved":true,"context_lines":[{"line_number":271,"context_line":"      container:"},{"line_number":272,"context_line":"        ovn_bgp_agent:"},{"line_number":273,"context_line":"          readOnlyRootFilesystem: false"},{"line_number":274,"context_line":"          privileged: true"},{"line_number":275,"context_line":"          runAsUser: 0"},{"line_number":276,"context_line":"          capabilities:"},{"line_number":277,"context_line":"            add:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1e65c40a_c319909f","line":274,"in_reply_to":"3c5ba4d0_80aaea92","updated":"2026-06-02 21:42:58.000000000","message":"Which folders/files are required to be writable and can\u0027t volumes be used instead?","commit_id":"7601544859a98c1d7838940ec34483fdd031d568"}],"releasenotes/notes/ovn-a1088111f66d8601.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"28a5375a5c6010afe00f2c88984ee568555b7f23","unresolved":true,"context_lines":[{"line_number":5,"context_line":"# To create a new release note for a common change (when multiple charts"},{"line_number":6,"context_line":"# are changed):"},{"line_number":7,"context_line":"# reno new common"},{"line_number":8,"context_line":"\u003cchart_name\u003e:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Adds a new DaemonSet template for ovn-bgp-agent, gated on"},{"line_number":11,"context_line":"    `manifests.daemonset_ovn_bgp_agent`. The agent runs on nodes where both"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"115effea_469e74ba","line":8,"updated":"2026-06-16 19:02:24.000000000","message":"this probably must be ovn","commit_id":"70b79e3cffbce70b85a7ff3bdfd8b58671f6860a"},{"author":{"_account_id":39150,"name":"Tristan","display_name":"Tristan","email":"tristan.groult@gmail.com","username":"Tristan"},"change_message_id":"a0da1fc05bd45694fb15f61c343240340b8a9736","unresolved":false,"context_lines":[{"line_number":5,"context_line":"# To create a new release note for a common change (when multiple charts"},{"line_number":6,"context_line":"# are changed):"},{"line_number":7,"context_line":"# reno new common"},{"line_number":8,"context_line":"\u003cchart_name\u003e:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Adds a new DaemonSet template for ovn-bgp-agent, gated on"},{"line_number":11,"context_line":"    `manifests.daemonset_ovn_bgp_agent`. The agent runs on nodes where both"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"eb366688_f297656e","line":8,"in_reply_to":"115effea_469e74ba","updated":"2026-06-17 09:41:00.000000000","message":"Done","commit_id":"70b79e3cffbce70b85a7ff3bdfd8b58671f6860a"}]}
