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 }