)]}'
{"nova/network/neutronv2/api.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"93a058c6eb236486c06f2acf228d161d2db823cf","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"},{"line_number":173,"context_line":"            if delete_on_error:"},{"line_number":174,"context_line":"                port_client.delete_port(port_id)"},{"line_number":175,"context_line":"            raise exception.PortBindingFailed(port_id\u003dport_id)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _create_port(self, port_client, instance, network_id, port_req_body,"},{"line_number":178,"context_line":"                     fixed_ip\u003dNone, security_group_ids\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_b76b7ff0","line":175,"updated":"2016-06-23 17:34:48.000000000","message":"This does mix concerns for this function now, it was kind of nice that this was really just an assert of is this thing right, why don\u0027t we just handle the fail case in the exception handler.","commit_id":"015d1a52fbbb855255546ecc0c68008a02a3bc6c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"87a821ab47ffbf1e83a1d7ca1ca11639668b29c3","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"},{"line_number":173,"context_line":"            if delete_on_error:"},{"line_number":174,"context_line":"                port_client.delete_port(port_id)"},{"line_number":175,"context_line":"            raise exception.PortBindingFailed(port_id\u003dport_id)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _create_port(self, port_client, instance, network_id, port_req_body,"},{"line_number":178,"context_line":"                     fixed_ip\u003dNone, security_group_ids\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_951b6680","line":175,"in_reply_to":"3aaa91ec_b76b7ff0","updated":"2016-06-27 12:59:06.000000000","message":"I agree, I remove the delete port all together in the next patch.","commit_id":"015d1a52fbbb855255546ecc0c68008a02a3bc6c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"87a821ab47ffbf1e83a1d7ca1ca11639668b29c3","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                port_req_body[\u0027port\u0027][\u0027security_groups\u0027] \u003d security_group_ids"},{"line_number":204,"context_line":"            port_response \u003d port_client.create_port(port_req_body)"},{"line_number":205,"context_line":"            self._ensure_port_binding_success("},{"line_number":206,"context_line":"                    port_client, port_response, delete_on_error\u003dTrue)"},{"line_number":207,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"},{"line_number":208,"context_line":"            LOG.debug(\u0027Successfully created port: %s\u0027, port_id,"},{"line_number":209,"context_line":"                      instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_c0240eb4","line":206,"range":{"start_line":206,"start_character":64,"end_line":206,"end_character":68},"updated":"2016-06-27 12:59:06.000000000","message":"this was meant to be false, my bad.","commit_id":"015d1a52fbbb855255546ecc0c68008a02a3bc6c"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"93a058c6eb236486c06f2acf228d161d2db823cf","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                      instance\u003dinstance)"},{"line_number":210,"context_line":"            return port_id"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        except neutron_client_exc.InvalidIpForNetworkClient:"},{"line_number":213,"context_line":"            LOG.warning(_LW(\u0027Neutron error: %(ip)s is not a valid IP address \u0027"},{"line_number":214,"context_line":"                            \u0027for network %(network_id)s.\u0027),"},{"line_number":215,"context_line":"                        {\u0027ip\u0027: fixed_ip, \u0027network_id\u0027: network_id},"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_771ab77e","line":212,"updated":"2016-06-23 17:34:48.000000000","message":"we\u0027d do an except PortbindingFailed here, then do the delete in the handler. Or is there a concern that this fails in some odd way that is a double fault?","commit_id":"015d1a52fbbb855255546ecc0c68008a02a3bc6c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"87a821ab47ffbf1e83a1d7ca1ca11639668b29c3","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                      instance\u003dinstance)"},{"line_number":210,"context_line":"            return port_id"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        except neutron_client_exc.InvalidIpForNetworkClient:"},{"line_number":213,"context_line":"            LOG.warning(_LW(\u0027Neutron error: %(ip)s is not a valid IP address \u0027"},{"line_number":214,"context_line":"                            \u0027for network %(network_id)s.\u0027),"},{"line_number":215,"context_line":"                        {\u0027ip\u0027: fixed_ip, \u0027network_id\u0027: network_id},"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_e00caa3d","line":212,"in_reply_to":"3aaa91ec_771ab77e","updated":"2016-06-27 12:59:06.000000000","message":"bummer, I screwed up, I meant to pass in false.","commit_id":"015d1a52fbbb855255546ecc0c68008a02a3bc6c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3b7cd386c36915d073dfeb72cc61ad05861058ab","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                      instance\u003dinstance)"},{"line_number":210,"context_line":"            return port_id"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        except neutron_client_exc.InvalidIpForNetworkClient:"},{"line_number":213,"context_line":"            LOG.warning(_LW(\u0027Neutron error: %(ip)s is not a valid IP address \u0027"},{"line_number":214,"context_line":"                            \u0027for network %(network_id)s.\u0027),"},{"line_number":215,"context_line":"                        {\u0027ip\u0027: fixed_ip, \u0027network_id\u0027: network_id},"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_8657be25","line":212,"in_reply_to":"3aaa91ec_e00caa3d","updated":"2016-06-27 13:42:02.000000000","message":"actually, no, I did mean this, basically skipping the delete in one case.\n\nafter the rebase, this should become much clearer.","commit_id":"015d1a52fbbb855255546ecc0c68008a02a3bc6c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a2a1902bdf454f37f633651fa4cf80d2a21a2df","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            _ensure_no_port_binding_failure(port)"},{"line_number":265,"context_line":"            LOG.debug(\u0027Successfully updated port: %s\u0027, port_id,"},{"line_number":266,"context_line":"                      instance\u003dinstance)"},{"line_number":267,"context_line":"        except neutron_client_exc.MacAddressInUseClient:"},{"line_number":268,"context_line":"            mac_address \u003d port_req_body[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":269,"context_line":"            network_id \u003d port_req_body[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":270,"context_line":"            LOG.warning(_LW(\u0027Neutron error: MAC address %(mac)s is already \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_5a83a2cc","line":267,"updated":"2016-06-28 15:00:28.000000000","message":"This won\u0027t catch PortBindingFailed as raised by _ensure_no_port_binding_failure().. Shouldn\u0027t it?","commit_id":"c634f78da173423029e9dad5f074619039a4c7bc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"787e2fee0c4515a4a2281019da521be2f75f8b86","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            _ensure_no_port_binding_failure(port)"},{"line_number":265,"context_line":"            LOG.debug(\u0027Successfully updated port: %s\u0027, port_id,"},{"line_number":266,"context_line":"                      instance\u003dinstance)"},{"line_number":267,"context_line":"        except neutron_client_exc.MacAddressInUseClient:"},{"line_number":268,"context_line":"            mac_address \u003d port_req_body[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":269,"context_line":"            network_id \u003d port_req_body[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":270,"context_line":"            LOG.warning(_LW(\u0027Neutron error: MAC address %(mac)s is already \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_bd9edd51","line":267,"in_reply_to":"3aaa91ec_5a83a2cc","updated":"2016-06-29 07:45:24.000000000","message":"Its not meant to catch it, see below.\n\nHopefully this can get cleaned up once the loop below gets split apart.","commit_id":"c634f78da173423029e9dad5f074619039a4c7bc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2c97e0bfa8e7483345e85fb7fe3e0c7d91ba0584","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            _ensure_no_port_binding_failure(port)"},{"line_number":265,"context_line":"            LOG.debug(\u0027Successfully updated port: %s\u0027, port_id,"},{"line_number":266,"context_line":"                      instance\u003dinstance)"},{"line_number":267,"context_line":"        except neutron_client_exc.MacAddressInUseClient:"},{"line_number":268,"context_line":"            mac_address \u003d port_req_body[\u0027port\u0027][\u0027mac_address\u0027]"},{"line_number":269,"context_line":"            network_id \u003d port_req_body[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":270,"context_line":"            LOG.warning(_LW(\u0027Neutron error: MAC address %(mac)s is already \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_bcdb667b","line":267,"in_reply_to":"3aaa91ec_bd9edd51","updated":"2016-06-29 14:54:38.000000000","message":"Okay, I see. I think I was confusing port_client.update_port() with this one, thinking it was called from those locations.","commit_id":"c634f78da173423029e9dad5f074619039a4c7bc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"787e2fee0c4515a4a2281019da521be2f75f8b86","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                self._update_port_dns_name(context, instance, network,"},{"line_number":687,"context_line":"                                           ports_in_requested_order[-1],"},{"line_number":688,"context_line":"                                           neutron)"},{"line_number":689,"context_line":"            except Exception:"},{"line_number":690,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":691,"context_line":"                    self._unbind_ports(context,"},{"line_number":692,"context_line":"                                       preexisting_port_ids,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_ddcac94e","line":689,"updated":"2016-06-29 07:45:24.000000000","message":"So this is the one that matters here. This triggers the port delete, as required.","commit_id":"c634f78da173423029e9dad5f074619039a4c7bc"}]}
