Fix adding Datastore clusters and listing

This commit is contained in:
Harikrishna Patnala 2020-07-22 12:37:06 +05:30
parent c9c38c0f37
commit 75fb1d91ee
3 changed files with 18 additions and 2 deletions

View File

@ -120,7 +120,7 @@ public class StoragePoolVO implements StoragePool {
private HypervisorType hypervisor;
@Column(name = "parent")
private Long parent;
private Long parent = 0L;
@Override
public long getId() {

View File

@ -161,6 +161,13 @@ public class PrimaryDataStoreHelper {
pool.setScope(ScopeType.CLUSTER);
pool.setStatus(StoragePoolStatus.Up);
this.dataStoreDao.update(pool.getId(), pool);
if(pool.getPoolType() == StoragePoolType.DatastoreCluster && pool.getParent() == 0) {
List<StoragePoolVO> childDatastores = dataStoreDao.listChildStoragePoolsInDatastoreCluster(pool.getId());
for (StoragePoolVO child : childDatastores) {
child.setScope(ScopeType.CLUSTER);
this.dataStoreDao.update(child.getId(), child);
}
}
return dataStoreMgr.getDataStore(store.getId(), DataStoreRole.Primary);
}
@ -178,6 +185,13 @@ public class PrimaryDataStoreHelper {
pool.setHypervisor(hypervisor);
pool.setStatus(StoragePoolStatus.Up);
this.dataStoreDao.update(pool.getId(), pool);
if(pool.getPoolType() == StoragePoolType.DatastoreCluster && pool.getParent() == 0) {
List<StoragePoolVO> childDatastores = dataStoreDao.listChildStoragePoolsInDatastoreCluster(pool.getId());
for (StoragePoolVO child : childDatastores) {
child.setScope(ScopeType.ZONE);
this.dataStoreDao.update(child.getId(), child);
}
}
return dataStoreMgr.getDataStore(store.getId(), DataStoreRole.Primary);
}

View File

@ -26,6 +26,7 @@ import com.cloud.agent.api.StoragePoolInfo;
import com.cloud.alert.AlertManager;
import com.cloud.exception.StorageConflictException;
import com.cloud.storage.DataStoreRole;
import com.cloud.storage.Storage;
import com.cloud.storage.StoragePool;
import com.cloud.storage.StoragePoolHostVO;
import com.cloud.storage.StoragePoolStatus;
@ -111,7 +112,7 @@ public class DefaultHostListener implements HypervisorHostListener {
dataStoreVO = new StoragePoolVO();
dataStoreVO.setStorageProviderName(poolVO.getStorageProviderName());
dataStoreVO.setHostAddress(childStoragePoolInfo.getHost());
dataStoreVO.setPoolType(poolVO.getPoolType());
dataStoreVO.setPoolType(Storage.StoragePoolType.PreSetup);
dataStoreVO.setPath(childStoragePoolInfo.getHostPath());
dataStoreVO.setPort(poolVO.getPort());
dataStoreVO.setName(childStoragePoolInfo.getName());
@ -127,6 +128,7 @@ public class DefaultHostListener implements HypervisorHostListener {
dataStoreVO.setUsedBytes(childDataStoreAnswer.getPoolInfo().getCapacityBytes() - childDataStoreAnswer.getPoolInfo().getAvailableBytes());
dataStoreVO.setHypervisor(poolVO.getHypervisor());
dataStoreVO.setScope(poolVO.getScope());
dataStoreVO.setParent(poolVO.getId());
Map<String, String> details = new HashMap<>();
if(StringUtils.isNotEmpty(childDataStoreAnswer.getPoolType())) {