)]}'
{"neutron/db/l3_hamode_db.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2caf3aa30e9cdeee589fb2e4a8b3c6d094448ec1","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    __tablename__ \u003d \u0027ha_router_network_binding\u0027"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    router_id \u003d sa.Column(sa.String(36),"},{"line_number":131,"context_line":"                          sa.ForeignKey(\u0027routers.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":132,"context_line":"                          nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":133,"context_line":"    network_id \u003d sa.Column(sa.String(36),"},{"line_number":134,"context_line":"                           sa.ForeignKey(\u0027networks.id\u0027),"},{"line_number":135,"context_line":"                           nullable\u003dFalse)"},{"line_number":136,"context_line":"    tenant_id \u003d sa.Column(sa.String(attributes.TENANT_ID_MAX_LEN),"},{"line_number":137,"context_line":"                          sa.ForeignKey(\u0027ha_router_networks.tenant_id\u0027),"},{"line_number":138,"context_line":"                          nullable\u003dFalse)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"class L3HARouterNetwork(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_c8b05046","line":138,"range":{"start_line":130,"start_character":0,"end_line":138,"end_character":41},"updated":"2016-03-17 09:27:54.000000000","message":"Add unique constraints？","commit_id":"4c9c0feab55f40a4341c18fdebc6d0d079322edc"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"476ef8af78e6bf832ddcd9ae73adb7b2263c7276","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    __tablename__ \u003d \u0027ha_router_network_binding\u0027"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    router_id \u003d sa.Column(sa.String(36),"},{"line_number":131,"context_line":"                          sa.ForeignKey(\u0027routers.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":132,"context_line":"                          nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":133,"context_line":"    network_id \u003d sa.Column(sa.String(36),"},{"line_number":134,"context_line":"                           sa.ForeignKey(\u0027networks.id\u0027),"},{"line_number":135,"context_line":"                           nullable\u003dFalse)"},{"line_number":136,"context_line":"    tenant_id \u003d sa.Column(sa.String(attributes.TENANT_ID_MAX_LEN),"},{"line_number":137,"context_line":"                          sa.ForeignKey(\u0027ha_router_networks.tenant_id\u0027),"},{"line_number":138,"context_line":"                          nullable\u003dFalse)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"class L3HARouterNetwork(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_dc72ce48","line":138,"range":{"start_line":130,"start_character":0,"end_line":138,"end_character":41},"in_reply_to":"1af94dfe_c8b05046","updated":"2016-03-17 11:05:15.000000000","message":"Sorry couldn\u0027t get you.","commit_id":"4c9c0feab55f40a4341c18fdebc6d0d079322edc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2caf3aa30e9cdeee589fb2e4a8b3c6d094448ec1","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                        context, tenant_id, router_id)"},{"line_number":337,"context_line":"                except db_exc.DBDuplicateEntry:"},{"line_number":338,"context_line":"                    continue"},{"line_number":339,"context_line":"                except Exception as e:"},{"line_number":340,"context_line":"                    LOG.info(_LI(\"Creating HA network and binding router \""},{"line_number":341,"context_line":"                                 \"%(router)s to HA network failed, \""},{"line_number":342,"context_line":"                                 \"exc %(exc)s\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_e851ccd9","line":339,"updated":"2016-03-17 09:27:54.000000000","message":"What if no remain vlan ID, continue retry will be no use.","commit_id":"4c9c0feab55f40a4341c18fdebc6d0d079322edc"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"476ef8af78e6bf832ddcd9ae73adb7b2263c7276","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                        context, tenant_id, router_id)"},{"line_number":337,"context_line":"                except db_exc.DBDuplicateEntry:"},{"line_number":338,"context_line":"                    continue"},{"line_number":339,"context_line":"                except Exception as e:"},{"line_number":340,"context_line":"                    LOG.info(_LI(\"Creating HA network and binding router \""},{"line_number":341,"context_line":"                                 \"%(router)s to HA network failed, \""},{"line_number":342,"context_line":"                                 \"exc %(exc)s\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_fc786af4","line":339,"in_reply_to":"1af94dfe_e851ccd9","updated":"2016-03-17 11:05:15.000000000","message":"How do we know that network creation failed as no free vlan ID avaialable? Does create_network throw any specific error for this case?","commit_id":"4c9c0feab55f40a4341c18fdebc6d0d079322edc"}],"neutron/db/migration/alembic_migrations/l3_init_ops.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"8259647bb6b82340a9c50860ed89ad63bc1e6b3a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                              nullable\u003dFalse,"},{"line_number":122,"context_line":"                              primary_key\u003dTrue),"},{"line_number":123,"context_line":"                    sa.ForeignKeyConstraint([\u0027network_id\u0027], [\u0027networks.id\u0027]))"},{"line_number":124,"context_line":"    op.create_table(\u0027ha_router_network_binding\u0027,"},{"line_number":125,"context_line":"                    sa.Column(\u0027router_id\u0027, sa.String(length\u003d36),"},{"line_number":126,"context_line":"                              nullable\u003dFalse,"},{"line_number":127,"context_line":"                              primary_key\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_23059cbb","line":124,"updated":"2016-03-17 07:34:30.000000000","message":"You need to create separate expand migration for this.","commit_id":"4c9c0feab55f40a4341c18fdebc6d0d079322edc"}],"neutron/scheduler/l3_agent_scheduler.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2caf3aa30e9cdeee589fb2e4a8b3c6d094448ec1","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if not ha_network:"},{"line_number":265,"context_line":"            return"},{"line_number":266,"context_line":"        router_db \u003d plugin._get_router(context, router_id)"},{"line_number":267,"context_line":"        plugin._set_vr_id(context, router_db, ha_network)"},{"line_number":268,"context_line":"        try:"},{"line_number":269,"context_line":"            port_binding \u003d plugin.add_ha_port(context.elevated(), router_id,"},{"line_number":270,"context_line":"                                          ha_network.network.id, tenant_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_68af7c94","line":267,"updated":"2016-03-17 09:27:54.000000000","message":"Why invoke  _set_vr_id here again? l3_hamod_db create_router already done this.","commit_id":"4c9c0feab55f40a4341c18fdebc6d0d079322edc"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"476ef8af78e6bf832ddcd9ae73adb7b2263c7276","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if not ha_network:"},{"line_number":265,"context_line":"            return"},{"line_number":266,"context_line":"        router_db \u003d plugin._get_router(context, router_id)"},{"line_number":267,"context_line":"        plugin._set_vr_id(context, router_db, ha_network)"},{"line_number":268,"context_line":"        try:"},{"line_number":269,"context_line":"            port_binding \u003d plugin.add_ha_port(context.elevated(), router_id,"},{"line_number":270,"context_line":"                                          ha_network.network.id, tenant_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_5cafde93","line":267,"in_reply_to":"1af94dfe_68af7c94","updated":"2016-03-17 11:05:15.000000000","message":"In multi worker environment, What if the server worker, after creating the router in DB, becomes inactive? At the same time, rpc Workers responding to agents, will create HA network, ha ports and try to run keepalived. So the agents need vr_id.","commit_id":"4c9c0feab55f40a4341c18fdebc6d0d079322edc"}]}
