package org.ovirt.engine.core.bll.storage.pool; import java.util.List; import org.ovirt.engine.core.bll.storage.connection.StorageHelperDirector; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.vdscommands.ConnectStoragePoolVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.vdsbroker.ResourceManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ConnectVDSToPoolAndDomains extends ActivateDeactivateSingleAsyncOperation { private static final Logger log = LoggerFactory.getLogger(ConnectVDSToPoolAndDomains.class); private Guid masterStorageDomainId; private List<StoragePoolIsoMap> storagePoolIsoMap; public ConnectVDSToPoolAndDomains(List<VDS> vdss, StorageDomain domain, StoragePool storagePool) { super(vdss, domain, storagePool); masterStorageDomainId = DbFacade.getInstance().getStorageDomainDao() .getMasterStorageDomainIdForPool(getStoragePool().getId()); storagePoolIsoMap = DbFacade.getInstance() .getStoragePoolIsoMapDao().getAllForStoragePool(getStoragePool().getId()); } @Override public void execute(int iterationId) { VDS vds = getVdss().get(iterationId); try { boolean isConnectSucceeded = StorageHelperDirector.getInstance().getItem(getStorageDomain().getStorageType()) .connectStorageToDomainByVdsId(getStorageDomain(), vds.getId()); if (isConnectSucceeded) { ResourceManager.getInstance().runVdsCommand( VDSCommandType.ConnectStoragePool, new ConnectStoragePoolVDSCommandParameters( vds, getStoragePool(), masterStorageDomainId, storagePoolIsoMap)); } else { log.error("Failed to connect host '{}' to domain '{}'", vds.getName(), getStorageDomain().getStorageName()); } } catch (RuntimeException e) { log.error("Failed to connect host '{}' to storage pool '{}': {}", vds.getName(), getStoragePool().getName(), e.getMessage()); log.debug("Exception", e); } } }