Sha256: 40cb0bc10001615f826892b443be33d8ac39451dce7fd07684d7c0edbc50efcf

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

# Provides access to default network settings for a vpc: subnets and security_group
# If no @vpc_id is provided to the initializer then the default vpc is used.
module Forger
  class Network
    include Forger::AwsServices
    extend Memoist

    def initialize(vpc_id)
      @vpc_id = vpc_id
    end

    def vpc_id
      return @vpc_id if @vpc_id

      resp = ec2.describe_vpcs(filters: [
        {name: "isDefault", values: ["true"]}
      ])
      default_vpc = resp.vpcs.first
      if default_vpc
        default_vpc.vpc_id
      else
        puts "A default vpc was not found in this AWS account and region.".color(:red)
        puts "Because there is no default vpc, please specify the --vpc-id option."
        exit 1
      end
    end
    memoize :vpc_id

    # all subnets
    def subnet_ids
      resp = ec2.describe_subnets(filters: [
        {name: "vpc-id", values: [vpc_id]}
      ])
      resp.subnets.map(&:subnet_id).sort
    end
    memoize :subnet_ids

    # default security group
    def security_group_id
      resp = ec2.describe_security_groups(filters: [
        {name: "vpc-id", values: [vpc_id]},
        {name: "group-name", values: ["default"]}
      ])
      resp.security_groups.first.group_id
    end
    memoize :security_group_id
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
forger-3.0.2 lib/forger/network.rb
forger-3.0.1 lib/forger/network.rb
forger-3.0.0 lib/forger/network.rb