예제 #1
0
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
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)