Bug 1545706

Summary: python3-suds: Unable to resolve WSDL method name
Product: [Fedora] Fedora Reporter: Oyvind Albrigtsen <oalbrigt>
Component: python3-sudsAssignee: Orion Poplawski <orion>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 27CC: orion
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-06-15 13:19:35 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1485056    

Description Oyvind Albrigtsen 2018-02-15 13:57:39 UTC
Description of problem:
python3-suds fails to resolve WSDL method names, which works fine with python2-suds.

Version-Release number of selected component (if applicable):
python3-suds-0.7-0.5.94664ddd46a6.fc27.noarch

How reproducible:
100%

Steps to Reproduce:
1. conn.service.<methodname> fails to resolve.
2.
3.

Actual results:
Link to code where it fails: https://github.com/ClusterLabs/fence-agents/blob/master/fence/agents/vmware_soap/fence_vmware_soap.py#L128

Traceback (most recent call last):
  File "./fence_vmware_soap", line 259, in <module>
    main()
  File "./fence_vmware_soap", line 253, in main
    result = fence_action(conn_global, options_global, set_power_status, get_power_status, get_power_status)
  File "/usr/share/fence/fencing.py", line 881, in fence_action
    status = get_multi_power_fn(connection, options, get_power_fn)
  File "/usr/share/fence/fencing.py", line 749, in get_multi_power_fn
    plug_status = get_power_fn(connection, options)
  File "./fence_vmware_soap", line 127, in get_power_status
    raw_machines = conn.service.RetrievePropertiesEx(mo_PropertyCollector, propFilterSpec)
  File "/usr/lib/python3.6/site-packages/suds/client.py", line 566, in __call__
    return client.invoke(args, kwargs)
  File "/usr/lib/python3.6/site-packages/suds/client.py", line 705, in invoke
    result = self.send(soapenv)
  File "/usr/lib/python3.6/site-packages/suds/client.py", line 753, in send
    return self.process_reply(reply.message, None, None)
  File "/usr/lib/python3.6/site-packages/suds/client.py", line 814, in process_reply
    raise WebFault(fault, replyroot)
suds.WebFault: Server raised fault: 'Unable to resolve WSDL method name RetrievePropertiesEx for namespace name urn:vim25

while parsing SOAP body
at line 1, column 264

while parsing SOAP envelope
at line 1, column 38

while parsing HTTP request before method was determined
at line 1, column 0'

Expected results:
Works fine, like with python2-suds.

Additional info:

Comment 1 Oyvind Albrigtsen 2018-06-15 13:19:35 UTC
I was able to solve the issue by setting the SOAPAction manually (this was done automatically for the Python 2 version of the library).