From 4e5355b1921e5ee1c2ed8ab38b88ac3c7d048923 Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 10 Jul 2012 15:14:31 -0700 Subject: [PATCH] VPC: CS-15519 - fixed ipAssoc when only zoneId parameter is passed in to the API call --- .../cloud/api/commands/AssociateIPAddrCmd.java | 6 +++--- .../ExternalLoadBalancerUsageManagerImpl.java | 2 +- .../com/cloud/network/NetworkManagerImpl.java | 4 ++-- .../src/com/cloud/network/dao/NetworkDao.java | 2 +- .../com/cloud/network/dao/NetworkDaoImpl.java | 17 ++++++++++++----- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/api/src/com/cloud/api/commands/AssociateIPAddrCmd.java b/api/src/com/cloud/api/commands/AssociateIPAddrCmd.java index f9c5deeabe6..b1b1e142ea2 100644 --- a/api/src/com/cloud/api/commands/AssociateIPAddrCmd.java +++ b/api/src/com/cloud/api/commands/AssociateIPAddrCmd.java @@ -176,8 +176,8 @@ public class AssociateIPAddrCmd extends BaseAsyncCreateCmd { if (accountName != null && domainId != null) { Account account = _accountService.finalizeOwner(caller, accountName, domainId, projectId); return account.getId(); - } else if (getNetworkId() != null){ - Network network = _networkService.getNetwork(getNetworkId()); + } else if (networkId != null){ + Network network = _networkService.getNetwork(networkId); return network.getAccountId(); } else if (vpcId != null) { Vpc vpc = _vpcService.getVpc(getVpcId()); @@ -187,7 +187,7 @@ public class AssociateIPAddrCmd extends BaseAsyncCreateCmd { return vpc.getAccountId(); } - throw new InvalidParameterValueException("Failed to determine ip owner", null); + return caller.getAccountId(); } @Override diff --git a/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java b/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java index 3480fa7fcc3..18a2449d239 100644 --- a/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java +++ b/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java @@ -351,7 +351,7 @@ public class ExternalLoadBalancerUsageManagerImpl implements ExternalLoadBalance long zoneId = zone.getId(); - List networksForAccount = _networkDao.listBy(accountId, zoneId, Network.GuestType.Isolated); + List networksForAccount = _networkDao.listByZoneAndGuestType(accountId, zoneId, Network.GuestType.Isolated, false); if (networksForAccount == null) { continue; } diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index e01ca33ce56..9f7bf2bc450 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -1015,7 +1015,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Override public List getIsolatedNetworksOwnedByAccountInZone(long zoneId, Account owner) { - return _networksDao.listBy(owner.getId(), zoneId, Network.GuestType.Isolated); + return _networksDao.listByZoneAndGuestType(owner.getId(), zoneId, Network.GuestType.Isolated, false); } @Override @@ -4463,7 +4463,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Override public String getIpOfNetworkElementInVirtualNetwork(long accountId, long dataCenterId) { - List virtualNetworks = _networksDao.listBy(accountId, dataCenterId, Network.GuestType.Isolated); + List virtualNetworks = _networksDao.listByZoneAndGuestType(accountId, dataCenterId, Network.GuestType.Isolated, false); if (virtualNetworks.isEmpty()) { s_logger.trace("Unable to find default Virtual network account id=" + accountId); diff --git a/server/src/com/cloud/network/dao/NetworkDao.java b/server/src/com/cloud/network/dao/NetworkDao.java index f86ede5ae84..0d1db5bf778 100644 --- a/server/src/com/cloud/network/dao/NetworkDao.java +++ b/server/src/com/cloud/network/dao/NetworkDao.java @@ -31,7 +31,7 @@ public interface NetworkDao extends GenericDao { List listBy(long accountId, long dataCenterId, String cidr); - List listBy(long accountId, long dataCenterId, Network.GuestType type); + List listByZoneAndGuestType(long accountId, long dataCenterId, Network.GuestType type, Boolean isSystem); NetworkVO persist(NetworkVO network, boolean gc, Map serviceProviderMap); diff --git a/server/src/com/cloud/network/dao/NetworkDaoImpl.java b/server/src/com/cloud/network/dao/NetworkDaoImpl.java index 1c8a82972eb..ecb6a593eb9 100644 --- a/server/src/com/cloud/network/dao/NetworkDaoImpl.java +++ b/server/src/com/cloud/network/dao/NetworkDaoImpl.java @@ -95,6 +95,9 @@ public class NetworkDaoImpl extends GenericDaoBase implements N AllFieldsSearch.and("physicalNetwork", AllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ); AllFieldsSearch.and("broadcastUri", AllFieldsSearch.entity().getBroadcastUri(), Op.EQ); AllFieldsSearch.and("vpcId", AllFieldsSearch.entity().getVpcId(), Op.EQ); + SearchBuilder join1 = _ntwkOffDao.createSearchBuilder(); + join1.and("isSystem", join1.entity().isSystemOnly(), Op.EQ); + AllFieldsSearch.join("offerings", join1, AllFieldsSearch.entity().getNetworkOfferingId(), join1.entity().getId(), JoinBuilder.JoinType.INNER); AllFieldsSearch.done(); AccountSearch = createSearchBuilder(); @@ -135,12 +138,11 @@ public class NetworkDaoImpl extends GenericDaoBase implements N CountByZoneAndURI.done(); - ZoneSecurityGroupSearch = createSearchBuilder(); ZoneSecurityGroupSearch.and("dataCenterId", ZoneSecurityGroupSearch.entity().getDataCenterId(), Op.EQ); - SearchBuilder join1 = _ntwkSvcMap.createSearchBuilder(); - join1.and("service", join1.entity().getService(), Op.EQ); - ZoneSecurityGroupSearch.join("services", join1, ZoneSecurityGroupSearch.entity().getId(), join1.entity().getNetworkId(), JoinBuilder.JoinType.INNER); + SearchBuilder offJoin = _ntwkSvcMap.createSearchBuilder(); + offJoin.and("service", offJoin.entity().getService(), Op.EQ); + ZoneSecurityGroupSearch.join("services", offJoin, ZoneSecurityGroupSearch.entity().getId(), offJoin.entity().getNetworkId(), JoinBuilder.JoinType.INNER); ZoneSecurityGroupSearch.done(); CountBy = createSearchBuilder(Integer.class); @@ -191,13 +193,18 @@ public class NetworkDaoImpl extends GenericDaoBase implements N } @Override - public List listBy(long accountId, long dataCenterId, Network.GuestType type) { + public List listByZoneAndGuestType(long accountId, long dataCenterId, Network.GuestType type, Boolean isSystem) { SearchCriteria sc = AllFieldsSearch.create(); sc.setParameters("datacenter", dataCenterId); sc.setParameters("account", accountId); if (type != null) { sc.setParameters("guestType", type); } + + if (isSystem != null) { + sc.setJoinParameters("offerings", "isSystem", isSystem); + } + return listBy(sc, null); }