package org.ovirt.engine.core.bll.storage;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.core.bll.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.vdscommands.*;
import org.ovirt.engine.core.dal.dbbroker.*;
public class RefreshPoolSingleAsyncOperation extends ActivateDeactivateSingleAsyncOperation {
private java.util.ArrayList<Guid> _vdsIdsToSetNonOperational;
public RefreshPoolSingleAsyncOperation(java.util.ArrayList<VDS> vdss, storage_domains domain,
storage_pool storagePool, RefObject<java.util.ArrayList<Guid>> vdssIdsToSetNonoperational) {
super(vdss, domain, storagePool);
_vdsIdsToSetNonOperational = vdssIdsToSetNonoperational.argvalue;
}
@Override
public void Execute(int iterationId) {
try {
Guid masterDomainIdFromDb =
DbFacade.getInstance()
.getStorageDomainDAO()
.getMasterStorageDomainIdForPool(getStoragePool().getId());
if (getStorageDomain().getstorage_domain_type() == StorageDomainType.Master) {
try {
Backend.getInstance()
.getResourceManager()
.RunVdsCommand(
VDSCommandType.ConnectStoragePool,
new ConnectStoragePoolVDSCommandParameters(getVdss().get(iterationId).getvds_id(),
getStoragePool().getId(), getVdss().get(iterationId).getvds_spm_id(),
masterDomainIdFromDb, getStoragePool().getmaster_domain_version()));
} catch (java.lang.Exception e) {
log.errorFormat("Could not connect vds {0} to pool {1} - moving host to non-operational", getVdss()
.get(iterationId).getvds_name(), getStoragePool().getname());
synchronized (_vdsIdsToSetNonOperational) {
_vdsIdsToSetNonOperational.add(getVdss().get(iterationId).getvds_id());
}
}
} else {
Backend.getInstance()
.getResourceManager()
.RunVdsCommand(
VDSCommandType.RefreshStoragePool,
new RefreshStoragePoolVDSCommandParameters(getVdss().get(iterationId).getvds_id(),
getStoragePool().getId(), masterDomainIdFromDb, getStoragePool()
.getmaster_domain_version()));
log.infoFormat("Refreshed vds {0} in pool {1}", getVdss().get(iterationId).getvds_name(),
getStoragePool().getname());
}
} catch (RuntimeException e) {
log.errorFormat("Failed to connect/refresh storagePool. Host {0} to storage pool {1}. Exception: {3}",
getVdss().get(iterationId).getvds_name(), getStoragePool().getname(), e);
}
}
private static LogCompat log = LogFactoryCompat.getLog(RefreshPoolSingleAsyncOperation.class);
}