Hello everyone.
I've been working on getting Cisco Call Manager's AXL working with Python and have been running into an issue. I've spent hours beating my head against it, so I figured it's time to request an outside opinion to see if you can offer any insight.
My sanitized code is below:
from suds.client import Client from suds.transport.https import HttpAuthenticated import logging
logging.basicConfig(level=logging.CRITICAL) logging.getLogger('suds.client').setLevel(logging.DEBUG) logging.getLogger('suds.transport').setLevel(logging.CRITICAL) logging.getLogger('suds.xsd.schema').setLevel(logging.CRITICAL) logging.getLogger('suds.wsdl').setLevel(logging.CRITICAL)
service = 'https://IPADDRESS:PORT/axl/'
wsdl = 'file:///PATH/TO/LOCAL/WSDL/AXLAPI.wsdl'
username = "username"
password = "password"
client = Client(wsdl, location = service, transport = HttpAuthenticated(username = username, password = password))
name = "NAME_DP"
tags = ["regionName"]
print "<THIS IS A LISTDEVICEPOOL REQUEST>" dp = client.factory.create('ns0:ListDevicePoolReq')dp.searchCriteria.name = name dp.returnedTags = tags result = client.service.listDevicePool(dp) print "<THIS IS THE RESULT>" print result
The issue is the soap output ends up being:
DEBUG:suds.client:headers = {'SOAPAction': u'"CUCM:DB ver=8.5 listDevicePool"', 'Content-Type': 'text/xml; charset=utf-8'} ERROR:suds.client:<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:ns0="http://www.cisco.com/AXL/API/8.5" xmlns:ns1="http: //schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchem a-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/%22%3E SOAP-ENV:Header/ ns1:Body ns0:listDevicePool <searchCriteria> <searchCriteria> <name>NAME_DP</name> </searchCriteria> <returnedTags>regionName</returnedTags> </searchCriteria> </ns0:listDevicePool> </ns1:Body> </SOAP-ENV:Envelope> DEBUG:suds.client:http failed: <?xml version='1.0' encoding='utf-8'?>soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"soapenv:Bodysoapenv:Fault<faultcode>soapen v:Server</faultcode><faultstring>Usage: Required returnedTags as empty tag or sh ould contain requested tags</faultstring><detail><axlError><axlcode>5003</axlcod e><axlmessage>Usage: Required returnedTags as empty tag or should contain reques ted tags</axlmessage><request>listDevicePool</request></axlError></detail></soap env:Fault></soapenv:Body></soapenv:Envelope> Traceback (most recent call last): File "C:\Users\C53170\Desktop\sudstest\barebones.py", line 39, in <module> result = client.service.listDevicePool(dp) File "C:\Python27\lib\site-packages\suds\client.py", line 542, in __call__ return client.invoke(args, kwargs) File "C:\Python27\lib\site-packages\suds\client.py", line 602, in invoke result = self.send(soapenv) File "C:\Python27\lib\site-packages\suds\client.py", line 649, in send result = self.failed(binding, e) File "C:\Python27\lib\site-packages\suds\client.py", line 702, in failed r, p = binding.get_fault(reply) File "C:\Python27\lib\site-packages\suds\bindings\binding.py", line 265, in ge t_fault raise WebFault(p, faultroot) suds.WebFault: Server raised fault: 'Usage: Required returnedTags as empty tag or should contain requested tags'
As you can see, it's nesting everything inside the searchCriteria attribute, which results in the returnedTags attribute being seen as part of the searchCriteria. I'm having trouble discovering why, or determining how to correct it. Is this a problem with how the wsdl is imported?
If you need to see the wsdl, or the xsd file that are imported, they are available here:
https://drive.google.com/folderview?id=0B77GcO0-dre7bjhjWkZXYThYbW8&usp=...
Thank you in advance for your assistance!