You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pe...@apache.org on 2025/08/13 16:32:37 UTC
(cloudstack) 01/01: API: Fix pagination issue with listing LDAP configuration
This is an automated email from the ASF dual-hosted git repository.
pearl11594 pushed a commit to branch fix-ldapconf-list-pagination
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit f3329be397c4977f6e9c46cbeea6f11371fd1fc1
Author: Pearl Dsilva <pe...@gmail.com>
AuthorDate: Wed Aug 13 12:32:09 2025 -0400
API: Fix pagination issue with listing LDAP configuration
---
.../org/apache/cloudstack/ldap/LdapConfiguration.java | 2 +-
.../org/apache/cloudstack/ldap/LdapManagerImpl.java | 2 +-
.../cloudstack/ldap/dao/LdapConfigurationDao.java | 4 ++--
.../cloudstack/ldap/dao/LdapConfigurationDaoImpl.java | 19 ++++++++++---------
.../ldap/LdapDirectoryServerConnectionTest.java | 2 +-
5 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java
index 6a62ad8d99d..4b67bd44880 100644
--- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java
+++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java
@@ -239,7 +239,7 @@ public class LdapConfiguration implements Configurable{
public String getProviderUrl(final Long domainId) {
final String protocol = getSSLStatus(domainId) == true ? "ldaps://" : "ldap://";
- final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(null, 0, domainId);
+ final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(null, 0, domainId, null, null);
final StringBuilder providerUrls = new StringBuilder();
String delim = "";
for (final LdapConfigurationVO resource : result.first()) {
diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java
index 05b8578bb42..c73744bb48c 100644
--- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java
+++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java
@@ -377,7 +377,7 @@ public class LdapManagerImpl extends ComponentLifecycleBase implements LdapManag
final int port = cmd.getPort();
final Long domainId = cmd.getDomainId();
final boolean listAll = cmd.listAll();
- final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(hostname, port, domainId, listAll);
+ final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(hostname, port, domainId, listAll, cmd.getStartIndex(), cmd.getPageSizeVal());
return new Pair<List<? extends LdapConfigurationVO>, Integer>(result.first(), result.second());
}
diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java
index af774b685ed..30d05c5a6f2 100644
--- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java
+++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java
@@ -39,7 +39,7 @@ public interface LdapConfigurationDao extends GenericDao<LdapConfigurationVO, Lo
LdapConfigurationVO find(String hostname, int port, Long domainId, boolean listAll);
- Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String hostname, int port, Long domainId);
+ Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String hostname, int port, Long domainId, Long offset, Long limit);
- Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String hostname, int port, Long domainId, boolean listAll);
+ Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String hostname, int port, Long domainId, boolean listAll, Long offset, Long limit);
}
diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java
index c053e87b6bf..33fe98993d1 100644
--- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java
+++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java
@@ -19,6 +19,7 @@ package org.apache.cloudstack.ldap.dao;
import java.util.List;
+import com.cloud.utils.db.Filter;
import org.springframework.stereotype.Component;
import org.apache.cloudstack.ldap.LdapConfigurationVO;
@@ -63,29 +64,29 @@ public class LdapConfigurationDaoImpl extends GenericDaoBase<LdapConfigurationVO
@Override
public LdapConfigurationVO find(String hostname, int port, Long domainId) {
- SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false);
+ SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false, null, null);
return findOneBy(sc);
}
@Override
public LdapConfigurationVO find(String hostname, int port, Long domainId, boolean listAll) {
- SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll);
+ SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll, null, null);
return findOneBy(sc);
}
@Override
- public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final String hostname, final int port, final Long domainId) {
- SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false);
- return searchAndCount(sc, null);
+ public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final String hostname, final int port, final Long domainId, Long offset, Long limit) {
+ SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false, offset, limit);
+ return searchAndCount(sc, new Filter(LdapConfigurationVO.class, "id", true, offset, limit));
}
@Override
- public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final String hostname, final int port, final Long domainId, final boolean listAll) {
- SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll);
- return searchAndCount(sc, null);
+ public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final String hostname, final int port, final Long domainId, final boolean listAll, Long offset, Long limit) {
+ SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll, offset, limit);
+ return searchAndCount(sc, new Filter(LdapConfigurationVO.class, "id", true, offset, limit));
}
- private SearchCriteria<LdapConfigurationVO> getSearchCriteria(String hostname, int port, Long domainId,boolean listAll) {
+ private SearchCriteria<LdapConfigurationVO> getSearchCriteria(String hostname, int port, Long domainId,boolean listAll, Long offset, Long limit) {
SearchCriteria<LdapConfigurationVO> sc;
if (domainId != null) {
// If domainid is present, ignore listall
diff --git a/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java b/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java
index a216084aa3a..53afba0a34f 100644
--- a/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java
+++ b/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java
@@ -90,7 +90,7 @@ public class LdapDirectoryServerConnectionTest {
lenient().when(userManagerFactory.getInstance(LdapUserManager.Provider.OPENLDAP)).thenReturn(new OpenLdapUserManagerImpl(configuration));
// construct an elaborate structure around a single object
Pair<List<LdapConfigurationVO>, Integer> vos = new Pair<List<LdapConfigurationVO>, Integer>( Collections.singletonList(configurationVO),1);
- lenient().when(configurationDao.searchConfigurations(null, 0, 1L)).thenReturn(vos);
+ lenient().when(configurationDao.searchConfigurations(null, 0, 1L, 1L, 20L)).thenReturn(vos);
contextFactory = new LdapContextFactory(configuration);
ldapManager = new LdapManagerImpl(configurationDao, contextFactory, userManagerFactory, configuration);