github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/nifcloud/network/elastic_load_balancer.go (about)

     1  package network
     2  
     3  import (
     4  	"github.com/khulnasoft-lab/defsec/pkg/providers/nifcloud/network"
     5  	"github.com/khulnasoft-lab/defsec/pkg/terraform"
     6  )
     7  
     8  func adaptElasticLoadBalancers(modules terraform.Modules) []network.ElasticLoadBalancer {
     9  	var elasticLoadBalancers []network.ElasticLoadBalancer
    10  
    11  	for _, resource := range modules.GetResourcesByType("nifcloud_elb") {
    12  		elasticLoadBalancers = append(elasticLoadBalancers, adaptElasticLoadBalancer(resource, modules))
    13  	}
    14  	return elasticLoadBalancers
    15  }
    16  
    17  func adaptElasticLoadBalancer(resource *terraform.Block, modules terraform.Modules) network.ElasticLoadBalancer {
    18  	var listeners []network.ElasticLoadBalancerListener
    19  	var networkInterfaces []network.NetworkInterface
    20  
    21  	networkInterfaceBlocks := resource.GetBlocks("network_interface")
    22  	for _, networkInterfaceBlock := range networkInterfaceBlocks {
    23  		networkInterfaces = append(
    24  			networkInterfaces,
    25  			network.NetworkInterface{
    26  				Metadata:     networkInterfaceBlock.GetMetadata(),
    27  				NetworkID:    networkInterfaceBlock.GetAttribute("network_id").AsStringValueOrDefault("", resource),
    28  				IsVipNetwork: networkInterfaceBlock.GetAttribute("is_vip_network").AsBoolValueOrDefault(true, resource),
    29  			},
    30  		)
    31  	}
    32  
    33  	listeners = append(listeners, adaptElasticLoadBalancerListener(resource))
    34  	for _, listenerBlock := range modules.GetReferencingResources(resource, "nifcloud_elb_listener", "elb_id") {
    35  		listeners = append(listeners, adaptElasticLoadBalancerListener(listenerBlock))
    36  	}
    37  
    38  	return network.ElasticLoadBalancer{
    39  		Metadata:          resource.GetMetadata(),
    40  		NetworkInterfaces: networkInterfaces,
    41  		Listeners:         listeners,
    42  	}
    43  }
    44  
    45  func adaptElasticLoadBalancerListener(resource *terraform.Block) network.ElasticLoadBalancerListener {
    46  	return network.ElasticLoadBalancerListener{
    47  		Metadata: resource.GetMetadata(),
    48  		Protocol: resource.GetAttribute("protocol").AsStringValueOrDefault("", resource),
    49  	}
    50  }