)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"665fa0d7ffda60234d65fbed4be34b8c470202c2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ZhaoBo \u003czhaobo6@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-08-01 03:56:25 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Subcribe Trunk and subport create/delete event to set subport device_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a function in trunk plugin to receive Trunk and subport resource"},{"line_number":10,"context_line":"event, contains after_create/after_delete. This function will set the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7f287b81_a4f5ef58","line":7,"updated":"2017-08-30 22:04:45.000000000","message":"This line is too long. First line must be 50 characters long at most. This one is 71. Consider the following alternative:\n\nSet subport device_id to prevent forbidden use\n\nAnd the provide more details in the rest of the commit message","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"46c6bed3b13f1c090bbd5a4732fc9a53096f2abe","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ZhaoBo \u003czhaobo6@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-08-01 03:56:25 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Subcribe Trunk and subport create/delete event to set subport device_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a function in trunk plugin to receive Trunk and subport resource"},{"line_number":10,"context_line":"event, contains after_create/after_delete. This function will set the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1fa4df85_68e192fc","line":7,"in_reply_to":"7f287b81_a4f5ef58","updated":"2020-03-16 16:45:47.000000000","message":"Done","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"665fa0d7ffda60234d65fbed4be34b8c470202c2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Subcribe Trunk and subport create/delete event to set subport device_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a function in trunk plugin to receive Trunk and subport resource"},{"line_number":10,"context_line":"event, contains after_create/after_delete. This function will set the"},{"line_number":11,"context_line":"subport device_id to trunk_id for forbidding nova/neutron use it."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7f287b81_04fcc33b","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":20},"updated":"2017-08-30 22:04:45.000000000","message":"callback function","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"46c6bed3b13f1c090bbd5a4732fc9a53096f2abe","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Subcribe Trunk and subport create/delete event to set subport device_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a function in trunk plugin to receive Trunk and subport resource"},{"line_number":10,"context_line":"event, contains after_create/after_delete. This function will set the"},{"line_number":11,"context_line":"subport device_id to trunk_id for forbidding nova/neutron use it."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1fa4df85_c8a0c6a8","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":20},"in_reply_to":"7f287b81_04fcc33b","updated":"2020-03-16 16:45:47.000000000","message":"Done","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"665fa0d7ffda60234d65fbed4be34b8c470202c2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Subcribe Trunk and subport create/delete event to set subport device_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a function in trunk plugin to receive Trunk and subport resource"},{"line_number":10,"context_line":"event, contains after_create/after_delete. This function will set the"},{"line_number":11,"context_line":"subport device_id to trunk_id for forbidding nova/neutron use it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1700428"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7f287b81_c44ebb95","line":10,"range":{"start_line":9,"start_character":66,"end_line":10,"end_character":41},"updated":"2017-08-30 22:04:45.000000000","message":"Consider changing to:\n\nafter_create and after_delete events.","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"46c6bed3b13f1c090bbd5a4732fc9a53096f2abe","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Subcribe Trunk and subport create/delete event to set subport device_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a function in trunk plugin to receive Trunk and subport resource"},{"line_number":10,"context_line":"event, contains after_create/after_delete. This function will set the"},{"line_number":11,"context_line":"subport device_id to trunk_id for forbidding nova/neutron use it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1700428"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1fa4df85_688f522e","line":10,"range":{"start_line":9,"start_character":66,"end_line":10,"end_character":41},"in_reply_to":"7f287b81_c44ebb95","updated":"2020-03-16 16:45:47.000000000","message":"Done","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"665fa0d7ffda60234d65fbed4be34b8c470202c2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a function in trunk plugin to receive Trunk and subport resource"},{"line_number":10,"context_line":"event, contains after_create/after_delete. This function will set the"},{"line_number":11,"context_line":"subport device_id to trunk_id for forbidding nova/neutron use it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1700428"},{"line_number":14,"context_line":"Change-Id: I97fe59752f9ef2cbe0376cd6ee0739660f5937ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7f287b81_e452d734","line":11,"range":{"start_line":11,"start_character":30,"end_line":11,"end_character":64},"updated":"2017-08-30 22:04:45.000000000","message":"to prevent nova and neutron from using it","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"46c6bed3b13f1c090bbd5a4732fc9a53096f2abe","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a function in trunk plugin to receive Trunk and subport resource"},{"line_number":10,"context_line":"event, contains after_create/after_delete. This function will set the"},{"line_number":11,"context_line":"subport device_id to trunk_id for forbidding nova/neutron use it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1700428"},{"line_number":14,"context_line":"Change-Id: I97fe59752f9ef2cbe0376cd6ee0739660f5937ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1fa4df85_e88ca236","line":11,"range":{"start_line":11,"start_character":30,"end_line":11,"end_character":64},"in_reply_to":"7f287b81_e452d734","updated":"2020-03-16 16:45:47.000000000","message":"Done","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"89e1a019b977b59a6e2014d359e95e4346b63ed6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Subcribe trunk \u0026 subport events to set subport id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a callback function in trunk plugin to receive after_create"},{"line_number":10,"context_line":"and after_delete events for the trunk and subport resources This"},{"line_number":11,"context_line":"function will set the subport device_id to trunk_id to prevent nova and"},{"line_number":12,"context_line":"neutron from reusing it."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_9e50d0d6","line":10,"updated":"2020-03-27 08:12:17.000000000","message":"nitty nit :) missing dot \u0027.\u0027","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"4875e9809f24230678cc3e4e116bab8c1478356d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Subcribe trunk \u0026 subport events to set subport id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a callback function in trunk plugin to receive after_create"},{"line_number":10,"context_line":"and after_delete events for the trunk and subport resources This"},{"line_number":11,"context_line":"function will set the subport device_id to trunk_id to prevent nova and"},{"line_number":12,"context_line":"neutron from reusing it."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_034d8199","line":10,"in_reply_to":"df33271e_9e50d0d6","updated":"2020-03-27 14:56:52.000000000","message":"Agonizing.  If I have to respin I\u0027ll fix it.  Thanks!","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"}],"neutron/services/trunk/plugin.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7def690eb59fb6e2cda1fc81fad9e7749755ddca","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            core_plugin \u003d directory.get_plugin()"},{"line_number":436,"context_line":"            device_id \u003d trunk.id if event \u003d\u003d events.AFTER_CREATE else \u0027\u0027"},{"line_number":437,"context_line":"            for subport in subports:"},{"line_number":438,"context_line":"                core_plugin.update_port(context, subport.port_id,"},{"line_number":439,"context_line":"                                        {\u0027port\u0027: {\u0027device_id\u0027: device_id}})"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f287b81_d591c748","line":438,"updated":"2017-08-30 23:36:28.000000000","message":"the update must be made conditional to the revision number of the trunk so that (in case another agent is racing with an update) the update fails. That\u0027s the very reason why we didn\u0027t add this code here up until now.","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"46c6bed3b13f1c090bbd5a4732fc9a53096f2abe","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            core_plugin \u003d directory.get_plugin()"},{"line_number":436,"context_line":"            device_id \u003d trunk.id if event \u003d\u003d events.AFTER_CREATE else \u0027\u0027"},{"line_number":437,"context_line":"            for subport in subports:"},{"line_number":438,"context_line":"                core_plugin.update_port(context, subport.port_id,"},{"line_number":439,"context_line":"                                        {\u0027port\u0027: {\u0027device_id\u0027: device_id}})"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_487db61a","line":438,"in_reply_to":"7f287b81_d591c748","updated":"2020-03-16 16:45:47.000000000","message":"I think that with how standard attributes are handled these days that this is not as much of an issue, but I am very interested in comments on whether or not I am right.","commit_id":"9ef96b0584140b7e38b18485033a82c5cc0ba09e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8a1a8587c910f4b4cb6f8e133453020e859733c4","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    @registry.receives(trunk_apidef.TRUNK,"},{"line_number":438,"context_line":"                       [events.AFTER_CREATE, events.AFTER_DELETE])"},{"line_number":439,"context_line":"    @registry.receives(resources.SUBPORTS,"},{"line_number":440,"context_line":"                       [events.AFTER_CREATE, events.AFTER_DELETE])"},{"line_number":441,"context_line":"    def _process_subport_device_id_event(self, resource, event,"},{"line_number":442,"context_line":"                                        trunk_plugin, payload):"},{"line_number":443,"context_line":"        context \u003d payload.context"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_c95aae4e","line":440,"range":{"start_line":440,"start_character":45,"end_line":440,"end_character":64},"updated":"2020-03-26 15:59:59.000000000","message":"Is this event needed? If we are removing the ports, how can we updated them?","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8083629233fd6b541260d8ad063f5e19550227a2","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    @registry.receives(trunk_apidef.TRUNK,"},{"line_number":438,"context_line":"                       [events.AFTER_CREATE, events.AFTER_DELETE])"},{"line_number":439,"context_line":"    @registry.receives(resources.SUBPORTS,"},{"line_number":440,"context_line":"                       [events.AFTER_CREATE, events.AFTER_DELETE])"},{"line_number":441,"context_line":"    def _process_subport_device_id_event(self, resource, event,"},{"line_number":442,"context_line":"                                        trunk_plugin, payload):"},{"line_number":443,"context_line":"        context \u003d payload.context"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_59263517","line":440,"range":{"start_line":440,"start_character":45,"end_line":440,"end_character":64},"in_reply_to":"df33271e_9a5c667f","updated":"2020-03-30 16:47:37.000000000","message":"Thanks!","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"6961dc9f001bac413dac3e06e001225f4dc68836","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    @registry.receives(trunk_apidef.TRUNK,"},{"line_number":438,"context_line":"                       [events.AFTER_CREATE, events.AFTER_DELETE])"},{"line_number":439,"context_line":"    @registry.receives(resources.SUBPORTS,"},{"line_number":440,"context_line":"                       [events.AFTER_CREATE, events.AFTER_DELETE])"},{"line_number":441,"context_line":"    def _process_subport_device_id_event(self, resource, event,"},{"line_number":442,"context_line":"                                        trunk_plugin, payload):"},{"line_number":443,"context_line":"        context \u003d payload.context"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_9a5c667f","line":440,"range":{"start_line":440,"start_character":45,"end_line":440,"end_character":64},"in_reply_to":"df33271e_c95aae4e","updated":"2020-03-26 18:03:09.000000000","message":"The idea is that if a subport is removed and it is the only subport on a trunk then remove the trunk as well.","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8a1a8587c910f4b4cb6f8e133453020e859733c4","unresolved":false,"context_lines":[{"line_number":439,"context_line":"    @registry.receives(resources.SUBPORTS,"},{"line_number":440,"context_line":"                       [events.AFTER_CREATE, events.AFTER_DELETE])"},{"line_number":441,"context_line":"    def _process_subport_device_id_event(self, resource, event,"},{"line_number":442,"context_line":"                                        trunk_plugin, payload):"},{"line_number":443,"context_line":"        context \u003d payload.context"},{"line_number":444,"context_line":"        if resource \u003d\u003d resources.SUBPORTS:"},{"line_number":445,"context_line":"            subports \u003d payload.subports"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_c91f4e6e","line":442,"range":{"start_line":442,"start_character":39,"end_line":442,"end_character":40},"updated":"2020-03-26 15:59:59.000000000","message":"nit (no action if pep8 is ok): hmmm this indentation is not failing","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"6961dc9f001bac413dac3e06e001225f4dc68836","unresolved":false,"context_lines":[{"line_number":439,"context_line":"    @registry.receives(resources.SUBPORTS,"},{"line_number":440,"context_line":"                       [events.AFTER_CREATE, events.AFTER_DELETE])"},{"line_number":441,"context_line":"    def _process_subport_device_id_event(self, resource, event,"},{"line_number":442,"context_line":"                                        trunk_plugin, payload):"},{"line_number":443,"context_line":"        context \u003d payload.context"},{"line_number":444,"context_line":"        if resource \u003d\u003d resources.SUBPORTS:"},{"line_number":445,"context_line":"            subports \u003d payload.subports"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_1a50565d","line":442,"range":{"start_line":442,"start_character":39,"end_line":442,"end_character":40},"in_reply_to":"df33271e_c91f4e6e","updated":"2020-03-26 18:03:09.000000000","message":"If I respin I will fix it.","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"153b882ec368818f34134b7fde0483e75ac7486a","unresolved":false,"context_lines":[{"line_number":446,"context_line":"            trunk \u003d payload.original_trunk"},{"line_number":447,"context_line":"        elif resource \u003d\u003d trunk_apidef.TRUNK:"},{"line_number":448,"context_line":"            trunk \u003d payload.current_trunk or payload.original_trunk"},{"line_number":449,"context_line":"            subports \u003d trunk.sub_ports"},{"line_number":450,"context_line":"        if subports and trunk:"},{"line_number":451,"context_line":"            core_plugin \u003d directory.get_plugin()"},{"line_number":452,"context_line":"            device_id \u003d trunk.id if event \u003d\u003d events.AFTER_CREATE else \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_86ccbf6a","line":449,"updated":"2020-03-19 21:01:29.000000000","message":"nit: in L447 You are using \"elif\" so it theoretically can happen that resource will be something different than SUBPORTS or TRUNK and in such case it will fail in L450 as subports and trunk vars aren\u0027t initialized yet.","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8a1a8587c910f4b4cb6f8e133453020e859733c4","unresolved":false,"context_lines":[{"line_number":446,"context_line":"            trunk \u003d payload.original_trunk"},{"line_number":447,"context_line":"        elif resource \u003d\u003d trunk_apidef.TRUNK:"},{"line_number":448,"context_line":"            trunk \u003d payload.current_trunk or payload.original_trunk"},{"line_number":449,"context_line":"            subports \u003d trunk.sub_ports"},{"line_number":450,"context_line":"        if subports and trunk:"},{"line_number":451,"context_line":"            core_plugin \u003d directory.get_plugin()"},{"line_number":452,"context_line":"            device_id \u003d trunk.id if event \u003d\u003d events.AFTER_CREATE else \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_4402050b","line":449,"in_reply_to":"1fa4df85_0e969c3f","updated":"2020-03-26 15:59:59.000000000","message":"nit (no action): in those cases, pep8 fail because subports and trunk should be declared always. But if pep8 is fine and because we have only two possible events, I\u0027m ok too.","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"dc5b35cf45dbc0b8fa91d9784ffcd1bf69592fb7","unresolved":false,"context_lines":[{"line_number":446,"context_line":"            trunk \u003d payload.original_trunk"},{"line_number":447,"context_line":"        elif resource \u003d\u003d trunk_apidef.TRUNK:"},{"line_number":448,"context_line":"            trunk \u003d payload.current_trunk or payload.original_trunk"},{"line_number":449,"context_line":"            subports \u003d trunk.sub_ports"},{"line_number":450,"context_line":"        if subports and trunk:"},{"line_number":451,"context_line":"            core_plugin \u003d directory.get_plugin()"},{"line_number":452,"context_line":"            device_id \u003d trunk.id if event \u003d\u003d events.AFTER_CREATE else \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_0e969c3f","line":449,"in_reply_to":"1fa4df85_86ccbf6a","updated":"2020-03-20 12:43:49.000000000","message":"I think that since the only @registry.recieves() lines are for trunk and subports events that there is no way that anything but those two will ever make it\u0027s way here.","commit_id":"8ebc635a18fd23fd6595551a703961a4d4392948"}]}
