diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index e4d2a5ce6e2..8c76548ae40 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -64,6 +64,7 @@ import com.cloud.deploy.DataCenterDeployment; import com.cloud.deploy.DeployDestination; import com.cloud.deploy.DeploymentPlan; import com.cloud.domain.Domain; +import com.cloud.domain.DomainVO; import com.cloud.domain.dao.DomainDao; import com.cloud.event.ActionEvent; import com.cloud.event.EventTypes; @@ -1536,6 +1537,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag Boolean isShared = cmd.getIsShared(); Boolean isDefault = cmd.isDefault(); Long accountId = null; + String path = null; if (isSystem == null) { isSystem = false; @@ -1562,6 +1564,13 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } else { accountId = account.getId(); } + + if (account.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN) { + DomainVO domain = _domainDao.findById(account.getDomainId()); + if (domain != null) { + path = domain.getPath(); + } + } } else { accountName = account.getAccountName(); domainId = account.getDomainId(); @@ -1582,6 +1591,14 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag SearchBuilder zoneSearch = _dcDao.createSearchBuilder(); zoneSearch.and("networkType", zoneSearch.entity().getNetworkType(), SearchCriteria.Op.EQ); sb.join("zoneSearch", zoneSearch, sb.entity().getDataCenterId(), zoneSearch.entity().getId(), JoinBuilder.JoinType.INNER); + + + if (path != null) { + //for domain admin we should show only subdomains information + SearchBuilder domainSearch = _domainDao.createSearchBuilder(); + domainSearch.and("path", domainSearch.entity().getPath(), SearchCriteria.Op.LIKE); + sb.join("domainSearch", domainSearch, sb.entity().getDomainId(), domainSearch.entity().getId(), JoinBuilder.JoinType.INNER); + } SearchCriteria sc = sb.create(); @@ -1626,6 +1643,10 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (trafficType != null) { sc.addAnd("trafficType", SearchCriteria.Op.EQ, trafficType); } + + if (path != null) { + sc.setJoinParameters("domainSearch", "path", path + "%"); + } List networks = _networksDao.search(sc, searchFilter);