)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"633ce5d454b67f48d15884ac41b114ed213efd18","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This makes an attempt to cleanup the port if there is a failure,"},{"line_number":15,"context_line":"but there is a chance the port will be committed and the server"},{"line_number":16,"context_line":"will die or fail to clean it up on a failure. At this point the"},{"line_number":17,"context_line":"admin will need to manually delete the port."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Id7df049602d9c3de55de5a133fb6cad280a85030"},{"line_number":20,"context_line":"Partial-Bug: #1540844"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bab6814e_2c268cba","line":17,"range":{"start_line":16,"start_character":46,"end_line":17,"end_character":44},"updated":"2016-05-18 15:42:09.000000000","message":"All the more reason for functionality like that proposed here: https://review.openstack.org/#/c/308973/","commit_id":"fdfa68882fbd3bebad985df9fa695a62c53f6eae"}],"neutron/plugins/common/utils.py":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"633ce5d454b67f48d15884ac41b114ed213efd18","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"@contextlib.contextmanager"},{"line_number":167,"context_line":"def unwinding_create_port(plugin, context, *args, **kwargs):"},{"line_number":168,"context_line":"    port \u003d create_port(plugin, context, *args, **kwargs)"},{"line_number":169,"context_line":"    try:"},{"line_number":170,"context_line":"        yield port"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_6926c669","line":167,"updated":"2016-05-18 15:42:09.000000000","message":"Shouldn\u0027t we have a UT or few for this function to verify it calls create port, deletes upon exception, etc.?","commit_id":"fdfa68882fbd3bebad985df9fa695a62c53f6eae"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"633ce5d454b67f48d15884ac41b114ed213efd18","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            try:"},{"line_number":174,"context_line":"                plugin.delete_port(context, port[\u0027id\u0027], l3_port_check\u003dFalse)"},{"line_number":175,"context_line":"            except Exception:"},{"line_number":176,"context_line":"                LOG.exception(_LE(\"Encountered exception cleaning up port\"))"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"def get_interface_name(name, prefix\u003d\u0027\u0027, max_len\u003dn_const.DEVICE_NAME_MAX_LEN):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_89868ab7","line":176,"range":{"start_line":176,"start_character":35,"end_line":176,"end_character":74},"updated":"2016-05-18 15:42:09.000000000","message":"Does it make sense to include the port ID or something to identify the resource that failed to delete?","commit_id":"fdfa68882fbd3bebad985df9fa695a62c53f6eae"}]}
