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'])
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'])
# 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)