diff --git a/core/pkg/ingress/annotations/serversnippet/main.go b/core/pkg/ingress/annotations/serversnippet/main.go index 1712c39ce..0062bfdd5 100644 --- a/core/pkg/ingress/annotations/serversnippet/main.go +++ b/core/pkg/ingress/annotations/serversnippet/main.go @@ -29,7 +29,7 @@ const ( type serverSnippet struct { } -// NewParser creates a new CORS annotation parser +// NewParser creates a new server snippet annotation parser func NewParser() parser.IngressAnnotation { return serverSnippet{} } diff --git a/core/pkg/ingress/controller/controller.go b/core/pkg/ingress/controller/controller.go index 88cbdc0f1..ee7e88d10 100644 --- a/core/pkg/ingress/controller/controller.go +++ b/core/pkg/ingress/controller/controller.go @@ -987,6 +987,7 @@ func (ic *GenericController) createServers(data []interface{}, // setup server-alias based on annotations aliasAnnotation := ic.annotations.Alias(ing) + srvsnippet := ic.annotations.ServerSnippet(ing) for _, rule := range ing.Spec.Rules { host := rule.Host @@ -1002,6 +1003,17 @@ func (ic *GenericController) createServers(data []interface{}, } } + //notifying the user that it has already been configured. + if servers[host].ServerSnippet != "" && srvsnippet != "" { + glog.Warningf("ingress %v/%v for host %v contains a Server Snippet section that it has already been configured.", + ing.Namespace, ing.Name, host) + } + + // only add a server snippet if the server does not have one previously configured + if servers[host].ServerSnippet == "" && srvsnippet != "" { + servers[host].ServerSnippet = srvsnippet + } + // only add a certificate if the server does not have one previously configured if servers[host].SSLCertificate != "" { continue @@ -1066,27 +1078,6 @@ func (ic *GenericController) createServers(data []interface{}, } } - // configure server snippet - for _, ingIf := range data { - ing := ingIf.(*extensions.Ingress) - if !class.IsValid(ing, ic.cfg.IngressClass, ic.cfg.DefaultIngressClass) { - continue - } - - for _, rule := range ing.Spec.Rules { - host := rule.Host - if host == "" { - host = defServerName - } - - srvsnippet := ic.annotations.ServerSnippet(ing) - // only add a server snippet if the server does not have one previously configured - - if servers[host].ServerSnippet == "" && srvsnippet != "" { - servers[host].ServerSnippet = srvsnippet - } - } - } return servers } diff --git a/core/pkg/ingress/types.go b/core/pkg/ingress/types.go index 99c8b44b4..9235121eb 100644 --- a/core/pkg/ingress/types.go +++ b/core/pkg/ingress/types.go @@ -238,6 +238,7 @@ type Server struct { CertificateAuth authtls.AuthSSLConfig `json:"certificateAuth"` // ServerSnippet returns the snippet of server + // +optional ServerSnippet string `json:"serverSnippet"` }