Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(572)

Unified Diff: third_party/gsutil/boto/boto/ec2/autoscale/policy.py

Issue 12042069: Scripts to download files from google storage based on sha1 sums (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Review fixes, updated gsutil Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/gsutil/boto/boto/ec2/autoscale/policy.py
diff --git a/third_party/gsutil/boto/boto/ec2/autoscale/policy.py b/third_party/gsutil/boto/boto/ec2/autoscale/policy.py
new file mode 100644
index 0000000000000000000000000000000000000000..adcdbdc8ee330bd27cbfa3bd2d59a8787abf3dfc
--- /dev/null
+++ b/third_party/gsutil/boto/boto/ec2/autoscale/policy.py
@@ -0,0 +1,166 @@
+# Copyright (c) 2009-2010 Reza Lotun http://reza.lotun.name/
+# Copyright (c) 2011 Jann Kleen
+#
+# 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.
+
+from boto.resultset import ResultSet
+from boto.ec2.elb.listelement import ListElement
+
+class Alarm(object):
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.name = None
+ self.alarm_arn = None
+
+ def __repr__(self):
+ return 'Alarm:%s' % self.name
+
+ def startElement(self, name, attrs, connection):
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == 'AlarmName':
+ self.name = value
+ elif name == 'AlarmARN':
+ self.alarm_arn = value
+ else:
+ setattr(self, name, value)
+
+
+class AdjustmentType(object):
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.adjustment_types = ListElement([])
+
+ def __repr__(self):
+ return 'AdjustmentType:%s' % self.adjustment_types
+
+ def startElement(self, name, attrs, connection):
+ if name == 'AdjustmentType':
+ return self.adjustment_types
+
+ def endElement(self, name, value, connection):
+ return
+
+
+class MetricCollectionTypes(object):
+ class BaseType(object):
+ arg = ''
+ def __init__(self, connection):
+ self.connection = connection
+ self.val = None
+ def __repr__(self):
+ return '%s:%s' % (self.arg, self.val)
+ def startElement(self, name, attrs, connection):
+ return
+ def endElement(self, name, value, connection):
+ if name == self.arg:
+ self.val = value
+ class Metric(BaseType):
+ arg = 'Metric'
+ class Granularity(BaseType):
+ arg = 'Granularity'
+
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.metrics = []
+ self.granularities = []
+
+ def __repr__(self):
+ return 'MetricCollectionTypes:<%s, %s>' % (self.metrics, self.granularities)
+
+ def startElement(self, name, attrs, connection):
+ if name == 'Granularities':
+ self.granularities = ResultSet([('member', self.Granularity)])
+ return self.granularities
+ elif name == 'Metrics':
+ self.metrics = ResultSet([('member', self.Metric)])
+ return self.metrics
+
+ def endElement(self, name, value, connection):
+ return
+
+
+class ScalingPolicy(object):
+ def __init__(self, connection=None, **kwargs):
+ """
+ Scaling Policy
+
+ :type name: str
+ :param name: Name of scaling policy.
+
+ :type adjustment_type: str
+ :param adjustment_type: Specifies the type of adjustment. Valid values are `ChangeInCapacity`, `ExactCapacity` and `PercentChangeInCapacity`.
+
+ :type as_name: str or int
+ :param as_name: Name or ARN of the Auto Scaling Group.
+
+ :type scaling_adjustment: int
+ :param scaling_adjustment: Value of adjustment (type specified in `adjustment_type`).
+
+ :type cooldown: int
+ :param cooldown: Time (in seconds) before Alarm related Scaling Activities can start after the previous Scaling Activity ends.
+
+ """
+ self.name = kwargs.get('name', None)
+ self.adjustment_type = kwargs.get('adjustment_type', None)
+ self.as_name = kwargs.get('as_name', None)
+ self.scaling_adjustment = kwargs.get('scaling_adjustment', None)
+ self.cooldown = kwargs.get('cooldown', None)
+ self.connection = connection
+
+ def __repr__(self):
+ return 'ScalingPolicy(%s group:%s adjustment:%s)' % (self.name,
+ self.as_name,
+ self.adjustment_type)
+
+ def startElement(self, name, attrs, connection):
+ if name == 'Alarms':
+ self.alarms = ResultSet([('member', Alarm)])
+ return self.alarms
+
+ def endElement(self, name, value, connection):
+ if name == 'PolicyName':
+ self.name = value
+ elif name == 'AutoScalingGroupName':
+ self.as_name = value
+ elif name == 'PolicyARN':
+ self.policy_arn = value
+ elif name == 'ScalingAdjustment':
+ self.scaling_adjustment = int(value)
+ elif name == 'Cooldown':
+ self.cooldown = int(value)
+ elif name == 'AdjustmentType':
+ self.adjustment_type = value
+
+ def delete(self):
+ return self.connection.delete_policy(self.name, self.as_name)
+
+
+class TerminationPolicies(list):
+ def __init__(self, connection=None, **kwargs):
+ pass
+
+ def startElement(self, name, attrs, connection):
+ pass
+
+ def endElement(self, name, value, connection):
+ if name == 'member':
+ self.append(value)

Powered by Google App Engine
This is Rietveld 408576698