diff --git a/engine/schema/src/main/java/com/cloud/network/dao/NetworkDao.java b/engine/schema/src/main/java/com/cloud/network/dao/NetworkDao.java index fdca6e43f00..341f9d7cb84 100644 --- a/engine/schema/src/main/java/com/cloud/network/dao/NetworkDao.java +++ b/engine/schema/src/main/java/com/cloud/network/dao/NetworkDao.java @@ -98,6 +98,8 @@ public interface NetworkDao extends GenericDao, StateDao listByZoneAndTrafficType(long zoneId, TrafficType trafficType); + List listByTrafficType(TrafficType trafficType); + void setCheckForGc(long networkId); int getNetworkCountByNetworkOffId(long networkOfferingId); diff --git a/engine/schema/src/main/java/com/cloud/network/dao/NetworkDaoImpl.java b/engine/schema/src/main/java/com/cloud/network/dao/NetworkDaoImpl.java index 9f7ffabac93..9a01a8ee7e3 100644 --- a/engine/schema/src/main/java/com/cloud/network/dao/NetworkDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/network/dao/NetworkDaoImpl.java @@ -29,7 +29,6 @@ import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.persistence.TableGenerator; -import com.cloud.utils.exception.CloudRuntimeException; import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.api.ApiConstants; import org.springframework.stereotype.Component; @@ -63,6 +62,7 @@ import com.cloud.utils.db.SearchCriteria.Func; import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.db.SequenceFetcher; import com.cloud.utils.db.TransactionLegacy; +import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; @Component @@ -640,6 +640,14 @@ public class NetworkDaoImpl extends GenericDaoBaseimplements Ne return listBy(sc, null); } + @Override + public List listByTrafficType(final TrafficType trafficType) { + final SearchCriteria sc = AllFieldsSearch.create(); + sc.setParameters("trafficType", trafficType); + + return listBy(sc, null); + } + @Override public int getNetworkCountByNetworkOffId(final long networkOfferingId) { final SearchCriteria sc = NetworksCount.create(); diff --git a/plugins/integrations/veeam-control-service/src/main/java/org/apache/cloudstack/veeam/adapter/ServerAdapter.java b/plugins/integrations/veeam-control-service/src/main/java/org/apache/cloudstack/veeam/adapter/ServerAdapter.java index 8fe47387b93..c957d95a2bb 100644 --- a/plugins/integrations/veeam-control-service/src/main/java/org/apache/cloudstack/veeam/adapter/ServerAdapter.java +++ b/plugins/integrations/veeam-control-service/src/main/java/org/apache/cloudstack/veeam/adapter/ServerAdapter.java @@ -144,6 +144,7 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.hypervisor.Hypervisor; import com.cloud.network.NetworkModel; +import com.cloud.network.Networks; import com.cloud.network.dao.NetworkDao; import com.cloud.network.dao.NetworkVO; import com.cloud.offering.ServiceOffering; @@ -465,7 +466,7 @@ public class ServerAdapter extends ManagerBase { if (dataCenterVO == null) { throw new InvalidParameterValueException("DataCenter with ID " + uuid + " not found"); } - List networks = networkDao.listAll(); + List networks = networkDao.listByZoneAndTrafficType(dataCenterVO.getId(), Networks.TrafficType.Guest); return NetworkVOToNetworkConverter.toNetworkList(networks, (dcId) -> dataCenterVO); } @@ -509,7 +510,7 @@ public class ServerAdapter extends ManagerBase { } public List listAllVnicProfiles() { - final List networks = networkDao.listAll(); + final List networks = networkDao.listByTrafficType(Networks.TrafficType.Guest); return NetworkVOToVnicProfileConverter.toVnicProfileList(networks, this::getZoneById); } @@ -522,7 +523,7 @@ public class ServerAdapter extends ManagerBase { } public List listAllInstances() { - List vms = userVmJoinDao.listAll(); + List vms = userVmJoinDao.listByHypervisorType(Hypervisor.HypervisorType.KVM); return UserVmJoinVOToVmConverter.toVmList(vms, this::getHostById, this::getDetailsByInstanceId); } @@ -996,9 +997,6 @@ public class ServerAdapter extends ManagerBase { throw new InvalidParameterValueException("Request disk data is empty"); } String name = request.getName(); - if (StringUtils.isBlank(name) && !name.startsWith("Veeam_KvmBackupDisk_")) { - throw new InvalidParameterValueException("Only worker VM disk creation is supported"); - } if (request.getStorageDomains() == null || CollectionUtils.isEmpty(request.getStorageDomains().getItems()) || request.getStorageDomains().getItems().size() > 1) { throw new InvalidParameterValueException("Exactly one storage domain must be specified"); diff --git a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDao.java b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDao.java index 79312460d2c..351e367e8d0 100644 --- a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDao.java +++ b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDao.java @@ -17,6 +17,7 @@ package com.cloud.api.query.dao; import com.cloud.api.query.vo.UserVmJoinVO; +import com.cloud.hypervisor.Hypervisor; import com.cloud.user.Account; import com.cloud.uservm.UserVm; import com.cloud.utils.db.GenericDao; @@ -49,4 +50,6 @@ public interface UserVmJoinDao extends GenericDao { List listEligibleInstancesWithExpiredLease(); List listLeaseInstancesExpiringInDays(int days); + + List listByHypervisorType(Hypervisor.HypervisorType hypervisorType); } diff --git a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java index 687fea1c4e3..39b2b9b9421 100644 --- a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java @@ -35,6 +35,7 @@ import java.util.stream.Collectors; import javax.inject.Inject; import com.cloud.gpu.dao.VgpuProfileDao; +import com.cloud.hypervisor.Hypervisor; import com.cloud.service.dao.ServiceOfferingDao; import org.apache.cloudstack.affinity.AffinityGroupResponse; import org.apache.cloudstack.annotation.AnnotationService; @@ -832,4 +833,14 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation listByHypervisorType(Hypervisor.HypervisorType hypervisorType) { + SearchBuilder sb = createSearchBuilder(); + sb.and("hypervisorType", sb.entity().getHypervisorType(), Op.EQ); + sb.done(); + SearchCriteria sc = sb.create(); + sc.setParameters("hypervisorType", hypervisorType); + return listBy(sc); + } } diff --git a/server/src/test/java/com/cloud/vpc/dao/MockNetworkDaoImpl.java b/server/src/test/java/com/cloud/vpc/dao/MockNetworkDaoImpl.java index 8a0bec56df7..cf71d74498f 100644 --- a/server/src/test/java/com/cloud/vpc/dao/MockNetworkDaoImpl.java +++ b/server/src/test/java/com/cloud/vpc/dao/MockNetworkDaoImpl.java @@ -16,6 +16,11 @@ // under the License. package com.cloud.vpc.dao; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + import com.cloud.network.Network; import com.cloud.network.Network.GuestType; import com.cloud.network.Networks.TrafficType; @@ -26,11 +31,6 @@ import com.cloud.utils.db.DB; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - @DB() public class MockNetworkDaoImpl extends GenericDaoBase implements NetworkDao { @@ -165,6 +165,11 @@ public class MockNetworkDaoImpl extends GenericDaoBase implemen return null; } + @Override + public List listByTrafficType(final TrafficType trafficType) { + return null; + } + @Override public void setCheckForGc(final long networkId) { }