package org.ovirt.engine.core.bll.storage; import java.util.List; import org.ovirt.engine.core.bll.GetVmTemplatesDisksQuery; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.storage_domains; import org.ovirt.engine.core.common.queries.GetStorageDomainsByVmTemplateIdQueryParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; public class GetStorageDomainsByVmTemplateIdQuery<P extends GetStorageDomainsByVmTemplateIdQueryParameters> extends GetVmTemplatesDisksQuery<P> { public GetStorageDomainsByVmTemplateIdQuery(P parameters) { super(parameters); } @Override protected void executeQueryCommand() { java.util.ArrayList<storage_domains> result = new java.util.ArrayList<storage_domains>(); VmTemplate vmTemplate = DbFacade.getInstance().getVmTemplateDAO() .get(getParameters().getId()); if (vmTemplate != null && vmTemplate.getstorage_pool_id() != null) { java.util.ArrayList<DiskImage> templateDisks = GetTemplateDisks(); if (templateDisks.size() > 0) { // LINQ 29456 // List<Guid> domains = // (List<Guid>)Backend.getInstance().ResourceManager.RunVdsCommand(VDSCommandType.GetImageDomainsList, // new // GetImageDomainsListVDSCommandParameters(vmTemplate.storage_pool_id.Value, // templateDisks.First().image_group_id.Value)).ReturnValue; // foreach (Guid domainId in domains) // { // storage_domains domain = // DbFacade.Instance.GetStorageDomainsByIdAndStoragePoolId(domainId, // vmTemplate.storage_pool_id.Value); // if (domain != null) // { // result.Add(domain); // } // } List<Guid> domains = (List<Guid>) DbFacade.getInstance() .getStorageDomainDAO() .getAllStorageDomainsByImageGroup(templateDisks.get(0).getimage_group_id().getValue()); for (Guid domainId : domains) { storage_domains domain = DbFacade.getInstance().getStorageDomainDAO().getForStoragePool(domainId, vmTemplate.getstorage_pool_id().getValue()); if (domain != null) { result.add(domain); } } } } getQueryReturnValue().setReturnValue(result); } }