- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quote from stumpr: "Looks like you just found a bug with the wsdl files on the web server root, but I suspect your error is related to your code not a missing implementation of the soap call."
I agree, I don't believe the problem is a missing implementation of the method, and the subject line of my original post probably should have been RetrieveProperties method missing from WSDL?
But the error is not in our code. The existing code calls RetrieveProperties on 4.0 hosts without any issues, it is only an issue when connecting to 4.1 hosts. I've downloaded the 4.0 and 4.1 vimService.wsdl and vim.wsdl files and did a general comparison:
$ ll \*/\*.wsdl
-rw-rr 1 user group 545 Jul 29 15:16 4.0/vimService.wsdl
-rw-rr 1 user group 1924904 Jul 29 15:16 4.0/vim.wsdl
-rw-rr 1 user group 545 Jul 29 15:12 4.1/vimService.wsdl
-rw-rr 1 user group 871114 Jul 29 15:12 4.1/vim.wsdl
$ wc -l \*/\*.wsdl
16 4.0/vimService.wsdl
42128 4.0/vim.wsdl
16 4.1/vimService.wsdl
19140 4.1/vim.wsdl
61300 total
The file sizes and line counts for the vim.wsdl file are significantly different from version 4.0 to 4.1; alone this may not mean anything, however, coupled with the fact that we can agree that the RetrieveProperties and RetrievePropertiesEx methods are missing from the 4.1 WSDL, we can probably say that the 4.1 WSDL is not correct.
And while I belive that the PHP5 SoapClient has its problems, we can't really fault it for issuing a SoapFault when I try to call a method that's not there (according to the WSDL).
So for the time being, here's the temporary solution that we've come up with:
a. downloaded the 4.0 vimService.wsdl and vim.wsdl files
b. changed how the SoapClient is created
Before:
$soapClient = new SoapClient('https://4.1.0.hostIp/sdk/vimService.wsdl');
After:
$soapClient = new SoapClient('/local/path/to/4.0.0/vimService.wsdl', array('location' => '4.1.0.hostIp'));
Basically, we're still having the SoapClient load the 4.0 WSDL but connecting to a 4.1 host. This works. The services on the 4.1 hosts are still there, but because the WSDL located on the host is incorrect, if we load that WSDL, we can't access that functionality.
At this point I think it is VMWare's responsibility to review the 4.1 WSDL and correct any problems with it and make that a downloadable patch for 4.1 hosts.