Forum Discussion

Benjamin_Krein_'s avatar
Benjamin_Krein_
Icon for Nimbostratus rankNimbostratus
Jun 29, 2010

Using local wsdls & dynamic wsdl loading?

Hopefully this forum gets noticed. Seems I'm the first person to open a thread here. I'm playing with pycontrol2 & I'd love to have more information on using local wsdls. Where are they located on the F5 unit so I can copy them locally, or how do I get a local copy? Seems like having a local copy would help speed up apps. Is there more documentation on setting up local wslds? Secondly, I'm wondering if it's possible to dynamically load wsdls after creating a connection? I'd like to create a generic connection to my BigIP & depending on what commands are submitted to my app, dynamically load (and unload?) wsdls necessary to complete the immediate task. Is this possible? Forgive my ignorance of SOAP & wsdls in general.

2 Replies

  • I am running 10.2 and found the wsdl directory at /usr/local/www/iControl/wsdl/

     

    If you copied these to your local /tmp directory you would then:

     

    import pycontrol.pycontrol as pc

     

     

    pc.BIGIP(hostname, username, password, directory = '/tmp/', wsdls = ['LocalLB.Pool', 'LocalLB.PoolMember', 'Management.Partition'])

     

     

    for example.

     

     

    hth

     

  • @Benjamin:As Antonio correctly points out, you can load local WSDLs easily. If you want to pull them down from the BigIP via a browser, you can see the full list at https://your_bigip_address/iControl/iControlPortal.cgi

     

     

    Regarding your second question, you're not able to decouple the connection from the client per se. So as of now, you're unable to do what you're wanting to do on that front. One thing I have been batting around is to write a utility to strip out all of the unwanted stuff from a WSDL so you can create tiny custom WSDLs just for your app. This would greatly increase load times and allow users to define custom WSDLs. For example, you could create a WSDL that only defines the create() and get_list() methods inside of LocalLB.VirtualServer...but a this point it's still just an idea, I've not even looked into what it'll take to pull it off.

     

     

    Also, it looks like (from viewing tickets and requests) the new Suds (0.4) will have client pickling as an option, as well as async i/o support so you can formally use async transport libraries like Twisted for your apps. This means that you should be able to get very close to your end goal, at least when that version is out of beta and finished off.

     

     

    -Matt