import sys from fabric.api import * def _createHost(hostName, hostSize, hostList): moduleObj = sys.modules[__name__] def setHost(): env.hosts = hostList #Doc string is readonly during creation? setHost.__doc__ = 'HOST: %sMB' % hostSize setattr(moduleObj, hostName, setHost) def _generateLinodeHosts(): sys.path.append('.') # Import api locally to hide from Fabric import api as linodeApi LINODE_KEY = "LINODE_KEY_GOES_HERE" linode = linodeApi.Api(LINODE_KEY) linodeList = [(x['LINODEID'],x['LABEL'], x['TOTALRAM']) for x in linode.linode_list()] for server in linodeList: ipList = linode.linode_ip_list(LinodeID=int(server[0])) publicIps = [x['IPADDRESS'] for x in ipList if x['ISPUBLIC']] _createHost(server[1], server[2], [publicIps[0]]) _generateLinodeHosts() def test(): run('ls')