consul/testing/deployer/sprawl/internal/tfgen/digest.go

49 lines
1.2 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package tfgen
import (
"fmt"
)
// digestOutputs takes the data extracted from terraform output variables and
// updates various fields on the topology.Topology with that data.
func (g *Generator) digestOutputs(out *Outputs) error {
for clusterName, nodeMap := range out.Nodes {
cluster, ok := g.topology.Clusters[clusterName]
if !ok {
return fmt.Errorf("found output cluster that does not exist: %s", clusterName)
}
for nid, nodeOut := range nodeMap {
node := cluster.NodeByID(nid)
if node == nil {
return fmt.Errorf("found output node that does not exist in cluster %q: %s", nid, clusterName)
}
if node.DigestExposedPorts(nodeOut.Ports) {
g.logger.Info("discovered exposed port mappings",
"cluster", clusterName,
"node", nid.String(),
"ports", nodeOut.Ports,
)
}
}
}
for netName, proxyPort := range out.ProxyPorts {
changed, err := g.topology.DigestExposedProxyPort(netName, proxyPort)
if err != nil {
return err
}
if changed {
g.logger.Info("discovered exposed forward proxy port",
"network", netName,
"port", proxyPort,
)
}
}
return nil
}