diff env/bin/asadmin @ 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/bin/asadmin	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-#!/Users/pldms/Development/Projects/2020/david-matthews-galaxy/guppy_basecaller/env/bin/python3
-# Copyright (c) 2011 Joel Barciauskas http://joel.barciausk.as/
-#
-# 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
-
-#
-# Auto Scaling Groups Tool
-#
-VERSION="0.1"
-usage = """%prog [options] [command]
-Commands:
-    list|ls                           List all Auto Scaling Groups
-    list-lc|ls-lc                     List all Launch Configurations
-    delete    <name>                  Delete ASG <name>
-    delete-lc <name>                  Delete Launch Configuration <name>
-    get       <name>                  Get details of ASG <name>
-    create    <name>                  Create an ASG
-    create-lc <name>                  Create a Launch Configuration
-    update    <name> <prop> <value>   Update a property of an ASG
-    update-image <asg-name> <lc-name> Update image ID for ASG by creating a new LC
-    migrate-instances <name>          Shut down current instances one by one and wait for ASG to start up a new instance with the current AMI (useful in conjunction with update-image)
-
-Examples:
-
-    1) Create launch configuration
-        bin/asadmin create-lc my-lc-1 -i ami-1234abcd -t c1.xlarge -k my-key -s web-group -m
-
-    2) Create auto scaling group in us-east-1a and us-east-1c with a load balancer and min size of 2 and max size of 6
-        bin/asadmin create my-asg -z us-east-1a -z us-east-1c -l my-lc-1 -b my-lb -H ELB -p 180 -x 2 -X 6
-"""
-
-def get_group(autoscale, name):
-    g = autoscale.get_all_groups(names=[name])
-    if len(g) < 1:
-        print "No auto scaling groups by the name of %s found" % name
-        return sys.exit(1)
-    return g[0]
-
-def get_lc(autoscale, name):
-    l = autoscale.get_all_launch_configurations(names=[name])
-    if len(l) < 1:
-        print "No launch configurations by the name of %s found" % name
-        sys.exit(1)
-    return l[0]
-
-def list(autoscale):
-    """List all ASGs"""
-    print "%-20s %s" %  ("Name", "LC Name")
-    print "-"*80
-    groups = autoscale.get_all_groups()
-    for g in groups:
-        print "%-20s %s" % (g.name, g.launch_config_name)
-
-def list_lc(autoscale):
-    """List all LCs"""
-    print "%-30s %-20s %s" %  ("Name", "Image ID", "Instance Type")
-    print "-"*80
-    for l in autoscale.get_all_launch_configurations():
-        print "%-30s %-20s %s" % (l.name, l.image_id, l.instance_type)
-
-def get(autoscale, name):
-    """Get details about ASG <name>"""
-    g = get_group(autoscale, name)
-    print "="*80
-    print "%-30s %s" % ('Name:', g.name)
-    print "%-30s %s" % ('Launch configuration:', g.launch_config_name)
-    print "%-30s %s" % ('Minimum size:', g.min_size)
-    print "%-30s %s" % ('Maximum size:', g.max_size)
-    print "%-30s %s" % ('Desired capacity:', g.desired_capacity)
-    print "%-30s %s" % ('Load balancers:', ','.join(g.load_balancers))
-
-    print
-
-    print "Instances"
-    print "---------"
-    print "%-20s %-20s %-20s %s" % ("ID", "Status", "Health", "AZ")
-    for i in g.instances:
-        print "%-20s %-20s %-20s %s" % \
-        (i.instance_id, i.lifecycle_state, i.health_status, i.availability_zone)
-
-    print
-
-def create(autoscale, name, zones, lc_name, load_balancers, hc_type, hc_period,
-        min_size, max_size, cooldown, capacity):
-    """Create an ASG named <name>"""
-    g = AutoScalingGroup(name=name, launch_config=lc_name,
-            availability_zones=zones, load_balancers=load_balancers,
-            default_cooldown=cooldown, health_check_type=hc_type,
-            health_check_period=hc_period, desired_capacity=capacity,
-            min_size=min_size, max_size=max_size)
-    g = autoscale.create_auto_scaling_group(g)
-    return list(autoscale)
-
-def create_lc(autoscale, name, image_id, instance_type, key_name,
-        security_groups, instance_monitoring):
-    l = LaunchConfiguration(name=name, image_id=image_id,
-            instance_type=instance_type,key_name=key_name,
-            security_groups=security_groups,
-            instance_monitoring=instance_monitoring)
-    l = autoscale.create_launch_configuration(l)
-    return list_lc(autoscale)
-
-def update(autoscale, name, prop, value):
-    g = get_group(autoscale, name)
-    setattr(g, prop, value)
-    g.update()
-    return get(autoscale, name)
-
-def delete(autoscale, name, force_delete=False):
-    """Delete this ASG"""
-    g = get_group(autoscale, name)
-    autoscale.delete_auto_scaling_group(g.name, force_delete)
-    print "Auto scaling group %s deleted" % name
-    return list(autoscale)
-
-def delete_lc(autoscale, name):
-    """Delete this LC"""
-    l = get_lc(autoscale, name)
-    autoscale.delete_launch_configuration(name)
-    print "Launch configuration %s deleted" % name
-    return list_lc(autoscale)
-
-def update_image(autoscale, name, lc_name, image_id, is_migrate_instances=False):
-    """ Get the current launch config,
-        Update its name and image id
-        Re-create it as a new launch config
-        Update the ASG with the new LC
-        Delete the old LC """
-
-    g = get_group(autoscale, name)
-    l = get_lc(autoscale, g.launch_config_name)
-
-    old_lc_name = l.name
-    l.name = lc_name
-    l.image_id = image_id
-    autoscale.create_launch_configuration(l)
-    g.launch_config_name = l.name
-    g.update()
-
-    if(is_migrate_instances):
-        migrate_instances(autoscale, name)
-    else:
-        return get(autoscale, name)
-
-def migrate_instances(autoscale, name):
-    """ Shut down instances of the old image type one by one
-        and let the ASG start up instances with the new image """
-    g = get_group(autoscale, name)
-
-    old_instances = g.instances
-    ec2 = boto.connect_ec2()
-    for old_instance in old_instances:
-        print "Terminating instance " + old_instance.instance_id
-        ec2.terminate_instances([old_instance.instance_id])
-        while True:
-            g = get_group(autoscale, name)
-            new_instances = g.instances
-            for new_instance in new_instances:
-                hasOldInstance = False
-                instancesReady = True
-                if(old_instance.instance_id == new_instance.instance_id):
-                    hasOldInstance = True
-                    print "Waiting for old instance to shut down..."
-                    break
-                elif(new_instance.lifecycle_state != 'InService'):
-                    instancesReady = False
-                    print "Waiting for instances to be ready...."
-                    break
-            if(not hasOldInstance and instancesReady):
-                break
-            else:
-                time.sleep(20)
-    return get(autoscale, name)
-
-if __name__ == "__main__":
-    try:
-        import readline
-    except ImportError:
-        pass
-    import boto
-    import sys
-    import time
-    from optparse import OptionParser
-    from boto.mashups.iobject import IObject
-    from boto.ec2.autoscale import AutoScalingGroup
-    from boto.ec2.autoscale import LaunchConfiguration
-    parser = OptionParser(version=VERSION, usage=usage)
-    """ Create launch config options """
-    parser.add_option("-i", "--image-id",
-            help="Image (AMI) ID", action="store",
-            type="string", default=None, dest="image_id")
-    parser.add_option("-t", "--instance-type",
-            help="EC2 Instance Type (e.g., m1.large, c1.xlarge), default is m1.large",
-            action="store", type="string", default="m1.large", dest="instance_type")
-    parser.add_option("-k", "--key-name",
-            help="EC2 Key Name",
-            action="store", type="string", dest="key_name")
-    parser.add_option("-s", "--security-group",
-            help="EC2 Security Group",
-            action="append", default=[], dest="security_groups")
-    parser.add_option("-m", "--monitoring",
-            help="Enable instance monitoring",
-            action="store_true", default=False, dest="instance_monitoring")
-
-    """ Create auto scaling group options """
-    parser.add_option("-z", "--zone", help="Add availability zone", action="append", default=[], dest="zones")
-    parser.add_option("-l", "--lc-name",
-            help="Launch configuration name",
-            action="store", default=None, type="string", dest="lc_name")
-    parser.add_option("-b", "--load-balancer",
-            help="Load balancer name",
-            action="append", default=[], dest="load_balancers")
-    parser.add_option("-H", "--health-check-type",
-            help="Health check type (EC2 or ELB)",
-            action="store", default="EC2", type="string", dest="hc_type")
-    parser.add_option("-p", "--health-check-period",
-            help="Health check period in seconds (default 300s)",
-            action="store", default=300, type="int", dest="hc_period")
-    parser.add_option("-X", "--max-size",
-            help="Max size of ASG (default 10)",
-            action="store", default=10, type="int", dest="max_size")
-    parser.add_option("-x", "--min-size",
-            help="Min size of ASG (default 2)",
-            action="store", default=2, type="int", dest="min_size")
-    parser.add_option("-c", "--cooldown",
-            help="Cooldown time after a scaling activity in seconds (default 300s)",
-            action="store", default=300, type="int", dest="cooldown")
-    parser.add_option("-C", "--desired-capacity",
-            help="Desired capacity of the ASG",
-            action="store", default=None, type="int", dest="capacity")
-    parser.add_option("-f", "--force",
-            help="Force delete ASG",
-            action="store_true", default=False, dest="force")
-    parser.add_option("-y", "--migrate-instances",
-            help="Automatically migrate instances to new image when running update-image",
-            action="store_true", default=False, dest="migrate_instances")
-
-    (options, args) = parser.parse_args()
-
-    if len(args) < 1:
-        parser.print_help()
-        sys.exit(1)
-
-    autoscale = boto.connect_autoscale()
-
-    print "%s" % (autoscale.region.endpoint)
-
-    command = args[0].lower()
-    if command in ("ls", "list"):
-        list(autoscale)
-    elif command in ("ls-lc", "list-lc"):
-        list_lc(autoscale)
-    elif command == "get":
-        get(autoscale, args[1])
-    elif command == "create":
-        create(autoscale, args[1], options.zones, options.lc_name,
-                options.load_balancers, options.hc_type,
-                options.hc_period, options.min_size, options.max_size,
-                options.cooldown, options.capacity)
-    elif command == "create-lc":
-        create_lc(autoscale, args[1], options.image_id, options.instance_type,
-                options.key_name, options.security_groups,
-                options.instance_monitoring)
-    elif command == "update":
-        update(autoscale, args[1], args[2], args[3])
-    elif command == "delete":
-        delete(autoscale, args[1], options.force)
-    elif command == "delete-lc":
-        delete_lc(autoscale, args[1])
-    elif command == "update-image":
-        update_image(autoscale, args[1], args[2],
-                options.image_id, options.migrate_instances)
-    elif command == "migrate-instances":
-        migrate_instances(autoscale, args[1])