aa92dc860b
* Zanzana: Split client and server logs * Zanzana: Improve error handling and logging * log internal error at the server side * refactor * improve errors for list request * update go modules * handle errors for read and write * refactor * reset go.mod changes
74 lines
2.2 KiB
Go
74 lines
2.2 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
|
|
authzlib "github.com/grafana/authlib/authz"
|
|
authzv1 "github.com/grafana/authlib/authz/proto/v1"
|
|
authlib "github.com/grafana/authlib/types"
|
|
"go.opentelemetry.io/otel"
|
|
"google.golang.org/grpc"
|
|
|
|
"github.com/grafana/grafana/pkg/infra/log"
|
|
authzextv1 "github.com/grafana/grafana/pkg/services/authz/proto/v1"
|
|
)
|
|
|
|
var _ authlib.AccessClient = (*Client)(nil)
|
|
|
|
var tracer = otel.Tracer("github.com/grafana/grafana/pkg/services/authz/zanzana/client")
|
|
|
|
type Client struct {
|
|
logger log.Logger
|
|
authz authzv1.AuthzServiceClient
|
|
authzext authzextv1.AuthzExtentionServiceClient
|
|
authzlibclient *authzlib.ClientImpl
|
|
}
|
|
|
|
func New(cc grpc.ClientConnInterface) (*Client, error) {
|
|
authzlibclient := authzlib.NewClient(cc, authzlib.WithTracerClientOption(tracer))
|
|
c := &Client{
|
|
authzlibclient: authzlibclient,
|
|
authz: authzv1.NewAuthzServiceClient(cc),
|
|
authzext: authzextv1.NewAuthzExtentionServiceClient(cc),
|
|
logger: log.New("zanzana.client"),
|
|
}
|
|
|
|
return c, nil
|
|
}
|
|
|
|
func (c *Client) Check(ctx context.Context, id authlib.AuthInfo, req authlib.CheckRequest) (authlib.CheckResponse, error) {
|
|
ctx, span := tracer.Start(ctx, "authlib.zanzana.client.Check")
|
|
defer span.End()
|
|
|
|
return c.authzlibclient.Check(ctx, id, req)
|
|
}
|
|
|
|
func (c *Client) Compile(ctx context.Context, id authlib.AuthInfo, req authlib.ListRequest) (authlib.ItemChecker, error) {
|
|
ctx, span := tracer.Start(ctx, "authlib.zanzana.client.Compile")
|
|
defer span.End()
|
|
|
|
return c.authzlibclient.Compile(ctx, id, req)
|
|
}
|
|
|
|
func (c *Client) Read(ctx context.Context, req *authzextv1.ReadRequest) (*authzextv1.ReadResponse, error) {
|
|
ctx, span := tracer.Start(ctx, "authlib.zanzana.client.Read")
|
|
defer span.End()
|
|
|
|
return c.authzext.Read(ctx, req)
|
|
}
|
|
|
|
func (c *Client) Write(ctx context.Context, req *authzextv1.WriteRequest) error {
|
|
ctx, span := tracer.Start(ctx, "authlib.zanzana.client.Write")
|
|
defer span.End()
|
|
|
|
_, err := c.authzext.Write(ctx, req)
|
|
return err
|
|
}
|
|
|
|
func (c *Client) BatchCheck(ctx context.Context, req *authzextv1.BatchCheckRequest) (*authzextv1.BatchCheckResponse, error) {
|
|
ctx, span := tracer.Start(ctx, "authlib.zanzana.client.Check")
|
|
defer span.End()
|
|
|
|
return c.authzext.BatchCheck(ctx, req)
|
|
}
|