diff --git a/api/src/com/cloud/vm/Nic.java b/api/src/com/cloud/vm/Nic.java index de3491c9dd3..bc7cc6e08b2 100644 --- a/api/src/com/cloud/vm/Nic.java +++ b/api/src/com/cloud/vm/Nic.java @@ -83,7 +83,7 @@ public interface Nic { } public enum ReservationStrategy { - PlaceHolder, Create, Start; + PlaceHolder, Create, Start, Managed; } /** diff --git a/server/src/com/cloud/network/guru/PublicNetworkGuru.java b/server/src/com/cloud/network/guru/PublicNetworkGuru.java index e395b17bfc3..88d36928b8e 100644 --- a/server/src/com/cloud/network/guru/PublicNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PublicNetworkGuru.java @@ -155,7 +155,7 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru { if (nic.getIp4Address() == null) { nic.setStrategy(ReservationStrategy.Start); } else { - nic.setStrategy(ReservationStrategy.Create); + nic.setStrategy(ReservationStrategy.Managed); } return nic; @@ -182,7 +182,7 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru { @Override public void deallocate(Network network, NicProfile nic, VirtualMachineProfile vm) { IPAddressVO ip = _ipAddressDao.findByIpAndSourceNetworkId(nic.getNetworkId(), nic.getIp4Address()); - if (ip != null) { + if (ip != null && nic.getReservationStrategy() != ReservationStrategy.Managed) { _networkMgr.markIpAsUnavailable(ip.getId()); _ipAddressDao.unassignIpAddress(ip.getId()); }