Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,12 @@ UserVmResponse newUserVmResponse(ResponseView view, String objectName, UserVmJoi

List<UserVmJoinVO> listByAccountServiceOfferingTemplateAndNotInState(long accountId,
List<VirtualMachine.State> states, List<Long> offeringIds, List<Long> templateIds);

List<UserVmJoinVO> listByNetworkOfferingId(Long networkOfferingId);

List<UserVmJoinVO> listByVpcOfferingId(Long vpcId);

List<UserVmJoinVO> listByDiskOfferingId(Long diskOfferingId);

List<UserVmJoinVO> listByServiceOfferingId(Long serviceOfferingId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation<UserVmJo

private final SearchBuilder<UserVmJoinVO> VmDetailSearch;
private final SearchBuilder<UserVmJoinVO> activeVmByIsoSearch;
private final SearchBuilder<UserVmJoinVO> vmByNetworkIdSearch;
private final SearchBuilder<UserVmJoinVO> vmByVpcIdSearch;
private final SearchBuilder<UserVmJoinVO> vmByDiskOfferingIdSearch;
private final SearchBuilder<UserVmJoinVO> vmByServiceOfferingIdSearch;

protected UserVmJoinDaoImpl() {

Expand All @@ -124,6 +128,26 @@ protected UserVmJoinDaoImpl() {
activeVmByIsoSearch.and("isoId", activeVmByIsoSearch.entity().getIsoId(), SearchCriteria.Op.EQ);
activeVmByIsoSearch.and("stateNotIn", activeVmByIsoSearch.entity().getState(), SearchCriteria.Op.NIN);
activeVmByIsoSearch.done();

vmByNetworkIdSearch = createSearchBuilder();
vmByNetworkIdSearch.and("networkId", vmByNetworkIdSearch.entity().getNetworkId(), Op.EQ);
vmByNetworkIdSearch.selectFields(vmByNetworkIdSearch.entity().getId(), vmByNetworkIdSearch.entity().getInstanceName());
vmByNetworkIdSearch.done();

vmByVpcIdSearch = createSearchBuilder();
vmByVpcIdSearch.and("vpcId", vmByVpcIdSearch.entity().getVpcId(), Op.EQ);
vmByVpcIdSearch.selectFields(vmByVpcIdSearch.entity().getId(), vmByVpcIdSearch.entity().getInstanceName());
vmByVpcIdSearch.done();

vmByDiskOfferingIdSearch = createSearchBuilder();
vmByDiskOfferingIdSearch.and("diskOfferingId", vmByDiskOfferingIdSearch.entity().getDiskOfferingId(), Op.EQ);
vmByDiskOfferingIdSearch.selectFields(vmByDiskOfferingIdSearch.entity().getId(), vmByDiskOfferingIdSearch.entity().getInstanceName());
vmByDiskOfferingIdSearch.done();

vmByServiceOfferingIdSearch = createSearchBuilder();
vmByServiceOfferingIdSearch.and("serviceOfferingId", vmByServiceOfferingIdSearch.entity().getServiceOfferingId(), Op.EQ);
vmByServiceOfferingIdSearch.selectFields(vmByServiceOfferingIdSearch.entity().getId(), vmByServiceOfferingIdSearch.entity().getInstanceName());
vmByServiceOfferingIdSearch.done();
}

@Override
Expand Down Expand Up @@ -718,4 +742,44 @@ public List<UserVmJoinVO> listByAccountServiceOfferingTemplateAndNotInState(long
sc.setParameters("displayVm", 1);
return customSearch(sc, null);
}

@Override
public List<UserVmJoinVO> listByNetworkOfferingId(Long networkId) {
if (networkId == null) {
return new ArrayList<>();
}
SearchCriteria<UserVmJoinVO> sc = vmByNetworkIdSearch.create();
sc.setParameters("networkId", networkId);
return customSearch(sc, null);
}

@Override
public List<UserVmJoinVO> listByVpcOfferingId(Long vpcId) {
if (vpcId == null) {
return new ArrayList<>();
}
SearchCriteria<UserVmJoinVO> sc = vmByVpcIdSearch.create();
sc.setParameters("vpcId", vpcId);
return customSearch(sc, null);
}

@Override
public List<UserVmJoinVO> listByDiskOfferingId(Long diskOfferingId) {
if (diskOfferingId == null) {
return new ArrayList<>();
}
SearchCriteria<UserVmJoinVO> sc = vmByDiskOfferingIdSearch.create();
sc.setParameters("diskOfferingId", diskOfferingId);
return customSearch(sc, null);
}

@Override
public List<UserVmJoinVO> listByServiceOfferingId(Long serviceOfferingId) {
if (serviceOfferingId == null) {
return new ArrayList<>();
}
SearchCriteria<UserVmJoinVO> sc = vmByServiceOfferingIdSearch.create();
sc.setParameters("serviceOfferingId", serviceOfferingId);
return customSearch(sc, null);
}
}
17 changes: 13 additions & 4 deletions server/src/main/java/com/cloud/user/DomainManagerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@
import javax.inject.Inject;

import com.cloud.api.query.dao.NetworkOfferingJoinDao;
import com.cloud.api.query.dao.UserVmJoinDao;
import com.cloud.api.query.dao.VpcOfferingJoinDao;
import com.cloud.api.query.vo.NetworkOfferingJoinVO;
import com.cloud.api.query.vo.UserVmJoinVO;
import com.cloud.api.query.vo.VpcOfferingJoinVO;
import com.cloud.configuration.Resource;
import com.cloud.domain.dao.DomainDetailsDao;
Expand Down Expand Up @@ -101,6 +103,7 @@
import com.cloud.utils.net.NetUtils;
import com.cloud.vm.ReservationContext;
import com.cloud.vm.ReservationContextImpl;

import org.apache.commons.lang3.StringUtils;

@Component
Expand Down Expand Up @@ -141,6 +144,8 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom
@Inject
private ProjectDao _projectDao;
@Inject
private UserVmJoinDao userVmJoinDao;
@Inject
private ProjectManager _projectMgr;
@Inject
private RegionManager _regionMgr;
Expand Down Expand Up @@ -543,7 +548,8 @@ private void removeVpcOfferings(Long domainId, String domainIdString) {
List<Long> vpcOfferingsDetailsToRemove = new ArrayList<>();
List<VpcOfferingJoinVO> vpcOfferingsForThisDomain = vpcOfferingJoinDao.findByDomainId(domainId);
for (VpcOfferingJoinVO vpcOffering : vpcOfferingsForThisDomain) {
if (domainIdString.equals(vpcOffering.getDomainId())) {
List<UserVmJoinVO> userVms = userVmJoinDao.listByVpcOfferingId(vpcOffering.getId());
if (domainIdString.equals(vpcOffering.getDomainId()) && userVms.isEmpty()) {
vpcOfferingDao.remove(vpcOffering.getId());
} else {
vpcOfferingsDetailsToRemove.add(vpcOffering.getId());
Expand All @@ -558,7 +564,8 @@ private void removeNetworkOfferings(Long domainId, String domainIdString) {
List<Long> networkOfferingsDetailsToRemove = new ArrayList<>();
List<NetworkOfferingJoinVO> networkOfferingsForThisDomain = networkOfferingJoinDao.findByDomainId(domainId, false);
for (NetworkOfferingJoinVO networkOffering : networkOfferingsForThisDomain) {
if (domainIdString.equals(networkOffering.getDomainId())) {
List<UserVmJoinVO> userVms = userVmJoinDao.listByNetworkOfferingId(networkOffering.getId());
if (domainIdString.equals(networkOffering.getDomainId()) && userVms.isEmpty()) {
networkOfferingDao.remove(networkOffering.getId());
} else {
networkOfferingsDetailsToRemove.add(networkOffering.getId());
Expand All @@ -573,7 +580,8 @@ private void removeServiceOfferings(Long domainId, String domainIdString) {
List<Long> serviceOfferingsDetailsToRemove = new ArrayList<>();
List<ServiceOfferingJoinVO> serviceOfferingsForThisDomain = serviceOfferingJoinDao.findByDomainId(domainId);
for (ServiceOfferingJoinVO serviceOffering : serviceOfferingsForThisDomain) {
if (domainIdString.equals(serviceOffering.getDomainId())) {
List<UserVmJoinVO> userVms = userVmJoinDao.listByServiceOfferingId(serviceOffering.getId());
if (domainIdString.equals(serviceOffering.getDomainId()) && userVms.isEmpty()) {
serviceOfferingDao.remove(serviceOffering.getId());
} else {
serviceOfferingsDetailsToRemove.add(serviceOffering.getId());
Expand All @@ -588,7 +596,8 @@ private void removeDiskOfferings(Long domainId, String domainIdString) {
List<Long> diskOfferingsDetailsToRemove = new ArrayList<>();
List<DiskOfferingJoinVO> diskOfferingsForThisDomain = diskOfferingJoinDao.findByDomainId(domainId);
for (DiskOfferingJoinVO diskOffering : diskOfferingsForThisDomain) {
if (domainIdString.equals(diskOffering.getDomainId())) {
List<UserVmJoinVO> userVms = userVmJoinDao.listByDiskOfferingId(diskOffering.getId());
if (domainIdString.equals(diskOffering.getDomainId()) && userVms.isEmpty()) {
diskOfferingDao.remove(diskOffering.getId());
} else {
diskOfferingsDetailsToRemove.add(diskOffering.getId());
Expand Down
Loading