)]}'
{"nova/virt/ironic/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0633441bdcfd36503974a5c7ebd1500d7cb68c0e","unresolved":false,"context_lines":[{"line_number":977,"context_line":"            #             without raising any exceptions."},{"line_number":978,"context_line":"            return"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self._cleanup_deploy(node, instance, network_info)"},{"line_number":981,"context_line":""},{"line_number":982,"context_line":"        if node.provision_state in _UNPROVISION_STATES:"},{"line_number":983,"context_line":"            self._unprovision(instance, node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_9e99a9d3","line":980,"range":{"start_line":980,"start_character":0,"end_line":980,"end_character":58},"updated":"2017-02-27 16:06:38.000000000","message":"Can we unit test this, or at least comment why we\u0027re making this call here (to prevent regressions)","commit_id":"1603f61baa9ad0e542b90205bf295bc12632ad03"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"c8268d0b70f791eb295655300138909bea52693b","unresolved":false,"context_lines":[{"line_number":977,"context_line":"            #             without raising any exceptions."},{"line_number":978,"context_line":"            return"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self._cleanup_deploy(node, instance, network_info)"},{"line_number":981,"context_line":""},{"line_number":982,"context_line":"        if node.provision_state in _UNPROVISION_STATES:"},{"line_number":983,"context_line":"            self._unprovision(instance, node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a1ff146_c9e26303","line":980,"range":{"start_line":980,"start_character":0,"end_line":980,"end_character":58},"in_reply_to":"3a1ff146_ce5fc970","updated":"2017-03-15 14:31:35.000000000","message":"If we do this change dependent on https://review.openstack.org/#/c/424723/\nThan when we call vif_detach here node will be still in ACTIVE state, and we will do unbind tenant port https://review.openstack.org/#/c/424723/6/ironic/drivers/modules/network/common.py@424.\nBut it may lead to potential race when we passed here, and deleted tenant port before we do unbind_port call in ironic.","commit_id":"1603f61baa9ad0e542b90205bf295bc12632ad03"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"a0f6ffd92c1bc0ea877d2f46a566e58062b2234f","unresolved":false,"context_lines":[{"line_number":977,"context_line":"            #             without raising any exceptions."},{"line_number":978,"context_line":"            return"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self._cleanup_deploy(node, instance, network_info)"},{"line_number":981,"context_line":""},{"line_number":982,"context_line":"        if node.provision_state in _UNPROVISION_STATES:"},{"line_number":983,"context_line":"            self._unprovision(instance, node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a1ff146_ce5fc970","line":980,"range":{"start_line":980,"start_character":0,"end_line":980,"end_character":58},"in_reply_to":"da36d5c6_9e99a9d3","updated":"2017-03-15 14:20:50.000000000","message":"After looking to the ironic code for a bit, there is an issue with this approach. unconfigure_tenant_networks is triggered from the tear_down call in the deploy interface on ironic side, which relies on the tenant_vif_port_id to be present in the port.internal_info. With this, there will be no tenant_vif_port_id at that point and that call will become effectively useless.","commit_id":"1603f61baa9ad0e542b90205bf295bc12632ad03"}]}
