cancel
Showing results for 
Search instead for 
Did you mean: 
Login & Join the DevCentral Connects Group to watch the Recorded LiveStream (May 12) on Basic iControl Security - show notes included.
PeteWhite
F5 Employee
F5 Employee

Problem this snippet solves:

This is a python module to simplify using the F5 Networks AS3 utility.


Downloads, installs and uninstalls the AS3 package


https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/userguide/installation.html


How to use this snippet:





Installation

Install using pip:

pip install as3


Example

#!/usr/bin/env python
import as3
t = as3.as3(host='1.1.1.1',username='admin',password='admin')
# Check whether AS3 is installed:
print (str(t.isInstalled()))
# Download the latest AS3 version from Github
print (str(t.retrieveVersion()))
# Install a specific version on a different host - if you leave out filename it will download the latest
t.installAS3(host='2.2.2.2',username='admin',password='admin',filename='f5-appsvcs-3.16.0-6.noarch.rpm')
# Uninstall it
t.uninstallAS3(host='2.2.2.2',username='admin',password='admin')


Methods

  • as3([debug,host,username,password,port,usetoken]) - initialise an AS3 object
  • isInstalled([version,host,username,password,usetoken,port]) - Checks whether AS3 is installed. Returns version dict, True or False
  • retrieveVersion([release]) - Downloads a specific release or the latest release of the RPM package
  • installAS3([version,filename,host,username,password,usetoken,port]) - Installs AS3 as a package. Returns True or False
  • uninstallAS3([version,filename,host,username,password,usetoken,port]) - Uninstalls current AS3 package. Returns True or False
  • github(url, [method,data,useragent,stream]) - this is a helper to retrieve from github F5 repository. Return True or False
  • versionToId(version) - Returns a Github object ID related to a version number. eg version is 'v3.16.0' and ID is 22093972


Tested this on version:

13.0
Comments
Nik_Sheridan
Altostratus
Altostratus

If you are having a problem using this module, once you have instantiated object 't' in the example I found it useful to set the debug attribute to True as this allows for feedback on the installAS3 method when it's called e.g.:

>>> t.debug=True >>> t.installAS3(host='BIGIP',username='SOME_USER',password='SOME_PASSWORD',filename='f5-appsvcs-3.17.1-1.noarch.rpm') DEBUG: Filename f5-appsvcs-3.17.1-1.noarch.rpm specified, uploading to host BIGIP DEBUG: Uploading file f5-appsvcs-3.17.1-1.noarch.rpm DEBUG: Installing package f5-appsvcs-3.17.1-1.noarch.rpm from /var/config/rest/downloads DEBUG: Created task to install package f5-appsvcs-3.17.1-1.noarch.rpm DEBUG: Waiting for 5 secs DEBUG: Checking whether the package is installed DEBUG: Response from /mgmt/shared/appsvcs/info False False >>>

I also found in the imports in the module itself, that on my system (and I did do this in a virtual environment as well), I needed to amend the import statements as follows

#replaced import iCR from iCR import iCR

I found when I used it, that the module was not referring to the iCR class correctly, and it needed the above in order to work without throwing an exception regarding the module not being callable.

 

HTH but still got a couple of snags left 😞 but looks very, very, useful when working so I am persevering with this. (note I am using python3.6.0)

 

If this is open sourced I can try and make this work on my system and submit a pull request with more detail if that is helpful.

Version history
Last update:
‎20-Dec-2019 08:58
Updated by:
Contributors