fence_vmware_soap does not function correctly against vSphere 5 SOAP API

Solution Verified - Updated

Environment

  • Red Hat Enterprise Linux Server 5 (with the High Availability Add on)
  • Red Hat Enterprise Linux Server 6 (with the High Availability Add on)
  • VMware vSphere 5.0

Issue

  • Custer member hung due to failed fencing after upgrading to VSphere5.
  • fence_vmware_soap does not function correctly against vSphere 5 SOAP API and a backtrace occurs when the command is run:
# fence_vmware_soap -o list -a <vCenter> -l <logon> -p <password> -z

No handlers could be found for logger "suds.xsd.sxbasic"
Traceback (most recent call last):
  File "/usr/sbin/fence_vmware_soap", line 175, in <module>
    main()
  File "/usr/sbin/fence_vmware_soap", line 160, in main
    conn = soap_login(options)
  File "/usr/sbin/fence_vmware_soap", line 24, in soap_login
    conn = Client(url + "/vimService.wsdl")
  File "/usr/lib/python2.6/site-packages/suds/client.py", line 112, in __init__
    self.wsdl = reader.open(url)
  File "/usr/lib/python2.6/site-packages/suds/reader.py", line 152, in open
    d = self.fn(url, self.options)
  File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 157, in __init__
    self.open_imports()
  File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 202, in
open_imports
    imp.load(self)
  File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 314, in load
    d = Definitions(url, options)
  File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 159, in __init__
    self.build_schema()
  File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 220, in
build_schema
    self.schema = container.load(self.options)
  File "/usr/lib/python2.6/site-packages/suds/xsd/schema.py", line 93, in load
    child.open_imports(options)
  File "/usr/lib/python2.6/site-packages/suds/xsd/schema.py", line 305, in
open_imports
    imported = imp.open(options)
  File "/usr/lib/python2.6/site-packages/suds/xsd/sxbasic.py", line 542, in
open
    result = self.download(options)
  File "/usr/lib/python2.6/site-packages/suds/xsd/sxbasic.py", line 567, in
download
    raise Exception(msg)
Exception: imported schema (urn:reflect) at
(https://server:443/sdk/reflect-messagetypes.xsd),
failed

Resolution

In order to use the SOAP fencing method in vSphere 5.0, the complete WSDL schema files will need to be installed as described in VMware KB article
Content from kb.vmware.com is not included.vSphere Web Services SDK WSDL files obtained directly from vCenter Server are not complete

VMware is aware of this issue and is expecting to provide a complete set of schema files in a forthcoming service pack for vSphere v5.0. In the meantime, customers can follow the above workaround to enable proper functioning of the SOAP fencing agent.

See the following article for more information on supported fence device on virtual machines:Support Policies for RHEL High Availability Clusters.

Root Cause

Two WDSL schema files are missing from the normal install, causing SOAP API calls to return a failure when loading the schema off the server.

VMware is aware of the issue and it is documented in: Content from www.vmware.com is not included.vSphere Web Services SDK 5.0 Release Notes.

Diagnostic Steps

Review the general Diagnostic Steps for fence_vmware_soap

SBR
Components

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.