cks: fix list apis response count (#8701)

* cks: fix list apis count

Fixes count value in listKubernetesClusters and
listSupportedKubernetesVersions APIs response.
This commit is contained in:
Abhishek Kumar 2024-06-13 13:08:19 +05:30 committed by GitHub
parent 517cddcb15
commit 2fef0a32bc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 22 additions and 17 deletions

View File

@ -1486,13 +1486,13 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
if (clusterType != null) { if (clusterType != null) {
sc.setParameters("cluster_type", clusterType); sc.setParameters("cluster_type", clusterType);
} }
List<KubernetesClusterVO> kubernetesClusters = kubernetesClusterDao.search(sc, searchFilter); Pair<List<KubernetesClusterVO>, Integer> kubernetesClustersAndCount = kubernetesClusterDao.searchAndCount(sc, searchFilter);
for (KubernetesClusterVO cluster : kubernetesClusters) { for (KubernetesClusterVO cluster : kubernetesClustersAndCount.first()) {
KubernetesClusterResponse clusterResponse = createKubernetesClusterResponse(cluster.getId()); KubernetesClusterResponse clusterResponse = createKubernetesClusterResponse(cluster.getId());
responsesList.add(clusterResponse); responsesList.add(clusterResponse);
} }
ListResponse<KubernetesClusterResponse> response = new ListResponse<KubernetesClusterResponse>(); ListResponse<KubernetesClusterResponse> response = new ListResponse<>();
response.setResponses(responsesList); response.setResponses(responsesList, kubernetesClustersAndCount.second());
return response; return response;
} }

View File

@ -52,6 +52,7 @@ import com.cloud.storage.dao.VMTemplateZoneDao;
import com.cloud.template.TemplateApiService; import com.cloud.template.TemplateApiService;
import com.cloud.template.VirtualMachineTemplate; import com.cloud.template.VirtualMachineTemplate;
import com.cloud.user.AccountManager; import com.cloud.user.AccountManager;
import com.cloud.utils.Pair;
import com.cloud.utils.component.ComponentContext; import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.ManagerBase; import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.db.Filter; import com.cloud.utils.db.Filter;
@ -119,13 +120,14 @@ public class KubernetesVersionManagerImpl extends ManagerBase implements Kuberne
return response; return response;
} }
private ListResponse<KubernetesSupportedVersionResponse> createKubernetesSupportedVersionListResponse(List<KubernetesSupportedVersionVO> versions) { private ListResponse<KubernetesSupportedVersionResponse> createKubernetesSupportedVersionListResponse(
List<KubernetesSupportedVersionVO> versions, Integer count) {
List<KubernetesSupportedVersionResponse> responseList = new ArrayList<>(); List<KubernetesSupportedVersionResponse> responseList = new ArrayList<>();
for (KubernetesSupportedVersionVO version : versions) { for (KubernetesSupportedVersionVO version : versions) {
responseList.add(createKubernetesSupportedVersionResponse(version)); responseList.add(createKubernetesSupportedVersionResponse(version));
} }
ListResponse<KubernetesSupportedVersionResponse> response = new ListResponse<>(); ListResponse<KubernetesSupportedVersionResponse> response = new ListResponse<>();
response.setResponses(responseList); response.setResponses(responseList, count);
return response; return response;
} }
@ -280,10 +282,12 @@ public class KubernetesVersionManagerImpl extends ManagerBase implements Kuberne
if(keyword != null){ if(keyword != null){
sc.setParameters("keyword", "%" + keyword + "%"); sc.setParameters("keyword", "%" + keyword + "%");
} }
List <KubernetesSupportedVersionVO> versions = kubernetesSupportedVersionDao.search(sc, searchFilter); Pair<List<KubernetesSupportedVersionVO>, Integer> versionsAndCount =
versions = filterKubernetesSupportedVersions(versions, minimumSemanticVersion); kubernetesSupportedVersionDao.searchAndCount(sc, searchFilter);
List<KubernetesSupportedVersionVO> versions =
filterKubernetesSupportedVersions(versionsAndCount.first(), minimumSemanticVersion);
return createKubernetesSupportedVersionListResponse(versions); return createKubernetesSupportedVersionListResponse(versions, versionsAndCount.second());
} }
@Override @Override

View File

@ -35,6 +35,7 @@ import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.commons.collections.CollectionUtils;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
@ -66,6 +67,7 @@ import com.cloud.user.AccountManager;
import com.cloud.user.AccountVO; import com.cloud.user.AccountVO;
import com.cloud.user.User; import com.cloud.user.User;
import com.cloud.user.UserVO; import com.cloud.user.UserVO;
import com.cloud.utils.Pair;
import com.cloud.utils.component.ComponentContext; import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.db.Filter; import com.cloud.utils.db.Filter;
import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchBuilder;
@ -142,14 +144,13 @@ public class KubernetesVersionServiceTest {
when(versionVO.getSemanticVersion()).thenReturn(KubernetesVersionService.MIN_KUBERNETES_VERSION); when(versionVO.getSemanticVersion()).thenReturn(KubernetesVersionService.MIN_KUBERNETES_VERSION);
versionVOs.add(versionVO); versionVOs.add(versionVO);
when(kubernetesSupportedVersionDao.findById(Mockito.anyLong())).thenReturn(versionVO); when(kubernetesSupportedVersionDao.findById(Mockito.anyLong())).thenReturn(versionVO);
when(kubernetesSupportedVersionDao.search(Mockito.any(SearchCriteria.class), Mockito.any(Filter.class))).thenReturn(versionVOs); when(kubernetesSupportedVersionDao.searchAndCount(Mockito.any(SearchCriteria.class),
ListResponse<KubernetesSupportedVersionResponse> response = Mockito.any(Filter.class))).thenReturn(new Pair<>(versionVOs, versionVOs.size()));
kubernetesVersionService.listKubernetesSupportedVersions( ListResponse<KubernetesSupportedVersionResponse> versionsResponse =
cmd); kubernetesVersionService.listKubernetesSupportedVersions(cmd);
Assert.assertNotNull(response); Assert.assertEquals(versionVOs.size(), versionsResponse.getCount().intValue());
Assert.assertEquals(Integer.valueOf(1), response.getCount()); Assert.assertTrue(CollectionUtils.isNotEmpty(versionsResponse.getResponses()));
Assert.assertEquals(1, response.getResponses().size()); Assert.assertEquals(versionVOs.size(), versionsResponse.getResponses().size());
Assert.assertEquals(KubernetesVersionService.MIN_KUBERNETES_VERSION, response.getResponses().get(0).getSemanticVersion());
} }
@Test(expected = InvalidParameterValueException.class) @Test(expected = InvalidParameterValueException.class)