This article is archived. PyControl v2 has not been actively developed in years. If you will be using the iControl SOAP portal, the bigsuds library is more robust and more recently developed.

At long last, we’re happy to announce pycontrol, version 2! This version is a complete re-write of the original, with many improvements. Over the next several weeks keep an eye out for more samples posted to code share as well as tutorials, both in tech-tip and screen cast form.  Here are a few feature highlights:

  • Attribute-driven for easy introspection of iControl methods.
  • Optional single-file install. No longer requires root access. Just drop pycontrol.py somewhere you'll remember and add it to sys.path, or drop it onto sys.path itself.
  • On-box WSDL or remote-fetch. This means you can have *multiple* WSDL versions available and it's easy to point pycontrol either to a BigIP or a local WSDL file.
  • Support for concurrent calls via the suds clone() method. For example, clone() multiple pycontrol objects, then use threads to call multiple systems concurrently and fetch results (See the samples dir for a toy example of this).
  • Semi backward-compatible with pyControl version 1.x (most 'getter' methods).
  • Sane exception handling.
  • Easy debug logging via standard syslog facilities. Set "debug=True" on instantiation for trace logging.
  • Support for in-object endpoint changes. This allows you to create one object for, say, LocalLB.Pool and point it to different BigIP systems.
  • "Pythonic" type objects with attributes. For example, you create a 'Common.IPPortMember' object, then set its 'address' and 'port' attributes.
  • Exposure of the underlying SOAP API, Suds. This will allow for power-users to get at all of the underlying API for 100% flexibility. Suds is an excellent, fast-moving project. See https://fedorahosted.org/suds/ for more information on this excellent library.

See the README file inside the bundle for other information – Installation, Quickstart, and a list of known issues.

**PLEASE NOTE**: given that this is a total rewrite, your old code will not work with pycontrol v2.  We’ve tried to minimize the amount of changes you’ll have to make, but the underlying Python API is totally new, and as you’d expect, different from our old one. You’ll need to port your old pycontrol 1.x code over to take advantage of pycontrol v2.

Videos and code samples will follow as the day/week progresses.  Many thanks to the long hours and dedication of F5's own Matt Cauthorn for this excellent effort.  Happy coding!