in controllers/util/common.go [236:311]
func CopyIngressFields(from, to *netv1.Ingress, logger logr.Logger) bool {
logger = logger.WithValues("kind", "ingress")
requireUpdate := CopyLabelsAndAnnotations(&from.ObjectMeta, &to.ObjectMeta, logger)
if len(to.Spec.Rules) != len(from.Spec.Rules) {
requireUpdate = true
logger.Info("Update required because field changed", "field", "Spec.Rules", "from", to.Spec.Rules, "to", from.Spec.Rules)
to.Spec.Rules = from.Spec.Rules
} else {
for i := range from.Spec.Rules {
ruleBase := "Spec.Rules[" + strconv.Itoa(i) + "]."
fromRule := &from.Spec.Rules[i]
toRule := &to.Spec.Rules[i]
if !DeepEqualWithNils(toRule.Host, fromRule.Host) {
requireUpdate = true
logger.Info("Update required because field changed", "field", ruleBase+"Host", "from", toRule.Host, "to", fromRule.Host)
toRule.Host = fromRule.Host
}
if fromRule.HTTP == nil || toRule.HTTP == nil {
requireUpdate = true
logger.Info("Update required because field changed", "field", ruleBase+"HTTP", "from", toRule.HTTP, "to", fromRule.HTTP)
toRule.HTTP = fromRule.HTTP
} else if len(fromRule.HTTP.Paths) != len(toRule.HTTP.Paths) {
requireUpdate = true
logger.Info("Update required because field changed", "field", ruleBase+"HTTP.Paths", "from", toRule.HTTP.Paths, "to", fromRule.HTTP.Paths)
toRule.HTTP.Paths = fromRule.HTTP.Paths
} else {
for j := range fromRule.HTTP.Paths {
pathBase := ruleBase + "HTTP.Paths[" + strconv.Itoa(j) + "]."
fromPath := &fromRule.HTTP.Paths[j]
toPath := &toRule.HTTP.Paths[j]
if toPath.PathType != nil && !DeepEqualWithNils(toPath.PathType, fromPath.PathType) {
requireUpdate = true
logger.Info("Update required because field changed", "field", pathBase+"PathType", "from", toPath.PathType, "to", fromPath.PathType)
toPath.PathType = fromPath.PathType
}
if !DeepEqualWithNils(toPath.Path, fromPath.Path) {
requireUpdate = true
logger.Info("Update required because field changed", "field", pathBase+"Path", "from", toPath.Path, "to", fromPath.Path)
toPath.Path = fromPath.Path
}
if !DeepEqualWithNils(toPath.Backend.Service, fromPath.Backend.Service) {
requireUpdate = true
logger.Info("Update required because field changed", "field", pathBase+"Backend.Service", "from", toPath.Backend.Service, "to", fromPath.Backend.Service)
toPath.Backend.Service = fromPath.Backend.Service
}
if !DeepEqualWithNils(toPath.Backend.Resource, fromPath.Backend.Resource) {
requireUpdate = true
logger.Info("Update required because field changed", "field", pathBase+"Backend.Resource", "from", toPath.Backend.Resource, "to", fromPath.Backend.Resource)
toPath.Backend.Resource = fromPath.Backend.Resource
}
}
}
}
}
if !DeepEqualWithNils(to.Spec.TLS, from.Spec.TLS) {
requireUpdate = true
logger.Info("Update required because field changed", "field", "Spec.TLS", "from", to.Spec.TLS, "to", from.Spec.TLS)
to.Spec.TLS = from.Spec.TLS
}
if from.Spec.IngressClassName != nil && !DeepEqualWithNils(to.Spec.IngressClassName, from.Spec.IngressClassName) {
requireUpdate = true
logger.Info("Update required because field changed", "field", "Spec.IngressClassName", "from", to.Spec.IngressClassName, "to", from.Spec.IngressClassName)
to.Spec.IngressClassName = from.Spec.IngressClassName
}
return requireUpdate
}