I'm trying to create a soap server from WSDL file. I'm using Python 3 and Spyne for generate it. This server need to be specific, because the client already exists. I need that my WSDL request looks like the following
<soapenv:Body>
<pus:receiveEvents>
<!--Optional:-->
<eventQueryResult>
<!--Optional:-->
<queryId>?</queryId>
<!--Optional:-->
<queryStatus>?</queryStatus>
<!--Zero or more repetitions:-->
<events>
<!--Optional:-->
<eid>?</eid>
<!--Optional:-->
<eventMessage>?</eventMessage>
<!--Optional:-->
<eventSeverity>?</eventSeverity>
<!--Optional:-->
<eventTime>?</eventTime>
<!--Optional:-->
<eventTypeName>?</eventTypeName>
<!--Optional:-->
<meterId>?</meterId>
</events>
<subscriptionId>?</subscriptionId>
</eventQueryResult>
</pus:receiveEvents>
</soapenv:Body>
But, this is my WSDL request:
<soapenv:Body>
<pus:receiveEvents>
<!--Optional:-->
<pus:eventQueryResult>
<!--Optional:-->
<pus:queryId>?</pus:queryId>
<!--Optional:-->
<pus:queryStatus>?</pus:queryStatus>
</pus:eventQueryResult>
<!--Optional:-->
<pus:events>
<!--Optional:-->
<pus:eid>?</pus:eid>
<!--Optional:-->
<pus:eventMessage>?</pus:eventMessage>
<!--Optional:-->
<pus:eventSeverity>?</pus:eventSeverity>
<!--Optional:-->
<pus:eventTime>?</pus:eventTime>
<!--Optional:-->
<pus:eventTypeName>?</pus:eventTypeName>
<!--Optional:-->
<pus:meterId>?</pus:meterId>
</pus:events>
<pus:subscriptionId>
<!--Optional:-->
<pus:subscriptionId>?</pus:subscriptionId>
</pus:subscriptionId>
</pus:receiveEvents>
</soapenv:Body>
This is the code that I wrote
class eventQueryResult(ComplexModel):
__namespace__ = 'http://pushevent.nbapi.cgms.cisco.com/'
queryId = String
queryStatus = String
class events(ComplexModel):
__namespace__ = 'http://pushevent.nbapi.cgms.cisco.com/'
eid = String
eventMessage = String
eventSeverity = String
eventTime = Long
eventTypeName = String
meterId = String
class subscriptionId(ComplexModel):
__namespace__ = 'http://pushevent.nbapi.cgms.cisco.com/'
subscriptionId = Long
class EventPushService(ServiceBase):
__tns__ = 'http://pushevent.nbapi.cgms.cisco.com/'
__wsdl__ = 'http://schemas.xmlsoap.org/wsdl/'
@rpc(eventQueryResult.customize(min_occurs=0), events.customize(min_occurs=0), subscriptionId.customize(min_occurs=1,nillable = True), _returns=ResponseData)
def receiveEvents(ctx, eventQueryResult, events, subscriptionId):
eid = events.eid
return print(eid)
I need that eventQueryResult contains events, but I don't know how. The documentation of Spyne doesn't help me with that.
Thanks for your comments