github.com/kiali/kiali@v1.84.0/business/references/k8s_gateway_references.go (about) 1 package references 2 3 import ( 4 k8s_networking_v1 "sigs.k8s.io/gateway-api/apis/v1" 5 6 "github.com/kiali/kiali/kubernetes" 7 "github.com/kiali/kiali/models" 8 ) 9 10 type K8sGatewayReferences struct { 11 K8sGateways []*k8s_networking_v1.Gateway 12 K8sHTTPRoutes []*k8s_networking_v1.HTTPRoute 13 } 14 15 func (g K8sGatewayReferences) References() models.IstioReferencesMap { 16 result := models.IstioReferencesMap{} 17 18 for _, gw := range g.K8sGateways { 19 key := models.IstioReferenceKey{Namespace: gw.Namespace, Name: gw.Name, ObjectType: models.ObjectTypeSingular[kubernetes.K8sGateways]} 20 references := &models.IstioReferences{} 21 references.ObjectReferences = g.getConfigReferences(gw) 22 result.MergeReferencesMap(models.IstioReferencesMap{key: references}) 23 } 24 25 return result 26 } 27 28 func (g K8sGatewayReferences) getConfigReferences(gw *k8s_networking_v1.Gateway) []models.IstioReference { 29 result := make([]models.IstioReference, 0) 30 31 for _, rt := range g.K8sHTTPRoutes { 32 if len(rt.Spec.ParentRefs) > 0 { 33 for _, pr := range rt.Spec.ParentRefs { 34 if string(pr.Name) == gw.Name && string(*pr.Kind) == kubernetes.K8sActualGatewayType && string(*pr.Group) == kubernetes.K8sNetworkingGroupVersionV1.Group { 35 ref := models.IstioReference{Name: rt.Name, Namespace: rt.Namespace, ObjectType: models.ObjectTypeSingular[kubernetes.K8sHTTPRoutes]} 36 result = append(result, ref) 37 } 38 } 39 } 40 } 41 42 return result 43 }