Example #1
0
def do_co_boot(cs, args):
    """Boot a new server."""

    boot_args, boot_kwargs = shell._boot(cs, args)

    if args.host and 'meta' in boot_kwargs:
        boot_kwargs['meta'].update({"co:target_host": args.host})
    elif args.host:
        boot_kwargs['meta'] = {"co:target_host":args.host}

    extra_boot_kwargs = utils.get_resource_manager_extra_kwargs(do_co_boot, args)
    boot_kwargs.update(extra_boot_kwargs)

    server = cs.cobalt.create(*boot_args, **boot_kwargs)

    # Keep any information (like adminPass) returned by create
    info = server._info
    server = cs.servers.get(info['id'])
    info.update(server._info)

    flavor = info.get('flavor', {})
    flavor_id = flavor.get('id', '')
    info['flavor'] = shell._find_flavor(cs, flavor_id).name

    image = info.get('image', {})
    image_id = image.get('id', '')
    info['image'] = shell._find_image(cs, image_id).name

    info.pop('links', None)
    info.pop('addresses', None)

    utils.print_dict(info)

    if args.poll:
        shell._poll_for_status(cs.servers.get, info['id'], 'building', ['active'])
Example #2
0
def do_gc_boot(cs, args):
    """Boot a new server."""

    boot_args, boot_kwargs = shell._boot(cs, args)

    if args.host and 'meta' in boot_kwargs:
        boot_kwargs['meta'].update({"gc:target_host": args.host})
    elif args.host:
        boot_kwargs['meta'] = {"gc:target_host": args.host}

    extra_boot_kwargs = utils.get_resource_manager_extra_kwargs(
        do_gc_boot, args)
    boot_kwargs.update(extra_boot_kwargs)

    server = cs.gridcentric.create(*boot_args, **boot_kwargs)

    # Keep any information (like adminPass) returned by create
    info = server._info
    server = cs.servers.get(info['id'])
    info.update(server._info)

    flavor = info.get('flavor', {})
    flavor_id = flavor.get('id', '')
    info['flavor'] = shell._find_flavor(cs, flavor_id).name

    image = info.get('image', {})
    image_id = image.get('id', '')
    info['image'] = shell._find_image(cs, image_id).name

    info.pop('links', None)
    info.pop('addresses', None)

    utils.print_dict(info)

    if args.poll:
        shell._poll_for_status(cs.servers.get, info['id'], 'building',
                               ['active'])
Example #3
0
# Acquire a nova client
nova = novaclient.client.Client('2', args.user, args.password, args.tenant_name, args.url)

# Acquire a server
try:
    server = next(server for server in nova.servers.list() if server.name == args.server_name)
except StopIteration:
    print "Error: No server exists with name: %s" % args.server.name
    servers = (server.name for server in nova.servers.list() if server.status == "ACTIVE")
    print "servers:%s" % (servers, flavors)
    sys.exit(1)
    
# Create an image and wait for active status
image_name = "%s-%s" % (server.name, time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))
image = server.create_image(image_name)
shell._poll_for_status(nova.images.get, image, 'snapshotting', ['active'])

# Create the clone
flavor = nova.flavors.get(server.flavor['id'])
new_server = nova.servers.create(name="%s-clone" % server.name,
                                 flavor=flavor,
                                 image=nova.images.get(image))

# Wait for networking to happen to print credentials
password = new_server.adminPass
for wait in range(100):
    try:
        print "%s: %s" % (new_server.networks['public'][0], password)
    except (KeyError) as e:
        time.sleep(1)
        new_server = nova.servers.get(new_server.id)