Source code for ccmanage.quicknode

"""
Fire up a single node on Chameleon to do something with.
"""
from __future__ import absolute_import, print_function, unicode_literals

import argparse
import functools
import os
import sys


from . import auth
from .lease import Lease, NODE_TYPES


print_nolf = functools.partial(print, end='', flush=True)


[docs]def main(argv=None): if argv is None: argv = sys.argv parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) auth.add_arguments(parser) parser.add_argument('--node-type', type=str, default='compute_haswell', help='Node type to launch. May be custom or likely one of: {}'.format( ', '.join("'{}'".format(nt) for nt in NODE_TYPES) )) parser.add_argument('--key-name', type=str, default='default', help='SSH keypair name on OS used to create an instance. Must exist ' 'in Nova') parser.add_argument('--image', type=str, default='CC-CentOS7', help='Name or ID of image to launch.') parser.add_argument('--no-clean', action='store_true', help='Do not clean up on failure.') parser.add_argument('--net-name', type=str, default='sharednet1', help='Name of network to connect to.') parser.add_argument('--no-floatingip', action='store_true', help='Skip assigning a floating IP.') args = parser.parse_args() session = auth.session_from_args(args) print_nolf('Lease: creating...') with Lease(session, node_type=args.node_type, _no_clean=args.no_clean) as lease: print('started {}'.format(lease)) print_nolf('Server: creating...') server = lease.create_server(key=args.key_name, image=args.image, net_name=args.net_name) print_nolf('building...') server.wait() print_nolf('started {}...'.format(server)) if args.no_floatingip: input('Press enter to terminate lease and server.') else: server.associate_floating_ip() print('bound ip {} to server.'.format(server.ip)) input('\n\'ssh cc@{}\' available.\nPress enter to terminate lease and server.' .format(server.ip)) print_nolf('Tearing down...') print('done.')
if __name__ == '__main__': sys.exit(main(sys.argv))