class GeoEngineer::Resources::AwsNetworkAclRule

AwsNetworkAclRule is the aws_network_acl_rule terrform resource,

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

Public Class Methods

_fetch_remote_resources(provider) click to toggle source
# File lib/geoengineer/resources/aws_network_acl_rule.rb, line 39
def self._fetch_remote_resources(provider)
  AwsClients
    .ec2(provider)
    .describe_network_acls['network_acls']
    .map(&:to_h)
    .select { |network_acl| !network_acl[:entries].empty? }
    .map { |network_acl| _generate_rules(network_acl) }
    .flatten
    .reject { |rule| rule[:rule_number] == 32_767 }
end
_generate_rules(network_acl) click to toggle source
# File lib/geoengineer/resources/aws_network_acl_rule.rb, line 50
def self._generate_rules(network_acl)
  network_acl[:entries].map do |rule|
    terraform_id_components = [
      "#{network_acl[:network_acl_id]}-",
      "#{rule[:rule_number]}-",
      "#{rule[:egress]}-",
      "#{_number_for_protocol(rule[:protocol])}-"
    ]
    rule.merge({ _terraform_id: "nacl-#{Crc32.hashcode(terraform_id_components.join)}" })
  end
end
_number_for_protocol(protocol) click to toggle source
# File lib/geoengineer/resources/aws_network_acl_rule.rb, line 62
def self._number_for_protocol(protocol)
  protocols = {
    ah: 51,
    esp: 50,
    udp: 17,
    tcp: 6,
    icmp: 1,
    all: -1
  }
  return unless protocol
  return protocol if protocols.values.map(&:to_s).include?(protocol.to_s)
  protocols[protocol.to_s.downcase.to_sym]
end

Public Instance Methods

support_tags?() click to toggle source
# File lib/geoengineer/resources/aws_network_acl_rule.rb, line 35
def support_tags?
  false
end
to_terraform_state() click to toggle source
# File lib/geoengineer/resources/aws_network_acl_rule.rb, line 25
def to_terraform_state
  tfstate = super
  tfstate[:primary][:attributes] = {
    'network_acl_id' => network_acl_id,
    'rule_number' => rule_number,
    'egress' => egress
  }
  tfstate
end