2011/3/3 Hereward Cooper <hereward.cooper(a)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