diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index a731e94200e..02d96fa871d 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -223,6 +223,7 @@ import com.cloud.utils.db.JoinBuilder; import com.cloud.utils.db.JoinBuilder.JoinType; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; +import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.MacAddress; @@ -1778,8 +1779,18 @@ public class ManagementServerImpl implements ManagementServer { } // don't show SSVM/CPVM ips + boolean omitSystemVmIps = false; if (vlanType == VlanType.VirtualNetwork && (allocatedOnly) && vpcId == null) { - sb.and("associatedNetworkId", sb.entity().getAssociatedWithNetworkId(), SearchCriteria.Op.NNULL); + + SearchBuilder nonSystemVmSearch = _nicDao.createSearchBuilder(); + nonSystemVmSearch.and().op("vmTypeNnull", nonSystemVmSearch.entity().getVmType(), Op.NULL); + nonSystemVmSearch.or("vmType", nonSystemVmSearch.entity().getVmType(), Op.NOTIN); + nonSystemVmSearch.cp(); + sb.join("nonSystemVms", nonSystemVmSearch, sb.entity().getAddress(), + nonSystemVmSearch.entity().getIp4Address(), JoinType.LEFTOUTER); +// sb.and().join("nonSystemVms", nonSystemVmSearch, sb.entity().getSourceNetworkId(), +// nonSystemVmSearch.entity().getNetworkId(), JoinType.INNER); + omitSystemVmIps = true; } SearchCriteria sc = sb.create(); @@ -1796,6 +1807,10 @@ public class ManagementServerImpl implements ManagementServer { count++; } } + + if (omitSystemVmIps) { + sc.setJoinParameters("nonSystemVms", "vmType", VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm); + } if (zone != null) { sc.setParameters("dataCenterId", zone);