Yaniv Bronhaim has uploaded a new change for review. Change subject: engine-manage-domain is missing details on error reports. ......................................................................
engine-manage-domain is missing details on error reports. https://bugzilla.redhat.com/show_bug.cgi?id=818479 Added variable of default message, so if error occurred during varification of the paramerts, the default message will be the output. Change-Id: If21f117208a53a80ebfefbbe4f6a0c188e35a3bd Signed-off-by: Yaniv Bronhaim <ybron...@redhat.com> --- M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ConfigurationProvider.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomainsResult.java 3 files changed, 101 insertions(+), 39 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/02/7202/1 diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ConfigurationProvider.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ConfigurationProvider.java index f67ef72..cffc847 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ConfigurationProvider.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ConfigurationProvider.java @@ -19,9 +19,9 @@ public class ConfigurationProvider { - private EnumMap<ConfigValues, String> configVals = new EnumMap<ConfigValues, String>(ConfigValues.class); - private String engineConfigExecutable; - private String engineConfigProperties; + private final EnumMap<ConfigValues, String> configVals = new EnumMap<ConfigValues, String>(ConfigValues.class); + private final String engineConfigExecutable; + private final String engineConfigProperties; private final static Logger log = Logger.getLogger(ManageDomainsDAOImpl.class); public ConfigurationProvider(String adUserName, @@ -103,13 +103,12 @@ int retVal = engineConfigProcess.waitFor(); if (retVal != 0) { throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_SETTING_CONFIGURATION_VALUE_FOR_OPTION, + "Verify Connection to Db, Check if DB service is running", enumValue.name()); } - } catch (IOException e) { + } catch (Throwable e) { throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_SETTING_CONFIGURATION_VALUE_FOR_OPTION_WITH_DETAILS, - new String[] { enumValue.name(), e.getMessage() }); - } catch (InterruptedException e) { - throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_SETTING_CONFIGURATION_VALUE_FOR_OPTION_WITH_DETAILS, + "Verify Connection to Db, Check if DB service is running", new String[] { enumValue.name(), e.getMessage() }); } finally { diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java index e011669..598af99 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java @@ -16,7 +16,6 @@ import java.util.Scanner; import java.util.Set; -import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.ovirt.engine.core.common.config.ConfigValues; @@ -119,14 +118,16 @@ try { utilityConfiguration = new ManageDomainsConfiguration(configFilePath); - } catch (ConfigurationException e) { - throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_READING_CONFIGURATION, e.getMessage()); + } catch (Exception e) { + throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_READING_CONFIGURATION, + "Verify that postgresql service is up and check DB configurations", e.getMessage()); } try { daoImpl = new ManageDomainsDAOImpl(); - } catch (SQLException e) { - throw new ManageDomainsResult(ManageDomainsResultEnum.DB_EXCEPTION, e.getMessage()); + } catch (Exception e) { + throw new ManageDomainsResult(ManageDomainsResultEnum.DB_EXCEPTION, + "Verify that postgresql service is up and check DB configurations" , e.getMessage()); } } @@ -216,12 +217,9 @@ utilityConfiguration.getEngineConfigExecutablePath(), engineConfigProperties); - } catch (IOException e) { - throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_READING_CURRENT_CONFIGURATION, e.getMessage()); - } catch (InterruptedException e) { - throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_READING_CURRENT_CONFIGURATION, e.getMessage()); - } catch (FailedReadingConfigValueException e) { - throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_READING_CURRENT_CONFIGURATION, e.getMessage()); + } catch (Throwable e) { + throw new ManageDomainsResult(ManageDomainsResultEnum.FAILED_READING_CURRENT_CONFIGURATION, + "Verify that postgresql service is up and check DB configurations", e.getMessage()); } } @@ -232,7 +230,7 @@ try { actionType = ActionType.valueOf(action); } catch (IllegalArgumentException ex) { - throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ACTION, action); + throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ACTION, "Invalid action, verify DB connection", action); } if (actionType.equals(ActionType.add)) { @@ -253,7 +251,8 @@ } else if (actionType.equals(ActionType.list)) { getConfiguration(); } else { - throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ACTION, action); + throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ACTION, + "Invalid action, verify DB connection", action); } } @@ -272,7 +271,8 @@ for (LdapProviderType t : LdapProviderType.values()) { sb.append(" " + t.name() + "\n"); } - throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ARGUMENT_FOR_COMMAND, sb.toString()); + throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ARGUMENT_FOR_COMMAND, + "Check Db Connection, getLdapProviderType received empty parameter", sb.toString()); } private String getPasswordInput(CLIParser parser) throws ManageDomainsResult { @@ -283,7 +283,8 @@ String passwordFile = parser.getArg(Arguments.passwordFile.name()); pass = readPasswordFile(passwordFile); } catch (Exception e) { - throw new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_READING_PASSWORD_FILE, e.getMessage()); + throw new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_READING_PASSWORD_FILE, + "Check DB connection. Error during reading password file", e.getMessage()); } } else if (parser.hasArg(Arguments.interactive.name())) { pass = readPasswordInteractively(); @@ -404,7 +405,8 @@ new DomainsConfigurationEntry(currentDomains, DOMAIN_SEPERATOR, null); if (domainNameEntry.doesDomainExist(domainName)) { - throw new ManageDomainsResult(ManageDomainsResultEnum.DOMAIN_ALREADY_EXISTS_IN_CONFIGURATION, domainName); + throw new ManageDomainsResult(ManageDomainsResultEnum.DOMAIN_ALREADY_EXISTS_IN_CONFIGURATION, + "Error during verified domain name. Empty name or DB connection error" ,domainName); } domainNameEntry.setValueForDomain(domainName, null); @@ -481,6 +483,7 @@ return OK_RESULT; } catch (SQLException e) { return new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_WHILE_APPLYING_CHANGES_IN_DATABASE, + "Check connection to DB, failed during applying changes", e.getMessage()); } } @@ -507,7 +510,9 @@ new DomainsConfigurationEntry(currentDomains, DOMAIN_SEPERATOR, null); if (!domainNameEntry.doesDomainExist(domainName)) { - throw new ManageDomainsResult(ManageDomainsResultEnum.DOMAIN_DOESNT_EXIST_IN_CONFIGURATION, domainName); + throw new ManageDomainsResult(ManageDomainsResultEnum.DOMAIN_DOESNT_EXIST_IN_CONFIGURATION, + "Error during verified domain name. Empty name or DB connection error", + domainName); } domainNameEntry.setValueForDomain(domainName, null); @@ -594,6 +599,7 @@ } catch (Exception ex) { ManageDomainsResult result = new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_CREATING_KERBEROS_CONFIGURATION, + "Check network Connection to DB, failed during configure kerberos.", ex.getMessage()); throw result; } @@ -633,7 +639,8 @@ } log.info("Successfully tested kerberos configuration for domain: " + domain); } catch (Exception e) { - ManageDomainsResult result = new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_WHILE_TESTING_DOMAIN, new String[] { + ManageDomainsResult result = new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_WHILE_TESTING_DOMAIN, + "Check DB Connection, failed during testing domain", new String[] { domain, e.getMessage() }); if ((isValidate && reportAllErrors) || ((domainName != null) && !domain.equals(domainName))) { @@ -662,6 +669,7 @@ FileUtil.deleteFile(utilityConfiguration.getkrb5confFilePath() + TESTING_KRB5_CONF_SUFFIX); } catch (IOException e) { throw new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_WHILE_APPLYING_KERBEROS_CONFIGURATION, + "Check Connection to DB, kerberos configuration couldn't been saved", e.getMessage()); } } @@ -676,8 +684,9 @@ ReturnStatus returnStatus = simpleAuthenticationCheck.printUserGuid(domain, userName, password, address, userGuid, ldapProviderType); if (!returnStatus.equals(ReturnStatus.OK)) { - return new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_WHILE_TESTING_DOMAIN, new String[] { domain, - returnStatus.getDetailedMessage() }); + return new ManageDomainsResult(ManageDomainsResultEnum.FAILURE_WHILE_TESTING_DOMAIN, + "Checking domain configuration failed, check network connection.", + new String[] { domain, returnStatus.getDetailedMessage() }); } log.info("Successfully tested domain " + domain); return OK_RESULT; @@ -821,7 +830,8 @@ new DomainsConfigurationEntry(currentDomains, DOMAIN_SEPERATOR, null); if (!domainNameEntry.doesDomainExist(domainName)) { - throw new ManageDomainsResult(ManageDomainsResultEnum.DOMAIN_DOESNT_EXIST_IN_CONFIGURATION, domainName); + throw new ManageDomainsResult(ManageDomainsResultEnum.DOMAIN_DOESNT_EXIST_IN_CONFIGURATION, + "Error during verified domain name. Empty name or DB connection error", domainName); } domainNameEntry.removeValueForDomain(domainName); @@ -879,7 +889,8 @@ try { actionType = ActionType.valueOf(action); } catch (IllegalArgumentException ex) { - throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ACTION, action); + throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ACTION, + "Invalid DB action, check DB connection", action); } if (actionType.equals(ActionType.add)) { requireArgs(parser, Arguments.domain, Arguments.user, Arguments.provider); @@ -916,7 +927,8 @@ private void requireArgs(CLIParser parser, Arguments... args) throws ManageDomainsResult { for (Arguments arg: args) { if (!parser.hasArg(arg.name())) { - throw new ManageDomainsResult(ManageDomainsResultEnum.ARGUMENT_IS_REQUIRED, arg.name()); + throw new ManageDomainsResult(ManageDomainsResultEnum.ARGUMENT_IS_REQUIRED, + "Missing argument for command" , arg.name()); } } } @@ -927,13 +939,15 @@ return; } } - throw new ManageDomainsResult(ManageDomainsResultEnum.ARGUMENT_IS_REQUIRED, Arrays.deepToString(args)); + throw new ManageDomainsResult(ManageDomainsResultEnum.ARGUMENT_IS_REQUIRED, + "Missing argument for command", Arrays.deepToString(args)); } private void checkInvalidArgs(CLIParser parser, Arguments... args) throws ManageDomainsResult { for (Arguments arg : args) { if (parser.hasArg(arg.name())) { - throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ARGUMENT_FOR_COMMAND, arg.name()); + throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ARGUMENT_FOR_COMMAND, + "Empty argument pass. Verify command", arg.name()); } } } diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomainsResult.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomainsResult.java index 32cccab..34a2b98 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomainsResult.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomainsResult.java @@ -1,27 +1,76 @@ package org.ovirt.engine.core.utils.kerberos; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +/* + * Exception during configure domains. If this exception occurred its probably because + * DB errors. This class define handling of configure exceptions + */ public class ManageDomainsResult extends Exception { private static final long serialVersionUID = -2897637328396868452L; private ManageDomainsResultEnum enumResult; private int exitCode; private String detailedMessage; + private final static Logger log = Logger.getLogger(ManageDomainsResult.class); + /** + * This constructor is present exception without additional params. + * we use this one without additional info, + * only enum result type with default detailed massage. + * + * @param enumResult - enum result type + */ public ManageDomainsResult(ManageDomainsResultEnum enumResult) { this.exitCode = enumResult.getExitCode(); this.detailedMessage = enumResult.getDetailedMessage(); this.enumResult = enumResult; } - public ManageDomainsResult(ManageDomainsResultEnum enumResult, String param) { - this.exitCode = enumResult.getExitCode(); - this.detailedMessage = String.format(enumResult.getDetailedMessage(), param); - this.enumResult = enumResult; - } + /** + * This constructor gets params for enum result and defaultMsg for a case that params are wrong or + * include misleading variables (like empty string) + * + * @param enumResult - the error to publish + * @param defaultMsg - msg for default use, if something wrong with params + * @param params - enumResult additional params + */ + public ManageDomainsResult(ManageDomainsResultEnum enumResult, String defaultMsg ,String... params) { + boolean validParams = true; - public ManageDomainsResult(ManageDomainsResultEnum enumResult, String... params) { this.exitCode = enumResult.getExitCode(); - this.detailedMessage = String.format(enumResult.getDetailedMessage(), params); this.enumResult = enumResult; + + if (StringUtils.isEmpty(defaultMsg)){ + log.debug("No default param passed."); + this.detailedMessage = enumResult.getDetailedMessage(); + } + + // if we used this constructor we must have params. verified that all params are acceptable + // (not empty string or null) + if (params.length == 0){ + log.debug("Wrong exception's params recevied."); + this.detailedMessage = defaultMsg; + return; + } + + for (String param : params){ + if (StringUtils.isEmpty(param)){ + log.debug("Got null value."); + validParams = false; + } + } + + // use default message - something is wrong with one of the params + if (!validParams){ + this.detailedMessage = defaultMsg; + return; + } + // Create message + else{ + // log.debug("ManageDomainsResult: evferythign good."); + this.detailedMessage = String.format(enumResult.getDetailedMessage(), params); + } } public int getExitCode() { -- To view, visit http://gerrit.ovirt.org/7202 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If21f117208a53a80ebfefbbe4f6a0c188e35a3bd Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yaniv Bronhaim <ybron...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches