package org.ovirt.engine.core.bll.storage;
import org.ovirt.engine.core.bll.Backend;
import org.ovirt.engine.core.common.action.StorageDomainManagementParameter;
import org.ovirt.engine.core.common.action.StorageServerConnectionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.SANState;
import org.ovirt.engine.core.common.businessentities.storage_domain_static;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.StringHelper;
import org.ovirt.engine.core.dal.VdcBllMessages;
import org.ovirt.engine.core.utils.Pair;
public class AddExistingNFSStorageDomainCommand<T extends StorageDomainManagementParameter> extends
AddNFSStorageDomainCommand<T> {
/**
* Constructor for command creation when compensation is applied on startup
*
* @param commandId
*/
protected AddExistingNFSStorageDomainCommand(Guid commandId) {
super(commandId);
}
public AddExistingNFSStorageDomainCommand(T parameters) {
super(parameters);
}
@Override
protected boolean CanAddDomain() {
return CheckExistingStorageDomain();
}
@Override
protected void executeCommand() {
if (StringHelper.isNullOrEmpty(getStorageDomain().getstorage())) {
getStorageDomain().setstorage(
(String) Backend
.getInstance()
.runInternalAction(
VdcActionType.AddStorageServerConnection,
new StorageServerConnectionParametersBase(getStorageDomain().getStorageStaticData()
.getConnection(), getVds().getvds_id())).getActionReturnValue());
}
AddStorageDomainInDb();
UpdateStorageDomainDynamicFromIrs();
setSucceeded(true);
}
@Override
protected boolean ConcreteCheckExistingStorageDomain(Pair<storage_domain_static, SANState> domain) {
boolean returnValue = false;
storage_domain_static domainFromIrs = domain.getFirst();
if (StringHelper.isNullOrEmpty(getStorageDomain().getStorageStaticData().getstorage())
&& StringHelper.isNullOrEmpty(domainFromIrs.getstorage()) && domainFromIrs.getConnection() != null
&& getStorageDomain().getStorageStaticData().getConnection() != null) {
returnValue = (StringHelper.EqOp(domainFromIrs.getConnection().getconnection(), getStorageDomain()
.getStorageStaticData().getConnection().getconnection()));
} else if (!StringHelper.isNullOrEmpty(getStorageDomain().getStorageStaticData().getstorage())
&& !StringHelper.isNullOrEmpty(domainFromIrs.getstorage())) {
returnValue = (StringHelper.EqOp(domainFromIrs.getstorage(), getStorageDomain().getStorageStaticData()
.getstorage()));
}
if (!returnValue) {
addCanDoActionMessage(VdcBllMessages.ERROR_CANNOT_ADD_EXISTING_STORAGE_DOMAIN_CONNECTION_DATA_ILLEGAL);
}
return returnValue;
}
}