|
30 | 30 | import javax.inject.Inject; |
31 | 31 |
|
32 | 32 | import com.cloud.dc.DomainVlanMapVO; |
| 33 | + |
| 34 | +import org.apache.cloudstack.api.ApiConstants; |
33 | 35 | import org.apache.log4j.Logger; |
34 | 36 |
|
35 | 37 | import org.apache.cloudstack.acl.ControlledEntity.ACLType; |
|
102 | 104 | import com.cloud.network.dao.LoadBalancerDao; |
103 | 105 | import com.cloud.network.dao.NetworkAccountDao; |
104 | 106 | import com.cloud.network.dao.NetworkDao; |
| 107 | +import com.cloud.network.dao.NetworkDetailVO; |
| 108 | +import com.cloud.network.dao.NetworkDetailsDao; |
105 | 109 | import com.cloud.network.dao.NetworkDomainDao; |
106 | 110 | import com.cloud.network.dao.NetworkServiceMapDao; |
107 | 111 | import com.cloud.network.dao.PhysicalNetworkDao; |
@@ -289,6 +293,8 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage |
289 | 293 | DataCenterIpAddressDao _privateIPAddressDao; |
290 | 294 | @Inject |
291 | 295 | HostPodDao _hpDao; |
| 296 | + @Inject |
| 297 | + NetworkDetailsDao _networkDetailsDao; |
292 | 298 |
|
293 | 299 | SearchBuilder<IPAddressVO> AssignIpAddressSearch; |
294 | 300 | SearchBuilder<IPAddressVO> AssignIpAddressFromPodVlanSearch; |
@@ -766,9 +772,17 @@ public IPAddressVO doInTransaction(TransactionStatus status) throws Insufficient |
766 | 772 | } |
767 | 773 | sc.setJoinParameters("vlan", "type", vlanUse); |
768 | 774 |
|
| 775 | + String routerIpAddress = null; |
| 776 | + if (network != null) { |
| 777 | + NetworkDetailVO routerIpDetail = _networkDetailsDao.findDetail(network.getId(), ApiConstants.ROUTER_IP); |
| 778 | + routerIpAddress = routerIpDetail != null ? routerIpDetail.getValue() : null; |
| 779 | + } |
| 780 | + |
769 | 781 | if (requestedIp != null) { |
770 | 782 | sc.addAnd("address", SearchCriteria.Op.EQ, requestedIp); |
771 | 783 | errorMessage.append(": requested ip " + requestedIp + " is not available"); |
| 784 | + } else if (routerIpAddress != null) { |
| 785 | + sc.addAnd("address", Op.NEQ, routerIpAddress); |
772 | 786 | } |
773 | 787 |
|
774 | 788 | boolean ascOrder = ! forSystemVms; |
|
0 commit comments