# Path: boto/exception.py
# class BotoClientError(StandardError):
#     """
#     General Boto Client error (error accessing AWS)
#     """
# 
#     def __init__(self, reason, *args):
#         StandardError.__init__(self, reason, *args)
#         self.reason = reason
# 
#     def __repr__(self):
#         return 'BotoClientError: %s' % self.reason
# 
#     def __str__(self):
#         return 'BotoClientError: %s' % self.reason


from boto.ec2.ec2object import TaggedEC2Object
from boto.exception import BotoClientError
        status = self.connection.revoke_security_group(self.name,
                                                       src_group_name,
                                                       src_group_owner_id,
                                                       ip_protocol,
                                                       from_port,
                                                       to_port,
                                                       cidr_ip)
        if status:
            self.remove_rule(ip_protocol, from_port, to_port, src_group_name,
                             src_group_owner_id, cidr_ip)
        return status

    def copy_to_region(self, region, name=None):
        """
        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:

# Path: boto/exception.py
# class BotoClientError(StandardError):
#     """
#     General Boto Client error (error accessing AWS)
#     """
# 
#     def __init__(self, reason, *args):
#         StandardError.__init__(self, reason, *args)
#         self.reason = reason
# 
#     def __repr__(self):
#         return 'BotoClientError: %s' % self.reason
# 
#     def __str__(self):
#         return 'BotoClientError: %s' % self.reason


# Path: boto/ec2/securitygroup.py
from boto.ec2.ec2object import TaggedEC2Object
from boto.exception import BotoClientError

        status = self.connection.revoke_security_group(self.name,
                                                       src_group_name,
                                                       src_group_owner_id,
                                                       ip_protocol,
                                                       from_port,
                                                       to_port,
                                                       cidr_ip)
        if status:
            self.remove_rule(ip_protocol, from_port, to_port, src_group_name,
                             src_group_owner_id, cidr_ip)
        return status

    def copy_to_region(self, region, name=None):
        """
        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')