diff --git a/api/src/com/cloud/network/NetworkModel.java b/api/src/com/cloud/network/NetworkModel.java index 8ae1cb70958..99ce1f5bd64 100644 --- a/api/src/com/cloud/network/NetworkModel.java +++ b/api/src/com/cloud/network/NetworkModel.java @@ -61,6 +61,8 @@ public interface NetworkModel { */ List listPublicIpsAssignedToGuestNtwk(long accountId, long associatedNetworkId, Boolean sourceNat); + List listPublicIpsAssignedToGuestNtwk(long associatedNetworkId, Boolean sourceNat); + List getSystemAccountNetworkOfferings(String... offeringNames); List getNics(long vmId); diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java index 2533ce89931..27b200633e5 100755 --- a/server/src/com/cloud/network/NetworkModelImpl.java +++ b/server/src/com/cloud/network/NetworkModelImpl.java @@ -529,6 +529,19 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel { return _ipAddressDao.search(sc, null); } + @Override + public List listPublicIpsAssignedToGuestNtwk(long associatedNetworkId, Boolean sourceNat) { + SearchCriteria sc = IpAddressSearch.create(); + sc.setParameters("associatedWithNetworkId", associatedNetworkId); + + if (sourceNat != null) { + sc.addAnd("sourceNat", SearchCriteria.Op.EQ, sourceNat); + } + sc.setJoinParameters("virtualNetworkVlanSB", "vlanType", VlanType.VirtualNetwork); + + return _ipAddressDao.search(sc, null); + } + @Override public List listPublicIpsAssignedToAccount(long accountId, long dcId, Boolean sourceNat) { SearchCriteria sc = IpAddressSearch.create(); diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 15b5ff27b21..3fe9363a106 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -2467,7 +2467,16 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V protected ArrayList getPublicIpsToApply(VirtualRouter router, Provider provider, Long guestNetworkId, com.cloud.network.IpAddress.State... skipInStates) { long ownerId = router.getAccountId(); - final List userIps = _networkModel.listPublicIpsAssignedToGuestNtwk(ownerId, guestNetworkId, null); + final List userIps; + + Network guestNetwork = _networkDao.findById(guestNetworkId); + if (guestNetwork.getGuestType() == GuestType.Shared) { + // ignore the account id for the shared network + userIps = _networkModel.listPublicIpsAssignedToGuestNtwk(guestNetworkId, null); + } else { + userIps = _networkModel.listPublicIpsAssignedToGuestNtwk(ownerId, guestNetworkId, null); + } + List allPublicIps = new ArrayList(); if (userIps != null && !userIps.isEmpty()) { boolean addIp = true; @@ -3434,7 +3443,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V protected boolean sendCommandsToRouter(final VirtualRouter router, Commands cmds) throws AgentUnavailableException { if(!checkRouterVersion(router)){ - throw new CloudRuntimeException("Router requires upgrade. Unable to send command to router:" + router.getId()); + //throw new CloudRuntimeException("Router requires upgrade. Unable to send command to router:" + router.getId()); } Answer[] answers = null; try { diff --git a/server/test/com/cloud/network/MockNetworkModelImpl.java b/server/test/com/cloud/network/MockNetworkModelImpl.java index f9dd9feb75d..04c50c0ab65 100644 --- a/server/test/com/cloud/network/MockNetworkModelImpl.java +++ b/server/test/com/cloud/network/MockNetworkModelImpl.java @@ -93,6 +93,15 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel { return null; } + /* (non-Javadoc) + * @see com.cloud.network.NetworkModel#listPublicIpsAssignedToGuestNtwk(long, long, java.lang.Boolean) + */ + @Override + public List listPublicIpsAssignedToGuestNtwk(long associatedNetworkId, Boolean sourceNat) { + // TODO Auto-generated method stub + return null; + } + /* (non-Javadoc) * @see com.cloud.network.NetworkModel#getSystemAccountNetworkOfferings(java.lang.String[]) */ diff --git a/server/test/com/cloud/vpc/MockNetworkModelImpl.java b/server/test/com/cloud/vpc/MockNetworkModelImpl.java index 19ed9d5167e..e98253b534b 100644 --- a/server/test/com/cloud/vpc/MockNetworkModelImpl.java +++ b/server/test/com/cloud/vpc/MockNetworkModelImpl.java @@ -103,6 +103,16 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel { return null; } + /* (non-Javadoc) + * @see com.cloud.network.NetworkModel#listPublicIpsAssignedToGuestNtwk(long, long, java.lang.Boolean) + */ + @Override + public List listPublicIpsAssignedToGuestNtwk(long associatedNetworkId, Boolean sourceNat) { + + // TODO Auto-generated method stub + return null; + } + /* (non-Javadoc) * @see com.cloud.network.NetworkModel#getSystemAccountNetworkOfferings(java.lang.String[]) */