Skip to content

Commit 721dbea

Browse files
committed
list only available hosts, storage
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
1 parent 08d2633 commit 721dbea

7 files changed

Lines changed: 28 additions & 17 deletions

File tree

plugins/integrations/veeam-control-service/src/main/java/org/apache/cloudstack/veeam/adapter/ServerAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -862,7 +862,7 @@ public List<StorageDomain> listStorageDomainsByDcId(final String uuid, final Lon
862862
throw new InvalidParameterValueException("DataCenter with ID " + uuid + " not found");
863863
}
864864
Filter filter = new Filter(StoragePoolJoinVO.class, "id", true, offset, limit);
865-
List<StoragePoolJoinVO> storagePoolVOS = storagePoolJoinDao.listByZoneHypervisorAndType(dataCenterVO.getId(),
865+
List<StoragePoolJoinVO> storagePoolVOS = storagePoolJoinDao.listAvailableByZoneHypervisorAndType(dataCenterVO.getId(),
866866
Hypervisor.HypervisorType.KVM, SUPPORTED_STORAGE_TYPES, filter);
867867
return StoreVOToStorageDomainConverter.toStorageDomainListFromPools(storagePoolVOS);
868868
}
@@ -897,7 +897,7 @@ public Cluster getCluster(String uuid) {
897897
@ApiAccess(command = ListHostsCmd.class)
898898
public List<Host> listAllHosts(Long offset, Long limit) {
899899
Filter filter = new Filter(HostJoinVO.class, "id", true, offset, limit);
900-
final List<HostJoinVO> hosts = hostJoinDao.listRoutingHostsByHypervisor(Hypervisor.HypervisorType.KVM, filter);
900+
final List<HostJoinVO> hosts = hostJoinDao.listAvailableRoutingHostsByHypervisor(Hypervisor.HypervisorType.KVM, filter);
901901
return HostJoinVOToHostConverter.toHostList(hosts);
902902
}
903903

plugins/integrations/veeam-control-service/src/test/java/org/apache/cloudstack/veeam/adapter/ServerAdapterTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,7 @@ public void testListStorageDomainsByDcId_Found_ReturnsList() {
865865
when(dcVO.getId()).thenReturn(1L);
866866
when(dataCenterDao.findByUuid("dc-uuid")).thenReturn(dcVO);
867867
StoragePoolJoinVO poolVO = mock(StoragePoolJoinVO.class);
868-
when(storagePoolJoinDao.listByZoneHypervisorAndType(eq(1L), eq(Hypervisor.HypervisorType.KVM), any(), any())).thenReturn(List.of(poolVO));
868+
when(storagePoolJoinDao.listAvailableByZoneHypervisorAndType(eq(1L), eq(Hypervisor.HypervisorType.KVM), any(), any())).thenReturn(List.of(poolVO));
869869

870870
assertNotNull(serverAdapter.listStorageDomainsByDcId("dc-uuid", 0L, 10L));
871871
}
@@ -905,7 +905,7 @@ public void testGetCluster_NotFound_Throws() {
905905
@Test
906906
public void testListAllHosts_ReturnsList() {
907907
HostJoinVO hostVO = mock(HostJoinVO.class);
908-
when(hostJoinDao.listRoutingHostsByHypervisor(any(), any())).thenReturn(List.of(hostVO));
908+
when(hostJoinDao.listAvailableRoutingHostsByHypervisor(any(), any())).thenReturn(List.of(hostVO));
909909

910910
assertEquals(1, serverAdapter.listAllHosts(0L, 10L).size());
911911
}

server/src/main/java/com/cloud/api/query/dao/HostJoinDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ public interface HostJoinDao extends GenericDao<HostJoinVO, Long> {
4343

4444
List<HostJoinVO> findByClusterId(Long clusterId, Host.Type type);
4545

46-
List<HostJoinVO> listRoutingHostsByHypervisor(Hypervisor.HypervisorType hypervisorType, Filter filter);
46+
List<HostJoinVO> listAvailableRoutingHostsByHypervisor(Hypervisor.HypervisorType hypervisorType, Filter filter);
4747

4848
}

server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import com.cloud.host.HostStats;
5454
import com.cloud.host.dao.HostDetailsDao;
5555
import com.cloud.hypervisor.Hypervisor;
56+
import com.cloud.resource.ResourceState;
5657
import com.cloud.storage.StorageStats;
5758
import com.cloud.user.AccountManager;
5859
import com.cloud.utils.db.Filter;
@@ -415,15 +416,20 @@ private String calculateResourceAllocatedPercentage(float resource, float resour
415416
}
416417

417418
@Override
418-
public List<HostJoinVO> listRoutingHostsByHypervisor(Hypervisor.HypervisorType hypervisorType, Filter filter) {
419+
public List<HostJoinVO> listAvailableRoutingHostsByHypervisor(Hypervisor.HypervisorType hypervisorType, Filter filter) {
420+
List<ResourceState> availableStates = Arrays.asList(
421+
ResourceState.Enabled, ResourceState.Disabled, ResourceState.Degraded
422+
);
419423
SearchBuilder<HostJoinVO> sb = createSearchBuilder();
420424
sb.and("type", sb.entity().getType(), SearchCriteria.Op.EQ);
421425
sb.and("hypervisorType", sb.entity().getHypervisorType(), SearchCriteria.Op.EQ);
426+
sb.and("resourceStates", sb.entity().getResourceState(), SearchCriteria.Op.IN);
422427
sb.done();
423428

424429
SearchCriteria<HostJoinVO> sc = sb.create();
425430
sc.setParameters("type", Host.Type.Routing);
426431
sc.setParameters("hypervisorType", hypervisorType);
432+
sc.setParameters("resourceStates", availableStates.toArray());
427433
return listBy(sc, filter);
428434
}
429435
}

server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ public interface StoragePoolJoinDao extends GenericDao<StoragePoolJoinVO, Long>
4747

4848
List<StoragePoolVO> findStoragePoolByScopeAndRuleTags(Long datacenterId, Long podId, Long clusterId, ScopeType scopeType, List<String> tags);
4949

50-
List<StoragePoolJoinVO> listByZoneHypervisorAndType(long zoneId, Hypervisor.HypervisorType hypervisorType, List<Storage.StoragePoolType> types, Filter filter);
50+
List<StoragePoolJoinVO> listAvailableByZoneHypervisorAndType(long zoneId, Hypervisor.HypervisorType hypervisorType, List<Storage.StoragePoolType> types, Filter filter);
5151

5252
}

server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.ArrayList;
2020
import java.util.Arrays;
2121
import java.util.List;
22+
import java.util.Map;
2223

2324
import javax.inject.Inject;
2425

@@ -36,6 +37,7 @@
3637
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
3738
import org.apache.cloudstack.utils.jsinterpreter.TagAsRuleHelper;
3839
import org.apache.commons.collections.CollectionUtils;
40+
import org.apache.commons.collections.MapUtils;
3941
import org.springframework.stereotype.Component;
4042

4143
import com.cloud.api.ApiDBUtils;
@@ -47,6 +49,7 @@
4749
import com.cloud.storage.ScopeType;
4850
import com.cloud.storage.Storage;
4951
import com.cloud.storage.StoragePool;
52+
import com.cloud.storage.StoragePoolStatus;
5053
import com.cloud.storage.StorageStats;
5154
import com.cloud.storage.VolumeApiServiceImpl;
5255
import com.cloud.user.AccountManager;
@@ -55,9 +58,6 @@
5558
import com.cloud.utils.db.GenericDaoBase;
5659
import com.cloud.utils.db.SearchBuilder;
5760
import com.cloud.utils.db.SearchCriteria;
58-
import org.apache.commons.collections.MapUtils;
59-
60-
import java.util.Map;
6161

6262
@Component
6363
public class StoragePoolJoinDaoImpl extends GenericDaoBase<StoragePoolJoinVO, Long> implements StoragePoolJoinDao {
@@ -413,11 +413,15 @@ public List<StoragePoolVO> findStoragePoolByScopeAndRuleTags(Long datacenterId,
413413
return filteredPools;
414414
}
415415

416-
public List<StoragePoolJoinVO> listByZoneHypervisorAndType(long zoneId, Hypervisor.HypervisorType hypervisorType, List<Storage.StoragePoolType> types, Filter filter) {
416+
public List<StoragePoolJoinVO> listAvailableByZoneHypervisorAndType(long zoneId, Hypervisor.HypervisorType hypervisorType, List<Storage.StoragePoolType> types, Filter filter) {
417+
List<StoragePoolStatus> availableStatus = Arrays.asList(
418+
StoragePoolStatus.Up, StoragePoolStatus.Disabled
419+
);
417420
SearchBuilder<StoragePoolJoinVO> sb = createSearchBuilder();
418421
sb.and("zoneId", sb.entity().getZoneId(), SearchCriteria.Op.EQ);
419422
sb.and("hypervisors", sb.entity().getHypervisor(), SearchCriteria.Op.IN);
420423
sb.and("types", sb.entity().getPoolType(), SearchCriteria.Op.IN);
424+
sb.and("status", sb.entity().getStatus(), SearchCriteria.Op.IN);
421425
sb.done();
422426
SearchCriteria<StoragePoolJoinVO> sc = sb.create();
423427
sc.setParameters("zoneId", zoneId);
@@ -428,6 +432,7 @@ public List<StoragePoolJoinVO> listByZoneHypervisorAndType(long zoneId, Hypervis
428432
if (CollectionUtils.isNotEmpty(types)) {
429433
sc.setParameters("types", types.toArray());
430434
}
435+
sc.setParameters("status", availableStatus.toArray());
431436
return listBy(sc, filter);
432437
}
433438
}

server/src/test/java/com/cloud/api/query/dao/StoragePoolJoinDaoImplTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public void setUp() {
6666
}
6767

6868
@Test
69-
public void listByZoneHypervisorAndTypeReturnsMatchingPoolsWhenTypesAreProvided() {
69+
public void listAvailableByZoneHypervisorAndTypeReturnsMatchingPoolsWhenTypesAreProvided() {
7070
long zoneId = 42L;
7171
Hypervisor.HypervisorType hypervisorType = Hypervisor.HypervisorType.KVM;
7272
List<Storage.StoragePoolType> types = Arrays.asList(Storage.StoragePoolType.NetworkFilesystem, Storage.StoragePoolType.Filesystem);
@@ -75,7 +75,7 @@ public void listByZoneHypervisorAndTypeReturnsMatchingPoolsWhenTypesAreProvided(
7575

7676
doReturn(expectedPools).when(storagePoolJoinDao).listBy(searchCriteria, filter);
7777

78-
List<StoragePoolJoinVO> result = storagePoolJoinDao.listByZoneHypervisorAndType(zoneId, hypervisorType, types, filter);
78+
List<StoragePoolJoinVO> result = storagePoolJoinDao.listAvailableByZoneHypervisorAndType(zoneId, hypervisorType, types, filter);
7979

8080
assertSame(expectedPools, result);
8181
verify(searchCriteria).setParameters("zoneId", zoneId);
@@ -85,15 +85,15 @@ public void listByZoneHypervisorAndTypeReturnsMatchingPoolsWhenTypesAreProvided(
8585
}
8686

8787
@Test
88-
public void listByZoneHypervisorAndTypeSkipsTypeFilterWhenTypesAreNull() {
88+
public void listAvailableByZoneHypervisorAndTypeSkipsTypeFilterWhenTypesAreNull() {
8989
long zoneId = 7L;
9090
Hypervisor.HypervisorType hypervisorType = Hypervisor.HypervisorType.VMware;
9191
Filter filter = mock(Filter.class);
9292
List<StoragePoolJoinVO> expectedPools = Collections.emptyList();
9393

9494
doReturn(expectedPools).when(storagePoolJoinDao).listBy(searchCriteria, filter);
9595

96-
List<StoragePoolJoinVO> result = storagePoolJoinDao.listByZoneHypervisorAndType(zoneId, hypervisorType, null, filter);
96+
List<StoragePoolJoinVO> result = storagePoolJoinDao.listAvailableByZoneHypervisorAndType(zoneId, hypervisorType, null, filter);
9797

9898
assertSame(expectedPools, result);
9999
verify(searchCriteria).setParameters("zoneId", zoneId);
@@ -103,14 +103,14 @@ public void listByZoneHypervisorAndTypeSkipsTypeFilterWhenTypesAreNull() {
103103
}
104104

105105
@Test
106-
public void listByZoneHypervisorAndTypeSkipsTypeFilterForEmptyTypesAndPassesNullFilter() {
106+
public void listAvailableByZoneHypervisorAndTypeSkipsTypeFilterForEmptyTypesAndPassesNullFilter() {
107107
long zoneId = 9L;
108108
Hypervisor.HypervisorType hypervisorType = Hypervisor.HypervisorType.XenServer;
109109
List<StoragePoolJoinVO> expectedPools = Collections.singletonList(mock(StoragePoolJoinVO.class));
110110

111111
doReturn(expectedPools).when(storagePoolJoinDao).listBy(searchCriteria, null);
112112

113-
List<StoragePoolJoinVO> result = storagePoolJoinDao.listByZoneHypervisorAndType(zoneId, hypervisorType, Collections.emptyList(), null);
113+
List<StoragePoolJoinVO> result = storagePoolJoinDao.listAvailableByZoneHypervisorAndType(zoneId, hypervisorType, Collections.emptyList(), null);
114114

115115
assertSame(expectedPools, result);
116116
verify(searchCriteria).setParameters("zoneId", zoneId);

0 commit comments

Comments
 (0)