Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/boto/pyami/launch_ami.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/boto/pyami/launch_ami.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2006,2007 Mitch Garnaat http://garnaat.org/ -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, dis- -# tribute, sublicense, and/or sell copies of the Software, and to permit -# persons to whom the Software is furnished to do so, subject to the fol- -# lowing conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- -# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# -import getopt -import sys -import imp -import time -import boto - -usage_string = """ -SYNOPSIS - launch_ami.py -a ami_id [-b script_bucket] [-s script_name] - [-m module] [-c class_name] [-r] - [-g group] [-k key_name] [-n num_instances] - [-w] [extra_data] - Where: - ami_id - the id of the AMI you wish to launch - module - The name of the Python module containing the class you - want to run when the instance is started. If you use this - option the Python module must already be stored on the - instance in a location that is on the Python path. - script_file - The name of a local Python module that you would like - to have copied to S3 and then run on the instance - when it is started. The specified module must be - import'able (i.e. in your local Python path). It - will then be copied to the specified bucket in S3 - (see the -b option). Once the new instance(s) - start up the script will be copied from S3 and then - run locally on the instance. - class_name - The name of the class to be instantiated within the - module or script file specified. - script_bucket - the name of the bucket in which the script will be - stored - group - the name of the security group the instance will run in - key_name - the name of the keypair to use when launching the AMI - num_instances - how many instances of the AMI to launch (default 1) - input_queue_name - Name of SQS to read input messages from - output_queue_name - Name of SQS to write output messages to - extra_data - additional name-value pairs that will be passed as - userdata to the newly launched instance. These should - be of the form "name=value" - The -r option reloads the Python module to S3 without launching - another instance. This can be useful during debugging to allow - you to test a new version of your script without shutting down - your instance and starting up another one. - The -w option tells the script to run synchronously, meaning to - wait until the instance is actually up and running. It then prints - the IP address and internal and external DNS names before exiting. -""" - -def usage(): - print(usage_string) - sys.exit() - -def main(): - try: - opts, args = getopt.getopt(sys.argv[1:], 'a:b:c:g:hi:k:m:n:o:rs:w', - ['ami', 'bucket', 'class', 'group', 'help', - 'inputqueue', 'keypair', 'module', - 'numinstances', 'outputqueue', - 'reload', 'script_name', 'wait']) - except: - usage() - params = {'module_name': None, - 'script_name': None, - 'class_name': None, - 'script_bucket': None, - 'group': 'default', - 'keypair': None, - 'ami': None, - 'num_instances': 1, - 'input_queue_name': None, - 'output_queue_name': None} - reload = None - wait = None - for o, a in opts: - if o in ('-a', '--ami'): - params['ami'] = a - if o in ('-b', '--bucket'): - params['script_bucket'] = a - if o in ('-c', '--class'): - params['class_name'] = a - if o in ('-g', '--group'): - params['group'] = a - if o in ('-h', '--help'): - usage() - if o in ('-i', '--inputqueue'): - params['input_queue_name'] = a - if o in ('-k', '--keypair'): - params['keypair'] = a - if o in ('-m', '--module'): - params['module_name'] = a - if o in ('-n', '--num_instances'): - params['num_instances'] = int(a) - if o in ('-o', '--outputqueue'): - params['output_queue_name'] = a - if o in ('-r', '--reload'): - reload = True - if o in ('-s', '--script'): - params['script_name'] = a - if o in ('-w', '--wait'): - wait = True - - # check required fields - required = ['ami'] - for pname in required: - if not params.get(pname, None): - print('%s is required' % pname) - usage() - if params['script_name']: - # first copy the desired module file to S3 bucket - if reload: - print('Reloading module %s to S3' % params['script_name']) - else: - print('Copying module %s to S3' % params['script_name']) - l = imp.find_module(params['script_name']) - c = boto.connect_s3() - bucket = c.get_bucket(params['script_bucket']) - key = bucket.new_key(params['script_name'] + '.py') - key.set_contents_from_file(l[0]) - params['script_md5'] = key.md5 - # we have everything we need, now build userdata string - l = [] - for k, v in params.items(): - if v: - l.append('%s=%s' % (k, v)) - c = boto.connect_ec2() - l.append('aws_access_key_id=%s' % c.aws_access_key_id) - l.append('aws_secret_access_key=%s' % c.aws_secret_access_key) - for kv in args: - l.append(kv) - s = '|'.join(l) - if not reload: - rs = c.get_all_images([params['ami']]) - img = rs[0] - r = img.run(user_data=s, key_name=params['keypair'], - security_groups=[params['group']], - max_count=params.get('num_instances', 1)) - print('AMI: %s - %s (Started)' % (params['ami'], img.location)) - print('Reservation %s contains the following instances:' % r.id) - for i in r.instances: - print('\t%s' % i.id) - if wait: - running = False - while not running: - time.sleep(30) - [i.update() for i in r.instances] - status = [i.state for i in r.instances] - print(status) - if status.count('running') == len(r.instances): - running = True - for i in r.instances: - print('Instance: %s' % i.ami_launch_index) - print('Public DNS Name: %s' % i.public_dns_name) - print('Private DNS Name: %s' % i.private_dns_name) - -if __name__ == "__main__": - main()