Updated openstack/openstack
Project: openstack/heat  9dd3ede1db1a1c336dae3681671bea3495e3a778

Default port policy to force replacement

This change adds a replacement_policy property to OS::Neutron::Port
which defaults to always replacing the port on stack-update
regardless of any changes to the template.

Currently when a server is replaced, the new server is booted with
the port that is still attached to the old server, which raises a
port-still-in-use error.

Even if heat managed to detach and attach a single port, Nova currently
deletes all ports on interface-detach and server delete, so the port
would no longer be available anyway.

This change ensures that a new server is always booted with a new port,
so it fixes the above 2 issues, however there are implications for
other scenarios.

If the server is not replaced during the stack-update, the server
handle_update will detach/attach to the new port, so this is fine.

If the port specifies a fixed_ips ip_address which doesn't change
during stack-update, an error will be raised that 2 ports exist
with the same IP address. The only current workaround would be
to set update_policy:AUTO and not make any changes to the server
which results in server replacement (or do 2 stack updates using
a transition ip_address).

Likewise, update_policy:AUTO will need to be set on any port
consumed by resources which don't support update without replacement
(such as OS::Neutron::FloatingIP and OS::Trove::Instance)

Change-Id: I558db6bac196f49e5c488a577f0580c934b06747
Closes-Bug: #1301486
Related-Bug: #1158684
Related-Bug: #1369748