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

Unified Diff: tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/securitygroup.py

Issue 1260493004: Revert "Add gsutil 4.13 to telemetry/third_party" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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: tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/securitygroup.py
diff --git a/tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/securitygroup.py b/tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/securitygroup.py
deleted file mode 100644
index dec49cb278dc499bc8e0348ec09814d84c44a9e8..0000000000000000000000000000000000000000
--- a/tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/securitygroup.py
+++ /dev/null
@@ -1,392 +0,0 @@
-# Copyright (c) 2006-2011 Mitch Garnaat http://garnaat.org/
-# Copyright (c) 2011, Eucalyptus Systems, Inc.
-#
-# 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.
-
-"""
-Represents an EC2 Security Group
-"""
-from boto.ec2.ec2object import TaggedEC2Object
-from boto.exception import BotoClientError
-
-
-class SecurityGroup(TaggedEC2Object):
-
- def __init__(self, connection=None, owner_id=None,
- name=None, description=None, id=None):
- super(SecurityGroup, self).__init__(connection)
- self.id = id
- self.owner_id = owner_id
- self.name = name
- self.description = description
- self.vpc_id = None
- self.rules = IPPermissionsList()
- self.rules_egress = IPPermissionsList()
-
- def __repr__(self):
- return 'SecurityGroup:%s' % self.name
-
- def startElement(self, name, attrs, connection):
- retval = super(SecurityGroup, self).startElement(name, attrs, connection)
- if retval is not None:
- return retval
- if name == 'ipPermissions':
- return self.rules
- elif name == 'ipPermissionsEgress':
- return self.rules_egress
- else:
- return None
-
- def endElement(self, name, value, connection):
- if name == 'ownerId':
- self.owner_id = value
- elif name == 'groupId':
- self.id = value
- elif name == 'groupName':
- self.name = value
- elif name == 'vpcId':
- self.vpc_id = value
- elif name == 'groupDescription':
- self.description = value
- elif name == 'ipRanges':
- pass
- elif name == 'return':
- if value == 'false':
- self.status = False
- elif value == 'true':
- self.status = True
- else:
- raise Exception(
- 'Unexpected value of status %s for group %s' % (
- value,
- self.name
- )
- )
- else:
- setattr(self, name, value)
-
- def delete(self, dry_run=False):
- if self.vpc_id:
- return self.connection.delete_security_group(
- group_id=self.id,
- dry_run=dry_run
- )
- else:
- return self.connection.delete_security_group(
- self.name,
- dry_run=dry_run
- )
-
- def add_rule(self, ip_protocol, from_port, to_port,
- src_group_name, src_group_owner_id, cidr_ip,
- src_group_group_id, dry_run=False):
- """
- Add a rule to the SecurityGroup object. Note that this method
- only changes the local version of the object. No information
- is sent to EC2.
- """
- rule = IPPermissions(self)
- rule.ip_protocol = ip_protocol
- rule.from_port = from_port
- rule.to_port = to_port
- self.rules.append(rule)
- rule.add_grant(
- src_group_name,
- src_group_owner_id,
- cidr_ip,
- src_group_group_id,
- dry_run=dry_run
- )
-
- def remove_rule(self, ip_protocol, from_port, to_port,
- src_group_name, src_group_owner_id, cidr_ip,
- src_group_group_id, dry_run=False):
- """
- Remove a rule to the SecurityGroup object. Note that this method
- only changes the local version of the object. No information
- is sent to EC2.
- """
- if not self.rules:
- raise ValueError("The security group has no rules")
-
- target_rule = None
- for rule in self.rules:
- if rule.ip_protocol == ip_protocol:
- if rule.from_port == from_port:
- if rule.to_port == to_port:
- target_rule = rule
- target_grant = None
- for grant in rule.grants:
- if grant.name == src_group_name or grant.group_id == src_group_group_id:
- if grant.owner_id == src_group_owner_id:
- if grant.cidr_ip == cidr_ip:
- target_grant = grant
- if target_grant:
- rule.grants.remove(target_grant)
- if len(rule.grants) == 0:
- self.rules.remove(target_rule)
-
- def authorize(self, ip_protocol=None, from_port=None, to_port=None,
- cidr_ip=None, src_group=None, dry_run=False):
- """
- Add a new rule to this security group.
- You need to pass in either src_group_name
- OR ip_protocol, from_port, to_port,
- and cidr_ip. In other words, either you are authorizing another
- group or you are authorizing some ip-based rule.
-
- :type ip_protocol: string
- :param ip_protocol: Either tcp | udp | icmp
-
- :type from_port: int
- :param from_port: The beginning port number you are enabling
-
- :type to_port: int
- :param to_port: The ending port number you are enabling
-
- :type cidr_ip: string or list of strings
- :param cidr_ip: The CIDR block you are providing access to.
- See http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
-
- :type src_group: :class:`boto.ec2.securitygroup.SecurityGroup` or
- :class:`boto.ec2.securitygroup.GroupOrCIDR`
- :param src_group: The Security Group you are granting access to.
-
- :rtype: bool
- :return: True if successful.
- """
- group_name = None
- if not self.vpc_id:
- group_name = self.name
- group_id = None
- if self.vpc_id:
- group_id = self.id
- src_group_name = None
- src_group_owner_id = None
- src_group_group_id = None
- if src_group:
- cidr_ip = None
- src_group_owner_id = src_group.owner_id
- if not self.vpc_id:
- src_group_name = src_group.name
- else:
- if hasattr(src_group, 'group_id'):
- src_group_group_id = src_group.group_id
- else:
- src_group_group_id = src_group.id
- status = self.connection.authorize_security_group(group_name,
- src_group_name,
- src_group_owner_id,
- ip_protocol,
- from_port,
- to_port,
- cidr_ip,
- group_id,
- src_group_group_id,
- dry_run=dry_run)
- if status:
- if not isinstance(cidr_ip, list):
- cidr_ip = [cidr_ip]
- for single_cidr_ip in cidr_ip:
- self.add_rule(ip_protocol, from_port, to_port, src_group_name,
- src_group_owner_id, single_cidr_ip,
- src_group_group_id, dry_run=dry_run)
- return status
-
- def revoke(self, ip_protocol=None, from_port=None, to_port=None,
- cidr_ip=None, src_group=None, dry_run=False):
- group_name = None
- if not self.vpc_id:
- group_name = self.name
- group_id = None
- if self.vpc_id:
- group_id = self.id
- src_group_name = None
- src_group_owner_id = None
- src_group_group_id = None
- if src_group:
- cidr_ip = None
- src_group_owner_id = src_group.owner_id
- if not self.vpc_id:
- src_group_name = src_group.name
- else:
- if hasattr(src_group, 'group_id'):
- src_group_group_id = src_group.group_id
- else:
- src_group_group_id = src_group.id
- status = self.connection.revoke_security_group(group_name,
- src_group_name,
- src_group_owner_id,
- ip_protocol,
- from_port,
- to_port,
- cidr_ip,
- group_id,
- src_group_group_id,
- dry_run=dry_run)
- if status:
- self.remove_rule(ip_protocol, from_port, to_port, src_group_name,
- src_group_owner_id, cidr_ip, src_group_group_id,
- dry_run=dry_run)
- return status
-
- def copy_to_region(self, region, name=None, dry_run=False):
- """
- Create a copy of this security group in another region.
- Note that the new security group will be a separate entity
- and will not stay in sync automatically after the copy
- operation.
-
- :type region: :class:`boto.ec2.regioninfo.RegionInfo`
- :param region: The region to which this security group will be copied.
-
- :type name: string
- :param name: The name of the copy. If not supplied, the copy
- will have the same name as this security group.
-
- :rtype: :class:`boto.ec2.securitygroup.SecurityGroup`
- :return: The new security group.
- """
- if region.name == self.region:
- raise BotoClientError('Unable to copy to the same Region')
- conn_params = self.connection.get_params()
- rconn = region.connect(**conn_params)
- sg = rconn.create_security_group(
- name or self.name,
- self.description,
- dry_run=dry_run
- )
- source_groups = []
- for rule in self.rules:
- for grant in rule.grants:
- grant_nom = grant.name or grant.group_id
- if grant_nom:
- if grant_nom not in source_groups:
- source_groups.append(grant_nom)
- sg.authorize(None, None, None, None, grant,
- dry_run=dry_run)
- else:
- sg.authorize(rule.ip_protocol, rule.from_port, rule.to_port,
- grant.cidr_ip, dry_run=dry_run)
- return sg
-
- def instances(self, dry_run=False):
- """
- Find all of the current instances that are running within this
- security group.
-
- :rtype: list of :class:`boto.ec2.instance.Instance`
- :return: A list of Instance objects
- """
- rs = []
- if self.vpc_id:
- rs.extend(self.connection.get_all_reservations(
- filters={'instance.group-id': self.id},
- dry_run=dry_run
- ))
- else:
- rs.extend(self.connection.get_all_reservations(
- filters={'group-id': self.id},
- dry_run=dry_run
- ))
- instances = [i for r in rs for i in r.instances]
- return instances
-
-
-class IPPermissionsList(list):
-
- def startElement(self, name, attrs, connection):
- if name == 'item':
- self.append(IPPermissions(self))
- return self[-1]
- return None
-
- def endElement(self, name, value, connection):
- pass
-
-
-class IPPermissions(object):
-
- def __init__(self, parent=None):
- self.parent = parent
- self.ip_protocol = None
- self.from_port = None
- self.to_port = None
- self.grants = []
-
- def __repr__(self):
- return 'IPPermissions:%s(%s-%s)' % (self.ip_protocol,
- self.from_port, self.to_port)
-
- def startElement(self, name, attrs, connection):
- if name == 'item':
- self.grants.append(GroupOrCIDR(self))
- return self.grants[-1]
- return None
-
- def endElement(self, name, value, connection):
- if name == 'ipProtocol':
- self.ip_protocol = value
- elif name == 'fromPort':
- self.from_port = value
- elif name == 'toPort':
- self.to_port = value
- else:
- setattr(self, name, value)
-
- def add_grant(self, name=None, owner_id=None, cidr_ip=None, group_id=None,
- dry_run=False):
- grant = GroupOrCIDR(self)
- grant.owner_id = owner_id
- grant.group_id = group_id
- grant.name = name
- grant.cidr_ip = cidr_ip
- self.grants.append(grant)
- return grant
-
-
-class GroupOrCIDR(object):
-
- def __init__(self, parent=None):
- self.owner_id = None
- self.group_id = None
- self.name = None
- self.cidr_ip = None
-
- def __repr__(self):
- if self.cidr_ip:
- return '%s' % self.cidr_ip
- else:
- return '%s-%s' % (self.name or self.group_id, self.owner_id)
-
- def startElement(self, name, attrs, connection):
- return None
-
- def endElement(self, name, value, connection):
- if name == 'userId':
- self.owner_id = value
- elif name == 'groupId':
- self.group_id = value
- elif name == 'groupName':
- self.name = value
- if name == 'cidrIp':
- self.cidr_ip = value
- else:
- setattr(self, name, value)

Powered by Google App Engine
This is Rietveld 408576698