package org.ovirt.engine.core.bll.storage.connection;
import java.util.Collections;
import java.util.Map;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.LockMessagesMatchUtil;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.action.StorageServerConnectionExtensionParameters;
import org.ovirt.engine.core.common.businessentities.storage.StorageServerConnectionExtension;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.common.locks.LockingGroup;
import org.ovirt.engine.core.common.utils.Pair;
import org.ovirt.engine.core.dao.StorageServerConnectionExtensionDao;
public class AddStorageServerConnectionExtensionCommand<T extends StorageServerConnectionExtensionParameters> extends StorageServerConnectionExtensionCommandBase<StorageServerConnectionExtensionParameters> {
@Inject
private StorageServerConnectionExtensionDao storageServerConnectionExtensionDao;
public AddStorageServerConnectionExtensionCommand(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected void init() {
super.init();
setVdsId(getParameters().getStorageServerConnectionExtension().getHostId());
}
@Override
protected void setActionMessageParameters() {
super.setActionMessageParameters();
addValidationMessage(EngineMessage.VAR__ACTION__ADD);
}
@Override
protected boolean validate() {
StorageServerConnectionExtension newConnExt = getParameters().getStorageServerConnectionExtension();
return validate(getConnectionExtensionValidator().isConnectionDoesNotExistForHostAndTarget(newConnExt));
}
@Override
protected void executeCommand() {
storageServerConnectionExtensionDao.save(getParameters().getStorageServerConnectionExtension());
getReturnValue().setActionReturnValue(getParameters().getStorageServerConnectionExtension().getId());
getReturnValue().setSucceeded(true);
}
@Override
protected Map<String, Pair<String, String>> getExclusiveLocks() {
StorageServerConnectionExtension connExt = getParameters().getStorageServerConnectionExtension();
String lock = connExt.getHostId().toString() + connExt.getIqn();
return Collections.singletonMap(lock,
LockMessagesMatchUtil.makeLockingPair(LockingGroup.STORAGE_CONNECTION_EXTENSION,
EngineMessage.ACTION_TYPE_FAILED_OBJECT_LOCKED));
}
}