Bug 1466424 - Upgrading to EAP 7.0.5-3 breaks integration with CFME
Upgrading to EAP 7.0.5-3 breaks integration with CFME
Product: Red Hat Enterprise Virtualization Manager
Classification: Red Hat
Component: ovirt-engine (Show other bugs)
Unspecified Unspecified
unspecified Severity high
: ---
: ---
Assigned To: Juan Hernández
meital avital
: Regression
Depends On:
  Show dependency treegraph
Reported: 2017-06-29 10:34 EDT by Juan Hernández
Modified: 2017-07-03 08:02 EDT (History)
9 users (show)

See Also:
Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2017-07-03 08:02:16 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: Infra
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Juan Hernández 2017-06-29 10:34:55 EDT
Description of problem:

The version of Resteasy included in EAP 7.0.5-3 does not support the 'xml' content type used by the 'ovirt' gem, which CFME uses to talk to RHV.

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:

1. Send a request to create a virtual machine like the 'ovirt' gem does, using the 'xml' content type:


curl \
--verbose \
--cacert /etc/pki/ovirt-engine/ca.pem \
--user "${user}:${password}" \
--header "Version: 3" \
--header "Content-Type: xml" \
--request POST \
--data "
" \

Actual results:

The server responds with a 400 HTTP error:

  HTTP/1.1 400 Bad Request

  <html><head><title>Error</title></head><body>Bad Request</body></html>

A message is written to /var/log/ovirt-engine/server.log indicating that 'xml' isn't a valid content type:

2017-06-29 17:28:09,055 WARN  [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-31) RESTEASY002130: Failed to parse request.: java.lang.IllegalArgumentException: RESTEASY003340: Failure parsing MediaType string: xml
        at org.jboss.resteasy.plugins.delegates.MediaTypeHeaderDelegate.parse(MediaTypeHeaderDelegate.java:115) [resteasy-jaxrs.jar:3.0.19.SP1-redhat-1]
        at org.jboss.resteasy.plugins.delegates.MediaTypeHeaderDelegate.fromString(MediaTypeHeaderDelegate.java:20) [resteasy-jaxrs.jar:3.0.19.SP1-redhat-1]
        at javax.ws.rs.core.MediaType.valueOf(MediaType.java:179) [jboss-jaxrs-api_2.0_spec.jar:1.0.0.Final-redhat-1]

Expected results:

It is arguable if the server should accept the request, as 'xml' isn't really a valid content type. But the server used to accept it in previous versions, so it shouldn't reject it now.

Additional info:

The 'ovirt' gem should also be fixed to send 'application/xml' instead of just 'xml':


A workaround for the issue could be to configure the web server to replace the 'xml' with 'application/xml', something like this:

  # cat >> /etc/httpd/conf.d/fix-api-content-type.conf <<.
  <Location /ovirt-engine/api>
    RequestHeader edit ^xml$ application/xml
    RequestHeader edit ^xml$ application/xml

I haven't tested this workaround.
Comment 1 Juan Hernández 2017-06-29 10:35:47 EDT
The workaround should be for the 'Content-Type' and 'Accept' headers:

  RequestHeader Content-Type edit ...
  RequestHeader Accept edit ...
Comment 2 Juan Hernández 2017-07-03 04:51:19 EDT
Verified that the suggested workaround works correctly:

  # cat >> /etc/httpd/conf.d/fix-api-content-type.conf <<.
  <Location /ovirt-engine/api>
    RequestHeader edit Content-Type ^xml$ application/xml
    RequestHeader edit Accept ^xml$ application/xml
  # systemctl restart httpd
Comment 3 Juan Hernández 2017-07-03 08:02:16 EDT
There is no change in behaviour in EAP 7, it has always rejected 'xml' as a valid content type. The change in behaviour is caused by the replacement in CFME of the 'mime-types' gem with 'mini_mime':

  Stub mini-mime in for mime-types

The difference is that 'mime_types' doesn't convert 'xml' to 'application/xml', which is expected by 'rest-client' and also by the 'ovirt' gem:

  # Produces nil:
  require 'mini_mime'

  # Produces application/xml:

This has been merged only to the CFME master branch, and not backported, so it won't affect released versions of CFME. I think that this can now be closed. We will still need to modify the 'ovirt' gem to explicitly use 'application/xml', but only for the master branch of CFME.

Note You need to log in before you can comment on or make changes to this bug.