mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-6622: After a volume was live migrated, the destination smb storage path was added to
the folder column. For an smb share the smb credentials are in the query string of the path. Before adding the path, smb shares query string should be cleaned up.
This commit is contained in:
parent
b82e26253c
commit
5ba5da3696
@ -63,6 +63,7 @@ import com.cloud.host.Host;
|
||||
import com.cloud.storage.DataStoreRole;
|
||||
import com.cloud.storage.StoragePool;
|
||||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.db.DB;
|
||||
@ -389,10 +390,16 @@ public class AncientDataMotionStrategy implements DataMotionStrategy {
|
||||
VolumeVO volumeVo = volDao.findById(volume.getId());
|
||||
Long oldPoolId = volume.getPoolId();
|
||||
volumeVo.setPath(((MigrateVolumeAnswer)answer).getVolumePath());
|
||||
volumeVo.setFolder(destPool.getPath());
|
||||
volumeVo.setPodId(destPool.getPodId());
|
||||
volumeVo.setPoolId(destPool.getId());
|
||||
volumeVo.setLastPoolId(oldPoolId);
|
||||
// For SMB, pool credentials are also stored in the uri query string. We trim the query string
|
||||
// part here to make sure the credentials do not get stored in the db unencrypted.
|
||||
String folder = destPool.getPath();
|
||||
if (destPool.getPoolType() == StoragePoolType.SMB && folder != null && folder.contains("?")) {
|
||||
folder = folder.substring(0, folder.indexOf("?"));
|
||||
}
|
||||
volumeVo.setFolder(folder);
|
||||
volDao.update(volume.getId(), volumeVo);
|
||||
}
|
||||
|
||||
|
||||
@ -50,6 +50,7 @@ import com.cloud.host.Host;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.storage.StoragePool;
|
||||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
@ -161,10 +162,17 @@ public class HypervStorageMotionStrategy implements DataMotionStrategy {
|
||||
VolumeVO volumeVO = volDao.findById(volume.getId());
|
||||
Long oldPoolId = volumeVO.getPoolId();
|
||||
volumeVO.setPath(volumeTo.getPath());
|
||||
volumeVO.setFolder(pool.getPath());
|
||||
volumeVO.setPodId(pool.getPodId());
|
||||
volumeVO.setPoolId(pool.getId());
|
||||
volumeVO.setLastPoolId(oldPoolId);
|
||||
// For SMB, pool credentials are also stored in the uri query string. We trim the query string
|
||||
// part here to make sure the credentials do not get stored in the db unencrypted.
|
||||
String folder = pool.getPath();
|
||||
if (pool.getPoolType() == StoragePoolType.SMB && folder != null && folder.contains("?")) {
|
||||
folder = folder.substring(0, folder.indexOf("?"));
|
||||
}
|
||||
volumeVO.setFolder(folder);
|
||||
|
||||
volDao.update(volume.getId(), volumeVO);
|
||||
updated = true;
|
||||
break;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user