github.com/cilium/cilium@v1.16.2/operator/pkg/gateway-api/helpers/servicelookup.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package helpers
     5  
     6  import (
     7  	"context"
     8  	"fmt"
     9  
    10  	"sigs.k8s.io/controller-runtime/pkg/client"
    11  	gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
    12  	mcsapiv1alpha1 "sigs.k8s.io/mcs-api/pkg/apis/v1alpha1"
    13  )
    14  
    15  func GetBackendServiceName(k8sclient client.Client, namespace string, backendObjectReference gatewayv1.BackendObjectReference) (string, error) {
    16  	backendServiceName := ""
    17  	switch {
    18  	case IsService(backendObjectReference):
    19  		return string(backendObjectReference.Name), nil
    20  
    21  	case HasServiceImportSupport(k8sclient.Scheme()) && IsServiceImport(backendObjectReference):
    22  		svcImport := &mcsapiv1alpha1.ServiceImport{}
    23  		if err := k8sclient.Get(context.Background(), client.ObjectKey{
    24  			Namespace: namespace,
    25  			Name:      string(backendObjectReference.Name),
    26  		}, svcImport); err != nil {
    27  			return "", err
    28  		}
    29  
    30  		var err error
    31  		backendServiceName, err = GetServiceName(svcImport)
    32  		if err != nil {
    33  			return "", err
    34  		}
    35  
    36  	default:
    37  		return "", fmt.Errorf("Unsupported backend kind %s", *backendObjectReference.Kind)
    38  	}
    39  
    40  	return backendServiceName, nil
    41  }