in pkg/brownfield/ingress.go [15:65]
func PruneIngressRules(ing *networking.Ingress, prohibitedTargets []*ptv1.AzureIngressProhibitedTarget) []networking.IngressRule {
if ing.Spec.Rules == nil || len(ing.Spec.Rules) == 0 {
return ing.Spec.Rules
}
blacklist := GetTargetBlacklist(prohibitedTargets)
if blacklist == nil || len(*blacklist) == 0 {
return ing.Spec.Rules
}
var rules []networking.IngressRule
for _, rule := range ing.Spec.Rules {
if rule.HTTP == nil {
continue
}
target := Target{
Hostname: rule.Host,
}
if rule.HTTP.Paths == nil {
if target.IsBlacklisted(blacklist) {
continue
}
rules = append(rules, rule)
continue // to next rule
}
newRule := networking.IngressRule{
Host: rule.Host,
IngressRuleValue: networking.IngressRuleValue{
HTTP: &networking.HTTPIngressRuleValue{
Paths: []networking.HTTPIngressPath{},
},
},
}
for _, path := range rule.HTTP.Paths {
target.Path = TargetPath(path.Path)
if target.IsBlacklisted(blacklist) {
continue
}
newRule.HTTP.Paths = append(newRule.HTTP.Paths, path)
}
if len(newRule.HTTP.Paths) > 0 {
rules = append(rules, newRule)
}
}
return rules
}