VictoOn 01.08.2013 13:33, daniele visaggio wrote:
Is this a bug or simply a feature still missing from suds?Basically it seems to me that UpdateRoutePartitionReq should inherit the tags defined inside NameAndGUIDRequest xml object and this is not happening.In fact, "name" and "uuid" tags are present inside the xml request generated by soapui application.andIn fact NameAndGUIDRequest contains the the following tag:From what I understood, this means that the UpdateRoutePartitionReq message should be built extending the NameAndGUIDRequest xml structure.Victor,I got your point but I believe suds is still not building the correct xml request. It is true that the "name" argument is not listed there but inside the xsd method definition there is the following tag:
<xsd:extension base='axlapi:NameAndGUIDRequest'>
<xsd:element name="name" type="axlapi:String100" nillable="false">
<xsd:element name="uuid" type="axlapi:XUUID" nillable="false">
2013/8/1 Victor Varvaryuk <victor.varvariuc@gmail.com>
You wrote:In your WSDL i don't see "name" argument:
From soapui I see that the correct xml should be:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/8.5">
<soapenv:Header/>
<soapenv:Body>
<ns:updateRoutePartition sequence="?">
<name>?</name> <---- missing tag!
<newName>?</newName>
<description>?</description>
</ns:updateRoutePartition>
</soapenv:Body>
</soapenv:Envelope>
Is there a way to overcome this issue? why suds is showing me a method with a missing argument?
<xsd:complexType name='UpdateRoutePartitionReq'>So, looks like suds is behaving correctly not passing "name", because it's listed in expected arguments.
<xsd:complexContent></xsd:complexType>
</xsd:complexContent><xsd:extension base='axlapi:NameAndGUIDRequest'> ---> probably the problem lies here, since this xml request is not added to the soap request
<xsd:sequence></xsd:extension>
</xsd:sequence><xsd:element nillable='false' name='newName' minOccurs='0' type='xsd:string' maxOccurs='1'></xsd:element><xsd:element type='axlapi:XTimeZone' nillable='false' maxOccurs='1' minOccurs='0' name='timeZone' default='GMT'></xsd:element>
<xsd:element nillable='false' name='description' minOccurs='0' type='xsd:string' maxOccurs='1'></xsd:element>
<xsd:element nillable='true' name='timeScheduleIdName' minOccurs='0' type='axlapi:XFkType' maxOccurs='1'></xsd:element>
<xsd:element type='axlapi:boolean' nillable='false' maxOccurs='1' minOccurs='0' name='useOriginatingDeviceTimeZone' default='true'></xsd:element>
If you server still fails saying that "name" parameter is required, try creating your SOAP client like this:
client = suds.client.Client(service_url, cache=None)Because suds caches WSDL, and it might be relying on the old version. Or delete the cache from the temp dir: https://fedorahosted.org/suds/wiki/TipsAndTricks#Performance
Victor
On 01.08.2013 12:41, daniele visaggio wrote:
I think this is the really relevant part, where all the methods related to the "partition" element are defined:Inside WSDL:Inside XSD:
<message name="updateRoutePartitionIn">
<part element="xsd1:updateRoutePartition" name="axlParams"/>
</message>
<message name="updateRoutePartitionOut">
<part element="xsd1:updateRoutePartitionResponse" name="axlParams"/>
</message>
<operation name="updateRoutePartition">
<input message="s0:updateRoutePartitionIn"/>
<output message="s0:updateRoutePartitionOut"/>
</operation>
<operation name="updateRoutePartition">
<soap:operation soapAction="CUCM:DB ver=8.5 updateRoutePartition" style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<xsd:element name='updateRoutePartition' type='axlapi:UpdateRoutePartitionReq'></xsd:element>
<xsd:element name='updateRoutePartitionResponse' type='axlapi:StandardResponse'></xsd:element>
<xsd:element name='addRoutePartition' type='axlapi:AddRoutePartitionReq'></xsd:element>
<xsd:element name='addRoutePartitionResponse' type='axlapi:StandardResponse'></xsd:element>
<xsd:element name='updateRoutePartition' type='axlapi:UpdateRoutePartitionReq'></xsd:element>
<xsd:element name='updateRoutePartitionResponse' type='axlapi:StandardResponse'></xsd:element>
<xsd:element name='getRoutePartition' type='axlapi:GetRoutePartitionReq'></xsd:element>
<xsd:element name='getRoutePartitionResponse' type='axlapi:GetRoutePartitionRes'></xsd:element>
<xsd:element name='removeRoutePartition' type='axlapi:NameAndGUIDRequest'></xsd:element>
<xsd:element name='removeRoutePartitionResponse' type='axlapi:StandardResponse'></xsd:element>
<xsd:element name='listRoutePartition' type='axlapi:ListRoutePartitionReq'></xsd:element>
<xsd:element name='listRoutePartitionResponse' type='axlapi:ListRoutePartitionRes'></xsd:element>
<xsd:complexType name='AddRoutePartitionReq'>
<xsd:complexContent>
<xsd:extension base='axlapi:APIRequest'>
<xsd:sequence>
<xsd:element name='routePartition' type='axlapi:XRoutePartition'></xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name='UpdateRoutePartitionReq'>
<xsd:complexContent>
<xsd:extension base='axlapi:NameAndGUIDRequest'> ---> probably the problem lies here, since this xml request is not added to the soap request
<xsd:sequence>
<xsd:element nillable='false' name='newName' minOccurs='0' type='xsd:string' maxOccurs='1'></xsd:element>
<xsd:element nillable='false' name='description' minOccurs='0' type='xsd:string' maxOccurs='1'></xsd:element>
<xsd:element nillable='true' name='timeScheduleIdName' minOccurs='0' type='axlapi:XFkType' maxOccurs='1'></xsd:element>
<xsd:element type='axlapi:boolean' nillable='false' maxOccurs='1' minOccurs='0' name='useOriginatingDeviceTimeZone' default='true'></xsd:element>
<xsd:element type='axlapi:XTimeZone' nillable='false' maxOccurs='1' minOccurs='0' name='timeZone' default='GMT'>
<xsd:annotation>
<xsd:documentation>Only Applicable if TimeSchedule is selected. If OriginatingDevice is selected then this tag is not applicable.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence></xsd:extension>
</xsd:complexContent>
</xsd:complexType>
By the way it seems that the argument missing from the method (and so the lacking xml tag) is defined below:
<xsd:complexType name="NameAndGUIDRequest">
<xsd:annotation>
<xsd:documentation>This is a utility object that created because many of the Get, Remove, and Update methods allow the user to specify either the name or the uuid.</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="axlapi:APIRequest">
<xsd:sequence>
<xsd:choice>
<xsd:element name="name" type="axlapi:String100" nillable="false">
<xsd:annotation>
<xsd:documentation>Not nullable.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="uuid" type="axlapi:XUUID" nillable="false">
<xsd:annotation>
<xsd:documentation>Not nullable.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:choice>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Thank you
2013/8/1 Victor Varvariuc <victor.varvariuc@gmail.com>
Show the WSDL file part for updateRoutePartition
--Victor Varvaryuk (Виктор Варварюк)
On 31 July 2013 20:16, daniele visaggio <visaggio.daniele@gmail.com> wrote:
_______________________________________________p.s. pls see attached wsdl/xsd files I'm usingDanieleThank you in advance,Is there a way to overcome this issue? why suds is showing me a method with a missing argument?From soapui I see that the correct xml should be:The problem is that a fundamental argument is missing from the method arguments' list. The result is that on the outgoing request a crucial xml tag is not present.I built a soap client from a wsdl file. The method I'm trying to use is the following:Hi all,using version: 0.4.1 (beta) build: R703-20101015.
updateRoutePartition(xs:string newName, xs:string description, ns0:XFkType timeScheduleIdName, ns0:boolean useOriginatingDeviceTimeZone, ns0:XTimeZone timeZone, )
This is the resulting xml sent on the wire (it's broken and the request fails):
<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/XMLSchema-instance
" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns1:Body>
<ns0:updateRoutePartition>
<newName>newName</newName>
<description>NewDescrition</description>
</ns0:updateRoutePartition>
</ns1:Body>
</SOAP-ENV:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/8.5">
<soapenv:Header/>
<soapenv:Body>
<ns:updateRoutePartition sequence="?">
<name>?</name> <---- missing tag!
<newName>?</newName>
<description>?</description>
</ns:updateRoutePartition>
</soapenv:Body>
</soapenv:Envelope>
suds mailing list
suds@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/suds