)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3cc6d360b28770abb7f5735f48f7fbbc22a85178","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change adds some logic to the neutronv2 API implementation"},{"line_number":10,"context_line":"of setup_networks_on_host such that if teardown\u003dTrue and a host"},{"line_number":11,"context_line":"is provided (which is not the current instance.host), port"},{"line_number":12,"context_line":"bindings for that host and the ports attached to the instance"},{"line_number":13,"context_line":"are deleted."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If the port bindings don\u0027t exist, then Neutron will return a 404"},{"line_number":16,"context_line":"which we ignore."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5f7c97a3_932f8587","line":13,"range":{"start_line":12,"start_character":23,"end_line":13,"end_character":12},"updated":"2018-06-18 13:27:54.000000000","message":"I don\u0027t get this part of the sentence. Does it mean that so far the teardown only deleted the ports but now also deletes the bindings as well?","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e5d6221e351960ddc5f122f3660b2ad597e6e3a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change adds some logic to the neutronv2 API implementation"},{"line_number":10,"context_line":"of setup_networks_on_host such that if teardown\u003dTrue and a host"},{"line_number":11,"context_line":"is provided (which is not the current instance.host), port"},{"line_number":12,"context_line":"bindings for that host and the ports attached to the instance"},{"line_number":13,"context_line":"are deleted."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If the port bindings don\u0027t exist, then Neutron will return a 404"},{"line_number":16,"context_line":"which we ignore."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5f7c97a3_f74578b5","line":13,"range":{"start_line":12,"start_character":23,"end_line":13,"end_character":12},"in_reply_to":"5f7c97a3_932f8587","updated":"2018-06-18 22:17:48.000000000","message":"Agree it\u0027s confusing, we don\u0027t delete the ports. Before this change, if teardown\u003dTrue, we cleared the \"migrating_to\" attribute from the binding:profile per port. Now we do that plus we delete the port bindings for the provided host. I can re-word this.","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3cc6d360b28770abb7f5735f48f7fbbc22a85178","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This will be used later in _post_live_migration and"},{"line_number":19,"context_line":"_rollback_live_migration flows. In the post case, the live"},{"line_number":20,"context_line":"migration was successful so the inactive port bindings on the"},{"line_number":21,"context_line":"source host will be deleted. In the rollback case, the live"},{"line_number":22,"context_line":"migration failed so the inactive port bindings on the destination"},{"line_number":23,"context_line":"host will be deleted."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5f7c97a3_93446549","line":21,"range":{"start_line":20,"start_character":25,"end_line":21,"end_character":28},"updated":"2018-06-18 13:27:54.000000000","message":"wait, but we don\u0027t delete ports here. So I still don\u0027t get the last part of L12","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e5d6221e351960ddc5f122f3660b2ad597e6e3a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This will be used later in _post_live_migration and"},{"line_number":19,"context_line":"_rollback_live_migration flows. In the post case, the live"},{"line_number":20,"context_line":"migration was successful so the inactive port bindings on the"},{"line_number":21,"context_line":"source host will be deleted. In the rollback case, the live"},{"line_number":22,"context_line":"migration failed so the inactive port bindings on the destination"},{"line_number":23,"context_line":"host will be deleted."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5f7c97a3_32953e89","line":21,"range":{"start_line":20,"start_character":25,"end_line":21,"end_character":28},"in_reply_to":"5f7c97a3_93446549","updated":"2018-06-18 22:17:48.000000000","message":"It\u0027s not about the ports, it\u0027s about the port bindings. Just poor wording on L12.","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"deec3a445a1c7356c531b7cb90442c39bad5e665","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                        # This call is safe in that 404s for non-existing"},{"line_number":374,"context_line":"                        # bindings are ignored."},{"line_number":375,"context_line":"                        self.delete_port_binding("},{"line_number":376,"context_line":"                            context, port[\u0027id\u0027], host, admin_client)"},{"line_number":377,"context_line":"            elif port_migrating:"},{"line_number":378,"context_line":"                # Setup the port profile"},{"line_number":379,"context_line":"                self._setup_migration_port_profile("}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_2a596459","line":376,"range":{"start_line":376,"start_character":55,"end_line":376,"end_character":67},"updated":"2018-03-26 13:10:33.000000000","message":"name kwargs","commit_id":"859b3c7463d8ef3cb5b43e00489bb957058c9b7f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"80ccf6c703c07d0509604d3eaeadff3a4129be1e","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                        # This call is safe in that 404s for non-existing"},{"line_number":374,"context_line":"                        # bindings are ignored."},{"line_number":375,"context_line":"                        self.delete_port_binding("},{"line_number":376,"context_line":"                            context, port[\u0027id\u0027], host, admin_client)"},{"line_number":377,"context_line":"            elif port_migrating:"},{"line_number":378,"context_line":"                # Setup the port profile"},{"line_number":379,"context_line":"                self._setup_migration_port_profile("}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_20e423ac","line":376,"range":{"start_line":376,"start_character":55,"end_line":376,"end_character":67},"in_reply_to":"bf659307_2a596459","updated":"2018-03-26 14:00:14.000000000","message":"OK","commit_id":"859b3c7463d8ef3cb5b43e00489bb957058c9b7f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"deec3a445a1c7356c531b7cb90442c39bad5e665","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"            LOG.debug(\u0027Deleted binding for port %s and host %s.\u0027,"},{"line_number":1256,"context_line":"                      port_id, host)"},{"line_number":1257,"context_line":"        else:"},{"line_number":1258,"context_line":"            # We can safely ignore 404s since we\u0027re trying to delete"},{"line_number":1259,"context_line":"            # the thing that wasn\u0027t found anyway."},{"line_number":1260,"context_line":"            if resp.status_code !\u003d 404:"},{"line_number":1261,"context_line":"                LOG.warning(\u0027Unexpected error trying to delete binding \u0027"},{"line_number":1262,"context_line":"                            \u0027for port %s and host %s. Code: %s. \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_8a0af023","line":1259,"range":{"start_line":1258,"start_character":12,"end_line":1259,"end_character":49},"updated":"2018-03-26 13:10:33.000000000","message":"Though you\u0027re ignoring non-404s anyway (just logging).  Is that kosher?","commit_id":"859b3c7463d8ef3cb5b43e00489bb957058c9b7f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"80ccf6c703c07d0509604d3eaeadff3a4129be1e","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"            LOG.debug(\u0027Deleted binding for port %s and host %s.\u0027,"},{"line_number":1256,"context_line":"                      port_id, host)"},{"line_number":1257,"context_line":"        else:"},{"line_number":1258,"context_line":"            # We can safely ignore 404s since we\u0027re trying to delete"},{"line_number":1259,"context_line":"            # the thing that wasn\u0027t found anyway."},{"line_number":1260,"context_line":"            if resp.status_code !\u003d 404:"},{"line_number":1261,"context_line":"                LOG.warning(\u0027Unexpected error trying to delete binding \u0027"},{"line_number":1262,"context_line":"                            \u0027for port %s and host %s. Code: %s. \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_c0d527bb","line":1259,"range":{"start_line":1258,"start_character":12,"end_line":1259,"end_character":49},"in_reply_to":"bf659307_8a0af023","updated":"2018-03-26 14:00:14.000000000","message":"I guess I figured it depends on if the caller needs to know it failed. If I raise from here, I\u0027m going to catch that exception in setup_networks_on_host but continue looping over the ports, and then need to decide if I\u0027m going to raise the original exception up out of that or not. And then what do I do in the live migration flow methods that are calling this? Fail the migration (we\u0027d either be in post live migration or rollback live migration at that point, and if we\u0027re in rollback live migration we\u0027ve already failed the live migration and are just trying to clean up). If we\u0027re in post live migration, things are probably a bit weird, although the source host port binding that we\u0027d be trying to delete would be inactive so they shouldn\u0027t cause problems. I guess we could just log a warning in post-live-migration if deleting the source host port bindings fails.\n\nAnyway, changing this method to raise an exception would need to be dealt with in https://review.openstack.org/#/c/552170/.","commit_id":"859b3c7463d8ef3cb5b43e00489bb957058c9b7f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"80ccf6c703c07d0509604d3eaeadff3a4129be1e","unresolved":false,"context_lines":[{"line_number":1258,"context_line":"            # We can safely ignore 404s since we\u0027re trying to delete"},{"line_number":1259,"context_line":"            # the thing that wasn\u0027t found anyway."},{"line_number":1260,"context_line":"            if resp.status_code !\u003d 404:"},{"line_number":1261,"context_line":"                LOG.warning(\u0027Unexpected error trying to delete binding \u0027"},{"line_number":1262,"context_line":"                            \u0027for port %s and host %s. Code: %s. \u0027"},{"line_number":1263,"context_line":"                            \u0027Error: %s\u0027, port_id, host,"},{"line_number":1264,"context_line":"                            resp.status_code, resp.text)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_e0786bf9","line":1261,"range":{"start_line":1261,"start_character":20,"end_line":1261,"end_character":27},"updated":"2018-03-26 14:00:14.000000000","message":"This should probably be error like in activate_port_binding below.","commit_id":"859b3c7463d8ef3cb5b43e00489bb957058c9b7f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c92cf977ac2c97e3793f9b9fbe035abb26503d9a","unresolved":false,"context_lines":[{"line_number":1262,"context_line":"        else:"},{"line_number":1263,"context_line":"            # We can safely ignore 404s since we\u0027re trying to delete"},{"line_number":1264,"context_line":"            # the thing that wasn\u0027t found anyway."},{"line_number":1265,"context_line":"            if resp.status_code !\u003d 404:"},{"line_number":1266,"context_line":"                # Log the details, raise an exception."},{"line_number":1267,"context_line":"                LOG.error(\u0027Unexpected error trying to delete binding \u0027"},{"line_number":1268,"context_line":"                          \u0027for port %s and host %s. Code: %s. \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_607e8a6c","line":1265,"updated":"2018-03-27 01:05:15.000000000","message":"Yeah this isn\u0027t going to work:\n\nhttp://logs.openstack.org/33/556333/2/check/tempest-full/55e0029/controller/logs/screen-n-cpu.txt.gz?level\u003dTRACE#_Mar_26_20_50_32_322675\n\nAlready pointed out in the change that added this method.","commit_id":"39676404026b0005fb83cc86e5e723d95adc9f10"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"77029386e57f5c774557dc0ac39018feba072666","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                    context, instance, admin_client, ports)"},{"line_number":393,"context_line":"                # If a host was provided, delete any bindings between that"},{"line_number":394,"context_line":"                # host and the ports."},{"line_number":395,"context_line":"                if (host is not None and"},{"line_number":396,"context_line":"                        self.supports_port_binding_extension(context)):"},{"line_number":397,"context_line":"                    for port in ports:"},{"line_number":398,"context_line":"                        # This call is safe in that 404s for non-existing"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_53e405e0","line":395,"updated":"2018-03-31 15:01:44.000000000","message":"When resizing to the same host (single node devstack), we should only delete the port host binding if the host is !\u003d instance.host, otherwise we\u0027ll be deleting the sole port host binding, which is going to break the port.\n\nChecking the instance.host at the point of confirm_resize calling this is OK since during resize, the instance.host is changed to the dest compute host during resize_instance in the compute manager, and that\u0027s before we get to the point of the VERIFY_RESIZE state.\n\nThe revert_resize flow is OK for now since it doesn\u0027t pass a host in here when tearing down on the dest host (which is maybe odd), so that at least means we won\u0027t attempt to delete port bindings for revert resize here.","commit_id":"59800cb66279f2933650b2dd7153c28e358c08a7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6181be300abfe5b41133837ee00f8b3bf76bd178","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                # If a host was provided, delete any bindings between that"},{"line_number":395,"context_line":"                # host and the ports as long as the host isn\u0027t the same as"},{"line_number":396,"context_line":"                # the current instance.host."},{"line_number":397,"context_line":"                if (host is not None and port_migrating and"},{"line_number":398,"context_line":"                        self.supports_port_binding_extension(context)):"},{"line_number":399,"context_line":"                    for port in ports:"},{"line_number":400,"context_line":"                        # This call is safe in that 404s for non-existing"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_42a2edfd","line":397,"range":{"start_line":397,"start_character":20,"end_line":397,"end_character":36},"updated":"2018-04-01 14:10:20.000000000","message":"This isn\u0027t needed anymore, it\u0027s redundant with port_migrating which is only True if host is not None.","commit_id":"e4007cc2cd4374e9c9f87ddf197f3941b2420a8c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3891d38d2747a2138b63a670394e2ff6922390bb","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                    for port in ports:"},{"line_number":400,"context_line":"                        # This call is safe in that 404s for non-existing"},{"line_number":401,"context_line":"                        # bindings are ignored."},{"line_number":402,"context_line":"                        self.delete_port_binding("},{"line_number":403,"context_line":"                            context, port[\u0027id\u0027], host)"},{"line_number":404,"context_line":"            elif port_migrating:"},{"line_number":405,"context_line":"                # Setup the port profile"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_76025771","line":402,"range":{"start_line":402,"start_character":29,"end_line":402,"end_character":48},"updated":"2018-03-31 18:15:55.000000000","message":"Ah, so here is where you would *not* want to ignore exceptions from delete_port_binding.","commit_id":"e4007cc2cd4374e9c9f87ddf197f3941b2420a8c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6181be300abfe5b41133837ee00f8b3bf76bd178","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                    for port in ports:"},{"line_number":400,"context_line":"                        # This call is safe in that 404s for non-existing"},{"line_number":401,"context_line":"                        # bindings are ignored."},{"line_number":402,"context_line":"                        self.delete_port_binding("},{"line_number":403,"context_line":"                            context, port[\u0027id\u0027], host)"},{"line_number":404,"context_line":"            elif port_migrating:"},{"line_number":405,"context_line":"                # Setup the port profile"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_a2a189fa","line":402,"range":{"start_line":402,"start_character":29,"end_line":402,"end_character":48},"in_reply_to":"bf659307_76025771","updated":"2018-04-01 14:10:20.000000000","message":"Yeah, although as I found yesterday (and fixed in the latest patch set), this works without failure on a single host resize, but then port delete will later fail because the port\u0027s single host binding is gone, so I had to add the port_migrating condition to this.","commit_id":"e4007cc2cd4374e9c9f87ddf197f3941b2420a8c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3cc6d360b28770abb7f5735f48f7fbbc22a85178","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            host is also provided, then port bindings for that host are"},{"line_number":381,"context_line":"            deleted when teardown is True as long as the host does not match"},{"line_number":382,"context_line":"            the current instance.host."},{"line_number":383,"context_line":"        :raises: nova.exception.PortBindingDeletionFailed if host is not None,"},{"line_number":384,"context_line":"            teardown is True, and port binding deletion fails."},{"line_number":385,"context_line":"        \"\"\""},{"line_number":386,"context_line":"        # Check if the instance is migrating to a new host."},{"line_number":387,"context_line":"        port_migrating \u003d host and (instance.host !\u003d host)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_f3959933","line":384,"range":{"start_line":383,"start_character":1,"end_line":384,"end_character":62},"updated":"2018-06-18 13:27:54.000000000","message":"Do we need to add handle this in some upper layers?\nAlso the upper lay might have hard time to rollback the operation as it will not know what binding left undeleted.","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6d0510b8e05f8ab2cb4f8b4dd1712b375f10f9d3","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            host is also provided, then port bindings for that host are"},{"line_number":381,"context_line":"            deleted when teardown is True as long as the host does not match"},{"line_number":382,"context_line":"            the current instance.host."},{"line_number":383,"context_line":"        :raises: nova.exception.PortBindingDeletionFailed if host is not None,"},{"line_number":384,"context_line":"            teardown is True, and port binding deletion fails."},{"line_number":385,"context_line":"        \"\"\""},{"line_number":386,"context_line":"        # Check if the instance is migrating to a new host."},{"line_number":387,"context_line":"        port_migrating \u003d host and (instance.host !\u003d host)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_402f3ba6","line":384,"range":{"start_line":383,"start_character":1,"end_line":384,"end_character":62},"in_reply_to":"5f7c97a3_e3b82c76","updated":"2018-07-19 13:41:04.000000000","message":"I can add a follow up change which tries to delete each port binding and raise the exception at the end so we at least tried.","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4f9480cee2861b428607c02a424589ef8646b69f","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            host is also provided, then port bindings for that host are"},{"line_number":381,"context_line":"            deleted when teardown is True as long as the host does not match"},{"line_number":382,"context_line":"            the current instance.host."},{"line_number":383,"context_line":"        :raises: nova.exception.PortBindingDeletionFailed if host is not None,"},{"line_number":384,"context_line":"            teardown is True, and port binding deletion fails."},{"line_number":385,"context_line":"        \"\"\""},{"line_number":386,"context_line":"        # Check if the instance is migrating to a new host."},{"line_number":387,"context_line":"        port_migrating \u003d host and (instance.host !\u003d host)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_e3b82c76","line":384,"range":{"start_line":383,"start_character":1,"end_line":384,"end_character":62},"in_reply_to":"5f7c97a3_f28ee677","updated":"2018-06-20 12:44:30.000000000","message":"that patch just log the error and let the inactive port bindings linger in neutron. If there is no limit how many inactive binding a port can have and having an inactive binding does not consume resources then we are safe.","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e5d6221e351960ddc5f122f3660b2ad597e6e3a","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            host is also provided, then port bindings for that host are"},{"line_number":381,"context_line":"            deleted when teardown is True as long as the host does not match"},{"line_number":382,"context_line":"            the current instance.host."},{"line_number":383,"context_line":"        :raises: nova.exception.PortBindingDeletionFailed if host is not None,"},{"line_number":384,"context_line":"            teardown is True, and port binding deletion fails."},{"line_number":385,"context_line":"        \"\"\""},{"line_number":386,"context_line":"        # Check if the instance is migrating to a new host."},{"line_number":387,"context_line":"        port_migrating \u003d host and (instance.host !\u003d host)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_f28ee677","line":384,"range":{"start_line":383,"start_character":1,"end_line":384,"end_character":62},"in_reply_to":"5f7c97a3_f3959933","updated":"2018-06-18 22:17:48.000000000","message":"See: https://review.openstack.org/#/c/551371/","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3cc6d360b28770abb7f5735f48f7fbbc22a85178","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                self._clear_migration_port_profile("},{"line_number":402,"context_line":"                    context, instance, admin_client, ports)"},{"line_number":403,"context_line":"                # If a host was provided, delete any bindings between that"},{"line_number":404,"context_line":"                # host and the ports as long as the host isn\u0027t the same as"},{"line_number":405,"context_line":"                # the current instance.host."},{"line_number":406,"context_line":"                has_binding_ext \u003d self.supports_port_binding_extension(context)"},{"line_number":407,"context_line":"                if port_migrating and has_binding_ext:"},{"line_number":408,"context_line":"                    for port in ports:"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_b31e410b","line":405,"range":{"start_line":404,"start_character":37,"end_line":405,"end_character":44},"updated":"2018-06-18 13:27:54.000000000","message":"note to myself: This is implied by (port_migrating \u003d\u003d True)","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3cc6d360b28770abb7f5735f48f7fbbc22a85178","unresolved":false,"context_lines":[{"line_number":4354,"context_line":"                                            host\u003dinstance.host,"},{"line_number":4355,"context_line":"                                            teardown\u003dTrue)"},{"line_number":4356,"context_line":"        update_port_mock.assert_not_called()"},{"line_number":4357,"context_line":""},{"line_number":4358,"context_line":"    def test__update_port_with_migration_profile_raise_exception(self):"},{"line_number":4359,"context_line":""},{"line_number":4360,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.context)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_537b2df3","line":4357,"updated":"2018-06-18 13:27:54.000000000","message":"We miss the case when the delete_port_binding raises an exception.","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e5d6221e351960ddc5f122f3660b2ad597e6e3a","unresolved":false,"context_lines":[{"line_number":4354,"context_line":"                                            host\u003dinstance.host,"},{"line_number":4355,"context_line":"                                            teardown\u003dTrue)"},{"line_number":4356,"context_line":"        update_port_mock.assert_not_called()"},{"line_number":4357,"context_line":""},{"line_number":4358,"context_line":"    def test__update_port_with_migration_profile_raise_exception(self):"},{"line_number":4359,"context_line":""},{"line_number":4360,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.context)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_92f3f209","line":4357,"in_reply_to":"5f7c97a3_537b2df3","updated":"2018-06-18 22:17:48.000000000","message":"I\u0027m just mocking out the calls to delete_port_binding from setup_networks_on_host so you want me to add a test just to make delete_port_binding raise PortBindingDeletionFailed and make sure it\u0027s raised back through?","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4f9480cee2861b428607c02a424589ef8646b69f","unresolved":false,"context_lines":[{"line_number":4354,"context_line":"                                            host\u003dinstance.host,"},{"line_number":4355,"context_line":"                                            teardown\u003dTrue)"},{"line_number":4356,"context_line":"        update_port_mock.assert_not_called()"},{"line_number":4357,"context_line":""},{"line_number":4358,"context_line":"    def test__update_port_with_migration_profile_raise_exception(self):"},{"line_number":4359,"context_line":""},{"line_number":4360,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.context)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_23c8641f","line":4357,"in_reply_to":"5f7c97a3_92f3f209","updated":"2018-06-20 12:44:30.000000000","message":"Now that you said it out loud it does not make too much sense. :)","commit_id":"b5bbf1afbbcfb5840a9f15e7c693379eb3b3dead"}]}
