@@ -311,21 +311,23 @@ func (cnf *Configurator) AddOrUpdateIngress(ingEx *IngressEx) (Warnings, error)
311311 return warnings , nil
312312}
313313
314- // virtualServerForHost takes a hostname and returns a VS for the given hostname.
315- func (cnf * Configurator ) virtualServerForHost (hostname string ) * conf_v1. VirtualServer {
314+ // virtualServerExForHost takes a hostname and returns a VirtualServerEx for the given hostname.
315+ func (cnf * Configurator ) virtualServerExForHost (hostname string ) * VirtualServerEx {
316316 for _ , vsEx := range cnf .virtualServers {
317317 if vsEx .VirtualServer .Spec .Host == hostname {
318- return vsEx . VirtualServer
318+ return vsEx
319319 }
320320 }
321321 return nil
322322}
323323
324- // upstreamsForVirtualServer takes VirtualServer and returns a list of associated upstreams.
325- func (cnf * Configurator ) upstreamsForVirtualServer (vs * conf_v1. VirtualServer ) []string {
324+ // upstreamsForVirtualServer takes a VirtualServerEx and returns a list of associated upstreams.
325+ func (cnf * Configurator ) upstreamsForVirtualServer (vsEx * VirtualServerEx ) []string {
326326 l := nl .LoggerFromContext (cnf .CfgParams .Context )
327+ vs := vsEx .VirtualServer
328+ var upstreamNames []string
329+
327330 nl .Debugf (l , "Get upstreamName for vs: %s" , vs .Spec .Host )
328- upstreamNames := make ([]string , 0 , len (vs .Spec .Upstreams ))
329331
330332 virtualServerUpstreamNamer := NewUpstreamNamerForVirtualServer (vs )
331333
@@ -334,16 +336,27 @@ func (cnf *Configurator) upstreamsForVirtualServer(vs *conf_v1.VirtualServer) []
334336 nl .Debugf (l , "upstream: %s, upstreamName: %s" , u .Name , upstreamName )
335337 upstreamNames = append (upstreamNames , upstreamName )
336338 }
339+
340+ for _ , vsr := range vsEx .VirtualServerRoutes {
341+ upstreamNamer := NewUpstreamNamerForVirtualServerRoute (vs , vsr )
342+ for _ , u := range vsr .Spec .Upstreams {
343+ upstreamName := upstreamNamer .GetNameForUpstream (u .Name )
344+ nl .Debugf (l , "upstream: %s, upstreamName: %s" , u .Name , upstreamName )
345+ upstreamNames = append (upstreamNames , upstreamName )
346+
347+ }
348+ }
349+
337350 return upstreamNames
338351}
339352
340353// UpstreamsForHost takes a hostname and returns upstreams for the given hostname.
341354func (cnf * Configurator ) UpstreamsForHost (hostname string ) []string {
342355 l := nl .LoggerFromContext (cnf .CfgParams .Context )
343356 nl .Debugf (l , "Get upstream for host: %s" , hostname )
344- vs := cnf .virtualServerForHost (hostname )
345- if vs != nil {
346- return cnf .upstreamsForVirtualServer (vs )
357+ vsEx := cnf .virtualServerExForHost (hostname )
358+ if vsEx != nil {
359+ return cnf .upstreamsForVirtualServer (vsEx )
347360 }
348361 return nil
349362}
0 commit comments