def describe_security_groups(list=[])
link = generate_request("DescribeSecurityGroups", hash_params('GroupName', list.to_a))
request_cache_or_info(:describe_security_groups, link, QEc2DescribeSecurityGroupsParser, @@bench, list.nil? || list.empty?) do |parser|
result = []
parser.result.each do |item|
perms = []
item.ipPermissions.each do |perm|
current = {:from_port => perm.fromPort,
:to_port => perm.toPort,
:protocol => perm.ipProtocol,
:groups => [], :ip_ranges => []}
perm.groups.each do |ngroup|
current[:groups] << {:group_name => ngroup.groupName, :owner => ngroup.userId}
end
perm.ipRanges.each do |cidr_ip|
current[:ip_ranges] << {:cidr_ip => cidr_ip.cidrIp}
end
perms << current
end
result << {:aws_owner => item.ownerId,
:aws_group_name => item.groupName,
:aws_description => item.groupDescription,
:aws_perms => perms}
end
result
end
rescue Exception
on_exception
end