Reply to Message

View discussion in a popup

Replying to:
kphan1
Contributor
Contributor

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.

Reply
0 Kudos