[pkg-eucalyptus-commits] [SCM] managing cloud instances for Eucalyptus branch, master, updated. 3.0.0-alpha3-257-g1da8e3a

Garrett Holmstrom gholms at fedoraproject.org
Sun Jun 16 02:30:29 UTC 2013


The following commit has been merged in the master branch:
commit 5ee3143de114e700b034e8e25e672a12e46971bf
Author: Garrett Holmstrom <gholms at fedoraproject.org>
Date:   Wed Feb 27 14:26:34 2013 -0800

    Implement CreateAutoScalingGroup
    
    Fixes TOOLS-202

diff --git a/euca2ools/commands/argtypes.py b/euca2ools/commands/argtypes.py
index 9e6bc50..40ee8dc 100644
--- a/euca2ools/commands/argtypes.py
+++ b/euca2ools/commands/argtypes.py
@@ -134,3 +134,11 @@ def ternary_tag_def(tag_str):
         return {'Key': key, 'Value': val or EMPTY}
     else:
         return {'Key': tag_str}
+
+def delimited_list(delimiter):
+    def _concrete_delimited_list(list_as_str):
+        if isinstance(list_as_str, str) and len(list_as_str) > 0:
+            return list(filter(None, list_as_str.split(',')))
+        else:
+            return []
+    return _concrete_delimited_list
diff --git a/euca2ools/commands/autoscaling/createautoscalinggroup.py b/euca2ools/commands/autoscaling/createautoscalinggroup.py
new file mode 100644
index 0000000..7c31347
--- /dev/null
+++ b/euca2ools/commands/autoscaling/createautoscalinggroup.py
@@ -0,0 +1,89 @@
+# Software License Agreement (BSD License)
+#
+# Copyright (c) 2013, Eucalyptus Systems, Inc.
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with or
+# without modification, are permitted provided that the following conditions
+# are met:
+#
+#   Redistributions of source code must retain the above
+#   copyright notice, this list of conditions and the
+#   following disclaimer.
+#
+#   Redistributions in binary form must reproduce the above
+#   copyright notice, this list of conditions and the
+#   following disclaimer in the documentation and/or other
+#   materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+from requestbuilder import Arg
+from euca2ools.commands.argtypes import delimited_list
+from euca2ools.commands.autoscaling import AutoScalingRequest
+from euca2ools.commands.autoscaling.argtypes import autoscaling_tag_def
+
+
+class CreateAutoScalingGroup(AutoScalingRequest):
+    DESCRIPTION = 'Create a new auto-scaling group'
+    ARGS = [Arg('AutoScalingGroupName', metavar='NAME',
+                help='name of the new auto-scaling group (required)'),
+            Arg('-l', '--launch-configuration', dest='LaunchConfigurationName',
+                metavar='LAUNCHCONFIG', required=True, help='''name of the
+                launch configuration to use with the new group (required)'''),
+            Arg('-M', '--max-size', dest='MaxSize', metavar='COUNT', type=int,
+                required=True, help='maximum group size (required)'),
+            Arg('-m', '--min-size', dest='MinSize', metavar='COUNT', type=int,
+                required=True, help='minimum group size (required)'),
+            Arg('--availability-zones', dest='AvailabilityZones.member',
+                metavar='ZONE,ZONE,...', type=delimited_list(','),
+                help='''comma-separated list of availability zones for the new
+                group (required unless subnets are supplied)'''),
+            Arg('--default-cooldown', dest='DefaultCooldown',
+                metavar='SECONDS', type=int,
+                help='''amount of time, in seconds, after a scaling activity
+                        completes before any further trigger-related scaling
+                        activities may start'''),
+            Arg('--desired-capacity', dest='DesiredCapacity', metavar='COUNT',
+                type=int,
+                help='number of running instances the group should contain'),
+            Arg('--grace-period', dest='HealthCheckGracePeriod',
+                metavar='SECONDS', type=int, help='''number of seconds to wait
+                before starting health checks on newly-created instances'''),
+            Arg('--health-check-type', dest='HealthCheckType',
+                choices=('EC2', 'ELB'),
+                help='service to obtain health check status from'),
+            Arg('--load-balancers', dest='LoadBalancerNames.member',
+                metavar='ELB,ELB,...', type=delimited_list(','),
+                help='comma-separated list of load balancers to use'),
+            Arg('--placement-group', dest='PlacementGroup',
+                help='placement group in which to launch new instances'),
+            Arg('--tag', dest='Tags.member', type=autoscaling_tag_def,
+                action='append', metavar=('"k=VALUE, id=VALUE, t=VALUE, '
+                'v=VALUE, p={true,false}"'), help=('''
+                tags to create or update.  Tags follow the following format:
+                "id=resource-name, t=resource-type, k=tag-key, v=tag-val,
+                p=propagate-at-launch-flag", where k is the tag's name, v is
+                the tag's value, id is a resource ID, t is a resource type, and
+                p is whether to propagate tags to instances created by the new
+                group.  A value for 'k=' is required for each tag.  The
+                remainders are optional.''')),
+            Arg('--termination-policies', dest='TerminationPolicies.member',
+                metavar='POLICY,POLICY,...', type=delimited_list(','),
+                help='''ordered list of termination policies.  The first has
+                the highest precedence.'''),
+            Arg('--vpc-zone-identifier', dest='VPCZoneIdentifier',
+                metavar='ZONE,ZONE,...',
+                help='''comma-separated list of subnet identifiers.  If you
+                specify availability zones as well, ensure the subnets'
+                availability zones match the ones you specified''')]

-- 
managing cloud instances for Eucalyptus



More information about the pkg-eucalyptus-commits mailing list