func New()

in readers/apiserver/watchlist/internal/watchlist/watchlist.go [130:162]


func New(ctx context.Context, clientset *kubernetes.Clientset, retrieveTypes RetrieveType, opts ...Option) (*Reader, error) {
	if clientset == nil {
		return nil, fmt.Errorf("clientset is nil")
	}

	r := &Reader{
		clientset:     clientset,
		log:           slog.Default(),
		retrieveTypes: retrieveTypes,
		relist:        -1, // This indicates never.
	}

	for _, opt := range opts {
		if err := opt(r); err != nil {
			return nil, err
		}
	}
	r.filterOpts = append(r.filterOpts, watchlist.WithLogger(r.log))

	// Make sure they passed a valid retrieveTypes.
	found := false
	for rt := range rtMap {
		if retrieveTypes&rt == rt {
			found = true
			break
		}
	}
	if !found {
		return nil, fmt.Errorf("no data types to retrieve")
	}

	return r, nil
}