Hello Yair Zaslavsky, I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/32009 to review the following change. Change subject: aaa: Engine should start even if exception occured in load of legacy provider ...................................................................... aaa: Engine should start even if exception occured in load of legacy provider Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1129203 Change-Id: I6ba595253c2569cf581e690b68348e6ae1c804b1 Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com> --- M backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/DirectorySearcher.java M backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/Utils.java M backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/utils/dns/DnsSRVLocator.java 3 files changed, 26 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/32009/1 diff --git a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/DirectorySearcher.java b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/DirectorySearcher.java index b279eb2..db1e7dd 100644 --- a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/DirectorySearcher.java +++ b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/DirectorySearcher.java @@ -56,6 +56,7 @@ public List<?> find(final LdapQueryData queryData, final long resultCount) { final String domainName = queryData.getDomain(); + Utils.refreshLdapServers(configuration, domainName); List<String> ldapServerURIs = Arrays.asList(configuration.getProperty("config.LdapServers").split(";")); List<String> editableLdapServerURIs = new ArrayList<>(ldapServerURIs); diff --git a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/Utils.java b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/Utils.java index 55db5f6..861b205 100644 --- a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/Utils.java +++ b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/Utils.java @@ -5,9 +5,11 @@ import java.io.Reader; import java.nio.charset.Charset; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Properties; + import javax.naming.spi.DirectoryManager; import javax.security.auth.login.Configuration; @@ -15,10 +17,13 @@ import org.ovirt.engine.api.extensions.Base; import org.ovirt.engine.extensions.aaa.builtin.kerberosldap.utils.dns.DnsSRVLocator.DnsSRVResult; import org.ovirt.engine.extensions.aaa.builtin.kerberosldap.utils.ldap.LdapSRVLocator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Utils { private static boolean firstCallToInit = true; + private static Logger logger = LoggerFactory.getLogger(Utils.class); public static void setDefaults(Properties conf, String domain) { { @@ -34,8 +39,13 @@ } } - List<String> ldapServers = new ArrayList<>(); + refreshLdapServers(conf, domain); + + } + + public static void refreshLdapServers(Properties conf, String domain) { LdapSRVLocator locator = new LdapSRVLocator(); + List<String> addresses = new ArrayList<>(); try { if (StringUtils.isBlank(conf.getProperty("config.LdapServers"))) { // list of LDAP servers is empty, find LDAP servers using DNS SRV records and convert them @@ -45,21 +55,26 @@ throw new Exception(String.format("No ldap servers were found for domain %1$s", domain)); } else { for (int counter = 0; counter < results.getNumOfValidAddresses(); counter++) { - String address = results.getAddresses()[counter]; - String ldapURI = locator.constructURI("ldap", address, "389").toString(); - ldapServers.add(ldapURI); + addresses.add(results.getAddresses()[counter]); } } } else { // list of LDAP servers was entered, convert them to URIs - for (String server : conf.getProperty("config.LdapServers").split(";")) { - ldapServers.add(locator.constructURI("ldap", server, "389").toString()); - } + addresses = Arrays.asList(conf.getProperty("config.LdapServers").split(";")); } + List<String> ldapServers = new ArrayList<>(); + for (String address : addresses) { + String ldapURI = locator.constructURI("ldap", address, "389").toString(); + ldapServers.add(ldapURI); + } + conf.setProperty("config.LdapServers", StringUtils.join(ldapServers, ";")); } catch (Exception ex) { - throw new RuntimeException(ex); + logger.error("Exception has occurred during refreshing ldap servers. Exception message is: {} ", + ex.getMessage()); + if (logger.isDebugEnabled()) { + logger.debug("", ex); + } } - conf.setProperty("config.LdapServers", StringUtils.join(ldapServers, ";")); } private static void putIfAbsent(Properties props, String key, String value) { diff --git a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/utils/dns/DnsSRVLocator.java b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/utils/dns/DnsSRVLocator.java index 7143f00..9b03491 100644 --- a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/utils/dns/DnsSRVLocator.java +++ b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/utils/dns/DnsSRVLocator.java @@ -401,6 +401,7 @@ } public URI constructURI(String protocol, String address, String defaultLdapSeverPort) throws URISyntaxException { + address = address.indexOf("://") != -1 ? address.substring(address.indexOf("://") + 3) : address; String[] parts = address.split("\\:"); String hostname = address; String port = defaultLdapSeverPort; -- To view, visit http://gerrit.ovirt.org/32009 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6ba595253c2569cf581e690b68348e6ae1c804b1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com> Gerrit-Reviewer: Yair Zaslavsky <yzasl...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches