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 AfterDeactivateSingleAsyncOperation extends ActivateDeactivateSingleAsyncOperation {
private boolean _isLastMaster;
private Guid _newMasterStorageDomainId = new Guid();
public AfterDeactivateSingleAsyncOperation(java.util.ArrayList<VDS> vdss, storage_domains domain,
storage_pool storagePool, boolean isLastMaster, Guid newMasterStorageDomain) {
super(vdss, domain, storagePool);
_isLastMaster = isLastMaster;
_newMasterStorageDomainId = newMasterStorageDomain;
}
@Override
public void Execute(int iterationId) {
try {
log.infoFormat("After deactivate treatment vds: {0},pool {1}", getVdss().get(iterationId).getvds_name(),
getStoragePool().getname());
if (!_isLastMaster) {
Backend.getInstance()
.getResourceManager()
.RunVdsCommand(
VDSCommandType.RefreshStoragePool,
new RefreshStoragePoolVDSCommandParameters(getVdss().get(iterationId).getvds_id(),
getStoragePool().getId(),
!_newMasterStorageDomainId.equals(Guid.Empty) ? _newMasterStorageDomainId
: DbFacade.getInstance()
.getStorageDomainDAO()
.getMasterStorageDomainIdForPool(
getStoragePool().getId()), getStoragePool()
.getmaster_domain_version()));
}
if (getVdss().get(iterationId).getspm_status() == VdsSpmStatus.None) {
StorageHelperDirector.getInstance().getItem(getStorageDomain().getstorage_type())
.DisconnectStorageFromDomainByVdsId(getStorageDomain(), getVdss().get(iterationId).getvds_id());
}
} catch (RuntimeException e) {
log.errorFormat("Failed to refresh storagePool. Host {0} to storage pool {1}. Exception: {3}", getVdss()
.get(iterationId).getvds_name(), getStoragePool().getname(), e);
}
}
private static LogCompat log = LogFactoryCompat.getLog(AfterDeactivateSingleAsyncOperation.class);
}