This bug seems less about the power state, and more about the node holding onto an IP address in the flat network that it shouldn't have because the neutron port get's deleted so from neutron's perspective the IP is "free". Perhaps the solution should be that in the case of cleaning failed, ironic doesn't delete the neutron port for that node, keeping the IP assignment and preventing it from being assigned to a different server and then conflicting.
This bug seems less about the power state, and more about the node holding onto an IP address in the flat network that it shouldn't have because the neutron port get's deleted so from neutron's perspective the IP is "free". Perhaps the solution should be that in the case of cleaning failed, ironic doesn't delete the neutron port for that node, keeping the IP assignment and preventing it from being assigned to a different server and then conflicting.