diff --git a/api/src/com/cloud/event/Event.java b/api/src/com/cloud/event/Event.java index dfa81ce8daa..1ff945d22bb 100644 --- a/api/src/com/cloud/event/Event.java +++ b/api/src/com/cloud/event/Event.java @@ -45,5 +45,5 @@ public interface Event extends ControlledEntity{ String getLevel(); long getStartId(); String getParameters(); - String getAccountType(); + Short getAccountType(); } diff --git a/core/src/com/cloud/event/EventVO.java b/core/src/com/cloud/event/EventVO.java index c6dfbd53701..a7eeddc80c6 100644 --- a/core/src/com/cloud/event/EventVO.java +++ b/core/src/com/cloud/event/EventVO.java @@ -72,7 +72,7 @@ public class EventVO implements Event, Identity { private String accountName; @Column(name="type", table="account", insertable=false, updatable=false) - private String accountType; + private short accountType; @Column(name="removed", table="account", insertable=false, updatable=false) private Date removed; @@ -198,7 +198,7 @@ public class EventVO implements Event, Identity { } @Override - public String getAccountType() { + public Short getAccountType() { return accountType; } diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 50f753b92dd..f53e9938aad 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -4476,7 +4476,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag success = false; } - // Mark all static rules as revoked and apply them on the backend (not in the DB) + // Mark all static rules as revoked and apply them on the backend (not in the DB) List firewallStaticNatRules = _firewallDao.listByNetworkAndPurpose(networkId, Purpose.StaticNat); List staticNatRules = new ArrayList(); if (s_logger.isDebugEnabled()) { @@ -4556,15 +4556,13 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag success = false; } - // Get all ip addresses, mark as releasing and release them on the backend (except for source nat) - DONE + // Get all ip addresses, mark as releasing and release them on the backend Network network = getNetwork(networkId); List userIps = _ipAddressDao.listByAssociatedNetwork(networkId, null); List publicIpsToRelease = new ArrayList(); if (userIps != null && !userIps.isEmpty()) { for (IPAddressVO userIp : userIps) { - if (!userIp.isSourceNat()) { - userIp.setState(State.Releasing); - } + userIp.setState(State.Releasing); PublicIp publicIp = new PublicIp(userIp, _vlanDao.findById(userIp.getVlanId()), NetUtils.createSequenceBasedMacAddress(userIp.getMacAddress())); publicIpsToRelease.add(publicIp); } diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index bb5d7cf6f61..5d36ae98895 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -2360,6 +2360,10 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian if (ipList == null) { ipList = new ArrayList(); } + //domR doesn't support release for sourceNat IP address + if (ipAddress.isSourceNat() && ipAddress.getState() == IpAddress.State.Releasing) { + continue; + } ipList.add(ipAddress); vlanIpMap.put(vlanTag, ipList); }