Class: Inventory::Rds::Port

Inherits:
Base
  • Object
show all
Includes:
Shared
Defined in:
lib/inventory/rds/port.rb

Instance Method Summary collapse

Methods included from Shared

#db_instances, #lookup_vpc_name, #pretty_vpc_security_group, #security_group_names, #vpc_name, #vpc_security_groups, #vpcs

Methods inherited from Base

eager_load!, inherited, #initialize, #report, #show, #sort, subclasses, #test_mode

Methods included from AwsServices

#acm, #cfn, #cw, #eb, #ec2, #ecs, #elbv1, #elbv2, #iam, #pricing, #rds, #route53

Methods included from Shared

#instances, #security_groups

Constructor Details

This class inherits a constructor from Inventory::Base

Instance Method Details

#dataObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/inventory/rds/port.rb', line 9

def data
  data = []
  db_instances.each do |db|
    db_security_groups = vpc_security_groups(db)
    db_security_groups.each do |sg|

      sg.ip_permissions.each do |permission|
        data << [
          db.db_name,
          "#{sg.group_id} (#{sg.group_name})",
          ip_range_and_source(permission),
          port(permission)
        ]
      end

    end
  end
  data
end

#headerObject



5
6
7
# File 'lib/inventory/rds/port.rb', line 5

def header
  ["RDS Db Name", "Security Group", "Range/Source", "Port"]
end

#ip_range_and_source(permission) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/inventory/rds/port.rb', line 38

def ip_range_and_source(permission)
  cidr_ips = permission.ip_ranges.map {|range| range.cidr_ip }
  user_id_group_pairs = permission.user_id_group_pairs.map do |pair|
    # pair.group_name is always returning nil :( Might be AWS bug
    # so fetching it from security groups themselves
    sg = security_groups.find {|sg| sg.group_id == pair.group_id }
    sg_name = " (#{sg.group_name})" if sg

    "#{pair.group_id}#{sg_name}" # pretty format
  end
  result = cidr_ips + user_id_group_pairs
  result.join(', ')
end

#port(permission) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/inventory/rds/port.rb', line 29

def port(permission)
  ports = [permission.from_port, permission.to_port].uniq
  if ports.size > 1
    raise "TODO: account for port ranges"
  else
    ports.first
  end
end