cancel
Showing results for 
Search instead for 
Did you mean: 

Tech Tip: Using the SOAP Control API with Python

The following code uses Stingray's Control API to list all the running virtual servers on a cluster. The code is written in Python.

 

listVS.py

#!/usr/bin/python
import SOAPpy

conn = SOAPpy.WSDL.Proxy("VirtualServer.wsdl")
names = conn.getVirtualServerNames()
enabled = conn.getEnabled(names)

for i in range(0,len(names)):
   if ( enabled ):
      print names

 

Running the example

 

This code was tested with Python 2.3.5 and version 0.11.5 of the SOAP.py library. Earlier versions of the SOAP.py library (0.8.4) could not correctly parse the WSDL file.

 

Run the Python script as follows:

 

$ listVS.py

Main website

Mail servers

Test site

 

Notes

 

By default, most SOAP implementations read the location of the SOAP server from the WSDL file (located in ZEUSHOME/zxtm/etc/wsdl. However, for security reasons, the location of the Stingray Admin Server (including the required administrator username and password) is not embedded in the Stingray WSDL files. Most SOAP toolkits allow you to override the location specified in the WSDL file, but Python's SOAP.py module does not. Before you run this example, edit your WSDL files. Look for the soap:address node at the very end of each WSDL file and edit appropriately:

<service name="VirtualServer">
   <port name="VirtualServerPort"
         binding="zeusns:VirtualServerBinding">
      <soap:address location="https://usernameSmiley Tongue[email protected]:9090/soap" />
   </port>
</service>

 

Alternatively, you can programmatically control the endpoints as follows:

endpoint_uri = "https://usernameSmiley Tongue[email protected]:9090/soap"
conn = SOAPpy.WSDL.Proxy("VirtualServer.wsdl")

for method in conn.methods.keys():
conn.methods[method].location = endpoint_uri

 

Read more

Version history
Revision #:
2 of 2
Last update:
‎01-13-2021 05:38:PM
Updated by:
 
Labels (1)
Contributors