)]}'
{"etc/octavia.conf":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afa602cc7c59675a787c5eaf997b0d14838cfe61","unresolved":true,"context_lines":[{"line_number":449,"context_line":"# Ubuntu: /etc/netns/amphora-haproxy/network/interfaces.d/"},{"line_number":450,"context_line":"# Centos/fedora/rhel: /etc/netns/amphora-haproxy/sysconfig/network-scripts/"},{"line_number":451,"context_line":"#"},{"line_number":452,"context_line":"# agent_server_network_dir \u003d"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"# agent_request_read_timeout \u003d 180"},{"line_number":455,"context_line":""}],"source_content_type":"text/plain","patch_set":11,"id":"2c43ba93_b42cec00","line":452,"updated":"2021-06-24 14:42:09.000000000","message":"This should go away right?\n\nThe intent of this patch is to no longer use the OS interfaces files, so we should not be creating/using these directories any more.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}],"octavia/amphorae/backends/agent/agent_jinja_cfg.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afa602cc7c59675a787c5eaf997b0d14838cfe61","unresolved":true,"context_lines":[{"line_number":38,"context_line":"        return self.agent_template.render("},{"line_number":39,"context_line":"            {\u0027agent_server_ca\u0027: CONF.amphora_agent.agent_server_ca,"},{"line_number":40,"context_line":"             \u0027agent_server_cert\u0027: CONF.amphora_agent.agent_server_cert,"},{"line_number":41,"context_line":"             \u0027agent_server_network_dir\u0027:"},{"line_number":42,"context_line":"                 CONF.amphora_agent.agent_server_network_dir,"},{"line_number":43,"context_line":"             \u0027agent_request_read_timeout\u0027:"},{"line_number":44,"context_line":"                 CONF.amphora_agent.agent_request_read_timeout,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bac015cf_df1b7f19","line":41,"updated":"2021-06-24 14:42:09.000000000","message":"Not needed after this patch.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}],"octavia/amphorae/backends/agent/api_server/osutils.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afa602cc7c59675a787c5eaf997b0d14838cfe61","unresolved":true,"context_lines":[{"line_number":72,"context_line":"            netns\u003dconsts.AMPHORA_NAMESPACE)"},{"line_number":73,"context_line":"        return os.path.join(network_dir, interface)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def create_netns_dir(self, network_dir, netns_network_dir, ignore\u003dNone):"},{"line_number":76,"context_line":"        # We need to setup the netns network directory so that the ifup"},{"line_number":77,"context_line":"        # commands used here and in the startup scripts \"sees\" the right"},{"line_number":78,"context_line":"        # interfaces and scripts."}],"source_content_type":"text/x-python","patch_set":11,"id":"13937c28_afeefd9f","side":"PARENT","line":75,"updated":"2021-06-24 14:42:09.000000000","message":"Removing this is where \"agent_server_network_dir\" is no longer important.","commit_id":"217cdbb719a8d303c486ed6526eedd9ca6fe83eb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1b3695716c19d008a4d27ddefbc8e3581cfdf1a2","unresolved":true,"context_lines":[{"line_number":123,"context_line":"class Ubuntu(BaseOS):"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    ETH_X_PORT_CONF \u003d \u0027plug_port_ethX.conf.j2\u0027"},{"line_number":126,"context_line":"    ETH_X_VIP_CONF \u003d \u0027plug_vip_ethX.conf.j2\u0027"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @classmethod"},{"line_number":129,"context_line":"    def is_os_name(cls, os_name):"}],"source_content_type":"text/x-python","patch_set":17,"id":"f8590c2c_f5e9c665","line":126,"updated":"2021-08-18 21:37:59.000000000","message":"I don\u0027t think these are used anymore.","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ed9abf6fb8d03611a58c16b7040ccafadd1ca3f0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"class Ubuntu(BaseOS):"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    ETH_X_PORT_CONF \u003d \u0027plug_port_ethX.conf.j2\u0027"},{"line_number":126,"context_line":"    ETH_X_VIP_CONF \u003d \u0027plug_vip_ethX.conf.j2\u0027"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @classmethod"},{"line_number":129,"context_line":"    def is_os_name(cls, os_name):"}],"source_content_type":"text/x-python","patch_set":17,"id":"aa654452_f31ca35a","line":126,"in_reply_to":"f8590c2c_f5e9c665","updated":"2021-08-20 06:49:00.000000000","message":"Done","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"}],"octavia/amphorae/backends/agent/api_server/plug.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1b3695716c19d008a4d27ddefbc8e3581cfdf1a2","unresolved":true,"context_lines":[{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"ETH_X_VIP_CONF \u003d \u0027plug_vip_ethX.conf.j2\u0027"},{"line_number":34,"context_line":"ETH_X_PORT_CONF \u003d \u0027plug_port_ethX.conf.j2\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7df464af_45dcf4e3","line":34,"updated":"2021-08-18 21:37:59.000000000","message":"I don\u0027t think these are used anymore","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ed9abf6fb8d03611a58c16b7040ccafadd1ca3f0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"ETH_X_VIP_CONF \u003d \u0027plug_vip_ethX.conf.j2\u0027"},{"line_number":34,"context_line":"ETH_X_PORT_CONF \u003d \u0027plug_port_ethX.conf.j2\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"002dafae_fb7e929b","line":34,"in_reply_to":"7df464af_45dcf4e3","updated":"2021-08-20 06:49:00.000000000","message":"Done","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"}],"octavia/amphorae/backends/agent/api_server/templates/amphora-netns.systemd.j2":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afa602cc7c59675a787c5eaf997b0d14838cfe61","unresolved":true,"context_lines":[{"line_number":25,"context_line":"# Assign the interfaces into the namespace with the appropriate name"},{"line_number":26,"context_line":"ExecStart\u003d-/bin/sh -c \u0027/sbin/ip link | awk \\\u0027{getline n; print $0,n}\\\u0027 | awk \\\u0027{sub(\":\",\"\",$2)} { for(i\u003d1;i\u003c\u003dNF;i++) if ($i \u003d\u003d \"link/ether\") {print $(i+1) \" \" $2} }\\\u0027 | sort -k 1 | join -j 1 - /var/lib/octavia/plugged_interfaces.sorted | awk \\\u0027{system(\"ip link set \"$2\" netns {{ amphora_nsname }} name \"$3\"\")}\\\u0027\u0027"},{"line_number":27,"context_line":"# Bring up all of the namespace interfaces"},{"line_number":28,"context_line":"ExecStart\u003d-/sbin/ip netns exec {{ amphora_nsname }} amphora-interface up all"}],"source_content_type":"text/x-jinja2","patch_set":11,"id":"15f00c3d_deae2e39","line":28,"updated":"2021-06-24 14:42:09.000000000","message":"Do we still need this systemd unit? Should the amphora agent handle all of this on startup instead? Or is there an advantage to having this networking configured prior to the amphora agent starting up? Maybe a dependency chain on for HAProxy?","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}],"octavia/amphorae/backends/agent/templates/amphora_agent_conf.template":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afa602cc7c59675a787c5eaf997b0d14838cfe61","unresolved":true,"context_lines":[{"line_number":37,"context_line":"[amphora_agent]"},{"line_number":38,"context_line":"agent_server_ca \u003d {{ agent_server_ca }}"},{"line_number":39,"context_line":"agent_server_cert \u003d {{ agent_server_cert }}"},{"line_number":40,"context_line":"{% if agent_server_network_dir -%}"},{"line_number":41,"context_line":"agent_server_network_dir \u003d {{ agent_server_network_dir }}"},{"line_number":42,"context_line":"{% endif -%}"},{"line_number":43,"context_line":"agent_request_read_timeout \u003d {{ agent_request_read_timeout }}"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"34e463a7_a086e994","line":40,"updated":"2021-06-24 14:42:09.000000000","message":"Not needed after this patch.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}],"octavia/amphorae/backends/utils/interface.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"eb90c5a247099e872013bdd3cdd7eb4a2cb83bfe","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                LOG.debug(\"{}: Adding route {}\".format("},{"line_number":65,"context_line":"                    interface.name, route))"},{"line_number":66,"context_line":"                try:"},{"line_number":67,"context_line":"                    ipr.route(\u0027add\u0027, oif\u003didx, **route)"},{"line_number":68,"context_line":"                except netlink.exceptions.NetlinkError as e:"},{"line_number":69,"context_line":"                    if e.code !\u003d errno.EEXIST:"},{"line_number":70,"context_line":"                        raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_d9671c51","line":67,"range":{"start_line":67,"start_character":31,"end_line":67,"end_character":34},"updated":"2020-11-03 22:13:05.000000000","message":"This should probably be \u0027replace\u0027, as it will either add a new one or change the existing one, which then shouldn\u0027t require the EEXIST check (assuming anything else is an error).\n\nDon\u0027t think \u0027replace\u0027 would apply to the other calls here.","commit_id":"9ec0fc7ac1922d96c00739b9e7b84bfb28bf8732"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1a55f7bf693337b54ed5a571abcb958773ca2f1c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                LOG.debug(\"{}: Adding route {}\".format("},{"line_number":65,"context_line":"                    interface.name, route))"},{"line_number":66,"context_line":"                try:"},{"line_number":67,"context_line":"                    ipr.route(\u0027add\u0027, oif\u003didx, **route)"},{"line_number":68,"context_line":"                except netlink.exceptions.NetlinkError as e:"},{"line_number":69,"context_line":"                    if e.code !\u003d errno.EEXIST:"},{"line_number":70,"context_line":"                        raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_132cc897","line":67,"range":{"start_line":67,"start_character":31,"end_line":67,"end_character":34},"in_reply_to":"1f621f24_d9671c51","updated":"2020-11-04 13:46:05.000000000","message":"Thanks, Yeah it\u0027s an early early WIP commit, but I\u0027ll check if \u0027replace\u0027 is better.\n\nNote that I initially thought about flushing addresses and routes when setting an interface \"up\". In most of the cases, setting up an interface should only be called on an unconfigured interface.","commit_id":"9ec0fc7ac1922d96c00739b9e7b84bfb28bf8732"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b32ebbfc5d3fdc8274f485e2954e1e32e252d9e","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        return interfaces"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _family(self, address):"},{"line_number":55,"context_line":"        return socket.AF_INET6 if \u0027:\u0027 in address else socket.AF_INET"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _ipr_command(self, method, command,"},{"line_number":58,"context_line":"                     retry_on_invalid_argument\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":7,"id":"43cfaff0_f6165114","line":55,"updated":"2020-12-08 00:24:52.000000000","message":"This is probably good enough, it if trips us up can always use a library:\n\nipaddress.ip_address(address).version\nnetaddr.IPNetwork(address).version","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1f390f25b74192d18b5ceab5c4f9dc086b2d9b45","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return interfaces"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _family(self, address):"},{"line_number":55,"context_line":"        return socket.AF_INET6 if \u0027:\u0027 in address else socket.AF_INET"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _ipr_command(self, method, command,"},{"line_number":58,"context_line":"                     retry_on_invalid_argument\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8909e9_30f02c9e","line":55,"in_reply_to":"43cfaff0_f6165114","updated":"2020-12-14 15:28:24.000000000","message":"Done","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1b3695716c19d008a4d27ddefbc8e3581cfdf1a2","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        # accept_ra is set to 2 to accept router advertisements if forwarding"},{"line_number":117,"context_line":"        # is enabled on the interface"},{"line_number":118,"context_line":"        for key, value in ((\u0027accept_ra\u0027, 2),"},{"line_number":119,"context_line":"                           (\u0027accept_redirects\u0027, 1),"},{"line_number":120,"context_line":"                           (\u0027autoconf\u0027, 1)):"},{"line_number":121,"context_line":"            cmd \u003d [\"/sbin/sysctl\","},{"line_number":122,"context_line":"                   \"-w\","}],"source_content_type":"text/x-python","patch_set":17,"id":"3bc1036a_fac79864","line":119,"updated":"2021-08-18 21:37:59.000000000","message":"Why are we enabling accept_redirects? This was not enabled before and can be a security issue.","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ed9abf6fb8d03611a58c16b7040ccafadd1ca3f0","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        # accept_ra is set to 2 to accept router advertisements if forwarding"},{"line_number":117,"context_line":"        # is enabled on the interface"},{"line_number":118,"context_line":"        for key, value in ((\u0027accept_ra\u0027, 2),"},{"line_number":119,"context_line":"                           (\u0027accept_redirects\u0027, 1),"},{"line_number":120,"context_line":"                           (\u0027autoconf\u0027, 1)):"},{"line_number":121,"context_line":"            cmd \u003d [\"/sbin/sysctl\","},{"line_number":122,"context_line":"                   \"-w\","}],"source_content_type":"text/x-python","patch_set":17,"id":"6345576e_a30dc572","line":119,"in_reply_to":"3bc1036a_fac79864","updated":"2021-08-20 06:49:00.000000000","message":"Ack, I\u0027ve removed this sysctl.\nPlease note that the default value in centos is 1.","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1b3695716c19d008a4d27ddefbc8e3581cfdf1a2","unresolved":true,"context_lines":[{"line_number":156,"context_line":"                    continue"},{"line_number":157,"context_line":"                address[consts.FAMILY] \u003d self._family(address[consts.ADDRESS])"},{"line_number":158,"context_line":"                LOG.debug(\"%s: Adding address %s\", interface.name, address)"},{"line_number":159,"context_line":"                self._ipr_command(ipr.addr, self.ADD, index\u003didx, **address)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"            for route in interface.routes:"},{"line_number":162,"context_line":"                route[consts.FAMILY] \u003d self._family(route[consts.DST])"}],"source_content_type":"text/x-python","patch_set":17,"id":"18e21009_cc32f03d","line":159,"updated":"2021-08-18 21:37:59.000000000","message":"Doesn\u0027t this potentially conflict with the dhclient/slaac setup above on line 142?\nIf the addresses are auto managed we shouldn\u0027t also set an address right?","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ed9abf6fb8d03611a58c16b7040ccafadd1ca3f0","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                    continue"},{"line_number":157,"context_line":"                address[consts.FAMILY] \u003d self._family(address[consts.ADDRESS])"},{"line_number":158,"context_line":"                LOG.debug(\"%s: Adding address %s\", interface.name, address)"},{"line_number":159,"context_line":"                self._ipr_command(ipr.addr, self.ADD, index\u003didx, **address)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"            for route in interface.routes:"},{"line_number":162,"context_line":"                route[consts.FAMILY] \u003d self._family(route[consts.DST])"}],"source_content_type":"text/x-python","patch_set":17,"id":"dbb20b47_11ba8287","line":159,"in_reply_to":"18e21009_cc32f03d","updated":"2021-08-20 06:49:00.000000000","message":"It should not happen,\nThe \u0027address\u0027 dict should contain either an ip address or dhcp: True (or ipv6auto).\nAnyways, I\u0027m adding a check to ensure the DHCP and IPV6AUTO fields are not set.","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"}],"octavia/amphorae/backends/utils/interface_file.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b32ebbfc5d3fdc8274f485e2954e1e32e252d9e","unresolved":true,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        super().__init__(name)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.mtu \u003d mtu"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if vrrp_ip:"},{"line_number":103,"context_line":"            self.addresses.append({"}],"source_content_type":"text/x-python","patch_set":7,"id":"1dad04bc_d854907d","line":100,"updated":"2020-12-08 00:24:52.000000000","message":"nit: could pass to super() too","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1f390f25b74192d18b5ceab5c4f9dc086b2d9b45","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        super().__init__(name)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.mtu \u003d mtu"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if vrrp_ip:"},{"line_number":103,"context_line":"            self.addresses.append({"}],"source_content_type":"text/x-python","patch_set":7,"id":"09b6215b_79770c80","line":100,"in_reply_to":"1dad04bc_d854907d","updated":"2020-12-14 15:28:24.000000000","message":"Done","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b32ebbfc5d3fdc8274f485e2954e1e32e252d9e","unresolved":true,"context_lines":[{"line_number":167,"context_line":"    def __init__(self, name, mtu, fixed_ips):"},{"line_number":168,"context_line":"        super().__init__(name)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        self.mtu \u003d mtu"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        if fixed_ips:"},{"line_number":173,"context_line":"            ip_versions \u003d set()"}],"source_content_type":"text/x-python","patch_set":7,"id":"8f35c696_0ce7ed08","line":170,"updated":"2020-12-08 00:24:52.000000000","message":"same","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1f390f25b74192d18b5ceab5c4f9dc086b2d9b45","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    def __init__(self, name, mtu, fixed_ips):"},{"line_number":168,"context_line":"        super().__init__(name)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        self.mtu \u003d mtu"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        if fixed_ips:"},{"line_number":173,"context_line":"            ip_versions \u003d set()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9d6611a2_2a75905a","line":170,"in_reply_to":"8f35c696_0ce7ed08","updated":"2020-12-14 15:28:24.000000000","message":"Done","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"}],"octavia/cmd/interface.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1b3695716c19d008a4d27ddefbc8e3581cfdf1a2","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from octavia.amphorae.backends.utils import interface"},{"line_number":20,"context_line":"# Need to import to load config"},{"line_number":21,"context_line":"from octavia.common import config  # noqa: F401 pylint: disable\u003dunused-import"},{"line_number":22,"context_line":"from octavia.common import exceptions"},{"line_number":23,"context_line":"from octavia.i18n import _"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"0073e676_ad8215e6","line":21,"updated":"2021-08-18 21:37:59.000000000","message":"Are you sure you need this noqa?\nconfig is clearly used in the main function so pylint should not be complaining.","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ed9abf6fb8d03611a58c16b7040ccafadd1ca3f0","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from octavia.amphorae.backends.utils import interface"},{"line_number":20,"context_line":"# Need to import to load config"},{"line_number":21,"context_line":"from octavia.common import config  # noqa: F401 pylint: disable\u003dunused-import"},{"line_number":22,"context_line":"from octavia.common import exceptions"},{"line_number":23,"context_line":"from octavia.i18n import _"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ffbc9d91_9b5a42f1","line":21,"in_reply_to":"0073e676_ad8215e6","updated":"2021-08-20 06:49:00.000000000","message":"Oh thanks, it wasn\u0027t used in a previous patchset, I\u0027m removing the noqa","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1b3695716c19d008a4d27ddefbc8e3581cfdf1a2","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class InterfaceException(exceptions.OctaviaException):"},{"line_number":27,"context_line":"    message \u003d _(\"Could not configure interface: %(msg)s\")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def interfaces_find(interface_controller, name):"}],"source_content_type":"text/x-python","patch_set":17,"id":"8524fe31_6e830c46","line":27,"updated":"2021-08-18 21:37:59.000000000","message":"i18n is used inconsistently here. This string is marked for translation, but line 39 is not.\n\nSince this is an internal tool for the amphora and not user facing, I\u0027m not sure translations are needed here.","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ed9abf6fb8d03611a58c16b7040ccafadd1ca3f0","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class InterfaceException(exceptions.OctaviaException):"},{"line_number":27,"context_line":"    message \u003d _(\"Could not configure interface: %(msg)s\")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def interfaces_find(interface_controller, name):"}],"source_content_type":"text/x-python","patch_set":17,"id":"58828362_a33e31ec","line":27,"in_reply_to":"8524fe31_6e830c46","updated":"2021-08-20 06:49:00.000000000","message":"Ack. removing i18n in this file.","commit_id":"52c61961521f8d9a289a5f357b892c38fa65c25c"}],"octavia/common/config.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b32ebbfc5d3fdc8274f485e2954e1e32e252d9e","unresolved":true,"context_lines":[{"line_number":152,"context_line":"                      \"agent_server_network_dir.\"),"},{"line_number":153,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":154,"context_line":"               deprecated_reason\u003d_(\u0027New amphora interface management \u0027"},{"line_number":155,"context_line":"                                   \u0027doesn\\\u0027t support single interface file.\u0027),"},{"line_number":156,"context_line":"               deprecated_since\u003d\u0027Wallaby\u0027),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027agent_request_read_timeout\u0027, default\u003d180,"},{"line_number":158,"context_line":"               help\u003d_(\"The time in seconds to allow a request from the \""}],"source_content_type":"text/x-python","patch_set":7,"id":"562175a2_58deb0d4","line":155,"range":{"start_line":155,"start_character":40,"end_line":155,"end_character":44},"updated":"2020-12-08 00:24:52.000000000","message":"nit: does not","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1f390f25b74192d18b5ceab5c4f9dc086b2d9b45","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                      \"agent_server_network_dir.\"),"},{"line_number":153,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":154,"context_line":"               deprecated_reason\u003d_(\u0027New amphora interface management \u0027"},{"line_number":155,"context_line":"                                   \u0027doesn\\\u0027t support single interface file.\u0027),"},{"line_number":156,"context_line":"               deprecated_since\u003d\u0027Wallaby\u0027),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027agent_request_read_timeout\u0027, default\u003d180,"},{"line_number":158,"context_line":"               help\u003d_(\"The time in seconds to allow a request from the \""}],"source_content_type":"text/x-python","patch_set":7,"id":"4aafe9e9_237c79fa","line":155,"range":{"start_line":155,"start_character":40,"end_line":155,"end_character":44},"in_reply_to":"562175a2_58deb0d4","updated":"2020-12-14 15:28:24.000000000","message":"Done","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afa602cc7c59675a787c5eaf997b0d14838cfe61","unresolved":true,"context_lines":[{"line_number":151,"context_line":"    cfg.StrOpt(\u0027agent_server_cert\u0027, default\u003d\u0027/etc/octavia/certs/server.pem\u0027,"},{"line_number":152,"context_line":"               help\u003d_(\"The server certificate for the agent server \""},{"line_number":153,"context_line":"                      \"to use\")),"},{"line_number":154,"context_line":"    cfg.StrOpt(\u0027agent_server_network_dir\u0027,"},{"line_number":155,"context_line":"               help\u003d_(\"The directory where new network interfaces \""},{"line_number":156,"context_line":"                      \"are located\")),"},{"line_number":157,"context_line":"    cfg.StrOpt(\u0027agent_server_network_file\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"6911b2ef_20579c79","line":154,"updated":"2021-06-24 14:42:09.000000000","message":"This can be deprecated as well.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}],"octavia/tests/common/utils.py":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1f390f25b74192d18b5ceab5c4f9dc086b2d9b45","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    obj.assertEqual(len(l1), len(l2),"},{"line_number":51,"context_line":"                    \"Address lists don\u0027t match: {} vs {}\".format(l1, l2))"},{"line_number":52,"context_line":"    for a1, a2 in zip(l1, l2):"},{"line_number":53,"context_line":"        if consts.ADDRESS in a1 or consts.ADDRESS in a2:"},{"line_number":54,"context_line":"            obj.assertEqual("},{"line_number":55,"context_line":"                ipaddress.ip_address(a1[consts.ADDRESS]),"},{"line_number":56,"context_line":"                ipaddress.ip_address(a2[consts.ADDRESS]))"}],"source_content_type":"text/x-python","patch_set":7,"id":"201e0be7_4b706fef","line":53,"updated":"2020-12-14 15:28:24.000000000","message":"Changed \u0027or\u0027 to \u0027and\u0027, that will avoid AttributeError exceptions","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b32ebbfc5d3fdc8274f485e2954e1e32e252d9e","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    obj.assertEqual(len(l1), len(l2),"},{"line_number":51,"context_line":"                    \"Address lists don\u0027t match: {} vs {}\".format(l1, l2))"},{"line_number":52,"context_line":"    for a1, a2 in zip(l1, l2):"},{"line_number":53,"context_line":"        if consts.ADDRESS in a1 or consts.ADDRESS in a2:"},{"line_number":54,"context_line":"            obj.assertEqual("},{"line_number":55,"context_line":"                ipaddress.ip_address(a1[consts.ADDRESS]),"},{"line_number":56,"context_line":"                ipaddress.ip_address(a2[consts.ADDRESS]))"}],"source_content_type":"text/x-python","patch_set":7,"id":"95ecfef0_a9423e65","line":53,"updated":"2020-12-08 00:24:52.000000000","message":"If it\u0027s one it\u0027s in the other?  Since otherwise the assert will throw an exception, right?  Maybe the caller always passes it correctly.  Same comment below in route list code.","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"}],"octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b6c9a7e1a65e097fa7224ca4dfa4e354776af680","unresolved":true,"context_lines":[{"line_number":1251,"context_line":"                consts.MTU: 1450,"},{"line_number":1252,"context_line":"                consts.ADDRESSES: ["},{"line_number":1253,"context_line":"                    {consts.ADDRESS: \u00272001:0db8::2\u0027,"},{"line_number":1254,"context_line":"                     consts.PREFIXLEN: 32}],"},{"line_number":1255,"context_line":"                consts.ROUTES: [],"},{"line_number":1256,"context_line":"                consts.RULES: [],"},{"line_number":1257,"context_line":"                consts.SCRIPTS: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"a5d4afab_c6beeb07","line":1254,"range":{"start_line":1254,"start_character":39,"end_line":1254,"end_character":41},"updated":"2021-03-18 23:37:24.000000000","message":"nit: IPv6 addresses are typically /64, but this is just verifying the file contents.  If it\u0027s SLAAC it actually has to be /64.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"19390f47cc2169c60fdc83e0c213e14521f07aa8","unresolved":true,"context_lines":[{"line_number":1251,"context_line":"                consts.MTU: 1450,"},{"line_number":1252,"context_line":"                consts.ADDRESSES: ["},{"line_number":1253,"context_line":"                    {consts.ADDRESS: \u00272001:0db8::2\u0027,"},{"line_number":1254,"context_line":"                     consts.PREFIXLEN: 32}],"},{"line_number":1255,"context_line":"                consts.ROUTES: [],"},{"line_number":1256,"context_line":"                consts.RULES: [],"},{"line_number":1257,"context_line":"                consts.SCRIPTS: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"f4030852_d922bde2","line":1254,"range":{"start_line":1254,"start_character":39,"end_line":1254,"end_character":41},"in_reply_to":"a5d4afab_c6beeb07","updated":"2021-03-19 07:41:50.000000000","message":"I didn\u0027t change that part, it was already /32 in the network-scripts/interfaces tests (see line 1210 for the parameters of the post request).\nSo I don\u0027t want to change it (it\u0027s a functional test and I prefer testing corner cases - /64 is too symmetrical, I don\u0027t like to test it in case of bit field manipulations)","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"05d12e35f29480613846b8851ee79b34afa2fb73","unresolved":true,"context_lines":[{"line_number":1251,"context_line":"                consts.MTU: 1450,"},{"line_number":1252,"context_line":"                consts.ADDRESSES: ["},{"line_number":1253,"context_line":"                    {consts.ADDRESS: \u00272001:0db8::2\u0027,"},{"line_number":1254,"context_line":"                     consts.PREFIXLEN: 32}],"},{"line_number":1255,"context_line":"                consts.ROUTES: [],"},{"line_number":1256,"context_line":"                consts.RULES: [],"},{"line_number":1257,"context_line":"                consts.SCRIPTS: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"b022de76_e6a7696e","line":1254,"range":{"start_line":1254,"start_character":39,"end_line":1254,"end_character":41},"in_reply_to":"f4030852_d922bde2","updated":"2021-03-19 13:59:01.000000000","message":"I understand it was already /32 just wanted to point out you will probably only ever see a local address configured with a /64 as it\u0027s the natural prefix boundary.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b6c9a7e1a65e097fa7224ca4dfa4e354776af680","unresolved":true,"context_lines":[{"line_number":2019,"context_line":"                consts.ADDRESSES: ["},{"line_number":2020,"context_line":"                    {"},{"line_number":2021,"context_line":"                        consts.ADDRESS: \u00272001:db8::4\u0027,"},{"line_number":2022,"context_line":"                        consts.PREFIXLEN: 32"},{"line_number":2023,"context_line":"                    }, {"},{"line_number":2024,"context_line":"                        consts.ADDRESS: \u00272001:0db8::2\u0027,"},{"line_number":2025,"context_line":"                        consts.PREFIXLEN: 32"}],"source_content_type":"text/x-python","patch_set":11,"id":"d2700d5b_c37cfd94","line":2022,"range":{"start_line":2022,"start_character":42,"end_line":2022,"end_character":44},"updated":"2021-03-18 23:37:24.000000000","message":"Same","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"19390f47cc2169c60fdc83e0c213e14521f07aa8","unresolved":true,"context_lines":[{"line_number":2019,"context_line":"                consts.ADDRESSES: ["},{"line_number":2020,"context_line":"                    {"},{"line_number":2021,"context_line":"                        consts.ADDRESS: \u00272001:db8::4\u0027,"},{"line_number":2022,"context_line":"                        consts.PREFIXLEN: 32"},{"line_number":2023,"context_line":"                    }, {"},{"line_number":2024,"context_line":"                        consts.ADDRESS: \u00272001:0db8::2\u0027,"},{"line_number":2025,"context_line":"                        consts.PREFIXLEN: 32"}],"source_content_type":"text/x-python","patch_set":11,"id":"c104d958_9295b476","line":2022,"range":{"start_line":2022,"start_character":42,"end_line":2022,"end_character":44},"in_reply_to":"d2700d5b_c37cfd94","updated":"2021-03-19 07:41:50.000000000","message":"it was already /32","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b6c9a7e1a65e097fa7224ca4dfa4e354776af680","unresolved":true,"context_lines":[{"line_number":2042,"context_line":"                        consts.TABLE: 1"},{"line_number":2043,"context_line":"                    }, {"},{"line_number":2044,"context_line":"                        consts.DST: \u00272001:db9::/32\u0027,"},{"line_number":2045,"context_line":"                        consts.GATEWAY: \u00272001:db8::5\u0027"},{"line_number":2046,"context_line":"                    }, {"},{"line_number":2047,"context_line":"                        consts.DST: \u00272001:db9::1/128\u0027,"},{"line_number":2048,"context_line":"                        consts.GATEWAY: \u00272001:db8::5\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"323995ad_55eee252","line":2045,"updated":"2021-03-18 23:37:24.000000000","message":"Some of my IPv6 brain has been swapped-out, but another perfectly valid gateway address would be a link-local, in fact it\u0027s typical on a network:\n\n$ ip -6 r list default\ndefault via fe80::1e3b:f3ff:fed6:8730 dev eno1 proto ra metric 100 pref medium","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"19390f47cc2169c60fdc83e0c213e14521f07aa8","unresolved":true,"context_lines":[{"line_number":2042,"context_line":"                        consts.TABLE: 1"},{"line_number":2043,"context_line":"                    }, {"},{"line_number":2044,"context_line":"                        consts.DST: \u00272001:db9::/32\u0027,"},{"line_number":2045,"context_line":"                        consts.GATEWAY: \u00272001:db8::5\u0027"},{"line_number":2046,"context_line":"                    }, {"},{"line_number":2047,"context_line":"                        consts.DST: \u00272001:db9::1/128\u0027,"},{"line_number":2048,"context_line":"                        consts.GATEWAY: \u00272001:db8::5\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"df2197a4_f68053d7","line":2045,"in_reply_to":"323995ad_55eee252","updated":"2021-03-19 07:41:50.000000000","message":"but I believe that these link-local addresses/routes are automatically added by linux, they should not be included in configuration files","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"05d12e35f29480613846b8851ee79b34afa2fb73","unresolved":true,"context_lines":[{"line_number":2042,"context_line":"                        consts.TABLE: 1"},{"line_number":2043,"context_line":"                    }, {"},{"line_number":2044,"context_line":"                        consts.DST: \u00272001:db9::/32\u0027,"},{"line_number":2045,"context_line":"                        consts.GATEWAY: \u00272001:db8::5\u0027"},{"line_number":2046,"context_line":"                    }, {"},{"line_number":2047,"context_line":"                        consts.DST: \u00272001:db9::1/128\u0027,"},{"line_number":2048,"context_line":"                        consts.GATEWAY: \u00272001:db8::5\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"6d929e9f_b62b7710","line":2045,"in_reply_to":"df2197a4_f68053d7","updated":"2021-03-19 13:59:01.000000000","message":"They should both be inter-changeable, as the next-hop must be directly reachable, which implies it\u0027s on-link :)  And in some cases operators will actually configure things like fe80::5 on routers to use a the next-hop.\n\nIt actually dates back to RFC 4861 (ND), found this good article:\n\nhttps://oswalt.dev/2013/03/ipv6-next-hop-best-practices/\n\nYou don\u0027t have to change it, maybe I\u0027m just remembering the day when it had to be a link-local.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}],"octavia/tests/unit/amphorae/backends/utils/test_interface.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b6c9a7e1a65e097fa7224ca4dfa4e354776af680","unresolved":true,"context_lines":[{"line_number":343,"context_line":"                consts.ADDRESS: \u002710.2.3.4\u0027,"},{"line_number":344,"context_line":"                consts.PREFIXLEN: 16"},{"line_number":345,"context_line":"            }, {"},{"line_number":346,"context_line":"                consts.ADDRESS: \u00272001:df0::3\u0027,"},{"line_number":347,"context_line":"                consts.PREFIXLEN: 64"},{"line_number":348,"context_line":"            }],"},{"line_number":349,"context_line":"            routes\u003d[{"}],"source_content_type":"text/x-python","patch_set":11,"id":"965749f1_21ac7a7c","line":346,"updated":"2021-03-18 23:37:24.000000000","message":"Where possible we should use the IPv6 doc prefix 2001:db8::, can utilize the next two octets as well, 2001:db8:1:1::  Same below.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"19390f47cc2169c60fdc83e0c213e14521f07aa8","unresolved":true,"context_lines":[{"line_number":343,"context_line":"                consts.ADDRESS: \u002710.2.3.4\u0027,"},{"line_number":344,"context_line":"                consts.PREFIXLEN: 16"},{"line_number":345,"context_line":"            }, {"},{"line_number":346,"context_line":"                consts.ADDRESS: \u00272001:df0::3\u0027,"},{"line_number":347,"context_line":"                consts.PREFIXLEN: 64"},{"line_number":348,"context_line":"            }],"},{"line_number":349,"context_line":"            routes\u003d[{"}],"source_content_type":"text/x-python","patch_set":11,"id":"11d72fec_8aaede43","line":346,"in_reply_to":"965749f1_21ac7a7c","updated":"2021-03-19 07:41:50.000000000","message":"Ack, I\u0027ll update it","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}],"octavia/tests/unit/amphorae/backends/utils/test_interface_file.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b6c9a7e1a65e097fa7224ca4dfa4e354776af680","unresolved":true,"context_lines":[{"line_number":268,"context_line":"    def test_vip_interface_file_ipv6(self):"},{"line_number":269,"context_line":"        netns_interface \u003d \u0027eth1234\u0027"},{"line_number":270,"context_line":"        MTU \u003d 1450"},{"line_number":271,"context_line":"        VIP_ADDRESS \u003d \u00272001::7\u0027"},{"line_number":272,"context_line":"        SUBNET_CIDR \u003d \u00272001::/64\u0027"},{"line_number":273,"context_line":"        GATEWAY \u003d \u00272001::1\u0027"},{"line_number":274,"context_line":"        DEST1 \u003d \u00272002::/64\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"0e4e8121_0545638a","line":271,"updated":"2021-03-18 23:37:24.000000000","message":"Same.","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"19390f47cc2169c60fdc83e0c213e14521f07aa8","unresolved":false,"context_lines":[{"line_number":268,"context_line":"    def test_vip_interface_file_ipv6(self):"},{"line_number":269,"context_line":"        netns_interface \u003d \u0027eth1234\u0027"},{"line_number":270,"context_line":"        MTU \u003d 1450"},{"line_number":271,"context_line":"        VIP_ADDRESS \u003d \u00272001::7\u0027"},{"line_number":272,"context_line":"        SUBNET_CIDR \u003d \u00272001::/64\u0027"},{"line_number":273,"context_line":"        GATEWAY \u003d \u00272001::1\u0027"},{"line_number":274,"context_line":"        DEST1 \u003d \u00272002::/64\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"fb7af5a1_13f7b7de","line":271,"in_reply_to":"0e4e8121_0545638a","updated":"2021-03-19 07:41:50.000000000","message":"Ack","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b6c9a7e1a65e097fa7224ca4dfa4e354776af680","unresolved":true,"context_lines":[{"line_number":376,"context_line":"        NEXTHOP2 \u003d \u00272001:db7::8\u0027"},{"line_number":377,"context_line":"        MTU \u003d 1450"},{"line_number":378,"context_line":"        FIXED_IP_IPV6 \u003d \u00272001:0db8:0000:0000:0000:0000:0000:0001\u0027"},{"line_number":379,"context_line":"        SUBNET_CIDR_IPV6 \u003d \u00272001:db8::/32\u0027"},{"line_number":380,"context_line":"        fixed_ips \u003d [{\u0027ip_address\u0027: FIXED_IP,"},{"line_number":381,"context_line":"                      \u0027subnet_cidr\u0027: SUBNET_CIDR,"},{"line_number":382,"context_line":"                      \u0027host_routes\u0027: ["}],"source_content_type":"text/x-python","patch_set":11,"id":"4069e87b_380aa51a","line":379,"range":{"start_line":379,"start_character":39,"end_line":379,"end_character":41},"updated":"2021-03-18 23:37:24.000000000","message":"s/64 ?","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"19390f47cc2169c60fdc83e0c213e14521f07aa8","unresolved":true,"context_lines":[{"line_number":376,"context_line":"        NEXTHOP2 \u003d \u00272001:db7::8\u0027"},{"line_number":377,"context_line":"        MTU \u003d 1450"},{"line_number":378,"context_line":"        FIXED_IP_IPV6 \u003d \u00272001:0db8:0000:0000:0000:0000:0000:0001\u0027"},{"line_number":379,"context_line":"        SUBNET_CIDR_IPV6 \u003d \u00272001:db8::/32\u0027"},{"line_number":380,"context_line":"        fixed_ips \u003d [{\u0027ip_address\u0027: FIXED_IP,"},{"line_number":381,"context_line":"                      \u0027subnet_cidr\u0027: SUBNET_CIDR,"},{"line_number":382,"context_line":"                      \u0027host_routes\u0027: ["}],"source_content_type":"text/x-python","patch_set":11,"id":"ab952c47_40e9df5a","line":379,"range":{"start_line":379,"start_character":39,"end_line":379,"end_character":41},"in_reply_to":"4069e87b_380aa51a","updated":"2021-03-19 07:41:50.000000000","message":"ok i can update that one ;-)","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}],"releasenotes/notes/amphora-network-interface-management-d77bc9905ed997f6.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b32ebbfc5d3fdc8274f485e2954e1e32e252d9e","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Amphora network configuration for the VIP interface and the pool member"},{"line_number":5,"context_line":"    interfaces are now applied with the amphora-interface tool."},{"line_number":6,"context_line":"    amphora-interface uses pyroute2 low-level function to configure the"},{"line_number":7,"context_line":"    interfaces instead of distribution specific tools such as \"network-scripts\""},{"line_number":8,"context_line":"    or \"/etc/network/interfaces\" files."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ced34b9a_bbcaeaf7","line":6,"range":{"start_line":6,"start_character":46,"end_line":6,"end_character":54},"updated":"2020-12-08 00:24:52.000000000","message":"s/functions","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1f390f25b74192d18b5ceab5c4f9dc086b2d9b45","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Amphora network configuration for the VIP interface and the pool member"},{"line_number":5,"context_line":"    interfaces are now applied with the amphora-interface tool."},{"line_number":6,"context_line":"    amphora-interface uses pyroute2 low-level function to configure the"},{"line_number":7,"context_line":"    interfaces instead of distribution specific tools such as \"network-scripts\""},{"line_number":8,"context_line":"    or \"/etc/network/interfaces\" files."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"0c597070_c453df65","line":6,"range":{"start_line":6,"start_character":46,"end_line":6,"end_character":54},"in_reply_to":"ced34b9a_bbcaeaf7","updated":"2020-12-14 15:28:24.000000000","message":"Done","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3b32ebbfc5d3fdc8274f485e2954e1e32e252d9e","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Amphora network configuration for the VIP interface and the pool member"},{"line_number":5,"context_line":"    interfaces are now applied with the amphora-interface tool."},{"line_number":6,"context_line":"    amphora-interface uses pyroute2 low-level function to configure the"},{"line_number":7,"context_line":"    interfaces instead of distribution specific tools such as \"network-scripts\""},{"line_number":8,"context_line":"    or \"/etc/network/interfaces\" files."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"cb7ceff4_3b7bd821","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":47},"updated":"2020-12-08 00:24:52.000000000","message":"s/distribution-specific","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"1f390f25b74192d18b5ceab5c4f9dc086b2d9b45","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Amphora network configuration for the VIP interface and the pool member"},{"line_number":5,"context_line":"    interfaces are now applied with the amphora-interface tool."},{"line_number":6,"context_line":"    amphora-interface uses pyroute2 low-level function to configure the"},{"line_number":7,"context_line":"    interfaces instead of distribution specific tools such as \"network-scripts\""},{"line_number":8,"context_line":"    or \"/etc/network/interfaces\" files."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"f6e91682_9b81c7c7","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":47},"in_reply_to":"cb7ceff4_3b7bd821","updated":"2020-12-14 15:28:24.000000000","message":"Done","commit_id":"33bdef3028868e047ac56a3d195c6ce5077a8bb3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b6c9a7e1a65e097fa7224ca4dfa4e354776af680","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The agent_server_network_file configuration option is now deprecated, the"},{"line_number":5,"context_line":"    new Amphora network configuration tool introduced in Xena does not"},{"line_number":6,"context_line":"    support single configuration file."},{"line_number":7,"context_line":"fixes:"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"c37bea71_6dcbe166","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":33},"updated":"2021-03-18 23:37:24.000000000","message":"Might want this in `` `` and is there a [section] we should put in front?","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"19390f47cc2169c60fdc83e0c213e14521f07aa8","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The agent_server_network_file configuration option is now deprecated, the"},{"line_number":5,"context_line":"    new Amphora network configuration tool introduced in Xena does not"},{"line_number":6,"context_line":"    support single configuration file."},{"line_number":7,"context_line":"fixes:"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"6397a915_34987e60","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":33},"in_reply_to":"c37bea71_6dcbe166","updated":"2021-03-19 07:41:50.000000000","message":"ok, I\u0027m going to fix it","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b6c9a7e1a65e097fa7224ca4dfa4e354776af680","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The agent_server_network_file configuration option is now deprecated, the"},{"line_number":5,"context_line":"    new Amphora network configuration tool introduced in Xena does not"},{"line_number":6,"context_line":"    support single configuration file."},{"line_number":7,"context_line":"fixes:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Amphora network configuration for the VIP interface and the pool member"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"c4160108_9c0e0da6","line":6,"range":{"start_line":6,"start_character":12,"end_line":6,"end_character":18},"updated":"2021-03-18 23:37:24.000000000","message":"s/a single ?  or \u0027files\u0027 ?","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"19390f47cc2169c60fdc83e0c213e14521f07aa8","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The agent_server_network_file configuration option is now deprecated, the"},{"line_number":5,"context_line":"    new Amphora network configuration tool introduced in Xena does not"},{"line_number":6,"context_line":"    support single configuration file."},{"line_number":7,"context_line":"fixes:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Amphora network configuration for the VIP interface and the pool member"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"cd74d1d5_94155e70","line":6,"range":{"start_line":6,"start_character":12,"end_line":6,"end_character":18},"in_reply_to":"c4160108_9c0e0da6","updated":"2021-03-19 07:41:50.000000000","message":"yes \u0027a single configuration file\u0027 looks better here, thanks","commit_id":"a9ad9e9bbc6c42c20a670150e14bcfe55d7ede26"}]}
