class GeoEngineer::Resources::AwsRoute

AwsRoute is the aws_route terrform resource,

{www.terraform.io/docs/providers/aws/r/route.html Terraform Docs}

Public Class Methods

_extract_routes(route_table) click to toggle source
# File lib/geoengineer/resources/aws_route.rb, line 37
def self._extract_routes(route_table)
  route_table[:routes]&.map do |route|
    id = "r-#{route_table[:route_table_id]}#{Crc32.hashcode(route[:destination_cidr_block])}"
    route.merge(
      {
        route_table_id: route_table[:route_table_id],
        _terraform_id: id,
        _geo_id: "#{route_table[:route_table_id]}::#{route[:destination_cidr_block]}"
      }
    )
  end
end
_fetch_remote_resources(provider) click to toggle source
# File lib/geoengineer/resources/aws_route.rb, line 25
def self._fetch_remote_resources(provider)
  AwsClients
    .ec2(provider)
    .describe_route_tables['route_tables']
    .map(&:to_h)
    .map { |route_table| _extract_routes(route_table) }
    .flatten
    .compact
    .reject { |route| route[:gateway_id] == "local" }
    .reject { |route| route.key?(:destination_prefix_list_id) }
end

Public Instance Methods

support_tags?() click to toggle source
# File lib/geoengineer/resources/aws_route.rb, line 21
def support_tags?
  false
end
to_terraform_state() click to toggle source
# File lib/geoengineer/resources/aws_route.rb, line 12
def to_terraform_state
  tfstate = super
  tfstate[:primary][:attributes] = {
    'route_table_id' => route_table_id,
    'destination_cidr_block' => destination_cidr_block
  }
  tfstate
end