[libvirt-users] libvirt + ESX (HTTP response code 400 for call to 'Login')

Matthias Bolte matthias.bolte at googlemail.com
Thu Mar 3 21:52:58 UTC 2011


2011/3/3 Hereward Cooper <hereward.cooper at iomart.com>:
> Hi folks,
>
> I'm trying to connect to a vSphere cluster using the information from
> the libvirt documentation.
>
>
> -------------------
> $ virsh -c
> "vpx://root@10.51.4.11/dc1/dc1-cluster-e01/dc1-vsphere-e04/?no_verify=1"
>
> Enter root's password for 10.51.4.11:
> error: internal error HTTP response code 400 for call to 'Login'
> error: failed to connect to the hypervisor
> -------------------
>
> I seem to be able to establish a connection, but it fails with a "HTTP
> code 400". If I provide the incorrect password it fails with a 'login
> credentials' error, so it looks like I am getting a connection, but it's
> failing for another reason.

400 means bad request. You probably have a character in you password
that needs to be escaped in XML: <, >, &, ', "

libvirt currently doesn't escape the password properly when building
the SOAP request. You can manually workaround this by entering the
password in escaped form. For example when your password is some&word
enter some&word instead.

I posted a patch to fix this:

https://www.redhat.com/archives/libvir-list/2011-March/msg00118.html

> Wireshark is no help as it's all done over SSL/TLS.

By default libvirt uses HTTPS to talk to vSphere server. You can
disable TLS by using the transport=http query parameter like this

virsh -c "vpx://root@10.51.4.11/dc1/dc1-cluster-e01/dc1-vsphere-e04/?no_verify=1&transport=http"

But you'll have to configure the vCenter server to accept HTTP
connections if you want use this.

Matthias




More information about the libvirt-users mailing list