mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-4084 Fixed the static nat vm ip address in public ip address table in external network gc
In external network after network GC the network n/w cidr changes.
In this case the static nat enable vm ip also chagnes. So updated the new
vm ip address in user_ip_address table.
This commit is contained in:
parent
5cb090ed40
commit
6164077ee8
|
|
@ -23,6 +23,8 @@ import javax.inject.Inject;
|
|||
|
||||
import com.cloud.event.ActionEventUtils;
|
||||
|
||||
import com.cloud.network.dao.IPAddressDao;
|
||||
import com.cloud.network.dao.IPAddressVO;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
|
|
@ -72,6 +74,9 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
|||
DataCenterDao _zoneDao;
|
||||
@Inject
|
||||
PortForwardingRulesDao _pfRulesDao;
|
||||
@Inject
|
||||
IPAddressDao _ipAddressDao;
|
||||
|
||||
|
||||
public ExternalGuestNetworkGuru() {
|
||||
super();
|
||||
|
|
@ -193,6 +198,17 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
|||
_pfRulesDao.update(pfRule.getId(), pfRule);
|
||||
}
|
||||
}
|
||||
// Mask the destination address of all static nat rules in this network with the new guest VLAN offset
|
||||
// Here the private ip of the nic get updated. When secondary ip are present the gc will not triggered
|
||||
List <IPAddressVO> ipAddrsOfNw = _ipAddressDao.listStaticNatPublicIps(config.getId());
|
||||
for (IPAddressVO ip: ipAddrsOfNw) {
|
||||
if (ip.getVmIp() != null) {
|
||||
long ipMask = getIpMask(ip.getVmIp(), cidrSize);
|
||||
String maskedVmIp = NetUtils.long2Ip(newCidrAddress | ipMask);
|
||||
ip.setVmIp(maskedVmIp);
|
||||
_ipAddressDao.update(ip.getId(), ip);
|
||||
}
|
||||
}
|
||||
|
||||
return implemented;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue