Aaron Sowry - 2009-03-16

I upgraded from ZSI 2.0 to the latest CVS in order to fix a couple of serialization bugs which were causing me problems. The upgrade fixed the bugs, but my client script to interface with VMware vCenter now fails with a different error:

-----
...
File "/opt/thinlinc/modules/thinlinc/VimService_client.py", line 61, in RetrieveProperties
    response = self.binding.Receive(RetrievePropertiesResponseMsg.typecode)
  File "/opt/thinlinc/modules/ZSI/client.py", line 536, in Receive
    return _Binding.Receive(self, replytype, **kw)
  File "/opt/thinlinc/modules/ZSI/client.py", line 461, in Receive
    reply = self.ps.Parse(tc)
  File "/opt/thinlinc/modules/ZSI/parse.py", line 326, in Parse
    return how.parse(self.body_root, self)
  File "/opt/thinlinc/modules/ZSI/TCcompound.py", line 196, in parse
    value = what.parse(c_elt, ps)
  File "/opt/thinlinc/modules/ZSI/TCcompound.py", line 196, in parse
    value = what.parse(c_elt, ps)
  File "/opt/thinlinc/modules/ZSI/TCcompound.py", line 196, in parse
    value = what.parse(c_elt, ps)
  File "/opt/thinlinc/modules/ZSI/TC.py", line 1381, in parse
    pyobj = Any().parse_into_dict_or_list(elt, ps)
  File "/opt/thinlinc/modules/ZSI/TC.py", line 545, in parse_into_dict_or_list
    v.append((str(c_elt.localName), self.__class__(**self.kwargs).parse(c_elt, ps)))
  File "/opt/thinlinc/modules/ZSI/TC.py", line 577, in parse
    return self.parse_into_dict_or_list(elt, ps)
  File "/opt/thinlinc/modules/ZSI/TC.py", line 545, in parse_into_dict_or_list
    v.append((str(c_elt.localName), self.__class__(**self.kwargs).parse(c_elt, ps)))
  File "/opt/thinlinc/modules/ZSI/TC.py", line 550, in parse
    (ns,type) = self.checkname(elt, ps)
  File "/opt/thinlinc/modules/ZSI/TC.py", line 201, in checkname
    return self.checktype(elt, ps)
  File "/opt/thinlinc/modules/ZSI/TC.py", line 219, in checktype
    ps.Backtrace(elt))
ZSI.EvaluateException: Malformed type attribute (bad NS)
[Element trace: /soapenv:Envelope/soapenv:Body/RetrievePropertiesResponse/returnval/propSet[3]/val/hardware/device[1]]
-----

This only happens when calling the RetrieveProperties method, and didn't happen with ZSI 2.0.

I notice that the Binding class in client.py now has a 'namespace' argument, whereas it didn't in 2.0 - do I need to be passing anything extra somewhere? The SOAP trace is massive so I won't post it here unless someone needs it.

Any ideas?