Ctrl K
ComunidadGuías…

pkg/configrefs/knative.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package configrefs

import (
	"github.com/skyhook-io/radar/pkg/resourceid"
	"k8s.io/apimachinery/pkg/runtime/schema"
)

// KnativeReference resolves KReference's apiVersion/group alternatives. The
// alpha group field is explicit evidence, not a kind-based default. If both
// are recorded they must agree. Empty group alone does not establish core.
func KnativeReference(raw map[string]any, defaultNamespace string) (resourceid.Ref, bool) {
	version, _ := raw["apiVersion"].(string)
	group, _ := raw["group"].(string)
	if version != "" {
		gv, err := schema.ParseGroupVersion(version)
		if err != nil || gv.Version == "" || group != "" && group != gv.Group {
			return resourceid.Ref{}, false
		}
		group = gv.Group
	} else if group == "" {
		return resourceid.Ref{}, false
	}
	kind, _ := raw["kind"].(string)
	name, _ := raw["name"].(string)
	namespace, _ := raw["namespace"].(string)
	if namespace == "" {
		namespace = defaultNamespace
	}
	if kind == "" || name == "" {
		return resourceid.Ref{}, false
	}
	return resourceid.NewRef(group, kind, namespace, name), true
}

// KnativeTriggerBrokerReference follows the broker reconciler's actual lookup:
// brokerRef's namespace/name identify an eventing Broker; kind/version are ignored.
// Unlike subscriber KReferences, the reconciler does not default its namespace.
func KnativeTriggerBrokerReference(raw map[string]any) (resourceid.Ref, bool) {
	name, _ := raw["name"].(string)
	namespace, _ := raw["namespace"].(string)
	if name == "" || namespace == "" {
		return resourceid.Ref{}, false
	}
	return resourceid.NewRef("eventing.knative.dev", "Broker", namespace, name), true
}