)]}'
{"neutron/common/_constants.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c52244dd4598aed113bfbd68b3dfb25ebfc54dd8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"# finds out that all existing IP Allocations are associated with ports"},{"line_number":76,"context_line":"# with these owners, it will allow subnet deletion to proceed with the"},{"line_number":77,"context_line":"# IP allocations being cleaned up by cascade."},{"line_number":78,"context_line":"AUTO_DELETE_PORT_OWNERS \u003d [constants.DEVICE_OWNER_DHCP]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_054a5faa","line":78,"updated":"2020-05-19 13:14:32.000000000","message":"Shall we move this to n-lib? I\u0027d hope nobody but neutron should know about this.","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1af69203b92933a7f7de5ec1eab2120434e6d6a4","unresolved":false,"context_lines":[{"line_number":75,"context_line":"# finds out that all existing IP Allocations are associated with ports"},{"line_number":76,"context_line":"# with these owners, it will allow subnet deletion to proceed with the"},{"line_number":77,"context_line":"# IP allocations being cleaned up by cascade."},{"line_number":78,"context_line":"AUTO_DELETE_PORT_OWNERS \u003d [constants.DEVICE_OWNER_DHCP]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_400c45a4","line":78,"in_reply_to":"ff570b3c_054a5faa","updated":"2020-05-19 13:52:02.000000000","message":"I don\u0027t think so. As you said, this is neutron specific","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"}],"neutron/objects/ports.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c52244dd4598aed113bfbd68b3dfb25ebfc54dd8","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    # Version 1.3: distributed_binding -\u003e distributed_bindings"},{"line_number":279,"context_line":"    # Version 1.4: Attribute binding becomes ListOfObjectsField"},{"line_number":280,"context_line":"    # Version 1.5: Added qos_network_policy_id field"},{"line_number":281,"context_line":"    VERSION \u003d \u00271.5\u0027"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    db_model \u003d models_v2.Port"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_05f89f46","line":281,"updated":"2020-05-19 13:14:32.000000000","message":"Do we need to bump the ovo version if all we have is a new classmethod? If we do bump, can this change be backported?","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1af69203b92933a7f7de5ec1eab2120434e6d6a4","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    # Version 1.3: distributed_binding -\u003e distributed_bindings"},{"line_number":279,"context_line":"    # Version 1.4: Attribute binding becomes ListOfObjectsField"},{"line_number":280,"context_line":"    # Version 1.5: Added qos_network_policy_id field"},{"line_number":281,"context_line":"    VERSION \u003d \u00271.5\u0027"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    db_model \u003d models_v2.Port"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_a0b56180","line":281,"in_reply_to":"ff570b3c_05f89f46","updated":"2020-05-19 13:52:02.000000000","message":"nope, this change does not change the OVO fingerprint. This change can be backported because this is only a change in the server behavior. In a nutshell: this change does not imply a modification in the DB or the data passed in a RPC call.","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e71ca8f1c826677069a8e811effdef2db542b901","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    # Version 1.3: distributed_binding -\u003e distributed_bindings"},{"line_number":279,"context_line":"    # Version 1.4: Attribute binding becomes ListOfObjectsField"},{"line_number":280,"context_line":"    # Version 1.5: Added qos_network_policy_id field"},{"line_number":281,"context_line":"    VERSION \u003d \u00271.5\u0027"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    db_model \u003d models_v2.Port"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_e7863766","line":281,"in_reply_to":"ff570b3c_a0b56180","updated":"2020-05-20 09:52:52.000000000","message":"Ack, thanks.","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c52244dd4598aed113bfbd68b3dfb25ebfc54dd8","unresolved":false,"context_lines":[{"line_number":423,"context_line":"        return super(Port, cls).get_objects(context, _pager, validate_filters,"},{"line_number":424,"context_line":"                                            **kwargs)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"    @classmethod"},{"line_number":427,"context_line":"    def get_port_ids_filter_by_segment_id(cls, context, segment_id):"},{"line_number":428,"context_line":"        query \u003d context.session.query(models_v2.Port.id)"},{"line_number":429,"context_line":"        query \u003d query.join("},{"line_number":430,"context_line":"            ml2_models.PortBindingLevel,"},{"line_number":431,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":432,"context_line":"        query \u003d query.filter("},{"line_number":433,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":434,"context_line":"        return [p.id for p in query]"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    @classmethod"},{"line_number":437,"context_line":"    def get_port_ids_filter_by_segment_id_and_auto_deletability("}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_a5e733ac","line":434,"range":{"start_line":426,"start_character":0,"end_line":434,"end_character":36},"updated":"2020-05-19 13:14:32.000000000","message":"This is without a known caller now. Do we need to keep this for backwards compatibility?","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1af69203b92933a7f7de5ec1eab2120434e6d6a4","unresolved":false,"context_lines":[{"line_number":423,"context_line":"        return super(Port, cls).get_objects(context, _pager, validate_filters,"},{"line_number":424,"context_line":"                                            **kwargs)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"    @classmethod"},{"line_number":427,"context_line":"    def get_port_ids_filter_by_segment_id(cls, context, segment_id):"},{"line_number":428,"context_line":"        query \u003d context.session.query(models_v2.Port.id)"},{"line_number":429,"context_line":"        query \u003d query.join("},{"line_number":430,"context_line":"            ml2_models.PortBindingLevel,"},{"line_number":431,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":432,"context_line":"        query \u003d query.filter("},{"line_number":433,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":434,"context_line":"        return [p.id for p in query]"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    @classmethod"},{"line_number":437,"context_line":"    def get_port_ids_filter_by_segment_id_and_auto_deletability("}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_c0a05593","line":434,"range":{"start_line":426,"start_character":0,"end_line":434,"end_character":36},"in_reply_to":"ff570b3c_a5e733ac","updated":"2020-05-19 13:52:02.000000000","message":"I don\u0027t think so. If this is not called anymore, we can remove it.","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e71ca8f1c826677069a8e811effdef2db542b901","unresolved":false,"context_lines":[{"line_number":423,"context_line":"        return super(Port, cls).get_objects(context, _pager, validate_filters,"},{"line_number":424,"context_line":"                                            **kwargs)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"    @classmethod"},{"line_number":427,"context_line":"    def get_port_ids_filter_by_segment_id(cls, context, segment_id):"},{"line_number":428,"context_line":"        query \u003d context.session.query(models_v2.Port.id)"},{"line_number":429,"context_line":"        query \u003d query.join("},{"line_number":430,"context_line":"            ml2_models.PortBindingLevel,"},{"line_number":431,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":432,"context_line":"        query \u003d query.filter("},{"line_number":433,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":434,"context_line":"        return [p.id for p in query]"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    @classmethod"},{"line_number":437,"context_line":"    def get_port_ids_filter_by_segment_id_and_auto_deletability("}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_a7b71f3a","line":434,"range":{"start_line":426,"start_character":0,"end_line":434,"end_character":36},"in_reply_to":"ff570b3c_c0a05593","updated":"2020-05-20 09:52:52.000000000","message":"Done","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1af69203b92933a7f7de5ec1eab2120434e6d6a4","unresolved":false,"context_lines":[{"line_number":442,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":443,"context_line":"        query \u003d query.filter("},{"line_number":444,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":445,"context_line":"        return ("},{"line_number":446,"context_line":"            [p.id for p in query"},{"line_number":447,"context_line":"                if p.device_owner not in _constants.AUTO_DELETE_PORT_OWNERS],"},{"line_number":448,"context_line":"            [p.id for p in query"},{"line_number":449,"context_line":"                if p.device_owner in _constants.AUTO_DELETE_PORT_OWNERS],"},{"line_number":450,"context_line":"        )"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @classmethod"},{"line_number":453,"context_line":"    def modify_fields_to_db(cls, fields):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_e056395c","line":450,"range":{"start_line":445,"start_character":8,"end_line":450,"end_character":9},"updated":"2020-05-19 13:52:02.000000000","message":"Just a comment to be discussed:\n\n1) I think this method should return (a) the number (only \"count\") of ports not belonging to AUTO_DELETE_PORT_OWNERS, because this query could be very long.\n\n2) The second query should be\n\nquery \u003d query.filter(\n  models_v2.Port.tenant_id.in_(\n    _constants.AUTO_DELETE_PORT_OWNERS).all()\n\n\n3) We should request only Port.id. We don\u0027t need to whole DB register.\nquery \u003d context.session.query(models_v2.Port.id)","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e71ca8f1c826677069a8e811effdef2db542b901","unresolved":false,"context_lines":[{"line_number":442,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":443,"context_line":"        query \u003d query.filter("},{"line_number":444,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":445,"context_line":"        return ("},{"line_number":446,"context_line":"            [p.id for p in query"},{"line_number":447,"context_line":"                if p.device_owner not in _constants.AUTO_DELETE_PORT_OWNERS],"},{"line_number":448,"context_line":"            [p.id for p in query"},{"line_number":449,"context_line":"                if p.device_owner in _constants.AUTO_DELETE_PORT_OWNERS],"},{"line_number":450,"context_line":"        )"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @classmethod"},{"line_number":453,"context_line":"    def modify_fields_to_db(cls, fields):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_47ac43ec","line":450,"range":{"start_line":445,"start_character":8,"end_line":450,"end_character":9},"in_reply_to":"ff570b3c_e056395c","updated":"2020-05-20 09:52:52.000000000","message":"Done","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"749b665208c9039c524e52171192ddb660cf6642","unresolved":false,"context_lines":[{"line_number":426,"context_line":"    @classmethod"},{"line_number":427,"context_line":"    def get_auto_deletable_port_ids_and_proper_port_count_by_segment("},{"line_number":428,"context_line":"            cls, context, segment_id):"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        q_delete \u003d context.session.query(models_v2.Port.id)"},{"line_number":431,"context_line":"        q_delete \u003d q_delete.join("},{"line_number":432,"context_line":"            ml2_models.PortBindingLevel,"},{"line_number":433,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":434,"context_line":"        q_delete \u003d q_delete.filter("},{"line_number":435,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":436,"context_line":"        q_delete \u003d q_delete.filter("},{"line_number":437,"context_line":"            models_v2.Port.device_owner.in_("},{"line_number":438,"context_line":"                _constants.AUTO_DELETE_PORT_OWNERS))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        q_proper \u003d context.session.query(models_v2.Port.id)"},{"line_number":441,"context_line":"        q_proper \u003d q_proper.join("},{"line_number":442,"context_line":"            ml2_models.PortBindingLevel,"},{"line_number":443,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":444,"context_line":"        q_proper \u003d q_proper.filter("},{"line_number":445,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":446,"context_line":"        q_proper \u003d q_proper.filter("},{"line_number":447,"context_line":"            ~models_v2.Port.device_owner.in_("},{"line_number":448,"context_line":"                _constants.AUTO_DELETE_PORT_OWNERS))"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        return ([r.id for r in q_delete.all()], q_proper.count())"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @classmethod"},{"line_number":453,"context_line":"    def modify_fields_to_db(cls, fields):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_575e83e9","line":450,"range":{"start_line":429,"start_character":0,"end_line":450,"end_character":65},"updated":"2020-05-22 11:07:30.000000000","message":"Sorry for being pedantic here. You can reuse part of the code here:\n\nquery \u003d context.session.query(models_v2.Port.id)\nquery \u003d query(ml2_models.PortBindingLevel,\n              ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)\nquery \u003d query.filter(ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)\nq_delete \u003d query.filter(models_v2.Port.device_owner.in_(_constants.AUTO_DELETE_PORT_OWNERS))\nq_proper \u003d query.filter(~models_v2.Port.device_owner.in_(_constants.AUTO_DELETE_PORT_OWNERS))\nreturn ([r.id for r in q_delete.all()], q_proper.count())","commit_id":"6c185a796a986c1776d81865dcd19d6f66e1df9e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"21719d601a4b57754cefd585a83ba24bfbc09d82","unresolved":false,"context_lines":[{"line_number":426,"context_line":"    @classmethod"},{"line_number":427,"context_line":"    def get_auto_deletable_port_ids_and_proper_port_count_by_segment("},{"line_number":428,"context_line":"            cls, context, segment_id):"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        q_delete \u003d context.session.query(models_v2.Port.id)"},{"line_number":431,"context_line":"        q_delete \u003d q_delete.join("},{"line_number":432,"context_line":"            ml2_models.PortBindingLevel,"},{"line_number":433,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":434,"context_line":"        q_delete \u003d q_delete.filter("},{"line_number":435,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":436,"context_line":"        q_delete \u003d q_delete.filter("},{"line_number":437,"context_line":"            models_v2.Port.device_owner.in_("},{"line_number":438,"context_line":"                _constants.AUTO_DELETE_PORT_OWNERS))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        q_proper \u003d context.session.query(models_v2.Port.id)"},{"line_number":441,"context_line":"        q_proper \u003d q_proper.join("},{"line_number":442,"context_line":"            ml2_models.PortBindingLevel,"},{"line_number":443,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":444,"context_line":"        q_proper \u003d q_proper.filter("},{"line_number":445,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":446,"context_line":"        q_proper \u003d q_proper.filter("},{"line_number":447,"context_line":"            ~models_v2.Port.device_owner.in_("},{"line_number":448,"context_line":"                _constants.AUTO_DELETE_PORT_OWNERS))"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        return ([r.id for r in q_delete.all()], q_proper.count())"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @classmethod"},{"line_number":453,"context_line":"    def modify_fields_to_db(cls, fields):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_3d963496","line":450,"range":{"start_line":429,"start_character":0,"end_line":450,"end_character":65},"in_reply_to":"ff570b3c_575e83e9","updated":"2020-05-25 14:51:22.000000000","message":"Done","commit_id":"6c185a796a986c1776d81865dcd19d6f66e1df9e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"4705286f5148b9dc259b9542f6c577d93b479cf1","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        query \u003d query.join("},{"line_number":441,"context_line":"            ml2_models.PortBindingLevel,"},{"line_number":442,"context_line":"            ml2_models.PortBindingLevel.port_id \u003d\u003d models_v2.Port.id)"},{"line_number":443,"context_line":"        query \u003d query.filter("},{"line_number":444,"context_line":"            ml2_models.PortBindingLevel.segment_id \u003d\u003d segment_id)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        q_delete \u003d query.filter("},{"line_number":447,"context_line":"            models_v2.Port.device_owner.in_("}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_008c0dd5","line":444,"range":{"start_line":443,"start_character":0,"end_line":444,"end_character":65},"updated":"2020-06-03 11:44:37.000000000","message":"Ok, so with DISTRIBUTED OVN ports we\u0027re fine here, because the port is not bound in Neutron.","commit_id":"69f279c857edf52044a9b5ef84175c4d74cced6a"}],"neutron/plugins/ml2/db.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1af69203b92933a7f7de5ec1eab2120434e6d6a4","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    if proper_port_ids:"},{"line_number":330,"context_line":"        reason \u003d _(\"The segment is still bound with port(s) \""},{"line_number":331,"context_line":"                   \"%s\") % \", \".join(proper_port_ids + auto_delete_port_ids)"},{"line_number":332,"context_line":"        raise seg_exc.SegmentInUse(segment_id\u003dpayload.resource_id,"},{"line_number":333,"context_line":"                                   reason\u003dreason)"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_a0ce012a","line":331,"range":{"start_line":331,"start_character":37,"end_line":331,"end_character":52},"updated":"2020-05-19 13:52:02.000000000","message":"nit: according to the comments in \"get_port_ids_filter_by_segment_id_and_auto_deletability\", this won\u0027t be a list of ports.","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e71ca8f1c826677069a8e811effdef2db542b901","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    if proper_port_ids:"},{"line_number":330,"context_line":"        reason \u003d _(\"The segment is still bound with port(s) \""},{"line_number":331,"context_line":"                   \"%s\") % \", \".join(proper_port_ids + auto_delete_port_ids)"},{"line_number":332,"context_line":"        raise seg_exc.SegmentInUse(segment_id\u003dpayload.resource_id,"},{"line_number":333,"context_line":"                                   reason\u003dreason)"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_e7d4774a","line":331,"range":{"start_line":331,"start_character":37,"end_line":331,"end_character":52},"in_reply_to":"ff570b3c_a0ce012a","updated":"2020-05-20 09:52:52.000000000","message":"Done","commit_id":"19efc3c6065586d1e7da748a6a4a024ca8314e68"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"28dfa8083070b93928502a5a8b54525dde77c4f1","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":340,"context_line":"    for port_id in auto_delete_port_ids:"},{"line_number":341,"context_line":"        try:"},{"line_number":342,"context_line":"            plugin.delete_port(payload.context.elevated(), port_id)"},{"line_number":343,"context_line":"        except nlib_exc.PortNotFound:"},{"line_number":344,"context_line":"            # Don\u0027t raise if something else concurrently deleted the port"},{"line_number":345,"context_line":"            LOG.debug(\"Ignoring PortNotFound when deleting port \u0027%s\u0027. \""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_83c69699","line":342,"updated":"2020-07-09 14:11:37.000000000","message":"**out of scope**: we should have a bulk delete method","commit_id":"da45bbbff4e10e3d924ac3d85c9f382623708b11"}]}
