package org.ovirt.engine.core.vdsbroker.storage;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
import org.ovirt.engine.core.common.businessentities.storage.StorageServerConnectionExtension;
import org.ovirt.engine.core.common.utils.Pair;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.StorageServerConnectionExtensionDao;
import org.ovirt.engine.core.utils.collections.DefaultValueMap;
@Singleton
public class StorageConnectionHelper {
@Inject
private StorageServerConnectionExtensionDao storageServerConnectionExtensionDao;
public Map<String, String> createStructFromConnection(final StorageServerConnections connection, final Guid vdsId) {
Pair<String, String> credentials = getStorageConnectionCredentialsForhost(vdsId, connection);
// for information, see _connectionDict2ConnectionInfo in vdsm/storage/hsm.py
DefaultValueMap con = new DefaultValueMap();
con.put("id", connection.getId(), Guid.Empty.toString());
con.put("connection", connection.getConnection(), "");
con.putIfNotEmpty("tpgt", connection.getPortal());
con.put("port", connection.getPort(), "");
con.put("iqn", connection.getIqn(), "");
con.put("user", credentials.getFirst(), "");
con.put("password", credentials.getSecond(), "");
con.putIfNotEmpty("ifaceName", connection.getIface());
con.putIfNotEmpty("netIfaceName", connection.getNetIfaceName());
// For mnt_options, vfs_type, and protocol_version - if they are null
// or empty we should not send a key with an empty value
con.putIfNotEmpty("mnt_options", connection.getMountOptions());
con.putIfNotEmpty("vfs_type", connection.getVfsType());
if (connection.getNfsVersion() != null) {
con.put("protocol_version", connection.getNfsVersion().getValue());
}
con.putIfNotEmpty("timeout", connection.getNfsTimeo());
con.putIfNotEmpty("retrans", connection.getNfsRetrans());
return con;
}
public Pair<String, String> getStorageConnectionCredentialsForhost(Guid hostId, StorageServerConnections connection) {
Pair<String, String> credentials;
StorageServerConnectionExtension connExt = storageServerConnectionExtensionDao.getByHostIdAndTarget(hostId, connection.getIqn());
if (connExt == null) {
credentials = new Pair<>(connection.getUserName(), connection.getPassword());
}
else {
credentials = new Pair<>(connExt.getUserName(), connExt.getPassword());
}
return credentials;
}
}