)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a334848458579ae65fb7bcd04ee67f10686354c1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":20,"id":"3891c067_c6e5b8a2","updated":"2021-10-19 12:07:21.000000000","message":"Could you please rebase this change series? The current base does not have this fix:\n\nhttps://opendev.org/openstack/neutron-dynamic-routing/commit/cae03eaa496b149c8655fe4e76a5538e51b106e3\n\nAnd create bgp speaker is broken without it.","commit_id":"ce93b94a057e5d321171b0d6cb0095665f1e2027"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"e1aa9f20f8205d8d8b3ff1b2eaa2c0084e14c6c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"c286d81a_6f918ef4","in_reply_to":"3891c067_c6e5b8a2","updated":"2021-10-25 12:42:55.000000000","message":"Done","commit_id":"ce93b94a057e5d321171b0d6cb0095665f1e2027"}],"neutron_dynamic_routing/db/bgp_db.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"3317fcef963457d04b49654c419127a0102be275","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class BgpSpeakerRouterAssociation(model_base.BASEV2,"},{"line_number":77,"context_line":"                                  model_base.HasId,"},{"line_number":78,"context_line":"                                  model_base.HasProject):"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    \"\"\"Represents an association between BGP speaker and neutron router\"\"\""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"ab7d8484_6be26e83","line":78,"updated":"2021-10-25 15:20:30.000000000","message":"Why should the association be bound to a specific project? Wouldn\u0027t the project from the router be enough identification if needed?\n\nI even wonder why the ID is needed. Can there be multiple associations between the same speaker and router?","commit_id":"930b26afbcfcae44a92b96f7a6c2dad1c3857bbf"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"30b2ccb99bb08f5ceba9ca157d3e50581d39e8f3","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class BgpSpeakerRouterAssociation(model_base.BASEV2,"},{"line_number":77,"context_line":"                                  model_base.HasId,"},{"line_number":78,"context_line":"                                  model_base.HasProject):"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    \"\"\"Represents an association between BGP speaker and neutron router\"\"\""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"a2f205e6_2d3fb433","line":78,"in_reply_to":"ab7d8484_6be26e83","updated":"2022-01-03 05:47:15.000000000","message":"The idea is to try to make the association objects(router association or peer association) as first class objects.\nIt will help in enabling BGP control plane parameters specific to BGP-Speaker-to-Router binding or BGP-Speaker-to-Peer binding. For eg: some attributes (status, advertise-extra-routes etc) are useful when linked to associations rather than directly to parent resources(router or peer). A BGP Peer can be associated to different BGP Speakers, so having a Status field in bgp-peer won’t be beneficial\nThis will also help in future to expand the BGP control plane parameters specific to associations.","commit_id":"930b26afbcfcae44a92b96f7a6c2dad1c3857bbf"}],"neutron_dynamic_routing/db/migration/alembic_migrations/versions/xena/expand/738d0ae1984e_bgpaas_enh.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"3317fcef963457d04b49654c419127a0102be275","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":21,"id":"a5848cb1_67c6a1dc","updated":"2021-10-25 15:20:30.000000000","message":"The migration could only land in yoga now.","commit_id":"930b26afbcfcae44a92b96f7a6c2dad1c3857bbf"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"30b2ccb99bb08f5ceba9ca157d3e50581d39e8f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"e0042130_6483f2a5","in_reply_to":"a5848cb1_67c6a1dc","updated":"2022-01-03 05:47:15.000000000","message":"Done","commit_id":"930b26afbcfcae44a92b96f7a6c2dad1c3857bbf"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"3317fcef963457d04b49654c419127a0102be275","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        sa.Column(\u0027id\u0027, sa.String(length\u003dconstants.UUID_FIELD_SIZE),"},{"line_number":35,"context_line":"                  nullable\u003dFalse),"},{"line_number":36,"context_line":"        sa.Column(\u0027project_id\u0027, sa.String(length\u003d255)),"},{"line_number":37,"context_line":"        sa.Column(\u0027bgp_speaker_id\u0027, sa.String(length\u003d36),"},{"line_number":38,"context_line":"                  sa.ForeignKey(\u0027bgp_speakers.id\u0027), nullable\u003dFalse),"},{"line_number":39,"context_line":"        sa.Column(\u0027router_id\u0027, sa.String(length\u003d36),"},{"line_number":40,"context_line":"                  sa.ForeignKey(\u0027routers.id\u0027), nullable\u003dFalse),"},{"line_number":41,"context_line":"        sa.Column(\u0027advertise_extra_routes\u0027, sa.Boolean, nullable\u003dFalse),"},{"line_number":42,"context_line":"        sa.Column(\u0027status\u0027, sa.String(16)),"},{"line_number":43,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":21,"id":"4fa66b95_eb4b979f","line":40,"range":{"start_line":37,"start_character":7,"end_line":40,"end_character":63},"updated":"2021-10-25 15:20:30.000000000","message":"How about doing cascade_on_delete on these?","commit_id":"930b26afbcfcae44a92b96f7a6c2dad1c3857bbf"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"30b2ccb99bb08f5ceba9ca157d3e50581d39e8f3","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        sa.Column(\u0027id\u0027, sa.String(length\u003dconstants.UUID_FIELD_SIZE),"},{"line_number":35,"context_line":"                  nullable\u003dFalse),"},{"line_number":36,"context_line":"        sa.Column(\u0027project_id\u0027, sa.String(length\u003d255)),"},{"line_number":37,"context_line":"        sa.Column(\u0027bgp_speaker_id\u0027, sa.String(length\u003d36),"},{"line_number":38,"context_line":"                  sa.ForeignKey(\u0027bgp_speakers.id\u0027), nullable\u003dFalse),"},{"line_number":39,"context_line":"        sa.Column(\u0027router_id\u0027, sa.String(length\u003d36),"},{"line_number":40,"context_line":"                  sa.ForeignKey(\u0027routers.id\u0027), nullable\u003dFalse),"},{"line_number":41,"context_line":"        sa.Column(\u0027advertise_extra_routes\u0027, sa.Boolean, nullable\u003dFalse),"},{"line_number":42,"context_line":"        sa.Column(\u0027status\u0027, sa.String(16)),"},{"line_number":43,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":21,"id":"d9a21ee5_b4dc5baf","line":40,"range":{"start_line":37,"start_character":7,"end_line":40,"end_character":63},"in_reply_to":"4fa66b95_eb4b979f","updated":"2022-01-03 05:47:15.000000000","message":"cascade_on_delete was not used here, so that association doesn\u0027t go deleted without notice. This will help in deleting router association properly. And to delete the BGP speaker created during router association.","commit_id":"930b26afbcfcae44a92b96f7a6c2dad1c3857bbf"}],"neutron_dynamic_routing/tests/unit/db/test_bgp_db.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"3317fcef963457d04b49654c419127a0102be275","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    def bgp_speaker(self, ip_version, local_as, name\u003d\u0027my-speaker\u0027,"},{"line_number":51,"context_line":"                    advertise_fip_host_routes\u003dTrue,"},{"line_number":52,"context_line":"                    advertise_tenant_networks\u003dTrue,"},{"line_number":53,"context_line":"                    networks\u003dNone, peers\u003dNone, router_id\u003dNone):"},{"line_number":54,"context_line":"        data \u003d {\u0027ip_version\u0027: ip_version,"},{"line_number":55,"context_line":"                ADVERTISE_FIPS_KEY: advertise_fip_host_routes,"},{"line_number":56,"context_line":"                \u0027advertise_tenant_networks\u0027: advertise_tenant_networks,"}],"source_content_type":"text/x-python","patch_set":21,"id":"dbfca762_19e2b48d","line":53,"updated":"2021-10-25 15:20:30.000000000","message":"Can a speaker only be associated to a single router? Otherwise better use a list of IDs like for networks and peers.","commit_id":"930b26afbcfcae44a92b96f7a6c2dad1c3857bbf"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"30b2ccb99bb08f5ceba9ca157d3e50581d39e8f3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def bgp_speaker(self, ip_version, local_as, name\u003d\u0027my-speaker\u0027,"},{"line_number":51,"context_line":"                    advertise_fip_host_routes\u003dTrue,"},{"line_number":52,"context_line":"                    advertise_tenant_networks\u003dTrue,"},{"line_number":53,"context_line":"                    networks\u003dNone, peers\u003dNone, router_id\u003dNone):"},{"line_number":54,"context_line":"        data \u003d {\u0027ip_version\u0027: ip_version,"},{"line_number":55,"context_line":"                ADVERTISE_FIPS_KEY: advertise_fip_host_routes,"},{"line_number":56,"context_line":"                \u0027advertise_tenant_networks\u0027: advertise_tenant_networks,"}],"source_content_type":"text/x-python","patch_set":21,"id":"571b6bae_d100dca7","line":53,"in_reply_to":"dbfca762_19e2b48d","updated":"2022-01-03 05:47:15.000000000","message":"Done, will use list","commit_id":"930b26afbcfcae44a92b96f7a6c2dad1c3857bbf"}]}
