)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3ce5eb8bcf66a6af080b9cba61b66d61b970acd7","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Rather than use the existing notification event BEFORE_UPDATE"},{"line_number":16,"context_line":"this patch adds BEFORE_STATUS_UPDATE to indicate only a"},{"line_number":17,"context_line":"simple status change is happening. This allows consumers"},{"line_number":18,"context_line":"that wish to subscribe strictly to full-blown FIP updates to"},{"line_number":19,"context_line":"do so via BEFORE_UPDATE separately from status updates."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dada55a8_ce87255f","line":17,"updated":"2016-07-21 21:06:16.000000000","message":"dunno, this sounds confusing. I believe that BEFORE_UPDATE is just fine, which is meant to capture any state change. Until we do need that distinction I don\u0027t see the need for complexity.","commit_id":"9a4069c127d67ab6c1c8f4bacc9ad57190ebc3f8"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"dce72aca34ede3c26751d83b9ea1c25968cf6e31","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Rather than use the existing notification event BEFORE_UPDATE"},{"line_number":16,"context_line":"this patch adds BEFORE_STATUS_UPDATE to indicate only a"},{"line_number":17,"context_line":"simple status change is happening. This allows consumers"},{"line_number":18,"context_line":"that wish to subscribe strictly to full-blown FIP updates to"},{"line_number":19,"context_line":"do so via BEFORE_UPDATE separately from status updates."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dada55a8_f1912e48","line":17,"in_reply_to":"dada55a8_8eeb6ddb","updated":"2016-07-21 21:35:28.000000000","message":"The current set of kwargs passed along for this notification is fairly extensive [1]. While the code can surely build that payload for status update, it seems like unnecessary overhead to convey a simple status change as we\u0027ll now have to obtain all the other data to build the payload.\n\n\nHowever, as per your suggestion I\u0027ll work on building that payload and amend it here when done + tested.\n\n\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/db/l3_db.py#L1129","commit_id":"9a4069c127d67ab6c1c8f4bacc9ad57190ebc3f8"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"9fc269def271e7fbc7423f95accee639676640e2","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Rather than use the existing notification event BEFORE_UPDATE"},{"line_number":16,"context_line":"this patch adds BEFORE_STATUS_UPDATE to indicate only a"},{"line_number":17,"context_line":"simple status change is happening. This allows consumers"},{"line_number":18,"context_line":"that wish to subscribe strictly to full-blown FIP updates to"},{"line_number":19,"context_line":"do so via BEFORE_UPDATE separately from status updates."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dada55a8_345b8b30","line":17,"in_reply_to":"dada55a8_baee6b1f","updated":"2016-07-22 15:23:27.000000000","message":"I decided to go for PRECOMMIT_UPDATE; please see patch set 2.\n\n\nIf you\u0027re not sold, I\u0027ll craft another amend to use BEFORE_UPDATE as suggested.","commit_id":"9a4069c127d67ab6c1c8f4bacc9ad57190ebc3f8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"efa774d50d1a8dc29545b2db96758f2e3a918562","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Rather than use the existing notification event BEFORE_UPDATE"},{"line_number":16,"context_line":"this patch adds BEFORE_STATUS_UPDATE to indicate only a"},{"line_number":17,"context_line":"simple status change is happening. This allows consumers"},{"line_number":18,"context_line":"that wish to subscribe strictly to full-blown FIP updates to"},{"line_number":19,"context_line":"do so via BEFORE_UPDATE separately from status updates."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dada55a8_8eeb6ddb","line":17,"in_reply_to":"dada55a8_ce87255f","updated":"2016-07-21 21:10:12.000000000","message":"Looks like the only existing subscriber is [1]. \n\n[1] http://git.openstack.org/cgit/openstack/neutron-dynamic-routing/tree/neutron_dynamic_routing/services/bgp/bgp_plugin.py#n78","commit_id":"9a4069c127d67ab6c1c8f4bacc9ad57190ebc3f8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3d24798158dc8e0f8081b2e577dda2558cb322f1","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Rather than use the existing notification event BEFORE_UPDATE"},{"line_number":16,"context_line":"this patch adds BEFORE_STATUS_UPDATE to indicate only a"},{"line_number":17,"context_line":"simple status change is happening. This allows consumers"},{"line_number":18,"context_line":"that wish to subscribe strictly to full-blown FIP updates to"},{"line_number":19,"context_line":"do so via BEFORE_UPDATE separately from status updates."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dada55a8_baee6b1f","line":17,"in_reply_to":"dada55a8_f1912e48","updated":"2016-07-21 23:01:23.000000000","message":"Alternatively you could consider AFTER_UPDATE, which for message notifications should be adequate.","commit_id":"9a4069c127d67ab6c1c8f4bacc9ad57190ebc3f8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0732c239f40e58bbae8cb308c61e979d1c14ef29","unresolved":false,"context_lines":[{"line_number":27,"context_line":"[1] https://goo.gl/YluCTF"},{"line_number":28,"context_line":"[2] https://goo.gl/W4FAiu"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Partial-Bug: #1593793"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Change-Id: I154ee31eebbc0f130a9301ba539cd0cab46b73f5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a89bdaa_458391cc","line":30,"updated":"2016-09-10 15:43:03.000000000","message":"what closes the bug?","commit_id":"7b52165591451263e8e8673b12c64757478a5dd1"}],"neutron/callbacks/events.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a59a56f926d63322349ec8f848f6826e942064c1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"BEFORE_UPDATE \u003d \u0027before_update\u0027"},{"line_number":17,"context_line":"BEFORE_DELETE \u003d \u0027before_delete\u0027"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"BEFORE_STATUS_UPDATE \u003d \u0027before_status_update\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"PRECOMMIT_CREATE \u003d \u0027precommit_create\u0027"},{"line_number":22,"context_line":"PRECOMMIT_UPDATE \u003d \u0027precommit_update\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_aee63141","line":19,"updated":"2016-07-21 21:07:11.000000000","message":"I\u0027d rather have fewer well understood states than more potentially confusing ones.","commit_id":"9a4069c127d67ab6c1c8f4bacc9ad57190ebc3f8"}],"neutron/db/l3_db.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"052df3c4450c6512323c0451db7826d2296fdafc","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"        fip_query.update({\u0027status\u0027: status}, synchronize_session\u003dFalse)"},{"line_number":1262,"context_line":""},{"line_number":1263,"context_line":"        if old_fip[\u0027status\u0027] !\u003d status:"},{"line_number":1264,"context_line":"            new_fip \u003d self._make_floatingip_dict(fip_query.one())"},{"line_number":1265,"context_line":"            registry.notify(resources.FLOATING_IP, events.PRECOMMIT_UPDATE,"},{"line_number":1266,"context_line":"                            self, context\u003dcontext,"},{"line_number":1267,"context_line":"                            floatingip_id\u003dfloatingip_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_6fff8c67","line":1264,"range":{"start_line":1264,"start_character":49,"end_line":1264,"end_character":64},"updated":"2016-07-29 15:02:04.000000000","message":"We just queried it on L1260 and only updated the status. How would you feel about saving the result of that query and and updating the status?\n\n  new_fip \u003d copy.deepcopy(old_fip)\n  new_fip[\u0027status\u0027] \u003d status\n\nI guess there could be a race where something else modified something else in the fip and notifications got messed up. I don\u0027t know.","commit_id":"78db96fa73050255caa4720e4a05c4156a14197d"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"7c662197f33504318ac35a934e6ec672ef5bbfe4","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"        fip_query.update({\u0027status\u0027: status}, synchronize_session\u003dFalse)"},{"line_number":1262,"context_line":""},{"line_number":1263,"context_line":"        if old_fip[\u0027status\u0027] !\u003d status:"},{"line_number":1264,"context_line":"            new_fip \u003d self._make_floatingip_dict(fip_query.one())"},{"line_number":1265,"context_line":"            registry.notify(resources.FLOATING_IP, events.PRECOMMIT_UPDATE,"},{"line_number":1266,"context_line":"                            self, context\u003dcontext,"},{"line_number":1267,"context_line":"                            floatingip_id\u003dfloatingip_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_47bdf6d6","line":1264,"range":{"start_line":1264,"start_character":49,"end_line":1264,"end_character":64},"in_reply_to":"bacf61ea_6fff8c67","updated":"2016-08-01 17:26:04.000000000","message":"After thinking more about the motivation for this enhancement (see bug), I think I\u0027m going to rework this patch to use AFTER_UPDATE in the call site invoking this method. Reason being is that this method (update_floatingip_status()) is called in a transaction and thus its forseeable that an error could occur after this method is called but before a commit... In this case consumers would get a notification for PRECOMMIT_UPDATE, but it wouldn\u0027t be something to act on because the status update didn\u0027t get committed. Putting the notification in the caller ensures the status update has been committed and is thus likely more useful for consumers.","commit_id":"78db96fa73050255caa4720e4a05c4156a14197d"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"dd986a215a9b9ad2f4fdbc6793aa03bb1c8cd716","unresolved":false,"context_lines":[{"line_number":1153,"context_line":"                pass"},{"line_number":1154,"context_line":"        return port_id, internal_ip_address, router_id"},{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"    def _get_router_gw_next_hop(self, context, router_id):"},{"line_number":1157,"context_line":"        next_hop \u003d None"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"        # NOTE(tidwellr) use admin context here"},{"line_number":1160,"context_line":"        # tenant may not own the router and that\u0027s OK on a FIP association"},{"line_number":1161,"context_line":"        router \u003d self._get_router(context.elevated(), router_id)"},{"line_number":1162,"context_line":"        gw_port \u003d router.gw_port"},{"line_number":1163,"context_line":"        for fixed_ip in gw_port.fixed_ips:"},{"line_number":1164,"context_line":"            addr \u003d netaddr.IPAddress(fixed_ip.ip_address)"},{"line_number":1165,"context_line":"            if addr.version \u003d\u003d lib_constants.IP_VERSION_4:"},{"line_number":1166,"context_line":"                next_hop \u003d fixed_ip.ip_address"},{"line_number":1167,"context_line":"                break"},{"line_number":1168,"context_line":"        return router, gw_port, next_hop"},{"line_number":1169,"context_line":""},{"line_number":1170,"context_line":"    def _update_fip_assoc(self, context, fip, floatingip_db, external_port):"},{"line_number":1171,"context_line":"        previous_router_id \u003d floatingip_db.router_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_96bdbed9","line":1168,"range":{"start_line":1156,"start_character":0,"end_line":1168,"end_character":40},"updated":"2016-09-12 04:53:14.000000000","message":"I don\u0027t think you need to do such change, because the next_hop query will be removed since neutron-dynamic-routing will handle it.\n\nFor some details you can find here:\nhttps://bugs.launchpad.net/neutron/+bug/1614866\n\nAnd the patches:\nhttps://review.openstack.org/#/c/357716/\nhttps://review.openstack.org/#/c/357722/","commit_id":"7b52165591451263e8e8673b12c64757478a5dd1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"dd986a215a9b9ad2f4fdbc6793aa03bb1c8cd716","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"                port_id, internal_ip_address, router_id \u003d self._get_assoc_data("},{"line_number":1340,"context_line":"                    context, fip_dict, fip_dict[\u0027floating_network_id\u0027])"},{"line_number":1341,"context_line":""},{"line_number":1342,"context_line":"            next_hop \u003d None"},{"line_number":1343,"context_line":"            if router_id:"},{"line_number":1344,"context_line":"                router, gw_port, next_hop \u003d self._get_router_gw_next_hop("},{"line_number":1345,"context_line":"                    context, router_id)"},{"line_number":1346,"context_line":""},{"line_number":1347,"context_line":"            new_fip_dict \u003d self._make_floatingip_dict(fip)"},{"line_number":1348,"context_line":"            new_fip_dict[\u0027status\u0027] \u003d status"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_b6b482f2","line":1345,"range":{"start_line":1342,"start_character":0,"end_line":1345,"end_character":39},"updated":"2016-09-12 04:53:14.000000000","message":"ditto","commit_id":"7b52165591451263e8e8673b12c64757478a5dd1"}]}
