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  }