[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:33 UTC 2013


The following commit has been merged in the master branch:
commit ddbd3dade3f923df326f4047d251a777fe8ad528
Author: Garrett Holmstrom <gholms at fedoraproject.org>
Date:   Thu Feb 28 18:33:53 2013 -0800

    Implement TerminateInstanceInAutoScalingGroup
    
    Fixes TOOLS-212

diff --git a/bin/kilo-terminate-instance-in-auto-scaling-group b/bin/kilo-terminate-instance-in-auto-scaling-group
new file mode 100755
index 0000000..ce5c234
--- /dev/null
+++ b/bin/kilo-terminate-instance-in-auto-scaling-group
@@ -0,0 +1,6 @@
+#!/usr/bin/python -tt
+
+import euca2ools.commands.autoscaling.terminateinstanceinautoscalinggroup
+
+if __name__ == '__main__':
+    euca2ools.commands.autoscaling.terminateinstanceinautoscalinggroup.TerminateInstanceInAutoScalingGroup.run()
diff --git a/euca2ools/commands/autoscaling/terminateinstanceinautoscalinggroup.py b/euca2ools/commands/autoscaling/terminateinstanceinautoscalinggroup.py
new file mode 100644
index 0000000..d2ce3f5
--- /dev/null
+++ b/euca2ools/commands/autoscaling/terminateinstanceinautoscalinggroup.py
@@ -0,0 +1,68 @@
+# 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.
+
+import argparse
+from euca2ools.commands.autoscaling import AutoScalingRequest
+from requestbuilder import Arg, MutuallyExclusiveArgList
+from requestbuilder.mixins import TabifyingCommand
+
+
+class TerminateInstanceInAutoScalingGroup(AutoScalingRequest, TabifyingCommand):
+    DESCRIPTION = "Manually terminate an auto-scaling instance"
+    ARGS = [Arg('InstanceId', metavar='INSTANCE',
+                help='ID of the instance to terminate (required)'),
+            MutuallyExclusiveArgList(True,
+                Arg('-d', '--decrement-desired-capacity', action='store_const',
+                    dest='ShouldDecrementDesiredCapacity', const='true',
+                    help='''also reduce the desired capacity of the
+                    auto-scaling group by 1'''),
+                Arg('-D', '--no-decrement-desired-capacity', const='false',
+                    dest='ShouldDecrementDesiredCapacity', action='store_const',
+                    help='''leave the auto-scaling group's desired capacity
+                            as-is.  A new instance will be launched to
+                            compensate for this one.''')),
+            Arg('--show-long', action='store_true', route_to=None,
+                help='show extra info about the instance being terminated'),
+            Arg('-f', '--force', action='store_true', route_to=None,
+                help=argparse.SUPPRESS)]  # for compatibility
+
+    def print_result(self, result):
+        activity = result['Activity']
+        bits = ['INSTANCE']
+        bits.append(activity.get('ActivityId'))
+        bits.append(activity.get('EndTime'))
+        bits.append(activity.get('StatusCode'))
+        bits.append(activity.get('Cause'))
+        if self.args['show_long']:
+            bits.append(activity.get('StatusMessage'))
+            bits.append(activity.get('Progress'))
+            bits.append(activity.get('Description'))
+            bits.append(activity.get('StartTime'))
+        print self.tabify(bits)

-- 
managing cloud instances for Eucalyptus



More information about the pkg-eucalyptus-commits mailing list