Method: Awspec::Generator::Spec::SecurityGroup#generate_by_vpc_id

Defined in:
lib/awspec/generator/spec/security_group.rb

#generate_by_vpc_id(vpc_id) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/awspec/generator/spec/security_group.rb', line 7

def generate_by_vpc_id(vpc_id)
  describes = %w[
    group_id group_name
  ]
  vpc = find_vpc(vpc_id)
  raise 'Not Found VPC' unless vpc

  @vpc_id = vpc[:vpc_id]
  @vpc_tag_name = vpc.tag_name
  sgs = select_security_group_by_vpc_id(@vpc_id)

  specs = sgs.map do |sg|
    linespecs = generate_linespecs(sg)
    inbound_rule_count = sg[:ip_permissions].reduce(0) do |sum, permission|
      sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
    end
    outbound_rule_count = sg[:ip_permissions_egress].reduce(0) do |sum, permission|
      sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
    end
    content = ERB.new(security_group_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
  end
  specs.join("\n")
end