)]}'
{"neutron_dynamic_routing/api/rpc/handlers/bgp_speaker_rpc.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"ab5609f5bbfc8d9fb31b38e2303ed1772793aa03","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        Typically invoked by the BgpDrAgent as part of its bootstrap process."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        self.plugin.schedule_unscheduled_bgp_speakers(context, host)"},{"line_number":66,"context_line":"        return self.plugin.get_bgp_speakers_for_agent_host(context, host)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_1f952a87","line":65,"updated":"2017-08-16 16:27:13.000000000","message":"Having a scheduler call for every get operation is expensive. Why can\u0027t this be done as part of the periodic job?","commit_id":"d6e17ca8cbff5ce2dcb7764248bb71d825a4ef54"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"5c5c654cadc47e8e4085cbcc0aa1c1326eaf8152","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        Typically invoked by the BgpDrAgent as part of its bootstrap process."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        self.plugin.schedule_unscheduled_bgp_speakers(context, host)"},{"line_number":66,"context_line":"        return self.plugin.get_bgp_speakers_for_agent_host(context, host)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_aff13998","line":65,"in_reply_to":"9f436f4f_1f952a87","updated":"2017-08-17 12:40:36.000000000","message":"Sure it\u0027s right. I will put new ps.","commit_id":"d6e17ca8cbff5ce2dcb7764248bb71d825a4ef54"}],"neutron_dynamic_routing/db/bgp_dragentscheduler_db.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"f375141e7c64bf0b5e9c3e9252ec7dc2bb420bb3","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            raise bgp_dras_ext.BgpSpeakerReschedulingFailed("},{"line_number":157,"context_line":"                bgp_speaker_id\u003dbgp_speaker_id)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def _remove_bgp_speaker_from_dragent(self, context, agent_id, speaker_id):"},{"line_number":160,"context_line":"        with db_api.context_manager.writer.using(context):"},{"line_number":161,"context_line":"            agent_db \u003d self._get_agent(context, agent_id)"},{"line_number":162,"context_line":"            is_agent_bgp \u003d (agent_db[\u0027agent_type\u0027] \u003d\u003d"},{"line_number":163,"context_line":"                            bgp_consts.AGENT_TYPE_BGP_ROUTING)"},{"line_number":164,"context_line":"            if not is_agent_bgp:"},{"line_number":165,"context_line":"                raise bgp_dras_ext.DrAgentInvalid(id\u003dagent_id)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            query \u003d context.session.query(BgpSpeakerDrAgentBinding)"},{"line_number":168,"context_line":"            query \u003d query.filter_by(bgp_speaker_id\u003dspeaker_id,"},{"line_number":169,"context_line":"                                    agent_id\u003dagent_id)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"            num_deleted \u003d query.delete()"},{"line_number":172,"context_line":"            if not num_deleted:"},{"line_number":173,"context_line":"                raise bgp_dras_ext.DrAgentNotHostingBgpSpeaker("},{"line_number":174,"context_line":"                    bgp_speaker_id\u003dspeaker_id,"},{"line_number":175,"context_line":"                    agent_id\u003dagent_id)"},{"line_number":176,"context_line":"            LOG.debug(\u0027BgpSpeaker %(bgp_speaker_id)s removed from \u0027"},{"line_number":177,"context_line":"                      \u0027BgpDrAgent %(agent_id)s\u0027,"},{"line_number":178,"context_line":"                      {\u0027bgp_speaker_id\u0027: speaker_id,"},{"line_number":179,"context_line":"                       \u0027agent_id\u0027: agent_id})"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def remove_bgp_speaker_from_dragent(self, context, agent_id, speaker_id):"},{"line_number":182,"context_line":"        self._remove_bgp_speaker_from_dragent(context, agent_id, speaker_id)"},{"line_number":183,"context_line":"        agent_db \u003d self._get_agent(context, agent_id)"},{"line_number":184,"context_line":"        self._bgp_rpc.bgp_speaker_removed(context, speaker_id, agent_db.host)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def get_dragents_hosting_bgp_speakers(self, context, bgp_speaker_ids,"},{"line_number":187,"context_line":"                                          active\u003dNone, admin_state_up\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_729408e9","line":184,"range":{"start_line":159,"start_character":4,"end_line":184,"end_character":77},"updated":"2017-07-21 08:45:39.000000000","message":"Why we need to split remove_bgp_speaker_from_dragent into two calls?","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f7eb9997f7d3646205cdb4b8cc05da944ac25e84","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            raise bgp_dras_ext.BgpSpeakerReschedulingFailed("},{"line_number":157,"context_line":"                bgp_speaker_id\u003dbgp_speaker_id)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def _remove_bgp_speaker_from_dragent(self, context, agent_id, speaker_id):"},{"line_number":160,"context_line":"        with db_api.context_manager.writer.using(context):"},{"line_number":161,"context_line":"            agent_db \u003d self._get_agent(context, agent_id)"},{"line_number":162,"context_line":"            is_agent_bgp \u003d (agent_db[\u0027agent_type\u0027] \u003d\u003d"},{"line_number":163,"context_line":"                            bgp_consts.AGENT_TYPE_BGP_ROUTING)"},{"line_number":164,"context_line":"            if not is_agent_bgp:"},{"line_number":165,"context_line":"                raise bgp_dras_ext.DrAgentInvalid(id\u003dagent_id)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            query \u003d context.session.query(BgpSpeakerDrAgentBinding)"},{"line_number":168,"context_line":"            query \u003d query.filter_by(bgp_speaker_id\u003dspeaker_id,"},{"line_number":169,"context_line":"                                    agent_id\u003dagent_id)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"            num_deleted \u003d query.delete()"},{"line_number":172,"context_line":"            if not num_deleted:"},{"line_number":173,"context_line":"                raise bgp_dras_ext.DrAgentNotHostingBgpSpeaker("},{"line_number":174,"context_line":"                    bgp_speaker_id\u003dspeaker_id,"},{"line_number":175,"context_line":"                    agent_id\u003dagent_id)"},{"line_number":176,"context_line":"            LOG.debug(\u0027BgpSpeaker %(bgp_speaker_id)s removed from \u0027"},{"line_number":177,"context_line":"                      \u0027BgpDrAgent %(agent_id)s\u0027,"},{"line_number":178,"context_line":"                      {\u0027bgp_speaker_id\u0027: speaker_id,"},{"line_number":179,"context_line":"                       \u0027agent_id\u0027: agent_id})"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def remove_bgp_speaker_from_dragent(self, context, agent_id, speaker_id):"},{"line_number":182,"context_line":"        self._remove_bgp_speaker_from_dragent(context, agent_id, speaker_id)"},{"line_number":183,"context_line":"        agent_db \u003d self._get_agent(context, agent_id)"},{"line_number":184,"context_line":"        self._bgp_rpc.bgp_speaker_removed(context, speaker_id, agent_db.host)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def get_dragents_hosting_bgp_speakers(self, context, bgp_speaker_ids,"},{"line_number":187,"context_line":"                                          active\u003dNone, admin_state_up\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_7c1e6671","line":184,"range":{"start_line":159,"start_character":4,"end_line":184,"end_character":77},"in_reply_to":"1f1a1f67_729408e9","updated":"2017-07-23 13:05:11.000000000","message":"I added _remove_bgp_speaker_from_dragent as common method using in reschedule_bgp_speaker and remove_bgp_speaker_from_dragent.","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"619b0c49b067a78f20c31c118b9c71e94c518a8c","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    bgp_drscheduler \u003d None"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def add_periodic_dr_agent_status_check(self):"},{"line_number":70,"context_line":"        self.add_agent_status_check_worker("},{"line_number":71,"context_line":"            self.remove_bgp_speaker_from_down_agents)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_210ffe37","line":69,"range":{"start_line":69,"start_character":21,"end_line":69,"end_character":29},"updated":"2017-08-14 12:33:30.000000000","message":"dragent","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"aead60714b7de4a925997052cc2cccdb3a4510ef","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    bgp_drscheduler \u003d None"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def add_periodic_dr_agent_status_check(self):"},{"line_number":70,"context_line":"        self.add_agent_status_check_worker("},{"line_number":71,"context_line":"            self.remove_bgp_speaker_from_down_agents)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_e14d649a","line":69,"range":{"start_line":69,"start_character":21,"end_line":69,"end_character":29},"in_reply_to":"9f436f4f_210ffe37","updated":"2017-08-15 02:19:50.000000000","message":"Done","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"619b0c49b067a78f20c31c118b9c71e94c518a8c","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def add_periodic_dr_agent_status_check(self):"},{"line_number":70,"context_line":"        self.add_agent_status_check_worker("},{"line_number":71,"context_line":"            self.remove_bgp_speaker_from_down_agents)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def schedule_unscheduled_bgp_speakers(self, context, host):"},{"line_number":74,"context_line":"        if self.bgp_drscheduler:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_2126decf","line":71,"range":{"start_line":71,"start_character":46,"end_line":71,"end_character":52},"updated":"2017-08-14 12:33:30.000000000","message":"dragents","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"aead60714b7de4a925997052cc2cccdb3a4510ef","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def add_periodic_dr_agent_status_check(self):"},{"line_number":70,"context_line":"        self.add_agent_status_check_worker("},{"line_number":71,"context_line":"            self.remove_bgp_speaker_from_down_agents)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def schedule_unscheduled_bgp_speakers(self, context, host):"},{"line_number":74,"context_line":"        if self.bgp_drscheduler:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_c152603b","line":71,"range":{"start_line":71,"start_character":46,"end_line":71,"end_character":52},"in_reply_to":"9f436f4f_2126decf","updated":"2017-08-15 02:19:50.000000000","message":"Done","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"02031dfdf4cbc73ae6783f9a5a60002b9820c11e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if self.bgp_drscheduler:"},{"line_number":77,"context_line":"            return self.bgp_drscheduler.schedule_all_unscheduled_bgp_speakers("},{"line_number":78,"context_line":"                context)"},{"line_number":79,"context_line":"        else:"},{"line_number":80,"context_line":"            LOG.warning(_LW(\"Cannot schedule BgpSpeaker to DrAgent. \""},{"line_number":81,"context_line":"                            \"Reason: No scheduler registered.\"))"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f287b81_c97df6b2","line":79,"updated":"2017-08-28 22:38:39.000000000","message":"Are you sure you want to periodically print this warning all of the time? Wouldn\u0027t it be better to check for self.bgp_drscheduler on L70 and warn once then without adding the periodic workers?","commit_id":"d38f6a25f6a97c218d65da36716f44ec136c51ad"}],"neutron_dynamic_routing/extensions/bgp_dragentscheduler.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"f375141e7c64bf0b5e9c3e9252ec7dc2bb420bb3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                \"to a BGP speaker.\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_d2f51c85","line":58,"range":{"start_line":58,"start_character":41,"end_line":58,"end_character":49},"updated":"2017-07-21 08:45:39.000000000","message":"I don\u0027t think we can say Conflict here. How about using Invalid instead?","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f7eb9997f7d3646205cdb4b8cc05da944ac25e84","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                \"to a BGP speaker.\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_4f7197e0","line":58,"range":{"start_line":58,"start_character":41,"end_line":58,"end_character":49},"in_reply_to":"1f1a1f67_d2f51c85","updated":"2017-07-23 13:05:11.000000000","message":"OK, I will use it.","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"29da95155a70207d8fb3a883ebfee4d1b0b214e9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                \"to a BGP speaker.\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_5a45d716","line":58,"range":{"start_line":58,"start_character":41,"end_line":58,"end_character":49},"in_reply_to":"ff346bd7_4f7197e0","updated":"2017-07-23 13:10:28.000000000","message":"Done","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"f375141e7c64bf0b5e9c3e9252ec7dc2bb420bb3","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BgpDrSchedulerController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_b2c4e041","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":43},"updated":"2017-07-21 08:45:39.000000000","message":"In any another case re-scheduling can fail? If yes then I will suggest to make this log generic accepting a reason.\n\nclass BgpSpeakerReschedulingFailed(n_exc.Conflict, failure_reason):\n    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s. \"\n                \"reason\u003d%s.\", failure_reason)","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"f375141e7c64bf0b5e9c3e9252ec7dc2bb420bb3","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BgpDrSchedulerController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_722ac8e7","line":60,"range":{"start_line":60,"start_character":32,"end_line":60,"end_character":37},"updated":"2017-07-21 08:45:39.000000000","message":"nit: agnet","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ae0bdcdbcebc383ad310402d9d7ae3df807d8a68","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BgpDrSchedulerController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_3d69ea24","line":60,"range":{"start_line":60,"start_character":32,"end_line":60,"end_character":37},"in_reply_to":"1f1a1f67_722ac8e7","updated":"2017-07-23 21:36:08.000000000","message":"Done","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f7eb9997f7d3646205cdb4b8cc05da944ac25e84","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BgpDrSchedulerController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_5c13a267","line":60,"range":{"start_line":60,"start_character":32,"end_line":60,"end_character":37},"in_reply_to":"1f1a1f67_722ac8e7","updated":"2017-07-23 13:05:11.000000000","message":"Thanks.","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f7eb9997f7d3646205cdb4b8cc05da944ac25e84","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BgpDrSchedulerController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_dae2e72f","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":43},"in_reply_to":"1f1a1f67_b2c4e041","updated":"2017-07-23 13:05:11.000000000","message":"This exception is passed to reschedule_resources_from_down_agents and currently it is caught in reschedule_resources_from_down_agents[1].\nBut then it will not put any reasons.\n\n[1]  https://github.com/openstack/neutron/blob/master/neutron/db/agentschedulers_db.py#L189.","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"2b157404a31ccf7773b4f1e7036140fbb730d973","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BgpDrSchedulerController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_fd4b62ad","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":43},"in_reply_to":"ff346bd7_d5a7584f","updated":"2017-07-23 22:16:55.000000000","message":"reschedule_bgp_speaker raising BgpSpeakerReschedulingFailed exception is also passed to remove_bgp_speaker_from_down_agents and is only called in it.\n\nBut OK, we can consider that it is called at any other place.","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4dc35a75b9aa640b852f6395d48bc5d49a5af6d3","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BgpDrSchedulerController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_d5a7584f","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":43},"in_reply_to":"ff346bd7_dae2e72f","updated":"2017-07-23 15:27:57.000000000","message":"How about defining two separate exceptions?","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"02994cde4f466a85b7db26dcefd9da08fb015d4a","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Conflict):"},{"line_number":59,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s \""},{"line_number":60,"context_line":"                \"no eligible dr agnet found.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BgpDrSchedulerController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_5e5a3d2a","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":43},"in_reply_to":"ff346bd7_fd4b62ad","updated":"2017-07-25 03:16:26.000000000","message":"Done","commit_id":"75635dd423d03a4bb8506a6d2dc1142ed74da66e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"619b0c49b067a78f20c31c118b9c71e94c518a8c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                \"to a BGP speaker.\")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Invalid):"},{"line_number":58,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s: \""},{"line_number":59,"context_line":"                \"%(failure_reason)s.\")"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_6111865d","line":57,"range":{"start_line":57,"start_character":6,"end_line":57,"end_character":34},"updated":"2017-08-14 12:33:30.000000000","message":"BgpSpeakerRescheduleError","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"aead60714b7de4a925997052cc2cccdb3a4510ef","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                \"to a BGP speaker.\")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class BgpSpeakerReschedulingFailed(n_exc.Invalid):"},{"line_number":58,"context_line":"    message \u003d _(\"Failed rescheduling %(bgp_speaker_id)s: \""},{"line_number":59,"context_line":"                \"%(failure_reason)s.\")"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_61617405","line":57,"range":{"start_line":57,"start_character":6,"end_line":57,"end_character":34},"in_reply_to":"9f436f4f_6111865d","updated":"2017-08-15 02:19:50.000000000","message":"Done","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"}],"neutron_dynamic_routing/services/bgp/bgp_plugin.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"619b0c49b067a78f20c31c118b9c71e94c518a8c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            cfg.CONF.bgp_drscheduler_driver)"},{"line_number":53,"context_line":"        self._setup_rpc()"},{"line_number":54,"context_line":"        self._register_callbacks()"},{"line_number":55,"context_line":"        self.add_periodic_dr_agent_status_check()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def get_plugin_name(self):"},{"line_number":58,"context_line":"        return PLUGIN_NAME"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_41168257","line":55,"range":{"start_line":55,"start_character":26,"end_line":55,"end_character":34},"updated":"2017-08-14 12:33:30.000000000","message":"dragent","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"aead60714b7de4a925997052cc2cccdb3a4510ef","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            cfg.CONF.bgp_drscheduler_driver)"},{"line_number":53,"context_line":"        self._setup_rpc()"},{"line_number":54,"context_line":"        self._register_callbacks()"},{"line_number":55,"context_line":"        self.add_periodic_dr_agent_status_check()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def get_plugin_name(self):"},{"line_number":58,"context_line":"        return PLUGIN_NAME"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_415e7044","line":55,"range":{"start_line":55,"start_character":26,"end_line":55,"end_character":34},"in_reply_to":"9f436f4f_41168257","updated":"2017-08-15 02:19:50.000000000","message":"Done","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"}],"neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"64a9b8fb092895c4d549889d44f7bb529cd83dfd","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                           dr_resources.BGP_SPEAKER,"},{"line_number":133,"context_line":"                           events.AFTER_CREATE)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def schedule_unscheduled_bgp_speakers_all(self, context):"},{"line_number":136,"context_line":"        \"\"\"Call schedule_unscheduled_bgp_speakers for all hosts."},{"line_number":137,"context_line":"        \"\"\""},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f436f4f_fcd9f521","line":135,"range":{"start_line":135,"start_character":8,"end_line":135,"end_character":45},"updated":"2017-08-21 07:01:39.000000000","message":"schedule_all_unscheduled_bgp_speakers","commit_id":"c33c32df50039489f4a79fb6f66ddce587c8173c"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"58daf64c49a411f277932c66c3e755dee5373903","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                           dr_resources.BGP_SPEAKER,"},{"line_number":133,"context_line":"                           events.AFTER_CREATE)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def schedule_unscheduled_bgp_speakers_all(self, context):"},{"line_number":136,"context_line":"        \"\"\"Call schedule_unscheduled_bgp_speakers for all hosts."},{"line_number":137,"context_line":"        \"\"\""},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f436f4f_3f9d2a57","line":135,"range":{"start_line":135,"start_character":8,"end_line":135,"end_character":45},"in_reply_to":"9f436f4f_fcd9f521","updated":"2017-08-21 11:08:31.000000000","message":"Done","commit_id":"c33c32df50039489f4a79fb6f66ddce587c8173c"}],"neutron_dynamic_routing/tests/unit/services/bgp/scheduler/test_bgp_dragent_scheduler.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"619b0c49b067a78f20c31c118b9c71e94c518a8c","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        self.scheduler.resource_filter.bind(self.ctx, agents, bgp_speaker_id)"},{"line_number":325,"context_line":"        return self._get_dragent_bgp_speaker_bindings(bgp_speaker_id)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def test_reschedule_bgp_speaker_binded_down_agent(self):"},{"line_number":328,"context_line":"        agents \u003d self._create_and_set_agents_down([self.host1, self.host2])"},{"line_number":329,"context_line":"        self._schedule_bind_bgp_speaker([agents[0]], self.bgp_speaker_id)"},{"line_number":330,"context_line":"        self._kill_bgp_dragent([self.host1])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_e419047a","line":327,"range":{"start_line":327,"start_character":8,"end_line":327,"end_character":53},"updated":"2017-08-14 12:33:30.000000000","message":"test_reschedule_bgp_speaker_bound_to_down_dragent","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"aead60714b7de4a925997052cc2cccdb3a4510ef","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        self.scheduler.resource_filter.bind(self.ctx, agents, bgp_speaker_id)"},{"line_number":325,"context_line":"        return self._get_dragent_bgp_speaker_bindings(bgp_speaker_id)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def test_reschedule_bgp_speaker_binded_down_agent(self):"},{"line_number":328,"context_line":"        agents \u003d self._create_and_set_agents_down([self.host1, self.host2])"},{"line_number":329,"context_line":"        self._schedule_bind_bgp_speaker([agents[0]], self.bgp_speaker_id)"},{"line_number":330,"context_line":"        self._kill_bgp_dragent([self.host1])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_410c3040","line":327,"range":{"start_line":327,"start_character":8,"end_line":327,"end_character":53},"in_reply_to":"9f436f4f_e419047a","updated":"2017-08-15 02:19:50.000000000","message":"Done","commit_id":"a5c2b2b42c9f70175920664b0849129c4e7446d8"}]}
