def list_flavors(): cs = auth() c2cs = pyrax.connect_to_cloudservers fields = ['ID', 'Region','Name', 'RAM', 'Swap', 'Disk', 'Network', 'vCPUs'] for reg in pyrax.regions: flavors = [] for flav in c2cs(region=reg).list_flavors(): flavors.append((flav.id, reg, flav.name, flav.ram, flav.swap, flav.disk, flav.rxtx_factor, flav.vcpus)) utils.printhtable(fields, flavors, sort=0) del flavors
def listlbs(*args): '''Print out all loadbalancers''' auth() fields = ['Name', 'Status', 'Node Count', 'Protocol', 'Region', 'Created at', 'ID'] lbdata = [] c2lb = pyrax.connect_to_cloud_loadbalancers for reg in pyrax.region: for lb in c2lb(region=reg).list(): lbdata.append((lb.name, lb.status, str(lb.nodeCount), lb.protocol, reg, utils.converttime(lb.created['time']), lb.id)) utils.printhtable(fields, lbdata)
def listservers(*args): '''Print out servers in account''' auth() fields = ['Name', 'DC', 'Status', 'Public IPv4', 'Private IPv4', 'Date Created', 'Server ID', 'Image'] servdata = [] c2cs = pyrax.connect_to_cloudservers for reg in pyrax.regions: for server in c2cs(region=reg).list(): servdata.append((server.name, reg, server.status, [pub for pub in server.networks['public'] if len(pub) <= 15][0], [pri for pri in server.networks['private'] if len(pri) <= 15][0], utils.converttime(server.created), server.id, findimage(server.image['id']))) utils.printhtable(fields, servdata)
def listimages(): cs = auth() c2cs = pyrax.connect_to_cloudservers basefields = ['Name', 'Status', 'Created at', 'ID'] snapfields = ['Name', 'Status', 'DC', 'Parent', 'Created at', 'ID'] baseimages = [] snaps = [] for image in cs.list_base_images(): baseimages.append((image.name, image.status, utils.converttime(image.created), image.id)) for reg in pyrax.regions: for image in c2cs(region=reg).list_snapshots(): try: snaps.append((image.name, image.status, reg, image.server['id'], utils.converttime(image.created), image.id)) except AttributeError: snaps.append((image.name, image.status, reg, 'Server Deleted', utils.converttime(image.created), image.id)) utils.printhtable(basefields, baseimages) utils.printhtable(snapfields, snaps)
def massbuild(*args, **kwargs): '''Provide a basename and an amount. This function will build the amount specified starting at 1. Default naming convention is "web1, web2, web3". If wait is False, returned build data is provided immediatly. It is likely that the network info will be unavailable until the build completes.''' if kwargs['disk'] is False: disk = 'AUTO' else: disk = 'MANUAL' if kwargs['password']: password = kwargs['password'] if kwargs['region'] is None: region = kwargs['region'] else: region = kwargs['region'].upper() cs = auth(region) basename = kwargs['basename'] size = kwargs['size'] for flvr in cs.flavors.list(): if size == int(flvr.ram): flavor = flvr.id if kwargs['imageid'] is None: for image in cs.images.list(): if 'Squeeze' in image.name: imageid = image.id else: imageid = kwargs['imageid'] try: cs.images.get(imageid) except ncexc.NotFound: print 'Image not found. It may not be local to %s.' % cs.client.region_name exit(1) start = kwargs['start'] amount = kwargs['amount'] utils.printvtable([('Name: ', basename), ('Size: ', size), ('Amount: ', amount), ('Start at: ', start)]) build = raw_input('Is this information correct? (y|n) ') if build.lower() == 'y': for count in range(start, start + amount): server = cs.servers.create(basename + str(count), imageid, flavor, disk_config=disk) if not kwargs['nowait']: print 'Building %s...' % server.name pyrax.utils.wait_until(server, 'status', ['ACTIVE', 'ERROR'], callback=servercallback, attempts=0) if not password: adminpasses[server.id] = server.adminPass else: adminpasses[server.id] = password else: utils.printvtable([('Name', server.name), ('Pass', server.adminPass), ('Status', server.status), ('IP', server.networks)]) while len(server_return) != amount: pyrax.utils.time.sleep(5) if password: print 'Changing passwords to %s...' % password for s in server_return: cs.servers.change_password(s[0], password) print 'Password changed for %s' % s[1] fields = ['ID', 'Name', 'Password', 'Status', 'IP'] utils.printhtable(fields, server_return, sort=1) else: exit(0)