github.com/grafana/pyroscope@v1.18.0/pkg/ingester/query.go (about)

     1  package ingester
     2  
     3  import (
     4  	"context"
     5  
     6  	"connectrpc.com/connect"
     7  
     8  	ingestv1 "github.com/grafana/pyroscope/api/gen/proto/go/ingester/v1"
     9  	typesv1 "github.com/grafana/pyroscope/api/gen/proto/go/types/v1"
    10  )
    11  
    12  // LabelValues returns the possible label values for a given label name.
    13  func (i *Ingester) LabelValues(ctx context.Context, req *connect.Request[typesv1.LabelValuesRequest]) (*connect.Response[typesv1.LabelValuesResponse], error) {
    14  	return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[typesv1.LabelValuesResponse], error) {
    15  		return instance.LabelValues(ctx, req)
    16  	})
    17  }
    18  
    19  // LabelNames returns the possible label names.
    20  func (i *Ingester) LabelNames(ctx context.Context, req *connect.Request[typesv1.LabelNamesRequest]) (*connect.Response[typesv1.LabelNamesResponse], error) {
    21  	return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[typesv1.LabelNamesResponse], error) {
    22  		return instance.LabelNames(ctx, req)
    23  	})
    24  }
    25  
    26  // ProfileTypes returns the possible profile types.
    27  func (i *Ingester) ProfileTypes(ctx context.Context, req *connect.Request[ingestv1.ProfileTypesRequest]) (*connect.Response[ingestv1.ProfileTypesResponse], error) {
    28  	return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[ingestv1.ProfileTypesResponse], error) {
    29  		return instance.ProfileTypes(ctx, req)
    30  	})
    31  }
    32  
    33  // Series returns labels series for the given set of matchers.
    34  func (i *Ingester) Series(ctx context.Context, req *connect.Request[ingestv1.SeriesRequest]) (*connect.Response[ingestv1.SeriesResponse], error) {
    35  	return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[ingestv1.SeriesResponse], error) {
    36  		return instance.Series(ctx, req)
    37  	})
    38  }
    39  
    40  // BlockMetadata returns the metadata of the instance's blocks
    41  func (i *Ingester) BlockMetadata(ctx context.Context, req *connect.Request[ingestv1.BlockMetadataRequest]) (*connect.Response[ingestv1.BlockMetadataResponse], error) {
    42  	return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[ingestv1.BlockMetadataResponse], error) {
    43  		return instance.BlockMetadata(ctx, req)
    44  	})
    45  }
    46  
    47  func (i *Ingester) MergeProfilesStacktraces(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesStacktracesRequest, ingestv1.MergeProfilesStacktracesResponse]) error {
    48  	return forInstanceStream(ctx, i, stream, func(instance *instance) error {
    49  		return instance.MergeProfilesStacktraces(ctx, stream)
    50  	})
    51  }
    52  
    53  func (i *Ingester) MergeProfilesLabels(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesLabelsRequest, ingestv1.MergeProfilesLabelsResponse]) error {
    54  	return forInstanceStream(ctx, i, stream, func(instance *instance) error {
    55  		return instance.MergeProfilesLabels(ctx, stream)
    56  	})
    57  }
    58  
    59  func (i *Ingester) MergeProfilesPprof(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesPprofRequest, ingestv1.MergeProfilesPprofResponse]) error {
    60  	return forInstanceStream(ctx, i, stream, func(instance *instance) error {
    61  		return instance.MergeProfilesPprof(ctx, stream)
    62  	})
    63  }
    64  
    65  func (i *Ingester) MergeSpanProfile(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeSpanProfileRequest, ingestv1.MergeSpanProfileResponse]) error {
    66  	return forInstanceStream(ctx, i, stream, func(instance *instance) error {
    67  		return instance.MergeSpanProfile(ctx, stream)
    68  	})
    69  }
    70  
    71  func (i *Ingester) GetProfileStats(ctx context.Context, req *connect.Request[typesv1.GetProfileStatsRequest]) (*connect.Response[typesv1.GetProfileStatsResponse], error) {
    72  	return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[typesv1.GetProfileStatsResponse], error) {
    73  		return instance.GetProfileStats(ctx, req)
    74  	})
    75  }
    76  
    77  func (i *Ingester) GetBlockStats(ctx context.Context, req *connect.Request[ingestv1.GetBlockStatsRequest]) (*connect.Response[ingestv1.GetBlockStatsResponse], error) {
    78  	return forInstanceUnary(ctx, i, func(instance *instance) (*connect.Response[ingestv1.GetBlockStatsResponse], error) {
    79  		return instance.GetBlockStats(ctx, req)
    80  	})
    81  }