Yaniv Bronhaim has uploaded a new change for review. Change subject: Parsing http body return on error and improve output ......................................................................
Parsing http body return on error and improve output Instead of generalizing the error by using PROVIDER_FAILURE, foreman starts to provide full description of the failure reason, such as: Body: { "error": {"id":17,"errors":{"root_pass":["should be 8 characters or more"]}, "full_messages":["Root password should be 8 characters or more"]} } In this patch we add the "full_messages" to engine.log Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1124891 Change-Id: I1a5717baa06665e475e64a8f91e23ffcb01e17b4 Signed-off-by: Yaniv Bronhaim <ybron...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanError.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanErrorWrapper.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java 3 files changed, 35 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/34973/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanError.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanError.java new file mode 100644 index 0000000..603037e --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanError.java @@ -0,0 +1,18 @@ +package org.ovirt.engine.core.bll.host.provider.foreman; + +import java.io.Serializable; +import java.util.Map; + +public class ForemanError implements Serializable { + private static final long serialVersionUID = 468697212133957494L; + private Map<String, String[]> errors; + private String[] full_messages; + + public String[] getFull_messages() { return full_messages; } + + public void setFull_messages(String[] full_messages) { this.full_messages = full_messages; } + + public Map<String, String[]> getErrors() { return errors; } + + public void setErrors(Map<String, String[]> errors) { this.errors = errors; } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanErrorWrapper.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanErrorWrapper.java new file mode 100644 index 0000000..7b564d0 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanErrorWrapper.java @@ -0,0 +1,13 @@ +package org.ovirt.engine.core.bll.host.provider.foreman; +import org.codehaus.jackson.annotate.JsonProperty; + +public class ForemanErrorWrapper { + @JsonProperty("error") + private ForemanError fe; + + public ForemanError getForemanError() { + return fe; + } + + public void setForemanError(ForemanError fe) { this.fe = fe; } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java index 1e49746..b2a54fc 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java @@ -27,6 +27,7 @@ import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; +import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.host.provider.HostProviderProxy; import org.ovirt.engine.core.bll.provider.BaseProviderProxy; import org.ovirt.engine.core.bll.provider.ExternalTrustStoreInitializer; @@ -350,7 +351,9 @@ // after post request the return value is HTTP_MOVED_TEMP on success if (result != HttpURLConnection.HTTP_OK && result != HttpURLConnection.HTTP_MOVED_TEMP) { - throw new VdcBLLException(VdcBllErrors.PROVIDER_FAILURE); + ForemanErrorWrapper ferr = objectMapper.readValue(httpMethod.getResponseBody(), ForemanErrorWrapper.class); + String err = StringUtils.join(ferr.getForemanError().getFull_messages(), ", "); + throw new VdcBLLException(VdcBllErrors.PROVIDER_FAILURE, err); } } catch (HttpException e) { handleException(e); -- To view, visit http://gerrit.ovirt.org/34973 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1a5717baa06665e475e64a8f91e23ffcb01e17b4 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