)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"276a3d4a51c3b80ece30b772e0dccbf57f674469","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     ROBERTO BARTZEN ACOSTA \u003crbartzen@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-11-07 09:46:57 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix in the iteration to obtain address_scope linked to a subnet. A network can be linked to more than one subnet (ipv4 and ipv6), but if one of them does not have an address_scope, a null object element access failure occurs. Change-Id: I9a944c516d4f09e8d3fdf6d1ca7914504a693c28"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic6d48a86043aaf4b458bb2230883a355fc841ee9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3032869d_6f5a4203","line":7,"updated":"2022-11-07 13:04:21.000000000","message":"The header of the commit message should be a single line, ideally not longer than 50 characters. In this case \"Fix address_scope calculation\" would seem fine. Then add an empty line and then you can describe your patch in more detail, while keeping a line lenght limit of 80 characters.\n\nAlso make sure that you only have a single Change-ID in the commit message, in this case keep the one in line 9 below, otherwise gerrit will be confused.","commit_id":"c084be6d296ef29afa881d1775570a42361e5649"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"c2630c7b35402ef922573d8535d5dbb0f4a0fedc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ROBERTO BARTZEN ACOSTA \u003crbartzen@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-11-07 09:46:57 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix in the iteration to obtain address_scope linked to a subnet. A network can be linked to more than one subnet (ipv4 and ipv6), but if one of them does not have an address_scope, a null object element access failure occurs. Change-Id: I9a944c516d4f09e8d3fdf6d1ca7914504a693c28"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic6d48a86043aaf4b458bb2230883a355fc841ee9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"d1f1dbf0_cb38dff2","line":7,"in_reply_to":"3032869d_6f5a4203","updated":"2022-11-10 14:11:20.000000000","message":"Done","commit_id":"c084be6d296ef29afa881d1775570a42361e5649"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1304c9c30164beb0d7a7585ee0e716349d08b035","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix address_scope calculation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix in the iteration to obtain address_scope linked to a subnet. A network can be linked to more than one subnet (ipv4 and ipv6), but if one of them does not have an address_scope, a null object element access failure occurs."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ic6d48a86043aaf4b458bb2230883a355fc841ee9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fcd2a9e3_a12ed5ca","line":9,"updated":"2022-11-29 23:04:42.000000000","message":"This should be on multiple lines and not really long.","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"0940d9e2b6fb0b66f16f4b6add954f68d1f311b3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix address_scope calculation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix in the iteration to obtain address_scope linked to a subnet. A network can be linked to more than one subnet (ipv4 and ipv6), but if one of them does not have an address_scope, a null object element access failure occurs."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ic6d48a86043aaf4b458bb2230883a355fc841ee9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba276d7b_16b17bab","line":9,"in_reply_to":"fcd2a9e3_a12ed5ca","updated":"2022-11-30 11:04:07.000000000","message":"Done","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1304c9c30164beb0d7a7585ee0e716349d08b035","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Fix address_scope calculation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix in the iteration to obtain address_scope linked to a subnet. A network can be linked to more than one subnet (ipv4 and ipv6), but if one of them does not have an address_scope, a null object element access failure occurs."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ic6d48a86043aaf4b458bb2230883a355fc841ee9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bccc8a2a_67722724","line":10,"updated":"2022-11-29 23:04:42.000000000","message":"This should have:\n\nCloses-bug: #1998104","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"0940d9e2b6fb0b66f16f4b6add954f68d1f311b3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix address_scope calculation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix in the iteration to obtain address_scope linked to a subnet. A network can be linked to more than one subnet (ipv4 and ipv6), but if one of them does not have an address_scope, a null object element access failure occurs."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ic6d48a86043aaf4b458bb2230883a355fc841ee9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"de4ff693_2d2ba7b0","line":10,"in_reply_to":"bccc8a2a_67722724","updated":"2022-11-30 11:04:07.000000000","message":"Done","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"276a3d4a51c3b80ece30b772e0dccbf57f674469","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0e92e9eb_9e7f588d","updated":"2022-11-07 13:04:21.000000000","message":"Hello Roberto, welcome as a new contributor to neutron-dynamic-routing. Please see my comments below.","commit_id":"c084be6d296ef29afa881d1775570a42361e5649"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"c2630c7b35402ef922573d8535d5dbb0f4a0fedc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"80b77e20_a136c567","in_reply_to":"0e92e9eb_9e7f588d","updated":"2022-11-10 14:11:20.000000000","message":"Thank you!","commit_id":"c084be6d296ef29afa881d1775570a42361e5649"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"eedc910e3b4603f43d8fe5f9a910889207bb4521","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"63474edb_ad673bdd","updated":"2022-11-08 07:25:47.000000000","message":"missing testing coverage","commit_id":"ab8af605a70356d34846d67bdab36162de9459b3"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"c2630c7b35402ef922573d8535d5dbb0f4a0fedc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"97287a86_34e4a136","in_reply_to":"63474edb_ad673bdd","updated":"2022-11-10 14:11:20.000000000","message":"Please can you help me with this?","commit_id":"ab8af605a70356d34846d67bdab36162de9459b3"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"9765c95c3f40da156221d96742a979dbff2e075d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3a6e1a26_543256a3","updated":"2022-11-28 13:28:24.000000000","message":"I believe that in this case the practical result is the same. However, by design, I think it\u0027s safer and more restrictive to use comparisons to singletons like None instead of checking if the variable stores a truthy value.\n\nBut if it\u0027s a recommendation to use it without the singleton primitive comparision I can change the patch.","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"bd1d8cfabd81c0bc7bd0dd7b36cd9aa7d3e1570d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f4f82682_859dd964","updated":"2022-11-28 09:50:50.000000000","message":"Thanks, with that information I could reproduce the issue. Can you please create a bug report on launchpad? That will allow us to backport this fix to stable releases.\n\nAdding a test in neutron_dynamic_routing/tests/unit/db/test_bgp_db.py with this scenario would also be good, but can be done in a followup. Needs some reworking of the helper function.","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"0940d9e2b6fb0b66f16f4b6add954f68d1f311b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b6d3ef74_8e908463","in_reply_to":"3a6e1a26_543256a3","updated":"2022-11-30 11:04:07.000000000","message":"Done","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"}],"neutron_dynamic_routing/db/bgp_db.py":[{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"c2630c7b35402ef922573d8535d5dbb0f4a0fedc","unresolved":false,"context_lines":[{"line_number":1190,"context_line":"                ext_pool \u003d subnetpool_obj.SubnetPool.get_object("},{"line_number":1191,"context_line":"                            ctx, id\u003dgw_subnet.subnetpool_id)"},{"line_number":1192,"context_line":"                if ext_pool is not None:"},{"line_number":1193,"context_line":"                    ext_scope_set \u003d ext_net_subnetpool_map.get(ext_net_id, set())"},{"line_number":1194,"context_line":"                    ext_scope_set.add(ext_pool.address_scope_id)"},{"line_number":1195,"context_line":"                    ext_net_subnetpool_map[ext_net_id] \u003d ext_scope_set"},{"line_number":1196,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"412f185d_3efef160","line":1193,"in_reply_to":"fe24ea77_92f5bac7","updated":"2022-11-10 14:11:20.000000000","message":"\u003e pep8: E501 line too long (81 \u003e 79 characters)\n\nPlease fix.","commit_id":"de5f003dd2e8f2b6f39d4e81a37fa28ab8ef726d"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"276a3d4a51c3b80ece30b772e0dccbf57f674469","unresolved":true,"context_lines":[{"line_number":1189,"context_line":"                ext_net_id \u003d gw_subnet.network_id"},{"line_number":1190,"context_line":"                ext_pool \u003d subnetpool_obj.SubnetPool.get_object("},{"line_number":1191,"context_line":"                            ctx, id\u003dgw_subnet.subnetpool_id)"},{"line_number":1192,"context_line":"                if ext_pool is not None:"},{"line_number":1193,"context_line":"                    ext_scope_set \u003d ext_net_subnetpool_map.get(ext_net_id,"},{"line_number":1194,"context_line":"                    set())"},{"line_number":1195,"context_line":"                    ext_scope_set.add(ext_pool.address_scope_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e74f8f0c_35418760","line":1192,"updated":"2022-11-07 13:04:21.000000000","message":"Can you describe where this would happen? Like which steps would be needed to produce the failure? I would like to implement a test case for this that will avoid a regression.","commit_id":"c084be6d296ef29afa881d1775570a42361e5649"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"eedc910e3b4603f43d8fe5f9a910889207bb4521","unresolved":true,"context_lines":[{"line_number":1189,"context_line":"                ext_net_id \u003d gw_subnet.network_id"},{"line_number":1190,"context_line":"                ext_pool \u003d subnetpool_obj.SubnetPool.get_object("},{"line_number":1191,"context_line":"                            ctx, id\u003dgw_subnet.subnetpool_id)"},{"line_number":1192,"context_line":"                if ext_pool is not None:"},{"line_number":1193,"context_line":"                    ext_scope_set \u003d ext_net_subnetpool_map.get(ext_net_id,"},{"line_number":1194,"context_line":"                    set())"},{"line_number":1195,"context_line":"                    ext_scope_set.add(ext_pool.address_scope_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"2fb6dc77_039bb321","line":1192,"in_reply_to":"e74f8f0c_35418760","updated":"2022-11-08 07:25:47.000000000","message":"+1, I assume this was throwing and error and the second iteration (for dual-stack) was not executed. Testing coverage would be nice","commit_id":"c084be6d296ef29afa881d1775570a42361e5649"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"c2630c7b35402ef922573d8535d5dbb0f4a0fedc","unresolved":false,"context_lines":[{"line_number":1189,"context_line":"                ext_net_id \u003d gw_subnet.network_id"},{"line_number":1190,"context_line":"                ext_pool \u003d subnetpool_obj.SubnetPool.get_object("},{"line_number":1191,"context_line":"                            ctx, id\u003dgw_subnet.subnetpool_id)"},{"line_number":1192,"context_line":"                if ext_pool is not None:"},{"line_number":1193,"context_line":"                    ext_scope_set \u003d ext_net_subnetpool_map.get(ext_net_id,"},{"line_number":1194,"context_line":"                    set())"},{"line_number":1195,"context_line":"                    ext_scope_set.add(ext_pool.address_scope_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"8b658b4a_928a6bc0","line":1192,"in_reply_to":"e74f8f0c_35418760","updated":"2022-11-10 14:11:20.000000000","message":"Hi Dr. Jens Harbott, thanks for your feedback.\n\nSee my steps with comments to reproduce the problem:\n\n#1 - IPv6 address scope\nopenstack address scope create --share --ip-version 6 bgp\n\n\n#2 - self-service subnet pool\nopenstack subnet pool create --address-scope address-scope-ipv6 --share --default --pool-prefix 2001:db9:1234::/48 --default-prefix-length 64 --max-prefix-length 64 default-pool-ipv6\n\n#3 - provider subnet pool\nopenstack subnet pool create --address-scope address-scope-ipv6 --pool-prefix 2001:db9:4321:42::/64 --default-prefix-length 64 public-pool-ipv6\n\n#4 - Provider network\nopenstack network create provider --external --provider-physical-network \\\n  provider --provider-network-type flat\n\n#5 - provider subnet\nopenstack subnet create --ip-version 6 --subnet-pool public-pool-ipv6 --network provider --ipv6-address-mode dhcpv6-stateful --ipv6-ra-mode dhcpv6-stateful provider1-v6\nopenstack subnet create --ip-version 4 --network provider --dhcp --host-route  destination\u003d200.201.0.0/24,gateway\u003d200.201.0.1 --subnet-range 200.201.0.0/24 provider1-v4\n\n#6 - self-service network\nopenstack network create self-service\n\n#7 - self-service subnet\nopenstack subnet create --ip-version 6 --subnet-pool default-pool-ipv6 --network self-service --ipv6-address-mode dhcpv6-stateful --ipv6-ra-mode dhcpv6-stateful self-service-v6\nopenstack subnet create --ip-version 4 --network self-service  --dhcp --host-route  destination\u003d192.168.0.0/24,gateway\u003d192.168.0.1 --subnet-range 192.168.0.0/24 self-service-v4\n\n#8 - create router\nopenstack router create router1\n\n#9 - add self-service subnet as an interface on the router\nopenstack router add subnet router1 self-service-v4\nopenstack router add subnet router1 self-service-v6\n\n#10 - Add the provider network as a gateway on each router.\nopenstack router set --external-gateway provider router1\n\n#11 - create bgp speaker\nopenstack bgp speaker create --ip-version 6 --local-as 65000 bgpspeaker\nopenstack bgp speaker add network bgpspeaker provider\n\n#12 - create a vm on the self-service network\nopenstack server create --image cirros --flavor 1vcpu --network\u003dself-service --security-group cf2e7d53-0db7-4873-82ab-cf67eceda937 vm1\n\n\n# Without the patch we can see the messages below in the neutron log:\n\nNov 07 14:20:00 os-infra-1-neutron-server-container-819795c0 neutron-server[3698]: 2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager [req-24fe543c-7122-4869-b52d-21ecb782ea0e 8c140d00a7754295beae4ac85c5beecc 115a2ce896ad4958a26e3a4d624902a5 - default default] Error during notification for neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin.port_callback-950729 port, after_update: AttributeError: \u0027NoneType\u0027 object has no attribute \u0027address_scope_id\u0027\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager Traceback (most recent call last):\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager   File \"/usr/lib/python3/dist-packages/neutron_lib/callbacks/manager.py\", line 181, in _notify_loop\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager     callback(resource, event, trigger, payload\u003dpayload)\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager   File \"/usr/lib/python3/dist-packages/neutron_dynamic_routing/services/bgp/bgp_plugin.py\", line 375, in port_callback\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager     ext_nets \u003d self.get_external_networks_for_port(ctx,\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager   File \"/usr/lib/python3/dist-packages/neutron_dynamic_routing/db/bgp_db.py\", line 1190, in get_external_networks_for_port\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager     ext_scope_set.add(ext_pool.address_scope_id)\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager AttributeError: \u0027NoneType\u0027 object has no attribute \u0027address_scope_id\u0027\n                                                                                   2022-11-07 14:20:00.472 3698 ERROR neutron_lib.callbacks.manager \n\n\n# When we apply the fix, these messages no longer occur.","commit_id":"c084be6d296ef29afa881d1775570a42361e5649"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"eedc910e3b4603f43d8fe5f9a910889207bb4521","unresolved":true,"context_lines":[{"line_number":1193,"context_line":"                    ext_scope_set \u003d ext_net_subnetpool_map.get(ext_net_id,"},{"line_number":1194,"context_line":"                    set())"},{"line_number":1195,"context_line":"                    ext_scope_set.add(ext_pool.address_scope_id)"},{"line_number":1196,"context_line":"                    ext_net_subnetpool_map[ext_net_id] \u003d ext_scope_set"},{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"            ext_nets \u003d []"},{"line_number":1199,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"4371f297_4e0e188c","line":1196,"range":{"start_line":1196,"start_character":20,"end_line":1196,"end_character":70},"updated":"2022-11-08 07:25:47.000000000","message":"what would happen here if it is dual stack and both (ipv4 + ipv6) are part of address scope? ext_net_id will be share by both and will be overwritten?","commit_id":"ab8af605a70356d34846d67bdab36162de9459b3"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"c2630c7b35402ef922573d8535d5dbb0f4a0fedc","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"                    ext_scope_set \u003d ext_net_subnetpool_map.get(ext_net_id,"},{"line_number":1194,"context_line":"                    set())"},{"line_number":1195,"context_line":"                    ext_scope_set.add(ext_pool.address_scope_id)"},{"line_number":1196,"context_line":"                    ext_net_subnetpool_map[ext_net_id] \u003d ext_scope_set"},{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"            ext_nets \u003d []"},{"line_number":1199,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"e1a2278b_96f96620","line":1196,"range":{"start_line":1196,"start_character":20,"end_line":1196,"end_character":70},"in_reply_to":"4371f297_4e0e188c","updated":"2022-11-10 14:11:20.000000000","message":"Hi Luis,\nIf both are configured they will be returned on the map, but the address scopes and subnet pools are separated by IP version (ipv4 or ipv6), neutron does not support both in the same context.\nThe networks connected to bgpspeaker have subnets that can be connected to ipv4 and/or ipv6 address pools. In case there is more than one subnet in the bgpspeaker network if one has an address scope and the other does not, the ext_net_subnetpool_map of the subnet that has an address_scope will not be returned.\n\nAs far as I understand they will not be reported in duplicate, address_scopes v4 will be reported by bgpspeaker IP version 4, and address_scopes v6 will be reported by bgpspeaker IP version 6.\n\n\nfor example:\n\nDebugs in get_external_networks_for_port function:\n\nNov 08 12:37:28 os-infra-1-neutron-server-container-819795c0 neutron-server[4237]: 2022-11-08 12:37:28.113 4237 DEBUG neutron_dynamic_routing.db.bgp_db [req-a51648b0-b127-4efa-a019-56ea5e5068d7 8c140d00a7754295beae4ac85c5beecc 115a2ce896ad4958a26e3a4d624902a5 - default default] DEBUG subnet address scope - 0ced0507-6501-4262-aecd-390a0ca280d4  get_external_networks_for_port /usr/lib/python3/dist-packages/neutron_dynamic_routing/db/bgp_db.py:1195\nNov 08 12:37:28 os-infra-1-neutron-server-container-819795c0 neutron-server[4237]: 2022-11-08 12:37:28.118 4237 DEBUG neutron_dynamic_routing.db.bgp_db [req-a51648b0-b127-4efa-a019-56ea5e5068d7 8c140d00a7754295beae4ac85c5beecc 115a2ce896ad4958a26e3a4d624902a5 - default default] DEBUG subnet address scope - 35fa8bce-4d13-4d8a-9565-8466f3df1f56  get_external_networks_for_port /usr/lib/python3/dist-packages/neutron_dynamic_routing/db/bgp_db.py:1195\nNov 08 12:37:28 os-infra-1-neutron-server-container-819795c0 neutron-server[4237]: 2022-11-08 12:37:28.149 4237 DEBUG neutron_dynamic_routing.services.bgp.bgp_plugin [req-a51648b0-b127-4efa-a019-56ea5e5068d7 8c140d00a7754295beae4ac85c5beecc 115a2ce896ad4958a26e3a4d624902a5 - default default] Starting route advertisements for advertised_routes on BgpSpeaker (\u0027686b0900-83fa-4f1a-b846-f6ea50736e49\u0027,) _debug_log_for_routes /usr/lib/python3/dist-packages/neutron_dynamic_routing/services/bgp/bgp_plugin.py:422\n\n\n\nOpenstack output:\nroot@jump-host:~# openstack address scope list\n+--------------------------------------+--------------------+------------+--------+----------------------------------+\n| ID                                   | Name               | IP Version | Shared | Project                          |\n+--------------------------------------+--------------------+------------+--------+----------------------------------+\n| 0ced0507-6501-4262-aecd-390a0ca280d4 | address-scope-ipv6 |          6 | True   | d11daecfe9d847ddb7d9ce2932c2fe26 |\n| 35fa8bce-4d13-4d8a-9565-8466f3df1f56 | address-scope-ipv4 |          4 | True   | d11daecfe9d847ddb7d9ce2932c2fe26 |\n+--------------------------------------+--------------------+------------+--------+----------------------------------+\nroot@jump-host:~# openstack bgp peer list\n+--------------------------------------+--------------+---------------+-----------+\n| ID                                   | Name         | Peer IP       | Remote AS |\n+--------------------------------------+--------------+---------------+-----------+\n| 8e91babe-10b4-4feb-a534-f43d09d3d65c | border1      | 2001:db7:1::1 |     65001 |\n| e47f182e-4a17-4b0d-a91d-bb6ddaf61e1d | border1-ipv4 | 172.16.77.1   |     65001 |\n+--------------------------------------+--------------+---------------+-----------+\n\nroot@jump-host:~# openstack bgp speaker list advertised routes bgpspeaker\n+--------------------+-----------------------+\n| Destination        | Nexthop               |\n+--------------------+-----------------------+\n| 2001:db9:1234::/64 | 2001:db9:4321:42::3d8 |\n+--------------------+-----------------------+\nroot@jump-host:~# openstack bgp speaker list advertised routes bgpspeaker-ipv4\n+----------------+---------------+\n| Destination    | Nexthop       |\n+----------------+---------------+\n| 192.168.0.0/24 | 200.201.0.132 |\n+----------------+---------------+\nroot@jump-host:~#","commit_id":"ab8af605a70356d34846d67bdab36162de9459b3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"bd1d8cfabd81c0bc7bd0dd7b36cd9aa7d3e1570d","unresolved":true,"context_lines":[{"line_number":1189,"context_line":"                ext_net_id \u003d gw_subnet.network_id"},{"line_number":1190,"context_line":"                ext_pool \u003d subnetpool_obj.SubnetPool.get_object("},{"line_number":1191,"context_line":"                            ctx, id\u003dgw_subnet.subnetpool_id)"},{"line_number":1192,"context_line":"                if ext_pool is not None:"},{"line_number":1193,"context_line":"                    ext_scope_set \u003d ext_net_subnetpool_map.get(ext_net_id,"},{"line_number":1194,"context_line":"                                                               set())"},{"line_number":1195,"context_line":"                    ext_scope_set.add(ext_pool.address_scope_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"2e62052a_05b14971","line":1192,"updated":"2022-11-28 09:50:50.000000000","message":"I think \"if ext_pool:\" would be simpler and work as well in this case?","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"},{"author":{"_account_id":35432,"name":"Roberto Acosta","display_name":"rbartzen","email":"rbartzen@gmail.com","username":"rbartzen"},"change_message_id":"0940d9e2b6fb0b66f16f4b6add954f68d1f311b3","unresolved":false,"context_lines":[{"line_number":1189,"context_line":"                ext_net_id \u003d gw_subnet.network_id"},{"line_number":1190,"context_line":"                ext_pool \u003d subnetpool_obj.SubnetPool.get_object("},{"line_number":1191,"context_line":"                            ctx, id\u003dgw_subnet.subnetpool_id)"},{"line_number":1192,"context_line":"                if ext_pool is not None:"},{"line_number":1193,"context_line":"                    ext_scope_set \u003d ext_net_subnetpool_map.get(ext_net_id,"},{"line_number":1194,"context_line":"                                                               set())"},{"line_number":1195,"context_line":"                    ext_scope_set.add(ext_pool.address_scope_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"e752cd3e_bf12b92a","line":1192,"in_reply_to":"2e62052a_05b14971","updated":"2022-11-30 11:04:07.000000000","message":"Done","commit_id":"706f85f2b15b25d60744704c2d31ffe81590d2d0"}]}
