You wrote:
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?
In your WSDL i don't see "name" argument:
<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:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
So, looks like suds is behaving correctly not passing "name", because
it's listed in expected arguments.
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:
Inside WSDL:
<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>
Inside XSD:
<xsd:element name='updateRoutePartition'
type='axlapi:UpdateRoutePartitionReq'></xsd:element>
<xsd:element name='updateRoutePartitionResponse'
type='axlapi:StandardResponse'></xsd:element>
I think this is the really relevant part, where all the methods
related to the "partition" element are defined:
<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(a)gmail.com
<mailto:victor.varvariuc@gmail.com>>
Show the WSDL file part for updateRoutePartition
--
*/Victor Varvaryuk (Виктор Варварюк)/*
On 31 July 2013 20:16, daniele visaggio
<visaggio.daniele(a)gmail.com <mailto:visaggio.daniele@gmail.com>>
wrote:
Hi all,
using version: 0.4.1 (beta) build: R703-20101015.
I built a soap client from a wsdl file. The method I'm trying
to use is the following:
updateRoutePartition(xs:string newName, xs:string description,
ns0:XFkType timeScheduleIdName, ns0:boolean
useOriginatingDeviceTimeZone, ns0:XTimeZone timeZone, )
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.
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>
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?
Thank you in advance,
Daniele
p.s. pls see attached wsdl/xsd files I'm using
_______________________________________________
suds mailing list
suds(a)lists.fedoraproject.org <mailto:suds@lists.fedoraproject.org>
https://admin.fedoraproject.org/mailman/listinfo/suds