@@ -20,6 +20,7 @@ import (
2020 "context"
2121
2222 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2324 "k8s.io/apimachinery/pkg/runtime/schema"
2425 "k8s.io/client-go/discovery"
2526 "k8s.io/client-go/dynamic"
@@ -82,41 +83,12 @@ func detectOpenShiftBaseDomain(config *rest.Config) string {
8283 }
8384
8485 // Extract spec.domain from the unstructured object
85- domain , found , err := unstructuredNestedString (ingressConfig .Object , "spec" , "domain" )
86- if err != nil || ! found {
86+ domain , found , err := unstructured . NestedString (ingressConfig .Object , "spec" , "domain" )
87+ if err != nil || ! found || domain == "" {
8788 logger .Info ("OpenShift ingress config found but spec.domain not available" )
8889 return ""
8990 }
9091
9192 logger .Info ("Auto-detected OpenShift cluster domain" , "domain" , domain )
9293 return domain
9394}
94-
95- // unstructuredNestedString extracts a nested string from an unstructured object
96- func unstructuredNestedString (obj map [string ]interface {}, fields ... string ) (string , bool , error ) {
97- val , found , err := nestedField (obj , fields ... )
98- if ! found || err != nil {
99- return "" , found , err
100- }
101- s , ok := val .(string )
102- if ! ok {
103- return "" , false , nil
104- }
105- return s , true , nil
106- }
107-
108- // nestedField extracts a nested field from a map
109- func nestedField (obj map [string ]interface {}, fields ... string ) (interface {}, bool , error ) {
110- var val interface {} = obj
111- for _ , field := range fields {
112- m , ok := val .(map [string ]interface {})
113- if ! ok {
114- return nil , false , nil
115- }
116- val , ok = m [field ]
117- if ! ok {
118- return nil , false , nil
119- }
120- }
121- return val , true , nil
122- }
0 commit comments