package org.ovirt.engine.core.bll.storage;
import java.util.ArrayList;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.storage_domains;
import org.ovirt.engine.core.common.businessentities.storage_pool;
import org.ovirt.engine.core.common.vdscommands.ConnectStoragePoolVDSCommandParameters;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.compat.LogCompat;
import org.ovirt.engine.core.compat.LogFactoryCompat;
import org.ovirt.engine.core.vdsbroker.ResourceManager;
public class ConntectVDSToPoolAndDomains extends ActivateDeactivateSingleAsyncOperation {
private static LogCompat log = LogFactoryCompat.getLog(ConntectVDSToPoolAndDomains.class);
public ConntectVDSToPoolAndDomains(ArrayList<VDS> vdss, storage_domains domain, storage_pool storagePool) {
super(vdss, domain, storagePool);
}
@Override
public void Execute(int iterationId) {
VDS vds = getVdss().get(iterationId);
try {
boolean isConnectSuccessed =
StorageHelperDirector.getInstance().getItem(getStorageDomain().getstorage_type())
.ConnectStorageToDomainByVdsId(getStorageDomain(), vds.getvds_id());
if (isConnectSuccessed) {
ResourceManager.getInstance().runVdsCommand(
VDSCommandType.ConnectStoragePool,
new ConnectStoragePoolVDSCommandParameters(vds.getvds_id(), getStoragePool().getId(), vds
.getvds_spm_id(), getStorageDomain().getid(), getStoragePool()
.getmaster_domain_version()));
} else {
log.errorFormat("Failed to connect host {0} to domain {1}",
vds.getvds_name(),
getStorageDomain().getstorage_name());
}
} catch (RuntimeException e) {
log.errorFormat("Failed to connect host {0} to storage pool {1}. Exception: {3}",
vds.getvds_name(),
getStoragePool().getname(),
e);
}
}
}