in grpc-xds/control-plane-go/pkg/informers/manager.go [227:256]
func validateEndpointSlice(eps interface{}) (*discoveryv1.EndpointSlice, error) {
if eps == nil {
return nil, errNilEndpointSlice
}
endpointSlice, ok := eps.(*discoveryv1.EndpointSlice)
if !ok {
return nil, fmt.Errorf("%w: expected *discoveryv1.EndpointSlice, got %T", errUnexpectedType, eps)
}
if endpointSlice.GetObjectMeta().GetName() == "" ||
endpointSlice.GetObjectMeta().GetNamespace() == "" {
return nil, fmt.Errorf("%w from EndpointSlice %+v", errMissingMetadata, endpointSlice)
}
if endpointSlice.GetObjectMeta().GetLabels() == nil ||
len(endpointSlice.GetObjectMeta().GetLabels()[discoveryv1.LabelServiceName]) == 0 {
return nil, fmt.Errorf("%w from EndpointSlice %+v", errMissingLabel, endpointSlice)
}
if len(endpointSlice.Ports) == 0 {
return nil, fmt.Errorf("%w: %+v", errNoPortsInEndpointSlice, endpointSlice)
}
nonNilPortNumberExists := false
for _, endpointPort := range endpointSlice.Ports {
if endpointPort.Port != nil {
nonNilPortNumberExists = true
}
}
if !nonNilPortNumberExists {
return nil, fmt.Errorf("%w: %+v", errNoPortsInEndpointSlice, endpointSlice)
}
return endpointSlice, nil
}