def describe_security_groups(list=[])
link = generate_request("DescribeSecurityGroups", hash_params('GroupName',list.to_a))
request_cache_or_info( :describe_security_groups, link, QEc2DescribeSecurityGroupsParser, list.blank?) do |parser|
result = []
parser.result.each do |item|
perms = []
item.ipPermissions.each do |perm|
perm.groups.each do |ngroup|
perms << {:group => ngroup.groupName,
:owner => ngroup.userId}
end
perm.ipRanges.each do |cidr_ip|
perms << {:from_port => perm.fromPort,
:to_port => perm.toPort,
:protocol => perm.ipProtocol,
:cidr_ips => cidr_ip}
end
end
perms.each_index do |i|
(0...i).each do |j|
if perms[i] == perms[j] then perms[i] = nil; break; end
end
end
perms.compact!
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