server: Adding listall to listLdapConfigurations (#4164)

Adds the listall parameter to listLdapConfigurations.
If set to true, and no domainid specified, list all LDAP configurations irrespective of the linked domain
This commit is contained in:
davidjumani 2020-06-24 13:45:57 +00:00 committed by GitHub
parent 8010718878
commit c03f8a1acb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 7 deletions

View File

@ -55,6 +55,10 @@ public class LdapListConfigurationCmd extends BaseListCmd {
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, required = false, entityType = DomainResponse.class, description = "linked domain")
private Long domainId;
@Parameter(name = ApiConstants.LIST_ALL, type = CommandType.BOOLEAN, description = "If set to true, "
+ " and no domainid specified, list all LDAP configurations irrespective of the linked domain", since = "4.13.2")
private Boolean listAll;
public LdapListConfigurationCmd() {
super();
}
@ -117,4 +121,8 @@ public class LdapListConfigurationCmd extends BaseListCmd {
public void setDomainId(final Long domainId) {
this.domainId = domainId;
}
public boolean listAll() {
return listAll != null && listAll;
}
}

View File

@ -291,7 +291,8 @@ public class LdapManagerImpl implements LdapManager, LdapValidator {
final String hostname = cmd.getHostname();
final int port = cmd.getPort();
final Long domainId = cmd.getDomainId();
final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(hostname, port, domainId);
final boolean listAll = cmd.listAll();
final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(hostname, port, domainId, listAll);
return new Pair<List<? extends LdapConfigurationVO>, Integer>(result.first(), result.second());
}

View File

@ -37,5 +37,9 @@ public interface LdapConfigurationDao extends GenericDao<LdapConfigurationVO, Lo
LdapConfigurationVO find(String hostname, int port, Long domainId);
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, boolean listAll);
}

View File

@ -46,6 +46,7 @@ public class LdapConfigurationDaoImpl extends GenericDaoBase<LdapConfigurationVO
listGlobalConfigurationsSearch.and("port", listGlobalConfigurationsSearch.entity().getPort(), Op.EQ);
listGlobalConfigurationsSearch.and("domain_id", listGlobalConfigurationsSearch.entity().getDomainId(),SearchCriteria.Op.NULL);
listGlobalConfigurationsSearch.done();
listDomainConfigurationsSearch = createSearchBuilder();
listDomainConfigurationsSearch.and("hostname", listDomainConfigurationsSearch.entity().getHostname(), Op.EQ);
listDomainConfigurationsSearch.and("port", listDomainConfigurationsSearch.entity().getPort(), Op.EQ);
@ -62,23 +63,38 @@ public class LdapConfigurationDaoImpl extends GenericDaoBase<LdapConfigurationVO
@Override
public LdapConfigurationVO find(String hostname, int port, Long domainId) {
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId);
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false);
return findOneBy(sc);
}
@Override
public LdapConfigurationVO find(String hostname, int port, Long domainId, boolean listAll) {
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll);
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);
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false);
return searchAndCount(sc, null);
}
private SearchCriteria<LdapConfigurationVO> getSearchCriteria(String hostname, int port, Long domainId) {
@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);
}
private SearchCriteria<LdapConfigurationVO> getSearchCriteria(String hostname, int port, Long domainId,boolean listAll) {
SearchCriteria<LdapConfigurationVO> sc;
if (domainId == null) {
sc = listDomainConfigurationsSearch.create();
} else {
if (domainId != null) {
// If domainid is present, ignore listall
sc = listDomainConfigurationsSearch.create();
sc.setParameters("domain_id", domainId);
} else if (listAll) {
sc = listDomainConfigurationsSearch.create();
} else {
sc = listGlobalConfigurationsSearch.create();
}
if (hostname != null) {
sc.setParameters("hostname", hostname);