in tools/azure-npm-to-cilium-validator/azure-npm-to-cilium-validator.go [238:307]
func renderFlaggedNetworkPolicyTable(
ingressEndportNetworkPolicy,
egressEndportNetworkPolicy,
ingressPoliciesWithCIDR,
egressPoliciesWithCIDR,
ingressPoliciesWithNamedPort,
egressPoliciesWithNamedPort,
egressPolicies []string,
) {
flaggedResourceTable := tablewriter.NewWriter(os.Stdout)
flaggedResourceTable.SetHeader([]string{"Network Policy", "NetworkPolicy with endPort", "NetworkPolicy with CIDR", "NetworkPolicy with Named Port", "NetworkPolicy with Egress (Not Allow All Egress)"})
flaggedResourceTable.SetRowLine(true)
// Create a map to store the policies and their flags
policyFlags := make(map[string][]string)
// Helper function to add a flag to a policy
addFlag := func(policy string, flag string) {
if _, exists := policyFlags[policy]; !exists {
policyFlags[policy] = []string{"✅", "✅", "✅", "✅"}
}
switch flag {
case "ingressEndPort":
policyFlags[policy][0] = "❌ (ingress)"
case "egressEndPort":
policyFlags[policy][0] = "❌ (egress)"
case "ingressCIDR":
policyFlags[policy][1] = "❌ (ingress)"
case "egressCIDR":
policyFlags[policy][1] = "❌ (egress)"
case "ingressNamedPort":
policyFlags[policy][2] = "❌ (ingress)"
case "egressNamedPort":
policyFlags[policy][2] = "❌ (egress)"
case "Egress":
policyFlags[policy][3] = "❌"
}
}
// Add flags for each policy
for _, policy := range ingressEndportNetworkPolicy {
addFlag(policy, "ingressEndPort")
}
for _, policy := range egressEndportNetworkPolicy {
addFlag(policy, "egressEndPort")
}
for _, policy := range ingressPoliciesWithCIDR {
addFlag(policy, "ingressCIDR")
}
for _, policy := range egressPoliciesWithCIDR {
addFlag(policy, "egressCIDR")
}
for _, policy := range ingressPoliciesWithNamedPort {
addFlag(policy, "ingressNamedPort")
}
for _, policy := range egressPoliciesWithNamedPort {
addFlag(policy, "egressNamedPort")
}
for _, policy := range egressPolicies {
addFlag(policy, "Egress")
}
// Append the policies and their flags to the table
for policy, flags := range policyFlags {
flaggedResourceTable.Append([]string{policy, flags[0], flags[1], flags[2], flags[3]})
}
fmt.Println("\nFlagged Network Policies:")
flaggedResourceTable.Render()
}