Module: AwsInventory::SecurityGroup::Shared

Included in:
Open, Summary, Unused
Defined in:
lib/aws_inventory/security_group/shared.rb

Instance Method Summary collapse

Instance Method Details

#unused_security_groupsObject



19
20
21
22
# File 'lib/aws_inventory/security_group/shared.rb', line 19

def unused_security_groups
  used_group_ids = used_security_groups.map(&:group_id)
  security_groups.reject {|sg| used_group_ids.include?(sg.group_id) }
end

#used_security_groupsObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/aws_inventory/security_group/shared.rb', line 2

def used_security_groups
  groups = instances.inject([]) do |results, i|
    results += i.security_groups # returns Aws::EC2::Types::GroupIdentifier
    results
  end
  instance_groups = groups.uniq(&:group_id)

  v1_group_ids = elbv1.describe_load_balancers.load_balancer_descriptions.map(&:security_groups).flatten
  v2_group_ids = elbv2.describe_load_balancers.load_balancers.map(&:security_groups).flatten
  elb_group_ids = v1_group_ids + v2_group_ids
  elb_groups = security_groups.select { |sg| elb_group_ids.include?(sg.group_id) } # returns Aws::EC2::Types::SecurityGroup

  # Ducktyping: the types are different by they both respond to the group_id method.
  all_groups = instance_groups + elb_groups
  all_groups.uniq(&:group_id)
end