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

Unified Diff: third_party/gsutil/boto/boto/ec2/elb/loadbalancer.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/elb/loadbalancer.py
diff --git a/third_party/gsutil/boto/boto/ec2/elb/loadbalancer.py b/third_party/gsutil/boto/boto/ec2/elb/loadbalancer.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b80d79ff18706b387db91afbb0b9e1d1e493d7e
--- /dev/null
+++ b/third_party/gsutil/boto/boto/ec2/elb/loadbalancer.py
@@ -0,0 +1,324 @@
+# Copyright (c) 2006-2012 Mitch Garnaat http://garnaat.org/
+# Copyright (c) 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved
+#
+# 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.ec2.elb.healthcheck import HealthCheck
+from boto.ec2.elb.listener import Listener
+from boto.ec2.elb.listelement import ListElement
+from boto.ec2.elb.policies import Policies
+from boto.ec2.elb.securitygroup import SecurityGroup
+from boto.ec2.instanceinfo import InstanceInfo
+from boto.resultset import ResultSet
+
+
+class LoadBalancerZones(object):
+ """
+ Used to collect the zones for a Load Balancer when enable_zones
+ or disable_zones are called.
+ """
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.zones = ListElement()
+
+ def startElement(self, name, attrs, connection):
+ if name == 'AvailabilityZones':
+ return self.zones
+
+
+class LoadBalancer(object):
+ """
+ Represents an EC2 Load Balancer.
+ """
+
+ def __init__(self, connection=None, name=None, endpoints=None):
+ """
+ :ivar boto.ec2.elb.ELBConnection connection: The connection this load
+ balancer was instance was instantiated from.
+ :ivar list listeners: A list of tuples in the form of
+ ``(<Inbound port>, <Outbound port>, <Protocol>)``
+ :ivar boto.ec2.elb.healthcheck.HealthCheck health_check: The health
+ check policy for this load balancer.
+ :ivar boto.ec2.elb.policies.Policies policies: Cookie stickiness and
+ other policies.
+ :ivar str dns_name: The external DNS name for the balancer.
+ :ivar str created_time: A date+time string showing when the
+ load balancer was created.
+ :ivar list instances: A list of :py:class:`boto.ec2.instanceinfo.InstanceInfo`
+ instances, representing the EC2 instances this load balancer is
+ distributing requests to.
+ :ivar list availability_zones: The availability zones this balancer
+ covers.
+ :ivar str canonical_hosted_zone_name: Current CNAME for the balancer.
+ :ivar str canonical_hosted_zone_name_id: The Route 53 hosted zone
+ ID of this balancer. Needed when creating an Alias record in a
+ Route 53 hosted zone.
+ :ivar boto.ec2.elb.securitygroup.SecurityGroup source_security_group:
+ The security group that you can use as part of your inbound rules
+ for your load balancer back-end instances to disallow traffic
+ from sources other than your load balancer.
+ :ivar list subnets: A list of subnets this balancer is on.
+ :ivar list security_groups: A list of additional security groups that
+ have been applied.
+ :ivar str vpc_id: The ID of the VPC that this ELB resides within.
+ """
+ self.connection = connection
+ self.name = name
+ self.listeners = None
+ self.health_check = None
+ self.policies = None
+ self.dns_name = None
+ self.created_time = None
+ self.instances = None
+ self.availability_zones = ListElement()
+ self.canonical_hosted_zone_name = None
+ self.canonical_hosted_zone_name_id = None
+ self.source_security_group = None
+ self.subnets = ListElement()
+ self.security_groups = ListElement()
+ self.vpc_id = None
+ self.scheme = None
+
+ def __repr__(self):
+ return 'LoadBalancer:%s' % self.name
+
+ def startElement(self, name, attrs, connection):
+ if name == 'HealthCheck':
+ self.health_check = HealthCheck(self)
+ return self.health_check
+ elif name == 'ListenerDescriptions':
+ self.listeners = ResultSet([('member', Listener)])
+ return self.listeners
+ elif name == 'AvailabilityZones':
+ return self.availability_zones
+ elif name == 'Instances':
+ self.instances = ResultSet([('member', InstanceInfo)])
+ return self.instances
+ elif name == 'Policies':
+ self.policies = Policies(self)
+ return self.policies
+ elif name == 'SourceSecurityGroup':
+ self.source_security_group = SecurityGroup()
+ return self.source_security_group
+ elif name == 'Subnets':
+ return self.subnets
+ elif name == 'SecurityGroups':
+ return self.security_groups
+ elif name == 'VPCId':
+ pass
+ else:
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == 'LoadBalancerName':
+ self.name = value
+ elif name == 'DNSName':
+ self.dns_name = value
+ elif name == 'CreatedTime':
+ self.created_time = value
+ elif name == 'InstanceId':
+ self.instances.append(value)
+ elif name == 'CanonicalHostedZoneName':
+ self.canonical_hosted_zone_name = value
+ elif name == 'CanonicalHostedZoneNameID':
+ self.canonical_hosted_zone_name_id = value
+ elif name == 'VPCId':
+ self.vpc_id = value
+ elif name == 'Scheme':
+ self.scheme = value
+ else:
+ setattr(self, name, value)
+
+ def enable_zones(self, zones):
+ """
+ Enable availability zones to this Access Point.
+ All zones must be in the same region as the Access Point.
+
+ :type zones: string or List of strings
+ :param zones: The name of the zone(s) to add.
+
+ """
+ if isinstance(zones, str) or isinstance(zones, unicode):
+ zones = [zones]
+ new_zones = self.connection.enable_availability_zones(self.name, zones)
+ self.availability_zones = new_zones
+
+ def disable_zones(self, zones):
+ """
+ Disable availability zones from this Access Point.
+
+ :type zones: string or List of strings
+ :param zones: The name of the zone(s) to add.
+
+ """
+ if isinstance(zones, str) or isinstance(zones, unicode):
+ zones = [zones]
+ new_zones = self.connection.disable_availability_zones(self.name, zones)
+ self.availability_zones = new_zones
+
+ def register_instances(self, instances):
+ """
+ Adds instances to this load balancer. All instances must be in the same
+ region as the load balancer. Adding endpoints that are already
+ registered with the load balancer has no effect.
+
+ :param list instances: List of instance IDs (strings) that you'd like
+ to add to this load balancer.
+
+ """
+ if isinstance(instances, str) or isinstance(instances, unicode):
+ instances = [instances]
+ new_instances = self.connection.register_instances(self.name,
+ instances)
+ self.instances = new_instances
+
+ def deregister_instances(self, instances):
+ """
+ Remove instances from this load balancer. Removing instances that are
+ not registered with the load balancer has no effect.
+
+ :param list instances: List of instance IDs (strings) that you'd like
+ to remove from this load balancer.
+
+ """
+ if isinstance(instances, str) or isinstance(instances, unicode):
+ instances = [instances]
+ new_instances = self.connection.deregister_instances(self.name,
+ instances)
+ self.instances = new_instances
+
+ def delete(self):
+ """
+ Delete this load balancer.
+ """
+ return self.connection.delete_load_balancer(self.name)
+
+ def configure_health_check(self, health_check):
+ """
+ Configures the health check behavior for the instances behind this
+ load balancer. See :ref:`elb-configuring-a-health-check` for a
+ walkthrough.
+
+ :param boto.ec2.elb.healthcheck.HealthCheck health_check: A
+ HealthCheck instance that tells the load balancer how to check
+ its instances for health.
+ """
+ return self.connection.configure_health_check(self.name, health_check)
+
+ def get_instance_health(self, instances=None):
+ """
+ Returns a list of :py:class:`boto.ec2.elb.instancestate.InstanceState`
+ objects, which show the health of the instances attached to this
+ load balancer.
+
+ :rtype: list
+ :returns: A list of
+ :py:class:`InstanceState <boto.ec2.elb.instancestate.InstanceState>`
+ instances, representing the instances
+ attached to this load balancer.
+ """
+ return self.connection.describe_instance_health(self.name, instances)
+
+ def create_listeners(self, listeners):
+ return self.connection.create_load_balancer_listeners(self.name,
+ listeners)
+
+ def create_listener(self, inPort, outPort=None, proto="tcp"):
+ if outPort == None:
+ outPort = inPort
+ return self.create_listeners([(inPort, outPort, proto)])
+
+ def delete_listeners(self, listeners):
+ return self.connection.delete_load_balancer_listeners(self.name,
+ listeners)
+
+ def delete_listener(self, inPort):
+ return self.delete_listeners([inPort])
+
+ def delete_policy(self, policy_name):
+ """
+ Deletes a policy from the LoadBalancer. The specified policy must not
+ be enabled for any listeners.
+ """
+ return self.connection.delete_lb_policy(self.name, policy_name)
+
+ def set_policies_of_listener(self, lb_port, policies):
+ return self.connection.set_lb_policies_of_listener(self.name,
+ lb_port,
+ policies)
+
+ def create_cookie_stickiness_policy(self, cookie_expiration_period,
+ policy_name):
+ return self.connection.create_lb_cookie_stickiness_policy(cookie_expiration_period, self.name, policy_name)
+
+ def create_app_cookie_stickiness_policy(self, name, policy_name):
+ return self.connection.create_app_cookie_stickiness_policy(name,
+ self.name,
+ policy_name)
+
+ def set_listener_SSL_certificate(self, lb_port, ssl_certificate_id):
+ return self.connection.set_lb_listener_SSL_certificate(self.name,
+ lb_port,
+ ssl_certificate_id)
+
+ def attach_subnets(self, subnets):
+ """
+ Attaches load balancer to one or more subnets.
+ Attaching subnets that are already registered with the
+ Load Balancer has no effect.
+
+ :type subnets: string or List of strings
+ :param subnets: The name of the subnet(s) to add.
+
+ """
+ if isinstance(subnets, str) or isinstance(subnets, unicode):
+ subnets = [subnets]
+ new_subnets = self.connection.attach_lb_to_subnets(self.name, subnets)
+ self.subnets = new_subnets
+
+ def detach_subnets(self, subnets):
+ """
+ Detaches load balancer from one or more subnets.
+
+ :type subnets: string or List of strings
+ :param subnets: The name of the subnet(s) to detach.
+
+ """
+ if isinstance(subnets, str) or isinstance(subnets, unicode):
+ subnets = [subnets]
+ new_subnets = self.connection.detach_lb_to_subnets(self.name, subnets)
+ self.subnets = new_subnets
+
+ def apply_security_groups(self, security_groups):
+ """
+ Applies security groups to the load balancer.
+ Applying security groups that are already registered with the
+ Load Balancer has no effect.
+
+ :type security_groups: string or List of strings
+ :param security_groups: The name of the security group(s) to add.
+
+ """
+ if isinstance(security_groups, str) or \
+ isinstance(security_groups, unicode):
+ security_groups = [security_groups]
+ new_sgs = self.connection.apply_security_groups_to_lb(
+ self.name, security_groups)
+ self.security_groups = new_sgs

Powered by Google App Engine
This is Rietveld 408576698