lib/terraforming/resource/nat_gateway.rb
module Terraforming
module Resource
class NATGateway
include Terraforming::Util
def self.tf(client: Aws::EC2::Client.new)
self.new(client).tf
end
def self.tfstate(client: Aws::EC2::Client.new)
self.new(client).tfstate
end
def initialize(client)
@client = client
end
def tf
apply_template(@client, "tf/nat_gateway")
end
def tfstate
nat_gateways.inject({}) do |resources, nat_gateway|
next resources if nat_gateway.nat_gateway_addresses.empty?
attributes = {
"id" => nat_gateway.nat_gateway_id,
"allocation_id" => nat_gateway.nat_gateway_addresses[0].allocation_id,
"subnet_id" => nat_gateway.subnet_id,
"network_inferface_id" => nat_gateway.nat_gateway_addresses[0].network_interface_id,
"private_ip" => nat_gateway.nat_gateway_addresses[0].private_ip,
"public_ip" => nat_gateway.nat_gateway_addresses[0].public_ip,
}
resources["aws_nat_gateway.#{module_name_of(nat_gateway)}"] = {
"type" => "aws_nat_gateway",
"primary" => {
"id" => nat_gateway.nat_gateway_id,
"attributes" => attributes
}
}
resources
end
end
private
def nat_gateways
@client.describe_nat_gateways.nat_gateways
end
def module_name_of(nat_gateway)
normalize_module_name(nat_gateway.nat_gateway_id)
end
end
end
end