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
to_terraform_state()
click to toggle source
Calls superclass method
GeoEngineer::Resource#to_terraform_state
# 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