class AWS::EC2::SecurityGroup::IpPermissionCollection

def _each_item options = {}

def _each_item options = {}
  list_method = 'ip_permissions_list'
  list_method += '_egress' if egress?
  security_group.send(list_method).each do |p|
    # egress permissions don't always have ports
    ports = p[:from_port] ? [p[:from_port], p[:to_port]] : nil
    ip_ranges = p[:ip_ranges].collect{|ip| ip[:cidr_ip] }
    groups = p[:groups].collect do |group|
      SecurityGroup.new(group[:group_id],
        :owner_id => group[:user_id],
        :vpc_id => security_group.vpc_id,
        :config => config)
    end
    permission = IpPermission.new(security_group, p[:ip_protocol], ports,
      :ip_ranges => ip_ranges,
      :groups => groups,
      :egress => egress?,
      :config => config)
    yield(permission)
  end
end

def initialize security_group, options = {}

def initialize security_group, options = {}
  @security_group = security_group
  @egress = !!options[:egress]
  super
end