<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic SUDS Issue adding Phone via Python in Management</title>
    <link>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441352#M403</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to add a phone with Python via AXL using SUDS/SUDS-jurko&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Python version = 3.4&lt;/P&gt;&lt;P&gt;SUDS-Jurko - 0.6&lt;/P&gt;&lt;P&gt;AXL WSDL = 10.0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am running into an issue where the CUCM "class" element needed to add a phone is being converted (I think by SUDS) to "cls" (I think b/c "class" is a keyword in Python).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;The WSDL has a "class" element:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p3"&gt;&amp;lt;xsd:element &lt;SPAN class="s2"&gt;maxOccurs=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"1" &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;minOccurs=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"1" &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;name=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"class" &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;nillable=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"false" &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;type=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"axlapi:XClass"&lt;/SPAN&gt;&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsd:annotation&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsd:documentation&amp;gt;&lt;SPAN class="s4"&gt;Class ID string. Class information is read-only except when creating a device.&lt;/SPAN&gt;&amp;lt;/xsd:documentation&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsd:annotation&amp;gt;&lt;BR /&gt; &amp;lt;/xsd:element&amp;gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p3"&gt;&amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:simpleType &lt;SPAN class="s2"&gt;name=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"XClass"&lt;/SPAN&gt;&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:restriction &lt;SPAN class="s2"&gt;base=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"xsd:string"&lt;/SPAN&gt;&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Phone"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Gateway"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Conference Bridge"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Media Termination Point"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Route List"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Voice Mail"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"CTI Route Point"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Music On Hold"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Simulation"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Pilot"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"GateKeeper"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Add-on modules"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Hidden Phone"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Trunk"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Tone Announcement Player"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Remote Destination Profile"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"EMCC Base Phone Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"EMCC Base Phone"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Remote Destination Profile Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Gateway Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"UDP Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Phone Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Device Profile"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Invalid"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;/&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:restriction&amp;gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;SUDS is converting the element name to "cls" instead of "class", which is not found and the request fails:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;DEBUG:suds.mx.core:appending parent:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;lt;phone uuid="{1016D6D4-60CF-EEC0-92D7-731B8187894F}" ctiid="2442"&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;CSF1&amp;lt;/name&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Jabber Template for Migration&amp;lt;/description&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;product&amp;gt;Cisco Unified Client Services Framework&amp;lt;/product&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;model&amp;gt;Cisco Unified Client Services Framework&amp;lt;/model&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;lt;/phone&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;content:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;(Content){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; tag = "cls"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; value = "Phone"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;DEBUG:suds.mx.literal:starting content:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;(Content){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; tag = "cls"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; value = "Phone"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;DEBUG:suds.resolver:searching parent (&amp;lt;Complex:0x10e801c18 name="RPhone" /&amp;gt;) for (cls)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;Traceback (most recent call last):&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "getPhone.py", line 94, in &amp;lt;module&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.service.addPhone(jabberObject['return'])&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/client.py", line 521, in __call__&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return client.invoke(args, kwargs)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/client.py", line 576, in invoke&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; soapenv = binding.get_message(self.method, args, kwargs)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/binding.py", line 109, in get_message&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; content = self.bodycontent(method, args, kwargs)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/document.py", line 95, in bodycontent&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add_param, self.options().extraArgumentErrors)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/argparser.py", line 83, in parse_args&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return arg_parser(args, kwargs, extra_parameter_errors)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/argparser.py", line 108, in __call__&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.__process_parameters()&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/argparser.py", line 299, in __process_parameters&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.__process_parameter(*pdef)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/argparser.py", line 294, in __process_parameter&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.__in_choice_context(), value)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/document.py", line 86, in add_param&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p = self.mkparam(method, pdef, value)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/document.py", line 130, in mkparam&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Binding.mkparam(self, method, pdef, object)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/binding.py", line 225, in mkparam&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return marshaller.process(content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/core.py", line 59, in process&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.append(document, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/core.py", line 72, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.appender.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 88, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; appender.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 229, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Appender.append(self, child, cont)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 168, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.marshaller.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/core.py", line 72, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.appender.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 88, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; appender.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 229, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Appender.append(self, child, cont)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 168, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.marshaller.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/core.py", line 71, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.start(content):&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/literal.py", line 86, in start&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise TypeNotFound(content.tag)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;suds.TypeNotFound: Type not found: 'cls'&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p5"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Here is the call triggering the error, which is a request to add a device to CUCM:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p6"&gt;&lt;/P&gt;&lt;P class="p7"&gt;&amp;nbsp; client.service.addPhone(jabberObject['return'])&lt;/P&gt;&lt;P class="p6"&gt;&lt;/P&gt;&lt;P class="p7"&gt;This is what is being returned via the SUDS object:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;**********DEBUG Jabber = ********************&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt; (reply){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; return = &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (return){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phone = &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RPhone){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _ctiid = 2442&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _uuid = "{1016D6D4-60CF-EEC0-92D7-731B8187894F}"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name = "CSF1"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; description = "Jabber Template for Migration"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; product = "Cisco Unified Client Services Framework"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; model = "Cisco Unified Client Services Framework"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cls = "Phone"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protocol = "SIP"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protocolSide = "User"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; callingSearchSpaceName = &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p6"&gt;&lt;/P&gt;&lt;P class="p6"&gt;&lt;/P&gt;&lt;P class="p6"&gt;//SEE THAT "CLASS" IS CONVERTED TO "CLS"&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 14 Apr 2016 21:47:10 GMT</pubDate>
    <dc:creator>Aaron Dhiman</dc:creator>
    <dc:date>2016-04-14T21:47:10Z</dc:date>
    <item>
      <title>SUDS Issue adding Phone via Python</title>
      <link>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441352#M403</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to add a phone with Python via AXL using SUDS/SUDS-jurko&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Python version = 3.4&lt;/P&gt;&lt;P&gt;SUDS-Jurko - 0.6&lt;/P&gt;&lt;P&gt;AXL WSDL = 10.0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am running into an issue where the CUCM "class" element needed to add a phone is being converted (I think by SUDS) to "cls" (I think b/c "class" is a keyword in Python).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;The WSDL has a "class" element:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p3"&gt;&amp;lt;xsd:element &lt;SPAN class="s2"&gt;maxOccurs=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"1" &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;minOccurs=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"1" &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;name=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"class" &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;nillable=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"false" &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;type=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"axlapi:XClass"&lt;/SPAN&gt;&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsd:annotation&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsd:documentation&amp;gt;&lt;SPAN class="s4"&gt;Class ID string. Class information is read-only except when creating a device.&lt;/SPAN&gt;&amp;lt;/xsd:documentation&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsd:annotation&amp;gt;&lt;BR /&gt; &amp;lt;/xsd:element&amp;gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p3"&gt;&amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:simpleType &lt;SPAN class="s2"&gt;name=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"XClass"&lt;/SPAN&gt;&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:restriction &lt;SPAN class="s2"&gt;base=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"xsd:string"&lt;/SPAN&gt;&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Phone"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Gateway"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Conference Bridge"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Media Termination Point"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Route List"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Voice Mail"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"CTI Route Point"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Music On Hold"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Simulation"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Pilot"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"GateKeeper"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Add-on modules"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Hidden Phone"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Trunk"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Tone Announcement Player"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Remote Destination Profile"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"EMCC Base Phone Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"EMCC Base Phone"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Remote Destination Profile Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Gateway Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"UDP Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Phone Template"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Device Profile"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:enumeration &lt;SPAN class="s2"&gt;value=&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;"Invalid"&lt;/SPAN&gt;/&amp;gt;&lt;BR /&gt; &amp;lt;/&lt;SPAN class="s5"&gt;xsd&lt;/SPAN&gt;:restriction&amp;gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;SUDS is converting the element name to "cls" instead of "class", which is not found and the request fails:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;DEBUG:suds.mx.core:appending parent:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;lt;phone uuid="{1016D6D4-60CF-EEC0-92D7-731B8187894F}" ctiid="2442"&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;CSF1&amp;lt;/name&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Jabber Template for Migration&amp;lt;/description&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;product&amp;gt;Cisco Unified Client Services Framework&amp;lt;/product&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;model&amp;gt;Cisco Unified Client Services Framework&amp;lt;/model&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;lt;/phone&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;content:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;(Content){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; tag = "cls"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; value = "Phone"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;DEBUG:suds.mx.literal:starting content:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;(Content){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; tag = "cls"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; value = "Phone"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;DEBUG:suds.resolver:searching parent (&amp;lt;Complex:0x10e801c18 name="RPhone" /&amp;gt;) for (cls)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;Traceback (most recent call last):&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "getPhone.py", line 94, in &amp;lt;module&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.service.addPhone(jabberObject['return'])&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/client.py", line 521, in __call__&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return client.invoke(args, kwargs)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/client.py", line 576, in invoke&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; soapenv = binding.get_message(self.method, args, kwargs)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/binding.py", line 109, in get_message&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; content = self.bodycontent(method, args, kwargs)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/document.py", line 95, in bodycontent&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add_param, self.options().extraArgumentErrors)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/argparser.py", line 83, in parse_args&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return arg_parser(args, kwargs, extra_parameter_errors)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/argparser.py", line 108, in __call__&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.__process_parameters()&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/argparser.py", line 299, in __process_parameters&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.__process_parameter(*pdef)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/argparser.py", line 294, in __process_parameter&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.__in_choice_context(), value)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/document.py", line 86, in add_param&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p = self.mkparam(method, pdef, value)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/document.py", line 130, in mkparam&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Binding.mkparam(self, method, pdef, object)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/bindings/binding.py", line 225, in mkparam&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return marshaller.process(content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/core.py", line 59, in process&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.append(document, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/core.py", line 72, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.appender.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 88, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; appender.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 229, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Appender.append(self, child, cont)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 168, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.marshaller.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/core.py", line 72, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.appender.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 88, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; appender.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 229, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Appender.append(self, child, cont)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/appender.py", line 168, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.marshaller.append(parent, content)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/core.py", line 71, in append&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.start(content):&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp; File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/suds/mx/literal.py", line 86, in start&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise TypeNotFound(content.tag)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;suds.TypeNotFound: Type not found: 'cls'&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p5"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Here is the call triggering the error, which is a request to add a device to CUCM:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p6"&gt;&lt;/P&gt;&lt;P class="p7"&gt;&amp;nbsp; client.service.addPhone(jabberObject['return'])&lt;/P&gt;&lt;P class="p6"&gt;&lt;/P&gt;&lt;P class="p7"&gt;This is what is being returned via the SUDS object:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;**********DEBUG Jabber = ********************&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt; (reply){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; return = &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (return){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phone = &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RPhone){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _ctiid = 2442&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _uuid = "{1016D6D4-60CF-EEC0-92D7-731B8187894F}"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name = "CSF1"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; description = "Jabber Template for Migration"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; product = "Cisco Unified Client Services Framework"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; model = "Cisco Unified Client Services Framework"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cls = "Phone"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protocol = "SIP"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protocolSide = "User"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; callingSearchSpaceName = &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p6"&gt;&lt;/P&gt;&lt;P class="p6"&gt;&lt;/P&gt;&lt;P class="p6"&gt;//SEE THAT "CLASS" IS CONVERTED TO "CLS"&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Apr 2016 21:47:10 GMT</pubDate>
      <guid>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441352#M403</guid>
      <dc:creator>Aaron Dhiman</dc:creator>
      <dc:date>2016-04-14T21:47:10Z</dc:date>
    </item>
    <item>
      <title>Re: SUDS Issue adding Phone via Python</title>
      <link>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441353#M404</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You may have to try working with the WSDL consumer framework developer to identify a workaround, or given the source maybe you can reverse-engineer one.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FWIW, if this is just a small POC or similar, it's not necessary to use the WSDL+compile path, you can just treat the AXL requests as XML over HTTP and build requests using XML objects or via simple text manipulation (XML template generated via soapUI:)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;for i in xrange(1,33):&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xml="""&amp;lt;soapenv:Envelope xmlns:soapenv="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://schemas.xmlsoap.org/soap/envelope/" rel="nofollow" target="_blank"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/A&gt;&lt;SPAN&gt;" xmlns:ns="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://www.cisco.com/AXL/API/10.5" rel="nofollow" target="_blank"&gt;http://www.cisco.com/AXL/API/10.5&lt;/A&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soapenv:Header/&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soapenv:Body&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ns:addLine&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;line&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pattern&amp;gt;1{0}&amp;lt;/pattern&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/line&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ns:addLine&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/soapenv:Body&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/soapenv:Envelope&amp;gt;""".format(str(i).zfill(3) )&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; headers = {'Content-Type': 'text/xml',&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'SOAPAction': '"CUCM:DB ver=10.5 addLine"'&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; req=requests.post('&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://'+host+':8443'+'/axl/" rel="nofollow" target="_blank"&gt;https://'+host+':8443'+'/axl/&lt;/A&gt;&lt;SPAN&gt;', auth=(userName,password), data=xml, headers=headers, verify=False)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Apr 2016 14:32:29 GMT</pubDate>
      <guid>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441353#M404</guid>
      <dc:creator>dstaudt</dc:creator>
      <dc:date>2016-04-15T14:32:29Z</dc:date>
    </item>
    <item>
      <title>Re: SUDS Issue adding Phone via Python</title>
      <link>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441354#M405</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I ran into this same problem. My idea was to do a "getPhone" or "getDeviceProfile" request, modify attributes of the returned object, and then perform an "update" request using that object. To try and workaround this, I even went as far as to create a new object, translate the old object to a dictionary so I could iterate over it better, and copy all of the attributes that were present (some attributes aren't listed in the AXL Scheme for an update request).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;from &lt;/SPAN&gt;suds.sudsobject &lt;SPAN style="color: #000080; font-weight: bold;"&gt;import &lt;/SPAN&gt;asdict&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;newdp = client.factory.create(&lt;SPAN style="color: #008000; font-weight: bold;"&gt;'ns0:XDeviceProfile'&lt;/SPAN&gt;)&lt;/P&gt;&lt;P&gt;olddp = client.service.getDeviceProfile(&lt;SPAN style="color: #660099;"&gt;name&lt;/SPAN&gt;=&lt;SPAN style="color: #008000; font-weight: bold;"&gt;'TEST123'&lt;/SPAN&gt;)[1]['return'].deviceProfile&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;## Convert deviceProfile object to a dict. Maybe not necessary....&lt;/P&gt;&lt;P&gt;d = asdict(olddp)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;for &lt;/SPAN&gt;item &lt;SPAN style="color: #000080; font-weight: bold;"&gt;in &lt;/SPAN&gt;d:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Check if the particular key is also in the factory created object, if not skip the loop&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;if &lt;/SPAN&gt;&lt;SPAN style="color: #000080;"&gt;hasattr&lt;/SPAN&gt;(newdp, item):&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newdp[item] = d[item]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;elif &lt;/SPAN&gt;item &lt;SPAN style="color: #000080; font-weight: bold;"&gt;is &lt;/SPAN&gt;&lt;SPAN style="color: #008000; font-weight: bold;"&gt;'cls'&lt;/SPAN&gt;:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Change the "cls" to "class"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newdp[&lt;SPAN style="color: #008000; font-weight: bold;"&gt;'class'&lt;/SPAN&gt;] = d[item]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem I ran into after this, is basically it was sending out a SOAP request with the entire object contents as text within the &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt; tags, which returned a "could not find object NAME123DescriptionCommonPhoneProfile", etc. In the end I realised, there isn't much sense in doing this for an update object anyway, since I could more simply perform an update specifying only the tags I want. I don't need to import every attribute again.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you're just trying to add a device, you can use the factory.create method, modify the object, and then send an "add" request. i.e.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffe4ff;"&gt;dp&lt;/SPAN&gt; = client.factory.create(&lt;SPAN style="color: #008000; font-weight: bold;"&gt;'ns0:XDeviceProfile'&lt;/SPAN&gt;)&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #e4e4ff;"&gt;dp&lt;/SPAN&gt;.name = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"NAME"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="background-color: #e4e4ff;"&gt;dp&lt;/SPAN&gt;.description = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"Description"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="background-color: #e4e4ff;"&gt;dp&lt;/SPAN&gt;.protocol = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"SIP"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="background-color: #e4e4ff;"&gt;dp&lt;/SPAN&gt;.product = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"Cisco 7965"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="background-color: #e4e4ff;"&gt;dp&lt;/SPAN&gt;.protocolSide = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"User"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="background-color: #e4e4ff;"&gt;dp&lt;/SPAN&gt;.phoneTemplateName.value = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"Standard 7965 SIP"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="background-color: #e4e4ff;"&gt;dp&lt;/SPAN&gt;[&lt;SPAN style="color: #008000; font-weight: bold;"&gt;'class'&lt;/SPAN&gt;] = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"Device Profile"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008000; font-weight: bold;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;client.service.addDeviceProfile(&lt;SPAN style="background-color: #e4e4ff;"&gt;dp&lt;/SPAN&gt;)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you can see, I still needed to refer to the &amp;lt;class&amp;gt; tags differently to the rest, but this works for me. Also the method I wrote above works for building an XDeviceProfile object and copying all the attributes from a getDeviceProfile request.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm still pretty new at this too, so there's probably much nicer ways.....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FYI I'm using Python 2.7, suds-jurko 6.0 and AXL Schema 10.5&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Apr 2016 20:25:49 GMT</pubDate>
      <guid>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441354#M405</guid>
      <dc:creator>Paul Tursan d'Espaignet</dc:creator>
      <dc:date>2016-04-29T20:25:49Z</dc:date>
    </item>
    <item>
      <title>Re: SUDS Issue adding Phone via Python</title>
      <link>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441355#M406</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; I have been able to add a standard UDP using the suds Client.Service method (I havent used the factory create as yet) as this was a quick test.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The below code adds a device successfully on CUCM v11, python 3.4, suds Jurko 0.6 -&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;client = Client(&lt;SPAN style="color: #aa4926;"&gt;location&lt;/SPAN&gt;=url&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #aa4926;"&gt;url&lt;/SPAN&gt;=wsdl1&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #aa4926;"&gt;retxml&lt;/SPAN&gt;=&lt;SPAN style="color: #cc7832; font-weight: bold;"&gt;True&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #aa4926;"&gt;username&lt;/SPAN&gt;=username&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #aa4926;"&gt;password&lt;/SPAN&gt;=password)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;x = client.service.addDeviceProfile({&lt;SPAN style="color: #008080;"&gt;'name'&lt;/SPAN&gt;: &lt;SPAN style="color: #008080;"&gt;'TEST_UDP_5702_7965'&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;'description'&lt;/SPAN&gt;: &lt;SPAN style="color: #008080;"&gt;'Mitch Test UDP SOAP'&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;'product'&lt;/SPAN&gt;: &lt;SPAN style="color: #008080;"&gt;'Cisco 7965'&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;'protocol'&lt;/SPAN&gt;: &lt;SPAN style="color: #008080;"&gt;'SCCP'&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;'class'&lt;/SPAN&gt;: &lt;SPAN style="color: #008080;"&gt;'Device Profile'&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;'phoneTemplateName'&lt;/SPAN&gt;: &lt;SPAN style="color: #008080;"&gt;'Standard 7965 SCCP'&lt;/SPAN&gt;})&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #8888c6;"&gt;print(x)&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 May 2016 22:19:43 GMT</pubDate>
      <guid>https://community.cisco.com/t5/management/suds-issue-adding-phone-via-python/m-p/3441355#M406</guid>
      <dc:creator>mitchdawson</dc:creator>
      <dc:date>2016-05-12T22:19:43Z</dc:date>
    </item>
  </channel>
</rss>

