)]}'
{"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cd6c8bbe8fd2d9ea3282ca1b285dfd3a6be37dc4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            msg \u003d _(\"Cannot change the \u0027distributed\u0027 attribute of active \""},{"line_number":92,"context_line":"                    \"routers. Please set router admin_state_up to False \""},{"line_number":93,"context_line":"                    \"prior to upgrade\")"},{"line_number":94,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Notify advanced services of the imminent state transition"},{"line_number":97,"context_line":"        # for the router."}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_ff192d89","line":94,"updated":"2016-09-26 15:07:36.000000000","message":"I thought once a router was distributed it was essentially like Cortez saying “Burn the boats.” - there was no going back.  Is there a blueprint for the change in direction?","commit_id":"2e6be76c2d5e839e5227ebb8f081f8b3caff566e"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"fc71e3f7e4015d0708e76a0823679ad4506ef20f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            msg \u003d _(\"Cannot change the \u0027distributed\u0027 attribute of active \""},{"line_number":92,"context_line":"                    \"routers. Please set router admin_state_up to False \""},{"line_number":93,"context_line":"                    \"prior to upgrade\")"},{"line_number":94,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Notify advanced services of the imminent state transition"},{"line_number":97,"context_line":"        # for the router."}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_6eb1e946","line":94,"in_reply_to":"5a8bc5a2_22f0dafd","updated":"2016-09-26 16:16:07.000000000","message":"I think in this case, if we bring down the admin_state of the distributed router, I hope it would cleanup all the footprints in the agent.\nSo making a change from distributed to legacy may not affect other services or the router itself. \nBut it is worth adding more testing in this case. \nI am not sure what will happen to the services associated with that router.\nThat has to be checked, before doing it like the \u0027VPNaaS\u0027.","commit_id":"2e6be76c2d5e839e5227ebb8f081f8b3caff566e"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"333f01bff537d1a739ce87349d9c369c5e120d08","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            msg \u003d _(\"Cannot change the \u0027distributed\u0027 attribute of active \""},{"line_number":92,"context_line":"                    \"routers. Please set router admin_state_up to False \""},{"line_number":93,"context_line":"                    \"prior to upgrade\")"},{"line_number":94,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Notify advanced services of the imminent state transition"},{"line_number":97,"context_line":"        # for the router."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_8471f5e2","line":94,"in_reply_to":"5a8bc5a2_6eb1e946","updated":"2016-11-01 10:32:49.000000000","message":"Reviving this patch.\n\nSo, I\u0027ve talked with Paul Michali about this on vpnaas\u0027 side of things. He isn\u0027t sure on whether or not vpnaas acts accordingly on this (on admin_state_up\u003dFalse, are resources cleared?) and he says there\u0027s no one left to answer - the last remaining core, Ryan M, has stopped working on vpaas.\n\nIn short, it sounds like vpnaas is dead and will be removed soon enough. If this is the case (and seeing as how this patch is a feature and won\u0027t get backported), do we really care if we break vpnaas?\n\nAre there any other projects we want to check with?","commit_id":"2e6be76c2d5e839e5227ebb8f081f8b3caff566e"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"48b85062ea511e42912280571c75b1e2c92c85f4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            msg \u003d _(\"Cannot change the \u0027distributed\u0027 attribute of active \""},{"line_number":92,"context_line":"                    \"routers. Please set router admin_state_up to False \""},{"line_number":93,"context_line":"                    \"prior to upgrade\")"},{"line_number":94,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Notify advanced services of the imminent state transition"},{"line_number":97,"context_line":"        # for the router."}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_22f0dafd","line":94,"in_reply_to":"5a8bc5a2_ff192d89","updated":"2016-09-26 15:09:50.000000000","message":"I have honestly not dug into this deeply. If the boat is indeed burnt and we need to re-build it, I\u0027ll propose an RFE.\n\nDo you have references I can look at, outside of the code?","commit_id":"2e6be76c2d5e839e5227ebb8f081f8b3caff566e"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"0b0d50ff21d6b17ca8e8802f231a5c31b38be0f7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            msg \u003d _(\"Cannot change the \u0027distributed\u0027 attribute of active \""},{"line_number":92,"context_line":"                    \"routers. Please set router admin_state_up to False \""},{"line_number":93,"context_line":"                    \"prior to upgrade\")"},{"line_number":94,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Notify advanced services of the imminent state transition"},{"line_number":97,"context_line":"        # for the router."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_9a278c11","line":94,"in_reply_to":"ba5da102_8471f5e2","updated":"2016-11-01 11:23:25.000000000","message":"It looks like, according to [1], admin_state_up is ignored (the process isn\u0027t disabled), so this will probably break vpnaas. I\u0027d propose to fix it but there aren\u0027t any cores left so...\n\n[1]: https://github.com/openstack/neutron-vpnaas/blob/master/neutron_vpnaas/services/vpn/device_drivers/ipsec.py#L1051","commit_id":"2e6be76c2d5e839e5227ebb8f081f8b3caff566e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7ec8808209d16740cef8b4332583be218ee9cfb0","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        distributed_changed \u003d ("},{"line_number":106,"context_line":"            requested_distributed_state is not None and"},{"line_number":107,"context_line":"            requested_distributed_state !\u003d original_distributed_state)"},{"line_number":108,"context_line":"        if distributed_changed and router_db.admin_state_up:"},{"line_number":109,"context_line":"            msg \u003d _(\"Cannot change the \u0027distributed\u0027 attribute of active \""},{"line_number":110,"context_line":"                    \"routers. Please set router admin_state_up to False \""},{"line_number":111,"context_line":"                    \"prior to upgrade\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_7dbf59aa","line":108,"updated":"2017-01-10 17:47:32.000000000","message":"This doesn\u0027t seem right. Should we do anything if a state change isn\u0027t requested?  Or I\u0027m not thinking of something.\n\nif not distributed_changed:\n    return\nif router_db.admin_state_up:\n    ...","commit_id":"4c3181f81d5cedeae5e6ea63d7c1552775f48a3b"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"595559843864f0bf36a68d7ca8ce84d8c697216b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        distributed_changed \u003d ("},{"line_number":106,"context_line":"            requested_distributed_state is not None and"},{"line_number":107,"context_line":"            requested_distributed_state !\u003d original_distributed_state)"},{"line_number":108,"context_line":"        if distributed_changed and router_db.admin_state_up:"},{"line_number":109,"context_line":"            msg \u003d _(\"Cannot change the \u0027distributed\u0027 attribute of active \""},{"line_number":110,"context_line":"                    \"routers. Please set router admin_state_up to False \""},{"line_number":111,"context_line":"                    \"prior to upgrade\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_da3aeecc","line":108,"in_reply_to":"ba5201f7_7dbf59aa","updated":"2017-01-11 08:58:03.000000000","message":"Done","commit_id":"4c3181f81d5cedeae5e6ea63d7c1552775f48a3b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"93d41e0faa48cf0ca1086d11701b51e063c49692","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            requested_distributed_state is not None and"},{"line_number":102,"context_line":"            requested_distributed_state !\u003d original_distributed_state)"},{"line_number":103,"context_line":"        if not distributed_changed:"},{"line_number":104,"context_line":"            return"},{"line_number":105,"context_line":"        if router_db.admin_state_up:"},{"line_number":106,"context_line":"            msg \u003d _(\"Cannot change the \u0027distributed\u0027 attribute of active \""},{"line_number":107,"context_line":"                    \"routers. Please set router admin_state_up to False \""}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_a2003167","line":104,"updated":"2017-01-24 06:03:43.000000000","message":"So we just figured out there\u0027s nothing for the caller to do, should return False...","commit_id":"6a502194ea2baf3d332c5c8bf32cb8faf0f624c6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"93d41e0faa48cf0ca1086d11701b51e063c49692","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def _handle_distributed_migration(self, resource, event, trigger, context,"},{"line_number":126,"context_line":"                                      router_id, router, router_db, **kwargs):"},{"line_number":127,"context_line":"        \"\"\"Event handler for router update migration to distributed.\"\"\""},{"line_number":128,"context_line":"        self._validate_router_migration(context, router_db, router)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        migrating_to_distributed \u003d ("},{"line_number":131,"context_line":"            not router_db.extra_attributes.distributed and"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_e2f6b98d","line":128,"updated":"2017-01-24 06:03:43.000000000","message":"... then this could just return if False","commit_id":"6a502194ea2baf3d332c5c8bf32cb8faf0f624c6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"93d41e0faa48cf0ca1086d11701b51e063c49692","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        migrating_from_distributed \u003d ("},{"line_number":135,"context_line":"            router_db.extra_attributes.distributed and"},{"line_number":136,"context_line":"            router.get(\u0027distributed\u0027) is False)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        if migrating_to_distributed:"},{"line_number":139,"context_line":"            self._migrate_router_ports("}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_224441b5","line":136,"updated":"2017-01-24 06:03:43.000000000","message":"And we wouldn\u0027t need this code anymore, since if _validate was True, then it\u0027s either to or from distributed.","commit_id":"6a502194ea2baf3d332c5c8bf32cb8faf0f624c6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"93d41e0faa48cf0ca1086d11701b51e063c49692","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                old_owner\u003dconst.DEVICE_OWNER_ROUTER_INTF,"},{"line_number":142,"context_line":"                new_owner\u003dconst.DEVICE_OWNER_DVR_INTERFACE)"},{"line_number":143,"context_line":"            self.set_extra_attr_value(context, router_db, \u0027distributed\u0027, True)"},{"line_number":144,"context_line":"        elif migrating_from_distributed:"},{"line_number":145,"context_line":"            self._migrate_router_ports("},{"line_number":146,"context_line":"                context, router_db,"},{"line_number":147,"context_line":"                old_owner\u003dconst.DEVICE_OWNER_DVR_INTERFACE,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_820b357c","line":144,"updated":"2017-01-24 06:03:43.000000000","message":"could just be else:","commit_id":"6a502194ea2baf3d332c5c8bf32cb8faf0f624c6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"93d41e0faa48cf0ca1086d11701b51e063c49692","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                new_owner\u003dconst.DEVICE_OWNER_ROUTER_INTF)"},{"line_number":149,"context_line":"            self.set_extra_attr_value(context, router_db, \u0027distributed\u0027, False)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if migrating_to_distributed or migrating_from_distributed:"},{"line_number":152,"context_line":"            cur_agents \u003d self.list_l3_agents_hosting_router("},{"line_number":153,"context_line":"                context, router_db[\u0027id\u0027])[\u0027agents\u0027]"},{"line_number":154,"context_line":"            for agent in cur_agents:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_022025f6","line":151,"updated":"2017-01-24 06:03:43.000000000","message":"And this can go away and just un-indent below","commit_id":"6a502194ea2baf3d332c5c8bf32cb8faf0f624c6"}],"neutron/db/l3_hamode_db.py":[{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"5a963ad8fd1c07aa390fc61d1f66a6399df2b66c","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        if ha_changed:"},{"line_number":543,"context_line":"            if router_db.admin_state_up:"},{"line_number":544,"context_line":"                msg \u003d _(\u0027Cannot change HA attribute of active routers. Please \u0027"},{"line_number":545,"context_line":"                        \u0027set router admin_state_up to False prior to upgrade.\u0027)"},{"line_number":546,"context_line":"                raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":547,"context_line":"            # set status to ALLOCATING so this router is no longer"},{"line_number":548,"context_line":"            # provided to agents while its interfaces are being re-configured."}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_1f041a48","side":"PARENT","line":545,"range":{"start_line":545,"start_character":76,"end_line":545,"end_character":77},"updated":"2016-09-26 14:46:49.000000000","message":"This is strictly a nit (causes the error to have a \u0027..\u0027 suffix instead of a single \u0027.\u0027) so might as well fix it here.","commit_id":"e17d8eca221bd58dcc844656682fdbbf3db2a112"}]}
